ignore some warnings by gcc 4.4.2
[reactos.git] / rostests / apitests / w32knapi / w32knapi.c
index 1835c83..088007d 100644 (file)
@@ -10,6 +10,7 @@ MyGdiQueryTable()
 {
        PTEB pTeb = NtCurrentTeb();
        PPEB pPeb = pTeb->ProcessEnvironmentBlock;
+       printf("TEB::PEB=0x%lx PEB::GdiHT=0x%lx, Peb=%p, Teb=%p\n", FIELD_OFFSET(TEB, ProcessEnvironmentBlock), FIELD_OFFSET(PEB, GdiSharedHandleTable), pTeb, pPeb);
        return pPeb->GdiSharedHandleTable;
 }
 
@@ -49,8 +50,10 @@ GetHandleUserData(HGDIOBJ hobj)
 static DWORD WINAPI
 IntSyscall(FARPROC proc, UINT cParams, PVOID pFirstParam)
 {
-       DWORD ret;
+       DWORD retval = 0;
 
+#ifdef _M_I386
+#ifdef __GNUC__
        asm volatile
        (
                "pushfl;"                               // Save flags
@@ -62,21 +65,38 @@ IntSyscall(FARPROC proc, UINT cParams, PVOID pFirstParam)
                "rep movsd;"                    // Copy params to the stack
                "call *%%edx;"                  // Call function
                "popfl;"                                // Restore flags
-               : "=a" (ret)
+               : "=a" (retval)
                : "S" (pFirstParam), "c" (cParams), "d"(proc)
                : "%edi"
        );
-
-       return ret;
+#else
+       __asm
+       {
+               pushf
+               mov eax, cParams
+               shl eax, 2
+               sub esp, eax
+               mov edi, esp
+               cld
+               rep movsd
+               call proc
+               mov retval, eax
+               popf
+    };
+#endif
+#endif
+
+       return retval;
 }
 
 DWORD
 Syscall(LPWSTR pszFunction, int cParams, void* pParams)
 {
        char szFunctionName[MAX_PATH];
+       FARPROC proc;
 
        sprintf(szFunctionName, "%ls", pszFunction);
-       FARPROC proc = (FARPROC)GetProcAddress(g_hModule, szFunctionName);
+       proc = (FARPROC)GetProcAddress(g_hModule, szFunctionName);
        if (!proc)
        {
                printf("Couldn't find proc: %s\n", szFunctionName);