__x2apic_enable();
 }
 
+static __init void apic_set_fixmap(void);
+
 static __init void x2apic_disable(void)
 {
        u32 x2apic_id, state = x2apic_state;
        }
 
        __x2apic_disable();
-       register_lapic_address(mp_lapic_addr);
+       apic_set_fixmap();
 }
 
 static __init void x2apic_enable(void)
        }
 }
 
+static __init void apic_set_fixmap(void)
+{
+       set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
+       apic_mmio_base = APIC_BASE;
+       apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
+                   apic_mmio_base, mp_lapic_addr);
+       apic_read_boot_cpu_id(false);
+}
+
 void __init register_lapic_address(unsigned long address)
 {
        mp_lapic_addr = address;
 
-       if (x2apic_mode)
-               return;
-
-       set_fixmap_nocache(FIX_APIC_BASE, address);
-       apic_mmio_base = APIC_BASE;
-       apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n", APIC_BASE, address);
-       apic_read_boot_cpu_id(false);
+       if (!x2apic_mode)
+               apic_set_fixmap();
 }
 
 /*