+static inline void ao_arch_start_scheduler(void) {
+ uint32_t sp;
+ uint32_t control;
+
+ asm("mrs %0,msp" : "=&r" (sp));
+ asm("msr psp,%0" : : "r" (sp));
+ asm("mrs %0,control" : "=&r" (control));
+ control |= (1 << 1);
+ asm("msr control,%0" : : "r" (control));
+ asm("isb");
+}
+#endif
+
+static inline void ao_arch_isr_stack(void) {
+ uint32_t control;
+
+ asm("mrs %0,control" : "=&r" (control));
+ control &= ~(1 << 1);
+ asm("msr control,%0" : : "r" (control));
+ asm("isb");
+}
+
+#endif
+
+#define ao_arch_wait_interrupt() do { \
+ asm("\twfi\n"); \