Go to the documentation of this file.
24 #include <linux/types.h>
26 #include <asm/byteorder.h>
27 #include <asm/barrier.h>
28 #include <asm/pgtable.h>
35 asm volatile(
"strb %w0, [%1]" : :
"r" (
val),
"r" (addr));
40 asm volatile(
"strh %w0, [%1]" : :
"r" (
val),
"r" (addr));
45 asm volatile(
"str %w0, [%1]" : :
"r" (
val),
"r" (addr));
50 asm volatile(
"str %0, [%1]" : :
"r" (
val),
"r" (addr));
56 asm volatile(
"ldrb %w0, [%1]" :
"=r" (
val) :
"r" (addr));
63 asm volatile(
"ldrh %w0, [%1]" :
"=r" (
val) :
"r" (addr));
70 asm volatile(
"ldr %w0, [%1]" :
"=r" (
val) :
"r" (addr));
77 asm volatile(
"ldr %0, [%1]" :
"=r" (
val) :
"r" (addr));
82 #define __iormb() rmb()
83 #define __iowmb() wmb()
85 #define mmiowb() do { } while (0)
92 #define readb_relaxed(c) ({ u8 __v = __raw_readb(c); __v; })
93 #define readw_relaxed(c) ({ u16 __v = le16_to_cpu((__force __le16)__raw_readw(c)); __v; })
94 #define readl_relaxed(c) ({ u32 __v = le32_to_cpu((__force __le32)__raw_readl(c)); __v; })
96 #define writeb_relaxed(v,c) ((void)__raw_writeb((v),(c)))
97 #define writew_relaxed(v,c) ((void)__raw_writew((__force u16)cpu_to_le16(v),(c)))
98 #define writel_relaxed(v,c) ((void)__raw_writel((__force u32)cpu_to_le32(v),(c)))
105 #define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; })
106 #define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; })
107 #define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
109 #define writeb(v,c) ({ __iowmb(); writeb_relaxed((v),(c)); })
110 #define writew(v,c) ({ __iowmb(); writew_relaxed((v),(c)); })
111 #define writel(v,c) ({ __iowmb(); writel_relaxed((v),(c)); })
116 #define IO_SPACE_LIMIT 0xffff
117 #define PCI_IOBASE ((void __iomem *)(MODULES_VADDR - SZ_2M))
119 static inline u8 inb(
unsigned long addr)
124 static inline u16 inw(
unsigned long addr)
129 static inline u32 inl(
unsigned long addr)
134 static inline void outb(
u8 b,
unsigned long addr)
139 static inline void outw(
u16 b,
unsigned long addr)
144 static inline void outl(
u32 b,
unsigned long addr)
149 #define inb_p(addr) inb(addr)
150 #define inw_p(addr) inw(addr)
151 #define inl_p(addr) inl(addr)
153 #define outb_p(x, addr) outb((x), (addr))
154 #define outw_p(x, addr) outw((x), (addr))
155 #define outl_p(x, addr) outl((x), (addr))
164 static inline void insw(
unsigned long addr,
void *buffer,
int count)
171 static inline void insl(
unsigned long addr,
void *buffer,
int count)
178 static inline void outsb(
unsigned long addr,
const void *buffer,
int count)
185 static inline void outsw(
unsigned long addr,
const void *buffer,
int count)
192 static inline void outsl(
unsigned long addr,
const void *buffer,
int count)
199 #define insb_p(port,to,len) insb(port,to,len)
200 #define insw_p(port,to,len) insw(port,to,len)
201 #define insl_p(port,to,len) insl(port,to,len)
203 #define outsb_p(port,from,len) outsb(port,from,len)
204 #define outsw_p(port,from,len) outsw(port,from,len)
205 #define outsl_p(port,from,len) outsl(port,from,len)
214 #define memset_io(c,v,l) __memset_io((c),(v),(l))
215 #define memcpy_fromio(a,c,l) __memcpy_fromio((a),(c),(l))
216 #define memcpy_toio(c,a,l) __memcpy_toio((c),(a),(l))
224 #define PROT_DEFAULT (PTE_TYPE_PAGE | PTE_AF | PTE_DIRTY)
225 #define PROT_DEVICE_nGnRE (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_DEVICE_nGnRE))
226 #define PROT_NORMAL_NC (PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL_NC))
228 #define ioremap(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
229 #define ioremap_nocache(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
230 #define ioremap_wc(addr, size) __ioremap((addr), (size), __pgprot(PROT_NORMAL_NC))
231 #define iounmap __iounmap
233 #define ARCH_HAS_IOREMAP_WC
240 #define ARCH_HAS_VALID_PHYS_ADDR_RANGE
250 #define xlate_dev_mem_ptr(p) __va(p)
255 #define xlate_dev_kmem_ptr(p) p