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.