arm_disassembler: fix typo 'ARM_UNKNOWN_INSTUCTION' to '.._INSTRUCTION'
[fw/openocd] / src / target / arm7_9_common.c
index 73e0a85b61d6445c2eec6c0d1bcdf404ba4e47e7..6a7bf9da58e62aea786c6e828a32e41930b05b37 100644 (file)
@@ -24,9 +24,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.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.           *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -103,7 +101,8 @@ static void arm7_9_assign_wp(struct arm7_9_common *arm7_9, struct breakpoint *br
                arm7_9->wp_available--;
        } else
                LOG_ERROR("BUG: no hardware comparator available");
-       LOG_DEBUG("BPID: %" PRId32 " (0x%08" PRIx32 ") using hw wp: %d",
+
+       LOG_DEBUG("BPID: %" PRId32 " (0x%08" TARGET_PRIxADDR ") using hw wp: %d",
                        breakpoint->unique_id,
                        breakpoint->address,
                        breakpoint->set);
@@ -189,7 +188,7 @@ static int arm7_9_set_breakpoint(struct target *target, struct breakpoint *break
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
        int retval = ERROR_OK;
 
-       LOG_DEBUG("BPID: %" PRId32 ", Address: 0x%08" PRIx32 ", Type: %d",
+       LOG_DEBUG("BPID: %" PRId32 ", Address: 0x%08" TARGET_PRIxADDR ", Type: %d",
                breakpoint->unique_id,
                breakpoint->address,
                breakpoint->type);
@@ -246,7 +245,7 @@ static int arm7_9_set_breakpoint(struct target *target, struct breakpoint *break
                        if (retval != ERROR_OK)
                                return retval;
                        if (verify != arm7_9->arm_bkpt) {
-                               LOG_ERROR("Unable to set 32 bit software breakpoint at address %08" PRIx32
+                               LOG_ERROR("Unable to set 32 bit software breakpoint at address %08" TARGET_PRIxADDR
                                                " - check that memory is read/writable", breakpoint->address);
                                return ERROR_OK;
                        }
@@ -266,7 +265,7 @@ static int arm7_9_set_breakpoint(struct target *target, struct breakpoint *break
                        if (retval != ERROR_OK)
                                return retval;
                        if (verify != arm7_9->thumb_bkpt) {
-                               LOG_ERROR("Unable to set thumb software breakpoint at address %08" PRIx32
+                               LOG_ERROR("Unable to set thumb software breakpoint at address %08" TARGET_PRIxADDR
                                                " - check that memory is read/writable", breakpoint->address);
                                return ERROR_OK;
                        }
@@ -301,7 +300,7 @@ static int arm7_9_unset_breakpoint(struct target *target, struct breakpoint *bre
        int retval = ERROR_OK;
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       LOG_DEBUG("BPID: %" PRId32 ", Address: 0x%08" PRIx32,
+       LOG_DEBUG("BPID: %" PRId32 ", Address: 0x%08" TARGET_PRIxADDR,
                breakpoint->unique_id,
                breakpoint->address);
 
@@ -350,12 +349,12 @@ static int arm7_9_unset_breakpoint(struct target *target, struct breakpoint *bre
                        if (retval != ERROR_OK)
                                return retval;
                        current_instr = target_buffer_get_u16(target, (uint8_t *)&current_instr);
-                       if (current_instr == arm7_9->thumb_bkpt)
+                       if (current_instr == arm7_9->thumb_bkpt) {
                                retval = target_write_memory(target,
                                                breakpoint->address, 2, 1, breakpoint->orig_instr);
                                if (retval != ERROR_OK)
                                        return retval;
-
+                       }
                }
 
                if (--arm7_9->sw_breakpoint_count == 0) {
@@ -636,8 +635,8 @@ int arm7_9_execute_sys_speed(struct target *target)
        if (retval != ERROR_OK)
                return retval;
 
-       long long then = timeval_ms();
-       int timeout;
+       int64_t then = timeval_ms();
+       bool timeout;
        while (!(timeout = ((timeval_ms()-then) > 1000))) {
                /* read debug status register */
                embeddedice_read_reg(dbg_stat);
@@ -1142,20 +1141,20 @@ int arm7_9_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;
 
        /* reset registers */
        for (i = 0; i <= 14; i++) {
                struct reg *r = arm_reg_current(arm, i);
 
                buf_set_u32(r->value, 0, 32, 0xffffffff);
-               r->dirty = 1;
-               r->valid = 1;
+               r->dirty = true;
+               r->valid = true;
        }
 
        retval = target_call_event_callbacks(target, TARGET_EVENT_HALTED);
@@ -1347,7 +1346,7 @@ static int arm7_9_debug_entry(struct target *target)
                buf_set_u32(r->value, 0, 32, context[i]);
                /* r0 and r15 (pc) have to be restored later */
                r->dirty = (i == 0) || (i == 15);
-               r->valid = 1;
+               r->valid = true;
        }
 
        LOG_DEBUG("entered debug state at PC 0x%" PRIx32 "", context[15]);
@@ -1360,8 +1359,8 @@ static int arm7_9_debug_entry(struct target *target)
                if (retval != ERROR_OK)
                        return retval;
                buf_set_u32(arm->spsr->value, 0, 32, spsr);
-               arm->spsr->dirty = 0;
-               arm->spsr->valid = 1;
+               arm->spsr->dirty = false;
+               arm->spsr->valid = true;
        }
 
        retval = jtag_execute_queue();
@@ -1412,13 +1411,13 @@ static int arm7_9_full_context(struct target *target)
                uint32_t mask = 0;
                uint32_t *reg_p[16];
                int j;
-               int valid = 1;
+               bool valid = true;
 
                /* check if there are invalid registers in the current mode
                 */
                for (j = 0; j <= 16; j++) {
-                       if (ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i), j).valid == 0)
-                               valid = 0;
+                       if (!ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i), j).valid)
+                               valid = false;
                }
 
                if (!valid) {
@@ -1432,8 +1431,8 @@ static int arm7_9_full_context(struct target *target)
                        arm7_9->write_xpsr_im8(target, tmp_cpsr & 0xff, 0, 0);
 
                        for (j = 0; j < 15; j++) {
-                               if (ARMV4_5_CORE_REG_MODE(arm->core_cache,
-                                               armv4_5_number_to_mode(i), j).valid == 0) {
+                               if (!ARMV4_5_CORE_REG_MODE(arm->core_cache,
+                                               armv4_5_number_to_mode(i), j).valid) {
                                        reg_p[j] = (uint32_t *)ARMV4_5_CORE_REG_MODE(
                                                        arm->core_cache,
                                                        armv4_5_number_to_mode(i),
@@ -1441,10 +1440,10 @@ static int arm7_9_full_context(struct target *target)
                                        mask |= 1 << j;
                                        ARMV4_5_CORE_REG_MODE(arm->core_cache,
                                                armv4_5_number_to_mode(i),
-                                               j).valid = 1;
+                                               j).valid = true;
                                        ARMV4_5_CORE_REG_MODE(arm->core_cache,
                                                armv4_5_number_to_mode(i),
-                                               j).dirty = 0;
+                                               j).dirty = false;
                                }
                        }
 
@@ -1453,15 +1452,15 @@ static int arm7_9_full_context(struct target *target)
                                arm7_9->read_core_regs(target, mask, reg_p);
 
                        /* check if the PSR has to be read */
-                       if (ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
-                                       16).valid == 0) {
+                       if (!ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
+                                       16).valid) {
                                arm7_9->read_xpsr(target,
                                        (uint32_t *)ARMV4_5_CORE_REG_MODE(arm->core_cache,
                                                armv4_5_number_to_mode(i), 16).value, 1);
                                ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
-                                       16).valid = 1;
+                                       16).valid = true;
                                ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i),
-                                       16).dirty = 0;
+                                       16).dirty = false;
                        }
                }
        }
@@ -1495,7 +1494,7 @@ static int arm7_9_restore_context(struct target *target)
        struct reg *reg;
        enum arm_mode current_mode = arm->core_mode;
        int i, j;
-       int dirty;
+       bool dirty;
        int mode_change;
 
        LOG_DEBUG("-");
@@ -1519,15 +1518,15 @@ static int arm7_9_restore_context(struct target *target)
        for (i = 0; i < 6; i++) {
                LOG_DEBUG("examining %s mode",
                        arm_mode_name(arm->core_mode));
-               dirty = 0;
+               dirty = false;
                mode_change = 0;
                /* check if there are dirty registers in the current mode
                */
                for (j = 0; j <= 16; j++) {
                        reg = &ARMV4_5_CORE_REG_MODE(arm->core_cache, armv4_5_number_to_mode(i), j);
-                       if (reg->dirty == 1) {
-                               if (reg->valid == 1) {
-                                       dirty = 1;
+                       if (reg->dirty) {
+                               if (reg->valid) {
+                                       dirty = true;
                                        LOG_DEBUG("examining dirty reg: %s", reg->name);
                                        struct arm_reg *reg_arch_info;
                                        reg_arch_info = reg->arch_info;
@@ -1568,12 +1567,12 @@ static int arm7_9_restore_context(struct target *target)
                                                armv4_5_number_to_mode(i),
                                                j);
 
-                               if (reg->dirty == 1) {
+                               if (reg->dirty) {
                                        regs[j] = buf_get_u32(reg->value, 0, 32);
                                        mask |= 1 << j;
                                        num_regs++;
-                                       reg->dirty = 0;
-                                       reg->valid = 1;
+                                       reg->dirty = false;
+                                       reg->valid = true;
                                        LOG_DEBUG("writing register %i mode %s "
                                                "with value 0x%8.8" PRIx32, j,
                                                arm_mode_name(arm->core_mode),
@@ -1615,15 +1614,15 @@ static int arm7_9_restore_context(struct target *target)
                arm7_9->write_xpsr(target,
                        buf_get_u32(arm->cpsr->value, 0, 32)
                        & ~0x20, 0);
-               arm->cpsr->dirty = 0;
-               arm->cpsr->valid = 1;
+               arm->cpsr->dirty = false;
+               arm->cpsr->valid = true;
        }
 
        /* restore PC */
        LOG_DEBUG("writing PC with value 0x%8.8" PRIx32,
                buf_get_u32(arm->pc->value, 0, 32));
        arm7_9->write_pc(target, buf_get_u32(arm->pc->value, 0, 32));
-       arm->pc->dirty = 0;
+       arm->pc->dirty = false;
 
        return ERROR_OK;
 }
@@ -1694,7 +1693,7 @@ static void arm7_9_enable_breakpoints(struct target *target)
 
 int arm7_9_resume(struct target *target,
        int current,
-       uint32_t address,
+       target_addr_t address,
        int handle_breakpoints,
        int debug_execution)
 {
@@ -1726,7 +1725,7 @@ int arm7_9_resume(struct target *target,
                breakpoint = breakpoint_find(target,
                                buf_get_u32(arm->pc->value, 0, 32));
                if (breakpoint != NULL) {
-                       LOG_DEBUG("unset breakpoint at 0x%8.8" PRIx32 " (id: %" PRId32,
+                       LOG_DEBUG("unset breakpoint at 0x%8.8" TARGET_PRIxADDR " (id: %" PRId32,
                                breakpoint->address,
                                breakpoint->unique_id);
                        retval = arm7_9_unset_breakpoint(target, breakpoint);
@@ -1785,7 +1784,7 @@ int arm7_9_resume(struct target *target,
                        LOG_DEBUG("new PC after step: 0x%8.8" PRIx32,
                                buf_get_u32(arm->pc->value, 0, 32));
 
-                       LOG_DEBUG("set breakpoint at 0x%8.8" PRIx32 "", breakpoint->address);
+                       LOG_DEBUG("set breakpoint at 0x%8.8" TARGET_PRIxADDR "", breakpoint->address);
                        retval = arm7_9_set_breakpoint(target, breakpoint);
                        if (retval != ERROR_OK)
                                return retval;
@@ -1896,7 +1895,7 @@ void arm7_9_disable_eice_step(struct target *target)
        embeddedice_store_reg(&arm7_9->eice_cache->reg_list[EICE_W1_CONTROL_VALUE]);
 }
 
-int arm7_9_step(struct target *target, int current, uint32_t address, int handle_breakpoints)
+int arm7_9_step(struct target *target, int current, target_addr_t address, int handle_breakpoints)
 {
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
        struct arm *arm = &arm7_9->arm;
@@ -2025,8 +2024,8 @@ static int arm7_9_read_core_reg(struct target *target, struct reg *r,
        if (retval != ERROR_OK)
                return retval;
 
-       r->valid = 1;
-       r->dirty = 0;
+       r->valid = true;
+       r->dirty = false;
        buf_set_u32(r->value, 0, 32, value);
 
        if ((mode != ARM_MODE_ANY) && (mode != arm->core_mode)
@@ -2082,8 +2081,8 @@ static int arm7_9_write_core_reg(struct target *target, struct reg *r,
                arm7_9->write_xpsr(target, t, spsr);
        }
 
-       r->valid = 1;
-       r->dirty = 0;
+       r->valid = true;
+       r->dirty = false;
 
        if ((mode != ARM_MODE_ANY) && (mode != arm->core_mode)
                        && (areg->mode != ARM_MODE_ANY)) {
@@ -2096,7 +2095,7 @@ static int arm7_9_write_core_reg(struct target *target, struct reg *r,
 }
 
 int arm7_9_read_memory(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t size,
        uint32_t count,
        uint8_t *buffer)
@@ -2111,7 +2110,7 @@ int arm7_9_read_memory(struct target *target,
        int retval;
        int last_reg = 0;
 
-       LOG_DEBUG("address: 0x%8.8" PRIx32 ", size: 0x%8.8" PRIx32 ", count: 0x%8.8" PRIx32 "",
+       LOG_DEBUG("address: 0x%8.8" TARGET_PRIxADDR ", size: 0x%8.8" PRIx32 ", count: 0x%8.8" PRIx32 "",
                address, size, count);
 
        if (target->state != TARGET_HALTED) {
@@ -2249,7 +2248,8 @@ int arm7_9_read_memory(struct target *target,
 
        if (((cpsr & 0x1f) == ARM_MODE_ABT) && (arm->core_mode != ARM_MODE_ABT)) {
                LOG_WARNING(
-                       "memory read caused data abort (address: 0x%8.8" PRIx32 ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
+                       "memory read caused data abort "
+                       "(address: 0x%8.8" TARGET_PRIxADDR ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
                        address,
                        size,
                        count);
@@ -2265,7 +2265,7 @@ int arm7_9_read_memory(struct target *target,
 }
 
 int arm7_9_write_memory(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t size,
        uint32_t count,
        const uint8_t *buffer)
@@ -2462,7 +2462,8 @@ int arm7_9_write_memory(struct target *target,
 
        if (((cpsr & 0x1f) == ARM_MODE_ABT) && (arm->core_mode != ARM_MODE_ABT)) {
                LOG_WARNING(
-                       "memory write caused data abort (address: 0x%8.8" PRIx32 ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
+                       "memory write caused data abort "
+                       "(address: 0x%8.8" TARGET_PRIxADDR ", size: 0x%" PRIx32 ", count: 0x%" PRIx32 ")",
                        address,
                        size,
                        count);
@@ -2478,7 +2479,7 @@ int arm7_9_write_memory(struct target *target,
 }
 
 int arm7_9_write_memory_opt(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t size,
        uint32_t count,
        const uint8_t *buffer)
@@ -2578,7 +2579,7 @@ static const uint32_t dcc_code[] = {
 };
 
 int arm7_9_bulk_write_memory(struct target *target,
-       uint32_t address,
+       target_addr_t address,
        uint32_t count,
        const uint8_t *buffer)
 {
@@ -2634,7 +2635,7 @@ int arm7_9_bulk_write_memory(struct target *target,
                uint32_t endaddress = buf_get_u32(reg_params[0].value, 0, 32);
                if (endaddress != (address + count*4)) {
                        LOG_ERROR(
-                               "DCC write failed, expected end address 0x%08" PRIx32 " got 0x%0" PRIx32 "",
+                               "DCC write failed, expected end address 0x%08" TARGET_PRIxADDR " got 0x%0" PRIx32 "",
                                (address + count*4),
                                endaddress);
                        retval = ERROR_FAIL;
@@ -2746,14 +2747,14 @@ COMMAND_HANDLER(handle_arm7_9_dbgrq_command)
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
        if (!is_arm7_9(arm7_9)) {
-               command_print(CMD_CTX, "current target isn't an ARM7/ARM9 target");
+               command_print(CMD, "current target isn't an ARM7/ARM9 target");
                return ERROR_TARGET_INVALID;
        }
 
        if (CMD_ARGC > 0)
                COMMAND_PARSE_ENABLE(CMD_ARGV[0], arm7_9->use_dbgrq);
 
-       command_print(CMD_CTX,
+       command_print(CMD,
                "use of EmbeddedICE dbgrq instead of breakpoint for target halt %s",
                (arm7_9->use_dbgrq) ? "enabled" : "disabled");
 
@@ -2766,14 +2767,14 @@ COMMAND_HANDLER(handle_arm7_9_fast_memory_access_command)
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
        if (!is_arm7_9(arm7_9)) {
-               command_print(CMD_CTX, "current target isn't an ARM7/ARM9 target");
+               command_print(CMD, "current target isn't an ARM7/ARM9 target");
                return ERROR_TARGET_INVALID;
        }
 
        if (CMD_ARGC > 0)
                COMMAND_PARSE_ENABLE(CMD_ARGV[0], arm7_9->fast_memory_access);
 
-       command_print(CMD_CTX,
+       command_print(CMD,
                "fast memory access is %s",
                (arm7_9->fast_memory_access) ? "enabled" : "disabled");
 
@@ -2786,14 +2787,14 @@ COMMAND_HANDLER(handle_arm7_9_dcc_downloads_command)
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
        if (!is_arm7_9(arm7_9)) {
-               command_print(CMD_CTX, "current target isn't an ARM7/ARM9 target");
+               command_print(CMD, "current target isn't an ARM7/ARM9 target");
                return ERROR_TARGET_INVALID;
        }
 
        if (CMD_ARGC > 0)
                COMMAND_PARSE_ENABLE(CMD_ARGV[0], arm7_9->dcc_downloads);
 
-       command_print(CMD_CTX,
+       command_print(CMD,
                "dcc downloads are %s",
                (arm7_9->dcc_downloads) ? "enabled" : "disabled");
 
@@ -2847,7 +2848,7 @@ int arm7_9_init_arch_info(struct target *target, struct arm7_9_common *arm7_9)
        arm7_9->dcc_downloads = false;
 
        arm->arch_info = arm7_9;
-       arm->core_type = ARM_MODE_ANY;
+       arm->core_type = ARM_CORE_TYPE_STD;
        arm->read_core_reg = arm7_9_read_core_reg;
        arm->write_core_reg = arm7_9_write_core_reg;
        arm->full_context = arm7_9_full_context;
@@ -2858,12 +2859,12 @@ int arm7_9_init_arch_info(struct target *target, struct arm7_9_common *arm7_9)
                return retval;
 
        return target_register_timer_callback(arm7_9_handle_target_request,
-               1, 1, target);
+               1, TARGET_TIMER_TYPE_PERIODIC, target);
 }
 
 static const struct command_registration arm7_9_any_command_handlers[] = {
        {
-               "dbgrq",
+               .name = "dbgrq",
                .handler = handle_arm7_9_dbgrq_command,
                .mode = COMMAND_ANY,
                .usage = "['enable'|'disable']",
@@ -2871,7 +2872,7 @@ static const struct command_registration arm7_9_any_command_handlers[] = {
                        "for target halt requests",
        },
        {
-               "fast_memory_access",
+               .name = "fast_memory_access",
                .handler = handle_arm7_9_fast_memory_access_command,
                .mode = COMMAND_ANY,
                .usage = "['enable'|'disable']",
@@ -2879,7 +2880,7 @@ static const struct command_registration arm7_9_any_command_handlers[] = {
                        "but potentially safer accesses",
        },
        {
-               "dcc_downloads",
+               .name = "dcc_downloads",
                .handler = handle_arm7_9_dcc_downloads_command,
                .mode = COMMAND_ANY,
                .usage = "['enable'|'disable']",