blob: 15081f974c667dad263ffc20d804b695d6a9eb98 [file] [log] [blame]
//===-- 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