aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hle
diff options
context:
space:
mode:
authorGravatar Lioncash <mathew1800@gmail.com>2015-07-21 03:51:36 -0400
committerGravatar Lioncash <mathew1800@gmail.com>2015-07-21 03:56:29 -0400
commitc2689b8c2c6f0ac023eddb25d98da6bc1fa95205 (patch)
tree4d5380eb7b032f0090370ea34556558e59eb5742 /src/core/hle
parentbaba0efcd10321167a62bb521bacb5f8c1ab336a (diff)
dyncom: Pass SVC immediates directly.
Previously it would just re-read the already decoded instruction and extract the immediate value.
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/svc.cpp7
-rw-r--r--src/core/hle/svc.h2
2 files changed, 4 insertions, 5 deletions
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