/* 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 hwordsread = 0;
uint32_t param_in[2];
- /*while (count > 0) */
- {
+ while (count > 0) {
blocksize = count;
if (count > 0x400)
blocksize = 0x400;
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);
-
return retval;
}
/* 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 bytesread = 0;
-/* while (count > 0) */
- {
+ while (count > 0) {
blocksize = count;
if (count > 0x400)
blocksize = 0x400;
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);
-
return retval;
}