diff --git a/ChangeLog b/ChangeLog
index 9df31f9..a1b5e8a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -73,6 +73,8 @@
      mbedtls_ecp_muladd().
    * Removed individual mdX_hmac and shaX_hmac functions (use generic
      md_hmac functions from md.h)
+   * Removed mbedtls_timing_msleep(). Use mbedtls_timing_usleep() or a custom
+     waiting function.
    * Removed the PBKDF2 module (use PKCS5).
    * Removed POLARSSL_ERROR_STRERROR_BC (use mbedtls_strerror()).
    * Removed compat-1.2.h (helper for migrating from 1.2 to 1.3).
diff --git a/include/mbedtls/compat-1.3.h b/include/mbedtls/compat-1.3.h
index 9276eae..d19e04a 100644
--- a/include/mbedtls/compat-1.3.h
+++ b/include/mbedtls/compat-1.3.h
@@ -2049,7 +2049,6 @@
 #define hmac_drbg_write_seed_file mbedtls_hmac_drbg_write_seed_file
 #define hr_time mbedtls_timing_hr_time
 #define key_exchange_type_t mbedtls_key_exchange_type_t
-#define m_sleep mbedtls_timing_m_sleep
 #define md mbedtls_md
 #define md2 mbedtls_md2
 #define md2_context mbedtls_md2_context
diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
index 34d0bc2..e6b0cd5 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -183,7 +183,7 @@
  * \def MBEDTLS_TIMING_ALT
  *
  * Uncomment to provide your own alternate implementation for mbedtls_timing_hardclock(),
- * mbedtls_timing_get_timer(), mbedtls_set_alarm() and mbedtls_timing_m_sleep().
+ * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay()
  *
  * Only works if you have MBEDTLS_TIMING_C enabled.
  *
diff --git a/include/mbedtls/timing.h b/include/mbedtls/timing.h
index efcc5dc..6598c1a 100644
--- a/include/mbedtls/timing.h
+++ b/include/mbedtls/timing.h
@@ -85,13 +85,6 @@
 void mbedtls_set_alarm( int seconds );
 
 /**
- * \brief          Sleep for a certain amount of time
- *
- * \param milliseconds  delay in milliseconds
- */
-void mbedtls_timing_m_sleep( int milliseconds );
-
-/**
  * \brief          Set a pair of delays to watch
  *                 (See \c mbedtls_timing_get_delay().)
  *
diff --git a/library/timing.c b/library/timing.c
index 8ce9753..e83b74e 100644
--- a/library/timing.c
+++ b/library/timing.c
@@ -273,11 +273,6 @@
     CloseHandle( CreateThread( NULL, 0, TimerProc, NULL, 0, &ThreadId ) );
 }
 
-void mbedtls_timing_m_sleep( int milliseconds )
-{
-    Sleep( milliseconds );
-}
-
 #else /* _WIN32 && !EFIX64 && !EFI32 */
 
 unsigned long mbedtls_timing_get_timer( struct mbedtls_timing_hr_time *val, int reset )
@@ -301,14 +296,6 @@
     return( delta );
 }
 
-#if defined(INTEGRITY)
-void mbedtls_timing_m_sleep( int milliseconds )
-{
-    usleep( milliseconds * 1000 );
-}
-
-#else /* INTEGRITY */
-
 static void sighandler( int signum )
 {
     mbedtls_timing_alarmed = 1;
@@ -322,17 +309,6 @@
     alarm( seconds );
 }
 
-void mbedtls_timing_m_sleep( int milliseconds )
-{
-    struct timeval tv;
-
-    tv.tv_sec  = milliseconds / 1000;
-    tv.tv_usec = ( milliseconds % 1000 ) * 1000;
-
-    select( 0, NULL, NULL, NULL, &tv );
-}
-#endif /* INTEGRITY */
-
 #endif /* _WIN32 && !EFIX64 && !EFI32 */
 
 /*
@@ -425,31 +401,9 @@
     if( verbose != 0 )
         mbedtls_printf( "  TIMING tests note: will take some time!\n" );
 
-    if( verbose != 0 )
-        mbedtls_printf( "  TIMING test #1 (m_sleep   / get_timer): " );
-
-    for( secs = 1; secs <= 3; secs++ )
-    {
-        (void) mbedtls_timing_get_timer( &hires, 1 );
-
-        mbedtls_timing_m_sleep( (int)( 500 * secs ) );
-
-        millisecs = mbedtls_timing_get_timer( &hires, 0 );
-
-        if( millisecs < 450 * secs || millisecs > 550 * secs )
-        {
-            if( verbose != 0 )
-                mbedtls_printf( "failed\n" );
-
-            return( 1 );
-        }
-    }
 
     if( verbose != 0 )
-        mbedtls_printf( "passed\n" );
-
-    if( verbose != 0 )
-        mbedtls_printf( "  TIMING test #2 (set_alarm / get_timer): " );
+        mbedtls_printf( "  TIMING test #1 (set_alarm / get_timer): " );
 
     for( secs = 1; secs <= 3; secs++ )
     {
@@ -474,7 +428,7 @@
         mbedtls_printf( "passed\n" );
 
     if( verbose != 0 )
-        mbedtls_printf( "  TIMING test #3 (hardclock / get_timer): " );
+        mbedtls_printf( "  TIMING test #2 (hardclock / get_timer): " );
 
     /*
      * Allow one failure for possible counter wrapping.
@@ -519,7 +473,7 @@
         mbedtls_printf( "passed\n" );
 
     if( verbose != 0 )
-        mbedtls_printf( "  TIMING test #4 (m_sleep   / delay    ): " );
+        mbedtls_printf( "  TIMING test #3 (set/get_delay        ): " );
 
     for( a = 100; a <= 200; a += 100 )
     {
@@ -527,26 +481,26 @@
         {
             mbedtls_timing_set_delay( &ctx, a, a + b );
 
-            mbedtls_timing_m_sleep( (int)( a - a / 10 ) );
+            busy_msleep( a - a / 10 );
             if( mbedtls_timing_get_delay( &ctx ) != 0 )
                 FAIL;
 
-            mbedtls_timing_m_sleep( (int)( a / 5 ) );
+            busy_msleep( a / 5 );
             if( mbedtls_timing_get_delay( &ctx ) != 1 )
                 FAIL;
 
-            mbedtls_timing_m_sleep( (int)( b - a / 5 ) );
+            busy_msleep( b - a / 5 );
             if( mbedtls_timing_get_delay( &ctx ) != 1 )
                 FAIL;
 
-            mbedtls_timing_m_sleep( (int)( b / 5 ) );
+            busy_msleep( b / 5 );
             if( mbedtls_timing_get_delay( &ctx ) != 2 )
                 FAIL;
         }
     }
 
     mbedtls_timing_set_delay( &ctx, 0, 0 );
-    mbedtls_timing_m_sleep( 200 );
+    busy_msleep( 200 );
     if( mbedtls_timing_get_delay( &ctx ) != -1 )
         FAIL;
 
@@ -555,7 +509,7 @@
 
 #if defined(MBEDTLS_NET_C) && defined(MBEDTLS_HAVE_TIME)
     if( verbose != 0 )
-        mbedtls_printf( "  TIMING test #5 (net_usleep/ get_timer): " );
+        mbedtls_printf( "  TIMING test #4 (net_usleep/ get_timer): " );
 
     for( secs = 1; secs <= 3; secs++ )
     {
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 1b4d654..b140263 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -1494,7 +1494,7 @@
 
 #if defined(MBEDTLS_TIMING_C)
         if( opt.reco_delay > 0 )
-            mbedtls_timing_m_sleep( 1000 * opt.reco_delay );
+            mbedtls_net_usleep( 1000000 * opt.reco_delay );
 #endif
 
         mbedtls_printf( "  . Reconnecting with saved session..." );
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index 1df814b..06c479e 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -373,7 +373,7 @@
             len = ret;
             mbedtls_printf( " %d bytes written\n\n%s\n", len, (char *) buf );
 
-            mbedtls_timing_m_sleep( 1000 );
+            mbedtls_net_usleep( 1000000 );
         }
 
         mbedtls_ssl_close_notify( &ssl );
