#include <Library/UefiLib.h>\r
#include <Library/PcdLib.h>\r
#include <Library/EfiFileLib.h>\r
-\r
+#include <Library/ArmDisassemblerLib.h>\r
\r
//PcdEmbeddedFdBaseAddress\r
\r
\r
**/\r
EFI_STATUS\r
-EblEdk2Cmd (\r
+EblDisassembler (\r
IN UINTN Argc,\r
IN CHAR8 **Argv\r
)\r
{\r
+ UINT8 *Ptr;\r
+ UINT32 Address;\r
+ UINT32 Count;\r
+ CHAR8 Buffer[80];\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]) : 10;\r
+\r
+ Ptr = (UINT8 *)(UINTN)Address; \r
+ while (Count-- > 0) {\r
+ DisassembleInstruction (&Ptr, TRUE, TRUE, Buffer, sizeof (Buffer));\r
+ AsciiPrint ("0x%08x: %a", Address, Buffer);\r
+ }\r
+\r
return EFI_SUCCESS;\r
}\r
\r
GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mLibCmdTemplate[] =\r
{\r
{\r
- "edk2",\r
- " filename ; Load FD into memory and boot from it",\r
+ "disasm address [count]",\r
+ " disassemble count instructions",\r
NULL,\r
- EblEdk2Cmd\r
+ EblDisassembler\r
}\r
};\r
\r