cortex_m: add detection of Cortex M35P and M55
[fw/openocd] / src / target / arm720t.c
index a061a115b3e663e08c4227e383941aaee3a5a529..e04cab2e7972ba24aa54d8137061b707fe7e7ce4 100644 (file)
@@ -16,9 +16,7 @@
  *   GNU General Public License for more details.                          *
  *                                                                         *
  *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -58,7 +56,7 @@ static int arm720t_scan_cp15(struct target *target,
        retval = arm_jtag_scann(jtag_info, 0xf, TAP_DRPAUSE);
        if (retval != ERROR_OK)
                return retval;
-       retval = arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL, TAP_DRPAUSE);
+       retval = arm_jtag_set_instr(jtag_info->tap, jtag_info->intest_instr, NULL, TAP_DRPAUSE);
        if (retval != ERROR_OK)
                return retval;
 
@@ -235,11 +233,11 @@ static void arm720t_pre_restore_context(struct target *target)
        arm720t_write_cp15(target, 0xee060f10, arm720t->far_reg);
 }
 
-static int arm720t_verify_pointer(struct command_context *cmd_ctx,
+static int arm720t_verify_pointer(struct command_invocation *cmd,
                struct arm720t_common *arm720t)
 {
        if (arm720t->common_magic != ARM720T_COMMON_MAGIC) {
-               command_print(cmd_ctx, "target is not an ARM720");
+               command_print(cmd, "target is not an ARM720");
                return ERROR_TARGET_INVALID;
        }
        return ERROR_OK;
@@ -273,7 +271,7 @@ static int arm720_mmu(struct target *target, int *enabled)
 }
 
 static int arm720_virt2phys(struct target *target,
-               uint32_t virtual, uint32_t *physical)
+               target_addr_t virtual, target_addr_t *physical)
 {
        uint32_t cb;
        struct arm720t_common *arm720t = target_to_arm720(target);
@@ -288,7 +286,7 @@ static int arm720_virt2phys(struct target *target,
 }
 
 static int arm720t_read_memory(struct target *target,
-               uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer)
+               target_addr_t address, uint32_t size, uint32_t count, uint8_t *buffer)
 {
        int retval;
        struct arm720t_common *arm720t = target_to_arm720(target);
@@ -311,7 +309,7 @@ static int arm720t_read_memory(struct target *target,
 }
 
 static int arm720t_read_phys_memory(struct target *target,
-               uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer)
+               target_addr_t address, uint32_t size, uint32_t count, uint8_t *buffer)
 {
        struct arm720t_common *arm720t = target_to_arm720(target);
 
@@ -319,7 +317,7 @@ static int arm720t_read_phys_memory(struct target *target,
 }
 
 static int arm720t_write_phys_memory(struct target *target,
-               uint32_t address, uint32_t size, uint32_t count, const uint8_t *buffer)
+               target_addr_t address, uint32_t size, uint32_t count, const uint8_t *buffer)
 {
        struct arm720t_common *arm720t = target_to_arm720(target);
 
@@ -338,7 +336,7 @@ static int arm720t_soft_reset_halt(struct target *target)
        if (retval != ERROR_OK)
                return retval;
 
-       long long then = timeval_ms();
+       int64_t then = timeval_ms();
        int timeout;
        while (!(timeout = ((timeval_ms()-then) > 1000))) {
                if (buf_get_u32(dbg_stat->value, EICE_DBG_STATUS_DBGACK, 1) == 0) {
@@ -367,12 +365,12 @@ static int arm720t_soft_reset_halt(struct target *target)
        cpsr &= ~0xff;
        cpsr |= 0xd3;
        arm_set_cpsr(arm, cpsr);
-       arm->cpsr->dirty = 1;
+       arm->cpsr->dirty = true;
 
        /* start fetching from 0x0 */
        buf_set_u32(arm->pc->value, 0, 32, 0x0);
-       arm->pc->dirty = 1;
-       arm->pc->valid = 1;
+       arm->pc->dirty = true;
+       arm->pc->valid = true;
 
        retval = arm720t_disable_mmu_caches(target, 1, 1, 1);
        if (retval != ERROR_OK)
@@ -393,6 +391,11 @@ static int arm720t_init_target(struct command_context *cmd_ctx, struct target *t
        return arm7tdmi_init_target(cmd_ctx, target);
 }
 
+static void arm720t_deinit_target(struct target *target)
+{
+       arm7tdmi_deinit_target(target);
+}
+
 /* FIXME remove forward decls */
 static int arm720t_mrc(struct target *target, int cpnum,
                uint32_t op1, uint32_t op2,
@@ -444,12 +447,12 @@ COMMAND_HANDLER(arm720t_handle_cp15_command)
        struct target *target = get_current_target(CMD_CTX);
        struct arm720t_common *arm720t = target_to_arm720(target);
 
-       retval = arm720t_verify_pointer(CMD_CTX, arm720t);
+       retval = arm720t_verify_pointer(CMD, arm720t);
        if (retval != ERROR_OK)
                return retval;
 
        if (target->state != TARGET_HALTED) {
-               command_print(CMD_CTX, "target must be stopped for \"%s\" command", CMD_NAME);
+               command_print(CMD, "target must be stopped for \"%s\" command", CMD_NAME);
                return ERROR_OK;
        }
 
@@ -462,7 +465,7 @@ COMMAND_HANDLER(arm720t_handle_cp15_command)
                        uint32_t value;
                        retval = arm720t_read_cp15(target, opcode, &value);
                        if (retval != ERROR_OK) {
-                               command_print(CMD_CTX, "couldn't access cp15 with opcode 0x%8.8" PRIx32 "", opcode);
+                               command_print(CMD, "couldn't access cp15 with opcode 0x%8.8" PRIx32 "", opcode);
                                return ERROR_OK;
                        }
 
@@ -470,17 +473,17 @@ COMMAND_HANDLER(arm720t_handle_cp15_command)
                        if (retval != ERROR_OK)
                                return retval;
 
-                       command_print(CMD_CTX, "0x%8.8" PRIx32 ": 0x%8.8" PRIx32 "", opcode, value);
+                       command_print(CMD, "0x%8.8" PRIx32 ": 0x%8.8" PRIx32 "", opcode, value);
                } else if (CMD_ARGC == 2) {
                        uint32_t value;
                        COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], value);
 
                        retval = arm720t_write_cp15(target, opcode, value);
                        if (retval != ERROR_OK) {
-                               command_print(CMD_CTX, "couldn't access cp15 with opcode 0x%8.8" PRIx32 "", opcode);
+                               command_print(CMD, "couldn't access cp15 with opcode 0x%8.8" PRIx32 "", opcode);
                                return ERROR_OK;
                        }
-                       command_print(CMD_CTX, "0x%8.8" PRIx32 ": 0x%8.8" PRIx32 "", opcode, value);
+                       command_print(CMD, "0x%8.8" PRIx32 ": 0x%8.8" PRIx32 "", opcode, value);
                }
        }
 
@@ -562,17 +565,16 @@ struct target_type arm720t_target = {
        .deassert_reset = arm7_9_deassert_reset,
        .soft_reset_halt = arm720t_soft_reset_halt,
 
+       .get_gdb_arch = arm_get_gdb_arch,
        .get_gdb_reg_list = arm_get_gdb_reg_list,
 
        .read_memory = arm720t_read_memory,
-       .write_memory = arm7_9_write_memory,
+       .write_memory = arm7_9_write_memory_opt,
        .read_phys_memory = arm720t_read_phys_memory,
        .write_phys_memory = arm720t_write_phys_memory,
        .mmu = arm720_mmu,
        .virt2phys = arm720_virt2phys,
 
-       .bulk_write_memory = arm7_9_bulk_write_memory,
-
        .checksum_memory = arm_checksum_memory,
        .blank_check_memory = arm_blank_check_memory,
 
@@ -586,6 +588,7 @@ struct target_type arm720t_target = {
        .commands = arm720t_command_handlers,
        .target_create = arm720t_target_create,
        .init_target = arm720t_init_target,
+       .deinit_target = arm720t_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
 };