unbroke sparc front-end server protocol
[akaros.git] / kern / arch / sparc / trap.h
1 #ifndef ROS_INC_ARCH_TRAP_H
2 #define ROS_INC_ARCH_TRAP_H
3
4 #define SIZEOF_TRAPFRAME_T      0xA8
5 #define SIZEOF_ACTIVE_MESSAGE_T 0x18
6
7 #ifndef __ASSEMBLER__
8
9 #include <arch/types.h>
10
11 typedef struct
12 {
13         uint32_t gpr[32];
14         uint32_t psr;
15         uint32_t pc;
16         uint32_t npc;
17         uint32_t wim;
18         uint32_t tbr;
19         uint32_t y;
20         uint32_t fault_status;
21         uint32_t fault_addr;
22         uint64_t timestamp;
23 } trapframe_t;
24
25 typedef void (*amr_t)(trapframe_t* tf, uint32_t srcid, uint32_t a0, uint32_t a1, uint32_t a2);
26
27 typedef struct
28 {
29         uint32_t srcid;
30         amr_t pc;
31         uint32_t arg0;
32         uint32_t arg1;
33         uint32_t arg2;
34         uint32_t pad;
35 } active_message_t;
36
37 typedef struct
38 {
39         uint32_t fpr[32];
40         uint32_t fsr;
41 } ancillary_state_t;
42
43 #endif /* !__ASSEMBLER__ */
44
45 #endif /* !ROS_INC_ARCH_TRAP_H */