@@ -57,16 +57,22 @@ pub struct Virtual;
5757#[ derive( Debug , Clone , Copy , PartialEq , Eq , PartialOrd , Ord ) ]
5858pub struct Physical ;
5959
60+ /// Marker for a physical guest memory address type.
61+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , PartialOrd , Ord ) ]
62+ pub struct GuestPhysical ;
63+
6064/// Marker for user memory address type.
6165#[ derive( Debug , Clone , Copy , PartialEq , Eq , PartialOrd , Ord ) ]
6266pub struct User ;
6367
6468impl sealed:: Sealed for Virtual { }
6569impl sealed:: Sealed for Physical { }
70+ impl sealed:: Sealed for GuestPhysical { }
6671impl sealed:: Sealed for User { }
6772
6873impl MemKind for Virtual { }
6974impl MemKind for Physical { }
75+ impl MemKind for GuestPhysical { }
7076impl MemKind for User { }
7177
7278/// A memory address with a kind (`Virtual`, `Physical`, or `User`) and an
@@ -189,13 +195,21 @@ pub type TPA<T> = Address<Physical, T>;
189195pub type TVA < T > = Address < Virtual , T > ;
190196/// A typed user address.
191197pub type TUA < T > = Address < User , T > ;
198+ /// A typed guest physical address.
199+ pub type TGPA < T > = Address < GuestPhysical , T > ;
200+ /// A typed host physical address.
201+ pub type THPA < T > = TPA < T > ;
192202
193203/// An untyped physical address.
194204pub type PA = Address < Physical , ( ) > ;
195205/// An untyped virtual address.
196206pub type VA = Address < Virtual , ( ) > ;
197207/// An untyped user address.
198208pub type UA = Address < User , ( ) > ;
209+ /// An untyped guest physical address.
210+ pub type GPA = Address < GuestPhysical , ( ) > ;
211+ /// An untyped host physical address.
212+ pub type HPA = PA ;
199213
200214impl < T > TPA < T > {
201215 /// Convert to a raw const pointer.
0 commit comments