12#include "llvm/Support/Compiler.h"
15#ifdef DECLARE_REGISTER_INFOS_MIPS_STRUCT
18#define GPR_OFFSET(regname) \
19 (LLVM_EXTENSION offsetof(UserArea, gpr) + \
20 LLVM_EXTENSION offsetof(GPR_linux_mips, regname))
23#define FPR_OFFSET(regname) \
24 (LLVM_EXTENSION offsetof(UserArea, fpr) + \
25 LLVM_EXTENSION offsetof(FPR_linux_mips, regname))
28#define MSA_OFFSET(regname) \
29 (LLVM_EXTENSION offsetof(UserArea, msa) + \
30 LLVM_EXTENSION offsetof(MSA_linux_mips, regname))
33#define DEFINE_GPR(reg, alt, kind1, kind2, kind3) \
35 #reg, alt, sizeof(((GPR_linux_mips *) NULL)->reg) / 2, \
36 GPR_OFFSET(reg), eEncodingUint, eFormatHex, \
37 {kind1, kind2, kind3, ptrace_##reg##_mips, \
42const uint8_t dwarf_opcode_mips[] = {
43 llvm::dwarf::DW_OP_regx,
dwarf_sr_mips, llvm::dwarf::DW_OP_lit1,
44 llvm::dwarf::DW_OP_lit26, llvm::dwarf::DW_OP_shl, llvm::dwarf::DW_OP_and,
45 llvm::dwarf::DW_OP_lit26, llvm::dwarf::DW_OP_shr};
47#define DEFINE_FPR(reg, alt, kind1, kind2, kind3) \
49 #reg, alt, sizeof(((FPR_linux_mips *) NULL)->reg), \
50 FPR_OFFSET(reg), eEncodingIEEE754, eFormatFloat, \
51 {kind1, kind2, kind3, ptrace_##reg##_mips, \
53 NULL, NULL, dwarf_opcode_mips, \
54 sizeof(dwarf_opcode_mips) \
57#define DEFINE_FPR_INFO(reg, alt, kind1, kind2, kind3) \
59 #reg, alt, sizeof(((FPR_linux_mips *) NULL)->reg), \
60 FPR_OFFSET(reg), eEncodingUint, eFormatHex, \
61 {kind1, kind2, kind3, ptrace_##reg##_mips, \
66#define DEFINE_MSA(reg, alt, kind1, kind2, kind3, kind4) \
68 #reg, alt, sizeof(((MSA_linux_mips *) 0)->reg), \
69 MSA_OFFSET(reg), eEncodingVector, eFormatVectorOfUInt8, \
70 {kind1, kind2, kind3, kind4, \
75#define DEFINE_MSA_INFO(reg, alt, kind1, kind2, kind3, kind4) \
77 #reg, alt, sizeof(((MSA_linux_mips *) 0)->reg), \
78 MSA_OFFSET(reg), eEncodingUint, eFormatHex, \
79 {kind1, kind2, kind3, kind4, \
86static RegisterInfo g_register_infos_mips[] = {
292static_assert((
sizeof(g_register_infos_mips) /
293 sizeof(g_register_infos_mips[0])) == k_num_registers_mips,
294 "g_register_infos_mips has wrong number of register infos");
301#undef DEFINE_FPR_INFO
303#undef DEFINE_MSA_INFO
#define DEFINE_GPR(reg, alt, kind1, kind2, kind3, kind4)
#define LLDB_REGNUM_GENERIC_RA
#define LLDB_REGNUM_GENERIC_SP
#define LLDB_REGNUM_GENERIC_ARG4
#define LLDB_REGNUM_GENERIC_ARG3
#define LLDB_REGNUM_GENERIC_ARG1
#define LLDB_REGNUM_GENERIC_FLAGS
#define LLDB_INVALID_REGNUM
#define LLDB_REGNUM_GENERIC_ARG2
#define LLDB_REGNUM_GENERIC_PC
#define LLDB_REGNUM_GENERIC_FP