target/aarch64: a64 disassembler
Add A64 (AArch64) Disassembler using Capstone framework. Change-Id: Ia92b57001843b11a818af940a468b131e42a03fd Signed-off-by: Mete Balci <metebalci@gmail.com> [Antonio Borneo: Rebased on current HEAD] Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5004 Tested-by: jenkins
This commit is contained in:
committed by
Antonio Borneo
parent
a31e579e87
commit
d7d70c2719
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "breakpoints.h"
|
||||
#include "aarch64.h"
|
||||
#include "a64_disassembler.h"
|
||||
#include "register.h"
|
||||
#include "target_request.h"
|
||||
#include "target_type.h"
|
||||
@@ -2566,7 +2567,6 @@ COMMAND_HANDLER(aarch64_handle_cache_info_command)
|
||||
&armv8->armv8_mmu.armv8_cache);
|
||||
}
|
||||
|
||||
|
||||
COMMAND_HANDLER(aarch64_handle_dbginit_command)
|
||||
{
|
||||
struct target *target = get_current_target(CMD_CTX);
|
||||
@@ -2578,6 +2578,39 @@ COMMAND_HANDLER(aarch64_handle_dbginit_command)
|
||||
return aarch64_init_debug_access(target);
|
||||
}
|
||||
|
||||
COMMAND_HANDLER(aarch64_handle_disassemble_command)
|
||||
{
|
||||
struct target *target = get_current_target(CMD_CTX);
|
||||
|
||||
if (target == NULL) {
|
||||
LOG_ERROR("No target selected");
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
struct aarch64_common *aarch64 = target_to_aarch64(target);
|
||||
|
||||
if (aarch64->common_magic != AARCH64_COMMON_MAGIC) {
|
||||
command_print(CMD, "current target isn't an AArch64");
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
int count = 1;
|
||||
target_addr_t address;
|
||||
|
||||
switch (CMD_ARGC) {
|
||||
case 2:
|
||||
COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], count);
|
||||
/* FALL THROUGH */
|
||||
case 1:
|
||||
COMMAND_PARSE_ADDRESS(CMD_ARGV[0], address);
|
||||
break;
|
||||
default:
|
||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||
}
|
||||
|
||||
return a64_disassemble(CMD, target, address, count);
|
||||
}
|
||||
|
||||
COMMAND_HANDLER(aarch64_mask_interrupts_command)
|
||||
{
|
||||
struct target *target = get_current_target(CMD_CTX);
|
||||
@@ -2758,6 +2791,13 @@ static const struct command_registration aarch64_exec_command_handlers[] = {
|
||||
.help = "Initialize core debug",
|
||||
.usage = "",
|
||||
},
|
||||
{
|
||||
.name = "disassemble",
|
||||
.handler = aarch64_handle_disassemble_command,
|
||||
.mode = COMMAND_EXEC,
|
||||
.help = "Disassemble instructions",
|
||||
.usage = "address [count]",
|
||||
},
|
||||
{
|
||||
.name = "maskisr",
|
||||
.handler = aarch64_mask_interrupts_command,
|
||||
|
||||
Reference in New Issue
Block a user