/*! Select thread to return to from interrupt */ void arch_select_thread ( context_t *context ) { arch_thr_context = (void *) &context->context; arch_tss_update(((void *) &context->context) + sizeof (arch_context_t)); #ifdef USE_SSE arch_sse_mmx_fpu = context->sse_mmx_fpu; #endif /* update segment descriptors */ arch_upd_segm_descr ( SEGM_T_CODE, k_process_start_adr (context->proc), k_process_size (context->proc), PRIV_USER ); arch_upd_segm_descr ( SEGM_T_DATA, k_process_start_adr (context->proc), k_process_size (context->proc), PRIV_USER ); }
/*! Select thread to return to from interrupt */ inline void arch_select_thread ( context_t *context ) { arch_thr_context = (void *) &context->context; arch_tss_update(((void *) &context->context) + sizeof (arch_context_t)); /* update segment descriptors */ arch_update_user_segments ( k_process_start_adr ( context->proc ), k_process_size ( context->proc ) ); }