00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _RTAI_ASM_MIPS_RTAI_SCHED_H_
00020 #define _RTAI_ASM_MIPS_RTAI_SCHED_H_
00021
00022 #include <asm/rtai_stackframe.h>
00023
00024 extern void up_task_sw(void *, void *);
00025
00026
00027 #define rt_switch_to(newtask) up_task_sw(&rt_current, (newtask));
00028
00029 #define rt_exchange_tasks(oldtask, newtask) up_task_sw(&(oldtask), (newtask));
00030
00031 #define init_arch_stack() \
00032 do { \
00033 task->stack -= (RT_SIZE / sizeof(int)); \
00034 *(task->stack + (RT_R5 / sizeof(int))) = data; \
00035 *(task->stack + (RT_R4 / sizeof(int))) = (int)rt_thread; \
00036 *(task->stack + (RT_R31 / sizeof(int))) = (int)rt_startup; \
00037 } while(0)
00038
00039 #define DEFINE_LINUX_CR0
00040 #define DEFINE_LINUX_SMP_CR0
00041
00042 #define init_fp_env() \
00043 do { \
00044 memset(&task->fpu_reg, 0, sizeof(task->fpu_reg)); \
00045 } while(0)
00046
00047 static inline void *get_stack_pointer(void)
00048 {
00049
00050 void *sp;
00051
00052 __asm__ __volatile__ (
00053 "move\t%0,$29\n\t"
00054 : "=r" (sp));
00055 return(sp);
00056
00057 }
00058
00059 #define RT_SET_RTAI_TRAP_HANDLER(x)
00060
00061 #define DO_TIMER_PROPER_OP()
00062
00063 #endif
00064