diff options
| author | comex <comexk@gmail.com> | 2013-10-04 15:26:20 -0400 |
|---|---|---|
| committer | comex <comexk@gmail.com> | 2013-10-04 15:48:06 -0400 |
| commit | 3679f9ba60b6d833b710faf41bc9feef607429d2 (patch) | |
| tree | 40e67bbabc29f4fcc5a65bcff911af1a1637fba8 /Source/Core/Common | |
| parent | a91469ffa5e9cf1e3a9b966a4c3b8ddee96966a5 (diff) | |
Don't push registers before pairedStoreQuantized, that's dumb.
And fix some stuff up. It would probably be good to unify the stack
handling some more rather than having ABI_PushRegistersAndAdjustStack do
part of it and ABI_AlignStack the rest, causing unnecessary subtract
instructions on Linux x86 (only).
Diffstat (limited to 'Source/Core/Common')
| -rw-r--r-- | Source/Core/Common/Src/x64ABI.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/Source/Core/Common/Src/x64ABI.h b/Source/Core/Common/Src/x64ABI.h index 837e4ec3d8..4b10d11e54 100644 --- a/Source/Core/Common/Src/x64ABI.h +++ b/Source/Core/Common/Src/x64ABI.h @@ -43,6 +43,8 @@ // 32-bit bog standard cdecl, shared between linux and windows // MacOSX 32-bit is same as System V with a few exceptions that we probably don't care much about. +#define ALL_CALLEE_SAVED ((1 << EAX) | (1 << ECX) | (1 << EDX)) + #else // 64 bit calling convention #ifdef _WIN32 // 64-bit Windows - the really exotic calling convention @@ -52,7 +54,12 @@ #define ABI_PARAM3 R8 #define ABI_PARAM4 R9 -#else //64-bit Unix (hopefully MacOSX too) +#define ABI_ALL_CALLEE_SAVED ((1 << RAX) | (1 << RCX) | (1 << RDX) | (1 << R8) | \ + (1 << R9) | (1 << R10) | (1 << R11) | \ + (1 << XMM0) | (1 << XMM1) | (1 << XMM2) | (1 << XMM3) | \ + (1 << XMM4) | (1 << XMM5)) + +#else //64-bit Unix / OS X #define ABI_PARAM1 RDI #define ABI_PARAM2 RSI @@ -61,6 +68,10 @@ #define ABI_PARAM5 R8 #define ABI_PARAM6 R9 +#define ABI_ALL_CALLEE_SAVED ((1 << RAX) | (1 << RCX) | (1 << RDX) | (1 << RDI) | \ + (1 << RSI) | (1 << R8) | (1 << R9) | (1 << R10) | (1 << R11) | \ + 0xffff0000 /* xmm0..15 */) + #endif // WIN32 #endif // X86 |
