|
|
|
@ -11,278 +11,312 @@ |
|
|
|
|
|
|
|
namespace Kernel { |
|
|
|
|
|
|
|
static inline u64 Param(int n) { |
|
|
|
return Core::CurrentArmInterface().GetReg(n); |
|
|
|
static inline u64 Param(const Core::System& system, int n) { |
|
|
|
return system.CurrentArmInterface().GetReg(n); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* HLE a function return from the current ARM userland process |
|
|
|
* @param res Result to return |
|
|
|
* @param system System context |
|
|
|
* @param result Result to return |
|
|
|
*/ |
|
|
|
static inline void FuncReturn(u64 res) { |
|
|
|
Core::CurrentArmInterface().SetReg(0, res); |
|
|
|
static inline void FuncReturn(Core::System& system, u64 result) { |
|
|
|
system.CurrentArmInterface().SetReg(0, result); |
|
|
|
} |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
// Function wrappers that return type ResultCode |
|
|
|
|
|
|
|
template <ResultCode func(u64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0)).raw); |
|
|
|
template <ResultCode func(Core::System&, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0)).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(static_cast<u32>(Param(0))).raw); |
|
|
|
template <ResultCode func(Core::System&, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, static_cast<u32>(Param(system, 0))).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(static_cast<u32>(Param(0)), static_cast<u32>(Param(1))).raw); |
|
|
|
template <ResultCode func(Core::System&, u32, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn( |
|
|
|
system, |
|
|
|
func(system, static_cast<u32>(Param(system, 0)), static_cast<u32>(Param(system, 1))).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param = 0; |
|
|
|
const u32 retval = func(¶m).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m).raw; |
|
|
|
system.CurrentArmInterface().SetReg(1, param); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
u32 retval = func(¶m_1, static_cast<u32>(Param(1))).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, static_cast<u32>(Param(system, 1))).raw; |
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u32*)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u32*)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
u32 param_2 = 0; |
|
|
|
const u32 retval = func(¶m_1, ¶m_2).raw; |
|
|
|
const u32 retval = func(system, ¶m_1, ¶m_2).raw; |
|
|
|
|
|
|
|
auto& arm_interface = Core::CurrentArmInterface(); |
|
|
|
auto& arm_interface = system.CurrentArmInterface(); |
|
|
|
arm_interface.SetReg(1, param_1); |
|
|
|
arm_interface.SetReg(2, param_2); |
|
|
|
|
|
|
|
FuncReturn(retval); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
const u32 retval = func(¶m_1, Param(1)).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, Param(system, 1)).raw; |
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u64, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u64, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
const u32 retval = func(¶m_1, Param(1), static_cast<u32>(Param(2))).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = |
|
|
|
func(system, ¶m_1, Param(system, 1), static_cast<u32>(Param(system, 2))).raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64*, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u64*, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u64 param_1 = 0; |
|
|
|
const u32 retval = func(¶m_1, static_cast<u32>(Param(1))).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, static_cast<u32>(Param(system, 1))).raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, s32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), static_cast<s32>(Param(1))).raw); |
|
|
|
template <ResultCode func(Core::System&, u64, s32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), static_cast<s32>(Param(system, 1))).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), static_cast<u32>(Param(1))).raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), static_cast<u32>(Param(system, 1))).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64*, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u64*, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u64 param_1 = 0; |
|
|
|
u32 retval = func(¶m_1, Param(1)).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, Param(system, 1)).raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64*, u32, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u64*, u32, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u64 param_1 = 0; |
|
|
|
u32 retval = func(¶m_1, static_cast<u32>(Param(1)), static_cast<u32>(Param(2))).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, static_cast<u32>(Param(system, 1)), |
|
|
|
static_cast<u32>(Param(system, 2))) |
|
|
|
.raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(static_cast<u32>(Param(0)), Param(1)).raw); |
|
|
|
template <ResultCode func(Core::System&, u32, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, static_cast<u32>(Param(system, 0)), Param(system, 1)).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u32, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(static_cast<u32>(Param(0)), static_cast<u32>(Param(1)), Param(2)).raw); |
|
|
|
template <ResultCode func(Core::System&, u32, u32, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, static_cast<u32>(Param(system, 0)), |
|
|
|
static_cast<u32>(Param(system, 1)), Param(system, 2)) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u32*, u64*)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32, u32*, u64*)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
u64 param_2 = 0; |
|
|
|
ResultCode retval = func(static_cast<u32>(Param(2)), ¶m_1, ¶m_2); |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
Core::CurrentArmInterface().SetReg(2, param_2); |
|
|
|
FuncReturn(retval.raw); |
|
|
|
} |
|
|
|
const ResultCode retval = func(system, static_cast<u32>(Param(system, 2)), ¶m_1, ¶m_2); |
|
|
|
|
|
|
|
template <ResultCode func(u64, u64, u32, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn( |
|
|
|
func(Param(0), Param(1), static_cast<u32>(Param(2)), static_cast<u32>(Param(3))).raw); |
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
system.CurrentArmInterface().SetReg(2, param_2); |
|
|
|
FuncReturn(system, retval.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u64, u32, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), Param(1), static_cast<u32>(Param(2)), Param(3)).raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u64, u32, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), Param(system, 1), |
|
|
|
static_cast<u32>(Param(system, 2)), static_cast<u32>(Param(system, 3))) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u64, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(static_cast<u32>(Param(0)), Param(1), static_cast<u32>(Param(2))).raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u64, u32, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), Param(system, 1), |
|
|
|
static_cast<u32>(Param(system, 2)), Param(system, 3)) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u64, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), Param(1), Param(2)).raw); |
|
|
|
template <ResultCode func(Core::System&, u32, u64, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, static_cast<u32>(Param(system, 0)), Param(system, 1), |
|
|
|
static_cast<u32>(Param(system, 2))) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u64, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), Param(1), static_cast<u32>(Param(2))).raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u64, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), Param(system, 1), Param(system, 2)).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u64, u64, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u64, u64, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn( |
|
|
|
func(static_cast<u32>(Param(0)), Param(1), Param(2), static_cast<u32>(Param(3))).raw); |
|
|
|
system, |
|
|
|
func(system, Param(system, 0), Param(system, 1), static_cast<u32>(Param(system, 2))).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(Core::System&, u32, u64, u64, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, static_cast<u32>(Param(system, 0)), Param(system, 1), |
|
|
|
Param(system, 2), static_cast<u32>(Param(system, 3))) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32, u64, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(static_cast<u32>(Param(0)), Param(1), Param(2)).raw); |
|
|
|
template <ResultCode func(Core::System&, u32, u64, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn( |
|
|
|
system, |
|
|
|
func(system, static_cast<u32>(Param(system, 0)), Param(system, 1), Param(system, 2)).raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u64, u64, s64)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u64, u64, s64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
ResultCode retval = |
|
|
|
func(¶m_1, Param(1), static_cast<u32>(Param(2)), static_cast<s64>(Param(3))); |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval.raw); |
|
|
|
const u32 retval = func(system, ¶m_1, Param(system, 1), static_cast<u32>(Param(system, 2)), |
|
|
|
static_cast<s64>(Param(system, 3))) |
|
|
|
.raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u64, u32, s64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn( |
|
|
|
func(Param(0), Param(1), static_cast<u32>(Param(2)), static_cast<s64>(Param(3))).raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u64, u32, s64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), Param(system, 1), |
|
|
|
static_cast<u32>(Param(system, 2)), static_cast<s64>(Param(system, 3))) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64*, u64, u64, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u64*, u64, u64, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u64 param_1 = 0; |
|
|
|
u32 retval = func(¶m_1, Param(1), Param(2), Param(3)).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = |
|
|
|
func(system, ¶m_1, Param(system, 1), Param(system, 2), Param(system, 3)).raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u64, u64, u64, u32, s32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u64, u64, u64, u32, s32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
u32 retval = func(¶m_1, Param(1), Param(2), Param(3), static_cast<u32>(Param(4)), |
|
|
|
static_cast<s32>(Param(5))) |
|
|
|
.raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, Param(system, 1), Param(system, 2), Param(system, 3), |
|
|
|
static_cast<u32>(Param(system, 4)), static_cast<s32>(Param(system, 5))) |
|
|
|
.raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u32*, u64, u64, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, u32*, u64, u64, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
u32 retval = func(¶m_1, Param(1), Param(2), static_cast<u32>(Param(3))).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, Param(system, 1), Param(system, 2), |
|
|
|
static_cast<u32>(Param(system, 3))) |
|
|
|
.raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(Handle*, u64, u32, u32)> |
|
|
|
void SvcWrap() { |
|
|
|
template <ResultCode func(Core::System&, Handle*, u64, u32, u32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
u32 param_1 = 0; |
|
|
|
u32 retval = |
|
|
|
func(¶m_1, Param(1), static_cast<u32>(Param(2)), static_cast<u32>(Param(3))).raw; |
|
|
|
Core::CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(retval); |
|
|
|
const u32 retval = func(system, ¶m_1, Param(system, 1), static_cast<u32>(Param(system, 2)), |
|
|
|
static_cast<u32>(Param(system, 3))) |
|
|
|
.raw; |
|
|
|
|
|
|
|
system.CurrentArmInterface().SetReg(1, param_1); |
|
|
|
FuncReturn(system, retval); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u32, s32, s64)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), static_cast<u32>(Param(1)), static_cast<s32>(Param(2)), |
|
|
|
static_cast<s64>(Param(3))) |
|
|
|
.raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u32, s32, s64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), static_cast<u32>(Param(system, 1)), |
|
|
|
static_cast<s32>(Param(system, 2)), static_cast<s64>(Param(system, 3))) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
template <ResultCode func(u64, u32, s32, s32)> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func(Param(0), static_cast<u32>(Param(1)), static_cast<s32>(Param(2)), |
|
|
|
static_cast<s32>(Param(3))) |
|
|
|
.raw); |
|
|
|
template <ResultCode func(Core::System&, u64, u32, s32, s32)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system, Param(system, 0), static_cast<u32>(Param(system, 1)), |
|
|
|
static_cast<s32>(Param(system, 2)), static_cast<s32>(Param(system, 3))) |
|
|
|
.raw); |
|
|
|
} |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
// Function wrappers that return type u32 |
|
|
|
|
|
|
|
template <u32 func()> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func()); |
|
|
|
template <u32 func(Core::System&)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system)); |
|
|
|
} |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
// Function wrappers that return type u64 |
|
|
|
|
|
|
|
template <u64 func()> |
|
|
|
void SvcWrap() { |
|
|
|
FuncReturn(func()); |
|
|
|
template <u64 func(Core::System&)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
FuncReturn(system, func(system)); |
|
|
|
} |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
/// Function wrappers that return type void |
|
|
|
|
|
|
|
template <void func()> |
|
|
|
void SvcWrap() { |
|
|
|
func(); |
|
|
|
template <void func(Core::System&)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
func(system); |
|
|
|
} |
|
|
|
|
|
|
|
template <void func(s64)> |
|
|
|
void SvcWrap() { |
|
|
|
func(static_cast<s64>(Param(0))); |
|
|
|
template <void func(Core::System&, s64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
func(system, static_cast<s64>(Param(system, 0))); |
|
|
|
} |
|
|
|
|
|
|
|
template <void func(u64, u64 len)> |
|
|
|
void SvcWrap() { |
|
|
|
func(Param(0), Param(1)); |
|
|
|
template <void func(Core::System&, u64, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
func(system, Param(system, 0), Param(system, 1)); |
|
|
|
} |
|
|
|
|
|
|
|
template <void func(u64, u64, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
func(Param(0), Param(1), Param(2)); |
|
|
|
template <void func(Core::System&, u64, u64, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
func(system, Param(system, 0), Param(system, 1), Param(system, 2)); |
|
|
|
} |
|
|
|
|
|
|
|
template <void func(u32, u64, u64)> |
|
|
|
void SvcWrap() { |
|
|
|
func(static_cast<u32>(Param(0)), Param(1), Param(2)); |
|
|
|
template <void func(Core::System&, u32, u64, u64)> |
|
|
|
void SvcWrap(Core::System& system) { |
|
|
|
func(system, static_cast<u32>(Param(system, 0)), Param(system, 1), Param(system, 2)); |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace Kernel |