*
* 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
static volatile void *ao_wchan;
uint8_t
-ao_sleep(__xdata void *wchan)
+ao_sleep(void *wchan)
{
#if 1
ao_wchan = wchan;
return 0;
}
+#if HAS_AO_DELAY
void
-ao_wakeup(__xdata void *wchan)
+ao_delay_until(AO_TICK_TYPE target)
+{
+ ao_arch_block_interrupts();
+ while ((AO_TICK_SIGNED) (target - ao_tick_count) > 0)
+ ao_sleep((void *) &ao_tick_count);
+ ao_arch_release_interrupts();
+}
+
+void
+ao_delay(AO_TICK_TYPE ticks)
+{
+ ao_delay_until(ao_time() + ticks);
+}
+
+#endif
+
+void
+ao_wakeup(void *wchan)
{
(void) wchan;
ao_wchan = 0;