Rev 2071 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2071 | Rev 2089 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | 34 | ||
35 | #ifndef KERN_mips32_EXCEPTION_H_ |
35 | #ifndef KERN_mips32_EXCEPTION_H_ |
36 | #define KERN_mips32_EXCEPTION_H_ |
36 | #define KERN_mips32_EXCEPTION_H_ |
37 | 37 | ||
38 | #include <arch/types.h> |
38 | #include <arch/types.h> |
39 | #include <typedefs.h> |
- | |
40 | #include <arch/cp0.h> |
39 | #include <arch/cp0.h> |
41 | 40 | ||
42 | #define EXC_Int 0 |
41 | #define EXC_Int 0 |
43 | #define EXC_Mod 1 |
42 | #define EXC_Mod 1 |
44 | #define EXC_TLBL 2 |
43 | #define EXC_TLBL 2 |
Line 56... | Line 55... | ||
56 | #define EXC_VCEI 14 |
55 | #define EXC_VCEI 14 |
57 | #define EXC_FPE 15 |
56 | #define EXC_FPE 15 |
58 | #define EXC_WATCH 23 |
57 | #define EXC_WATCH 23 |
59 | #define EXC_VCED 31 |
58 | #define EXC_VCED 31 |
60 | 59 | ||
61 | struct istate { |
60 | typedef struct { |
62 | uint32_t at; |
61 | uint32_t at; |
63 | uint32_t v0; |
62 | uint32_t v0; |
64 | uint32_t v1; |
63 | uint32_t v1; |
65 | uint32_t a0; |
64 | uint32_t a0; |
66 | uint32_t a1; |
65 | uint32_t a1; |
Line 93... | Line 92... | ||
93 | uint32_t hi; |
92 | uint32_t hi; |
94 | 93 | ||
95 | uint32_t status; /* cp0_status */ |
94 | uint32_t status; /* cp0_status */ |
96 | uint32_t epc; /* cp0_epc */ |
95 | uint32_t epc; /* cp0_epc */ |
97 | uint32_t k1; /* We use it as thread-local pointer */ |
96 | uint32_t k1; /* We use it as thread-local pointer */ |
98 | }; |
97 | } istate_t; |
99 | 98 | ||
100 | static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr) |
99 | static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr) |
101 | { |
100 | { |
102 | istate->epc = retaddr; |
101 | istate->epc = retaddr; |
103 | } |
102 | } |