File indexing completed on 2024-05-12 04:39:44
0001 /* 0002 SPDX-FileCopyrightText: 2013 Vlas Puhov <vlas.puhov@mail.ru> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef REGISTERCONTROLLER_ARM_H 0008 #define REGISTERCONTROLLER_ARM_H 0009 0010 0011 #include "registercontroller.h" 0012 0013 namespace KDevMI { 0014 class MIDebugSession; 0015 0016 class RegisterController_Arm : public IRegisterController 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 0022 explicit RegisterController_Arm(MIDebugSession* debugSession = nullptr, QObject* parent = nullptr); 0023 0024 QVector<GroupsName> namesOfRegisterGroups() const override; 0025 0026 public Q_SLOTS: 0027 void updateRegisters(const GroupsName& group = GroupsName()) override; 0028 0029 protected: 0030 RegistersGroup registersFromGroup(const GroupsName& group) const override; 0031 0032 QStringList registerNamesForGroup(const GroupsName& group) const override; 0033 0034 void updateValuesForRegisters(RegistersGroup* registers) const override; 0035 0036 void setRegisterValueForGroup(const GroupsName& group, const Register& reg) override; 0037 0038 enum ArmRegisterGroups {General, Flags, VFP_single, VFP_double, VFP_quad, LAST_REGISTER}; 0039 0040 GroupsName enumToGroupName(ArmRegisterGroups group) const; 0041 //None of functions below checks value for validity, if value is invalid updateRegistres() will restore the previous state. 0042 0043 void setVFPS_Register(const Register& reg); 0044 void setVFPD_Register(const Register& reg); 0045 void setVFPQ_Register(const Register& reg); 0046 0047 static QVector<QStringList> m_registerNames; 0048 0049 private: 0050 void initRegisterNames(); 0051 0052 static FlagRegister m_cpsr; 0053 0054 bool m_registerNamesInitialized = false; 0055 }; 0056 0057 } // end of namespace KDevMI 0058 0059 #endif // REGISTERCONTROLLER_ARM_H