[KMTESTS:EX]

- Make hard-coded calling convention exceptions in ExInterlocked compatible with GCC 4.7, and add the corresponding TODO about how ugly this is

svn path=/trunk/; revision=57166
This commit is contained in:
Thomas Faber 2012-08-26 12:06:45 +00:00
parent 38ce718bde
commit 8003401991

View file

@ -50,6 +50,8 @@ typedef struct
typedef int PROCESSOR_STATE; typedef int PROCESSOR_STATE;
#endif #endif
/* TODO: these need to be rewritten in proper assembly to account for registers
* saved by the caller */
#if defined(_MSC_VER) && defined(_M_IX86) #if defined(_MSC_VER) && defined(_M_IX86)
#define SaveState(State) do \ #define SaveState(State) do \
{ \ { \
@ -84,9 +86,10 @@ typedef int PROCESSOR_STATE;
#define CheckState(OldState, NewState) do \ #define CheckState(OldState, NewState) do \
{ \ { \
ok_eq_hex((OldState)->esi, (NewState)->esi); \ /* TODO: GCC 4.7 uses esi and saves it before, so this is okay */ \
/*ok_eq_hex((OldState)->esi, (NewState)->esi);*/ \
ok_eq_hex((OldState)->edi, (NewState)->edi); \ ok_eq_hex((OldState)->edi, (NewState)->edi); \
/* TODO: GCC uses ebx and saves it before, so this is okay */ \ /* TODO: GCC 4.4 uses ebx and saves it before, so this is okay */ \
/*ok_eq_hex((OldState)->ebx, (NewState)->ebx);*/ \ /*ok_eq_hex((OldState)->ebx, (NewState)->ebx);*/ \
ok_eq_hex((OldState)->ebp, (NewState)->ebp); \ ok_eq_hex((OldState)->ebp, (NewState)->ebp); \
ok_eq_hex((OldState)->esp, (NewState)->esp); \ ok_eq_hex((OldState)->esp, (NewState)->esp); \