aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86_64/long_mode_init.asm
diff options
context:
space:
mode:
authorXander <xander@icth.xyz>2023-06-28 21:21:02 +0200
committerXander <xander@icth.xyz>2023-06-28 21:21:02 +0200
commitfd86b8a4769860f22fc04ce3b80510d809f68d3c (patch)
treece507aa2cd84c7e61f3e5777a88f14a6fe843431 /src/arch/x86_64/long_mode_init.asm
parentb83b28b21571f9b1fadd251295f5ca03d9dfedc7 (diff)
downloadats-os-fd86b8a4769860f22fc04ce3b80510d809f68d3c.tar.xz
ats-os-fd86b8a4769860f22fc04ce3b80510d809f68d3c.zip
Booting to Long mode
Diffstat (limited to 'src/arch/x86_64/long_mode_init.asm')
-rw-r--r--src/arch/x86_64/long_mode_init.asm17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/arch/x86_64/long_mode_init.asm b/src/arch/x86_64/long_mode_init.asm
new file mode 100644
index 0000000..eab3788
--- /dev/null
+++ b/src/arch/x86_64/long_mode_init.asm
@@ -0,0 +1,17 @@
+global long_mode_start
+
+section .text
+bits 64
+long_mode_start:
+ ; load 0 into all data segment registers
+ mov ax, 0
+ mov ss, ax
+ mov ds, ax
+ mov es, ax
+ mov fs, ax
+ mov gs, ax
+
+ ; print `OKAY` to screen
+ mov rax, 0x2f592f412f4b2f4f
+ mov qword [0xb8000], rax
+ hlt