linux_dsm_epyc7002/arch/x86/realmode/rm/trampoline_common.S
Jarkko Sakkinen cda846f101 x86, realmode: read cr4 and EFER from kernel for 64-bit trampoline
This patch changes 64-bit trampoline so that CR4 and
EFER are provided by the kernel instead of using fixed
values.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Link: http://lkml.kernel.org/r/1336501366-28617-24-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2012-05-08 15:04:27 -07:00

43 lines
779 B
ArmAsm

.section ".rodata","a"
#ifdef CONFIG_X86_64
# Duplicate the global descriptor table
# so the kernel can live anywhere
.balign 16
.globl tr_gdt
tr_gdt:
.short tr_gdt_end - tr_gdt - 1 # gdt limit
.long pa_tr_gdt
.short 0
.quad 0x00cf9b000000ffff # __KERNEL32_CS
.quad 0x00af9b000000ffff # __KERNEL_CS
.quad 0x00cf93000000ffff # __KERNEL_DS
tr_gdt_end:
#endif
.balign 4
tr_idt: .fill 1, 6, 0
.bss
.balign 4
GLOBAL(trampoline_status) .space 4
.balign 8
GLOBAL(trampoline_header)
#ifdef CONFIG_X86_32
tr_start: .space 4
tr_gdt_pad: .space 2
tr_gdt: .space 6
#else
tr_start: .space 8
GLOBAL(tr_cr4) .space 4
GLOBAL(tr_efer) .space 8
#endif
END(trampoline_header)
#ifdef CONFIG_X86_64
.balign PAGE_SIZE
GLOBAL(trampoline_pgd) .space PAGE_SIZE
#endif