diff options
| author | 2016-04-19 14:08:02 -0500 | |
|---|---|---|
| committer | 2016-05-28 13:52:49 -0500 | |
| commit | 660499ac01b9244301a0642f4a0209ef8309ace4 (patch) | |
| tree | 372686ef656f18c9afdf80fb9599399b7b4d43e6 /src | |
| parent | SOC_U: Remove usage of GetPointer (diff) | |
| download | yuzu-660499ac01b9244301a0642f4a0209ef8309ace4.tar.gz yuzu-660499ac01b9244301a0642f4a0209ef8309ace4.tar.xz yuzu-660499ac01b9244301a0642f4a0209ef8309ace4.zip | |
Memory: Make ReadBlock and WriteBlock accept void pointers.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/frd/frd.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/service/soc_u.cpp | 14 | ||||
| -rw-r--r-- | src/core/memory.cpp | 8 | ||||
| -rw-r--r-- | src/core/memory.h | 4 | ||||
| -rw-r--r-- | src/core/mmio.h | 4 |
5 files changed, 19 insertions, 21 deletions
diff --git a/src/core/hle/service/frd/frd.cpp b/src/core/hle/service/frd/frd.cpp index 15d604bb6..29d144365 100644 --- a/src/core/hle/service/frd/frd.cpp +++ b/src/core/hle/service/frd/frd.cpp | |||
| @@ -23,7 +23,7 @@ void GetMyPresence(Service::Interface* self) { | |||
| 23 | 23 | ||
| 24 | ASSERT(shifted_out_size == ((sizeof(MyPresence) << 14) | 2)); | 24 | ASSERT(shifted_out_size == ((sizeof(MyPresence) << 14) | 2)); |
| 25 | 25 | ||
| 26 | Memory::WriteBlock(my_presence_addr, reinterpret_cast<const u8*>(&my_presence), sizeof(MyPresence)); | 26 | Memory::WriteBlock(my_presence_addr, &my_presence, sizeof(MyPresence)); |
| 27 | 27 | ||
| 28 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error | 28 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error |
| 29 | 29 | ||
| @@ -39,8 +39,7 @@ void GetFriendKeyList(Service::Interface* self) { | |||
| 39 | 39 | ||
| 40 | FriendKey zero_key = {}; | 40 | FriendKey zero_key = {}; |
| 41 | for (u32 i = 0; i < frd_count; ++i) { | 41 | for (u32 i = 0; i < frd_count; ++i) { |
| 42 | Memory::WriteBlock(frd_key_addr + i * sizeof(FriendKey), | 42 | Memory::WriteBlock(frd_key_addr + i * sizeof(FriendKey), &zero_key, sizeof(FriendKey)); |
| 43 | reinterpret_cast<const u8*>(&zero_key), sizeof(FriendKey)); | ||
| 44 | } | 43 | } |
| 45 | 44 | ||
| 46 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error | 45 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error |
| @@ -58,8 +57,7 @@ void GetFriendProfile(Service::Interface* self) { | |||
| 58 | 57 | ||
| 59 | Profile zero_profile = {}; | 58 | Profile zero_profile = {}; |
| 60 | for (u32 i = 0; i < count; ++i) { | 59 | for (u32 i = 0; i < count; ++i) { |
| 61 | Memory::WriteBlock(profiles_addr + i * sizeof(Profile), | 60 | Memory::WriteBlock(profiles_addr + i * sizeof(Profile), &zero_profile, sizeof(Profile)); |
| 62 | reinterpret_cast<const u8*>(&zero_profile), sizeof(Profile)); | ||
| 63 | } | 61 | } |
| 64 | 62 | ||
| 65 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error | 63 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error |
| @@ -88,7 +86,7 @@ void GetMyFriendKey(Service::Interface* self) { | |||
| 88 | u32* cmd_buff = Kernel::GetCommandBuffer(); | 86 | u32* cmd_buff = Kernel::GetCommandBuffer(); |
| 89 | 87 | ||
| 90 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error | 88 | cmd_buff[1] = RESULT_SUCCESS.raw; // No error |
| 91 | Memory::WriteBlock(cmd_buff[2], reinterpret_cast<const u8*>(&my_friend_key), sizeof(FriendKey)); | 89 | Memory::WriteBlock(cmd_buff[2], &my_friend_key, sizeof(FriendKey)); |
| 92 | LOG_WARNING(Service_FRD, "(STUBBED) called"); | 90 | LOG_WARNING(Service_FRD, "(STUBBED) called"); |
| 93 | } | 91 | } |
| 94 | 92 | ||
diff --git a/src/core/hle/service/soc_u.cpp b/src/core/hle/service/soc_u.cpp index a7404085b..9b285567b 100644 --- a/src/core/hle/service/soc_u.cpp +++ b/src/core/hle/service/soc_u.cpp | |||
| @@ -568,7 +568,7 @@ static void SendTo(Service::Interface* self) { | |||
| 568 | Memory::ReadBlock(input_buff_address, input_buff.data(), input_buff.size()); | 568 | Memory::ReadBlock(input_buff_address, input_buff.data(), input_buff.size()); |
| 569 | 569 | ||
| 570 | CTRSockAddr ctr_dest_addr; | 570 | CTRSockAddr ctr_dest_addr; |
| 571 | Memory::ReadBlock(dest_addr_addr, reinterpret_cast<u8*>(&ctr_dest_addr), sizeof(ctr_dest_addr)); | 571 | Memory::ReadBlock(dest_addr_addr, &ctr_dest_addr, sizeof(ctr_dest_addr)); |
| 572 | 572 | ||
| 573 | int ret = -1; | 573 | int ret = -1; |
| 574 | if (addr_len > 0) { | 574 | if (addr_len > 0) { |
| @@ -623,7 +623,7 @@ static void RecvFrom(Service::Interface* self) { | |||
| 623 | 623 | ||
| 624 | if (ret >= 0 && buffer_parameters.output_src_address_buffer != 0 && src_addr_len > 0) { | 624 | if (ret >= 0 && buffer_parameters.output_src_address_buffer != 0 && src_addr_len > 0) { |
| 625 | CTRSockAddr ctr_src_addr = CTRSockAddr::FromPlatform(src_addr); | 625 | CTRSockAddr ctr_src_addr = CTRSockAddr::FromPlatform(src_addr); |
| 626 | Memory::WriteBlock(buffer_parameters.output_src_address_buffer, reinterpret_cast<u8*>(&ctr_src_addr), sizeof(ctr_src_addr)); | 626 | Memory::WriteBlock(buffer_parameters.output_src_address_buffer, &ctr_src_addr, sizeof(ctr_src_addr)); |
| 627 | } | 627 | } |
| 628 | 628 | ||
| 629 | int result = 0; | 629 | int result = 0; |
| @@ -654,7 +654,7 @@ static void Poll(Service::Interface* self) { | |||
| 654 | } | 654 | } |
| 655 | 655 | ||
| 656 | std::vector<CTRPollFD> ctr_fds(nfds); | 656 | std::vector<CTRPollFD> ctr_fds(nfds); |
| 657 | Memory::ReadBlock(input_fds_addr, reinterpret_cast<u8*>(ctr_fds.data()), nfds * sizeof(CTRPollFD)); | 657 | Memory::ReadBlock(input_fds_addr, ctr_fds.data(), nfds * sizeof(CTRPollFD)); |
| 658 | 658 | ||
| 659 | // The 3ds_pollfd and the pollfd structures may be different (Windows/Linux have different sizes) | 659 | // The 3ds_pollfd and the pollfd structures may be different (Windows/Linux have different sizes) |
| 660 | // so we have to copy the data | 660 | // so we have to copy the data |
| @@ -666,7 +666,7 @@ static void Poll(Service::Interface* self) { | |||
| 666 | // Now update the output pollfd structure | 666 | // Now update the output pollfd structure |
| 667 | std::transform(platform_pollfd.begin(), platform_pollfd.end(), ctr_fds.begin(), CTRPollFD::FromPlatform); | 667 | std::transform(platform_pollfd.begin(), platform_pollfd.end(), ctr_fds.begin(), CTRPollFD::FromPlatform); |
| 668 | 668 | ||
| 669 | Memory::WriteBlock(output_fds_addr, reinterpret_cast<u8*>(ctr_fds.data()), nfds * sizeof(CTRPollFD)); | 669 | Memory::WriteBlock(output_fds_addr, ctr_fds.data(), nfds * sizeof(CTRPollFD)); |
| 670 | 670 | ||
| 671 | int result = 0; | 671 | int result = 0; |
| 672 | if (ret == SOCKET_ERROR_VALUE) | 672 | if (ret == SOCKET_ERROR_VALUE) |
| @@ -690,7 +690,7 @@ static void GetSockName(Service::Interface* self) { | |||
| 690 | 690 | ||
| 691 | if (ctr_dest_addr_addr != 0 && Memory::IsValidVirtualAddress(ctr_dest_addr_addr)) { | 691 | if (ctr_dest_addr_addr != 0 && Memory::IsValidVirtualAddress(ctr_dest_addr_addr)) { |
| 692 | CTRSockAddr ctr_dest_addr = CTRSockAddr::FromPlatform(dest_addr); | 692 | CTRSockAddr ctr_dest_addr = CTRSockAddr::FromPlatform(dest_addr); |
| 693 | Memory::WriteBlock(ctr_dest_addr_addr, reinterpret_cast<u8*>(&ctr_dest_addr), sizeof(ctr_dest_addr)); | 693 | Memory::WriteBlock(ctr_dest_addr_addr, &ctr_dest_addr, sizeof(ctr_dest_addr)); |
| 694 | } else { | 694 | } else { |
| 695 | cmd_buffer[1] = -1; // TODO(Subv): Verify error | 695 | cmd_buffer[1] = -1; // TODO(Subv): Verify error |
| 696 | return; | 696 | return; |
| @@ -731,7 +731,7 @@ static void GetPeerName(Service::Interface* self) { | |||
| 731 | 731 | ||
| 732 | if (ctr_dest_addr_addr != 0 && Memory::IsValidVirtualAddress(ctr_dest_addr_addr)) { | 732 | if (ctr_dest_addr_addr != 0 && Memory::IsValidVirtualAddress(ctr_dest_addr_addr)) { |
| 733 | CTRSockAddr ctr_dest_addr = CTRSockAddr::FromPlatform(dest_addr); | 733 | CTRSockAddr ctr_dest_addr = CTRSockAddr::FromPlatform(dest_addr); |
| 734 | Memory::WriteBlock(ctr_dest_addr_addr, reinterpret_cast<u8*>(&ctr_dest_addr), sizeof(ctr_dest_addr)); | 734 | Memory::WriteBlock(ctr_dest_addr_addr, &ctr_dest_addr, sizeof(ctr_dest_addr)); |
| 735 | } else { | 735 | } else { |
| 736 | cmd_buffer[1] = -1; | 736 | cmd_buffer[1] = -1; |
| 737 | return; | 737 | return; |
| @@ -761,7 +761,7 @@ static void Connect(Service::Interface* self) { | |||
| 761 | } | 761 | } |
| 762 | 762 | ||
| 763 | CTRSockAddr ctr_input_addr; | 763 | CTRSockAddr ctr_input_addr; |
| 764 | Memory::ReadBlock(ctr_input_addr_addr, reinterpret_cast<u8*>(&ctr_input_addr), sizeof(ctr_input_addr)); | 764 | Memory::ReadBlock(ctr_input_addr_addr, &ctr_input_addr, sizeof(ctr_input_addr)); |
| 765 | 765 | ||
| 766 | sockaddr input_addr = CTRSockAddr::ToPlatform(ctr_input_addr); | 766 | sockaddr input_addr = CTRSockAddr::ToPlatform(ctr_input_addr); |
| 767 | int ret = ::connect(socket_handle, &input_addr, sizeof(input_addr)); | 767 | int ret = ::connect(socket_handle, &input_addr, sizeof(input_addr)); |
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index bf2493270..2ac3e7de4 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -364,7 +364,7 @@ u64 Read64(const VAddr addr) { | |||
| 364 | return Read<u64_le>(addr); | 364 | return Read<u64_le>(addr); |
| 365 | } | 365 | } |
| 366 | 366 | ||
| 367 | void ReadBlock(const VAddr src_addr, u8* dest_buffer, const size_t size) { | 367 | void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { |
| 368 | size_t remaining_size = size; | 368 | size_t remaining_size = size; |
| 369 | size_t page_index = src_addr >> PAGE_BITS; | 369 | size_t page_index = src_addr >> PAGE_BITS; |
| 370 | size_t page_offset = src_addr & PAGE_MASK; | 370 | size_t page_offset = src_addr & PAGE_MASK; |
| @@ -398,7 +398,7 @@ void ReadBlock(const VAddr src_addr, u8* dest_buffer, const size_t size) { | |||
| 398 | 398 | ||
| 399 | page_index++; | 399 | page_index++; |
| 400 | page_offset = 0; | 400 | page_offset = 0; |
| 401 | dest_buffer += copy_amount; | 401 | dest_buffer = static_cast<u8*>(dest_buffer) + copy_amount; |
| 402 | remaining_size -= copy_amount; | 402 | remaining_size -= copy_amount; |
| 403 | } | 403 | } |
| 404 | } | 404 | } |
| @@ -419,7 +419,7 @@ void Write64(const VAddr addr, const u64 data) { | |||
| 419 | Write<u64_le>(addr, data); | 419 | Write<u64_le>(addr, data); |
| 420 | } | 420 | } |
| 421 | 421 | ||
| 422 | void WriteBlock(const VAddr dest_addr, const u8* src_buffer, const size_t size) { | 422 | void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size) { |
| 423 | size_t remaining_size = size; | 423 | size_t remaining_size = size; |
| 424 | size_t page_index = dest_addr >> PAGE_BITS; | 424 | size_t page_index = dest_addr >> PAGE_BITS; |
| 425 | size_t page_offset = dest_addr & PAGE_MASK; | 425 | size_t page_offset = dest_addr & PAGE_MASK; |
| @@ -452,7 +452,7 @@ void WriteBlock(const VAddr dest_addr, const u8* src_buffer, const size_t size) | |||
| 452 | 452 | ||
| 453 | page_index++; | 453 | page_index++; |
| 454 | page_offset = 0; | 454 | page_offset = 0; |
| 455 | src_buffer += copy_amount; | 455 | src_buffer = static_cast<const u8*>(src_buffer) + copy_amount; |
| 456 | remaining_size -= copy_amount; | 456 | remaining_size -= copy_amount; |
| 457 | } | 457 | } |
| 458 | } | 458 | } |
diff --git a/src/core/memory.h b/src/core/memory.h index bb5dd0d15..ae5588dee 100644 --- a/src/core/memory.h +++ b/src/core/memory.h | |||
| @@ -123,8 +123,8 @@ void Write16(VAddr addr, u16 data); | |||
| 123 | void Write32(VAddr addr, u32 data); | 123 | void Write32(VAddr addr, u32 data); |
| 124 | void Write64(VAddr addr, u64 data); | 124 | void Write64(VAddr addr, u64 data); |
| 125 | 125 | ||
| 126 | void ReadBlock(const VAddr src_addr, u8* dest_buffer, size_t size); | 126 | void ReadBlock(const VAddr src_addr, void* dest_buffer, size_t size); |
| 127 | void WriteBlock(const VAddr dest_addr, const u8* src_buffer, size_t size); | 127 | void WriteBlock(const VAddr dest_addr, const void* src_buffer, size_t size); |
| 128 | void ZeroBlock(const VAddr dest_addr, const size_t size); | 128 | void ZeroBlock(const VAddr dest_addr, const size_t size); |
| 129 | void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size); | 129 | void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size); |
| 130 | 130 | ||
diff --git a/src/core/mmio.h b/src/core/mmio.h index 35b73b061..d76f005d8 100644 --- a/src/core/mmio.h +++ b/src/core/mmio.h | |||
| @@ -25,14 +25,14 @@ public: | |||
| 25 | virtual u32 Read32(VAddr addr) = 0; | 25 | virtual u32 Read32(VAddr addr) = 0; |
| 26 | virtual u64 Read64(VAddr addr) = 0; | 26 | virtual u64 Read64(VAddr addr) = 0; |
| 27 | 27 | ||
| 28 | virtual bool ReadBlock(VAddr src_addr, u8* dest_buffer, size_t size) = 0; | 28 | virtual bool ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) = 0; |
| 29 | 29 | ||
| 30 | virtual void Write8(VAddr addr, u8 data) = 0; | 30 | virtual void Write8(VAddr addr, u8 data) = 0; |
| 31 | virtual void Write16(VAddr addr, u16 data) = 0; | 31 | virtual void Write16(VAddr addr, u16 data) = 0; |
| 32 | virtual void Write32(VAddr addr, u32 data) = 0; | 32 | virtual void Write32(VAddr addr, u32 data) = 0; |
| 33 | virtual void Write64(VAddr addr, u64 data) = 0; | 33 | virtual void Write64(VAddr addr, u64 data) = 0; |
| 34 | 34 | ||
| 35 | virtual bool WriteBlock(VAddr dest_addr, const u8* src_buffer, size_t size) = 0; | 35 | virtual bool WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) = 0; |
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | using MMIORegionPointer = std::shared_ptr<MMIORegion>; | 38 | using MMIORegionPointer = std::shared_ptr<MMIORegion>; |