\r
@return StackFramePointer stack frame pointer of function call.\r
**/\r
-UINT32 *\r
+UINTN *\r
EFIAPI\r
GetStackFramePointer (\r
VOID\r
**/\r
VOID\r
FillHex (\r
- UINT32 Value,\r
+ UINTN Value,\r
CHAR8 *Buffer\r
)\r
{\r
INTN Idx;\r
\r
- for (Idx = 7; Idx >= 0; Idx--) {\r
+ for (Idx = (sizeof (UINTN) * 2) - 1; Idx >= 0; Idx--) {\r
Buffer[Idx] = mHexTable[Value & 0x0F];\r
Value >>= 4;\r
}\r
)\r
{\r
CHAR8 Buffer[MAX_DEBUG_MESSAGE_LENGTH];\r
- UINT32 *Frame;\r
+ UINTN *Frame;\r
\r
- Frame = (UINT32 *)GetStackFramePointer ();\r
+ Frame = (UINTN *)GetStackFramePointer ();\r
\r
//\r
// Generate the ASSERT() message in Ascii format\r
//\r
- AsciiStrnCpyS (\r
- Buffer,\r
- sizeof (Buffer) / sizeof (CHAR8),\r
- "-> EBP:0x00000000 EIP:0x00000000\n",\r
- sizeof (Buffer) / sizeof (CHAR8) - 1\r
- );\r
+ if (sizeof (UINTN) == sizeof (UINT32)) {\r
+ AsciiStrnCpyS (\r
+ Buffer,\r
+ sizeof (Buffer) / sizeof (CHAR8),\r
+ "-> EBP:0x00000000 EIP:0x00000000\n",\r
+ sizeof (Buffer) / sizeof (CHAR8) - 1\r
+ );\r
+ } else {\r
+ AsciiStrnCpyS (\r
+ Buffer,\r
+ sizeof (Buffer) / sizeof (CHAR8),\r
+ "-> RBP:0x0000000000000000 RIP:0x0000000000000000\n",\r
+ sizeof (Buffer) / sizeof (CHAR8) - 1\r
+ );\r
+ }\r
SerialPortWrite ((UINT8 *)"ASSERT DUMP:\n", 13);\r
while (Frame != NULL) {\r
- FillHex ((UINT32)Frame, Buffer + 9);\r
- FillHex (Frame[1], Buffer + 9 + 8 + 8);\r
+ FillHex ((UINTN)Frame, Buffer + 9);\r
+ FillHex (Frame[1], Buffer + 9 + (sizeof (UINTN) * 2) + 8);\r
SerialPortWrite ((UINT8 *)Buffer, AsciiStrLen (Buffer));\r
- if ((Frame[0] > (UINT32)Frame) && (Frame[0] < (UINT32)Frame + 0x00100000)) {\r
- Frame = (UINT32 *)Frame[0];\r
+ if ((Frame[0] > (UINTN)Frame) && (Frame[0] < (UINTN)Frame + 0x00100000)) {\r
+ Frame = (UINTN *)Frame[0];\r
} else {\r
Frame = NULL;\r
}\r