Prematurely jumping into kernel_main
This commit is contained in:
7
Makefile
7
Makefile
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
__attribute__((used))
|
||||
int kernel_main() {
|
||||
return 42;
|
||||
__attribute__((section(".text.entry")))
|
||||
void kernel_main() {
|
||||
volatile int foo = 13;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user