]> git.sur5r.net Git - openocd/commitdiff
Michael Bruck <mbruck@digenius.de> ARM11 cleanup stale dependencies with generic...
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 18 May 2009 07:02:12 +0000 (07:02 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 18 May 2009 07:02:12 +0000 (07:02 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1807 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/target/arm11.c
src/target/arm11.h
src/target/arm11_dbgtap.c

index 18c3bd5c459bb72ed38fa8c4e5cb0c5029664056..45deb60c5ec2d5a99e636249ec87061b09c97df2 100644 (file)
@@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2008 digenius technology GmbH.                          *
+ *   Michael Bruck                                                         *
  *                                                                         *
  *   Copyright (C) 2008 Oyvind Harboe oyvind.harboe@zylin.com              *
  *                                                                         *
@@ -336,7 +337,9 @@ int arm11_check_init(arm11_common_t * arm11, u32 * dscr)
                if (*dscr & ARM11_DSCR_CORE_HALTED)
                {
                        /** \todo TODO: this needs further scrutiny because
-                         * arm11_on_enter_debug_state() never gets properly called
+                         * arm11_on_enter_debug_state() never gets properly called.
+                         * As a result we don't read the actual register states from
+                         * the target.
                          */
 
                        arm11->target->state    = TARGET_HALTED;
@@ -389,8 +392,8 @@ static int arm11_on_enter_debug_state(arm11_common_t * arm11)
                scan_field_t    chain5_fields[3];
 
                arm11_setup_field(arm11, 32, NULL, &R(WDTR),    chain5_fields + 0);
-               arm11_setup_field(arm11,  1, NULL, NULL,        chain5_fields + 1);
-               arm11_setup_field(arm11,  1, NULL, NULL,        chain5_fields + 2);
+               arm11_setup_field(arm11,  1, NULL, NULL,                chain5_fields + 1);
+               arm11_setup_field(arm11,  1, NULL, NULL,                chain5_fields + 2);
 
                arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
        }
@@ -679,7 +682,7 @@ int arm11_poll(struct target_s *target)
                        enum target_state old_state = target->state;
 
                        LOG_DEBUG("enter TARGET_HALTED");
-                       target->state           = TARGET_HALTED;
+                       target->state                   = TARGET_HALTED;
                        target->debug_reason    = arm11_get_DSCR_debug_reason(dscr);
                        arm11_on_enter_debug_state(arm11);
 
@@ -692,7 +695,7 @@ int arm11_poll(struct target_s *target)
                if (target->state != TARGET_RUNNING && target->state != TARGET_DEBUG_RUNNING)
                {
                        LOG_DEBUG("enter TARGET_RUNNING");
-                       target->state           = TARGET_RUNNING;
+                       target->state                   = TARGET_RUNNING;
                        target->debug_reason    = DBG_REASON_NOTHALTED;
                }
        }
@@ -1369,7 +1372,6 @@ int arm11_run_algorithm(struct target_s *target, int num_mem_params, mem_param_t
                        int timeout_ms, void *arch_info)
 {
                arm11_common_t *arm11 = target->arch_info;
-       armv4_5_algorithm_t *arm11_algorithm_info = arch_info;
 //     enum armv4_5_state core_state = arm11->core_state;
 //     enum armv4_5_mode core_mode = arm11->core_mode;
        u32 context[16];
@@ -1378,11 +1380,6 @@ int arm11_run_algorithm(struct target_s *target, int num_mem_params, mem_param_t
        int retval = ERROR_OK;
                LOG_DEBUG("Running algorithm");
 
-       if (arm11_algorithm_info->common_magic != ARMV4_5_COMMON_MAGIC)
-       {
-               LOG_ERROR("current target isn't an ARMV4/5 target");
-               return ERROR_TARGET_INVALID;
-       }
 
        if (target->state != TARGET_HALTED)
        {
@@ -1441,6 +1438,12 @@ int arm11_run_algorithm(struct target_s *target, int num_mem_params, mem_param_t
                exit(-1);
        }
 */
+
+
+/* arm11 at this point only supports ARM not THUMB mode
+   however if this test needs to be reactivated the current state can be read back
+   from CPSR */
+#if 0
        if (arm11_algorithm_info->core_mode != ARMV4_5_MODE_ANY)
        {
                LOG_DEBUG("setting core_mode: 0x%2.2x", arm11_algorithm_info->core_mode);
@@ -1448,6 +1451,7 @@ int arm11_run_algorithm(struct target_s *target, int num_mem_params, mem_param_t
                arm11->reg_list[ARM11_RC_CPSR].dirty = 1;
                arm11->reg_list[ARM11_RC_CPSR].valid = 1;
        }
+#endif
 
        if ((retval = breakpoint_add(target, exit_point, exit_breakpoint_size, BKPT_HARD)) != ERROR_OK)
        {
@@ -1535,12 +1539,6 @@ int arm11_target_create(struct target_s *target, Jim_Interp *interp)
 
        arm11->target = target;
 
-       /* prepare JTAG information for the new target */
-       arm11->jtag_info.tap    = target->tap;
-       arm11->jtag_info.scann_size     = 5;
-
-       CHECK_RETVAL(arm_jtag_setup_connection(&arm11->jtag_info));
-
        if (target->tap==NULL)
                return ERROR_FAIL;
 
@@ -1956,7 +1954,7 @@ int arm11_register_commands(struct command_context_s *cmd_ctx)
 
                RC_FINAL_BOOL(  "error_fatal",                  "Terminate program if transfer error was found (default: enabled)",
                                                memwrite_error_fatal)
-       )
+       ) /* memwrite */
 
        RC_FINAL_BOOL(          "no_increment",                 "Don't increment address on multi-read/-write (default: disabled)",
                                                memrw_no_increment)
@@ -1972,7 +1970,7 @@ int arm11_register_commands(struct command_context_s *cmd_ctx)
 
        RC_FINAL(                       "mcr",                                  "Write Coprocessor register",
                                                arm11_handle_mcr)
-       )
+       ) /* arm11 */
 
        return ERROR_OK;
 }
index 4f75a62e6d629bd51ead53a1fd50543c64334d60..53b2fe6b1bb7b8b8ac8fcd77eae758b6a89b225d 100644 (file)
@@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2008 digenius technology GmbH.                          *
+ *   Michael Bruck                                                         *
  *                                                                         *
  *   Copyright (C) 2008 Georg Acher <acher@in.tum.de>                      *
  *                                                                         *
@@ -22,7 +23,9 @@
 #ifndef ARM11_H
 #define ARM11_H
 
-#include "embeddedice.h"
+#include "target.h"
+#include "register.h"
+#include "jtag.h"
 
 #define asizeof(x)     (sizeof(x) / sizeof((x)[0]))
 
@@ -78,8 +81,6 @@ typedef struct arm11_common_s
 {
        target_t *      target;         /**< Reference back to the owner */
 
-       arm_jtag_t      jtag_info;      /**< Handler to access assigned JTAG device */
-
        /** \name Processor type detection */
        /*@{*/
 
index 0a86bc083764cbb08fc1122514e6f2b015b62d65..3a5c1dda7f1567baa459a20e6fc7e39f0f814965 100644 (file)
@@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2008 digenius technology GmbH.                          *
+ *   Michael Bruck                                                         *
  *                                                                         *
  *   Copyright (C) 2008 Oyvind Harboe oyvind.harboe@zylin.com              *
  *                                                                         *
@@ -81,7 +82,7 @@ int arm11_add_dr_scan_vc(int num_fields, scan_field_t *fields, tap_state_t state
  */
 void arm11_setup_field(arm11_common_t * arm11, int num_bits, void * out_data, void * in_data, scan_field_t * field)
 {
-       field->tap                      = arm11->jtag_info.tap;
+       field->tap                      = arm11->target->tap;
        field->num_bits                 = num_bits;
        field->out_value                = out_data;
        field->in_value                 = in_data;
@@ -99,7 +100,7 @@ void arm11_setup_field(arm11_common_t * arm11, int num_bits, void * out_data, vo
 void arm11_add_IR(arm11_common_t * arm11, u8 instr, tap_state_t state)
 {
        jtag_tap_t *tap;
-       tap = arm11->jtag_info.tap;
+       tap = arm11->target->tap;
 
        if (buf_get_u32(tap->cur_instr, 0, 5) == instr)
        {
@@ -211,7 +212,8 @@ void arm11_add_debug_INST(arm11_common_t * arm11, u32 inst, u8 * flag, tap_state
  * same as CP14 c1
  *
  * \param arm11                Target state variable.
- * \return                     DSCR content
+ * \param value                DSCR content
+ * \return                     Error status
  *
  * \remarks                    This is a stand-alone function that executes the JTAG command queue.
  */