|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/wakeup: Fix code generation for bogus_saved_magic
bogus_saved_magic() is in a .code64 section but invokved in 32bit mode. This
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 differnce 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@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
This issue dates back to the very introduction of S3 support in Xen, in 2007.
---
xen/arch/x86/boot/wakeup.S | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/boot/wakeup.S b/xen/arch/x86/boot/wakeup.S
index 08447e193496..c929fe921823 100644
--- a/xen/arch/x86/boot/wakeup.S
+++ b/xen/arch/x86/boot/wakeup.S
@@ -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)
--
2.39.5
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |