mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	Merge pull request #3138 from wwylele/ipc-mapped-buffer
Kernel/IPC: Implement MappedBuffer translation for HLE services that use the HLERequestContext architecture.
This commit is contained in:
		
						commit
						14819d0b84
					
				
					 7 changed files with 319 additions and 125 deletions
				
			
		| 
						 | 
				
			
			@ -606,7 +606,7 @@ void DeleteContents(Service::Interface* self) {
 | 
			
		|||
    u8 media_type = rp.Pop<u8>();
 | 
			
		||||
    u64 title_id = rp.Pop<u64>();
 | 
			
		||||
    u32 content_count = rp.Pop<u32>();
 | 
			
		||||
    VAddr content_ids_in = rp.PopMappedBuffer();
 | 
			
		||||
    VAddr content_ids_in = rp.PopMappedBuffer(nullptr);
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
| 
						 | 
				
			
			@ -620,7 +620,7 @@ void GetProgramList(Service::Interface* self) {
 | 
			
		|||
 | 
			
		||||
    u32 count = rp.Pop<u32>();
 | 
			
		||||
    u8 media_type = rp.Pop<u8>();
 | 
			
		||||
    VAddr title_ids_output_pointer = rp.PopMappedBuffer();
 | 
			
		||||
    VAddr title_ids_output_pointer = rp.PopMappedBuffer(nullptr);
 | 
			
		||||
 | 
			
		||||
    if (!Memory::IsValidVirtualAddress(title_ids_output_pointer) || media_type > 2) {
 | 
			
		||||
        IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -765,7 +765,7 @@ void ListDataTitleTicketInfos(Service::Interface* self) {
 | 
			
		|||
    u32 ticket_count = rp.Pop<u32>();
 | 
			
		||||
    u64 title_id = rp.Pop<u64>();
 | 
			
		||||
    u32 start_index = rp.Pop<u32>();
 | 
			
		||||
    VAddr ticket_info_out = rp.PopMappedBuffer();
 | 
			
		||||
    VAddr ticket_info_out = rp.PopMappedBuffer(nullptr);
 | 
			
		||||
    VAddr ticket_info_write = ticket_info_out;
 | 
			
		||||
 | 
			
		||||
    for (u32 i = 0; i < ticket_count; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -840,7 +840,7 @@ void GetTicketList(Service::Interface* self) {
 | 
			
		|||
    IPC::RequestParser rp(Kernel::GetCommandBuffer(), 9, 2, 2); // 0x00090082
 | 
			
		||||
    u32 ticket_list_count = rp.Pop<u32>();
 | 
			
		||||
    u32 ticket_index = rp.Pop<u32>();
 | 
			
		||||
    VAddr ticket_tids_out = rp.PopMappedBuffer();
 | 
			
		||||
    VAddr ticket_tids_out = rp.PopMappedBuffer(nullptr);
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue