Skip to content
Snippets Groups Projects
Commit 5985dee3 authored by Øyvind Harboe's avatar Øyvind Harboe
Browse files

arm11: do not use dynamic arrays


Allocate working memory dynamically, caught by checkstack.pl

Signed-off-by: default avatarØyvind Harboe <oyvind.harboe@zylin.com>
parent bcebce3c
Branches
No related tags found
No related merge requests found
...@@ -309,7 +309,8 @@ fairly easy to complete: ...@@ -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 ...@@ -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) ...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment