00001 /*****************************************************************************/ 00007 /*****************************************************************************/ 00008 #ifndef _L4_SYS_UTCB_H 00009 #define _L4_SYS_UTCB_H 00010 00011 #include <l4/sys/types.h> 00012 00013 EXTERN_C_BEGIN 00014 00019 typedef struct 00020 { 00021 union { 00022 l4_umword_t values[L4_UTCB_GENERIC_DATA_SIZE]; 00023 struct l4_utcb_exception exc; 00024 struct l4_utcb_ex_regs_args ex_regs; 00025 struct l4_utcb_task_new_args task_new; 00026 }; 00027 00028 l4_umword_t buffers[31]; 00029 l4_timeout_t xfer; 00030 } l4_utcb_t; 00031 00042 L4_INLINE l4_utcb_t *l4_utcb_get(void); 00043 00048 L4_INLINE l4_umword_t l4_utcb_exc_pc(l4_utcb_t *u); 00049 00055 L4_INLINE unsigned long l4_utcb_exc_typeval(l4_utcb_t *u); 00056 00064 L4_INLINE int l4_utcb_exc_is_pf(l4_utcb_t *u); 00065 00070 L4_INLINE l4_addr_t l4_utcb_exc_pfa(l4_utcb_t *u); 00071 00076 L4_INLINE void l4_utcb_inherit_fpu(l4_utcb_t *u, int switch_on); 00077 00086 L4_CV l4_utcb_t *l4sys_utcb_get(void); 00087 00088 /************************************************************************** 00089 * Implementations 00090 **************************************************************************/ 00091 00092 L4_INLINE void l4_utcb_inherit_fpu(l4_utcb_t *u, int switch_on) 00093 { 00094 if (switch_on) 00095 u->buffers[L4_UTCB_BUFFER_ACCEPTOR] |= L4_UTCB_INHERIT_FPU; 00096 else 00097 u->buffers[L4_UTCB_BUFFER_ACCEPTOR] &= ~L4_UTCB_INHERIT_FPU; 00098 } 00099 00100 EXTERN_C_END 00101 00102 #endif /* ! _L4_SYS_UTCB_H */