aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2009-11-22 20:23:34 +0100
committerØyvind Harboe <oyvind.harboe@zylin.com>2009-11-22 20:23:34 +0100
commitaf7f6891e98d538eabcf137d89f28bf3406a4999 (patch)
tree4c3792506b8ecc4654f4523ae74813b23adb759e
parent2d6829d6982fa485b8cabb3a91e41b9c50c7f3d1 (diff)
downloadriscv-openocd-af7f6891e98d538eabcf137d89f28bf3406a4999.zip
riscv-openocd-af7f6891e98d538eabcf137d89f28bf3406a4999.tar.gz
riscv-openocd-af7f6891e98d538eabcf137d89f28bf3406a4999.tar.bz2
mips: remove dynamic arrays - reduces stack usage
Allocate working memory dynamically. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
-rw-r--r--src/target/mips32_pracc.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/target/mips32_pracc.c b/src/target/mips32_pracc.c
index 3177e0f..40627e1 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;
}