projects
/
fw
/
openocd
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
target.c, jim_target_md using command_print_sameline
[fw/openocd]
/
src
/
target
/
mips32_pracc.c
diff --git
a/src/target/mips32_pracc.c
b/src/target/mips32_pracc.c
index 0cada4fa4962545f2f9c7b6c10594f712c809a0c..d657b987a93b5e7531609b17023b63bfd6f6d548 100644
(file)
--- a/
src/target/mips32_pracc.c
+++ b/
src/target/mips32_pracc.c
@@
-442,14
+442,17
@@
static int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr,
/* TODO remove array */
uint32_t *param_out = malloc(count * sizeof(uint32_t));
/* TODO remove array */
uint32_t *param_out = malloc(count * sizeof(uint32_t));
- int i;
+ if (param_out == NULL) {
+ LOG_ERROR("Out of memory");
+ return ERROR_FAIL;
+ }
int retval = ERROR_OK;
int blocksize;
int retval = ERROR_OK;
int blocksize;
+ int hwordsread = 0;
uint32_t param_in[2];
uint32_t param_in[2];
- /*while (count > 0) */
- {
+ while (count > 0) {
blocksize = count;
if (count > 0x400)
blocksize = 0x400;
blocksize = count;
if (count > 0x400)
blocksize = 0x400;
@@
-458,17
+461,21
@@
static int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr,
param_in[1] = blocksize;
retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
param_in[1] = blocksize;
retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
- ARRAY_SIZE(param_in), param_in, count, param_out, 1);
+ ARRAY_SIZE(param_in), param_in, blocksize, ¶m_out[hwordsread], 1);
+
+ if (retval != ERROR_OK)
+ return retval;
-/* count -= blocksize; */
-/* addr += blocksize; */
+ count -= blocksize;
+ addr += blocksize*sizeof(uint16_t);
+ hwordsread += blocksize;
}
}
- for (i = 0; i < count; i++)
+ int i;
+ for (i = 0; i < hwordsread; i++)
buf[i] = param_out[i];
free(param_out);
buf[i] = param_out[i];
free(param_out);
-
return retval;
}
return retval;
}
@@
-513,14
+520,17
@@
static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr,
/* TODO remove array */
uint32_t *param_out = malloc(count * sizeof(uint32_t));
/* TODO remove array */
uint32_t *param_out = malloc(count * sizeof(uint32_t));
- int i;
+ if (param_out == NULL) {
+ LOG_ERROR("Out of memory");
+ return ERROR_FAIL;
+ }
int retval = ERROR_OK;
int blocksize;
uint32_t param_in[2];
int retval = ERROR_OK;
int blocksize;
uint32_t param_in[2];
+ int bytesread = 0;
-/* while (count > 0) */
- {
+ while (count > 0) {
blocksize = count;
if (count > 0x400)
blocksize = 0x400;
blocksize = count;
if (count > 0x400)
blocksize = 0x400;
@@
-529,17
+539,20
@@
static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr,
param_in[1] = blocksize;
retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
param_in[1] = blocksize;
retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
- ARRAY_SIZE(param_in), param_in, count,
param_out
, 1);
+ ARRAY_SIZE(param_in), param_in, count,
¶m_out[bytesread]
, 1);
-/* count -= blocksize; */
-/* addr += blocksize; */
- }
+ if (retval != ERROR_OK)
+ return retval;
- for (i = 0; i < count; i++)
+ count -= blocksize;
+ addr += blocksize;
+ bytesread += blocksize;
+ }
+ int i;
+ for (i = 0; i < bytesread; i++)
buf[i] = param_out[i];
free(param_out);
buf[i] = param_out[i];
free(param_out);
-
return retval;
}
return retval;
}