diff options
Diffstat (limited to 'source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h')
-rw-r--r-- | source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h | 114 |
1 files changed, 73 insertions, 41 deletions
diff --git a/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h b/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h index faefd329a8e4..e0b20792ae1f 100644 --- a/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h +++ b/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h @@ -1,4 +1,4 @@ -//===-- EmulateInstructionMIPS64.h ------------------------------------*- C++ -*-===// +//===-- EmulateInstructionMIPS64.h ------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -10,6 +10,14 @@ #ifndef EmulateInstructionMIPS64_h_ #define EmulateInstructionMIPS64_h_ +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Core/EmulateInstruction.h" +#include "lldb/Core/Error.h" +#include "lldb/Interpreter/OptionValue.h" + namespace llvm { class MCDisassembler; @@ -19,15 +27,13 @@ namespace llvm class MCContext; class MCInstrInfo; class MCInst; -} - -#include "lldb/Core/EmulateInstruction.h" -#include "lldb/Core/Error.h" -#include "lldb/Interpreter/OptionValue.h" +} // namespace llvm class EmulateInstructionMIPS64 : public lldb_private::EmulateInstruction { public: + EmulateInstructionMIPS64(const lldb_private::ArchSpec &arch); + static void Initialize (); @@ -60,57 +66,47 @@ public: return false; } - virtual lldb_private::ConstString - GetPluginName(); - - virtual lldb_private::ConstString - GetShortPluginName() - { - return GetPluginNameStatic(); - } + lldb_private::ConstString + GetPluginName() override; - virtual uint32_t - GetPluginVersion() + uint32_t + GetPluginVersion() override { return 1; } bool - SetTargetTriple (const lldb_private::ArchSpec &arch); + SetTargetTriple(const lldb_private::ArchSpec &arch) override; - EmulateInstructionMIPS64 (const lldb_private::ArchSpec &arch); - - virtual bool - SupportsEmulatingInstructionsOfType (lldb_private::InstructionType inst_type) + bool + SupportsEmulatingInstructionsOfType(lldb_private::InstructionType inst_type) override { return SupportsEmulatingInstructionsOfTypeStatic (inst_type); } - virtual bool - ReadInstruction (); + bool + ReadInstruction() override; - virtual bool - EvaluateInstruction (uint32_t evaluate_options); + bool + EvaluateInstruction(uint32_t evaluate_options) override; - virtual bool - TestEmulation (lldb_private::Stream *out_stream, - lldb_private::ArchSpec &arch, - lldb_private::OptionValueDictionary *test_data) + bool + TestEmulation(lldb_private::Stream *out_stream, + lldb_private::ArchSpec &arch, + lldb_private::OptionValueDictionary *test_data) override { return false; } - virtual bool - GetRegisterInfo (lldb::RegisterKind reg_kind, - uint32_t reg_num, - lldb_private::RegisterInfo ®_info); - - virtual bool - CreateFunctionEntryUnwind (lldb_private::UnwindPlan &unwind_plan); + bool + GetRegisterInfo(lldb::RegisterKind reg_kind, + uint32_t reg_num, + lldb_private::RegisterInfo ®_info) override; + bool + CreateFunctionEntryUnwind(lldb_private::UnwindPlan &unwind_plan) override; protected: - typedef struct { const char *op_name; @@ -128,13 +124,13 @@ protected: Emulate_SD (llvm::MCInst& insn); bool - Emulate_SW (llvm::MCInst& insn); + Emulate_LD (llvm::MCInst& insn); bool - Emulate_LW (llvm::MCInst& insn); + Emulate_LDST_Imm (llvm::MCInst& insn); bool - Emulate_LD (llvm::MCInst& insn); + Emulate_LDST_Reg (llvm::MCInst& insn); bool Emulate_BEQ (llvm::MCInst& insn); @@ -302,6 +298,42 @@ protected: Emulate_BC1ANY4T (llvm::MCInst& insn); bool + Emulate_BNZB (llvm::MCInst& insn); + + bool + Emulate_BNZH (llvm::MCInst& insn); + + bool + Emulate_BNZW (llvm::MCInst& insn); + + bool + Emulate_BNZD (llvm::MCInst& insn); + + bool + Emulate_BZB (llvm::MCInst& insn); + + bool + Emulate_BZH (llvm::MCInst& insn); + + bool + Emulate_BZW (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_BNZV (llvm::MCInst& insn); + + bool + Emulate_BZV (llvm::MCInst& insn); + + bool + Emulate_MSA_Branch_V (llvm::MCInst& insn, bool bnz); + + bool nonvolatile_reg_p (uint64_t regnum); const char * @@ -316,4 +348,4 @@ private: std::unique_ptr<llvm::MCInstrInfo> m_insn_info; }; -#endif // EmulateInstructionMIPS64_h_ +#endif // EmulateInstructionMIPS64_h_ |