xref: /kvm-unit-tests/x86/trampolines.S (revision d36b378f8e5c5ecbb1bb070d2617f1989987e912)
1/* Common bootstrapping code to transition from 16-bit to 32-bit code. */
2
3/* EFI provides it's own SIPI sequence to handle relocation. */
4#ifndef CONFIG_EFI
5.code16
6.globl rm_trampoline
7rm_trampoline:
8
9/* Store SIPI vector code at the beginning of trampoline. */
10sipi_entry:
11	mov %cr0, %eax
12	or $1, %eax
13	mov %eax, %cr0
14	lgdtl ap_rm_gdt_descr - sipi_entry
15	ljmpl $8, $ap_start32
16sipi_end:
17
18.globl ap_rm_gdt_descr
19ap_rm_gdt_descr:
20#ifdef __i386__
21	.word 0
22	.long 0
23#else
24	.word gdt32_end - gdt32 - 1
25	.long gdt32
26#endif
27
28.globl rm_trampoline_end
29rm_trampoline_end:
30#endif
31