#ifndef __ARM_UTCB_H__ #define __ARM_UTCB_H__ #define USER_UTCB_REF 0xFF000FF0 #define L4_KIP_ADDRESS 0xFF000000 #define UTCB_KIP_OFFSET 0xFF0 #ifndef __ASSEMBLY__ #include #include #include INC_GLUE(message.h) /* * NOTE: In syslib.h the first few mrs are used by data frequently * needed for all ipcs. Those mrs are defined the kernel message.h */ /* Compact utcb for now! :-) */ struct utcb { u32 mr[MR_TOTAL]; u32 tid; /* Thread id */ /* * This field is used by servers as the ptr to current tcb, * i.e. the task that this server is serving to. */ unsigned long usr_handle; }; /* FIXME: LICENSE/LICENCE */ static inline struct utcb *__L4_ARM_Utcb() { return (struct utcb *)(*(struct utcb **)USER_UTCB_REF); } /* Functions to read/write utcb registers */ static inline unsigned int read_mr(int offset) { return __L4_ARM_Utcb()->mr[offset]; } static inline void write_mr(unsigned int offset, unsigned int val) { __L4_ARM_Utcb()->mr[offset] = val; } #endif /* !__ASSEMBLY__ */ #endif /* __ARM_UTCB_H__ */