diff --git a/compiler/nativeGen/X86/Regs.hs b/compiler/nativeGen/X86/Regs.hs
index 854df0d0022baaafdbd2204859d1d45a242a8c21..a3a257f4d6ec3984071412d175c2abd4e32a90a4 100644
--- a/compiler/nativeGen/X86/Regs.hs
+++ b/compiler/nativeGen/X86/Regs.hs
@@ -51,6 +51,17 @@ where
 #include "nativeGen/NCG.h"
 #include "HsVersions.h"
 
+#if i386_TARGET_ARCH == 0 && x86_64_TARGET_ARCH == 0
+-- Compiling for some arch other than Intel so we choose x86-64 as default.
+#undef arm_TARGET_ARCH
+#undef powerpc_TARGET_ARCH
+#undef powerpc64_TARGET_ARCH
+#undef sparc_TARGET_ARCH
+
+#undef x86_64_TARGET_ARCH
+#define x86_64_TARGET_ARCH 1
+#endif
+
 #include "../includes/stg/MachRegs.h"
 
 import Reg
@@ -411,8 +422,6 @@ allIntArgRegs           :: [Reg]
 allFPArgRegs            :: [Reg]
 callClobberedRegs       :: [Reg]
 
-#if defined(i386_TARGET_ARCH) || defined(x86_64_TARGET_ARCH)
-
 #if i386_TARGET_ARCH
 #define eax 0
 #define ebx 1
@@ -588,25 +597,23 @@ globalRegMaybe _                        = Nothing
 
 --
 
-#if defined(mingw32_HOST_OS) && x86_64_TARGET_ARCH
+#if defined(mingw32_HOST_OS)
 
 allArgRegs = zip (map regSingle [rcx,rdx,r8,r9])
                  (map regSingle [firstxmm ..])
 allIntArgRegs = panic "X86.Regs.allIntArgRegs: not defined for this platform"
 allFPArgRegs = panic "X86.Regs.allFPArgRegs: not defined for this platform"
 
-#else
+#elif i386_TARGET_ARCH
 
 allArgRegs = panic "X86.Regs.allArgRegs: not defined for this arch"
-
-# if   i386_TARGET_ARCH
 allIntArgRegs = panic "X86.Regs.allIntArgRegs: should not be used!"
-# elif x86_64_TARGET_ARCH
-allIntArgRegs = map regSingle [rdi,rsi,rdx,rcx,r8,r9]
-# else
-allIntArgRegs = panic "X86.Regs.allIntArgRegs: not defined for this arch"
-# endif
+allFPArgRegs    = map regSingle [firstxmm .. firstxmm+7]
+
+#else
 
+allArgRegs = panic "X86.Regs.allArgRegs: not defined for this arch"
+allIntArgRegs = map regSingle [rdi,rsi,rdx,rcx,r8,r9]
 allFPArgRegs    = map regSingle [firstxmm .. firstxmm+7]
 
 #endif
@@ -621,7 +628,7 @@ allHaskellArgRegs = [ RegReal r | Just r <- map globalRegMaybe globalArgRegs ]
 instrClobberedRegs :: [RealReg]
 #if   i386_TARGET_ARCH
 instrClobberedRegs = map RealRegSingle [ eax, ecx, edx ]
-#elif x86_64_TARGET_ARCH
+#else
 instrClobberedRegs = map RealRegSingle [ rax, rcx, rdx ]
 #endif
 
@@ -632,35 +639,12 @@ instrClobberedRegs = map RealRegSingle [ rax, rcx, rdx ]
 callClobberedRegs
   = map regSingle ([eax,ecx,edx]  ++ floatregnos)
 
-#elif x86_64_TARGET_ARCH
+#else
 -- all xmm regs are caller-saves
 -- caller-saves registers
 callClobberedRegs
   = map regSingle ([rax,rcx,rdx,rsi,rdi,r8,r9,r10,r11] ++ floatregnos)
 
-#else
-callClobberedRegs
-  = panic "X86.Regs.callClobberedRegs: not defined for this architecture"
-#endif
-
-#else /* i386_TARGET_ARCH || x86_64_TARGET_ARCH */
-
-
-
-freeReg _               = 0#
-globalRegMaybe _        = panic "X86.Regs.globalRegMaybe: not defined"
-
-allArgRegs              = panic "X86.Regs.allArgRegs: not defined"
-allIntArgRegs           = panic "X86.Regs.allIntArgRegs: not defined"
-allFPArgRegs            = panic "X86.Regs.allFPArgRegs: not defined"
-callClobberedRegs       = panic "X86.Regs.callClobberedRegs: not defined"
-
-instrClobberedRegs :: [RealReg]
-instrClobberedRegs = panic "X86.Regs.instrClobberedRegs: not defined for this arch"
-
-allHaskellArgRegs :: [Reg]
-allHaskellArgRegs = panic "X86.Regs.allHaskellArgRegs: not defined for this arch"
-
 #endif
 
 -- allocatableRegs is allMachRegNos with the fixed-use regs removed.