summaryrefslogtreecommitdiffstats
path: root/simulator/bcm5719_DEVICE_mmap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'simulator/bcm5719_DEVICE_mmap.cpp')
-rw-r--r--simulator/bcm5719_DEVICE_mmap.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/simulator/bcm5719_DEVICE_mmap.cpp b/simulator/bcm5719_DEVICE_mmap.cpp
index 0166258..f1df15e 100644
--- a/simulator/bcm5719_DEVICE_mmap.cpp
+++ b/simulator/bcm5719_DEVICE_mmap.cpp
@@ -46,6 +46,12 @@
#include <utility>
#include <bcm5719_DEVICE.h>
+#ifdef __ppc64__
+#define BARRIER() do { asm volatile ("sync 0\neieio\n" ::: "memory"); } while(0)
+#else
+#define BARRIER() do { asm volatile ("" ::: "memory"); } while(0)
+#endif
+
typedef std::pair<uint8_t *, uint32_t> ram_offset_t;
static uint32_t read_from_ram(uint32_t val, void *args)
@@ -55,6 +61,7 @@ static uint32_t read_from_ram(uint32_t val, void *args)
uint8_t *base = loc->first;
base += loc->second;
+ BARRIER();
return *(uint32_t *)base;
}
@@ -65,6 +72,7 @@ static uint32_t write_to_ram(uint32_t val, void *args)
uint8_t *base = loc->first;
base += loc->second;
+ BARRIER();
*(uint32_t *)base = val;
return val;
}
OpenPOWER on IntegriCloud