X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Fxscale.h;h=4f1b54d8b92403cd15e68aa907af24f03d0ba771;hp=9d92550a6c7b84a5a5bb1dd71de6900a6941c5c7;hb=cbc13187c315227c0cf8d85fb0b92d0ba4a10dab;hpb=5e837387aa7260518cf43f53b66ee917d8660802 diff --git a/src/target/xscale.h b/src/target/xscale.h index 9d92550a6c..4f1b54d8b9 100644 --- a/src/target/xscale.h +++ b/src/target/xscale.h @@ -50,44 +50,45 @@ enum xscale_trace_entry_type XSCALE_TRACE_ADDRESS = 0x1, }; -typedef struct xscale_trace_entry_s +struct xscale_trace_entry { uint8_t data; enum xscale_trace_entry_type type; -} xscale_trace_entry_t; +}; -typedef struct xscale_trace_data_s +struct xscale_trace_data { - xscale_trace_entry_t *entries; + struct xscale_trace_entry *entries; int depth; uint32_t chkpt0; uint32_t chkpt1; uint32_t last_instruction; - struct xscale_trace_data_s *next; -} xscale_trace_data_t; + struct xscale_trace_data *next; +}; -typedef struct xscale_trace_s +struct xscale_trace { trace_status_t capture_status; /* current state of capture run */ - struct image_s *image; /* source for target opcodes */ - xscale_trace_data_t *data; /* linked list of collected trace data */ + struct image *image; /* source for target opcodes */ + struct xscale_trace_data *data; /* linked list of collected trace data */ int buffer_enabled; /* whether trace buffer is enabled */ int buffer_fill; /* maximum number of trace runs to read (-1 for wrap-around) */ int pc_ok; uint32_t current_pc; armv4_5_state_t core_state; /* current core state (ARM, Thumb, Jazelle) */ -} xscale_trace_t; +}; -typedef struct xscale_common_s +struct xscale_common { + /* armv4/5 common stuff */ + struct arm armv4_5_common; + int common_magic; /* XScale registers (CP15, DBG) */ - reg_cache_t *reg_cache; + struct reg_cache *reg_cache; /* current state of the debug handler */ - int handler_installed; - int handler_running; uint32_t handler_address; /* target-endian buffers with exception vectors */ @@ -119,28 +120,29 @@ typedef struct xscale_common_s uint8_t vector_catch; - xscale_trace_t trace; + struct xscale_trace trace; 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 * +target_to_xscale(struct target *target) +{ + return container_of(target->arch_info, struct xscale_common, + armv4_5_common); +} -typedef struct xscale_reg_s +struct xscale_reg { int dbg_handler_number; - target_t *target; -} xscale_reg_t; + struct target *target; +}; enum { @@ -170,10 +172,4 @@ enum #define ERROR_XSCALE_NO_TRACE_DATA (-1500) -/* This XScale "debug handler" is loaded into the processor's - * mini-ICache, which is 2K of code writable only via JTAG. - */ -extern const uint8_t xscale_debug_handler[]; -extern const uint32_t xscale_debug_handler_size; - #endif /* XSCALE_H */