io.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/include/asm-arm/arch-nexuspci/io.h
  3.  *
  4.  * Copyright (C) 1997-1999 Russell King
  5.  * Copyright (C) 2000 FutureTV Labs Ltd.
  6.  */
  7. #ifndef __ASM_ARM_ARCH_IO_H
  8. #define __ASM_ARM_ARCH_IO_H
  9. #define IO_SPACE_LIMIT 0xffff
  10. /*
  11.  * Translation of various region addresses to virtual addresses
  12.  */
  13. #define __io(a) (PCIO_BASE + (a))
  14. #if 1
  15. #define __mem_pci(a) ((unsigned long)(a))
  16. #define __mem_isa(a) (PCIMEM_BASE + (unsigned long)(a))
  17. #else
  18. static inline unsigned long ___mem_pci(unsigned long a)
  19. {
  20. /* PCI addresses must have been ioremapped */
  21. if (a <= 0xc0000000 || a >= 0xe0000000)
  22. *((int *)0) = 0;
  23. return a;
  24. }
  25. static inline unsigned long ___mem_isa(unsigned long a)
  26. {
  27. if (a >= 16*1048576)
  28. BUG();
  29. return PCIMEM_BASE + a;
  30. }
  31. #define __mem_pci(a) ___mem_pci((unsigned long)(a))
  32. #define __mem_isa(a) ___mem_isa((unsigned long)(a))
  33. #endif
  34. /*
  35.  * Generic virtual read/write
  36.  */
  37. #define __arch_getw(a) (*(volatile unsigned short *)(a))
  38. #define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
  39. /*
  40.  * ioremap support - validate a PCI memory address,
  41.  * and convert a PCI memory address to a physical
  42.  * address for the page tables.
  43.  */
  44. #define iomem_valid_addr(iomem,sz)
  45. ((iomem) < 0x80000000 && (iomem) + (sz) <= 0x80000000)
  46. #define iomem_to_phys(iomem) ((iomem) + PLX_MEM_START)
  47. #endif