xen/arch/x86/x86_64/kexec_reloc.S | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
Given the need to calculate the base anyway, it's easier to do so entirely on
the stack.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Teddy Astie <teddy.astie@vates.tech>
---
xen/arch/x86/x86_64/kexec_reloc.S | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/xen/arch/x86/x86_64/kexec_reloc.S b/xen/arch/x86/x86_64/kexec_reloc.S
index ec1e4e3550e4..62e83d60a85d 100644
--- a/xen/arch/x86/x86_64/kexec_reloc.S
+++ b/xen/arch/x86/x86_64/kexec_reloc.S
@@ -114,9 +114,11 @@ FUNC(kexec_reloc)
.L_call_32_bit:
/* Load compat GDT. */
- leaq compat_mode_gdt(%rip), %rax
- movq %rax, (compat_mode_gdt_desc + 2)(%rip)
- lgdt compat_mode_gdt_desc(%rip)
+ lea compat_mode_gdt(%rip), %rax
+ push %rax
+ pushw $.Lcompat_mode_gdt_end - 1 - compat_mode_gdt
+ lgdt (%rsp)
+ add $10, %rsp
/* Enter compatibility mode. */
lea compatibility_mode(%rip), %rax
@@ -206,11 +208,6 @@ END(compatibility_mode)
/* Separate code and data into into different cache lines */
.balign L1_CACHE_BYTES
-DATA_LOCAL(compat_mode_gdt_desc, 4)
- .word .Lcompat_mode_gdt_end - compat_mode_gdt -1
- .quad 0x0000000000000000 /* set in call_32_bit above */
-END(compat_mode_gdt_desc)
-
DATA_LOCAL(compat_mode_gdt, 8)
.quad 0x0000000000000000 /* null */
.quad 0x00cf93000000ffff /* 0x0008 ring 0 data */
--
2.39.5
On 30.06.2026 17:57, Andrew Cooper wrote: > Given the need to calculate the base anyway, it's easier to do so entirely on > the stack. > > No functional change. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Since we've started using (the somewhat odd) PUSHW, perhaps not really a problem to have another instance: Reviewed-by: Jan Beulich <jbeulich@suse.com> Jan
On 30/06/2026 5:01 pm, Jan Beulich wrote: > On 30.06.2026 17:57, Andrew Cooper wrote: >> Given the need to calculate the base anyway, it's easier to do so entirely on >> the stack. >> >> No functional change. >> >> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> > Since we've started using (the somewhat odd) PUSHW, perhaps not really a problem > to have another instance: > Reviewed-by: Jan Beulich <jbeulich@suse.com> Thanks. These are the only two where it makes sense, AFAICT. I'm not expecting to use this trick elsewhere. ~Andrew
© 2016 - 2026 Red Hat, Inc.