X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farmv4_5.h;h=822d14393b2eb94c00ca7573fe907fab8bd9e88d;hb=c4992c6d863d0ead91d84d19bbfe1643d720b205;hp=c8fc558082fe502e7cdaefc7683786284d66878a;hpb=69c751956293e822faa6cf844f2864d81c36a578;p=openocd.git diff --git a/src/target/armv4_5.h b/src/target/armv4_5.h index c8fc558082..822d14393b 100644 --- a/src/target/armv4_5.h +++ b/src/target/armv4_5.h @@ -27,6 +27,8 @@ #define ARMV4_5_H #include "target.h" +#include "command.h" + typedef enum armv4_5_mode { @@ -62,23 +64,11 @@ extern const int armv4_5_core_reg_map[8][17]; #define ARMV4_5_CORE_REG_MODE(cache, mode, num) \ cache->reg_list[armv4_5_core_reg_map[armv4_5_mode_to_number(mode)][num]] -/* offsets into armv4_5 core register cache */ -enum -{ - ARMV4_5_CPSR = 31, - ARMV4_5_SPSR_FIQ = 32, - ARMV4_5_SPSR_IRQ = 33, - ARMV4_5_SPSR_SVC = 34, - ARMV4_5_SPSR_ABT = 35, - ARMV4_5_SPSR_UND = 36, - ARM_SPSR_MON = 39, -}; +/* offset into armv4_5 core register cache -- OBSOLETE, DO NOT USE! */ +enum { ARMV4_5_CPSR = 31, }; #define ARMV4_5_COMMON_MAGIC 0x0A450A45 -/* NOTE: this is being morphed into a generic toplevel holder for ARMs. */ -#define armv4_5_common_s arm - /** * Represents a generic ARM core, with standard application registers. * @@ -91,6 +81,14 @@ struct arm int common_magic; struct reg_cache *core_cache; + /** Handle to the CPSR; valid in all core modes. */ + struct reg *cpsr; + + /** Handle to the SPSR; valid only in core modes with an SPSR. */ + struct reg *spsr; + + const int *map; + /** * Indicates what registers are in the ARM state core register set. * ARMV4_5_MODE_ANY indicates the standard set of 37 registers, @@ -105,6 +103,12 @@ struct arm /** Flag reporting unavailability of the BKPT instruction. */ bool is_armv4; + /** Backpointer to the target. */ + struct target *target; + + /** Handle for the debug module, if one is present. */ + struct arm_dpm *dpm; + /** Handle for the Embedded Trace Module, if one is present. */ struct etm_context *etm; @@ -153,7 +157,8 @@ int armv4_5_arch_state(struct target *target); int armv4_5_get_gdb_reg_list(struct target *target, struct reg **reg_list[], int *reg_list_size); -int armv4_5_register_commands(struct command_context *cmd_ctx); +extern const struct command_registration arm_command_handlers[]; + int armv4_5_init_arch_info(struct target *target, struct arm *armv4_5); int armv4_5_run_algorithm(struct target *target, @@ -167,6 +172,9 @@ int arm_checksum_memory(struct target *target, int arm_blank_check_memory(struct target *target, uint32_t address, uint32_t count, uint32_t *blank); +void arm_set_cpsr(struct arm *arm, uint32_t cpsr); +struct reg *arm_reg_current(struct arm *arm, unsigned regnum); + extern struct reg arm_gdb_dummy_fp_reg; extern struct reg arm_gdb_dummy_fps_reg;