aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/boot
diff options
context:
space:
mode:
authorFabian Imhof <fabian.imhof@ost.ch>2025-03-27 14:02:05 +0000
committerFabian Imhof <fabian.imhof@ost.ch>2025-03-27 14:02:05 +0000
commit9ddfcd02413a93718e8cde53f9ba5a96a5b29b8f (patch)
treea31e132e717c9acc68f2480e9d50d78b32711262 /arch/x86_64/src/boot
parenta6c5f6a273d0c5c4161f600fca6d4fe49858c23c (diff)
downloadteachos-9ddfcd02413a93718e8cde53f9ba5a96a5b29b8f.tar.xz
teachos-9ddfcd02413a93718e8cde53f9ba5a96a5b29b8f.zip
update long jump handling
Diffstat (limited to 'arch/x86_64/src/boot')
-rw-r--r--arch/x86_64/src/boot/boot.s16
1 files changed, 6 insertions, 10 deletions
diff --git a/arch/x86_64/src/boot/boot.s b/arch/x86_64/src/boot/boot.s
index 35a6121..f6c7978 100644
--- a/arch/x86_64/src/boot/boot.s
+++ b/arch/x86_64/src/boot/boot.s
@@ -354,8 +354,11 @@ prepare_page_maps:
.section .boot_text, "ax", @progbits
.code64
-.global segment_register_reload_pointer
-segment_register_reload_pointer:
+.global reload_segment_register_trampoline
+reload_segment_register_trampoline:
+ jmp 0x08, $_reload_cs
+
+_reload_cs:
xor %rax, %rax
mov %rax, %ss
mov %rax, %ds
@@ -366,14 +369,7 @@ segment_register_reload_pointer:
ret
_transition_to_long_mode:
- //call segment_register_reload_pointer
-
- xor %rax, %rax
- mov %rax, %ss
- mov %rax, %ds
- mov %rax, %es
- mov %rax, %fs
- mov %rax, %gs
+ call _reload_cs
movl $0xb8000, (vga_buffer_pointer)