]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BeagleBoardPkg/Library/EblCmdLib/EblCmdLib.c
Move ARM disassembler into a library and out of the exception handler. Add a hook...
[mirror_edk2.git] / BeagleBoardPkg / Library / EblCmdLib / EblCmdLib.c
index b101049cad5a4243599cbb07c68693a394d5181a..6ce3f70f6dd0d2b53f4065493c0177b50260195c 100644 (file)
@@ -25,7 +25,7 @@
 #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
@@ -54,10 +72,10 @@ EblEdk2Cmd (
 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