diff --git a/src/modules/Mird/mird_glue.c b/src/modules/Mird/mird_glue.c
index acff2066679b6e54131469722fcc1eb15fa2bdc3..d0b7fb574d97b9dc294cf3be72be5a607cb81e05 100644
--- a/src/modules/Mird/mird_glue.c
+++ b/src/modules/Mird/mird_glue.c
@@ -33,6 +33,21 @@ struct program *mird_scanner_program;
 #define TRY(X) \
    do { MIRD_RES res; if ( (res=(X)) ) pmird_exception(res); } while (0)
 
+#ifndef PIKE_THREADS
+
+#define LOCK(PMIRD)							\
+   do									\
+   {									\
+      struct pmird_storage *me=(PMIRD);					\
+      THREADS_ALLOW();
+
+#define UNLOCK(PMIRD)							\
+      UNSET_ONERROR(err);						\
+   }									\
+   while (0);
+
+#else
+
 #define LOCK(PMIRD)							\
    do									\
    {									\
@@ -56,6 +71,8 @@ static void pmird_unlock(PIKE_MUTEX_T *mutex)
    mt_unlock(mutex);
 }
 
+#endif
+
 static void pmird_exception(MIRD_RES res)
 {
    char *s,*d;