Merge branch 'hpet' into release
[linux-2.6] / arch / sh / include / asm / io_generic.h
1 /*
2  * Trivial I/O routine definitions, intentionally meant to be included
3  * multiple times. Ugly I/O routine concatenation helpers taken from
4  * alpha. Must be included _before_ io.h to avoid preprocessor-induced
5  * routine mismatch.
6  */
7 #define IO_CONCAT(a,b)  _IO_CONCAT(a,b)
8 #define _IO_CONCAT(a,b) a ## _ ## b
9
10 #ifndef __IO_PREFIX
11 #error "Don't include this header without a valid system prefix"
12 #endif
13
14 u8 IO_CONCAT(__IO_PREFIX,inb)(unsigned long);
15 u16 IO_CONCAT(__IO_PREFIX,inw)(unsigned long);
16 u32 IO_CONCAT(__IO_PREFIX,inl)(unsigned long);
17
18 void IO_CONCAT(__IO_PREFIX,outb)(u8, unsigned long);
19 void IO_CONCAT(__IO_PREFIX,outw)(u16, unsigned long);
20 void IO_CONCAT(__IO_PREFIX,outl)(u32, unsigned long);
21
22 u8 IO_CONCAT(__IO_PREFIX,inb_p)(unsigned long);
23 u16 IO_CONCAT(__IO_PREFIX,inw_p)(unsigned long);
24 u32 IO_CONCAT(__IO_PREFIX,inl_p)(unsigned long);
25 void IO_CONCAT(__IO_PREFIX,outb_p)(u8, unsigned long);
26 void IO_CONCAT(__IO_PREFIX,outw_p)(u16, unsigned long);
27 void IO_CONCAT(__IO_PREFIX,outl_p)(u32, unsigned long);
28
29 void IO_CONCAT(__IO_PREFIX,insb)(unsigned long, void *dst, unsigned long count);
30 void IO_CONCAT(__IO_PREFIX,insw)(unsigned long, void *dst, unsigned long count);
31 void IO_CONCAT(__IO_PREFIX,insl)(unsigned long, void *dst, unsigned long count);
32 void IO_CONCAT(__IO_PREFIX,outsb)(unsigned long, const void *src, unsigned long count);
33 void IO_CONCAT(__IO_PREFIX,outsw)(unsigned long, const void *src, unsigned long count);
34 void IO_CONCAT(__IO_PREFIX,outsl)(unsigned long, const void *src, unsigned long count);
35
36 void *IO_CONCAT(__IO_PREFIX,ioremap)(unsigned long offset, unsigned long size);
37 void IO_CONCAT(__IO_PREFIX,iounmap)(void *addr);
38
39 void __iomem *IO_CONCAT(__IO_PREFIX,ioport_map)(unsigned long addr, unsigned int size);
40 void IO_CONCAT(__IO_PREFIX,ioport_unmap)(void __iomem *addr);
41
42 #undef __IO_PREFIX