diff --git a/memory/Makefile.in b/memory/Makefile.in
index 5157bf003aac20a736b5042f8703ec600b5914f0..a1bce2694e3351763c6dab51a0cfc09c60db746d 100644
--- a/memory/Makefile.in
+++ b/memory/Makefile.in
@@ -10,6 +10,7 @@ C_SRCS = \
 	environ.c \
 	global.c \
 	heap.c \
+	instr.c \
 	ldt.c \
 	local.c \
 	selector.c \
diff --git a/miscemu/instr.c b/memory/instr.c
similarity index 99%
rename from miscemu/instr.c
rename to memory/instr.c
index be4728584abb5d448f8d49e9ae5b009c3536fead..c586cf406365b18231b407609c3070859d9ee835 100644
--- a/miscemu/instr.c
+++ b/memory/instr.c
@@ -17,6 +17,7 @@
 DECLARE_DEBUG_CHANNEL(int)
 DECLARE_DEBUG_CHANNEL(io)
 
+#ifdef __i386__
 
 #define IS_V86(context) (EFL_sig(context)&V86_FLAG)
 #define IS_SEL_32(context,seg) \
@@ -630,14 +631,14 @@ BOOL INSTR_EmulateInstruction( SIGCONTEXT *context )
                     DS_sig(context) = seg;
                     EIP_sig(context) += prefixlen + len + 1;
                     return TRUE;
-                case 4:
 #ifdef FS_sig
+                case 4:
                     FS_sig(context) = seg;
                     EIP_sig(context) += prefixlen + len + 1;
                     return TRUE;
 #endif
-                case 5:
 #ifdef GS_sig
+                case 5:
                     GS_sig(context) = seg;
                     EIP_sig(context) += prefixlen + len + 1;
                     return TRUE;
@@ -815,8 +816,7 @@ BOOL INSTR_EmulateInstruction( SIGCONTEXT *context )
         EIP_sig(context) = OFFSETOF( gpHandler );
         return TRUE;
     }
-
-    MESSAGE("Unexpected Windows program segfault"
-                    " - opcode = %x\n", *instr);
     return FALSE;  /* Unable to emulate it */
 }
+
+#endif  /* __i386__ */
diff --git a/miscemu/Makefile.in b/miscemu/Makefile.in
index dcfdbbe53686e8f59165ad90fa19f6da50e3cd56..75542b4dfcecbc2a781a16ea58e4367cdcd06c31 100644
--- a/miscemu/Makefile.in
+++ b/miscemu/Makefile.in
@@ -7,7 +7,6 @@ MODULE    = miscemu
 
 C_SRCS = \
 	emulate.c \
-	instr.c \
 	main.c
 
 all: $(MODULE).o