aboutsummaryrefslogtreecommitdiff
path: root/externals/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'externals/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h')
-rw-r--r--externals/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h b/externals/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h
new file mode 100644
index 0000000000..e003522dde
--- /dev/null
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h
@@ -0,0 +1,30 @@
+/* This file is part of the dynarmic project.
+ * Copyright (c) 2022 MerryMage
+ * SPDX-License-Identifier: 0BSD
+ */
+
+#pragma once
+
+#include <mcl/stdint.hpp>
+
+namespace oaknut {
+struct CodeGenerator;
+} // namespace oaknut
+
+namespace Dynarmic::Backend::Arm64 {
+
+class FpsrManager {
+public:
+ explicit FpsrManager(oaknut::CodeGenerator& code, size_t state_fpsr_offset);
+
+ void Spill();
+ void Load();
+ void Overwrite() { fpsr_loaded = false; }
+
+private:
+ oaknut::CodeGenerator& code;
+ size_t state_fpsr_offset;
+ bool fpsr_loaded = false;
+};
+
+} // namespace Dynarmic::Backend::Arm64