mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 18:54:14 +01:00 
			
		
		
		
	Merge pull request #6358 from Morph1984/k_map_region
kernel: process_capability: Add MapRegion capability
This commit is contained in:
		
						commit
						b6b73d9a5a
					
				| @ -22,6 +22,7 @@ enum : u32 { | ||||
|     CapabilityOffset_Syscall            = 4, | ||||
|     CapabilityOffset_MapPhysical        = 6, | ||||
|     CapabilityOffset_MapIO              = 7, | ||||
|     CapabilityOffset_MapRegion          = 10, | ||||
|     CapabilityOffset_Interrupt          = 11, | ||||
|     CapabilityOffset_ProgramType        = 13, | ||||
|     CapabilityOffset_KernelVersion      = 14, | ||||
| @ -46,6 +47,7 @@ enum class CapabilityType : u32 { | ||||
|     Syscall            = (1U << CapabilityOffset_Syscall) - 1, | ||||
|     MapPhysical        = (1U << CapabilityOffset_MapPhysical) - 1, | ||||
|     MapIO              = (1U << CapabilityOffset_MapIO) - 1, | ||||
|     MapRegion          = (1U << CapabilityOffset_MapRegion) - 1, | ||||
|     Interrupt          = (1U << CapabilityOffset_Interrupt) - 1, | ||||
|     ProgramType        = (1U << CapabilityOffset_ProgramType) - 1, | ||||
|     KernelVersion      = (1U << CapabilityOffset_KernelVersion) - 1, | ||||
| @ -187,6 +189,8 @@ ResultCode ProcessCapabilities::ParseSingleFlagCapability(u32& set_flags, u32& s | ||||
|         return HandleSyscallFlags(set_svc_bits, flag); | ||||
|     case CapabilityType::MapIO: | ||||
|         return HandleMapIOFlags(flag, page_table); | ||||
|     case CapabilityType::MapRegion: | ||||
|         return HandleMapRegionFlags(flag, page_table); | ||||
|     case CapabilityType::Interrupt: | ||||
|         return HandleInterruptFlags(flag); | ||||
|     case CapabilityType::ProgramType: | ||||
| @ -298,6 +302,11 @@ ResultCode ProcessCapabilities::HandleMapIOFlags(u32 flags, KPageTable& page_tab | ||||
|     return RESULT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| ResultCode ProcessCapabilities::HandleMapRegionFlags(u32 flags, KPageTable& page_table) { | ||||
|     // TODO(Lioncache): Implement once the memory manager can handle this.
 | ||||
|     return RESULT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| ResultCode ProcessCapabilities::HandleInterruptFlags(u32 flags) { | ||||
|     constexpr u32 interrupt_ignore_value = 0x3FF; | ||||
|     const u32 interrupt0 = (flags >> 12) & 0x3FF; | ||||
|  | ||||
| @ -231,6 +231,9 @@ private: | ||||
|     /// Handles flags related to mapping IO pages.
 | ||||
|     ResultCode HandleMapIOFlags(u32 flags, KPageTable& page_table); | ||||
| 
 | ||||
|     /// Handles flags related to mapping physical memory regions.
 | ||||
|     ResultCode HandleMapRegionFlags(u32 flags, KPageTable& page_table); | ||||
| 
 | ||||
|     /// Handles flags related to the interrupt capability flags.
 | ||||
|     ResultCode HandleInterruptFlags(u32 flags); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user