:: commit 79fb7342ce1bfd05d769fee60bbcac046ff2beec

mintsuki <mintsuki@protonmail.com> — 2020-09-17 21:22

parents: 4bda00b6cc

Fix bug in 32-bit stivale

diff --git a/limine.bin b/limine.bin
index d3b7b5c3..33c6707b 100644
Binary files a/limine.bin and b/limine.bin differ
diff --git a/stage2/protos/stivale.c b/stage2/protos/stivale.c
index 2f3e3595..723851a9 100644
--- a/stage2/protos/stivale.c
+++ b/stage2/protos/stivale.c
@@ -367,11 +367,9 @@ __attribute__((noreturn)) void stivale_spinup(int bits, bool level5pg,
             "cli\n\t"
             "cld\n\t"
 
-            "sub esp, 4\n\t"
-            "mov [esp], edi\n\t"
+            "mov esp, dword ptr [esi]\n\t"
+            "push edi\n\t"
 
-            "push 0x20\n\t"
-            "push [esi]\n\t"
             "pushfd\n\t"
             "push 0x18\n\t"
             "push [ebx]\n\t"
@@ -384,8 +382,7 @@ __attribute__((noreturn)) void stivale_spinup(int bits, bool level5pg,
             "xor edi, edi\n\t"
             "xor ebp, ebp\n\t"
 
-            "iret\n\t"
-            :
+            "iret\n\t"            :
             : "b" (&entry_point), "D" (stivale_struct), "S" (&stack)
             : "memory"
         );
tab: 248 wrap: offon