Root cause: After function STOP_CAR_AND_CPU disables cache as ram, the cache as ram stack can no longer be used. Called functions must be inlined to avoid stack usage. Also, the compiler must keep local variables register based and not allocated them from the stack. With gcc 4.5.0, some functions declared as inline are not being inlined. This patch forces these functions to always be inlined by adding the qualifier __attribute__((always_inline)) to their declaration.
Should we do something like
#define INLINE __attribute__((always_inline))
and replace all (or most) inline directives with INLINE? There are probably other places where the code depends on inline working.
Thanks, Myles