X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Fxscale.h;h=dd7b034652bc754ef74750fef117cde06ab8f1c9;hp=6cfe76e65b2131a8cb24e1ee5321dd7b4cf7dfda;hb=ccde06a08fbf9c4f57b321dbec0509f73239c2de;hpb=8b994145b849c40b0a195c3fb332b9770b2f9097 diff --git a/src/target/xscale.h b/src/target/xscale.h index 6cfe76e65b..dd7b034652 100644 --- a/src/target/xscale.h +++ b/src/target/xscale.h @@ -29,18 +29,13 @@ #define XSCALE_COMMON_MAGIC 0x58534341 -typedef struct xscale_jtag_s -{ - /* position in JTAG scan chain */ - jtag_tap_t *tap; - - /* IR length and instructions */ - int ir_length; - uint32_t dbgrx; - uint32_t dbgtx; - uint32_t ldic; - uint32_t dcsr; -} xscale_jtag_t; +/* These four JTAG instructions are architecturally defined. + * Lengths are core-specific; originally 5 bits, later 7. + */ +#define XSCALE_DBGRX 0x02 +#define XSCALE_DBGTX 0x10 +#define XSCALE_LDIC 0x07 +#define XSCALE_SELDCSR 0x09 enum xscale_debug_reason { @@ -85,19 +80,15 @@ typedef struct xscale_trace_s typedef struct xscale_common_s { + /* armv4/5 common stuff */ + armv4_5_common_t armv4_5_common; + int common_magic; /* XScale registers (CP15, DBG) */ reg_cache_t *reg_cache; - /* pxa250, pxa255, pxa27x, ixp42x, ... */ - char *variant; - - xscale_jtag_t jtag_info; - /* current state of the debug handler */ - int handler_installed; - int handler_running; uint32_t handler_address; /* target-endian buffers with exception vectors */ @@ -133,19 +124,20 @@ typedef struct xscale_common_s int arch_debug_reason; - /* armv4/5 common stuff */ - armv4_5_common_t armv4_5_common; - /* MMU/Caches */ - armv4_5_mmu_common_t armv4_5_mmu; + struct armv4_5_mmu_common armv4_5_mmu; uint32_t cp15_control_reg; - /* possible future enhancements that go beyond XScale common stuff */ - void *arch_info; - int fast_memory_access; } xscale_common_t; +static inline struct xscale_common_s * +target_to_xscale(struct target_s *target) +{ + return container_of(target->arch_info, struct xscale_common_s, + armv4_5_common); +} + typedef struct xscale_reg_s { int dbg_handler_number;