summaryrefslogtreecommitdiffstats
path: root/src/core/arm/unicorn
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2020-04-24 06:07:38 +0200
committerLioncash <mathew1800@gmail.com>2020-04-24 06:20:58 +0200
commitcc84b48ce5b981bbdc737931c1030f8d3ff3f32b (patch)
tree975d5ac2e30ba6031a59d562b31698782f3cfcad /src/core/arm/unicorn
parentMerge pull request #3768 from H27CK/cmd-title-fmt (diff)
downloadyuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.tar
yuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.tar.gz
yuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.tar.bz2
yuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.tar.lz
yuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.tar.xz
yuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.tar.zst
yuzu-cc84b48ce5b981bbdc737931c1030f8d3ff3f32b.zip
Diffstat (limited to 'src/core/arm/unicorn')
-rw-r--r--src/core/arm/unicorn/arm_unicorn.cpp5
-rw-r--r--src/core/arm/unicorn/arm_unicorn.h7
2 files changed, 9 insertions, 3 deletions
diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp
index b96583123..e40e9626a 100644
--- a/src/core/arm/unicorn/arm_unicorn.cpp
+++ b/src/core/arm/unicorn/arm_unicorn.cpp
@@ -62,8 +62,9 @@ static bool UnmappedMemoryHook(uc_engine* uc, uc_mem_type type, u64 addr, int si
return false;
}
-ARM_Unicorn::ARM_Unicorn(System& system) : ARM_Interface{system} {
- CHECKED(uc_open(UC_ARCH_ARM64, UC_MODE_ARM, &uc));
+ARM_Unicorn::ARM_Unicorn(System& system, Arch architecture) : ARM_Interface{system} {
+ const auto arch = architecture == Arch::AArch32 ? UC_ARCH_ARM : UC_ARCH_ARM64;
+ CHECKED(uc_open(arch, UC_MODE_ARM, &uc));
auto fpv = 3 << 20;
CHECKED(uc_reg_write(uc, UC_ARM64_REG_CPACR_EL1, &fpv));
diff --git a/src/core/arm/unicorn/arm_unicorn.h b/src/core/arm/unicorn/arm_unicorn.h
index f30d13cb6..725c65085 100644
--- a/src/core/arm/unicorn/arm_unicorn.h
+++ b/src/core/arm/unicorn/arm_unicorn.h
@@ -15,7 +15,12 @@ class System;
class ARM_Unicorn final : public ARM_Interface {
public:
- explicit ARM_Unicorn(System& system);
+ enum class Arch {
+ AArch32, // 32-bit ARM
+ AArch64, // 64-bit ARM
+ };
+
+ explicit ARM_Unicorn(System& system, Arch architecture);
~ARM_Unicorn() override;
void SetPC(u64 pc) override;