Call a c function.
This commit is contained in:
parent
0a4b5ebd51
commit
ab1a471857
@ -6,7 +6,7 @@ SRC := $(wildcard **/*.[cS])
|
||||
OBJ := $(patsubst %, %.o, $(basename $(SRC)))
|
||||
|
||||
CFLAGS ?= -Wall -Wextra -pedantic
|
||||
CFLAGS += -ffreestanding
|
||||
CFLAGS += -ffreestanding -mcmodel=large
|
||||
CFLAGS += -ggdb -O0
|
||||
ASFLAGS += -ggdb
|
||||
CPPFLAGS += -I include
|
||||
|
@ -65,5 +65,6 @@ _start:
|
||||
mov rax, 0
|
||||
movabs [BootP4], rax
|
||||
|
||||
//; Loop infinitely
|
||||
jmp $
|
||||
.extern kmain
|
||||
movabs rax, offset kmain
|
||||
jmp rax
|
||||
|
26
src/kernel/boot/kmain.c
Normal file
26
src/kernel/boot/kmain.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <memory.h>
|
||||
|
||||
void clear_screen()
|
||||
{
|
||||
unsigned char *vidmem = (void *)(0xB8000 + KERNEL_OFFSET);
|
||||
for(int i=0; i < 80*24*2; i++)
|
||||
*vidmem++ = 0;
|
||||
}
|
||||
|
||||
void print_string(char *str)
|
||||
{
|
||||
unsigned char *vidmem = (void *)(0xB8000 + KERNEL_OFFSET);
|
||||
while(*str)
|
||||
{
|
||||
*vidmem++ = *str++;
|
||||
*vidmem++ = 0x7;
|
||||
}
|
||||
}
|
||||
|
||||
void kmain()
|
||||
{
|
||||
clear_screen();
|
||||
print_string("Hello from c, world!");
|
||||
for(;;);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user