Exemplo n.º 1
0
/*! 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 ) );
}