/** @file\r
Basic command line parser for EBL (Embedded Boot Loader)\r
\r
- Copyright (c) 2007, Intel Corporation<BR>\r
- Portions copyright (c) 2008-2009, Apple Inc. All rights reserved.\r
+ Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
+ Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
\r
- All rights reserved. This program and the accompanying materials\r
+ This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
/**\r
Dump memory\r
\r
- Argv[0] - "md"\r
+ Argv[0] - "md"[.#] # is optional 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
- Argv[0] is the comamnd name\r
+ Argv[0] is the command name\r
\r
@return EFI_SUCCESS\r
\r
{\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
/**\r
Fill Memory with data\r
\r
- Argv[0] - "mfill"\r
+ Argv[0] - "mfill"[.#] # is optional 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
@param Argc Number of command arguments in Argv\r
@param Argv Array of strings that represent the parsed command line. \r
- Argv[0] is the comamnd name\r
+ Argv[0] is the command name\r
\r
@return EFI_SUCCESS\r
\r
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
MmioWrite32 (Address, Data);\r
} else if (Width == 2) {\r
- MmioWrite32 (Address, (UINT16)Data);\r
+ MmioWrite16 (Address, (UINT16)Data);\r
} else {\r
- MmioWrite32 (Address, (UINT8)Data);\r
+ MmioWrite8 (Address, (UINT8)Data);\r
}\r
}\r
\r
\r
@param Argc Number of command arguments in Argv\r
@param Argv Array of strings that represent the parsed command line. \r
- Argv[0] is the comamnd name\r
+ Argv[0] is the command name\r
\r
@return EFI_SUCCESS\r
\r
Pci->GetLocation (Pci, &Seg, &Bus, &Dev, &Func);\r
if ((Bus == BusArg) && (Dev == DevArg) && (Func == FuncArg)) {\r
// Only print Segment if it is non zero. If you only have one PCI segment it is \r
- // redundent to print it out\r
+ // redundant to print it out\r
if (Seg != 0) {\r
AsciiPrint ("Seg:%d ", Seg);\r
}\r
\r
\r
GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdPciDebugTemplate[] = {\r
- "pci",\r
- " [bus] [dev] [func]; Dump PCI",\r
- NULL,\r
- EblPciCmd\r
+ {\r
+ "pci",\r
+ " [bus] [dev] [func]; Dump PCI",\r
+ NULL,\r
+ EblPciCmd\r
+ }\r
};\r
\r
\r
{\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]; Memory Fill Addr Len*(1|2|4) bytes of data(0)",\r
NULL,\r
EblMfillCmd\r
},\r