- Uint32 addr = (Uint)gpMP_LocalAPIC + 0x20 + (APICID<<3);
-
- *(Uint32*)addr = ((DeliveryMode & 7) << 8) | (Vector & 0xFF);
+ Uint32 addr = (Uint)gpMP_LocalAPIC + 0x300;
+ Uint32 val;
+
+ // Hi
+ val = (Uint)APICID << 24;
+ Log("*%p = 0x%08x", addr+0x10, val);
+ *(Uint32*)(addr+0x10) = val;
+ // Low (and send)
+ val = ((DeliveryMode & 7) << 8) | (Vector & 0xFF);
+ Log("*%p = 0x%08x", addr, val);
+ *(Uint32*)addr = val;