arm11: do not use dynamic arrays
Allocate working memory dynamically, caught by checkstack.pl Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>__archive__
parent
bcebce3ce2
commit
5985dee35d
3
TODO
3
TODO
|
@ -309,7 +309,8 @@ fairly easy to complete:
|
||||||
|
|
||||||
- use dynamic allocations for working memory. Scan & fix code
|
- use dynamic allocations for working memory. Scan & fix code
|
||||||
for excessive stack allocations. take linux/scripts/checkstack.pl and
|
for excessive stack allocations. take linux/scripts/checkstack.pl and
|
||||||
see what the worst offenders are. Example, on amd64:
|
see what the worst offenders are. Dynamic stack allocations are found
|
||||||
|
at the bottom of the list below. Example, on amd64:
|
||||||
|
|
||||||
$ objdump -d | checkstack.pl | head -10
|
$ objdump -d | checkstack.pl | head -10
|
||||||
0x004311e3 image_open [openocd]: 13464
|
0x004311e3 image_open [openocd]: 13464
|
||||||
|
|
|
@ -880,10 +880,11 @@ int arm11_sc7_run(struct arm11_common * arm11, struct arm11_sc7_action * actions
|
||||||
*/
|
*/
|
||||||
void arm11_sc7_clear_vbw(struct arm11_common * arm11)
|
void arm11_sc7_clear_vbw(struct arm11_common * arm11)
|
||||||
{
|
{
|
||||||
struct arm11_sc7_action clear_bw[arm11->brp + arm11->wrp + 1];
|
size_t clear_bw_size = arm11->brp + arm11->wrp + 1;
|
||||||
|
struct arm11_sc7_action *clear_bw = malloc(sizeof(struct arm11_sc7_action) * clear_bw_size);
|
||||||
struct arm11_sc7_action * pos = clear_bw;
|
struct arm11_sc7_action * pos = clear_bw;
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAY_SIZE(clear_bw); i++)
|
for (size_t i = 0; i < clear_bw_size; i++)
|
||||||
{
|
{
|
||||||
clear_bw[i].write = true;
|
clear_bw[i].write = true;
|
||||||
clear_bw[i].value = 0;
|
clear_bw[i].value = 0;
|
||||||
|
@ -899,7 +900,9 @@ void arm11_sc7_clear_vbw(struct arm11_common * arm11)
|
||||||
|
|
||||||
(pos++)->address = ARM11_SC7_VCR;
|
(pos++)->address = ARM11_SC7_VCR;
|
||||||
|
|
||||||
arm11_sc7_run(arm11, clear_bw, ARRAY_SIZE(clear_bw));
|
arm11_sc7_run(arm11, clear_bw, clear_bw_size);
|
||||||
|
|
||||||
|
free (clear_bw);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Write VCR register
|
/** Write VCR register
|
||||||
|
|
Loading…
Reference in New Issue