mips: remove dynamic arrays - reduces stack usage

Allocate working memory dynamically.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
__archive__
Øyvind Harboe 2009-11-22 20:23:34 +01:00
parent 2d6829d698
commit af7f6891e9
1 changed files with 15 additions and 5 deletions

View File

@ -440,7 +440,7 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co
}; };
// /* TODO remove array */ // /* TODO remove array */
uint32_t param_out[count]; uint32_t *param_out = malloc(count * sizeof(uint32_t));
int i; int i;
// int retval; // int retval;
@ -472,6 +472,8 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co
buf[i] = param_out[i]; buf[i] = param_out[i];
} }
free(param_out);
return ERROR_OK; 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 */ // /* TODO remove array */
uint32_t param_out[count]; uint32_t *param_out = malloc(count * sizeof(uint32_t));
int i; int i;
// int retval; // int retval;
@ -551,6 +553,8 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou
buf[i] = param_out[i]; buf[i] = param_out[i];
} }
free(param_out);
return ERROR_OK; return ERROR_OK;
} }
@ -609,7 +613,7 @@ int mips32_pracc_write_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, int c
}; };
/* TODO remove array */ /* 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[0] = addr;
param_in[1] = addr + count * sizeof(uint32_t); //last address param_in[1] = addr + count * sizeof(uint32_t); //last address
@ -618,6 +622,8 @@ int mips32_pracc_write_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, int c
mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1); sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1);
free(param_in);
return ERROR_OK; 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 */ /* TODO remove array */
uint32_t param_in[count + 2]; uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t));
int i; int i;
param_in[0] = addr; param_in[0] = addr;
param_in[1] = count; param_in[1] = count;
@ -711,6 +717,8 @@ int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int c
mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1); sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1);
free(param_in);
return ERROR_OK; 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 */ /* TODO remove array */
uint32_t param_in[count + 2]; uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t));
int retval; int retval;
int i; int i;
param_in[0] = addr; param_in[0] = addr;
@ -772,6 +780,8 @@ int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int co
retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \ retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1); sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1);
free(param_in);
return retval; return retval;
} }