From be22d975b0017b10daec42f21471caccb9a3d241 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Mon, 16 Mar 2026 14:29:28 +0000 Subject: [PATCH] x86/kexec: Drop compat_mode_gdt_desc 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 Reviewed-by: Jan Beulich --- 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 81da81a827..1d023733a9 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, PAGE_SIZE) .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 */