Blob
1 #include "threadimpl.h"3 void4 makecontext(ucontext_t *uc, void (*fn)(void), int argc, ...)5 {6 int i, *sp;7 va_list arg;9 sp = USPALIGN(uc, 4);10 va_start(arg, argc);11 for(i=0; i<4 && i<argc; i++)12 (&uc->uc_mcontext.arm_r0)[i] = va_arg(arg, uint);13 va_end(arg);14 uc->uc_mcontext.arm_sp = (uint)sp;15 uc->uc_mcontext.arm_lr = (uint)fn;16 }18 int19 swapcontext(ucontext_t *oucp, const ucontext_t *ucp)20 {21 if(getcontext(oucp) == 0)22 setcontext(ucp);23 return 0;24 }