Prematurely jumping into kernel_main

This commit is contained in:
Justin C. Miller
2018-03-19 17:04:35 -07:00
parent e4bd24bfe3
commit 47ebdc7f41
4 changed files with 19 additions and 12 deletions

View File

@@ -28,7 +28,7 @@ INCLUDES += -isystem $(EFI_INCLUDES)
INCLUDES += -isystem $(EFI_INCLUDES)/$(ARCH)
INCLUDES += -isystem $(EFI_INCLUDES)/protocol
BASEFLAGS := -O2 -fpic -nostdlib
BASEFLAGS := -O2 -nostdlib
BASEFLAGS += -ffreestanding -nodefaultlibs
BASEFLAGS += -fno-builtin -fomit-frame-pointer
@@ -51,7 +51,7 @@ WARNFLAGS += -Wno-unused-but-set-parameter
ASFLAGS ?=
CFLAGS := $(INCLUDES) $(DEPENDFLAGS) $(BASEFLAGS) $(WARNFLAGS)
CFLAGS += -std=c11 -fpic -fshort-wchar
CFLAGS += -std=c11 -fshort-wchar
CFLAGS += -mno-red-zone -fno-stack-protector
CFLAGS += -DGIT_VERSION="L\"$(VERSION)\""
CFLAGS += -DKERNEL_FILENAME="L\"$(KERNEL_FILENAME)\""
@@ -64,10 +64,11 @@ ifdef MAX_HRES
BOOT_CFLAGS += -DMAX_HRES=$(MAX_HRES)
endif
LDFLAGS := -L $(BUILD_D) -ggdb -fPIC -shared
LDFLAGS := -L $(BUILD_D) -ggdb -shared
LDFLAGS += -nostdlib -znocombreloc -Bsymbolic -nostartfiles
BOOT_LDFLAGS := $(LDFLAGS)
BOOT_LDFLAGS += -fPIC
BOOT_LDFLAGS += -L $(EFI_ARCH_DIR)/lib -L $(EFI_ARCH_DIR)/gnuefi
AS ?= $(CROSS)as

View File

@@ -5,22 +5,24 @@ SECTIONS
.text : {
code = .;
*(.text.entry)
*(.text)
. = ALIGN(4096);
}
.data : {
.data ALIGN(0x1000) : {
data = .;
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss : {
.bss ALIGN(0x1000) : {
bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .;
.note ALIGN(0x1000) : {
*(.note.*)
}
end = ALIGN(4096);
}

View File

@@ -43,6 +43,9 @@ efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
Print(L" %u bytes at 0x%x", kernel_length, kernel_image);
con_status_ok();
void (*kernel_main)() = kernel_image;
kernel_main();
/*
con_status_begin(L"Virtualizing memory...");
status = memory_virtualize();

View File

@@ -1,4 +1,5 @@
__attribute__((used))
int kernel_main() {
return 42;
__attribute__((section(".text.entry")))
void kernel_main() {
volatile int foo = 13;
return;
}