summaryrefslogtreecommitdiff
path: root/src/glamo.h
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2009-01-25 17:18:21 +0100
committerLars-Peter Clausen <lars@metafoo.de>2009-01-25 17:18:21 +0100
commitb628ee50e55ef8f75d678765a248969724ef2fa6 (patch)
tree7d8238500b9d33d36d0709855e7718dff6e2ddfd /src/glamo.h
parent3712b1b6b9d77789ac1c5d0dccfb8494a608e6aa (diff)
Add asm MMIO_{IN,OUT}16 for ARM.
Diffstat (limited to 'src/glamo.h')
-rw-r--r--src/glamo.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/glamo.h b/src/glamo.h
index b2c1784..7fa4c04 100644
--- a/src/glamo.h
+++ b/src/glamo.h
@@ -65,6 +65,31 @@ MMIO_IN16(__volatile__ void *base, const unsigned long offset)
return val;
}
+#elif defined(__arm__) /* && !defined(__ARM_EABI__) */
+
+static __inline__ void
+MMIO_OUT16(__volatile__ void *base, const unsigned long offset,
+ const unsigned short val)
+{
+ __asm__ __volatile__(
+ "strh %0, [%1, +%2]"
+ :
+ : "r" (val), "r" (base), "r" (offset)
+ : "memory" );
+}
+
+static __inline__ CARD16
+MMIO_IN16(__volatile__ void *base, const unsigned long offset)
+{
+ register unsigned short val;
+ __asm__ __volatile__(
+ "ldrh %0, [%1, +%2]"
+ : "=r" (val)
+ : "r" (base), "r" (offset)
+ : "memory");
+ return val;
+}
+
#else
#define MMIO_OUT16(mmio, a, v) (*(VOL16 *)((mmio) + (a)) = (v))