]> xenbits.xensource.com Git - xen.git/commitdiff
x86/wakeup: Fix code generation for bogus_saved_magic
authorAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 8 Nov 2024 16:54:34 +0000 (16:54 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 11 Nov 2024 15:25:39 +0000 (15:25 +0000)
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: d8c8fef09054 ("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>
xen/arch/x86/boot/wakeup.S

index 08447e193496617d2233510513caf519b6bc4d4d..c929fe921823038fef152bf3c1f722ff03f36771 100644 (file)
@@ -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)