altos: Remove 8051 address space specifiers
[fw/altos] / src / kernel / ao_notask.c
index 6f967e6d2201db4d520f5410c33f7a038f00491d..a5bdc8a7c65e5d81dbc6e0ad8b7bcf9ff54261d8 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,7 +21,7 @@
 static volatile void *ao_wchan;
 
 uint8_t
-ao_sleep(__xdata void *wchan)
+ao_sleep(void *wchan)
 {
 #if 1
        ao_wchan = wchan;
@@ -38,8 +39,23 @@ ao_sleep(__xdata void *wchan)
        return 0;
 }
 
+#if HAS_AO_DELAY
 void
-ao_wakeup(__xdata void *wchan)
+ao_delay(uint16_t ticks)
+{
+       AO_TICK_TYPE    target;
+
+       if (!ticks)
+               ticks = 1;
+       target = ao_tick_count + ticks;
+       do {
+               ao_sleep(&ao_time);
+       } while ((int16_t) (target - ao_tick_count) > 0);
+}
+#endif
+
+void
+ao_wakeup(void *wchan)
 {
        (void) wchan;
        ao_wchan = 0;