diff --git a/src/acconfig.h b/src/acconfig.h
index 35d3013ed8a23609854d1fd759e2bbd1273a88f1..c9eb79e0c4c770e208dd8efca97938d79d4faef9 100644
--- a/src/acconfig.h
+++ b/src/acconfig.h
@@ -79,9 +79,6 @@
 /* Define this to enable the internal bignum conversion */
 #undef AUTO_BIGNUM
 
-/* Define this to enable experimental code for multicpu machines */
-#undef PIKE_RUN_UNLOCKED
-
 /* Define this if you want to enable the shared nodes mode of the optimizer. */
 #undef SHARED_NODES
 
@@ -567,9 +564,6 @@
 /* The last argument to accept() is an ACCEPT_SIZE_T * */
 #define ACCEPT_SIZE_T	int
 
-/* Can we compile in MMX support? */
-#undef TRY_USE_MMX
-
 /* Define if you have the <sys/resource.h> header file.  */
 #undef HAVE_SYS_RESOURCE_H
 
diff --git a/src/configure.in b/src/configure.in
index ba0f915c8c946046535f25b5554529357a7972f2..0aca2ac9d608801a6eaccbcc7a68d9d2a73c0e80 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1082,28 +1082,6 @@ AC_SUBST(LC_REQ)
 
 #############################################################################
 
-AC_ARG_WITH(extra_debug_checks,
-	    MY_DESCR([--with-extra-debug-checks],
-		     [enable some extra (possibly verbose) debug checks.]),
-	    [], [
-  if test "x$pike_cv_sys_os" = "xOSF1"; then
-    # Attempt to detect the cause for test_resolv to fail on Unicode.so.
-    with_extra_debug_checks="yes"
-  elif test "x$pike_cv_sys_os" = "xOpenBSD"; then
-    # Attempt to detect cause of dmalloc failure on OpenBSD.
-    with_extra_debug_checks="yes"
-  else
-    with_extra_debug_checks=no
-  fi
-  ])
-
-if test "x$with_extra_debug_checks" = "xno"; then :; else
-  AC_MSG_WARN([Enabling extra debug checks.])
-  AC_DEFINE([PIKE_EXTRA_DEBUG])
-fi
-
-#############################################################################
-
 AC_ARG_WITH(patch_gcc, MY_DESCR([--with-patch-gcc],
 				[attempt to patch the UA32 relocation bug.]),
 	    [], [with_patch_gcc=no])
@@ -1643,14 +1621,6 @@ MY_AC_ARG_WITH(portable-bytecode,
 	       [AC_DEFINE(PIKE_PORTABLE_BYTECODE)],[],
 	       [AC_DEFINE(PIKE_PORTABLE_BYTECODE)])
 
-MY_AC_ARG_WITH(lock,
-	       MY_DESCR([--without-lock],
-	  [enable experimental code for multicpu machines (EXPERIMENTAL).]),
-		[],[AC_DEFINE(PIKE_RUN_UNLOCKED)])
-
-AC_ARG_WITH(pike-type, MY_DESCR([--without-pike-type],
-				[disable struct pike_type (IGNORED).]))
-
 if test "x$with_pike_type" = "xno"; then
   PIKE_MSG_WARN([Disabling of USE_PIKE_TYPE is no longer supported.])
 fi
@@ -3340,7 +3310,7 @@ AC_CHECK_HEADERS(winsock2.h sys/rusage.h time.h sys/time.h sys/types.h \
 		 passwd.h group.h winsock.h signal.h sys/file.h poll.h \
 		 sys/poll.h socket.h ieeefp.h fp_class.h floatingpoint.h \
 		 float.h sys/priocntl.h sys/sched.h winbase.h errno.h \
-		 stddef.h mmx.h asm/mmx.h sys/termio.h sys/termios.h \
+		 stddef.h sys/termio.h sys/termios.h \
 		 ws2tcpip.h valgrind/memcheck.h memcheck.h valgrind.h \
 		 sys/prctl.h sys/ioctl.h mach/task_info.h mach/task.h \
 		 mach/mach_init.h syscall.h sys/syscall.h devices/timer.h \
@@ -6177,51 +6147,6 @@ else
   AC_MSG_RESULT(not by cast)
 fi
 
-#############################################################################
-AC_ARG_WITH(mmx, MY_DESCR([--without-mmx], [disable MMX usage]), [], [with_mmx=])
-
-mmx_reason=' (no mmx.h found)'
-if test "x$with_mmx" = xno; then
-   mmx_reason=' (--without-mmx)'
-   unset pike_cv_sys_has_working_mmx
-elif test "x$ac_cv_header_mmx_h" = xyes -o "x$ac_cv_header_asm_mmx_h" = xyes; then
-  AC_MSG_CHECKING(for working MMX)
-  mmx_reason=' (mmx.h found, but mmx operations failed)'
-
-  AC_CACHE_VAL(pike_cv_sys_has_working_mmx,
-  [
-    AC_TRY_LINK([
-#ifdef HAVE_MMX_H
-#include <mmx.h>
-#endif
-#ifdef HAVE_ASM_MMX_H
-#include <asm/mmx.h>
-#endif
-    ],[
-    {
-      int try_use_mmx;
-      char a[8];
-      movq_m2r( *a, mm0 );
-      paddb_r2r( mm0, mm0 );
-      movq_r2m( mm0, *a );
-      try_use_mmx=mmx_ok();
-    }
-    ],pike_cv_sys_has_working_mmx=yes,pike_cv_sys_has_working_mmx=no)
-  ])
-
-  AC_MSG_RESULT($pike_cv_sys_has_working_mmx)
-
-  if test "x$pike_cv_sys_has_working_mmx" = xyes ; then
-    AC_DEFINE(TRY_USE_MMX)
-    mmx_reason=''
-  else :; fi
-
-  if test "x$with_copt" = "xno"; then
-    PIKE_MSG_WARN([--without-mmx is advisable when using --without-copt.])
-  fi
-else :; fi
-
-#############################################################################
 
 AC_MSG_CHECKING(if float conversion can cause SIGFPE)
 AC_CACHE_VAL(pike_cv_sys_idiot_sigfpe,
@@ -8762,11 +8687,6 @@ fi
 if test "x$with_dmalloc" = x; then
   with_dmalloc=no
 fi
-with_mmx=$pike_cv_sys_has_working_mmx
-if test "x$with_mmx" = x; then
-  with_mmx=no
-fi
-
 if test "x$with_copt" = xno ; then 
   opt_reasons="  ($OPT_NOT_USED turned off with --without-copt)"
 else
@@ -8852,7 +8772,6 @@ PAD_FEATURE([cdebug])$with_cdebug
 PAD_FEATURE([rtldebug])$with_rtldebug
 PAD_FEATURE([dmalloc])$with_dmalloc
 PAD_FEATURE([dlmalloc])$enable_dlmalloc
-PAD_FEATURE([mmx])$with_mmx$mmx_reason
 PAD_FEATURE([byte code format])$byte_code_format
 PAD_FEATURE([module reloc])${with_relocatable_dumped_modules:-no}
 PAD_FEATURE([use machine code])$with_machine_code
diff --git a/src/modules/Image/layer_oper.h b/src/modules/Image/layer_oper.h
index 76832cfbdd04554ee1b524770f00cb34d9ca88ed..e25e3958d228774f84b52a9d43d6c6657ef76308 100644
--- a/src/modules/Image/layer_oper.h
+++ b/src/modules/Image/layer_oper.h
@@ -31,6 +31,10 @@ static void LM_FUNC(rgb_group *s,rgb_group *l,rgb_group *d,
       {
 #ifdef L_MMX_OPER
 #ifdef TRY_USE_MMX
+/* Intentionally left here.
+
+   FIXME: Switch to intrinsics
+*/
 	extern int try_use_mmx;
 	if(try_use_mmx)
 	{
@@ -38,7 +42,7 @@ static void LM_FUNC(rgb_group *s,rgb_group *l,rgb_group *d,
 	  unsigned char *source=(unsigned char *)s;
 	  unsigned char *dest=(unsigned char *)d;
 	  unsigned char *sourcel=(unsigned char *)l;
-	  
+
 	  while (num-->0 && (7&(int)dest))
 	  {
 	    *dest=L_TRUNC(L_OPER(*source,*sourcel));
@@ -46,8 +50,8 @@ static void LM_FUNC(rgb_group *s,rgb_group *l,rgb_group *d,
 	    sourcel++;
 	    dest++;
 	  }
-	  
-	  
+
+
 	  while(num > 16)
 	  {
 	    movq_m2r(*source, mm0);
diff --git a/src/modules/Image/layers.c b/src/modules/Image/layers.c
index d7f10d2013a88251e4e26f911fd92238ee0be344..f65c7d64013a16d72b4fa29877aee1d7e306ea68 100644
--- a/src/modules/Image/layers.c
+++ b/src/modules/Image/layers.c
@@ -31,15 +31,6 @@
 
 #include "image.h"
 
-#ifdef TRY_USE_MMX
-#ifdef HAVE_MMX_H
-#include <mmx.h>
-#else
-#include <asm/mmx.h>
-#endif
-#endif
-
-
 extern struct program *image_program;
 extern struct program *image_layer_program;
 extern struct program *image_colortable_program;
diff --git a/src/pike_embed.h b/src/pike_embed.h
index 8ae757d6a867ea077681a677abb49717292f1ac5..68cf86a45f932494087b532554d1bb492d66a09a 100644
--- a/src/pike_embed.h
+++ b/src/pike_embed.h
@@ -10,10 +10,6 @@
 #include "global.h"
 #include "callback.h"
 
-#ifdef TRY_USE_MMX
-extern int try_use_mmx;
-#endif /* TRY_USE_MMX */
-
 PMOD_EXPORT extern int d_flag, a_flag, l_flag, c_flag, p_flag;
 PMOD_EXPORT extern int debug_options, runtime_options;
 PMOD_EXPORT extern int default_t_flag;
diff --git a/src/port.c b/src/port.c
index 3352bb662da705b3a590689f7b72d2b7ec8235f9..42b05b7c22ee7392a6f562ea0640bac2fdb7f41e 100644
--- a/src/port.c
+++ b/src/port.c
@@ -394,96 +394,15 @@ void *MEMSET(void *s,int c,size_t n)
 }
 #endif
 
-#if (0 && defined(TRY_USE_MMX)) || !defined(HAVE_MEMCPY) && !defined(HAVE_BCOPY)
-#ifdef TRY_USE_MMX
-#ifdef HAVE_MMX_H
-#include <mmx.h>
-#else
-#include <asm/mmx.h>
-#endif
-#endif
+#if !defined(HAVE_MEMCPY) && !defined(HAVE_BCOPY)
 PMOD_EXPORT void MEMCPY(void *bb,const void *aa,size_t s)
 {
   if(!s) return;
-#ifdef TRY_USE_MMX
   {
-    extern int try_use_mmx;
-    if( (s>64) && !(((int)bb)&7) && !(((int)aa)&7) && try_use_mmx )
-    {
-      unsigned char *source=(char *)aa;
-      unsigned char *dest=(char *)bb;
-
-/*       fprintf(stderr, "mmx memcpy[%d]\n",s); */
-      while( s > 64 )
-      {
-        movq_m2r(*source, mm0);      source += 8;
-        movq_m2r(*source, mm1);      source += 8;
-        movq_m2r(*source, mm2);      source += 8;
-        movq_m2r(*source, mm3);      source += 8;
-        movq_m2r(*source, mm4);      source += 8;
-        movq_m2r(*source, mm5);      source += 8;
-        movq_m2r(*source, mm6);      source += 8;
-        movq_m2r(*source, mm7);      source += 8;
-        movq_r2m(mm0,*dest);         dest += 8;
-        movq_r2m(mm1,*dest);         dest += 8;
-        movq_r2m(mm2,*dest);         dest += 8;
-        movq_r2m(mm3,*dest);         dest += 8;
-        movq_r2m(mm4,*dest);         dest += 8;
-        movq_r2m(mm5,*dest);         dest += 8;
-        movq_r2m(mm6,*dest);         dest += 8;
-        movq_r2m(mm7,*dest);         dest += 8;
-        s -= 64;
-      }
-      if( s > 31 )
-      {
-        movq_m2r(*source, mm0);      source += 8;
-        movq_m2r(*source, mm1);      source += 8;
-        movq_m2r(*source, mm2);      source += 8;
-        movq_m2r(*source, mm3);      source += 8;
-        movq_r2m(mm0,*dest);         dest += 8;
-        movq_r2m(mm1,*dest);         dest += 8;
-        movq_r2m(mm2,*dest);         dest += 8;
-        movq_r2m(mm3,*dest);         dest += 8;
-        s -= 32;
-      }
-      if( s > 15 )
-      {
-        movq_m2r(*source, mm0);      source += 8;
-        movq_m2r(*source, mm1);      source += 8;
-        movq_r2m(mm0,*dest);         dest += 8;
-        movq_r2m(mm1,*dest);         dest += 8;
-        s -= 16;
-      }
-      if( s > 7 )
-      {
-        movq_m2r(*source, mm0);      source += 8;
-        movq_r2m(mm0,*dest);         dest += 8;
-        s -= 8;
-      }
-      emms();
-      while( s )
-      {
-        *(dest++) = *(source++);
-        s-=1;
-      }
-    }
-    else 
-    {
-#endif
-#ifdef HAVE_MEMCPY
-      /*     fprintf(stderr, "plain ol' memcpy\n"); */
-      memcpy( bb, aa, s );
-#else
-      {
 	char *b=(char *)bb;
 	char *a=(char *)aa;
 	for(;s;s--) *(b++)=*(a++);
-      }
-#endif
-#ifdef TRY_USE_MMX
-    }
   }
-#endif
 }
 #endif
 
@@ -679,10 +598,6 @@ PMOD_EXPORT double STRTOD(const char * nptr, char **endptr)
 
  underflow:
   /* Return an underflow error.  */
-#if 0
-  if (endptr != NULL)
-    *endptr = (char *) nptr;
-#endif
   errno = ERANGE;
   return 0.0;
   
diff --git a/src/port.h b/src/port.h
index 8bfe131d94127195eac690d106c998138ddbf6c5..5ba498fd73e28ab60ae6ba9428bd69be20af3f87 100644
--- a/src/port.h
+++ b/src/port.h
@@ -198,11 +198,7 @@ void *MEMSET (void *s,int c,size_t n);
 #  define MEMSET memset
 #endif
 
-#if 0 && defined(TRY_USE_MMX)
-PMOD_EXPORT void MEMCPY(void *b,const void *a,size_t s);
-# define __builtin_memcpy MEMCPY
-#else
-# ifndef HAVE_MEMCPY
+#ifndef HAVE_MEMCPY
 #  ifdef HAVE_BCOPY
 #    define MEMCPY(X,Y,Z) bcopy(Y,X,Z)
 #    define __builtin_memcpy(X,Y,Z) bcopy(Y,X,Z)
@@ -212,7 +208,6 @@ void MEMCPY(void *b,const void *a,size_t s);
 #  endif
 # else
 #  define MEMCPY(X,Y,Z) memcpy((char*)(X),(char*)(Y),(Z))
-# endif
 #endif
 
 #ifndef HAVE_MEMMOVE