@@ -211,8 +211,9 @@ impl<'a, C: PageTableConfig, PTL: PageTableLockTrait<C>> Cursor<'a, C, PTL> {
211211 &&& forall|i: int, j: int|
212212 0 <= i < j < self . path. len( ) ==> 0 < ( j - 1 ) < PagingConsts :: NR_LEVELS_SPEC ( )
213213 && #[ trigger] self . path[ i] . is_some( ) ==> #[ trigger] self . path[ j] . is_some( )
214- &&& forall|i: int| 1 <= i < self . path. len( ) && self . path[ i] . is_some( ) ==>
215- self . path[ i - 1 ] . is_some( ) ==> exec:: get_pte_from_addr(
214+ &&& forall|i: int|
215+ 1 <= i < self . path. len( ) && self . path[ i] . is_some( ) ==> self . path[ i - 1 ] . is_some( )
216+ ==> exec:: get_pte_from_addr(
216217 ( #[ trigger] self . path[ i] . unwrap( ) . paddr( ) + pte_index( self . va, ( i + 1 ) as u8 )
217218 * exec:: SIZEOF_PAGETABLEENTRY ) as usize ,
218219 sub_page_table,
@@ -309,14 +310,18 @@ impl<'a, C: PageTableConfig, PTL: PageTableLockTrait<C>> Cursor<'a, C, PTL> {
309310 old( self ) . path[ old( self ) . level as usize - 1 ] . is_some( ) ,
310311 old_level@ >= old( self ) . level,
311312 old( self ) . path_wf( spt) ,
312- child_pt. paddr( ) < exec:: PHYSICAL_BASE_ADDRESS_SPEC ( ) + exec:: SIZEOF_FRAME * exec:: MAX_FRAME_NUM ,
313+ child_pt. paddr( ) < exec:: PHYSICAL_BASE_ADDRESS_SPEC ( ) + exec:: SIZEOF_FRAME
314+ * exec:: MAX_FRAME_NUM ,
313315 spt. frames@. value( ) . contains_key( child_pt. paddr( ) as int) ,
314316 spt. wf( ) ,
315317 exec:: get_pte_from_addr(
316- #[ verifier:: truncate] ( ( old( self ) . path[ old( self ) . level - 1 ] . unwrap( ) . paddr( ) + pte_index( old( self ) . va, ( old( self ) . level) as u8 )
317- * exec:: SIZEOF_PAGETABLEENTRY ) as usize ) ,
318+ #[ verifier:: truncate]
319+ ( ( old( self ) . path[ old( self ) . level - 1 ] . unwrap( ) . paddr( ) + pte_index(
320+ old( self ) . va,
321+ ( old( self ) . level) as u8 ,
322+ ) * exec:: SIZEOF_PAGETABLEENTRY ) as usize ) ,
318323 spt,
319- ) . frame_paddr( ) == child_pt. paddr( )
324+ ) . frame_paddr( ) == child_pt. paddr( ) ,
320325 ensures
321326 self . level == old( self ) . level - 1 ,
322327 self . path. len( ) == old( self ) . path. len( ) ,
@@ -609,10 +614,13 @@ impl<'a, C: PageTableConfig, PTL: PageTableLockTrait<C>> CursorMut<'a, C, PTL> {
609614 // in the locked sub-tree, so that it is locked and alive.
610615 assume( self . 0 . path_wf( spt) ) ;
611616 assume( exec:: get_pte_from_addr(
612- #[ verifier:: truncate] ( ( self . 0 . path[ self . 0 . level - 1 ] . unwrap( ) . paddr( ) + pte_index( self . 0 . va, ( self . 0 . level) as u8 )
613- * exec:: SIZEOF_PAGETABLEENTRY ) as usize ) ,
617+ #[ verifier:: truncate]
618+ ( ( self . 0 . path[ self . 0 . level - 1 ] . unwrap( ) . paddr( ) + pte_index(
619+ self . 0 . va,
620+ ( self . 0 . level) as u8 ,
621+ ) * exec:: SIZEOF_PAGETABLEENTRY ) as usize ) ,
614622 spt,
615- ) . frame_paddr( ) == paddr) ; // TODO: set pte.frame_paddr
623+ ) . frame_paddr( ) == paddr) ; // TODO: set pte.frame_paddr
616624
617625 self . 0 . push_level(
618626 // unsafe { PageTableLock::from_raw_paddr(paddr) }
0 commit comments