From 9cf1cfe3fdfc6a992b81d04cb2d9420deefc6244 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 9 Sep 2015 23:23:44 -0400
Subject: memory: Get rid of pointer casts

---
 src/core/memory.cpp | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

(limited to 'src/core/memory.cpp')

diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index cde390b8a4..b80795e0c0 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -3,6 +3,7 @@
 // Refer to the license.txt file included.
 
 #include <array>
+#include <cstring>
 
 #include "common/assert.h"
 #include "common/common_types.h"
@@ -95,7 +96,9 @@ template <typename T>
 T Read(const VAddr vaddr) {
     const u8* page_pointer = current_page_table->pointers[vaddr >> PAGE_BITS];
     if (page_pointer) {
-        return *reinterpret_cast<const T*>(page_pointer + (vaddr & PAGE_MASK));
+        T value;
+        std::memcpy(&value, &page_pointer[vaddr & PAGE_MASK], sizeof(T));
+        return value;
     }
 
     PageType type = current_page_table->attributes[vaddr >> PAGE_BITS];
@@ -117,7 +120,7 @@ template <typename T>
 void Write(const VAddr vaddr, const T data) {
     u8* page_pointer = current_page_table->pointers[vaddr >> PAGE_BITS];
     if (page_pointer) {
-        *reinterpret_cast<T*>(page_pointer + (vaddr & PAGE_MASK)) = data;
+        std::memcpy(&page_pointer[vaddr & PAGE_MASK], &data, sizeof(T));
         return;
     }
 
@@ -183,19 +186,9 @@ void Write64(const VAddr addr, const u64 data) {
 }
 
 void WriteBlock(const VAddr addr, const u8* data, const size_t size) {
-    u32 offset = 0;
-    while (offset < (size & ~3)) {
-        Write32(addr + offset, *(u32*)&data[offset]);
-        offset += 4;
-    }
-
-    if (size & 2) {
-        Write16(addr + offset, *(u16*)&data[offset]);
-        offset += 2;
-    }
-
-    if (size & 1)
+    for (u32 offset = 0; offset < size; offset++) {
         Write8(addr + offset, data[offset]);
+    }
 }
 
 PAddr VirtualToPhysicalAddress(const VAddr addr) {
-- 
cgit v1.2.3-70-g09d2