[sq] add Page caps implementations
This commit is contained in:
		
							parent
							
								
									abc84ec6aa
								
							
						
					
					
						commit
						8d8a1c819a
					
				| 
						 | 
					@ -35,3 +35,21 @@ capdef! { PageDirectory }
 | 
				
			||||||
//=====================
 | 
					//=====================
 | 
				
			||||||
// Cap implementation
 | 
					// Cap implementation
 | 
				
			||||||
//=====================
 | 
					//=====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl PageDirectoryCapability {
 | 
				
			||||||
 | 
					    pub(crate) fn base_address() -> PhysAddr {
 | 
				
			||||||
 | 
					        PhysAddr::new(self.0.read(PageDirectoryCap::BasePtr))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn is_mapped() -> bool {
 | 
				
			||||||
 | 
					        self.0.read(PageDirectoryCap::IsMapped) == 1
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn mapped_address() -> VirtAddr {
 | 
				
			||||||
 | 
					        VirtAddr::new(self.0.read(PageDirectoryCap::MappedAddress))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn mapped_asid() -> ASID {
 | 
				
			||||||
 | 
					        self.0.read(PageDirectoryCap::MappedASID)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,3 +34,21 @@ capdef! { PageGlobalDirectory }
 | 
				
			||||||
//=====================
 | 
					//=====================
 | 
				
			||||||
// Cap implementation
 | 
					// Cap implementation
 | 
				
			||||||
//=====================
 | 
					//=====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl PageGlobalDirectoryCapability {
 | 
				
			||||||
 | 
					    pub(crate) fn base_address() -> PhysAddr {
 | 
				
			||||||
 | 
					        PhysAddr::new(self.0.read(PageGlobalDirectoryCap::BasePtr))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn is_mapped() -> bool {
 | 
				
			||||||
 | 
					        self.0.read(PageGlobalDirectoryCap::IsMapped) == 1
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn mapped_address() -> VirtAddr {
 | 
				
			||||||
 | 
					        VirtAddr::new(self.0.read(PageGlobalDirectoryCap::MappedAddress))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn mapped_asid() -> ASID {
 | 
				
			||||||
 | 
					        self.0.read(PageGlobalDirectoryCap::MappedASID)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,3 +35,21 @@ capdef! { PageTable }
 | 
				
			||||||
//=====================
 | 
					//=====================
 | 
				
			||||||
// Cap implementation
 | 
					// Cap implementation
 | 
				
			||||||
//=====================
 | 
					//=====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl PageTableCapability {
 | 
				
			||||||
 | 
					    pub(crate) fn base_address() -> PhysAddr {
 | 
				
			||||||
 | 
					        PhysAddr::new(self.0.read(PageTableCap::BasePtr))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn is_mapped() -> bool {
 | 
				
			||||||
 | 
					        self.0.read(PageTableCap::IsMapped) == 1
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn mapped_address() -> VirtAddr {
 | 
				
			||||||
 | 
					        VirtAddr::new(self.0.read(PageTableCap::MappedAddress))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub(crate) fn mapped_asid() -> ASID {
 | 
				
			||||||
 | 
					        self.0.read(PageTableCap::MappedASID)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,3 +26,5 @@ impl PageCacheManagement for PageGlobalDirectory {
 | 
				
			||||||
        todo!()
 | 
					        todo!()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl From<PhysAddr> for PageGlobalDirectory {}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue