next up previous contents
Next: Arm Up: Context Initialization Previous: x86   Contents

Trimedia

The basic idea is the same as that of x86. However in case of trimedia, the return addresse is stored in register 2 and the arguments are passed through registers 5 & 6.

void CPU_Context_Initialize(struct reg_context *the_context,void *stack_base,
                    oskit_u32_t stack_size,                         
                    void *(*entry_point)(void *,void *),
                    void *(*thread_fun)(void *),
                    void *thread_arg)
{
  oskit_u32_t stack;
  stack=((int)stack_base)+stack_size;
  the_context->reg[2]=(oskit_u32_t)entry_point;
  the_context->reg[3]=(oskit_u32_t)stack;
  the_context->reg[4]=(oskit_u32_t)stack;
  the_context->reg[5]=(oskit_u32_t)thread_fun;
  the_context->reg[6]=(oskit_u32_t)thread_arg;
  the_context->pcsw=0;
  the_context->dpc=0;
  the_context->spc=0;
}



Soumyadeb Mitra 2002-08-07