io.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * linux/include/asm-arm/arch-tbox/io.h
  3.  *
  4.  * Copyright (C) 1996-1999 Russell King
  5.  * Copyright (C) 1998, 1999 Philip Blundell
  6.  *
  7.  */
  8. #ifndef __ASM_ARM_ARCH_IO_H
  9. #define __ASM_ARM_ARCH_IO_H
  10. #define IO_SPACE_LIMIT 0xffffffff
  11. #define __io(_x) ((_x) << 2)
  12. /*
  13.  * Generic virtual read/write
  14.  */
  15. static inline unsigned int __arch_getw(unsigned long a)
  16. {
  17. unsigned int value;
  18. __asm__ __volatile__("ldr%?h %0, [%1, #0] @ getw"
  19. : "=&r" (value)
  20. : "r" (a));
  21. return value;
  22. }
  23. static inline void __arch_putw(unsigned int value, unsigned long a)
  24. {
  25. __asm__ __volatile__("str%?h %0, [%1, #0] @ putw"
  26. : : "r" (value), "r" (a));
  27. }
  28. /* Idem, for devices on the upper byte lanes */
  29. #define inb_u(p) __arch_getb(__io_pc(p) + 2)
  30. #define inw_u(p) __arch_getw(__io_pc(p) + 2)
  31. #define outb_u(v,p) __arch_putb(v,__io_pc(p) + 2)
  32. #define outw_u(v,p) __arch_putw(v,__io_pc(p) + 2)
  33. #endif