mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 23:49:01 -05:00 
			
		
		
		
	kernel/process_capability: Handle syscall capability flags
This commit is contained in:
		| @@ -239,7 +239,30 @@ ResultCode ProcessCapabilities::HandlePriorityCoreNumFlags(u32 flags) { | ||||
| } | ||||
|  | ||||
| ResultCode ProcessCapabilities::HandleSyscallFlags(u32& set_svc_bits, u32 flags) { | ||||
|     // TODO: Implement | ||||
|     const u32 index = flags >> 29; | ||||
|     const u32 svc_bit = 1U << index; | ||||
|  | ||||
|     // If we've already set this svc before, bail. | ||||
|     if ((set_svc_bits & svc_bit) != 0) { | ||||
|         return ERR_INVALID_COMBINATION; | ||||
|     } | ||||
|     set_svc_bits |= svc_bit; | ||||
|  | ||||
|     const u32 svc_mask = (flags >> 5) & 0xFFFFFF; | ||||
|     for (u32 i = 0; i < 24; ++i) { | ||||
|         const u32 svc_number = index * 24 + i; | ||||
|  | ||||
|         if ((svc_mask & (1U << i)) == 0) { | ||||
|             continue; | ||||
|         } | ||||
|  | ||||
|         if (svc_number >= svc_capabilities.size()) { | ||||
|             return ERR_OUT_OF_RANGE; | ||||
|         } | ||||
|  | ||||
|         svc_capabilities[svc_number] = true; | ||||
|     } | ||||
|  | ||||
|     return RESULT_SUCCESS; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -132,6 +132,11 @@ public: | ||||
|         return priority_mask; | ||||
|     } | ||||
|  | ||||
|     /// Gets the SVC access permission bits | ||||
|     const SyscallCapabilities& GetServiceCapabilities() const { | ||||
|         return svc_capabilities; | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     /// Attempts to parse a given sequence of capability descriptors. | ||||
|     /// | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lioncash
					Lioncash