Go to the documentation of this file.
4 #include <linux/kernel.h>
5 #include <linux/compiler.h>
6 #include <linux/types.h>
13 #define __SLOW_DOWN_IO do { } while (0)
14 #define SLOW_DOWN_IO do { } while (0)
18 #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
24 __asm__ __volatile__(
"lduba\t[%1] %2, %0\t/* pci_inb */"
36 __asm__ __volatile__(
"lduha\t[%1] %2, %0\t/* pci_inw */"
44 static inline u32 _inl(
unsigned long addr)
48 __asm__ __volatile__(
"lduwa\t[%1] %2, %0\t/* pci_inl */"
56 static inline void _outb(
u8 b,
unsigned long addr)
58 __asm__ __volatile__(
"stba\t%r0, [%1] %2\t/* pci_outb */"
64 static inline void _outw(
u16 w,
unsigned long addr)
66 __asm__ __volatile__(
"stha\t%r0, [%1] %2\t/* pci_outw */"
72 static inline void _outl(
u32 l,
unsigned long addr)
74 __asm__ __volatile__(
"stwa\t%r0, [%1] %2\t/* pci_outl */"
80 #define inb(__addr) (_inb((unsigned long)(__addr)))
81 #define inw(__addr) (_inw((unsigned long)(__addr)))
82 #define inl(__addr) (_inl((unsigned long)(__addr)))
83 #define outb(__b, __addr) (_outb((u8)(__b), (unsigned long)(__addr)))
84 #define outw(__w, __addr) (_outw((u16)(__w), (unsigned long)(__addr)))
85 #define outl(__l, __addr) (_outl((u32)(__l), (unsigned long)(__addr)))
87 #define inb_p(__addr) inb(__addr)
88 #define outb_p(__b, __addr) outb(__b, __addr)
89 #define inw_p(__addr) inw(__addr)
90 #define outw_p(__w, __addr) outw(__w, __addr)
91 #define inl_p(__addr) inl(__addr)
92 #define outl_p(__l, __addr) outl(__l, __addr)
94 extern void outsb(
unsigned long,
const void *,
unsigned long);
95 extern void outsw(
unsigned long,
const void *,
unsigned long);
96 extern void outsl(
unsigned long,
const void *,
unsigned long);
97 extern void insb(
unsigned long,
void *,
unsigned long);
98 extern void insw(
unsigned long,
void *,
unsigned long);
99 extern void insl(
unsigned long,
void *,
unsigned long);
131 static inline u8 _readb(
const volatile void __iomem *addr)
134 __asm__ __volatile__(
"lduba\t[%1] %2, %0\t/* pci_readb */"
141 static inline u16 _readw(
const volatile void __iomem *addr)
144 __asm__ __volatile__(
"lduha\t[%1] %2, %0\t/* pci_readw */"
152 static inline u32 _readl(
const volatile void __iomem *addr)
155 __asm__ __volatile__(
"lduwa\t[%1] %2, %0\t/* pci_readl */"
163 static inline u64 _readq(
const volatile void __iomem *addr)
166 __asm__ __volatile__(
"ldxa\t[%1] %2, %0\t/* pci_readq */"
174 static inline void _writeb(
u8 b,
volatile void __iomem *addr)
176 __asm__ __volatile__(
"stba\t%r0, [%1] %2\t/* pci_writeb */"
182 static inline void _writew(
u16 w,
volatile void __iomem *addr)
184 __asm__ __volatile__(
"stha\t%r0, [%1] %2\t/* pci_writew */"
190 static inline void _writel(
u32 l,
volatile void __iomem *addr)
192 __asm__ __volatile__(
"stwa\t%r0, [%1] %2\t/* pci_writel */"
198 static inline void _writeq(
u64 q,
volatile void __iomem *addr)
200 __asm__ __volatile__(
"stxa\t%r0, [%1] %2\t/* pci_writeq */"
206 #define readb(__addr) _readb(__addr)
207 #define readw(__addr) _readw(__addr)
208 #define readl(__addr) _readl(__addr)
209 #define readq(__addr) _readq(__addr)
210 #define readb_relaxed(__addr) _readb(__addr)
211 #define readw_relaxed(__addr) _readw(__addr)
212 #define readl_relaxed(__addr) _readl(__addr)
213 #define readq_relaxed(__addr) _readq(__addr)
214 #define writeb(__b, __addr) _writeb(__b, __addr)
215 #define writew(__w, __addr) _writew(__w, __addr)
216 #define writel(__l, __addr) _writel(__l, __addr)
217 #define writeq(__q, __addr) _writeq(__q, __addr)
220 static inline u8 _raw_readb(
unsigned long addr)
224 __asm__ __volatile__(
"lduba\t[%1] %2, %0\t/* pci_raw_readb */"
231 static inline u16 _raw_readw(
unsigned long addr)
235 __asm__ __volatile__(
"lduha\t[%1] %2, %0\t/* pci_raw_readw */"
242 static inline u32 _raw_readl(
unsigned long addr)
246 __asm__ __volatile__(
"lduwa\t[%1] %2, %0\t/* pci_raw_readl */"
253 static inline u64 _raw_readq(
unsigned long addr)
257 __asm__ __volatile__(
"ldxa\t[%1] %2, %0\t/* pci_raw_readq */"
264 static inline void _raw_writeb(
u8 b,
unsigned long addr)
266 __asm__ __volatile__(
"stba\t%r0, [%1] %2\t/* pci_raw_writeb */"
271 static inline void _raw_writew(
u16 w,
unsigned long addr)
273 __asm__ __volatile__(
"stha\t%r0, [%1] %2\t/* pci_raw_writew */"
278 static inline void _raw_writel(
u32 l,
unsigned long addr)
280 __asm__ __volatile__(
"stwa\t%r0, [%1] %2\t/* pci_raw_writel */"
285 static inline void _raw_writeq(
u64 q,
unsigned long addr)
287 __asm__ __volatile__(
"stxa\t%r0, [%1] %2\t/* pci_raw_writeq */"
292 #define __raw_readb(__addr) (_raw_readb((unsigned long)(__addr)))
293 #define __raw_readw(__addr) (_raw_readw((unsigned long)(__addr)))
294 #define __raw_readl(__addr) (_raw_readl((unsigned long)(__addr)))
295 #define __raw_readq(__addr) (_raw_readq((unsigned long)(__addr)))
296 #define __raw_writeb(__b, __addr) (_raw_writeb((u8)(__b), (unsigned long)(__addr)))
297 #define __raw_writew(__w, __addr) (_raw_writew((u16)(__w), (unsigned long)(__addr)))
298 #define __raw_writel(__l, __addr) (_raw_writel((u32)(__l), (unsigned long)(__addr)))
299 #define __raw_writeq(__q, __addr) (_raw_writeq((u64)(__q), (unsigned long)(__addr)))
304 #define IO_SPACE_LIMIT 0xffffffffffffffffUL
309 static inline u8 _sbus_readb(
const volatile void __iomem *addr)
313 __asm__ __volatile__(
"lduba\t[%1] %2, %0\t/* sbus_readb */"
321 static inline u16 _sbus_readw(
const volatile void __iomem *addr)
325 __asm__ __volatile__(
"lduha\t[%1] %2, %0\t/* sbus_readw */"
333 static inline u32 _sbus_readl(
const volatile void __iomem *addr)
337 __asm__ __volatile__(
"lduwa\t[%1] %2, %0\t/* sbus_readl */"
345 static inline u64 _sbus_readq(
const volatile void __iomem *addr)
349 __asm__ __volatile__(
"ldxa\t[%1] %2, %0\t/* sbus_readq */"
357 static inline void _sbus_writeb(
u8 b,
volatile void __iomem *addr)
359 __asm__ __volatile__(
"stba\t%r0, [%1] %2\t/* sbus_writeb */"
365 static inline void _sbus_writew(
u16 w,
volatile void __iomem *addr)
367 __asm__ __volatile__(
"stha\t%r0, [%1] %2\t/* sbus_writew */"
373 static inline void _sbus_writel(
u32 l,
volatile void __iomem *addr)
375 __asm__ __volatile__(
"stwa\t%r0, [%1] %2\t/* sbus_writel */"
381 static inline void _sbus_writeq(
u64 l,
volatile void __iomem *addr)
383 __asm__ __volatile__(
"stxa\t%r0, [%1] %2\t/* sbus_writeq */"
389 #define sbus_readb(__addr) _sbus_readb(__addr)
390 #define sbus_readw(__addr) _sbus_readw(__addr)
391 #define sbus_readl(__addr) _sbus_readl(__addr)
392 #define sbus_readq(__addr) _sbus_readq(__addr)
393 #define sbus_writeb(__b, __addr) _sbus_writeb(__b, __addr)
394 #define sbus_writew(__w, __addr) _sbus_writew(__w, __addr)
395 #define sbus_writel(__l, __addr) _sbus_writel(__l, __addr)
396 #define sbus_writeq(__l, __addr) _sbus_writeq(__l, __addr)
406 #define sbus_memset_io(d,c,sz) _sbus_memset_io(d,c,sz)
419 #define memset_io(d,c,sz) _memset_io(d,c,sz)
422 _sbus_memcpy_fromio(
void *
dst,
const volatile void __iomem *
src,
434 #define sbus_memcpy_fromio(d, s, sz) _sbus_memcpy_fromio(d, s, sz)
448 #define memcpy_fromio(d,s,sz) _memcpy_fromio(d,s,sz)
451 _sbus_memcpy_toio(
volatile void __iomem *
dst,
const void *
src,
464 #define sbus_memcpy_toio(d, s, sz) _sbus_memcpy_toio(d, s, sz)
479 #define memcpy_toio(d,s,sz) _memcpy_toio(d,s,sz)
493 #define ioremap_nocache(X,Y) ioremap((X),(Y))
494 #define ioremap_wc(X,Y) ioremap((X),(Y))
500 #define ioread8(X) readb(X)
501 #define ioread16(X) readw(X)
502 #define ioread16be(X) __raw_readw(X)
503 #define ioread32(X) readl(X)
504 #define ioread32be(X) __raw_readl(X)
505 #define iowrite8(val,X) writeb(val,X)
506 #define iowrite16(val,X) writew(val,X)
507 #define iowrite16be(val,X) __raw_writew(val,X)
508 #define iowrite32(val,X) writel(val,X)
509 #define iowrite32be(val,X) __raw_writel(val,X)
519 static inline int sbus_can_dma_64bit(
void)
523 static inline int sbus_can_burst64(
void)
534 #define xlate_dev_mem_ptr(p) __va(p)
539 #define xlate_dev_kmem_ptr(p) p