diff options
Diffstat (limited to 'mubios/arch')
| -rw-r--r-- | mubios/arch/mode_switch.S | 6 | ||||
| -rw-r--r-- | mubios/arch/reset.S | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/mubios/arch/mode_switch.S b/mubios/arch/mode_switch.S index 575c78d..9b2643a 100644 --- a/mubios/arch/mode_switch.S +++ b/mubios/arch/mode_switch.S @@ -109,7 +109,7 @@ protected_mode_entry: mov fs, ax mov gs, ax - mov esp, 0x00008000 + mov esp, 0x00007000 call post_main @@ -165,7 +165,7 @@ protected16_return: # Leave protected mode while already using a 16-bit code segment. mov eax, cr0 - and eax 0xFFFFFFFE + and eax, 0xFFFFFFFE mov cr0, eax # Jump to the prepared real-mode CS:IP pointer. @@ -179,6 +179,8 @@ real_mode_return: mov ds, ax mov es, ax mov ss, ax + mov fs, ax + mov gs, ax mov sp, 0x7FFE ret diff --git a/mubios/arch/reset.S b/mubios/arch/reset.S index 92dad17..0be8a05 100644 --- a/mubios/arch/reset.S +++ b/mubios/arch/reset.S @@ -40,8 +40,11 @@ reset_entry: call enter_protected_mode reset_halt: + sti + +reset_halt_loop: hlt - jmp reset_halt + jmp reset_halt_loop .section .reset, "ax" |
