:: commit f0609902289cdffab9cb05f3c60454bfd84f9b78

mintsuki <mintsuki@protonmail.com> — 2024-07-29 19:15

parents: 3e20601f68

protos/limine: Fix bug that made the BIOS port not work when linked with ld.bfd

diff --git a/common/protos/limine_asm.asm_ia32 b/common/protos/limine_asm.asm_ia32
index f0d1b565..773b0cbe 100644
--- a/common/protos/limine_asm.asm_ia32
+++ b/common/protos/limine_asm.asm_ia32
@@ -124,11 +124,19 @@ limine_memcpy_to_64_asm:
     mov cr0, eax
 
     ; Save old segments
+%ifdef UEFI
     mov [ebx + old_ss wrt ..gotoff], ss
     mov [ebx + old_gs wrt ..gotoff], gs
     mov [ebx + old_fs wrt ..gotoff], fs
     mov [ebx + old_es wrt ..gotoff], es
     mov [ebx + old_ds wrt ..gotoff], ds
+%else
+    mov [old_ss], ss
+    mov [old_gs], gs
+    mov [old_fs], fs
+    mov [old_es], es
+    mov [old_ds], ds
+%endif
 
     ; Save old CS
     mov eax, cs
@@ -182,11 +190,19 @@ bits 64
 %endif
 
     ; Restore old segments
+%ifdef UEFI
     mov ds, [ebx + old_ds wrt ..gotoff]
     mov es, [ebx + old_es wrt ..gotoff]
     mov fs, [ebx + old_fs wrt ..gotoff]
     mov gs, [ebx + old_gs wrt ..gotoff]
     mov ss, [ebx + old_ss wrt ..gotoff]
+%else
+    mov ds, [old_ds]
+    mov es, [old_es]
+    mov fs, [old_fs]
+    mov gs, [old_gs]
+    mov ss, [old_ss]
+%endif
 
     ; Go 32
 %ifdef UEFI
tab: 248 wrap: offon