Merge tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic
Pull asm-generic asm/io.h rewrite from Arnd Bergmann: "While there normally is no reason to have a pull request for asm-generic but have all changes get merged through whichever tree needs them, I do have a series for 3.19. There are two sets of patches that change significant portions of asm/io.h, and this branch contains both in order to resolve the conflicts: - Will Deacon has done a set of patches to ensure that all architectures define {read,write}{b,w,l,q}_relaxed() functions or get them by including asm-generic/io.h. These functions are commonly used on ARM specific drivers to avoid expensive L2 cache synchronization implied by the normal {read,write}{b,w,l,q}, but we need to define them on all architectures in order to share the drivers across architectures and to enable CONFIG_COMPILE_TEST configurations for them - Thierry Reding has done an unrelated set of patches that extends the asm-generic/io.h file to the degree necessary to make it useful on ARM64 and potentially other architectures" * tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (29 commits) ARM64: use GENERIC_PCI_IOMAP sparc: io: remove duplicate relaxed accessors on sparc32 ARM: sa11x0: Use void __iomem * in MMIO accessors arm64: Use include/asm-generic/io.h ARM: Use include/asm-generic/io.h asm-generic/io.h: Implement generic {read,write}s*() asm-generic/io.h: Reconcile I/O accessor overrides /dev/mem: Use more consistent data types Change xlate_dev_{kmem,mem}_ptr() prototypes ARM: ixp4xx: Properly override I/O accessors ARM: ixp4xx: Fix build with IXP4XX_INDIRECT_PCI ARM: ebsa110: Properly override I/O accessors ARC: Remove redundant PCI_IOBASE declaration documentation: memory-barriers: clarify relaxed io accessor semantics x86: io: implement dummy relaxed accessor macros for writes tile: io: implement dummy relaxed accessor macros for writes sparc: io: implement dummy relaxed accessor macros for writes powerpc: io: implement dummy relaxed accessor macros for writes parisc: io: implement dummy relaxed accessor macros for writes mn10300: io: implement dummy relaxed accessor macros for writes ...
This commit is contained in:
@@ -393,6 +393,10 @@ __writeq (unsigned long val, volatile void __iomem *addr)
|
||||
#define writew(v,a) __writew((v), (a))
|
||||
#define writel(v,a) __writel((v), (a))
|
||||
#define writeq(v,a) __writeq((v), (a))
|
||||
#define writeb_relaxed(v,a) __writeb((v), (a))
|
||||
#define writew_relaxed(v,a) __writew((v), (a))
|
||||
#define writel_relaxed(v,a) __writel((v), (a))
|
||||
#define writeq_relaxed(v,a) __writeq((v), (a))
|
||||
#define __raw_writeb writeb
|
||||
#define __raw_writew writew
|
||||
#define __raw_writel writel
|
||||
|
@@ -365,15 +365,15 @@ ia64_done_with_exception (struct pt_regs *regs)
|
||||
}
|
||||
|
||||
#define ARCH_HAS_TRANSLATE_MEM_PTR 1
|
||||
static __inline__ char *
|
||||
xlate_dev_mem_ptr (unsigned long p)
|
||||
static __inline__ void *
|
||||
xlate_dev_mem_ptr(phys_addr_t p)
|
||||
{
|
||||
struct page *page;
|
||||
char * ptr;
|
||||
void *ptr;
|
||||
|
||||
page = pfn_to_page(p >> PAGE_SHIFT);
|
||||
if (PageUncached(page))
|
||||
ptr = (char *)p + __IA64_UNCACHED_OFFSET;
|
||||
ptr = (void *)p + __IA64_UNCACHED_OFFSET;
|
||||
else
|
||||
ptr = __va(p);
|
||||
|
||||
@@ -383,15 +383,15 @@ xlate_dev_mem_ptr (unsigned long p)
|
||||
/*
|
||||
* Convert a virtual cached kernel memory pointer to an uncached pointer
|
||||
*/
|
||||
static __inline__ char *
|
||||
xlate_dev_kmem_ptr (char * p)
|
||||
static __inline__ void *
|
||||
xlate_dev_kmem_ptr(void *p)
|
||||
{
|
||||
struct page *page;
|
||||
char * ptr;
|
||||
void *ptr;
|
||||
|
||||
page = virt_to_page((unsigned long)p);
|
||||
if (PageUncached(page))
|
||||
ptr = (char *)__pa(p) + __IA64_UNCACHED_OFFSET;
|
||||
ptr = (void *)__pa(p) + __IA64_UNCACHED_OFFSET;
|
||||
else
|
||||
ptr = p;
|
||||
|
||||
|
Reference in New Issue
Block a user