Merge remote-tracking branch 'origin/master'
[fw/altos] / src / stm / ao_arch_funcs.h
index 9bb2d7cd5d830c158bd0dbbeb01ec3a39b63d64c..b461cd3fbf81dd9f32dac82894ea96d7c5bdaad7 100644 (file)
@@ -329,7 +329,7 @@ static inline void ao_arch_restore_stack(void) {
 
        /* Restore APSR */
        asm("pop {r0}");
-       asm("msr apsr,r0");
+       asm("msr apsr_nczvq,r0");
 
        /* Restore general registers */
        asm("pop {r0-r12,lr}\n");
@@ -354,6 +354,7 @@ static inline void ao_arch_start_scheduler(void) {
        asm("mrs %0,control" : "=&r" (control));
        control |= (1 << 1);
        asm("msr control,%0" : : "r" (control));
+       asm("isb");
 }
 #endif