> #define APIC_ICR_high 0xfee00310 > apic_icr = tmpaddress; > apic_icr |= APIC_ICR_high; > apic_phy_addr = (unsigned long *) apic_icr; > *apic_phy_addr = cpu << 24; You mangled apic_icr here, APIC_ICR_high should be an offset. Look at the definitions in arch/x86/include/asm/apicdef.h.