altos: Replace __critical usage with ao_arch_critical as needed
[fw/altos] / src / core / ao_stdio.c
index 656b23c9e88fadc5f65b560af8487692d2b27c89..8cf66a239ac1db03d8d1d72c5c2bd7d44ab26a0c 100644 (file)
@@ -96,21 +96,23 @@ flush(void)
 __xdata uint8_t ao_stdin_ready;
 
 char
-getchar(void) __reentrant __critical
+getchar(void) __reentrant
 {
        char c;
-       int8_t stdio = ao_cur_stdio;
+       ao_arch_critical(
+               int8_t stdio = ao_cur_stdio;
 
-       for (;;) {
-               c = ao_stdios[stdio].pollchar();
-               if (c != AO_READ_AGAIN)
-                       break;
-               if (++stdio == ao_num_stdios)
-                       stdio = 0;
-               if (stdio == ao_cur_stdio)
-                       ao_sleep(&ao_stdin_ready);
-       }
-       ao_cur_stdio = stdio;
+               for (;;) {
+                       c = ao_stdios[stdio].pollchar();
+                       if (c != AO_READ_AGAIN)
+                               break;
+                       if (++stdio == ao_num_stdios)
+                               stdio = 0;
+                       if (stdio == ao_cur_stdio)
+                               ao_sleep(&ao_stdin_ready);
+               }
+               ao_cur_stdio = stdio;
+               );
        return c;
 }