From c2689b8c2c6f0ac023eddb25d98da6bc1fa95205 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 21 Jul 2015 03:51:36 -0400 Subject: dyncom: Pass SVC immediates directly. Previously it would just re-read the already decoded instruction and extract the immediate value. --- src/core/hle/svc.cpp | 7 +++---- src/core/hle/svc.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src/core/hle') diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 802ecc52..bdede964 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -833,8 +833,7 @@ static const FunctionDef SVC_Table[] = { Common::Profiling::TimingCategory profiler_svc("SVC Calls"); -static const FunctionDef* GetSVCInfo(u32 opcode) { - u32 func_num = opcode & 0xFFFFFF; // 8 bits +static const FunctionDef* GetSVCInfo(u32 func_num) { if (func_num >= ARRAY_SIZE(SVC_Table)) { LOG_ERROR(Kernel_SVC, "unknown svc=0x%02X", func_num); return nullptr; @@ -842,10 +841,10 @@ static const FunctionDef* GetSVCInfo(u32 opcode) { return &SVC_Table[func_num]; } -void CallSVC(u32 opcode) { +void CallSVC(u32 immediate) { Common::Profiling::ScopeTimer timer_svc(profiler_svc); - const FunctionDef *info = GetSVCInfo(opcode); + const FunctionDef* info = GetSVCInfo(immediate); if (info) { if (info->func) { info->func(); diff --git a/src/core/hle/svc.h b/src/core/hle/svc.h index 4389aa73..12de9ffb 100644 --- a/src/core/hle/svc.h +++ b/src/core/hle/svc.h @@ -41,6 +41,6 @@ enum ArbitrationType { namespace SVC { -void CallSVC(u32 opcode); +void CallSVC(u32 immediate); } // namespace -- cgit v1.2.3