summaryrefslogtreecommitdiff
path: root/src/target/armv4_5.h
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-11-22 03:38:34 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-11-22 03:38:34 -0800
commitff810723e051ed1f86cffcb565ade6b4d1fc50c8 (patch)
treebb114d521b84926cd3ce1b4975275c192a8f074a /src/target/armv4_5.h
parent5706fd7860ea01c591ecf74880a5a5e04e6df22e (diff)
downloadopenocd+libswd-ff810723e051ed1f86cffcb565ade6b4d1fc50c8.tar.gz
openocd+libswd-ff810723e051ed1f86cffcb565ade6b4d1fc50c8.tar.bz2
openocd+libswd-ff810723e051ed1f86cffcb565ade6b4d1fc50c8.tar.xz
openocd+libswd-ff810723e051ed1f86cffcb565ade6b4d1fc50c8.zip
ARM: define two register utilities
Define arm_reg_current() ... returning handle to a given register, and encapsulating the current mode's register shadowing. It's got one current use, for reporting the current register set to GDB. This will let later patches clean up much ARMV4_5_CORE_REG_MODE() nastiness, saving a bit of code. Define and use arm_set_cpsr() ... initially it updates the cached CPSR and sets up state used by arm_reg_current(), plus any SPSR handle. (Later: can also set up for T and J bits.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/target/armv4_5.h')
-rw-r--r--src/target/armv4_5.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/target/armv4_5.h b/src/target/armv4_5.h
index 5bce30b3..a9599c82 100644
--- a/src/target/armv4_5.h
+++ b/src/target/armv4_5.h
@@ -85,6 +85,11 @@ struct arm
/** 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,
@@ -161,6 +166,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;