mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-26 12:35:27 +00:00
Add a helper to make zero-argument calls from an aligned stack
correctly. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1663 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
b92c831857
commit
be4c7e1399
@ -61,6 +61,12 @@ void XEmitter::ABI_EmitEpilogue(int maxCallParams)
|
||||
// Shared code between Win32 and Unix32
|
||||
// ====================================
|
||||
|
||||
void XEmitter::ABI_CallFunction(void *func) {
|
||||
ABI_AlignStack(0);
|
||||
CALL(func);
|
||||
ABI_RestoreStack(0);
|
||||
}
|
||||
|
||||
void XEmitter::ABI_CallFunctionC(void *func, u32 param1) {
|
||||
ABI_AlignStack(1 * 4);
|
||||
PUSH(32, Imm32(param1));
|
||||
@ -156,6 +162,10 @@ void XEmitter::ABI_RestoreStack(unsigned int frameSize) {
|
||||
|
||||
#else
|
||||
|
||||
void XEmitter::ABI_CallFunction(void *func) {
|
||||
CALL(func);
|
||||
}
|
||||
|
||||
void XEmitter::ABI_CallFunctionC(void *func, u32 param1) {
|
||||
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
||||
CALL(func);
|
||||
|
@ -574,6 +574,9 @@ public:
|
||||
void RTDSC();
|
||||
|
||||
// Utility functions
|
||||
// The difference between this and CALL is that this aligns the stack
|
||||
// where appropriate.
|
||||
void ABI_CallFunction(void *func);
|
||||
// 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user