The entry16 and entry16_debug functions need to compute appropriate 16-bit segments before dropping to real mode. Each is intended to use its own entry address as the segment base. However, both were using the entry address of entry16_debug, causing the code-segment reload to branch to the wrong place in the non-debug case. This bug was only visible when running kexec with --real-mode and without --debug. Signed-off-by: Jamey Sharp <jamey at thetovacompany.com> --- purgatory/arch/i386/entry32-16.S | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/purgatory/arch/i386/entry32-16.S b/purgatory/arch/i386/entry32-16.S index a37fb55..aaf1273 100644 --- a/purgatory/arch/i386/entry32-16.S +++ b/purgatory/arch/i386/entry32-16.S @@ -25,7 +25,7 @@ entry16: .code32 /* Compute where I am running at */ - movl $entry16_debug, %ebx + movl $entry16, %ebx /* Fixup my real mode segment */ movl %ebx, %eax -- 1.5.4.1