summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2021-03-21 14:11:53 +0000
committerAda Christine <adachristine18@gmail.com>2021-03-21 14:11:53 +0000
commitb0418630286e6713c5023a710b97d135d27bbaf2 (patch)
tree8dd05df128c9d0f4cc8b1e428ffaf59b03b370a5 /kernel
parent583d86019e24036794f39bdd8b64fa4cb990703c (diff)
higher-half now works
Diffstat (limited to 'kernel')
-rw-r--r--kernel/entry_efi.c2
-rw-r--r--kernel/kernel.ld9
2 files changed, 5 insertions, 6 deletions
diff --git a/kernel/entry_efi.c b/kernel/entry_efi.c
index 1acd399..40e674f 100644
--- a/kernel/entry_efi.c
+++ b/kernel/entry_efi.c
@@ -3,8 +3,6 @@
#include <boot/entry/entry_efi.h>
-static const char kernel_entry_data[4096];
-
noreturn void kernel_entry(struct efi_boot_data *data)
{
(void)data;
diff --git a/kernel/kernel.ld b/kernel/kernel.ld
index 9538056..17cb8b4 100644
--- a/kernel/kernel.ld
+++ b/kernel/kernel.ld
@@ -1,15 +1,16 @@
ENTRY(kernel_entry)
+k_virt_base = 0xffffffff80000000;
+
SECTIONS
{
- . = SIZEOF_HEADERS;
-
- .text 0 :
+ .text k_virt_base : AT(ADDR(.text) - k_virt_base)
{
*(.text)
+ . = ALIGN(4K);
} =0x90
- .data : ALIGN(4K)
+ .data ALIGN(4K) : AT(ADDR(.data) - k_virt_base)
{
*(.rodata)
*(.data)