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

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/arch/sh/kernel/io.c
  3.  *
  4.  * Copyright (C) 2000  Stuart Menefy
  5.  *
  6.  * Provide real functions which expand to whatever the header file defined.
  7.  * Also definitions of machine independant IO functions.
  8.  */
  9. #include <asm/io.h>
  10. #include <linux/module.h>
  11. unsigned char _inb(unsigned long port)
  12. {
  13. return __inb(port);
  14. }
  15. EXPORT_SYMBOL(_inb);
  16. unsigned short _inw(unsigned long port)
  17. {
  18. return __inw(port);
  19. }
  20. EXPORT_SYMBOL(_inw);
  21. unsigned int _inl(unsigned long port)
  22. {
  23. return __inl(port);
  24. }
  25. EXPORT_SYMBOL(_inl);
  26. void _outb(unsigned char b, unsigned long port)
  27. {
  28. __outb(b, port);
  29. }
  30. EXPORT_SYMBOL(_outb);
  31. void _outw(unsigned short b, unsigned long port)
  32. {
  33. __outw(b, port);
  34. }
  35. EXPORT_SYMBOL(_outw);
  36. void _outl(unsigned int b, unsigned long port)
  37. {
  38. __outl(b, port);
  39. }
  40. EXPORT_SYMBOL(_outl);
  41. unsigned char _inb_p(unsigned long port)
  42. {
  43. return __inb_p(port);
  44. }
  45. EXPORT_SYMBOL(_inb_p);
  46. unsigned short _inw_p(unsigned long port)
  47. {
  48. return __inw_p(port);
  49. }
  50. EXPORT_SYMBOL(_inw_p);
  51. void _outb_p(unsigned char b, unsigned long port)
  52. {
  53. __outb_p(b, port);
  54. }
  55. EXPORT_SYMBOL(_outb_p);
  56. void _outw_p(unsigned short b, unsigned long port)
  57. {
  58. __outw_p(b, port);
  59. }
  60. EXPORT_SYMBOL(_outw_p);
  61. void _insb(unsigned long port, void *buffer, unsigned long count)
  62. {
  63. return __insb(port, buffer, count);
  64. }
  65. EXPORT_SYMBOL(_insb);
  66. void _insw(unsigned long port, void *buffer, unsigned long count)
  67. {
  68. __insw(port, buffer, count);
  69. }
  70. EXPORT_SYMBOL(_insw);
  71. void _insl(unsigned long port, void *buffer, unsigned long count)
  72. {
  73. __insl(port, buffer, count);
  74. }
  75. EXPORT_SYMBOL(_insl);
  76. void _outsb(unsigned long port, const void *buffer, unsigned long count)
  77. {
  78. __outsb(port, buffer, count);
  79. }
  80. EXPORT_SYMBOL(_outsb);
  81. void _outsw(unsigned long port, const void *buffer, unsigned long count)
  82. {
  83. __outsw(port, buffer, count);
  84. }
  85. EXPORT_SYMBOL(_outsw);
  86. void _outsl(unsigned long port, const void *buffer, unsigned long count)
  87. {
  88. __outsl(port, buffer, count);
  89. }
  90. EXPORT_SYMBOL(_outsl);
  91. unsigned char ___raw_readb(unsigned long addr)
  92. {
  93. return __readb(addr);
  94. }
  95. EXPORT_SYMBOL(___raw_readb);
  96. unsigned short ___raw_readw(unsigned long addr)
  97. {
  98. return __readw(addr);
  99. }
  100. EXPORT_SYMBOL(___raw_readw);
  101. unsigned int ___raw_readl(unsigned long addr)
  102. {
  103. return __readl(addr);
  104. }
  105. EXPORT_SYMBOL(___raw_readl);
  106. unsigned char _readb(unsigned long addr)
  107. {
  108. unsigned long r = __readb(addr);
  109. mb();
  110. return r;
  111. }
  112. EXPORT_SYMBOL(_readb);
  113. unsigned short _readw(unsigned long addr)
  114. {
  115. unsigned long r = __readw(addr);
  116. mb();
  117. return r;
  118. }
  119. EXPORT_SYMBOL(_readw);
  120. unsigned int _readl(unsigned long addr)
  121. {
  122. unsigned long r = __readl(addr);
  123. mb();
  124. return r;
  125. }
  126. EXPORT_SYMBOL(_readl);
  127. void ___raw_writeb(unsigned char b, unsigned long addr)
  128. {
  129. __writeb(b, addr);
  130. }
  131. void ___raw_writew(unsigned short b, unsigned long addr)
  132. {
  133. __writew(b, addr);
  134. }
  135. EXPORT_SYMBOL(___raw_writew);
  136. void ___raw_writel(unsigned int b, unsigned long addr)
  137. {
  138. __writel(b, addr);
  139. }
  140. EXPORT_SYMBOL(___raw_writel);
  141. void _writeb(unsigned char b, unsigned long addr)
  142. {
  143. __writeb(b, addr);
  144. mb();
  145. }
  146. EXPORT_SYMBOL(_writeb);
  147. void _writew(unsigned short b, unsigned long addr)
  148. {
  149. __writew(b, addr);
  150. mb();
  151. }
  152. EXPORT_SYMBOL(_writew);
  153. void _writel(unsigned int b, unsigned long addr)
  154. {
  155. __writel(b, addr);
  156. mb();
  157. }
  158. EXPORT_SYMBOL(_writel);
  159. /*
  160.  * Copy data from IO memory space to "real" memory space.
  161.  * This needs to be optimized.
  162.  */
  163. void  memcpy_fromio(void * to, unsigned long from, unsigned long count)
  164. {
  165.         while (count) {
  166.                 count--;
  167.                 *(char *) to = readb(from);
  168.                 ((char *) to)++;
  169.                 from++;
  170.         }
  171. }
  172.  
  173. /*
  174.  * Copy data from "real" memory space to IO memory space.
  175.  * This needs to be optimized.
  176.  */
  177. void  memcpy_toio(unsigned long to, const void * from, unsigned long count)
  178. {
  179.         while (count) {
  180.                 count--;
  181.                 writeb(*(char *) from, to);
  182.                 ((char *) from)++;
  183.                 to++;
  184.         }
  185. }
  186.  
  187. /*
  188.  * "memset" on IO memory space.
  189.  * This needs to be optimized.
  190.  */
  191. void  memset_io(unsigned long dst, int c, unsigned long count)
  192. {
  193.         while (count) {
  194.                 count--;
  195.                 writeb(c, dst);
  196.                 dst++;
  197.         }
  198. }