target: Rename 'linked_BRP' to 'linked_brp'
[fw/openocd] / src / target / nds32.c
index 4115ea4f24f7553041859e7c56a63403efa8934f..cc6e2da4416bd1968556bc53d1868d3d18b1d237 100644 (file)
@@ -1462,8 +1462,7 @@ int nds32_add_software_breakpoint(struct target *target,
                break_insn = NDS32_BREAK_32;
        }
 
-       if (breakpoint->orig_instr != NULL)
-               free(breakpoint->orig_instr);
+       free(breakpoint->orig_instr);
 
        breakpoint->orig_instr = malloc(breakpoint->length);
        memcpy(breakpoint->orig_instr, &data, breakpoint->length);
@@ -1661,7 +1660,7 @@ int nds32_init_arch_info(struct target *target, struct nds32 *nds32)
        nds32->syscall_break.orig_instr = NULL;
        nds32->syscall_break.next = NULL;
        nds32->syscall_break.unique_id = 0x515CAll + target->target_number;
-       nds32->syscall_break.linked_BRP = 0;
+       nds32->syscall_break.linked_brp = 0;
 
        nds32_reg_init();
 
@@ -1711,8 +1710,8 @@ int nds32_cache_sync(struct target *target, target_addr_t address, uint32_t leng
                /* (address + length - 1) / dcache_line_size */
                end_line = (address + length - 1) >> (dcache->line_size + 2);
 
-               for (cur_address = address, cur_line = start_line ;
-                               cur_line <= end_line ;
+               for (cur_address = address, cur_line = start_line;
+                               cur_line <= end_line;
                                cur_address += dcache_line_size, cur_line++) {
                        /* D$ write back */
                        result = aice_cache_ctl(aice, AICE_CACHE_CTL_L1D_VA_WB, cur_address);
@@ -1732,8 +1731,8 @@ int nds32_cache_sync(struct target *target, target_addr_t address, uint32_t leng
                /* (address + length - 1) / icache_line_size */
                end_line = (address + length - 1) >> (icache->line_size + 2);
 
-               for (cur_address = address, cur_line = start_line ;
-                               cur_line <= end_line ;
+               for (cur_address = address, cur_line = start_line;
+                               cur_line <= end_line;
                                cur_address += icache_line_size, cur_line++) {
                        /* Because PSW.IT is turned off under debug exception, address MUST
                         * be physical address.  L1I_VA_INVALIDATE uses PSW.IT to decide
@@ -2334,10 +2333,8 @@ int nds32_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fil
        LOG_DEBUG("hit syscall ID: 0x%" PRIx32, syscall_id);
 
        /* free previous identifier storage */
-       if (NULL != fileio_info->identifier) {
-               free(fileio_info->identifier);
-               fileio_info->identifier = NULL;
-       }
+       free(fileio_info->identifier);
+       fileio_info->identifier = NULL;
 
        uint32_t reg_r0, reg_r1, reg_r2;
        nds32_get_mapped_reg(nds32, R0, &reg_r0);
@@ -2361,7 +2358,7 @@ int nds32_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fil
                                fileio_info->param_4 = reg_r2;
 
                                target->type->read_buffer(target, reg_r0, 256, filename);
-                               fileio_info->param_2 = strlen((char *)filename) + 1;
+                               fileio_info->param_2 = strlen((char *)filename);
                        }
                        break;
                case NDS32_SYSCALL_CLOSE:
@@ -2399,7 +2396,7 @@ int nds32_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fil
                                /* reserve fileio_info->param_2 for length of path */
 
                                target->type->read_buffer(target, reg_r0, 256, filename);
-                               fileio_info->param_2 = strlen((char *)filename) + 1;
+                               fileio_info->param_2 = strlen((char *)filename);
                        }
                        break;
                case NDS32_SYSCALL_RENAME:
@@ -2413,10 +2410,10 @@ int nds32_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fil
                                /* reserve fileio_info->param_4 for length of new path */
 
                                target->type->read_buffer(target, reg_r0, 256, filename);
-                               fileio_info->param_2 = strlen((char *)filename) + 1;
+                               fileio_info->param_2 = strlen((char *)filename);
 
                                target->type->read_buffer(target, reg_r1, 256, filename);
-                               fileio_info->param_4 = strlen((char *)filename) + 1;
+                               fileio_info->param_4 = strlen((char *)filename);
                        }
                        break;
                case NDS32_SYSCALL_FSTAT:
@@ -2458,7 +2455,7 @@ int nds32_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fil
                                /* reserve fileio_info->param_2 for length of old path */
 
                                target->type->read_buffer(target, reg_r0, 256, command);
-                               fileio_info->param_2 = strlen((char *)command) + 1;
+                               fileio_info->param_2 = strlen((char *)command);
                        }
                        break;
                case NDS32_SYSCALL_ERRNO:
@@ -2499,6 +2496,12 @@ int nds32_profiling(struct target *target, uint32_t *samples,
        struct aice_port_s *aice = target_to_aice(target);
        struct nds32 *nds32 = target_to_nds32(target);
 
+       /* REVISIT: can nds32 profile without halting? */
+       if (target->state != TARGET_HALTED) {
+               LOG_WARNING("target %s is not halted (profiling)", target->cmd_name);
+               return ERROR_TARGET_NOT_HALTED;
+       }
+
        if (max_num_samples < iteration)
                iteration = max_num_samples;