Merge remote-tracking branch 'OFW/dev' into dev

This commit is contained in:
MX
2024-06-10 22:55:02 +03:00
63 changed files with 1594 additions and 1132 deletions

View File

@@ -62,10 +62,11 @@ void furi_hal_init(void) {
void furi_hal_switch(void* address) {
__set_BASEPRI(0);
asm volatile("ldr r3, [%0] \n"
"msr msp, r3 \n"
"ldr r3, [%1] \n"
"mov pc, r3 \n"
// This code emulates system reset: sets MSP and calls Reset ISR
asm volatile("ldr r3, [%0] \n" // Load SP from new vector to r3
"msr msp, r3 \n" // Set MSP from r3
"ldr r3, [%1] \n" // Load Reset Handler address to r3
"mov pc, r3 \n" // Set PC from r3 (jump to Reset ISR)
:
: "r"(address), "r"(address + 0x4)
: "r3");