Commit | Line | Data |
---|---|---|
27847c6f SG |
1 | typedef short int16_t; |
2 | typedef unsigned short uint16_t; | |
3 | ||
4 | typedef int int32_t; | |
5 | typedef unsigned int uint32_t; | |
6 | ||
7 | typedef struct int64_s { | |
8 | uint32_t lo; | |
9 | uint32_t hi; | |
10 | } int64_t; | |
11 | ||
12 | /* Define indexes into register array in StackFrame */ | |
13 | #define SF_REG_PC 0 | |
14 | ||
15 | #define SF_IREG_OFFSET 1 /* int regs start at index 1 */ | |
16 | #define SF_REG_V0 (0+SF_IREG_OFFSET) | |
17 | #define SF_REG_T0 (1+SF_IREG_OFFSET) | |
18 | #define SF_REG_T1 (2+SF_IREG_OFFSET) | |
19 | #define SF_REG_T2 (3+SF_IREG_OFFSET) | |
20 | #define SF_REG_T3 (4+SF_IREG_OFFSET) | |
21 | #define SF_REG_T4 (5+SF_IREG_OFFSET) | |
22 | #define SF_REG_T5 (6+SF_IREG_OFFSET) | |
23 | #define SF_REG_T6 (7+SF_IREG_OFFSET) | |
24 | #define SF_REG_T7 (8+SF_IREG_OFFSET) | |
25 | #define SF_REG_S0 (9+SF_IREG_OFFSET) | |
26 | #define SF_REG_S1 (10+SF_IREG_OFFSET) | |
27 | #define SF_REG_S2 (11+SF_IREG_OFFSET) | |
28 | #define SF_REG_S3 (12+SF_IREG_OFFSET) | |
29 | #define SF_REG_S4 (13+SF_IREG_OFFSET) | |
30 | #define SF_REG_S5 (14+SF_IREG_OFFSET) | |
31 | #define SF_REG_S6 (15+SF_IREG_OFFSET) | |
32 | #define SF_REG_FP SF_REG_S6 | |
33 | #define SF_REG_A0 (16+SF_IREG_OFFSET) | |
34 | #define SF_REG_A1 (17+SF_IREG_OFFSET) | |
35 | #define SF_REG_A2 (18+SF_IREG_OFFSET) | |
36 | #define SF_REG_A3 (19+SF_IREG_OFFSET) | |
37 | #define SF_REG_A4 (20+SF_IREG_OFFSET) | |
38 | #define SF_REG_A5 (21+SF_IREG_OFFSET) | |
39 | #define SF_REG_T8 (22+SF_IREG_OFFSET) | |
40 | #define SF_REG_T9 (23+SF_IREG_OFFSET) | |
41 | #define SF_REG_T10 (24+SF_IREG_OFFSET) | |
42 | #define SF_REG_T11 (25+SF_IREG_OFFSET) | |
43 | #define SF_REG_RA (26+SF_IREG_OFFSET) | |
44 | #define SF_REG_PV (27+SF_IREG_OFFSET) | |
45 | #define SF_REG_T12 SF_REG_PV | |
46 | #define SF_REG_AT (28+SF_IREG_OFFSET) | |
47 | #define SF_REG_GP (29+SF_IREG_OFFSET) | |
48 | #define SF_REG_SP (30+SF_IREG_OFFSET) | |
49 | #define SF_REG_ZERO (31+SF_IREG_OFFSET) | |
50 | #define NUMBER_OF_INT_REGS 32 | |
51 | ||
52 | #define SF_FREG_OFFSET (SF_IREG_OFFSET+NUMBER_OF_INT_REGS) | |
53 | #define SF_REG_F0 (0+SF_FREG_OFFSET) | |
54 | #define SF_REG_F1 (1+SF_FREG_OFFSET) | |
55 | #define SF_REG_F2 (2+SF_FREG_OFFSET) | |
56 | #define SF_REG_F3 (3+SF_FREG_OFFSET) | |
57 | #define SF_REG_F4 (4+SF_FREG_OFFSET) | |
58 | #define SF_REG_F5 (5+SF_FREG_OFFSET) | |
59 | #define SF_REG_F6 (6+SF_FREG_OFFSET) | |
60 | #define SF_REG_F7 (7+SF_FREG_OFFSET) | |
61 | #define SF_REG_F8 (8+SF_FREG_OFFSET) | |
62 | #define SF_REG_F9 (9+SF_FREG_OFFSET) | |
63 | #define SF_REG_F10 (10+SF_FREG_OFFSET) | |
64 | #define SF_REG_F11 (11+SF_FREG_OFFSET) | |
65 | #define SF_REG_F12 (12+SF_FREG_OFFSET) | |
66 | #define SF_REG_F13 (13+SF_FREG_OFFSET) | |
67 | #define SF_REG_F14 (14+SF_FREG_OFFSET) | |
68 | #define SF_REG_F15 (15+SF_FREG_OFFSET) | |
69 | #define SF_REG_F16 (16+SF_FREG_OFFSET) | |
70 | #define SF_REG_F17 (17+SF_FREG_OFFSET) | |
71 | #define SF_REG_F18 (18+SF_FREG_OFFSET) | |
72 | #define SF_REG_F19 (19+SF_FREG_OFFSET) | |
73 | #define SF_REG_F20 (20+SF_FREG_OFFSET) | |
74 | #define SF_REG_F21 (21+SF_FREG_OFFSET) | |
75 | #define SF_REG_F22 (22+SF_FREG_OFFSET) | |
76 | #define SF_REG_F23 (23+SF_FREG_OFFSET) | |
77 | #define SF_REG_F24 (24+SF_FREG_OFFSET) | |
78 | #define SF_REG_F25 (25+SF_FREG_OFFSET) | |
79 | #define SF_REG_F26 (26+SF_FREG_OFFSET) | |
80 | #define SF_REG_F27 (27+SF_FREG_OFFSET) | |
81 | #define SF_REG_F28 (28+SF_FREG_OFFSET) | |
82 | #define SF_REG_F29 (29+SF_FREG_OFFSET) | |
83 | #define SF_REG_F30 (30+SF_FREG_OFFSET) | |
84 | #define SF_REG_FZERO (31+SF_FREG_OFFSET) | |
85 | ||
86 | #define NUMBER_OF_FLOAT_REGS 32 | |
87 | ||
88 | struct StackFrame | |
89 | { | |
90 | struct DomainStructure *ExceptionDomainID; | |
91 | struct ProcessorStructure *ExceptionProcessorID; | |
92 | BYTE *ExceptionDescription; | |
93 | LONG ExceptionFlags; | |
94 | LONG ExceptionErrorCode; | |
95 | LONG ExceptionNumber; | |
96 | ||
97 | int64_t ExceptionAddress; /* Address at which exception occured */ | |
98 | int64_t ExceptionRegs[1+NUMBER_OF_INT_REGS+NUMBER_OF_FLOAT_REGS]; | |
99 | /* First entry is for PC */ | |
100 | int ExceptionBrkptNum; /* Set by the NSI debug exception handler | |
101 | if the exception was caused by a | |
102 | NID breakpoint */ | |
103 | int ExceptionBrkptFlags; /* Flags for the breakpoint. See nsibrkpt.c | |
104 | for details */ | |
105 | }; |