diff options
-rw-r--r-- | arch/x86/kernel/reboot_32.S | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/x86/kernel/reboot_32.S b/arch/x86/kernel/reboot_32.S index f242356a096e..29092b38d816 100644 --- a/arch/x86/kernel/reboot_32.S +++ b/arch/x86/kernel/reboot_32.S | |||
@@ -23,10 +23,14 @@ r_base = . | |||
23 | 1: popl %ebx | 23 | 1: popl %ebx |
24 | subl $1b, %ebx | 24 | subl $1b, %ebx |
25 | 25 | ||
26 | /* Compute the equivalent real-mode segment */ | ||
27 | movl %ebx, %ecx | ||
28 | shrl $4, %ecx | ||
29 | |||
26 | /* Patch post-real-mode segment jump */ | 30 | /* Patch post-real-mode segment jump */ |
27 | movw dispatch_table(%ebx,%ecx,2),%cx | 31 | movw dispatch_table(%ebx,%eax,2),%ax |
28 | movw %cx, 101f(%ebx) | 32 | movw %ax, 101f(%ebx) |
29 | movw %ax, 102f(%ebx) | 33 | movw %cx, 102f(%ebx) |
30 | 34 | ||
31 | /* Set up the IDT for real mode. */ | 35 | /* Set up the IDT for real mode. */ |
32 | lidtl machine_real_restart_idt(%ebx) | 36 | lidtl machine_real_restart_idt(%ebx) |