aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/State/NativeContext.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ARMeilleure/State/NativeContext.cs')
-rw-r--r--ARMeilleure/State/NativeContext.cs19
1 files changed, 19 insertions, 0 deletions
diff --git a/ARMeilleure/State/NativeContext.cs b/ARMeilleure/State/NativeContext.cs
index 962783f5..f911f762 100644
--- a/ARMeilleure/State/NativeContext.cs
+++ b/ARMeilleure/State/NativeContext.cs
@@ -95,6 +95,25 @@ namespace ARMeilleure.State
GetStorage().Flags[(int)flag] = value ? 1u : 0u;
}
+ public unsafe uint GetPstate()
+ {
+ uint value = 0;
+ for (int flag = 0; flag < RegisterConsts.FlagsCount; flag++)
+ {
+ value |= GetStorage().Flags[flag] != 0 ? 1u << flag : 0u;
+ }
+ return value;
+ }
+
+ public unsafe void SetPstate(uint value)
+ {
+ for (int flag = 0; flag < RegisterConsts.FlagsCount; flag++)
+ {
+ uint bit = 1u << flag;
+ GetStorage().Flags[flag] = (value & bit) == bit ? 1u : 0u;
+ }
+ }
+
public unsafe bool GetFPStateFlag(FPState flag)
{
if ((uint)flag >= RegisterConsts.FpFlagsCount)