4 #include <asm/cacheflush.h>
5 #include <asm/pgtable.h>
31 panic(
"Cannot allocate trampoline\n");
35 real_mode_header = (
struct real_mode_header *) base;
37 base, (
unsigned long long)mem, size);
41 real_mode_seg =
__pa(base) >> 4;
47 for (i = 0; i <
count; i++) {
48 seg = (
u16 *) (base + rel[i]);
55 for (i = 0; i <
count; i++) {
56 ptr = (
u32 *) (base + rel[i]);
61 trampoline_header = (
struct trampoline_header *)
65 trampoline_header->
start =
__pa(startup_32_smp);
66 trampoline_header->gdt_limit =
__BOOT_DS + 7;
67 trampoline_header->gdt_base =
__pa(boot_gdt);
80 trampoline_pgd = (
u64 *)
__va(real_mode_header->trampoline_pgd);
92 static int __init set_real_mode_permissions(
void)
94 unsigned char *
base = (
unsigned char *) real_mode_header;