diff options
| author | Thog <me@thog.eu> | 2020-01-13 03:04:28 +0100 |
|---|---|---|
| committer | jduncanator <1518948+jduncanator@users.noreply.github.com> | 2020-01-13 13:04:28 +1100 |
| commit | 892df335e6f633a5bcc2ce265749e15365ea2549 (patch) | |
| tree | 701f9033d7a56a4fa75b1ac5e2900cb26f9de487 /Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs | |
| parent | 5facc0c07f8a3f6fd0f39229044fe120501162a7 (diff) | |
Rework SVC handling (#883)
* Rework SVC handling
Prepare for 32 bits support.
* QueryMemory64 x1 is an output
* Pregenerate all SVC handler
Also clean up + 32 bits code path
* Address gdk's comments
* Simplify local setter loop
* Address jd's comments
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs index 0bf5e5fa..d5698e2b 100644 --- a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs +++ b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SvcHandler.cs @@ -20,15 +20,15 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall public void SvcCall(object sender, InstExceptionEventArgs e) { - Action<SvcHandler, ExecutionContext> svcFunc = SvcTable.GetSvcFunc(e.Id); + ExecutionContext context = (ExecutionContext)sender; + + Action<SvcHandler, ExecutionContext> svcFunc = context.IsAarch32 ? SvcTable.SvcTable32[e.Id] : SvcTable.SvcTable64[e.Id]; if (svcFunc == null) { throw new NotImplementedException($"SVC 0x{e.Id:X4} is not implemented."); } - ExecutionContext context = (ExecutionContext)sender; - svcFunc(this, context); PostSvcHandler(); |
