mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	IPC: Fixed pushing ResultCodes into the command buffer.
They should have 32 bits of padding after the error code now.
This commit is contained in:
		
							parent
							
								
									32847d8b86
								
							
						
					
					
						commit
						80f6df5414
					
				@ -142,6 +142,13 @@ void RequestBuilder::PushRaw(const T& value) {
 | 
			
		||||
    index += (sizeof(T) + 3) / 4; // round up to word length
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline void RequestBuilder::Push(ResultCode value) {
 | 
			
		||||
    // Result codes are actually 64-bit in the IPC buffer, but only the high part is discarded.
 | 
			
		||||
    Push(value.raw);
 | 
			
		||||
    Push<u32>(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline void RequestBuilder::Push(u8 value) {
 | 
			
		||||
    PushRaw(value);
 | 
			
		||||
@ -163,11 +170,6 @@ inline void RequestBuilder::Push(bool value) {
 | 
			
		||||
    Push(static_cast<u8>(value));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
inline void RequestBuilder::Push(ResultCode value) {
 | 
			
		||||
    Push(value.raw);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <typename First, typename... Other>
 | 
			
		||||
void RequestBuilder::Push(const First& first_value, const Other&... other_values) {
 | 
			
		||||
    Push(first_value);
 | 
			
		||||
 | 
			
		||||
@ -107,7 +107,7 @@ void SM::GetService(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
 | 
			
		||||
    auto client_port = service_manager->GetServicePort(name);
 | 
			
		||||
    if (client_port.Failed()) {
 | 
			
		||||
        IPC::RequestBuilder rb = rp.MakeBuilder(1, 0, 0);
 | 
			
		||||
        IPC::RequestBuilder rb = rp.MakeBuilder(2, 0, 0);
 | 
			
		||||
        rb.Push(client_port.Code());
 | 
			
		||||
        LOG_ERROR(Service_SM, "called service=%s -> error 0x%08X", name.c_str(),
 | 
			
		||||
                  client_port.Code().raw);
 | 
			
		||||
@ -120,7 +120,7 @@ void SM::GetService(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
        LOG_DEBUG(Service_SM, "called service=%s -> session=%u", name.c_str(),
 | 
			
		||||
                  (*session)->GetObjectId());
 | 
			
		||||
        IPC::RequestBuilder rb = rp.MakeBuilder(2, 0, 1);
 | 
			
		||||
        rb.Push<u64>(0);
 | 
			
		||||
        rb.Push(session.Code());
 | 
			
		||||
        rb.PushMoveObjects(std::move(session).Unwrap());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user