]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib.c
IntelFsp2Pkg: BaseFspDebugLibSerialPort Support for X64
[mirror_edk2.git] / IntelFsp2Pkg / Library / BaseFspDebugLibSerialPort / DebugLib.c
index c8824cde7f67e3b7e527264d116735013b8abce8..cb2317bfb2409eafa2f09e5bf4e059e1b09eeddb 100644 (file)
@@ -33,7 +33,7 @@ VA_LIST  mVaListNull;
 \r
   @return StackFramePointer  stack frame pointer of function call.\r
 **/\r
-UINT32 *\r
+UINTN *\r
 EFIAPI\r
 GetStackFramePointer (\r
   VOID\r
@@ -193,13 +193,13 @@ DebugBPrint (
 **/\r
 VOID\r
 FillHex (\r
-  UINT32  Value,\r
+  UINT  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
@@ -228,26 +228,35 @@ DebugAssertInternal (
   )\r
 {\r
   CHAR8   Buffer[MAX_DEBUG_MESSAGE_LENGTH];\r
-  UINT32  *Frame;\r
+  UINT  *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