Commit 664e9de
committed
fix memset runtime error under some compilers
Switching compilers from arm-none-eabi-gcc on macOS (arm m1 host)
to arm-none-eabi-gcc on linux (x86 host virtual machine via rosetta)
caused failures in this new frame buffer memset code.
The system booted properly if I kept a subset of memsets, but if too
many were included it looked like the arm9 firmware was never able to
run.
This memset replacement, in the form of memclr8, does resolve the issue
at least for my compilers (it works for both configurations).
I'm sure there is some other issue, here are the things I tried:
* added explicit data synchronization barriers after writes to SYNC_ADDR in the arm11
* moving the multi-core startup code to after the framebuffer initialization
* this code seems to also use the SYNC_ADDR
* checked the cache policy for SYNC_ADDR on the arm9 side
* it seemed like cache was disabled for that address which is what we'd want1 parent 8892992 commit 664e9de
1 file changed
+18
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | | - | |
| 83 | + | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
86 | 86 | | |
87 | | - | |
| 87 | + | |
88 | 88 | | |
89 | | - | |
| 89 | + | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
| 92 | + | |
93 | 93 | | |
94 | | - | |
| 94 | + | |
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| |||
151 | 151 | | |
152 | 152 | | |
153 | 153 | | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
154 | 166 | | |
155 | 167 | | |
156 | 168 | | |
| |||
0 commit comments