--- ./arch/i386/kernel/entry_trampoline.c.4gbglb 2005-01-19 11:01:17.000000000 +0300 +++ ./arch/i386/kernel/entry_trampoline.c 2005-01-19 11:01:28.275121416 +0300 @@ -24,14 +24,16 @@ void __init init_entry_mappings(void) void *tramp; int p; + pgprot_t prot; /* * We need a high IDT and GDT for the 4G/4G split: */ trap_init_virtual_IDT(); - __set_fixmap(FIX_ENTRY_TRAMPOLINE_0, __pa((unsigned long)&__entry_tramp_start), PAGE_KERNEL_EXEC); - __set_fixmap(FIX_ENTRY_TRAMPOLINE_1, __pa((unsigned long)&__entry_tramp_start) + PAGE_SIZE, PAGE_KERNEL_EXEC); + prot = __pgprot(pgprot_val(PAGE_KERNEL_EXEC) | _PAGE_GLOBAL); + __set_fixmap(FIX_ENTRY_TRAMPOLINE_0, __pa((unsigned long)&__entry_tramp_start), prot); + __set_fixmap(FIX_ENTRY_TRAMPOLINE_1, __pa((unsigned long)&__entry_tramp_start) + PAGE_SIZE, prot); tramp = (void *)fix_to_virt(FIX_ENTRY_TRAMPOLINE_0); printk("mapped 4G/4G trampoline to %p.\n", tramp);