summaryrefslogtreecommitdiff
path: root/src/kernel/arch/amd64/boot64.s
diff options
context:
space:
mode:
authordzwdz2022-07-16 13:33:00 +0200
committerdzwdz2022-07-16 13:33:00 +0200
commit912d2e3c7eb1baa71dda2c0a28aa5809eaa96f27 (patch)
tree4e27f3538466d5fd63a311d50916039a7a15a485 /src/kernel/arch/amd64/boot64.s
parent1eeb66af44ab335888410d716d604e569f20866e (diff)
amd64: barely boot into kernel code
Diffstat (limited to 'src/kernel/arch/amd64/boot64.s')
-rw-r--r--src/kernel/arch/amd64/boot64.s13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/kernel/arch/amd64/boot64.s b/src/kernel/arch/amd64/boot64.s
new file mode 100644
index 0000000..1dca0ca
--- /dev/null
+++ b/src/kernel/arch/amd64/boot64.s
@@ -0,0 +1,13 @@
+.global boot64
+boot64:
+ lgdt (lgdt_arg) // try reloading gdt again
+ mov $(5 << 3 | 3), %ax // SEG_TSS
+ ltr %ax
+
+ xchgw %bx, %bx
+ push %rdi // preserve multiboot struct
+ call sysenter_setup
+ pop %rdi
+
+ // multiboot struct in %rdi
+ jmp kmain_early