@@ -24,18 +24,18 @@ impl<'a, V: VirtualAddress + AddressL2, FL: MapperFlushable> Rv32PageTableWith<'
2424 & mut self ,
2525 p2_index : usize ,
2626 allocator : & mut impl FrameAllocatorFor < <Self as Mapper >:: P > ,
27- ) -> Result < & mut PageTable , MapToError > {
27+ ) -> Result < & mut PageTableX32 , MapToError > {
2828 if self . root_table [ p2_index] . is_unused ( ) {
2929 let frame = allocator
3030 . alloc ( )
3131 . ok_or ( MapToError :: FrameAllocationFailed ) ?;
3232 self . root_table [ p2_index] . set ( frame. clone ( ) , F :: VALID ) ;
33- let p1_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
33+ let p1_table: & mut PageTableX32 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
3434 p1_table. zero ( ) ;
3535 Ok ( p1_table)
3636 } else {
3737 let frame = self . root_table [ p2_index] . frame :: < PhysAddrSv32 > ( ) ;
38- let p1_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
38+ let p1_table: & mut PageTableX32 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
3939 Ok ( p1_table)
4040 }
4141 }
@@ -66,12 +66,12 @@ impl<'a, V: VirtualAddress + AddressL2, FL: MapperFlushable> Mapper
6666 fn unmap (
6767 & mut self ,
6868 page : <Self as MapperExt >:: Page ,
69- ) -> Result < ( <Self as MapperExt >:: Frame , Self :: MapperFlush ) , UnmapError > {
69+ ) -> Result < ( <Self as MapperExt >:: Frame , Self :: MapperFlush ) , UnmapError < < Self as Mapper > :: P > > {
7070 if self . root_table [ page. p2_index ( ) ] . is_unused ( ) {
7171 return Err ( UnmapError :: PageNotMapped ) ;
7272 }
7373 let p1_frame = self . root_table [ page. p2_index ( ) ] . frame :: < PhysAddrSv32 > ( ) ;
74- let p1_table: & mut PageTable = unsafe { p1_frame. as_kernel_mut ( self . linear_offset ) } ;
74+ let p1_table: & mut PageTableX32 = unsafe { p1_frame. as_kernel_mut ( self . linear_offset ) } ;
7575 let p1_entry = & mut p1_table[ page. p1_index ( ) ] ;
7676 if !p1_entry. flags ( ) . contains ( F :: VALID ) {
7777 return Err ( UnmapError :: PageNotMapped ) ;
@@ -116,13 +116,13 @@ impl<'a, V: VirtualAddress + AddressL3, FL: MapperFlushable> Rv39PageTableWith<'
116116 p3_index : usize ,
117117 p2_index : usize ,
118118 allocator : & mut impl FrameAllocatorFor < <Self as Mapper >:: P > ,
119- ) -> Result < & mut PageTable , MapToError > {
119+ ) -> Result < & mut PageTableX64 , MapToError > {
120120 let p2_table = if self . root_table [ p3_index] . is_unused ( ) {
121121 let frame = allocator
122122 . alloc ( )
123123 . ok_or ( MapToError :: FrameAllocationFailed ) ?;
124124 self . root_table [ p3_index] . set ( frame. clone ( ) , F :: VALID ) ;
125- let p2_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
125+ let p2_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
126126 p2_table. zero ( ) ;
127127 p2_table
128128 } else {
@@ -134,12 +134,12 @@ impl<'a, V: VirtualAddress + AddressL3, FL: MapperFlushable> Rv39PageTableWith<'
134134 . alloc ( )
135135 . ok_or ( MapToError :: FrameAllocationFailed ) ?;
136136 p2_table[ p2_index] . set ( frame. clone ( ) , F :: VALID ) ;
137- let p1_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
137+ let p1_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
138138 p1_table. zero ( ) ;
139139 Ok ( p1_table)
140140 } else {
141141 let frame = p2_table[ p2_index] . frame :: < PhysAddrSv39 > ( ) ;
142- let p1_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
142+ let p1_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
143143 Ok ( p1_table)
144144 }
145145 }
@@ -170,18 +170,18 @@ impl<'a, V: VirtualAddress + AddressL3, FL: MapperFlushable> Mapper
170170 fn unmap (
171171 & mut self ,
172172 page : <Self as MapperExt >:: Page ,
173- ) -> Result < ( <Self as MapperExt >:: Frame , Self :: MapperFlush ) , UnmapError > {
173+ ) -> Result < ( <Self as MapperExt >:: Frame , Self :: MapperFlush ) , UnmapError < < Self as Mapper > :: P > > {
174174 if self . root_table [ page. p3_index ( ) ] . is_unused ( ) {
175175 return Err ( UnmapError :: PageNotMapped ) ;
176176 }
177177 let p2_frame = self . root_table [ page. p3_index ( ) ] . frame :: < PhysAddrSv39 > ( ) ;
178- let p2_table: & mut PageTable = unsafe { p2_frame. as_kernel_mut ( self . linear_offset ) } ;
178+ let p2_table: & mut PageTableX64 = unsafe { p2_frame. as_kernel_mut ( self . linear_offset ) } ;
179179
180180 if p2_table[ page. p2_index ( ) ] . is_unused ( ) {
181181 return Err ( UnmapError :: PageNotMapped ) ;
182182 }
183183 let p1_frame = p2_table[ page. p2_index ( ) ] . frame :: < PhysAddrSv39 > ( ) ;
184- let p1_table: & mut PageTable = unsafe { p1_frame. as_kernel_mut ( self . linear_offset ) } ;
184+ let p1_table: & mut PageTableX64 = unsafe { p1_frame. as_kernel_mut ( self . linear_offset ) } ;
185185 let p1_entry = & mut p1_table[ page. p1_index ( ) ] ;
186186 if !p1_entry. flags ( ) . contains ( F :: VALID ) {
187187 return Err ( UnmapError :: PageNotMapped ) ;
@@ -233,13 +233,13 @@ impl<'a, V: VirtualAddress + AddressL4, FL: MapperFlushable> Rv48PageTableWith<'
233233 p3_index : usize ,
234234 p2_index : usize ,
235235 allocator : & mut impl FrameAllocatorFor < <Self as Mapper >:: P > ,
236- ) -> Result < & mut PageTable , MapToError > {
236+ ) -> Result < & mut PageTableX64 , MapToError > {
237237 let p3_table = if self . root_table [ p4_index] . is_unused ( ) {
238238 let frame = allocator
239239 . alloc ( )
240240 . ok_or ( MapToError :: FrameAllocationFailed ) ?;
241241 self . root_table [ p4_index] . set ( frame. clone ( ) , F :: VALID ) ;
242- let p3_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
242+ let p3_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
243243 p3_table. zero ( ) ;
244244 p3_table
245245 } else {
@@ -252,7 +252,7 @@ impl<'a, V: VirtualAddress + AddressL4, FL: MapperFlushable> Rv48PageTableWith<'
252252 . alloc ( )
253253 . ok_or ( MapToError :: FrameAllocationFailed ) ?;
254254 p3_table[ p3_index] . set ( frame. clone ( ) , F :: VALID ) ;
255- let p2_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
255+ let p2_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
256256 p2_table. zero ( ) ;
257257 p2_table
258258 } else {
@@ -265,12 +265,12 @@ impl<'a, V: VirtualAddress + AddressL4, FL: MapperFlushable> Rv48PageTableWith<'
265265 . alloc ( )
266266 . ok_or ( MapToError :: FrameAllocationFailed ) ?;
267267 p2_table[ p2_index] . set ( frame. clone ( ) , F :: VALID ) ;
268- let p1_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
268+ let p1_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
269269 p1_table. zero ( ) ;
270270 Ok ( p1_table)
271271 } else {
272272 let frame = p2_table[ p2_index] . frame :: < PhysAddrSv48 > ( ) ;
273- let p1_table: & mut PageTable = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
273+ let p1_table: & mut PageTableX64 = unsafe { frame. as_kernel_mut ( self . linear_offset ) } ;
274274 Ok ( p1_table)
275275 }
276276 }
@@ -306,24 +306,24 @@ impl<'a, V: VirtualAddress + AddressL4, FL: MapperFlushable> Mapper
306306 fn unmap (
307307 & mut self ,
308308 page : <Self as MapperExt >:: Page ,
309- ) -> Result < ( <Self as MapperExt >:: Frame , Self :: MapperFlush ) , UnmapError > {
309+ ) -> Result < ( <Self as MapperExt >:: Frame , Self :: MapperFlush ) , UnmapError < < Self as Mapper > :: P > > {
310310 if self . root_table [ page. p4_index ( ) ] . is_unused ( ) {
311311 return Err ( UnmapError :: PageNotMapped ) ;
312312 }
313313 let p3_frame = self . root_table [ page. p4_index ( ) ] . frame :: < PhysAddrSv48 > ( ) ;
314- let p3_table: & mut PageTable = unsafe { p3_frame. as_kernel_mut ( self . linear_offset ) } ;
314+ let p3_table: & mut PageTableX64 = unsafe { p3_frame. as_kernel_mut ( self . linear_offset ) } ;
315315
316316 if p3_table[ page. p3_index ( ) ] . is_unused ( ) {
317317 return Err ( UnmapError :: PageNotMapped ) ;
318318 }
319319 let p2_frame = p3_table[ page. p3_index ( ) ] . frame :: < PhysAddrSv48 > ( ) ;
320- let p2_table: & mut PageTable = unsafe { p2_frame. as_kernel_mut ( self . linear_offset ) } ;
320+ let p2_table: & mut PageTableX64 = unsafe { p2_frame. as_kernel_mut ( self . linear_offset ) } ;
321321
322322 if p2_table[ page. p2_index ( ) ] . is_unused ( ) {
323323 return Err ( UnmapError :: PageNotMapped ) ;
324324 }
325325 let p1_frame = p2_table[ page. p2_index ( ) ] . frame :: < PhysAddrSv48 > ( ) ;
326- let p1_table: & mut PageTable = unsafe { p1_frame. as_kernel_mut ( self . linear_offset ) } ;
326+ let p1_table: & mut PageTableX64 = unsafe { p1_frame. as_kernel_mut ( self . linear_offset ) } ;
327327 let p1_entry = & mut p1_table[ page. p1_index ( ) ] ;
328328 if !p1_entry. flags ( ) . contains ( F :: VALID ) {
329329 return Err ( UnmapError :: PageNotMapped ) ;
0 commit comments