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

View File

@@ -5,22 +5,24 @@ SECTIONS
.text : { .text : {
code = .; code = .;
*(.text.entry)
*(.text) *(.text)
. = ALIGN(4096);
} }
.data : { .data ALIGN(0x1000) : {
data = .; data = .;
*(.data) *(.data)
*(.rodata) *(.rodata)
. = ALIGN(4096);
} }
.bss : { .bss ALIGN(0x1000) : {
bss = .; bss = .;
*(.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); Print(L" %u bytes at 0x%x", kernel_length, kernel_image);
con_status_ok(); con_status_ok();
void (*kernel_main)() = kernel_image;
kernel_main();
/* /*
con_status_begin(L"Virtualizing memory..."); con_status_begin(L"Virtualizing memory...");
status = memory_virtualize(); status = memory_virtualize();

View File

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