summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/svc/svc_secure_monitor_call.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-11-28 20:30:39 +0100
committerLiam <byteslice@airmail.cc>2023-12-04 16:37:16 +0100
commit45c87c7e6e841c11def43e5ab25160006dab6d77 (patch)
tree04a3ea0bd8c07389e17741aa28615e3b32ace2f7 /src/core/hle/kernel/svc/svc_secure_monitor_call.cpp
parentMerge pull request #12235 from liamwhite/flip-clip (diff)
downloadyuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.tar
yuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.tar.gz
yuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.tar.bz2
yuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.tar.lz
yuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.tar.xz
yuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.tar.zst
yuzu-45c87c7e6e841c11def43e5ab25160006dab6d77.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/kernel/svc/svc_secure_monitor_call.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/core/hle/kernel/svc/svc_secure_monitor_call.cpp b/src/core/hle/kernel/svc/svc_secure_monitor_call.cpp
index 62c781551..48b564ec8 100644
--- a/src/core/hle/kernel/svc/svc_secure_monitor_call.cpp
+++ b/src/core/hle/kernel/svc/svc_secure_monitor_call.cpp
@@ -22,31 +22,29 @@ void CallSecureMonitor64From32(Core::System& system, ilp32::SecureMonitorArgumen
// Custom ABI for CallSecureMonitor.
-void SvcWrap_CallSecureMonitor64(Core::System& system) {
- auto& core = system.CurrentPhysicalCore().ArmInterface();
- lp64::SecureMonitorArguments args{};
+void SvcWrap_CallSecureMonitor64(Core::System& system, std::span<uint64_t, 8> args) {
+ lp64::SecureMonitorArguments smc_args{};
for (int i = 0; i < 8; i++) {
- args.r[i] = core.GetReg(i);
+ smc_args.r[i] = args[i];
}
- CallSecureMonitor64(system, std::addressof(args));
+ CallSecureMonitor64(system, std::addressof(smc_args));
for (int i = 0; i < 8; i++) {
- core.SetReg(i, args.r[i]);
+ args[i] = smc_args.r[i];
}
}
-void SvcWrap_CallSecureMonitor64From32(Core::System& system) {
- auto& core = system.CurrentPhysicalCore().ArmInterface();
- ilp32::SecureMonitorArguments args{};
+void SvcWrap_CallSecureMonitor64From32(Core::System& system, std::span<uint64_t, 8> args) {
+ ilp32::SecureMonitorArguments smc_args{};
for (int i = 0; i < 8; i++) {
- args.r[i] = static_cast<u32>(core.GetReg(i));
+ smc_args.r[i] = static_cast<u32>(args[i]);
}
- CallSecureMonitor64From32(system, std::addressof(args));
+ CallSecureMonitor64From32(system, std::addressof(smc_args));
for (int i = 0; i < 8; i++) {
- core.SetReg(i, args.r[i]);
+ args[i] = smc_args.r[i];
}
}