summaryrefslogtreecommitdiffstats
path: root/arch/x86/realmode/rm/trampoline_common.S
blob: cac444b942f8689427d7f288600adf2526bba885 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
	.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