]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/EfiLdr/Debug.c
DuetPkg: Send EfiLdr messages to serial port
[mirror_edk2.git] / DuetPkg / EfiLdr / Debug.c
index 0f554b01ed2c97d05e9517433335ee5ea80da758..d0049218dc80964ab470658fbc180c0e5f3c335b 100644 (file)
@@ -19,6 +19,7 @@ Revision History:
 --*/\r
 #include "EfiLdr.h"\r
 #include "Debug.h"\r
+#include <Library/SerialPortLib.h>\r
 \r
 UINT8 *mCursor;\r
 UINT8 mHeaderIndex = 10;\r
@@ -47,31 +48,68 @@ ClearScreen (
   mCursor = (UINT8 *)(UINTN)(0x000b8000 + 160);\r
 }\r
 \r
-VOID\r
-PrintValue64 (\r
-  UINT64 Value\r
+\r
+VOID \r
+PrintU32Base10 (\r
+  UINT32 Value\r
   )\r
 {\r
-  PrintValue ((UINT32) RShiftU64 (Value, 32));\r
-  PrintValue ((UINT32) Value);\r
+  UINT32 Index;\r
+  CHAR8  Char;\r
+  CHAR8  String[11];\r
+  UINTN  StringPos;\r
+  UINT32 B10Div;\r
+\r
+  B10Div = 1000000000;\r
+  for (Index = 0, StringPos = 0; Index < 10; Index++) {\r
+    Char = ((Value / B10Div) % 10) + '0';\r
+    if ((StringPos > 0) || (Char != '0')) {\r
+      String[StringPos] = Char;\r
+      StringPos++;\r
+    }\r
+    B10Div = B10Div / 10;\r
+  }\r
+\r
+  if (StringPos == 0) {\r
+      String[0] = '0';\r
+      StringPos++;\r
+  }\r
+\r
+  String[StringPos] = '\0';\r
+\r
+  PrintString (String);\r
 }\r
 \r
+\r
 VOID\r
 PrintValue (\r
   UINT32 Value\r
   )\r
 {\r
   UINT32 Index;\r
-  UINT8  Char;\r
+  CHAR8  Char;\r
+  CHAR8  String[9];\r
 \r
   for (Index = 0; Index < 8; Index++) {\r
     Char = (UINT8)(((Value >> ((7 - Index) * 4)) & 0x0f) + '0');\r
     if (Char > '9') {\r
       Char = (UINT8) (Char - '0' - 10 + 'A');\r
     }\r
-    *mCursor = Char;\r
-    mCursor += 2;\r
+    String[Index] = Char;\r
   }\r
+\r
+  String[sizeof (String) - 1] = '\0';\r
+\r
+  PrintString (String);\r
+}\r
+\r
+VOID\r
+PrintValue64 (\r
+  UINT64 Value\r
+  )\r
+{\r
+  PrintValue ((UINT32) RShiftU64 (Value, 32));\r
+  PrintValue ((UINT32) Value);\r
 }\r
 \r
 VOID\r
@@ -89,5 +127,10 @@ PrintString (
       mCursor += 2;\r
     }\r
   }\r
+\r
+  //\r
+  // All information also output to serial port.\r
+  //\r
+  SerialPortWrite ((UINT8*) String, Index);\r
 }\r
 \r