Update EBL to have an optional width specifier on commands. So hexdump.4 means use...
[efi/edk2/.git] / edk2 / EmbeddedPkg / Ebl / HwDebug.c
index 6ffbaf1..b2ea9af 100644 (file)
 /**\r
   Dump memory\r
 \r
-  Argv[0] - "md"\r
+  Argv[0] - "md"[.#] # is optiona width 1, 2, 4, or 8. Default 1\r
   Argv[1] - Hex Address to dump\r
   Argv[2] - Number of hex bytes to dump (0x20 is default)\r
-  Argv[3] - [1|2|4|8] byte width of the dump\r
 \r
-  md 0x123445678 50 4 ; Dump 0x50 4 byte quantities starting at 0x123445678\r
-  md 0x123445678 40   ; Dump 0x40 1 byte quantities starting at 0x123445678\r
-  md 0x123445678      ; Dump 0x20 1 byte quantities starting at 0x123445678\r
+  md.4 0x123445678 50 ; Dump 0x50 4 byte quantities starting at 0x123445678\r
+  md   0x123445678 40 ; Dump 0x40 1 byte quantities starting at 0x123445678\r
+  md   0x123445678    ; Dump 0x20 1 byte quantities starting at 0x123445678\r
 \r
   @param  Argc   Number of command arguments in Argv\r
   @param  Argv   Array of strings that represent the parsed command line. \r
@@ -48,21 +47,20 @@ EblMdCmd (
 {\r
   STATIC UINT8  *Address = NULL;\r
   STATIC UINTN  Length   = 0x20;\r
-  STATIC UINTN  Width    = 1;\r
+  STATIC UINTN  Width;\r
 \r
-  switch (Argc)\r
-  {\r
-    case 4:\r
-      Width = AsciiStrHexToUintn(Argv[3]);\r
+  Width = WidthFromCommandName (Argv[0], 1);\r
+\r
+  switch (Argc) {\r
     case 3:\r
       Length = AsciiStrHexToUintn(Argv[2]);\r
     case 2:\r
-      Address = (UINT8 *)AsciiStrHexToUintn(Argv[1]);\r
+      Address = (UINT8 *)AsciiStrHexToUintn (Argv[1]);\r
     default:\r
       break;\r
   }\r
 \r
-  OutputData(Address, Length, Width, (UINTN)Address);\r
+  OutputData (Address, Length, Width, (UINTN)Address);\r
 \r
   Address += Length;\r
   \r
@@ -73,14 +71,13 @@ EblMdCmd (
 /**\r
   Fill Memory with data\r
 \r
-  Argv[0] - "mfill"\r
+  Argv[0] - "mfill"[.#] # is optiona width 1, 2, 4, or 8. Default 4\r
   Argv[1] - Hex Address to fill\r
   Argv[2] - Data to write (0x00 is default)\r
   Argv[3] - Number of units to dump.\r
-  Argv[4] - [1|2|4|8] byte width of the dump\r
 \r
-  mf 0x123445678 aa 1 100 ; Start at 0x123445678 and write aa (1 byte) to the next 100 bytes\r
-  mf 0x123445678 aa 4 100 ; Start at 0x123445678 and write aa (4 byte) to the next 400 bytes\r
+  mf.1 0x123445678 aa 100 ; Start at 0x123445678 and write aa (1 byte) to the next 100 bytes\r
+  mf.4 0x123445678 aa 100 ; Start at 0x123445678 and write aa (4 byte) to the next 400 bytes\r
   mf 0x123445678 aa       ; Start at 0x123445678 and write aa (4 byte) to the next 1 byte\r
   mf 0x123445678          ; Start at 0x123445678 and write 00 (4 byte) to the next 1 byte\r
 \r
@@ -107,10 +104,11 @@ EblMfillCmd (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
+  Width = WidthFromCommandName (Argv[0], 4);\r
+\r
   Address = AsciiStrHexToUintn (Argv[1]);\r
   Data    = (Argc > 2) ? (UINT32)AsciiStrHexToUintn (Argv[2]) : 0;\r
-  Width   = (Argc > 3) ? AsciiStrHexToUintn (Argv[3]) : 4;\r
-  Length  = (Argc > 4) ? AsciiStrHexToUintn (Argv[4]) : 1;\r
+  Length  = (Argc > 3) ? AsciiStrHexToUintn (Argv[3]) : 1;\r
 \r
   for (EndAddress = Address + (Length * Width); Address < EndAddress; Address += Width) {\r
     if (Width == 4) {\r
@@ -310,13 +308,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdHwDebugTemplate[] =
 {\r
   {\r
     "md",\r
-    " [Addr] [Len] [1|2|4]; Memory Dump from Addr Len bytes",\r
+    "[.{1|2|4}] [Addr] [Len] [1|2|4]; Memory Dump from Addr Len bytes",\r
     NULL,\r
     EblMdCmd\r
   },\r
   {\r
     "mfill",\r
-    " Addr Len [data] [1|2|4]; Memory Fill Addr Len*(1|2|4) bytes of data(0)",\r
+    "[.{1|2|4}] Addr Len [data] [1|2|4]; Memory Fill Addr Len*(1|2|4) bytes of data(0)",\r
     NULL,\r
     EblMfillCmd\r
   },\r