1
2
3
4
5
6
7
8
9
10 #ifndef __ASM_SN_NMI_H
11 #define __ASM_SN_NMI_H
12
13 #include <asm/sn/addrs.h>
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #define NMI_MAGIC 0x48414d4d455201
32 #define NMI_SIZEOF 0x40
33
34 #define NMI_OFF_MAGIC 0x00
35 #define NMI_OFF_FLAGS 0x08
36 #define NMI_OFF_CALL 0x10
37 #define NMI_OFF_CALLC 0x18
38 #define NMI_OFF_CALLPARM 0x20
39 #define NMI_OFF_GMASTER 0x28
40
41
42
43
44
45
46
47
48
49
50
51 #ifndef __ASSEMBLY__
52
53 typedef struct nmi_s {
54 volatile unsigned long magic;
55 volatile unsigned long flags;
56 volatile void *call_addr;
57 volatile void *call_addr_c;
58 volatile void *call_parm;
59 volatile unsigned long gmaster;
60 } nmi_t;
61
62 #endif
63
64
65
66
67
68 #ifndef __ASSEMBLY__
69
70 struct reg_struct {
71 unsigned long gpr[32];
72 unsigned long sr;
73 unsigned long cause;
74 unsigned long epc;
75 unsigned long badva;
76 unsigned long error_epc;
77 unsigned long cache_err;
78 unsigned long nmi_sr;
79 };
80
81 #endif
82
83
84
85 #define R0_OFF 0x0
86 #define R1_OFF 0x8
87 #define R2_OFF 0x10
88 #define R3_OFF 0x18
89 #define R4_OFF 0x20
90 #define R5_OFF 0x28
91 #define R6_OFF 0x30
92 #define R7_OFF 0x38
93 #define R8_OFF 0x40
94 #define R9_OFF 0x48
95 #define R10_OFF 0x50
96 #define R11_OFF 0x58
97 #define R12_OFF 0x60
98 #define R13_OFF 0x68
99 #define R14_OFF 0x70
100 #define R15_OFF 0x78
101 #define R16_OFF 0x80
102 #define R17_OFF 0x88
103 #define R18_OFF 0x90
104 #define R19_OFF 0x98
105 #define R20_OFF 0xa0
106 #define R21_OFF 0xa8
107 #define R22_OFF 0xb0
108 #define R23_OFF 0xb8
109 #define R24_OFF 0xc0
110 #define R25_OFF 0xc8
111 #define R26_OFF 0xd0
112 #define R27_OFF 0xd8
113 #define R28_OFF 0xe0
114 #define R29_OFF 0xe8
115 #define R30_OFF 0xf0
116 #define R31_OFF 0xf8
117 #define SR_OFF 0x100
118 #define CAUSE_OFF 0x108
119 #define EPC_OFF 0x110
120 #define BADVA_OFF 0x118
121 #define ERROR_EPC_OFF 0x120
122 #define CACHE_ERR_OFF 0x128
123 #define NMISR_OFF 0x130
124
125 #endif