\r
// Convert the (ClusterId,CoreId) into a Core Position\r
// We assume there are 4 cores per cluster\r
-#define GetCorePositionFromMpId(Pos, MpId, Tmp) \\r
- lsr Pos, MpId, #6 ; \\r
- and Tmp, MpId, #3 ; \\r
+// Note: 0xFFFF is the magic value for ARM_CORE_MASK | ARM_CLUSTER_MASK\r
+#define GetCorePositionFromMpId(Pos, MpId, Tmp) \\r
+ ldr Tmp, =0xFFFF \\r
+ and MpId, Tmp \\r
+ lsr Pos, MpId, #6 ; \\r
+ and Tmp, MpId, #3 ; \\r
add Pos, Pos, Tmp\r
\r
// Reserve a region at the top of the Primary Core stack\r
\r
#define LoadConstantToReg(Data, Reg) \\r
ldr Reg, =Data\r
- \r
-#define GetCorePositionFromMpId(Pos, MpId, Tmp) \\r
- lsr Pos, MpId, #6 ; \\r
- and Tmp, MpId, #3 ; \\r
+\r
+// Convert the (ClusterId,CoreId) into a Core Position\r
+// We assume there are 4 cores per cluster\r
+// Note: 0xFFFF is the magic value for ARM_CORE_MASK | ARM_CLUSTER_MASK\r
+#define GetCorePositionFromMpId(Pos, MpId, Tmp) \\r
+ ldr Tmp, =0xFFFF ; \\r
+ and MpId, Tmp ; \\r
+ lsr Pos, MpId, #6 ; \\r
+ and Tmp, MpId, #3 ; \\r
add Pos, Pos, Tmp\r
\r
#define SetPrimaryStack(StackTop, GlobalSize, Tmp) \\r