diff --git a/System/Posix/Process/Internals.hs b/System/Posix/Process/Internals.hs
index fd0e68d1f7258e973828a1955cdd68644ce22c32..0bd99aef122223b9632b1442fab2c744cae4112a 100644
--- a/System/Posix/Process/Internals.hs
+++ b/System/Posix/Process/Internals.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CApiFFI #-}
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE Trustworthy #-}
 
 module System.Posix.Process.Internals (
@@ -26,7 +25,7 @@ data ProcessStatus
 
 -- this function disables the itimer, which would otherwise cause confusing
 -- signals to be sent to the new process.
-foreign import ccall unsafe "pPrPr_disableITimers"
+foreign import capi unsafe "Rts.h stopTimer"
   pPrPr_disableITimers :: IO ()
 
 foreign import ccall unsafe "__hsunix_execvpe"
diff --git a/cbits/ghcrts.c b/cbits/ghcrts.c
deleted file mode 100644
index 90036757ea6ae4f528e18b0e97dd760ed2940807..0000000000000000000000000000000000000000
--- a/cbits/ghcrts.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifdef __GLASGOW_HASKELL__
-// for 'void StopTimer(void)' prototype
-# include "Rts.h"
-#endif
-
-#define HSUNIX_EXECVPE_H_NO_COMPAT
-#include "execvpe.h"
-
-/* Copied verbatim from ghc/lib/std/cbits/system.c. */
-void pPrPr_disableITimers (void)
-{
-#ifdef __GLASGOW_HASKELL__
-    stopTimer();
-#endif
-}
diff --git a/include/execvpe.h b/include/execvpe.h
index 63cd04287294be15b986c0b9ae72c73d98b1b7fe..8db9495a88cf43655da75821b604f37dbd6c27aa 100644
--- a/include/execvpe.h
+++ b/include/execvpe.h
@@ -22,7 +22,4 @@ execvpe(const char *name, char *const argv[], char *const envp[]);
 #endif
 #endif
 
-// implemented in cbits/ghcrts.c
-extern void pPrPr_disableITimers (void);
-
 #endif
diff --git a/unix.cabal b/unix.cabal
index 5f61736f4cb1e98d98c613edff6aab16e45de7da..2027559d71c36722382a43db333e1ab2cde9d874 100644
--- a/unix.cabal
+++ b/unix.cabal
@@ -133,4 +133,3 @@ library
         cbits/HsUnix.c
         cbits/dirUtils.c
         cbits/execvpe.c
-        cbits/ghcrts.c