L4Re - L4 Runtime Environment
utcb.h
Go to the documentation of this file.
1 
6 /*
7  * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
8  * Alexander Warg <warg@os.inf.tu-dresden.de>
9  * economic rights: Technische Universit├Ąt Dresden (Germany)
10  *
11  * This file is part of TUD:OS and distributed under the terms of the
12  * GNU General Public License 2.
13  * Please see the COPYING-GPL-2 file for details.
14  *
15  * As a special exception, you may use this file as part of a free software
16  * library without restriction. Specifically, if other files instantiate
17  * templates or use macros or inline functions from this file, or you compile
18  * this file and link it with other files to produce an executable, this
19  * file does not by itself cause the resulting executable to be covered by
20  * the GNU General Public License. This exception does not however
21  * invalidate any other reasons why the executable file might be covered by
22  * the GNU General Public License.
23  */
24 #ifndef __L4_SYS__INCLUDE__ARCH_ARM__UTCB_H__
25 #define __L4_SYS__INCLUDE__ARCH_ARM__UTCB_H__
26 
27 #include <l4/sys/types.h>
28 
38 typedef struct l4_exc_regs_t
39 {
43  l4_umword_t r[13];
51 
58 {
62 
64  L4_UTCB_BUF_REGS_OFFSET = 64 * sizeof(l4_umword_t),
66 
67  L4_UTCB_INHERIT_FPU = 1UL << 24,
68 
69  L4_UTCB_OFFSET = 512,
70 };
71 
72 #include_next <l4/sys/utcb.h>
73 
74 /*
75  * ==================================================================
76  * Implementations.
77  */
78 
79 #ifdef __GNUC__
80 L4_INLINE l4_utcb_t *l4_utcb_direct(void) L4_NOTHROW
81 {
82  register l4_utcb_t *utcb __asm__ ("r0");
83  __asm__ ("mov lr, pc \n"
84  "mov pc, #0xffffff00 \n"
85  : "=r"(utcb) : : "lr");
86  return utcb;
87 }
88 #endif
89 
91 {
92  return u->pc;
93 }
94 
96 {
97  u->pc = pc;
98 }
99 
101 {
102  return u->err >> 26;
103 }
104 
106 {
107  return ((u->err >> 26) & 0x30) == 0x20;
108 }
109 
111 {
112  return (u->pfa & ~7UL) | ((u->err >> 5) & 2);
113 }
114 
116 {
117  return l4_utcb_exc_typeval(u) == 0x3e;
118 }
119 
120 #endif /* ! __L4_SYS__INCLUDE__ARCH_ARM__UTCB_H__ */
Total number of message register (MRs) available.
Definition: utcb.h:47
l4_umword_t sp
stack pointer
Definition: utcb.h:44
int l4_utcb_exc_is_pf(l4_exc_regs_t const *u) L4_NOTHROW L4_PURE
Check whether an exception IPC is a page fault.
Definition: utcb.h:105
int l4_utcb_exc_is_ex_regs_exception(l4_exc_regs_t const *u) L4_NOTHROW L4_PURE
Check whether an exception IPC was triggered via l4_thread_ex_regs().
Definition: utcb.h:115
Common L4 ABI Data Types.
l4_umword_t err
error code
Definition: utcb.h:41
l4_umword_t _dummy1
dummy
Definition: utcb.h:46
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
Definition: utcb.h:67
BDR flag to accept reception of FPU state.
Definition: utcb.h:62
unsigned long l4_utcb_exc_typeval(l4_exc_regs_t const *u) L4_NOTHROW L4_PURE
Get the value out of an exception UTCB that describes the type of exception.
Definition: utcb.h:100
Number if message registers used for exception IPC.
Definition: utcb.h:44
Offset of MR[0] relative to the UTCB pointer.
Definition: utcb.h:53
l4_umword_t cpsr
cpsr
Definition: utcb.h:48
Total number of buffer registers (BRs) available.
Definition: utcb.h:50
l4_umword_t pc
pc
Definition: utcb.h:47
l4_umword_t tpidruro
Thread-ID register.
Definition: utcb.h:49
struct l4_exc_regs_t l4_exc_regs_t
UTCB structure for exceptions.
unsigned long l4_umword_t
Unsigned machine word.
Definition: l4int.h:52
l4_addr_t l4_utcb_exc_pfa(l4_exc_regs_t const *u) L4_NOTHROW L4_PURE
Function to get the L4 style page fault address out of an exception.
Definition: utcb.h:110
void l4_utcb_exc_pc_set(l4_exc_regs_t *u, l4_addr_t pc) L4_NOTHROW
Set the program counter register in the exception state.
Definition: utcb.h:95
Offset of BR[0] relative to the UTCB pointer.
Definition: utcb.h:56
Offset of TCR[0] relative to the UTCB pointer.
Definition: utcb.h:59
L4_utcb_consts_arm
UTCB constants for ARM.
Definition: utcb.h:57
l4_umword_t pfa
page fault address
Definition: utcb.h:40
Offset of two consecutive UTCBs.
Definition: utcb.h:65
UTCB structure for exceptions.
Definition: utcb.h:38
l4_umword_t ulr
ulr
Definition: utcb.h:45
l4_umword_t r[13]
registers
Definition: utcb.h:43
unsigned long l4_addr_t
Address type.
Definition: l4int.h:45
l4_umword_t l4_utcb_exc_pc(l4_exc_regs_t const *u) L4_NOTHROW L4_PURE
Access function to get the program counter of the exception state.
Definition: utcb.h:90
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
Definition: compiler.h:185