mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/wakeup: Fix code generation for bogus_saved_magic
bogus_saved_magic() is assembled in a .code64 section but invoked in 32bit
mode. Moving it causes a real encoding difference.
Before:
66 c7 04 25 14 80 0b 00 53 0e movw $0xe53,0xb8014(,%eiz,1)
After:
66 c7 05 14 80 0b 00 53 0e movw $0xe53,0xb8014
The difference happens to be benign, but move the logic back into a .code32
for sanity sake. Annotate it with ELF metadata while doing so.
Fixes: d8c8fef090 ("Provide basic Xen PM infrastructure")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
d4829a20ad
commit
c839c8c3fc
1 file changed
+5
-4
@@ -153,15 +153,16 @@ wakeup_32:
|
||||
/* Now in compatibility mode. Long-jump to 64-bit mode */
|
||||
ljmp $BOOT_CS64, $bootsym_rel(wakeup_64,6)
|
||||
|
||||
FUNC_LOCAL(bogus_saved_magic, 0)
|
||||
movw $0x0e00 + 'S', 0xb8014
|
||||
jmp bogus_saved_magic
|
||||
END(bogus_saved_magic)
|
||||
|
||||
.code64
|
||||
wakeup_64:
|
||||
/* Jump to high mappings and the higher-level wakeup code. */
|
||||
movabs $s3_resume, %rbx
|
||||
jmp *%rbx
|
||||
|
||||
bogus_saved_magic:
|
||||
movw $0x0e00 + 'S', 0xb8014
|
||||
jmp bogus_saved_magic
|
||||
|
||||
/* Stack for wakeup: rest of first trampoline page. */
|
||||
ENTRY(wakeup_stack_start)
|
||||