Hello,
The progject I'm working on suppresses global objects creation using $Super$$__cpp_initialize__aeabi_, because some .cpp code contains OS calls so the construction is deferred to after the RTX kernel is started. Recently a major port operation took place, and now it seems that during this construction phase, while the program takes a path that it common to many objects (creation of a mutex), just before an SVC is triggered, at some point the PSP register is decremented by about 0x70 instead of the 0x20 when the same path is taken and the program does not fail (that happens exactly when the SVN instruction is executed). As I mentioned - it's the same path in the code so I would expect it to be decremented by the same value. I tried to debug the construction code itself but that is not easy (I know where in the .cpp code it goes wrong, but as I said - I cannot explain when I see). Can you offer an explanation why the PSP register exhibits this behavior?
I am using RTX 4.70 on a Cortex M4. If the FPU context save control bit in the control register is disabled - this does not happen...Too old an RTX I suppose...?