From af7f6891e98d538eabcf137d89f28bf3406a4999 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Harboe?= Date: Sun, 22 Nov 2009 20:23:34 +0100 Subject: [PATCH] mips: remove dynamic arrays - reduces stack usage MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Allocate working memory dynamically. Signed-off-by: Øyvind Harboe --- src/target/mips32_pracc.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/target/mips32_pracc.c b/src/target/mips32_pracc.c index 3177e0f2..40627e16 100644 --- a/src/target/mips32_pracc.c +++ b/src/target/mips32_pracc.c @@ -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; @@ -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; @@ -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,7 +613,7 @@ 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 @@ -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, \ sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1); + free(param_in); + 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; @@ -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, \ sizeof(param_in)/sizeof(param_in[0]), 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; @@ -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, \ sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1); + free(param_in); + return retval; } -- 2.39.5