JitX64: Add accessors for ARMul_State::exclusive_tag and ARMul_State::exclusive_state

This commit is contained in:
MerryMage 2016-03-20 03:01:28 +00:00
parent b9a852b048
commit 4f012099a0
3 changed files with 16 additions and 1 deletions

View File

@ -171,4 +171,18 @@ Gen::OpArg JitX64::MJitStateVFlag() {
return Gen::MDisp(reg_alloc.JitStateReg(), offsetof(JitState, cpu_state) + offsetof(ARMul_State, VFlag)); return Gen::MDisp(reg_alloc.JitStateReg(), offsetof(JitState, cpu_state) + offsetof(ARMul_State, VFlag));
} }
Gen::OpArg JitX64::MJitStateExclusiveTag() {
static_assert(std::is_same<decltype(JitState::cpu_state), ARMul_State>::value, "JitState::cpu_state must be ARMul_State");
static_assert(std::is_same<decltype(ARMul_State::exclusive_tag), u32>::value, "exclusive_tag must be u32");
return Gen::MDisp(reg_alloc.JitStateReg(), offsetof(JitState, cpu_state) + offsetof(ARMul_State, exclusive_tag));
}
Gen::OpArg JitX64::MJitStateExclusiveState() {
static_assert(std::is_same<decltype(JitState::cpu_state), ARMul_State>::value, "JitState::cpu_state must be ARMul_State");
static_assert(std::is_same<decltype(ARMul_State::exclusive_state), bool>::value, "exclusive_state must be bool");
return Gen::MDisp(reg_alloc.JitStateReg(), offsetof(JitState, cpu_state) + offsetof(ARMul_State, exclusive_state));
}
} }

View File

@ -82,6 +82,8 @@ private:
Gen::OpArg MJitStateCFlag(); Gen::OpArg MJitStateCFlag();
Gen::OpArg MJitStateNFlag(); Gen::OpArg MJitStateNFlag();
Gen::OpArg MJitStateVFlag(); Gen::OpArg MJitStateVFlag();
Gen::OpArg MJitStateExclusiveTag();
Gen::OpArg MJitStateExclusiveState();
private: private:
struct CondManager { struct CondManager {

View File

@ -240,7 +240,6 @@ public:
// process for our purposes), not per ARMul_State (which tracks CPU core state). // process for our purposes), not per ARMul_State (which tracks CPU core state).
std::unordered_map<u32, int> instruction_cache; std::unordered_map<u32, int> instruction_cache;
private:
void ResetMPCoreCP15Registers(); void ResetMPCoreCP15Registers();
// Defines a reservation granule of 2 words, which protects the first 2 words starting at the tag. // Defines a reservation granule of 2 words, which protects the first 2 words starting at the tag.