diff --git a/GHC/Exts/Heap.hs b/GHC/Exts/Heap.hs
--- a/GHC/Exts/Heap.hs
+++ b/GHC/Exts/Heap.hs
@@ -120,7 +120,7 @@
 
 instance Addr# ~ a => HasHeapRep (a :: TYPE 'AddrRep) where
     getClosureData x = return $
-        AddrClosure { ptipe = PAddr, addrVal = I# (unsafeCoerce# x) }
+        AddrClosure { ptipe = PAddr, addrVal = Ptr x }
 
 instance Float# ~ a => HasHeapRep (a :: TYPE 'FloatRep) where
     getClosureData x = return $
diff --git a/GHC/Exts/Heap/Closures.hs b/GHC/Exts/Heap/Closures.hs
--- a/GHC/Exts/Heap/Closures.hs
+++ b/GHC/Exts/Heap/Closures.hs
@@ -329,7 +329,7 @@
     -- | Primitive Addr
   | AddrClosure
         { ptipe      :: PrimType
-        , addrVal    :: !Int }
+        , addrVal    :: !(Ptr ()) }
 
     -- | Primitive Float
   | FloatClosure
diff --git a/ghc-heap.cabal b/ghc-heap.cabal
--- a/ghc-heap.cabal
+++ b/ghc-heap.cabal
@@ -1,6 +1,6 @@
 cabal-version:  3.0
 name:           ghc-heap
-version:        9.6.6
+version:        9.8.1
 license:        BSD-3-Clause
 license-file:   LICENSE
 maintainer:     libraries@haskell.org
@@ -23,7 +23,7 @@
   default-language: Haskell2010
 
   build-depends:    base             >= 4.9.0 && < 5.0
-                  , ghc-prim         > 0.2 && < 0.11
+                  , ghc-prim         > 0.2 && < 0.12
                   , rts              == 1.0.*
                   , containers       >= 0.6.2.1 && < 0.7
 
