| /* |
| * linux/include/asm-arm/arch-tbox/io.h |
| * |
| * Copyright (C) 1996-1999 Russell King |
| * Copyright (C) 1998, 1999 Philip Blundell |
| * |
| */ |
| #ifndef __ASM_ARM_ARCH_IO_H |
| #define __ASM_ARM_ARCH_IO_H |
| |
| #define IO_SPACE_LIMIT 0xffffffff |
| |
| #define __io(_x) ((_x) << 2) |
| |
| /* |
| * Generic virtual read/write |
| */ |
| static inline unsigned int __arch_getw(unsigned long a) |
| { |
| unsigned int value; |
| __asm__ __volatile__("ldr%?h %0, [%1, #0] @ getw" |
| : "=&r" (value) |
| : "r" (a)); |
| return value; |
| } |
| |
| static inline void __arch_putw(unsigned int value, unsigned long a) |
| { |
| __asm__ __volatile__("str%?h %0, [%1, #0] @ putw" |
| : : "r" (value), "r" (a)); |
| } |
| |
| /* Idem, for devices on the upper byte lanes */ |
| #define inb_u(p) __arch_getb(__io_pc(p) + 2) |
| #define inw_u(p) __arch_getw(__io_pc(p) + 2) |
| |
| #define outb_u(v,p) __arch_putb(v,__io_pc(p) + 2) |
| #define outw_u(v,p) __arch_putw(v,__io_pc(p) + 2) |
| |
| #endif |