1). CPRS у Вас будет в SPSR. А SP можно получить так - переключиться обратно в User mode сохранить SP и вернуться в режим супервизора. e.g:
.. сохранить R0 и R14
__asm{ MRS R0, CPSR}; __asm{ BIC R0, R0, #0x03 }; // Clear SV-mode bits __asm{ MSR CPSR_c, R0 }; // Enter USER mode // тут уже можно сохранять SP. // Перейти из User mode в SV-mode - по SWI инструкции. __asm{ MOV R0, R13 }; // store user SP __asm{ SWI <код вашего обработчика> }; // call SV
2). Без MMU нельзя.
|