diff --git a/rts/Sparks.c b/rts/Sparks.c
index 2b4bb22ab3eb220eac46d49a8f4c123d7b0f5fc0..8e72e47c30aefdc351dfccc5e1a5bf7966d4c8ee 100644
--- a/rts/Sparks.c
+++ b/rts/Sparks.c
@@ -16,7 +16,7 @@
 #include "Sparks.h"
 #include "ThreadLabels.h"
 #include "sm/NonMovingMark.h"
-#include "sm/HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 
 #if defined(THREADED_RTS)
 
diff --git a/rts/sm/HeapAlloc.h b/rts/include/rts/storage/HeapAlloc.h
similarity index 99%
rename from rts/sm/HeapAlloc.h
rename to rts/include/rts/storage/HeapAlloc.h
index 32210d12974d3d5307e21000dc6daab841cb60c7..e18bdb9c8e9c2bc7c840ec99f9a118db971bdc34 100644
--- a/rts/sm/HeapAlloc.h
+++ b/rts/include/rts/storage/HeapAlloc.h
@@ -8,8 +8,6 @@
 
 #pragma once
 
-#include "BeginPrivate.h"
-
 #if defined(THREADED_RTS)
 // needed for HEAP_ALLOCED below
 extern SpinLock gc_alloc_block_sync;
@@ -227,5 +225,3 @@ StgBool HEAP_ALLOCED_GC(const void *p)
 #else
 # error HEAP_ALLOCED not defined
 #endif
-
-#include "EndPrivate.h"
diff --git a/rts/posix/OSMem.c b/rts/posix/OSMem.c
index e08dfca8b642652ffd7c71ae2161df8134f42345..d20a656a4bb7ec686fc9e6f04c9276de07914768 100644
--- a/rts/posix/OSMem.c
+++ b/rts/posix/OSMem.c
@@ -13,7 +13,7 @@
 
 #include "RtsUtils.h"
 #include "sm/OSMem.h"
-#include "sm/HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 
 #if defined(HAVE_UNISTD_H)
 #include <unistd.h>
diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in
index 0ed25f5b0274d2fd183905705e47de7c092bc1b5..d7d2cdcb9116b54fcdd7b9e7481ae23cc93f235b 100644
--- a/rts/rts.cabal.in
+++ b/rts/rts.cabal.in
@@ -262,6 +262,7 @@ library
                         rts/storage/Closures.h
                         rts/storage/FunTypes.h
                         rts/storage/Heap.h
+                        rts/storage/HeapAlloc.h
                         rts/storage/GC.h
                         rts/storage/InfoTables.h
                         rts/storage/MBlock.h
diff --git a/rts/sm/CNF.c b/rts/sm/CNF.c
index 1f40402c63471e24f2501b57c07a4ae6417fd1bd..17cfdc98ec523166fce2c695134fcc931186a5c6 100644
--- a/rts/sm/CNF.c
+++ b/rts/sm/CNF.c
@@ -19,7 +19,7 @@
 #include "Storage.h"
 #include "CNF.h"
 #include "Hash.h"
-#include "HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 #include "BlockAlloc.h"
 #include "Trace.h"
 #include "sm/ShouldCompact.h"
diff --git a/rts/sm/GC.h b/rts/sm/GC.h
index dc7b773e9994564e481ac4f9a4cea1a7bfc04ae6..0beabc8e6d1504a2cc7a5980faa25c3c587522c0 100644
--- a/rts/sm/GC.h
+++ b/rts/sm/GC.h
@@ -13,7 +13,7 @@
 
 #pragma once
 
-#include "HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 
 #include "BeginPrivate.h"
 
diff --git a/rts/sm/NonMoving.h b/rts/sm/NonMoving.h
index 96a584a715a398eba225b42b82c3accbfa754d3f..90763089f687a0b84d76919baf3548f8c75e56a6 100644
--- a/rts/sm/NonMoving.h
+++ b/rts/sm/NonMoving.h
@@ -11,7 +11,7 @@
 #if !defined(CMINUSMINUS)
 
 #include <string.h>
-#include "HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 #include "NonMovingMark.h"
 
 #include "BeginPrivate.h"
diff --git a/rts/sm/NonMovingMark.c b/rts/sm/NonMovingMark.c
index fea2f031f065993adced96d08f589f9ab6e62419..cd31d33d0043e97def4c1277de7f2e676ac78885 100644
--- a/rts/sm/NonMovingMark.c
+++ b/rts/sm/NonMovingMark.c
@@ -14,7 +14,7 @@
 #include "NonMovingShortcut.h"
 #include "NonMoving.h"
 #include "BlockAlloc.h"  /* for countBlocks */
-#include "HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 #include "Task.h"
 #include "Trace.h"
 #include "HeapUtils.h"
diff --git a/rts/sm/Sanity.c b/rts/sm/Sanity.c
index b582eaa8bc09934ffc6b52db6b3dc525d6043f66..7515df50adec330467573727b44ef8f4730f35b7 100644
--- a/rts/sm/Sanity.c
+++ b/rts/sm/Sanity.c
@@ -32,7 +32,7 @@
 #include "sm/NonMoving.h"
 #include "sm/NonMovingMark.h"
 #include "Profiling.h" // prof_arena
-#include "HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 
 /* -----------------------------------------------------------------------------
    Forward decls.
diff --git a/rts/wasm/OSMem.c b/rts/wasm/OSMem.c
index 88cbc9c2487fe79aabc472de0241d452a4e694d7..ff4217f413e806e89e83c1d6cf4bd5c087689318 100644
--- a/rts/wasm/OSMem.c
+++ b/rts/wasm/OSMem.c
@@ -52,7 +52,7 @@
 
 #include "RtsUtils.h"
 #include "sm/OSMem.h"
-#include "sm/HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 
 #include <__macro_PAGESIZE.h>
 
diff --git a/rts/win32/OSMem.c b/rts/win32/OSMem.c
index 4c643a97c206c3ea572d3586ea89788de381de87..6cccc4da83d3e74ffe314770e39e60def8606236 100644
--- a/rts/win32/OSMem.c
+++ b/rts/win32/OSMem.c
@@ -8,7 +8,7 @@
 
 #include "Rts.h"
 #include "sm/OSMem.h"
-#include "sm/HeapAlloc.h"
+#include "rts/storage/HeapAlloc.h"
 #include "RtsUtils.h"
 
 #include <windows.h>