The way we're currently modeling mmio is too simplified. We assume
that
every device has the same endianness as the target CPU. In reality,
most devices are little endian (all PCI and ISA ones I'm aware of).
Some
are big endian (special system devices) and a very little fraction is
target native endian (fw_cfg).
So instead of assuming every device to be native endianness, let's
move
to a model where the device tells us which endianness it's in.
That way we can compile the devices only once and get rid of all the
ugly
swap will be done by the underlying layer.
For the same of readability, this patch only introduces the helper
framework
but doesn't allow the registering code to set its endianness yet.
Signed-off-by: Alexander Graf <address@hidden>
---
cpu-common.h | 4 ++
exec.c | 122 +++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++
2 files changed, 126 insertions(+), 0 deletions(-)
diff --git a/cpu-common.h b/cpu-common.h
index a543b5d..839b236 100644
--- a/cpu-common.h
+++ b/cpu-common.h
@@ -20,6 +20,10 @@
#if !defined(CONFIG_USER_ONLY)
+#define DEVICE_NATIVE_ENDIAN 0
+#define DEVICE_BIG_ENDIAN 1
+#define DEVICE_LITTLE_ENDIAN 2