Mercurial > ecos
annotate packages/hal/mips/arch/current/include/mips-regs.h @ 26:4741a3c3496a ecos-sw-1999-07-23
Merge from eCos master repository on 1999-07-23-05:47:06-BST
| author | jlarmour |
|---|---|
| date | Fri, 23 Jul 1999 15:20:15 +0000 |
| parents | 443894e2e912 |
| children | c38311975d4f |
| rev | line source |
|---|---|
| 0 | 1 /* mips-regs.h - register defines for MIPS processors |
| 2 * | |
| 2 | 3 * Copyright (c) 1998 Cygnus Solutions |
| 0 | 4 * |
| 5 * The authors hereby grant permission to use, copy, modify, distribute, | |
| 6 * and license this software and its documentation for any purpose, provided | |
| 7 * that existing copyright notices are retained in all copies and that this | |
| 8 * notice is included verbatim in any distributions. No written agreement, | |
| 9 * license, or royalty fee is required for any of the authorized uses. | |
| 10 * Modifications to this software may be copyrighted by their authors | |
| 11 * and need not follow the licensing terms described here, provided that | |
| 12 * the new terms are clearly indicated on the first page of each file where | |
| 13 * they apply. | |
| 14 */ | |
| 15 | |
| 2 | 16 #include <pkgconf/hal.h> |
| 17 | |
| 18 #ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS | |
| 0 | 19 |
| 20 /* This value must agree with NUMREGS in mips-stub.h. */ | |
| 21 | |
| 22 #define NUM_REGS 90 | |
| 23 | |
| 24 #ifdef __mips64 | |
| 25 #define REG_SIZE 8 | |
| 26 #else | |
| 27 #define REG_SIZE 4 | |
| 28 #endif | |
| 29 | |
| 30 /* General register names for assembly code. */ | |
| 31 | |
| 2 | 32 #define zero $0 |
| 33 #define at $1 /* assembler temporary */ | |
| 34 #define v0 $2 /* value holders */ | |
| 35 #define v1 $3 | |
| 36 #define a0 $4 /* arguments */ | |
| 37 #define a1 $5 | |
| 38 #define a2 $6 | |
| 39 #define a3 $7 | |
| 40 #define t0 $8 /* temporaries */ | |
| 41 #define t1 $9 | |
| 42 #define t2 $10 | |
| 43 #define t3 $11 | |
| 44 #define t4 $12 | |
| 45 #define t5 $13 | |
| 46 #define t6 $14 | |
| 47 #define t7 $15 | |
| 48 #define s0 $16 /* saved registers */ | |
| 49 #define s1 $17 | |
| 50 #define s2 $18 | |
| 51 #define s3 $19 | |
| 52 #define s4 $20 | |
| 53 #define s5 $21 | |
| 54 #define s6 $22 | |
| 55 #define s7 $23 | |
| 56 #define t8 $24 /* temporaries */ | |
| 57 #define t9 $25 | |
| 58 #define k0 $26 /* kernel registers */ | |
| 59 #define k1 $27 | |
| 60 #define gp $28 /* global pointer */ | |
| 61 #define sp $29 /* stack pointer */ | |
| 62 #define s8 $30 /* saved register */ | |
| 63 #define fp $30 /* frame pointer (obsolete usage) */ | |
| 64 #define ra $31 /* return address */ | |
| 0 | 65 |
| 66 /* MIPS registers, numbered in the order in which gdb expects to see them. */ | |
| 2 | 67 #define ZERO 0 |
| 68 #define AT 1 | |
| 69 #define V0 2 | |
| 70 #define V1 3 | |
| 71 #define A0 4 | |
| 72 #define A1 5 | |
| 73 #define A2 6 | |
| 74 #define A3 7 | |
| 0 | 75 |
| 2 | 76 #define T0 8 |
| 77 #define T1 9 | |
| 78 #define T2 10 | |
| 79 #define T3 11 | |
| 80 #define T4 12 | |
| 81 #define T5 13 | |
| 82 #define T6 14 | |
| 83 #define T7 15 | |
| 0 | 84 |
| 2 | 85 #define S0 16 |
| 86 #define S1 17 | |
| 87 #define S2 18 | |
| 88 #define S3 19 | |
| 89 #define S4 20 | |
| 90 #define S5 21 | |
| 91 #define S6 22 | |
| 92 #define S7 23 | |
| 0 | 93 |
| 2 | 94 #define T8 24 |
| 95 #define T9 25 | |
| 96 #define K0 26 | |
| 97 #define K1 27 | |
| 98 #define GP 28 | |
| 99 #define SP 29 | |
| 100 #define S8 30 | |
| 101 #define RA 31 | |
| 0 | 102 |
| 2 | 103 #define SR 32 |
| 104 #define LO 33 | |
| 105 #define HI 34 | |
| 106 #define BAD_VA 35 | |
| 107 #define CAUSE 36 | |
| 108 #define PC 37 | |
| 0 | 109 |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
110 #define F0 38 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
111 #define F1 39 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
112 #define F2 40 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
113 #define F3 41 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
114 #define F4 42 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
115 #define F5 43 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
116 #define F6 44 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
117 #define F7 45 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
118 #define F8 46 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
119 #define F9 47 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
120 #define F10 48 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
121 #define F11 49 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
122 #define F12 50 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
123 #define F13 51 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
124 #define F14 52 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
125 #define F15 53 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
126 #define F16 54 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
127 #define F17 55 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
128 #define F18 56 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
129 #define F19 57 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
130 #define F20 58 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
131 #define F21 59 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
132 #define F22 60 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
133 #define F23 61 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
134 #define F24 62 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
135 #define F25 63 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
136 #define F26 64 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
137 #define F27 65 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
138 #define F28 66 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
139 #define F29 67 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
140 #define F30 68 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
141 #define F31 69 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
142 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
143 #define FCR31 70 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
144 |
| 0 | 145 /* System Control Coprocessor (CP0) exception processing registers */ |
| 2 | 146 #define C0_CONTEXT $4 /* Context */ |
| 147 #define C0_BADVADDR $8 /* Bad Virtual Address */ | |
| 148 #define C0_COUNT $9 /* Count */ | |
| 149 #define C0_COMPARE $11 /* Compare */ | |
| 150 #define C0_STATUS $12 /* Processor Status */ | |
| 151 #define C0_CAUSE $13 /* Exception Cause */ | |
| 152 #define C0_EPC $14 /* Exception PC */ | |
| 153 #define C0_XCONTEXT $20 /* XContext */ | |
| 154 #define C0_ECC $26 /* ECC */ | |
| 155 #define C0_CACHEERR $27 /* CacheErr */ | |
| 156 #define C0_ERROREPC $30 /* ErrorEPC */ | |
| 0 | 157 |
| 158 /* Status register fields */ | |
| 2 | 159 #define SR_CUMASK 0xf0000000 /* Coprocessor usable bits */ |
| 160 #define SR_CU3 0x80000000 /* Coprocessor 3 usable */ | |
| 161 #define SR_CU2 0x40000000 /* coprocessor 2 usable */ | |
| 162 #define SR_CU1 0x20000000 /* Coprocessor 1 usable */ | |
| 163 #define SR_CU0 0x10000000 /* Coprocessor 0 usable */ | |
| 0 | 164 |
| 2 | 165 #define SR_FR 0x04000000 /* Enable 32 floating-point registers */ |
| 166 #define SR_RE 0x02000000 /* Reverse Endian in user mode */ | |
| 0 | 167 |
| 2 | 168 #define SR_BEV 0x00400000 /* Bootstrap Exception Vector */ |
| 169 #define SR_TS 0x00200000 /* TLB shutdown (reserved on R4600) */ | |
| 170 #define SR_SR 0x00100000 /* Soft Reset */ | |
| 0 | 171 |
| 2 | 172 #define SR_CH 0x00040000 /* Cache Hit */ |
| 173 #define SR_CE 0x00020000 /* ECC register modifies check bits */ | |
| 174 #define SR_DE 0x00010000 /* Disable cache errors */ | |
| 0 | 175 |
| 2 | 176 #define SR_IMASK 0x0000ff00 /* Interrupt Mask */ |
| 177 #define SR_IMASK8 0x00000000 /* Interrupt Mask level=8 */ | |
| 178 #define SR_IMASK7 0x00008000 /* Interrupt Mask level=7 */ | |
| 179 #define SR_IMASK6 0x0000c000 /* Interrupt Mask level=6 */ | |
| 180 #define SR_IMASK5 0x0000e000 /* Interrupt Mask level=5 */ | |
| 181 #define SR_IMASK4 0x0000f000 /* Interrupt Mask level=4 */ | |
| 182 #define SR_IMASK3 0x0000f800 /* Interrupt Mask level=3 */ | |
| 183 #define SR_IMASK2 0x0000fc00 /* Interrupt Mask level=2 */ | |
| 184 #define SR_IMASK1 0x0000fe00 /* Interrupt Mask level=1 */ | |
| 185 #define SR_IMASK0 0x0000ff00 /* Interrupt Mask level=0 */ | |
| 0 | 186 |
| 2 | 187 #define SR_IBIT8 0x00008000 /* (Intr5) */ |
| 188 #define SR_IBIT7 0x00004000 /* (Intr4) */ | |
| 189 #define SR_IBIT6 0x00002000 /* (Intr3) */ | |
| 190 #define SR_IBIT5 0x00001000 /* (Intr2) */ | |
| 191 #define SR_IBIT4 0x00000800 /* (Intr1) */ | |
| 192 #define SR_IBIT3 0x00000400 /* (Intr0) */ | |
| 193 #define SR_IBIT2 0x00000200 /* (Software Interrupt 1) */ | |
| 194 #define SR_IBIT1 0x00000100 /* (Software Interrupt 0) */ | |
| 0 | 195 |
| 2 | 196 #define SR_KX 0x00000080 /* xtlb in kernel mode */ |
| 197 #define SR_SX 0x00000040 /* mips3 & xtlb in supervisor mode */ | |
| 198 #define SR_UX 0x00000020 /* mips3 & xtlb in user mode */ | |
| 0 | 199 |
| 2 | 200 #define SR_KSU_MASK 0x00000018 /* ksu mode mask */ |
| 201 #define SR_KSU_USER 0x00000010 /* user mode */ | |
| 202 #define SR_KSU_SUPV 0x00000008 /* supervisor mode */ | |
| 203 #define SR_KSU_KERN 0x00000000 /* kernel mode */ | |
| 0 | 204 |
| 2 | 205 #define SR_ERL 0x00000004 /* error level */ |
| 206 #define SR_EXL 0x00000002 /* exception level */ | |
| 207 #define SR_IE 0x00000001 /* interrupt enable */ | |
| 0 | 208 |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
209 /* Floating-point unit control/status register (FCR31) */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
210 #define FCR31_FS 0x01000000 /* Flush denormalized to zero */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
211 #define FCR31_C 0x00800000 /* FP compare result */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
212 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
213 #define FCR31_CAUSE_E 0x00020000 /* Cause - unimplemented operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
214 #define FCR31_CAUSE_V 0x00010000 /* Cause - invalid operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
215 #define FCR31_CAUSE_Z 0x00008000 /* Cause - division by zero */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
216 #define FCR31_CAUSE_O 0x00004000 /* Cause - overflow */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
217 #define FCR31_CAUSE_U 0x00002000 /* Cause - underflow */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
218 #define FCR31_CAUSE_I 0x00001000 /* Cause - inexact operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
219 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
220 #define FCR31_ENABLES_V 0x00000800 /* Enables - invalid operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
221 #define FCR31_ENABLES_Z 0x00000400 /* Enables - division by zero */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
222 #define FCR31_ENABLES_O 0x00000200 /* Enables - overflow */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
223 #define FCR31_ENABLES_U 0x00000100 /* Enables - underflow */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
224 #define FCR31_ENABLES_I 0x00000080 /* Enables - inexact operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
225 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
226 #define FCR31_FLAGS_V 0x00000040 /* Flags - invalid operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
227 #define FCR31_FLAGS_Z 0x00000020 /* Flags - division by zero */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
228 #define FCR31_FLAGS_O 0x00000010 /* Flags - overflow */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
229 #define FCR31_FLAGS_U 0x00000008 /* Flags - underflow */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
230 #define FCR31_FLAGS_I 0x00000004 /* Flags - inexact operation */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
231 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
232 #define FCR31_RMMASK 0x00000002 /* Rounding mode mask */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
233 #define FCR31_RM_RN 0 /* Round to nearest */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
234 #define FCR31_RM_RZ 1 /* Round to zero */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
235 #define FCR31_RM_RP 2 /* Round to +infinity */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
236 #define FCR31_RM_RM 3 /* Round to -infinity */ |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
237 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
2
diff
changeset
|
238 |
| 0 | 239 /* Cause register fields */ |
| 2 | 240 #define CAUSE_BD 0x80000000 /* Branch Delay */ |
| 241 #define CAUSE_CEMASK 0x30000000 /* Coprocessor Error */ | |
| 242 #define CAUSE_CESHIFT 28 /* Right justify CE */ | |
| 243 #define CAUSE_IPMASK 0x0000ff00 /* Interrupt Pending */ | |
| 244 #define CAUSE_IPSHIFT 8 /* Right justify IP */ | |
| 245 #define CAUSE_IP8 0x00008000 /* (Intr5) */ | |
| 246 #define CAUSE_IP7 0x00004000 /* (Intr4) */ | |
| 247 #define CAUSE_IP6 0x00002000 /* (Intr3) */ | |
| 248 #define CAUSE_IP5 0x00001000 /* (Intr2) */ | |
| 249 #define CAUSE_IP4 0x00000800 /* (Intr1) */ | |
| 250 #define CAUSE_IP3 0x00000400 /* (Intr0) */ | |
| 251 #define CAUSE_SW2 0x00000200 /* (Software Interrupt 1) */ | |
| 252 #define CAUSE_SW1 0x00000100 /* (Software Interrupt 0) */ | |
| 253 #define CAUSE_EXCMASK 0x0000007c /* Exception Code */ | |
| 254 #define CAUSE_EXCSHIFT 2 /* Right justify EXC */ | |
| 0 | 255 |
| 256 /* Exception Codes */ | |
| 2 | 257 #define EXC_INT 0 /* External interrupt */ |
| 258 #define EXC_MOD 1 /* TLB modification exception */ | |
| 259 #define EXC_TLBL 2 /* TLB miss (Load or Ifetch) */ | |
| 260 #define EXC_TLBS 3 /* TLB miss (Store) */ | |
| 261 #define EXC_ADEL 4 /* Address error (Load or Ifetch) */ | |
| 262 #define EXC_ADES 5 /* Address error (Store) */ | |
| 263 #define EXC_IBE 6 /* Bus error (Ifetch) */ | |
| 264 #define EXC_DBE 7 /* Bus error (data load or store) */ | |
| 265 #define EXC_SYS 8 /* System call */ | |
| 266 #define EXC_BP 9 /* Break point */ | |
| 267 #define EXC_RI 10 /* Reserved instruction */ | |
| 268 #define EXC_CPU 11 /* Coprocessor unusable */ | |
| 269 #define EXC_OVF 12 /* Arithmetic overflow */ | |
| 270 #define EXC_TRAP 13 /* Trap exception */ | |
| 271 #define EXC_FPE 15 /* Floating Point Exception */ | |
| 0 | 272 |
| 2 | 273 #endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS |
