diff options
| author | nakeee <nakeee@gmail.com> | 2010-03-24 11:22:33 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2010-03-24 11:22:33 +0000 |
| commit | 47239ce0f4bd61e3e95fb04bc185ae11d4872db4 (patch) | |
| tree | 60f1dda3dcfb25eec70f1a37f431364e492d4f94 /Source/Core/Common | |
| parent | ea90996852fd7b928acf9bd8ca1b6d97b700718a (diff) | |
XK patch for adding jit config to audiocommon/c16 function to x64emitter
and Skidu's fix for 64bit
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5230 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common')
| -rw-r--r-- | Source/Core/Common/Src/ABI.cpp | 18 | ||||
| -rw-r--r-- | Source/Core/Common/Src/x64Emitter.h | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Source/Core/Common/Src/ABI.cpp b/Source/Core/Common/Src/ABI.cpp index 522a8a572a..ba471a336f 100644 --- a/Source/Core/Common/Src/ABI.cpp +++ b/Source/Core/Common/Src/ABI.cpp @@ -66,6 +66,13 @@ void XEmitter::ABI_CallFunction(void *func) { ABI_RestoreStack(0); } +void XEmitter::ABI_CallFunctionC16(void *func, u16 param1) { + ABI_AlignStack(1 * 2); + PUSH(16, Imm16(param1)); + CALL(func); + ABI_RestoreStack(1 * 2); +} + void XEmitter::ABI_CallFunctionC(void *func, u32 param1) { ABI_AlignStack(1 * 4); PUSH(32, Imm32(param1)); @@ -182,7 +189,16 @@ void XEmitter::ABI_RestoreStack(unsigned int frameSize) { // Common functions void XEmitter::ABI_CallFunction(void *func) { - CALL(func); + // Far call + MOV(64, R(RAX), Imm64((u64)func));CALLptr(R(RAX)); + //CALL(func); +} + +void XEmitter::ABI_CallFunctionC16(void *func, u16 param1) { + MOV(16, R(ABI_PARAM1), Imm16(param1)); + // Far call + MOV(64, R(RAX), Imm64((u64)func));CALLptr(R(RAX)); + //CALL(func); } void XEmitter::ABI_CallFunctionC(void *func, u32 param1) { diff --git a/Source/Core/Common/Src/x64Emitter.h b/Source/Core/Common/Src/x64Emitter.h index dd11468580..e4d7013f87 100644 --- a/Source/Core/Common/Src/x64Emitter.h +++ b/Source/Core/Common/Src/x64Emitter.h @@ -590,6 +590,9 @@ public: // The difference between this and CALL is that this aligns the stack // where appropriate. void ABI_CallFunction(void *func); + + void ABI_CallFunctionC16(void *func, u16 param1); + // These only support u32 parameters, but that's enough for a lot of uses. // These will destroy the 1 or 2 first "parameter regs". void ABI_CallFunctionC(void *func, u32 param1); |
