]> git.gag.com Git - fw/openocd/blobdiff - src/target/arm7tdmi.c
reg_t -> struct reg
[fw/openocd] / src / target / arm7tdmi.c
index 27a8337fcfc79c3b647b5a5cd9220883aa7ee2a3..1beae89a711b1fb22349c0f23fde2d5d8d93d3b7 100644 (file)
 static int arm7tdmi_examine_debug_reason(target_t *target)
 {
        int retval = ERROR_OK;
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
        /* only check the debug reason if we don't know it already */
        if ((target->debug_reason != DBG_REASON_DBGRQ)
                        && (target->debug_reason != DBG_REASON_SINGLESTEP))
        {
-               scan_field_t fields[2];
+               struct scan_field fields[2];
                uint8_t databus[4];
                uint8_t breakpoint;
 
@@ -98,7 +96,7 @@ static int arm7tdmi_examine_debug_reason(target_t *target)
 
 static const int arm7tdmi_num_bits[] = {1, 32};
 
-static __inline int arm7tdmi_clock_out_inner(arm_jtag_t *jtag_info, uint32_t out, int breakpoint)
+static __inline int arm7tdmi_clock_out_inner(struct arm_jtag *jtag_info, uint32_t out, int breakpoint)
 {
        uint32_t values[2]={breakpoint, flip_u32(out, 32)};
 
@@ -118,7 +116,7 @@ static __inline int arm7tdmi_clock_out_inner(arm_jtag_t *jtag_info, uint32_t out
  *
  * FIXME remove the unused "deprecated" parameter
  */
-static __inline int arm7tdmi_clock_out(arm_jtag_t *jtag_info,
+static __inline int arm7tdmi_clock_out(struct arm_jtag *jtag_info,
                uint32_t out, uint32_t *deprecated, int breakpoint)
 {
        jtag_set_end_state(TAP_DRPAUSE);
@@ -129,10 +127,10 @@ static __inline int arm7tdmi_clock_out(arm_jtag_t *jtag_info,
 }
 
 /* clock the target, reading the databus */
-static int arm7tdmi_clock_data_in(arm_jtag_t *jtag_info, uint32_t *in)
+static int arm7tdmi_clock_data_in(struct arm_jtag *jtag_info, uint32_t *in)
 {
        int retval = ERROR_OK;
-       scan_field_t fields[2];
+       struct scan_field fields[2];
 
        jtag_set_end_state(TAP_DRPAUSE);
        if ((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
@@ -215,11 +213,11 @@ static int arm7endianness(jtag_callback_data_t arg,
  * the *in pointer points to a buffer where elements of 'size' bytes
  * are stored in big (be == 1) or little (be == 0) endianness
  */
-static int arm7tdmi_clock_data_in_endianness(arm_jtag_t *jtag_info,
+static int arm7tdmi_clock_data_in_endianness(struct arm_jtag *jtag_info,
                void *in, int size, int be)
 {
        int retval = ERROR_OK;
-       scan_field_t fields[2];
+       struct scan_field fields[2];
 
        jtag_set_end_state(TAP_DRPAUSE);
        if ((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
@@ -268,10 +266,8 @@ static int arm7tdmi_clock_data_in_endianness(arm_jtag_t *jtag_info,
 static void arm7tdmi_change_to_arm(target_t *target,
                uint32_t *r0, uint32_t *pc)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* save r0 before using it and put system in ARM state
         * to allow common handling of ARM and THUMB debugging */
@@ -327,10 +323,8 @@ static void arm7tdmi_read_core_regs(target_t *target,
                uint32_t mask, uint32_t* core_regs[16])
 {
        int i;
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* STMIA r0-15, [r0] at debug speed
         * register values will start to appear on 4th DCLK
@@ -354,10 +348,8 @@ static void arm7tdmi_read_core_regs_target_buffer(target_t *target,
                uint32_t mask, void* buffer, int size)
 {
        int i;
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
        int be = (target->endianness == TARGET_BIG_ENDIAN) ? 1 : 0;
        uint32_t *buf_u32 = buffer;
        uint16_t *buf_u16 = buffer;
@@ -396,10 +388,8 @@ static void arm7tdmi_read_core_regs_target_buffer(target_t *target,
 
 static void arm7tdmi_read_xpsr(target_t *target, uint32_t *xpsr, int spsr)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* MRS r0, cpsr */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_MRS(0, spsr & 1), NULL, 0);
@@ -416,10 +406,8 @@ static void arm7tdmi_read_xpsr(target_t *target, uint32_t *xpsr, int spsr)
 
 static void arm7tdmi_write_xpsr(target_t *target, uint32_t xpsr, int spsr)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        LOG_DEBUG("xpsr: %8.8" PRIx32 ", spsr: %i", xpsr, spsr);
 
@@ -448,10 +436,8 @@ static void arm7tdmi_write_xpsr(target_t *target, uint32_t xpsr, int spsr)
 static void arm7tdmi_write_xpsr_im8(target_t *target,
                uint8_t xpsr_im, int rot, int spsr)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        LOG_DEBUG("xpsr_im: %2.2x, rot: %i, spsr: %i", xpsr_im, rot, spsr);
 
@@ -469,10 +455,8 @@ static void arm7tdmi_write_core_regs(target_t *target,
                uint32_t mask, uint32_t core_regs[16])
 {
        int i;
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* LDMIA r0-15, [r0] at debug speed
        * register values will start to appear on 4th DCLK
@@ -495,10 +479,8 @@ static void arm7tdmi_write_core_regs(target_t *target,
 
 static void arm7tdmi_load_word_regs(target_t *target, uint32_t mask)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* put system-speed load-multiple into the pipeline */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 0);
@@ -508,10 +490,8 @@ static void arm7tdmi_load_word_regs(target_t *target, uint32_t mask)
 
 static void arm7tdmi_load_hword_reg(target_t *target, int num)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* put system-speed load half-word into the pipeline */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 0);
@@ -521,10 +501,8 @@ static void arm7tdmi_load_hword_reg(target_t *target, int num)
 
 static void arm7tdmi_load_byte_reg(target_t *target, int num)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* put system-speed load byte into the pipeline */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 0);
@@ -534,10 +512,8 @@ static void arm7tdmi_load_byte_reg(target_t *target, int num)
 
 static void arm7tdmi_store_word_regs(target_t *target, uint32_t mask)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* put system-speed store-multiple into the pipeline */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 0);
@@ -547,10 +523,8 @@ static void arm7tdmi_store_word_regs(target_t *target, uint32_t mask)
 
 static void arm7tdmi_store_hword_reg(target_t *target, int num)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* put system-speed store half-word into the pipeline */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 0);
@@ -560,10 +534,8 @@ static void arm7tdmi_store_hword_reg(target_t *target, int num)
 
 static void arm7tdmi_store_byte_reg(target_t *target, int num)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* put system-speed store byte into the pipeline */
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 0);
@@ -573,10 +545,8 @@ static void arm7tdmi_store_byte_reg(target_t *target, int num)
 
 static void arm7tdmi_write_pc(target_t *target, uint32_t pc)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        /* LDMIA r0-15, [r0] at debug speed
         * register values will start to appear on 4th DCLK
@@ -600,10 +570,8 @@ static void arm7tdmi_write_pc(target_t *target, uint32_t pc)
 
 static void arm7tdmi_branch_resume(target_t *target)
 {
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
 
        arm7tdmi_clock_out(jtag_info, ARMV4_5_NOP, NULL, 1);
        arm7tdmi_clock_out_inner(jtag_info, ARMV4_5_B(0xfffffa, 0), 0);
@@ -611,13 +579,12 @@ static void arm7tdmi_branch_resume(target_t *target)
 
 static void arm7tdmi_branch_resume_thumb(target_t *target)
 {
-       LOG_DEBUG("-");
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
+       struct armv4_5_common_s *armv4_5 = &arm7_9->armv4_5_common;
+       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
+       struct reg *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT];
 
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
-       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
-       reg_t *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT];
+       LOG_DEBUG("-");
 
        /* LDMIA r0, [r0] at debug speed
         * register values will start to appear on 4th DCLK
@@ -672,9 +639,8 @@ static void arm7tdmi_branch_resume_thumb(target_t *target)
 
 static void arm7tdmi_build_reg_cache(target_t *target)
 {
-       reg_cache_t **cache_p = register_get_last_cache_p(&target->reg_cache);
-       /* get pointers to arch-specific information */
-       armv4_5_common_t *armv4_5 = target->arch_info;
+       struct reg_cache **cache_p = register_get_last_cache_p(&target->reg_cache);
+       struct armv4_5_common_s *armv4_5 = target_to_armv4_5(target);
 
        (*cache_p) = armv4_5_build_reg_cache(target, armv4_5);
        armv4_5->core_cache = (*cache_p);
@@ -682,25 +648,27 @@ static void arm7tdmi_build_reg_cache(target_t *target)
 
 int arm7tdmi_examine(struct target_s *target)
 {
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
        int retval;
-       armv4_5_common_t *armv4_5 = target->arch_info;
-       arm7_9_common_t *arm7_9 = armv4_5->arch_info;
+
+
        if (!target_was_examined(target))
        {
                /* get pointers to arch-specific information */
-               reg_cache_t **cache_p = register_get_last_cache_p(&target->reg_cache);
-               reg_cache_t *t = embeddedice_build_reg_cache(target, arm7_9);
+               struct reg_cache **cache_p = register_get_last_cache_p(&target->reg_cache);
+               struct reg_cache *t = embeddedice_build_reg_cache(target, arm7_9);
                if (t == NULL)
                        return ERROR_FAIL;
 
                (*cache_p) = t;
                arm7_9->eice_cache = (*cache_p);
 
-               if (arm7_9->etm_ctx)
+               if (arm7_9->armv4_5_common.etm)
                {
-                       arm_jtag_t *jtag_info = &arm7_9->jtag_info;
-                       (*cache_p)->next = etm_build_reg_cache(target, jtag_info, arm7_9->etm_ctx);
-                       arm7_9->etm_ctx->reg_cache = (*cache_p)->next;
+                       struct arm_jtag *jtag_info = &arm7_9->jtag_info;
+                       (*cache_p)->next = etm_build_reg_cache(target,
+                                       jtag_info, arm7_9->armv4_5_common.etm);
+                       arm7_9->armv4_5_common.etm->reg_cache = (*cache_p)->next;
                }
                target_set_examined(target);
        }
@@ -708,7 +676,7 @@ int arm7tdmi_examine(struct target_s *target)
                return retval;
        if ((retval = arm7_9_setup(target)) != ERROR_OK)
                return retval;
-       if (arm7_9->etm_ctx)
+       if (arm7_9->armv4_5_common.etm)
        {
                if ((retval = etm_setup(target)) != ERROR_OK)
                        return retval;
@@ -723,13 +691,9 @@ int arm7tdmi_init_target(struct command_context_s *cmd_ctx, struct target_s *tar
        return ERROR_OK;
 }
 
-int arm7tdmi_init_arch_info(target_t *target, arm7tdmi_common_t *arm7tdmi, jtag_tap_t *tap)
+int arm7tdmi_init_arch_info(target_t *target, struct arm7tdmi_common *arm7tdmi, struct jtag_tap *tap)
 {
-       armv4_5_common_t *armv4_5;
-       arm7_9_common_t *arm7_9;
-
-       arm7_9 = &arm7tdmi->arm7_9_common;
-       armv4_5 = &arm7_9->armv4_5_common;
+       struct arm7_9_common *arm7_9 = &arm7tdmi->arm7_9_common;
 
        /* prepare JTAG information for the new target */
        arm7_9->jtag_info.tap = tap;
@@ -771,10 +735,6 @@ int arm7tdmi_init_arch_info(target_t *target, arm7tdmi_common_t *arm7tdmi, jtag_
        arm7_9->thumb_bkpt = 0xdeee;
 
        arm7_9->dbgreq_adjust_pc = 2;
-       arm7_9->arch_info = arm7tdmi;
-
-       arm7tdmi->arch_info = NULL;
-       arm7tdmi->common_magic = ARM7TDMI_COMMON_MAGIC;
 
        arm7_9_init_arch_info(target, arm7_9);
 
@@ -783,9 +743,9 @@ int arm7tdmi_init_arch_info(target_t *target, arm7tdmi_common_t *arm7tdmi, jtag_
 
 static int arm7tdmi_target_create(struct target_s *target, Jim_Interp *interp)
 {
-       arm7tdmi_common_t *arm7tdmi;
+       struct arm7tdmi_common *arm7tdmi;
 
-       arm7tdmi = calloc(1,sizeof(arm7tdmi_common_t));
+       arm7tdmi = calloc(1,sizeof(struct arm7tdmi_common));
        arm7tdmi_init_arch_info(target, arm7tdmi, target->tap);
        arm7tdmi->arm7_9_common.armv4_5_common.is_armv4 = true;
 
@@ -793,7 +753,7 @@ static int arm7tdmi_target_create(struct target_s *target, Jim_Interp *interp)
 }
 
 /** Holds methods for ARM7TDMI targets. */
-target_type_t arm7tdmi_target =
+struct target_type arm7tdmi_target =
 {
        .name = "arm7tdmi",