This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Bus Fault
- From: spflanze <sepflanze at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Wed, 16 Mar 2016 19:40:55 -0700 (MST)
- Subject: Bus Fault
- Authentication-results: sourceware.org; auth=none
This is a firmware project of mine. The IDE is the Ac6 System Workbench.
The target processor is an STM32F373VCT6.
I find that whenever I have a function that has within it a call to another
function this instruction sequence appears among the first instructions in
the function that does the call.
sub.w r3, sp, #12224 ; 0x2fc0
subs r3, #60 ; 0x3c
movs r2, #0
str r2, [r3, #0]
This sequence results in a Bus Fault because in the last instruction r3
points to a location in flash memory instead of a location in RAM as it
should. The details of how that happens is posted in this thread of mine
that I began when I thought this was a FREERTOS problem:
https://sourceforge.net/p/freertos/discussion/382005/thread/da34d0b6/
This instruction sequence is not just near the start thread function for
which I posted source code. It is near the start of every start thread
function in the project. If there are no function calls withing the start
thread function the above instructions disappear.
Why do these functions need to store a value of 0 at a location so far from
the current stack pointer address? What is this instruction sequence
supposed to accomplish?
--
View this message in context: http://gcc.1065356.n5.nabble.com/Bus-Fault-tp1246632.html
Sent from the gcc - Help mailing list archive at Nabble.com.