diff --git a/ghc/runtime/c-as-asm/PerformIO.lhc b/ghc/runtime/c-as-asm/PerformIO.lhc
index 198603559fdde0ae2546a2cb2b4c2e6670f9db14..35c5c2c94d19c53b83aa1f0faf471dac0af01171 100644
--- a/ghc/runtime/c-as-asm/PerformIO.lhc
+++ b/ghc/runtime/c-as-asm/PerformIO.lhc
@@ -118,8 +118,10 @@ STGFUN(startPerformIO)
     /* Save away C stack pointer so that we can restore it when we leave
        the Haskell world.
     */
+#if defined(CONCURRENT) && defined(i386_TARGET_ARCH)
     SpB -= BREL(1);
     *SpB = (W_)SAVE_esp;
+#endif
 
     /* Put a World State Token on the B stack */
     /* This is necessary because we've not unboxed it (to reveal a void) yet */