OpenOCD
arm_dpm Struct Reference

This wraps an implementation of DPM primitives. More...

Collaboration diagram for arm_dpm:

Data Fields

struct armarm
 
struct reg *(* arm_reg_current )(struct arm *arm, unsigned regnum)
 
int(* bpwp_disable )(struct arm_dpm *dpm, unsigned index_value)
 Disables one breakpoint or watchpoint by clearing its hardware control registers. More...
 
int(* bpwp_enable )(struct arm_dpm *dpm, unsigned index_value, uint32_t addr, uint32_t control)
 Enables one breakpoint or watchpoint by writing to the hardware registers. More...
 
struct dpm_bpdbp
 
uint64_t didr
 Cache of DIDR. More...
 
uint32_t dscr
 Recent value of DSCR. More...
 
struct dpm_wpdwp
 
int(* finish )(struct arm_dpm *dpm)
 Invoke after a series of instruction operations. More...
 
int(* instr_cpsr_sync )(struct arm_dpm *dpm)
 Optional core-specific operation invoked after CPSR writes. More...
 
int(* instr_execute )(struct arm_dpm *dpm, uint32_t opcode)
 Runs one instruction. More...
 
int(* instr_read_data_dcc )(struct arm_dpm *dpm, uint32_t opcode, uint32_t *data)
 Runs one instruction, reading data from dcc after execution. More...
 
int(* instr_read_data_dcc_64 )(struct arm_dpm *dpm, uint32_t opcode, uint64_t *data)
 
int(* instr_read_data_r0 )(struct arm_dpm *dpm, uint32_t opcode, uint32_t *data)
 Runs one instruction, reading data from r0 after execution. More...
 
int(* instr_read_data_r0_64 )(struct arm_dpm *dpm, uint32_t opcode, uint64_t *data)
 
int(* instr_read_data_r0_r1 )(struct arm_dpm *dpm, uint32_t opcode, uint64_t *data)
 Runs two instructions, reading data from r0 and r1 after execution. More...
 
int(* instr_write_data_dcc )(struct arm_dpm *dpm, uint32_t opcode, uint32_t data)
 Runs one instruction, writing data to DCC before execution. More...
 
int(* instr_write_data_dcc_64 )(struct arm_dpm *dpm, uint32_t opcode, uint64_t data)
 
int(* instr_write_data_r0 )(struct arm_dpm *dpm, uint32_t opcode, uint32_t data)
 Runs one instruction, writing data to R0 before execution. More...
 
int(* instr_write_data_r0_64 )(struct arm_dpm *dpm, uint32_t opcode, uint64_t data)
 Runs one instruction, writing data to R0 before execution. More...
 
int(* instr_write_data_r0_r1 )(struct arm_dpm *dpm, uint32_t opcode, uint64_t data)
 Runs two instructions, writing data to R0 and R1 before execution. More...
 
unsigned int last_el
 Recent exception level on armv8. More...
 
unsigned nbp
 
unsigned nwp
 
int(* prepare )(struct arm_dpm *dpm)
 Invoke before a series of instruction operations. More...
 
target_addr_t wp_addr
 Target dependent watchpoint address. More...
 

Detailed Description

This wraps an implementation of DPM primitives.

Each interface provider supplies a structure like this, which is the glue between upper level code and the lower level hardware access.

It is a PRELIMINARY AND INCOMPLETE set of primitives, starting with support for CPU register access.

Definition at line 47 of file arm_dpm.h.

Field Documentation

◆ arm

◆ arm_reg_current

struct reg*(* arm_dpm::arm_reg_current) (struct arm *arm, unsigned regnum)

Definition at line 108 of file arm_dpm.h.

Referenced by armv8_dpm_setup().

◆ bpwp_disable

int(* arm_dpm::bpwp_disable) (struct arm_dpm *dpm, unsigned index_value)

Disables one breakpoint or watchpoint by clearing its hardware control registers.

Indices are the same ones accepted by bpwp_enable().

Definition at line 130 of file arm_dpm.h.

Referenced by arm11_dpm_init(), arm_dpm_initialize(), armv8_dpm_initialize(), armv8_dpm_setup(), cortex_a_dpm_setup(), dpm_maybe_update_bpwp(), and dpmv8_maybe_update_bpwp().

◆ bpwp_enable

int(* arm_dpm::bpwp_enable) (struct arm_dpm *dpm, unsigned index_value, uint32_t addr, uint32_t control)

Enables one breakpoint or watchpoint by writing to the hardware registers.

The specified breakpoint/watchpoint must currently be disabled. Indices 0..15 are used for breakpoints; indices 16..31 are for watchpoints.

Definition at line 122 of file arm_dpm.h.

Referenced by arm11_dpm_init(), cortex_a_dpm_setup(), dpm_add_breakpoint(), dpm_add_watchpoint(), dpm_maybe_update_bpwp(), dpmv8_add_breakpoint(), dpmv8_add_watchpoint(), and dpmv8_maybe_update_bpwp().

◆ dbp

◆ didr

uint64_t arm_dpm::didr

Cache of DIDR.

Definition at line 51 of file arm_dpm.h.

Referenced by aarch64_dpm_setup(), arm11_dpm_init(), arm_dpm_setup(), armv8_dpm_setup(), and cortex_a_dpm_setup().

◆ dscr

◆ dwp

◆ finish

◆ instr_cpsr_sync

int(* arm_dpm::instr_cpsr_sync) (struct arm_dpm *dpm)

Optional core-specific operation invoked after CPSR writes.

Definition at line 86 of file arm_dpm.h.

Referenced by aarch64_debug_entry(), arm_dpm_modeswitch(), armv8_dpm_setup(), armv8_dpm_write_dirty_registers(), cortex_a_dpm_setup(), and dpm_write_reg().

◆ instr_execute

int(* arm_dpm::instr_execute) (struct arm_dpm *dpm, uint32_t opcode)

◆ instr_read_data_dcc

int(* arm_dpm::instr_read_data_dcc) (struct arm_dpm *dpm, uint32_t opcode, uint32_t *data)

Runs one instruction, reading data from dcc after execution.

Definition at line 91 of file arm_dpm.h.

Referenced by arm11_dpm_init(), arm_dpm_read_reg(), armv8_dpm_setup(), armv8_read_reg32(), armv8_read_reg_simdfp_aarch32(), cortex_a_dpm_setup(), and dpm_read_reg_u64().

◆ instr_read_data_dcc_64

int(* arm_dpm::instr_read_data_dcc_64) (struct arm_dpm *dpm, uint32_t opcode, uint64_t *data)

Definition at line 94 of file arm_dpm.h.

Referenced by armv8_dpm_setup(), and armv8_read_reg().

◆ instr_read_data_r0

◆ instr_read_data_r0_64

int(* arm_dpm::instr_read_data_r0_64) (struct arm_dpm *dpm, uint32_t opcode, uint64_t *data)

◆ instr_read_data_r0_r1

int(* arm_dpm::instr_read_data_r0_r1) (struct arm_dpm *dpm, uint32_t opcode, uint64_t *data)

Runs two instructions, reading data from r0 and r1 after execution.

Definition at line 105 of file arm_dpm.h.

Referenced by cortex_a_dpm_setup(), and dpm_mrrc().

◆ instr_write_data_dcc

int(* arm_dpm::instr_write_data_dcc) (struct arm_dpm *dpm, uint32_t opcode, uint32_t data)

◆ instr_write_data_dcc_64

int(* arm_dpm::instr_write_data_dcc_64) (struct arm_dpm *dpm, uint32_t opcode, uint64_t data)

◆ instr_write_data_r0

◆ instr_write_data_r0_64

int(* arm_dpm::instr_write_data_r0_64) (struct arm_dpm *dpm, uint32_t opcode, uint64_t data)

◆ instr_write_data_r0_r1

int(* arm_dpm::instr_write_data_r0_r1) (struct arm_dpm *dpm, uint32_t opcode, uint64_t data)

Runs two instructions, writing data to R0 and R1 before execution.

Definition at line 78 of file arm_dpm.h.

Referenced by cortex_a_dpm_setup(), and dpm_mcrr().

◆ last_el

unsigned int arm_dpm::last_el

◆ nbp

◆ nwp

◆ prepare

◆ wp_addr

target_addr_t arm_dpm::wp_addr

Target dependent watchpoint address.

Either the address of the instruction which triggered a watchpoint or the memory address whose access triggered a watchpoint.

Definition at line 147 of file arm_dpm.h.

Referenced by aarch64_debug_entry(), aarch64_hit_watchpoint(), arm11_arch_state(), and arm_dpm_report_wfar().


The documentation for this struct was generated from the following file: