| //===-- RegisterContext_mips.h --------------------------------*- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXT_MIPS_H | |
| #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXT_MIPS_H | |
| #include <cstddef> | |
| #include <cstdint> | |
| // eh_frame and DWARF Register numbers (eRegisterKindEHFrame & | |
| // eRegisterKindDWARF) | |
| enum { | |
| // GP Registers | |
| dwarf_zero_mips = 0, | |
| dwarf_r1_mips, | |
| dwarf_r2_mips, | |
| dwarf_r3_mips, | |
| dwarf_r4_mips, | |
| dwarf_r5_mips, | |
| dwarf_r6_mips, | |
| dwarf_r7_mips, | |
| dwarf_r8_mips, | |
| dwarf_r9_mips, | |
| dwarf_r10_mips, | |
| dwarf_r11_mips, | |
| dwarf_r12_mips, | |
| dwarf_r13_mips, | |
| dwarf_r14_mips, | |
| dwarf_r15_mips, | |
| dwarf_r16_mips, | |
| dwarf_r17_mips, | |
| dwarf_r18_mips, | |
| dwarf_r19_mips, | |
| dwarf_r20_mips, | |
| dwarf_r21_mips, | |
| dwarf_r22_mips, | |
| dwarf_r23_mips, | |
| dwarf_r24_mips, | |
| dwarf_r25_mips, | |
| dwarf_r26_mips, | |
| dwarf_r27_mips, | |
| dwarf_gp_mips, | |
| dwarf_sp_mips, | |
| dwarf_r30_mips, | |
| dwarf_ra_mips, | |
| dwarf_sr_mips, | |
| dwarf_lo_mips, | |
| dwarf_hi_mips, | |
| dwarf_bad_mips, | |
| dwarf_cause_mips, | |
| dwarf_pc_mips, | |
| dwarf_f0_mips, | |
| dwarf_f1_mips, | |
| dwarf_f2_mips, | |
| dwarf_f3_mips, | |
| dwarf_f4_mips, | |
| dwarf_f5_mips, | |
| dwarf_f6_mips, | |
| dwarf_f7_mips, | |
| dwarf_f8_mips, | |
| dwarf_f9_mips, | |
| dwarf_f10_mips, | |
| dwarf_f11_mips, | |
| dwarf_f12_mips, | |
| dwarf_f13_mips, | |
| dwarf_f14_mips, | |
| dwarf_f15_mips, | |
| dwarf_f16_mips, | |
| dwarf_f17_mips, | |
| dwarf_f18_mips, | |
| dwarf_f19_mips, | |
| dwarf_f20_mips, | |
| dwarf_f21_mips, | |
| dwarf_f22_mips, | |
| dwarf_f23_mips, | |
| dwarf_f24_mips, | |
| dwarf_f25_mips, | |
| dwarf_f26_mips, | |
| dwarf_f27_mips, | |
| dwarf_f28_mips, | |
| dwarf_f29_mips, | |
| dwarf_f30_mips, | |
| dwarf_f31_mips, | |
| dwarf_fcsr_mips, | |
| dwarf_fir_mips, | |
| dwarf_w0_mips, | |
| dwarf_w1_mips, | |
| dwarf_w2_mips, | |
| dwarf_w3_mips, | |
| dwarf_w4_mips, | |
| dwarf_w5_mips, | |
| dwarf_w6_mips, | |
| dwarf_w7_mips, | |
| dwarf_w8_mips, | |
| dwarf_w9_mips, | |
| dwarf_w10_mips, | |
| dwarf_w11_mips, | |
| dwarf_w12_mips, | |
| dwarf_w13_mips, | |
| dwarf_w14_mips, | |
| dwarf_w15_mips, | |
| dwarf_w16_mips, | |
| dwarf_w17_mips, | |
| dwarf_w18_mips, | |
| dwarf_w19_mips, | |
| dwarf_w20_mips, | |
| dwarf_w21_mips, | |
| dwarf_w22_mips, | |
| dwarf_w23_mips, | |
| dwarf_w24_mips, | |
| dwarf_w25_mips, | |
| dwarf_w26_mips, | |
| dwarf_w27_mips, | |
| dwarf_w28_mips, | |
| dwarf_w29_mips, | |
| dwarf_w30_mips, | |
| dwarf_w31_mips, | |
| dwarf_mcsr_mips, | |
| dwarf_mir_mips, | |
| dwarf_config5_mips, | |
| dwarf_ic_mips, | |
| dwarf_dummy_mips | |
| }; | |
| enum { | |
| dwarf_zero_mips64 = 0, | |
| dwarf_r1_mips64, | |
| dwarf_r2_mips64, | |
| dwarf_r3_mips64, | |
| dwarf_r4_mips64, | |
| dwarf_r5_mips64, | |
| dwarf_r6_mips64, | |
| dwarf_r7_mips64, | |
| dwarf_r8_mips64, | |
| dwarf_r9_mips64, | |
| dwarf_r10_mips64, | |
| dwarf_r11_mips64, | |
| dwarf_r12_mips64, | |
| dwarf_r13_mips64, | |
| dwarf_r14_mips64, | |
| dwarf_r15_mips64, | |
| dwarf_r16_mips64, | |
| dwarf_r17_mips64, | |
| dwarf_r18_mips64, | |
| dwarf_r19_mips64, | |
| dwarf_r20_mips64, | |
| dwarf_r21_mips64, | |
| dwarf_r22_mips64, | |
| dwarf_r23_mips64, | |
| dwarf_r24_mips64, | |
| dwarf_r25_mips64, | |
| dwarf_r26_mips64, | |
| dwarf_r27_mips64, | |
| dwarf_gp_mips64, | |
| dwarf_sp_mips64, | |
| dwarf_r30_mips64, | |
| dwarf_ra_mips64, | |
| dwarf_sr_mips64, | |
| dwarf_lo_mips64, | |
| dwarf_hi_mips64, | |
| dwarf_bad_mips64, | |
| dwarf_cause_mips64, | |
| dwarf_pc_mips64, | |
| dwarf_f0_mips64, | |
| dwarf_f1_mips64, | |
| dwarf_f2_mips64, | |
| dwarf_f3_mips64, | |
| dwarf_f4_mips64, | |
| dwarf_f5_mips64, | |
| dwarf_f6_mips64, | |
| dwarf_f7_mips64, | |
| dwarf_f8_mips64, | |
| dwarf_f9_mips64, | |
| dwarf_f10_mips64, | |
| dwarf_f11_mips64, | |
| dwarf_f12_mips64, | |
| dwarf_f13_mips64, | |
| dwarf_f14_mips64, | |
| dwarf_f15_mips64, | |
| dwarf_f16_mips64, | |
| dwarf_f17_mips64, | |
| dwarf_f18_mips64, | |
| dwarf_f19_mips64, | |
| dwarf_f20_mips64, | |
| dwarf_f21_mips64, | |
| dwarf_f22_mips64, | |
| dwarf_f23_mips64, | |
| dwarf_f24_mips64, | |
| dwarf_f25_mips64, | |
| dwarf_f26_mips64, | |
| dwarf_f27_mips64, | |
| dwarf_f28_mips64, | |
| dwarf_f29_mips64, | |
| dwarf_f30_mips64, | |
| dwarf_f31_mips64, | |
| dwarf_fcsr_mips64, | |
| dwarf_fir_mips64, | |
| dwarf_ic_mips64, | |
| dwarf_dummy_mips64, | |
| dwarf_w0_mips64, | |
| dwarf_w1_mips64, | |
| dwarf_w2_mips64, | |
| dwarf_w3_mips64, | |
| dwarf_w4_mips64, | |
| dwarf_w5_mips64, | |
| dwarf_w6_mips64, | |
| dwarf_w7_mips64, | |
| dwarf_w8_mips64, | |
| dwarf_w9_mips64, | |
| dwarf_w10_mips64, | |
| dwarf_w11_mips64, | |
| dwarf_w12_mips64, | |
| dwarf_w13_mips64, | |
| dwarf_w14_mips64, | |
| dwarf_w15_mips64, | |
| dwarf_w16_mips64, | |
| dwarf_w17_mips64, | |
| dwarf_w18_mips64, | |
| dwarf_w19_mips64, | |
| dwarf_w20_mips64, | |
| dwarf_w21_mips64, | |
| dwarf_w22_mips64, | |
| dwarf_w23_mips64, | |
| dwarf_w24_mips64, | |
| dwarf_w25_mips64, | |
| dwarf_w26_mips64, | |
| dwarf_w27_mips64, | |
| dwarf_w28_mips64, | |
| dwarf_w29_mips64, | |
| dwarf_w30_mips64, | |
| dwarf_w31_mips64, | |
| dwarf_mcsr_mips64, | |
| dwarf_mir_mips64, | |
| dwarf_config5_mips64, | |
| }; | |
| // GP registers | |
| struct GPR_linux_mips { | |
| uint64_t zero; | |
| uint64_t r1; | |
| uint64_t r2; | |
| uint64_t r3; | |
| uint64_t r4; | |
| uint64_t r5; | |
| uint64_t r6; | |
| uint64_t r7; | |
| uint64_t r8; | |
| uint64_t r9; | |
| uint64_t r10; | |
| uint64_t r11; | |
| uint64_t r12; | |
| uint64_t r13; | |
| uint64_t r14; | |
| uint64_t r15; | |
| uint64_t r16; | |
| uint64_t r17; | |
| uint64_t r18; | |
| uint64_t r19; | |
| uint64_t r20; | |
| uint64_t r21; | |
| uint64_t r22; | |
| uint64_t r23; | |
| uint64_t r24; | |
| uint64_t r25; | |
| uint64_t r26; | |
| uint64_t r27; | |
| uint64_t gp; | |
| uint64_t sp; | |
| uint64_t r30; | |
| uint64_t ra; | |
| uint64_t mullo; | |
| uint64_t mulhi; | |
| uint64_t pc; | |
| uint64_t badvaddr; | |
| uint64_t sr; | |
| uint64_t cause; | |
| uint64_t config5; | |
| }; | |
| struct FPR_linux_mips { | |
| uint64_t f0; | |
| uint64_t f1; | |
| uint64_t f2; | |
| uint64_t f3; | |
| uint64_t f4; | |
| uint64_t f5; | |
| uint64_t f6; | |
| uint64_t f7; | |
| uint64_t f8; | |
| uint64_t f9; | |
| uint64_t f10; | |
| uint64_t f11; | |
| uint64_t f12; | |
| uint64_t f13; | |
| uint64_t f14; | |
| uint64_t f15; | |
| uint64_t f16; | |
| uint64_t f17; | |
| uint64_t f18; | |
| uint64_t f19; | |
| uint64_t f20; | |
| uint64_t f21; | |
| uint64_t f22; | |
| uint64_t f23; | |
| uint64_t f24; | |
| uint64_t f25; | |
| uint64_t f26; | |
| uint64_t f27; | |
| uint64_t f28; | |
| uint64_t f29; | |
| uint64_t f30; | |
| uint64_t f31; | |
| uint32_t fcsr; | |
| uint32_t fir; | |
| uint32_t config5; | |
| }; | |
| struct MSAReg { | |
| uint8_t byte[16]; | |
| }; | |
| struct MSA_linux_mips { | |
| MSAReg w0; | |
| MSAReg w1; | |
| MSAReg w2; | |
| MSAReg w3; | |
| MSAReg w4; | |
| MSAReg w5; | |
| MSAReg w6; | |
| MSAReg w7; | |
| MSAReg w8; | |
| MSAReg w9; | |
| MSAReg w10; | |
| MSAReg w11; | |
| MSAReg w12; | |
| MSAReg w13; | |
| MSAReg w14; | |
| MSAReg w15; | |
| MSAReg w16; | |
| MSAReg w17; | |
| MSAReg w18; | |
| MSAReg w19; | |
| MSAReg w20; | |
| MSAReg w21; | |
| MSAReg w22; | |
| MSAReg w23; | |
| MSAReg w24; | |
| MSAReg w25; | |
| MSAReg w26; | |
| MSAReg w27; | |
| MSAReg w28; | |
| MSAReg w29; | |
| MSAReg w30; | |
| MSAReg w31; | |
| uint32_t fcsr; /* FPU control status register */ | |
| uint32_t fir; /* FPU implementaion revision */ | |
| uint32_t mcsr; /* MSA control status register */ | |
| uint32_t mir; /* MSA implementation revision */ | |
| uint32_t config5; /* Config5 register */ | |
| }; | |
| struct UserArea { | |
| GPR_linux_mips gpr; // General purpose registers. | |
| FPR_linux_mips fpr; // Floating point registers. | |
| MSA_linux_mips msa; // MSA registers. | |
| }; | |
| #endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXT_MIPS_H |