| 1 | //===-- RegisterContext_mips.h --------------------------------*- C++ -*-===// |
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | |
| 9 | #ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXT_MIPS_H |
| 10 | #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXT_MIPS_H |
| 11 | |
| 12 | #include <cstddef> |
| 13 | #include <cstdint> |
| 14 | |
| 15 | // eh_frame and DWARF Register numbers (eRegisterKindEHFrame & |
| 16 | // eRegisterKindDWARF) |
| 17 | |
| 18 | enum { |
| 19 | // GP Registers |
| 20 | dwarf_zero_mips = 0, |
| 21 | dwarf_r1_mips, |
| 22 | dwarf_r2_mips, |
| 23 | dwarf_r3_mips, |
| 24 | dwarf_r4_mips, |
| 25 | dwarf_r5_mips, |
| 26 | dwarf_r6_mips, |
| 27 | dwarf_r7_mips, |
| 28 | dwarf_r8_mips, |
| 29 | dwarf_r9_mips, |
| 30 | dwarf_r10_mips, |
| 31 | dwarf_r11_mips, |
| 32 | dwarf_r12_mips, |
| 33 | dwarf_r13_mips, |
| 34 | dwarf_r14_mips, |
| 35 | dwarf_r15_mips, |
| 36 | dwarf_r16_mips, |
| 37 | dwarf_r17_mips, |
| 38 | dwarf_r18_mips, |
| 39 | dwarf_r19_mips, |
| 40 | dwarf_r20_mips, |
| 41 | dwarf_r21_mips, |
| 42 | dwarf_r22_mips, |
| 43 | dwarf_r23_mips, |
| 44 | dwarf_r24_mips, |
| 45 | dwarf_r25_mips, |
| 46 | dwarf_r26_mips, |
| 47 | dwarf_r27_mips, |
| 48 | dwarf_gp_mips, |
| 49 | dwarf_sp_mips, |
| 50 | dwarf_r30_mips, |
| 51 | dwarf_ra_mips, |
| 52 | dwarf_sr_mips, |
| 53 | dwarf_lo_mips, |
| 54 | dwarf_hi_mips, |
| 55 | dwarf_bad_mips, |
| 56 | dwarf_cause_mips, |
| 57 | dwarf_pc_mips, |
| 58 | dwarf_f0_mips, |
| 59 | dwarf_f1_mips, |
| 60 | dwarf_f2_mips, |
| 61 | dwarf_f3_mips, |
| 62 | dwarf_f4_mips, |
| 63 | dwarf_f5_mips, |
| 64 | dwarf_f6_mips, |
| 65 | dwarf_f7_mips, |
| 66 | dwarf_f8_mips, |
| 67 | dwarf_f9_mips, |
| 68 | dwarf_f10_mips, |
| 69 | dwarf_f11_mips, |
| 70 | dwarf_f12_mips, |
| 71 | dwarf_f13_mips, |
| 72 | dwarf_f14_mips, |
| 73 | dwarf_f15_mips, |
| 74 | dwarf_f16_mips, |
| 75 | dwarf_f17_mips, |
| 76 | dwarf_f18_mips, |
| 77 | dwarf_f19_mips, |
| 78 | dwarf_f20_mips, |
| 79 | dwarf_f21_mips, |
| 80 | dwarf_f22_mips, |
| 81 | dwarf_f23_mips, |
| 82 | dwarf_f24_mips, |
| 83 | dwarf_f25_mips, |
| 84 | dwarf_f26_mips, |
| 85 | dwarf_f27_mips, |
| 86 | dwarf_f28_mips, |
| 87 | dwarf_f29_mips, |
| 88 | dwarf_f30_mips, |
| 89 | dwarf_f31_mips, |
| 90 | dwarf_fcsr_mips, |
| 91 | dwarf_fir_mips, |
| 92 | dwarf_w0_mips, |
| 93 | dwarf_w1_mips, |
| 94 | dwarf_w2_mips, |
| 95 | dwarf_w3_mips, |
| 96 | dwarf_w4_mips, |
| 97 | dwarf_w5_mips, |
| 98 | dwarf_w6_mips, |
| 99 | dwarf_w7_mips, |
| 100 | dwarf_w8_mips, |
| 101 | dwarf_w9_mips, |
| 102 | dwarf_w10_mips, |
| 103 | dwarf_w11_mips, |
| 104 | dwarf_w12_mips, |
| 105 | dwarf_w13_mips, |
| 106 | dwarf_w14_mips, |
| 107 | dwarf_w15_mips, |
| 108 | dwarf_w16_mips, |
| 109 | dwarf_w17_mips, |
| 110 | dwarf_w18_mips, |
| 111 | dwarf_w19_mips, |
| 112 | dwarf_w20_mips, |
| 113 | dwarf_w21_mips, |
| 114 | dwarf_w22_mips, |
| 115 | dwarf_w23_mips, |
| 116 | dwarf_w24_mips, |
| 117 | dwarf_w25_mips, |
| 118 | dwarf_w26_mips, |
| 119 | dwarf_w27_mips, |
| 120 | dwarf_w28_mips, |
| 121 | dwarf_w29_mips, |
| 122 | dwarf_w30_mips, |
| 123 | dwarf_w31_mips, |
| 124 | dwarf_mcsr_mips, |
| 125 | dwarf_mir_mips, |
| 126 | dwarf_config5_mips, |
| 127 | dwarf_ic_mips, |
| 128 | dwarf_dummy_mips |
| 129 | }; |
| 130 | |
| 131 | enum { |
| 132 | dwarf_zero_mips64 = 0, |
| 133 | dwarf_r1_mips64, |
| 134 | dwarf_r2_mips64, |
| 135 | dwarf_r3_mips64, |
| 136 | dwarf_r4_mips64, |
| 137 | dwarf_r5_mips64, |
| 138 | dwarf_r6_mips64, |
| 139 | dwarf_r7_mips64, |
| 140 | dwarf_r8_mips64, |
| 141 | dwarf_r9_mips64, |
| 142 | dwarf_r10_mips64, |
| 143 | dwarf_r11_mips64, |
| 144 | dwarf_r12_mips64, |
| 145 | dwarf_r13_mips64, |
| 146 | dwarf_r14_mips64, |
| 147 | dwarf_r15_mips64, |
| 148 | dwarf_r16_mips64, |
| 149 | dwarf_r17_mips64, |
| 150 | dwarf_r18_mips64, |
| 151 | dwarf_r19_mips64, |
| 152 | dwarf_r20_mips64, |
| 153 | dwarf_r21_mips64, |
| 154 | dwarf_r22_mips64, |
| 155 | dwarf_r23_mips64, |
| 156 | dwarf_r24_mips64, |
| 157 | dwarf_r25_mips64, |
| 158 | dwarf_r26_mips64, |
| 159 | dwarf_r27_mips64, |
| 160 | dwarf_gp_mips64, |
| 161 | dwarf_sp_mips64, |
| 162 | dwarf_r30_mips64, |
| 163 | dwarf_ra_mips64, |
| 164 | dwarf_sr_mips64, |
| 165 | dwarf_lo_mips64, |
| 166 | dwarf_hi_mips64, |
| 167 | dwarf_bad_mips64, |
| 168 | dwarf_cause_mips64, |
| 169 | dwarf_pc_mips64, |
| 170 | dwarf_f0_mips64, |
| 171 | dwarf_f1_mips64, |
| 172 | dwarf_f2_mips64, |
| 173 | dwarf_f3_mips64, |
| 174 | dwarf_f4_mips64, |
| 175 | dwarf_f5_mips64, |
| 176 | dwarf_f6_mips64, |
| 177 | dwarf_f7_mips64, |
| 178 | dwarf_f8_mips64, |
| 179 | dwarf_f9_mips64, |
| 180 | dwarf_f10_mips64, |
| 181 | dwarf_f11_mips64, |
| 182 | dwarf_f12_mips64, |
| 183 | dwarf_f13_mips64, |
| 184 | dwarf_f14_mips64, |
| 185 | dwarf_f15_mips64, |
| 186 | dwarf_f16_mips64, |
| 187 | dwarf_f17_mips64, |
| 188 | dwarf_f18_mips64, |
| 189 | dwarf_f19_mips64, |
| 190 | dwarf_f20_mips64, |
| 191 | dwarf_f21_mips64, |
| 192 | dwarf_f22_mips64, |
| 193 | dwarf_f23_mips64, |
| 194 | dwarf_f24_mips64, |
| 195 | dwarf_f25_mips64, |
| 196 | dwarf_f26_mips64, |
| 197 | dwarf_f27_mips64, |
| 198 | dwarf_f28_mips64, |
| 199 | dwarf_f29_mips64, |
| 200 | dwarf_f30_mips64, |
| 201 | dwarf_f31_mips64, |
| 202 | dwarf_fcsr_mips64, |
| 203 | dwarf_fir_mips64, |
| 204 | dwarf_ic_mips64, |
| 205 | dwarf_dummy_mips64, |
| 206 | dwarf_w0_mips64, |
| 207 | dwarf_w1_mips64, |
| 208 | dwarf_w2_mips64, |
| 209 | dwarf_w3_mips64, |
| 210 | dwarf_w4_mips64, |
| 211 | dwarf_w5_mips64, |
| 212 | dwarf_w6_mips64, |
| 213 | dwarf_w7_mips64, |
| 214 | dwarf_w8_mips64, |
| 215 | dwarf_w9_mips64, |
| 216 | dwarf_w10_mips64, |
| 217 | dwarf_w11_mips64, |
| 218 | dwarf_w12_mips64, |
| 219 | dwarf_w13_mips64, |
| 220 | dwarf_w14_mips64, |
| 221 | dwarf_w15_mips64, |
| 222 | dwarf_w16_mips64, |
| 223 | dwarf_w17_mips64, |
| 224 | dwarf_w18_mips64, |
| 225 | dwarf_w19_mips64, |
| 226 | dwarf_w20_mips64, |
| 227 | dwarf_w21_mips64, |
| 228 | dwarf_w22_mips64, |
| 229 | dwarf_w23_mips64, |
| 230 | dwarf_w24_mips64, |
| 231 | dwarf_w25_mips64, |
| 232 | dwarf_w26_mips64, |
| 233 | dwarf_w27_mips64, |
| 234 | dwarf_w28_mips64, |
| 235 | dwarf_w29_mips64, |
| 236 | dwarf_w30_mips64, |
| 237 | dwarf_w31_mips64, |
| 238 | dwarf_mcsr_mips64, |
| 239 | dwarf_mir_mips64, |
| 240 | dwarf_config5_mips64, |
| 241 | }; |
| 242 | |
| 243 | // GP registers |
| 244 | struct GPR_linux_mips { |
| 245 | uint64_t zero; |
| 246 | uint64_t r1; |
| 247 | uint64_t r2; |
| 248 | uint64_t r3; |
| 249 | uint64_t r4; |
| 250 | uint64_t r5; |
| 251 | uint64_t r6; |
| 252 | uint64_t r7; |
| 253 | uint64_t r8; |
| 254 | uint64_t r9; |
| 255 | uint64_t r10; |
| 256 | uint64_t r11; |
| 257 | uint64_t r12; |
| 258 | uint64_t r13; |
| 259 | uint64_t r14; |
| 260 | uint64_t r15; |
| 261 | uint64_t r16; |
| 262 | uint64_t r17; |
| 263 | uint64_t r18; |
| 264 | uint64_t r19; |
| 265 | uint64_t r20; |
| 266 | uint64_t r21; |
| 267 | uint64_t r22; |
| 268 | uint64_t r23; |
| 269 | uint64_t r24; |
| 270 | uint64_t r25; |
| 271 | uint64_t r26; |
| 272 | uint64_t r27; |
| 273 | uint64_t gp; |
| 274 | uint64_t sp; |
| 275 | uint64_t r30; |
| 276 | uint64_t ra; |
| 277 | uint64_t mullo; |
| 278 | uint64_t mulhi; |
| 279 | uint64_t pc; |
| 280 | uint64_t badvaddr; |
| 281 | uint64_t sr; |
| 282 | uint64_t cause; |
| 283 | uint64_t config5; |
| 284 | }; |
| 285 | |
| 286 | struct FPR_linux_mips { |
| 287 | uint64_t f0; |
| 288 | uint64_t f1; |
| 289 | uint64_t f2; |
| 290 | uint64_t f3; |
| 291 | uint64_t f4; |
| 292 | uint64_t f5; |
| 293 | uint64_t f6; |
| 294 | uint64_t f7; |
| 295 | uint64_t f8; |
| 296 | uint64_t f9; |
| 297 | uint64_t f10; |
| 298 | uint64_t f11; |
| 299 | uint64_t f12; |
| 300 | uint64_t f13; |
| 301 | uint64_t f14; |
| 302 | uint64_t f15; |
| 303 | uint64_t f16; |
| 304 | uint64_t f17; |
| 305 | uint64_t f18; |
| 306 | uint64_t f19; |
| 307 | uint64_t f20; |
| 308 | uint64_t f21; |
| 309 | uint64_t f22; |
| 310 | uint64_t f23; |
| 311 | uint64_t f24; |
| 312 | uint64_t f25; |
| 313 | uint64_t f26; |
| 314 | uint64_t f27; |
| 315 | uint64_t f28; |
| 316 | uint64_t f29; |
| 317 | uint64_t f30; |
| 318 | uint64_t f31; |
| 319 | uint32_t fcsr; |
| 320 | uint32_t fir; |
| 321 | uint32_t config5; |
| 322 | }; |
| 323 | |
| 324 | struct MSAReg { |
| 325 | uint8_t byte[16]; |
| 326 | }; |
| 327 | |
| 328 | struct MSA_linux_mips { |
| 329 | MSAReg w0; |
| 330 | MSAReg w1; |
| 331 | MSAReg w2; |
| 332 | MSAReg w3; |
| 333 | MSAReg w4; |
| 334 | MSAReg w5; |
| 335 | MSAReg w6; |
| 336 | MSAReg w7; |
| 337 | MSAReg w8; |
| 338 | MSAReg w9; |
| 339 | MSAReg w10; |
| 340 | MSAReg w11; |
| 341 | MSAReg w12; |
| 342 | MSAReg w13; |
| 343 | MSAReg w14; |
| 344 | MSAReg w15; |
| 345 | MSAReg w16; |
| 346 | MSAReg w17; |
| 347 | MSAReg w18; |
| 348 | MSAReg w19; |
| 349 | MSAReg w20; |
| 350 | MSAReg w21; |
| 351 | MSAReg w22; |
| 352 | MSAReg w23; |
| 353 | MSAReg w24; |
| 354 | MSAReg w25; |
| 355 | MSAReg w26; |
| 356 | MSAReg w27; |
| 357 | MSAReg w28; |
| 358 | MSAReg w29; |
| 359 | MSAReg w30; |
| 360 | MSAReg w31; |
| 361 | uint32_t fcsr; /* FPU control status register */ |
| 362 | uint32_t fir; /* FPU implementaion revision */ |
| 363 | uint32_t mcsr; /* MSA control status register */ |
| 364 | uint32_t mir; /* MSA implementation revision */ |
| 365 | uint32_t config5; /* Config5 register */ |
| 366 | }; |
| 367 | |
| 368 | struct UserArea { |
| 369 | GPR_linux_mips gpr; // General purpose registers. |
| 370 | FPR_linux_mips fpr; // Floating point registers. |
| 371 | MSA_linux_mips msa; // MSA registers. |
| 372 | }; |
| 373 | |
| 374 | #endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXT_MIPS_H |
| 375 | |