X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Fmips32_pracc.c;h=604d34edbf2524d9183b69740fa6d85f00f1438e;hb=6eee0729d79eab496d1d4368a2bae7e4e2d19876;hp=3177e0f291959482e42d2a33e06f61c71cff5062;hpb=2d6829d6982fa485b8cabb3a91e41b9c50c7f3d1;p=openocd.git diff --git a/src/target/mips32_pracc.c b/src/target/mips32_pracc.c index 3177e0f291..604d34edbf 100644 --- a/src/target/mips32_pracc.c +++ b/src/target/mips32_pracc.c @@ -348,8 +348,8 @@ int mips32_pracc_read_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, int co param_in[0] = addr; param_in[1] = blocksize; - if ((retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, - sizeof(param_in)/sizeof(param_in[0]), param_in, blocksize, &buf[bytesread], 1)) != ERROR_OK) + if ((retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, + ARRAY_SIZE(param_in), param_in, blocksize, &buf[bytesread], 1)) != ERROR_OK) { return retval; } @@ -387,8 +387,8 @@ int mips32_pracc_read_u32(struct mips_ejtag *ejtag_info, uint32_t addr, uint32_t param_in[0] = addr; - if ((retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, - sizeof(param_in)/sizeof(param_in[0]), param_in, sizeof(uint32_t), buf, 1)) != ERROR_OK) + if ((retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, + ARRAY_SIZE(param_in), param_in, sizeof(uint32_t), buf, 1)) != ERROR_OK) { return retval; } @@ -440,7 +440,7 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co }; // /* TODO remove array */ - uint32_t param_out[count]; + uint32_t *param_out = malloc(count * sizeof(uint32_t)); int i; // int retval; @@ -459,8 +459,8 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co param_in[0] = addr; param_in[1] = blocksize; - mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ - sizeof(param_in)/sizeof(param_in[0]), param_in, count, param_out, 1); + mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ + ARRAY_SIZE(param_in), param_in, count, param_out, 1); // count -= blocksize; // addr += blocksize; @@ -472,6 +472,8 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co buf[i] = param_out[i]; } + free(param_out); + return ERROR_OK; } @@ -519,7 +521,7 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou }; // /* TODO remove array */ - uint32_t param_out[count]; + uint32_t *param_out = malloc(count * sizeof(uint32_t)); int i; // int retval; @@ -538,8 +540,8 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou param_in[0] = addr; param_in[1] = blocksize; - mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ - sizeof(param_in)/sizeof(param_in[0]), param_in, count, param_out, 1); + mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ + ARRAY_SIZE(param_in), param_in, count, param_out, 1); // count -= blocksize; // addr += blocksize; @@ -551,6 +553,8 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou buf[i] = param_out[i]; } + free(param_out); + return ERROR_OK; } @@ -609,14 +613,16 @@ int mips32_pracc_write_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, int c }; /* TODO remove array */ - uint32_t param_in[count + 2]; + uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t)); param_in[0] = addr; param_in[1] = addr + count * sizeof(uint32_t); //last address memcpy(¶m_in[2], buf, count * sizeof(uint32_t)); - mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ - sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1); + mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ + count + 2, param_in, 0, NULL, 1); + + free(param_in); return ERROR_OK; } @@ -648,8 +654,8 @@ int mips32_pracc_write_u32(struct mips_ejtag *ejtag_info, uint32_t addr, uint32_ param_in[0] = addr; param_in[1] = *buf; - mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ - sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1); + mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ + ARRAY_SIZE(param_in),param_in, 0, NULL, 1); return ERROR_OK; } @@ -698,7 +704,7 @@ int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int c }; /* TODO remove array */ - uint32_t param_in[count + 2]; + uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t)); int i; param_in[0] = addr; param_in[1] = count; @@ -708,8 +714,10 @@ int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int c param_in[i + 2] = buf[i]; } - mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ - sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1); + mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ + count + 2, param_in, 0, NULL, 1); + + free(param_in); return ERROR_OK; } @@ -758,7 +766,7 @@ int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int co }; /* TODO remove array */ - uint32_t param_in[count + 2]; + uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t)); int retval; int i; param_in[0] = addr; @@ -769,8 +777,10 @@ int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int co param_in[i + 2] = buf[i]; } - retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ - sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1); + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ + count +2, param_in, 0, NULL, 1); + + free(param_in); return retval; } @@ -841,7 +851,7 @@ int mips32_pracc_write_regs(struct mips_ejtag *ejtag_info, uint32_t *regs) int retval; - retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ 38, regs, 0, NULL, 1); return retval; @@ -918,7 +928,7 @@ int mips32_pracc_read_regs(struct mips_ejtag *ejtag_info, uint32_t *regs) int retval; - retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \ 0, NULL, 38, regs, 1); return retval;