Refactor code slightly in nat/aarch64-linux-hw-point.c (aarch64_linux_get_debug_reg_capacity)
Since the two locations which check the debug arch are the same code currently, it is a good idea to factor it out to a new function and just use that function from aarch64_linux_get_debug_reg_capacity. This is also the first step to support ARMv8.4 debug arch.
This commit is contained in:
@@ -769,6 +769,22 @@ aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
|
||||
state->dr_ctrl_wp[i], state->dr_ref_count_wp[i]);
|
||||
}
|
||||
|
||||
/* Return true if debug arch level is compatible for hw watchpoints
|
||||
and breakpoints. */
|
||||
|
||||
static bool
|
||||
compatible_debug_arch (unsigned int debug_arch)
|
||||
{
|
||||
if (debug_arch == AARCH64_DEBUG_ARCH_V8)
|
||||
return true;
|
||||
if (debug_arch == AARCH64_DEBUG_ARCH_V8_1)
|
||||
return true;
|
||||
if (debug_arch == AARCH64_DEBUG_ARCH_V8_2)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Get the hardware debug register capacity information from the
|
||||
process represented by TID. */
|
||||
|
||||
@@ -783,9 +799,7 @@ aarch64_linux_get_debug_reg_capacity (int tid)
|
||||
|
||||
/* Get hardware watchpoint register info. */
|
||||
if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_WATCH, &iov) == 0
|
||||
&& (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
|
||||
|| AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
|
||||
|| AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
|
||||
&& compatible_debug_arch (AARCH64_DEBUG_ARCH (dreg_state.dbg_info)))
|
||||
{
|
||||
aarch64_num_wp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
|
||||
if (aarch64_num_wp_regs > AARCH64_HWP_MAX_NUM)
|
||||
@@ -805,9 +819,7 @@ aarch64_linux_get_debug_reg_capacity (int tid)
|
||||
|
||||
/* Get hardware breakpoint register info. */
|
||||
if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_BREAK, &iov) == 0
|
||||
&& (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
|
||||
|| AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
|
||||
|| AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
|
||||
&& compatible_debug_arch (AARCH64_DEBUG_ARCH (dreg_state.dbg_info)))
|
||||
{
|
||||
aarch64_num_bp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
|
||||
if (aarch64_num_bp_regs > AARCH64_HBP_MAX_NUM)
|
||||
|
||||
Reference in New Issue
Block a user