diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2009-01-25 17:18:21 +0100 |
---|---|---|
committer | Lars-Peter Clausen <lars@metafoo.de> | 2009-01-25 17:18:21 +0100 |
commit | b628ee50e55ef8f75d678765a248969724ef2fa6 (patch) | |
tree | 7d8238500b9d33d36d0709855e7718dff6e2ddfd /src/glamo.h | |
parent | 3712b1b6b9d77789ac1c5d0dccfb8494a608e6aa (diff) |
Add asm MMIO_{IN,OUT}16 for ARM.
Diffstat (limited to 'src/glamo.h')
-rw-r--r-- | src/glamo.h | 25 |
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)) |