summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h')
-rw-r--r--lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h342
1 files changed, 133 insertions, 209 deletions
diff --git a/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h b/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h
index f1f92a06595..82c6a0a31e8 100644
--- a/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h
+++ b/lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h
@@ -1,4 +1,5 @@
-//===-- EmulateInstructionMIPS.h ------------------------------------*- C++ -*-===//
+//===-- EmulateInstructionMIPS.h ------------------------------------*- C++
+//-*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -10,286 +11,209 @@
#ifndef EmulateInstructionMIPS_h_
#define EmulateInstructionMIPS_h_
-namespace llvm
-{
- class MCDisassembler;
- class MCSubtargetInfo;
- class MCRegisterInfo;
- class MCAsmInfo;
- class MCContext;
- class MCInstrInfo;
- class MCInst;
+namespace llvm {
+class MCDisassembler;
+class MCSubtargetInfo;
+class MCRegisterInfo;
+class MCAsmInfo;
+class MCContext;
+class MCInstrInfo;
+class MCInst;
}
#include "lldb/Core/EmulateInstruction.h"
#include "lldb/Core/Error.h"
#include "lldb/Interpreter/OptionValue.h"
-class EmulateInstructionMIPS : public lldb_private::EmulateInstruction
-{
-public:
- static void
- Initialize ();
-
- static void
- Terminate ();
-
- static lldb_private::ConstString
- GetPluginNameStatic ();
-
- static const char *
- GetPluginDescriptionStatic ();
-
- static lldb_private::EmulateInstruction *
- CreateInstance (const lldb_private::ArchSpec &arch,
- lldb_private::InstructionType inst_type);
-
- static bool
- SupportsEmulatingInstructionsOfTypeStatic (lldb_private::InstructionType inst_type)
- {
- switch (inst_type)
- {
- case lldb_private::eInstructionTypeAny:
- case lldb_private::eInstructionTypePrologueEpilogue:
- case lldb_private::eInstructionTypePCModifying:
- return true;
-
- case lldb_private::eInstructionTypeAll:
- return false;
- }
- return false;
- }
+class EmulateInstructionMIPS : public lldb_private::EmulateInstruction {
+public:
+ static void Initialize();
- lldb_private::ConstString
- GetPluginName() override;
+ static void Terminate();
- uint32_t
- GetPluginVersion() override
- {
- return 1;
- }
+ static lldb_private::ConstString GetPluginNameStatic();
- bool
- SetTargetTriple (const lldb_private::ArchSpec &arch) override;
-
- EmulateInstructionMIPS (const lldb_private::ArchSpec &arch);
+ static const char *GetPluginDescriptionStatic();
- bool
- SupportsEmulatingInstructionsOfType (lldb_private::InstructionType inst_type) override
- {
- return SupportsEmulatingInstructionsOfTypeStatic (inst_type);
- }
+ static lldb_private::EmulateInstruction *
+ CreateInstance(const lldb_private::ArchSpec &arch,
+ lldb_private::InstructionType inst_type);
- bool
- ReadInstruction () override;
-
- bool
- EvaluateInstruction (uint32_t evaluate_options) override;
-
- bool
- SetInstruction (const lldb_private::Opcode &insn_opcode,
- const lldb_private::Address &inst_addr,
- lldb_private::Target *target) override;
-
- bool
- TestEmulation (lldb_private::Stream *out_stream,
- lldb_private::ArchSpec &arch,
- lldb_private::OptionValueDictionary *test_data) override
- {
- return false;
+ static bool SupportsEmulatingInstructionsOfTypeStatic(
+ lldb_private::InstructionType inst_type) {
+ switch (inst_type) {
+ case lldb_private::eInstructionTypeAny:
+ case lldb_private::eInstructionTypePrologueEpilogue:
+ case lldb_private::eInstructionTypePCModifying:
+ return true;
+
+ case lldb_private::eInstructionTypeAll:
+ return false;
}
+ return false;
+ }
+
+ lldb_private::ConstString GetPluginName() override;
+
+ uint32_t GetPluginVersion() override { return 1; }
+
+ bool SetTargetTriple(const lldb_private::ArchSpec &arch) override;
+
+ EmulateInstructionMIPS(const lldb_private::ArchSpec &arch);
+
+ bool SupportsEmulatingInstructionsOfType(
+ lldb_private::InstructionType inst_type) override {
+ return SupportsEmulatingInstructionsOfTypeStatic(inst_type);
+ }
+
+ bool ReadInstruction() override;
+
+ bool EvaluateInstruction(uint32_t evaluate_options) override;
+
+ bool SetInstruction(const lldb_private::Opcode &insn_opcode,
+ const lldb_private::Address &inst_addr,
+ lldb_private::Target *target) override;
- bool
- GetRegisterInfo (lldb::RegisterKind reg_kind,
- uint32_t reg_num,
- lldb_private::RegisterInfo &reg_info) override;
+ bool TestEmulation(lldb_private::Stream *out_stream,
+ lldb_private::ArchSpec &arch,
+ lldb_private::OptionValueDictionary *test_data) override {
+ return false;
+ }
- bool
- CreateFunctionEntryUnwind (lldb_private::UnwindPlan &unwind_plan) override;
+ bool GetRegisterInfo(lldb::RegisterKind reg_kind, uint32_t reg_num,
+ lldb_private::RegisterInfo &reg_info) override;
+ bool
+ CreateFunctionEntryUnwind(lldb_private::UnwindPlan &unwind_plan) override;
protected:
+ typedef struct {
+ const char *op_name;
+ bool (EmulateInstructionMIPS::*callback)(llvm::MCInst &insn);
+ const char *insn_name;
+ } MipsOpcode;
- typedef struct
- {
- const char *op_name;
- bool (EmulateInstructionMIPS::*callback) (llvm::MCInst& insn);
- const char *insn_name;
- } MipsOpcode;
-
- static MipsOpcode*
- GetOpcodeForInstruction (const char *op_name);
+ static MipsOpcode *GetOpcodeForInstruction(const char *op_name);
- uint32_t
- GetSizeOfInstruction (lldb_private::DataExtractor& data, uint64_t inst_addr);
+ uint32_t GetSizeOfInstruction(lldb_private::DataExtractor &data,
+ uint64_t inst_addr);
- bool
- Emulate_ADDiu (llvm::MCInst& insn);
+ bool Emulate_ADDiu(llvm::MCInst &insn);
- bool
- Emulate_SUBU_ADDU (llvm::MCInst& insn);
+ bool Emulate_SUBU_ADDU(llvm::MCInst &insn);
- bool
- Emulate_LUI (llvm::MCInst& insn);
+ bool Emulate_LUI(llvm::MCInst &insn);
- bool
- Emulate_SW (llvm::MCInst& insn);
+ bool Emulate_SW(llvm::MCInst &insn);
- bool
- Emulate_LW (llvm::MCInst& insn);
+ bool Emulate_LW(llvm::MCInst &insn);
- bool
- Emulate_ADDIUSP (llvm::MCInst& insn);
+ bool Emulate_ADDIUSP(llvm::MCInst &insn);
- bool
- Emulate_ADDIUS5 (llvm::MCInst& insn);
+ bool Emulate_ADDIUS5(llvm::MCInst &insn);
- bool
- Emulate_SWSP (llvm::MCInst& insn);
+ bool Emulate_SWSP(llvm::MCInst &insn);
- bool
- Emulate_SWM16_32 (llvm::MCInst& insn);
+ bool Emulate_SWM16_32(llvm::MCInst &insn);
- bool
- Emulate_LWSP (llvm::MCInst& insn);
+ bool Emulate_LWSP(llvm::MCInst &insn);
- bool
- Emulate_LWM16_32 (llvm::MCInst& insn);
+ bool Emulate_LWM16_32(llvm::MCInst &insn);
- bool
- Emulate_JRADDIUSP (llvm::MCInst& insn);
+ bool Emulate_JRADDIUSP(llvm::MCInst &insn);
- bool
- Emulate_LDST_Imm (llvm::MCInst& insn);
+ bool Emulate_LDST_Imm(llvm::MCInst &insn);
- bool
- Emulate_LDST_Reg (llvm::MCInst& insn);
+ bool Emulate_LDST_Reg(llvm::MCInst &insn);
- bool
- Emulate_BXX_3ops (llvm::MCInst& insn);
+ bool Emulate_BXX_3ops(llvm::MCInst &insn);
- bool
- Emulate_BXX_3ops_C (llvm::MCInst& insn);
+ bool Emulate_BXX_3ops_C(llvm::MCInst &insn);
- bool
- Emulate_BXX_2ops (llvm::MCInst& insn);
+ bool Emulate_BXX_2ops(llvm::MCInst &insn);
- bool
- Emulate_BXX_2ops_C (llvm::MCInst& insn);
+ bool Emulate_BXX_2ops_C(llvm::MCInst &insn);
- bool
- Emulate_Bcond_Link_C (llvm::MCInst& insn);
+ bool Emulate_Bcond_Link_C(llvm::MCInst &insn);
- bool
- Emulate_Bcond_Link (llvm::MCInst& insn);
+ bool Emulate_Bcond_Link(llvm::MCInst &insn);
- bool
- Emulate_FP_branch (llvm::MCInst& insn);
+ bool Emulate_FP_branch(llvm::MCInst &insn);
- bool
- Emulate_3D_branch (llvm::MCInst& insn);
+ bool Emulate_3D_branch(llvm::MCInst &insn);
- bool
- Emulate_BAL (llvm::MCInst& insn);
+ bool Emulate_BAL(llvm::MCInst &insn);
- bool
- Emulate_BALC (llvm::MCInst& insn);
+ bool Emulate_BALC(llvm::MCInst &insn);
- bool
- Emulate_BC (llvm::MCInst& insn);
+ bool Emulate_BC(llvm::MCInst &insn);
- bool
- Emulate_J (llvm::MCInst& insn);
+ bool Emulate_J(llvm::MCInst &insn);
- bool
- Emulate_JAL (llvm::MCInst& insn);
+ bool Emulate_JAL(llvm::MCInst &insn);
- bool
- Emulate_JALR (llvm::MCInst& insn);
+ bool Emulate_JALR(llvm::MCInst &insn);
- bool
- Emulate_JIALC (llvm::MCInst& insn);
+ bool Emulate_JIALC(llvm::MCInst &insn);
- bool
- Emulate_JIC (llvm::MCInst& insn);
+ bool Emulate_JIC(llvm::MCInst &insn);
- bool
- Emulate_JR (llvm::MCInst& insn);
+ bool Emulate_JR(llvm::MCInst &insn);
- bool
- Emulate_BC1EQZ (llvm::MCInst& insn);
+ bool Emulate_BC1EQZ(llvm::MCInst &insn);
- bool
- Emulate_BC1NEZ (llvm::MCInst& insn);
+ bool Emulate_BC1NEZ(llvm::MCInst &insn);
- bool
- Emulate_BNZB (llvm::MCInst& insn);
+ bool Emulate_BNZB(llvm::MCInst &insn);
- bool
- Emulate_BNZH (llvm::MCInst& insn);
+ bool Emulate_BNZH(llvm::MCInst &insn);
- bool
- Emulate_BNZW (llvm::MCInst& insn);
+ bool Emulate_BNZW(llvm::MCInst &insn);
- bool
- Emulate_BNZD (llvm::MCInst& insn);
+ bool Emulate_BNZD(llvm::MCInst &insn);
- bool
- Emulate_BZB (llvm::MCInst& insn);
+ bool Emulate_BZB(llvm::MCInst &insn);
- bool
- Emulate_BZH (llvm::MCInst& insn);
+ bool Emulate_BZH(llvm::MCInst &insn);
- bool
- Emulate_BZW (llvm::MCInst& insn);
+ bool Emulate_BZW(llvm::MCInst &insn);
- bool
- Emulate_BZD (llvm::MCInst& insn);
+ bool Emulate_BZD(llvm::MCInst &insn);
- bool
- Emulate_MSA_Branch_DF (llvm::MCInst& insn, int element_byte_size, bool bnz);
+ bool Emulate_MSA_Branch_DF(llvm::MCInst &insn, int element_byte_size,
+ bool bnz);
- bool
- Emulate_BNZV (llvm::MCInst& insn);
+ bool Emulate_BNZV(llvm::MCInst &insn);
- bool
- Emulate_BZV (llvm::MCInst& insn);
+ bool Emulate_BZV(llvm::MCInst &insn);
- bool
- Emulate_MSA_Branch_V (llvm::MCInst& insn, bool bnz);
+ bool Emulate_MSA_Branch_V(llvm::MCInst &insn, bool bnz);
- bool
- Emulate_B16_MM (llvm::MCInst& insn);
+ bool Emulate_B16_MM(llvm::MCInst &insn);
- bool
- Emulate_Branch_MM (llvm::MCInst& insn);
+ bool Emulate_Branch_MM(llvm::MCInst &insn);
- bool
- Emulate_JALRx16_MM (llvm::MCInst& insn);
+ bool Emulate_JALRx16_MM(llvm::MCInst &insn);
- bool
- Emulate_JALx (llvm::MCInst& insn);
+ bool Emulate_JALx(llvm::MCInst &insn);
- bool
- Emulate_JALRS (llvm::MCInst& insn);
+ bool Emulate_JALRS(llvm::MCInst &insn);
- bool
- nonvolatile_reg_p (uint32_t regnum);
+ bool nonvolatile_reg_p(uint32_t regnum);
- const char *
- GetRegisterName (unsigned reg_num, bool altnernate_name);
+ const char *GetRegisterName(unsigned reg_num, bool altnernate_name);
private:
- std::unique_ptr<llvm::MCDisassembler> m_disasm;
- std::unique_ptr<llvm::MCDisassembler> m_alt_disasm;
- std::unique_ptr<llvm::MCSubtargetInfo> m_subtype_info;
- std::unique_ptr<llvm::MCSubtargetInfo> m_alt_subtype_info;
- std::unique_ptr<llvm::MCRegisterInfo> m_reg_info;
- std::unique_ptr<llvm::MCAsmInfo> m_asm_info;
- std::unique_ptr<llvm::MCContext> m_context;
- std::unique_ptr<llvm::MCInstrInfo> m_insn_info;
- uint32_t m_next_inst_size;
- bool m_use_alt_disaasm;
+ std::unique_ptr<llvm::MCDisassembler> m_disasm;
+ std::unique_ptr<llvm::MCDisassembler> m_alt_disasm;
+ std::unique_ptr<llvm::MCSubtargetInfo> m_subtype_info;
+ std::unique_ptr<llvm::MCSubtargetInfo> m_alt_subtype_info;
+ std::unique_ptr<llvm::MCRegisterInfo> m_reg_info;
+ std::unique_ptr<llvm::MCAsmInfo> m_asm_info;
+ std::unique_ptr<llvm::MCContext> m_context;
+ std::unique_ptr<llvm::MCInstrInfo> m_insn_info;
+ uint32_t m_next_inst_size;
+ bool m_use_alt_disaasm;
};
-#endif // EmulateInstructionMIPS_h_
+#endif // EmulateInstructionMIPS_h_
OpenPOWER on IntegriCloud