diff --git a/inc/dd.h b/inc/dd.h
index 290886d..0a85966 100644
--- a/inc/dd.h
+++ b/inc/dd.h
@@ -5,6 +5,10 @@
 #include <windows.h>
 #include "ddraw.h"
 
+#ifdef __GNUC__
+#define __try
+#define __except(x) if (0)
+#endif
 
 typedef HRESULT(WINAPI* DIRECTDRAWCREATEPROC)(GUID FAR*, LPDIRECTDRAW FAR*, IUnknown FAR*);
 
diff --git a/src/hook.c b/src/hook.c
index 8add6b2..3ed0b4a 100644
--- a/src/hook.c
+++ b/src/hook.c
@@ -163,10 +163,8 @@ void hook_patch_obfuscated_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks)
     if (!hmod || hmod == INVALID_HANDLE_VALUE || !hooks)
         return;
 
-#ifdef _MSC_VER
     __try
     {
-#endif
         PIMAGE_DOS_HEADER dos_header = (PIMAGE_DOS_HEADER)hmod;
         if (dos_header->e_magic != IMAGE_DOS_SIGNATURE)
             return;
@@ -259,12 +257,10 @@ void hook_patch_obfuscated_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks)
 
             import_desc++;
         }
-#ifdef _MSC_VER
     }
     __except (EXCEPTION_EXECUTE_HANDLER)
     {
     }
-#endif
 }
 
 void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks)
@@ -274,10 +270,8 @@ void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks)
     if (!hmod || hmod == INVALID_HANDLE_VALUE || !hooks)
         return;
 
-#ifdef _MSC_VER
     __try
     {
-#endif
         PIMAGE_DOS_HEADER dos_header = (PIMAGE_DOS_HEADER)hmod;
         if (dos_header->e_magic != IMAGE_DOS_SIGNATURE)
             return;
@@ -362,12 +356,10 @@ void hook_patch_iat_list(HMODULE hmod, BOOL unhook, HOOKLIST* hooks)
 
             import_desc++;
         }
-#ifdef _MSC_VER
     }
     __except (EXCEPTION_EXECUTE_HANDLER)
     {
     }
-#endif
 }
 
 void hook_create(HOOKLIST* hooks, BOOL initial_hook)
diff --git a/src/utils.c b/src/utils.c
index e995da0..b6f1486 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -24,38 +24,32 @@ BOOL util_is_avx_supported()
 
     BOOL result = FALSE;
 
-#ifdef _MSC_VER
     __try
     {
-#endif
+        int info[4] = { 0 };
+        __cpuid(info, 0);
 
-    int info[4] = { 0 };
-    __cpuid(info, 0);
-
-    if (info[0] >= 1) 
-    {
-        __cpuid(info, 1);
-
-        if ((info[2] & CPU_AVX_BITS) == CPU_AVX_BITS)
+        if (info[0] >= 1)
         {
-            unsigned int xcr0 = 0;
+            __cpuid(info, 1);
+
+            if ((info[2] & CPU_AVX_BITS) == CPU_AVX_BITS)
+            {
+                unsigned int xcr0 = 0;
 
 #ifdef _MSC_VER
-            xcr0 = (unsigned int)_xgetbv(_XCR_XFEATURE_ENABLED_MASK);
+                xcr0 = (unsigned int)_xgetbv(_XCR_XFEATURE_ENABLED_MASK);
 #elif __AVX__
-            __asm__("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx");
+                __asm__("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx");
 #endif
 
-            result = (xcr0 & OS_AVX_BITS) == OS_AVX_BITS;
+                result = (xcr0 & OS_AVX_BITS) == OS_AVX_BITS;
+            }
         }
     }
-
-#ifdef _MSC_VER
-    }
     __except (EXCEPTION_EXECUTE_HANDLER)
     {
     }
-#endif
 
     return result;
 }