Make some functions reentrant to save DSEG space
[fw/altos] / ao_task.c
index 878724c5a0ba484be8715f51fd636664493127ee..81a71dda3d258ba5c24d5691282eab0f73b18c5d 100644 (file)
--- a/ao_task.c
+++ b/ao_task.c
@@ -25,7 +25,7 @@ __data uint8_t ao_cur_task_index;
 __xdata struct ao_task *__data ao_cur_task;
 
 void
-ao_add_task(__xdata struct ao_task * task, void (*start)(void), __code char *name)
+ao_add_task(__xdata struct ao_task * task, void (*start)(void), __code char *name) __reentrant
 {
        uint8_t __xdata *stack;
        if (ao_num_tasks == AO_NUM_TASKS)
@@ -193,13 +193,15 @@ ao_task_info(void)
 {
        uint8_t i;
        uint8_t pc_loc;
+       __xdata struct ao_task *task;
 
        for (i = 0; i < ao_num_tasks; i++) {
-               pc_loc = ao_tasks[i]->stack_count - 17;
-               printf("%-8s: wchan %04x pc %04x\n",
-                      ao_tasks[i]->name,
-                      (int16_t) ao_tasks[i]->wchan,
-                      (ao_tasks[i]->stack[pc_loc]) | (ao_tasks[i]->stack[pc_loc+1] << 8));
+               task = ao_tasks[i];
+               pc_loc = task->stack_count - 17;
+               printf("%12s: wchan %04x pc %04x\n",
+                      (char *) task->name,
+                      (int16_t) task->wchan,
+                      (task->stack[pc_loc]) | (task->stack[pc_loc+1] << 8));
        }
 }