#include <Library/UefiLib.h>\r
#include <Library/PcdLib.h>\r
#include <Library/EfiFileLib.h>\r
+#include <Library/ArmDisassemblerLib.h>\r
+\r
+//PcdEmbeddedFdBaseAddress\r
+\r
+/**\r
+ Fill Me In\r
+\r
+ Argv[0] - "%CommandName%"\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
+\r
+ @return EFI_SUCCESS\r
+\r
+**/\r
+EFI_STATUS\r
+EblDisassembler (\r
+ IN UINTN Argc,\r
+ IN CHAR8 **Argv\r
+ )\r
+{\r
+ UINT8 *Ptr, *CurrentAddress;\r
+ UINT32 Address;\r
+ UINT32 Count;\r
+ CHAR8 Buffer[80];\r
+ UINT32 ItBlock;\r
+ \r
+ if (Argc < 2) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
+ Address = AsciiStrHexToUintn (Argv[1]);\r
+ Count = (Argc > 2) ? (UINT32)AsciiStrHexToUintn (Argv[2]) : 20;\r
+\r
+ Ptr = (UINT8 *)(UINTN)Address; \r
+ ItBlock = 0;\r
+ do {\r
+ CurrentAddress = Ptr;\r
+ DisassembleInstruction (&Ptr, TRUE, TRUE, &ItBlock, Buffer, sizeof (Buffer));\r
+ AsciiPrint ("0x%08x: %a\n", CurrentAddress, Buffer);\r
+ } while (Count-- > 0);\r
+ \r
+\r
+ return EFI_SUCCESS;\r
+}\r
\r
\r
GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mLibCmdTemplate[] =\r
{\r
+ {\r
+ "disasm address [count]",\r
+ " disassemble count instructions",\r
+ NULL,\r
+ EblDisassembler\r
+ }\r
};\r
\r
\r