From 64bdec81acd3878190e6635450065d58c8b0f8e0 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Fri, 18 Feb 2011 15:47:42 -0800 Subject: [PATCH] --- yaml --- r: 235163 b: refs/heads/master c: ee1b06ea6aed979da3b4e6b6ffea98ad55a3c5c1 h: refs/heads/master i: 235161: 27522a326275391754602867edf4eb7a9e3212e6 235159: 7a99b7316d13f43081caee583d3b3d1f0e8369cc v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/reboot_32.S | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ac7a94eb444f..3d22f4ae2134 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3d35ac346e981162eeba391e496faceed4753e7b +refs/heads/master: ee1b06ea6aed979da3b4e6b6ffea98ad55a3c5c1 diff --git a/trunk/arch/x86/kernel/reboot_32.S b/trunk/arch/x86/kernel/reboot_32.S index f242356a096e..29092b38d816 100644 --- a/trunk/arch/x86/kernel/reboot_32.S +++ b/trunk/arch/x86/kernel/reboot_32.S @@ -23,10 +23,14 @@ r_base = . 1: popl %ebx subl $1b, %ebx + /* Compute the equivalent real-mode segment */ + movl %ebx, %ecx + shrl $4, %ecx + /* Patch post-real-mode segment jump */ - movw dispatch_table(%ebx,%ecx,2),%cx - movw %cx, 101f(%ebx) - movw %ax, 102f(%ebx) + movw dispatch_table(%ebx,%eax,2),%ax + movw %ax, 101f(%ebx) + movw %cx, 102f(%ebx) /* Set up the IDT for real mode. */ lidtl machine_real_restart_idt(%ebx)