linux/arch/arc/include/asm/io.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 */
   8
   9#ifndef _ASM_ARC_IO_H
  10#define _ASM_ARC_IO_H
  11
  12#include <linux/types.h>
  13#include <asm/byteorder.h>
  14#include <asm/page.h>
  15
  16#define PCI_IOBASE ((void __iomem *)0)
  17
  18extern void __iomem *ioremap(unsigned long physaddr, unsigned long size);
  19extern void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
  20                                  unsigned long flags);
  21extern void iounmap(const void __iomem *addr);
  22
  23#define ioremap_nocache(phy, sz)        ioremap(phy, sz)
  24#define ioremap_wc(phy, sz)             ioremap(phy, sz)
  25
  26/* Change struct page to physical address */
  27#define page_to_phys(page)              (page_to_pfn(page) << PAGE_SHIFT)
  28
  29#define __raw_readb __raw_readb
  30static inline u8 __raw_readb(const volatile void __iomem *addr)
  31{
  32        u8 b;
  33
  34        __asm__ __volatile__(
  35        "       ldb%U1 %0, %1   \n"
  36        : "=r" (b)
  37        : "m" (*(volatile u8 __force *)addr)
  38        : "memory");
  39
  40        return b;
  41}
  42
  43#define __raw_readw __raw_readw
  44static inline u16 __raw_readw(const volatile void __iomem *addr)
  45{
  46        u16 s;
  47
  48        __asm__ __volatile__(
  49        "       ldw%U1 %0, %1   \n"
  50        : "=r" (s)
  51        : "m" (*(volatile u16 __force *)addr)
  52        : "memory");
  53
  54        return s;
  55}
  56
  57#define __raw_readl __raw_readl
  58static inline u32 __raw_readl(const volatile void __iomem *addr)
  59{
  60        u32 w;
  61
  62        __asm__ __volatile__(
  63        "       ld%U1 %0, %1    \n"
  64        : "=r" (w)
  65        : "m" (*(volatile u32 __force *)addr)
  66        : "memory");
  67
  68        return w;
  69}
  70
  71#define __raw_writeb __raw_writeb
  72static inline void __raw_writeb(u8 b, volatile void __iomem *addr)
  73{
  74        __asm__ __volatile__(
  75        "       stb%U1 %0, %1   \n"
  76        :
  77        : "r" (b), "m" (*(volatile u8 __force *)addr)
  78        : "memory");
  79}
  80
  81#define __raw_writew __raw_writew
  82static inline void __raw_writew(u16 s, volatile void __iomem *addr)
  83{
  84        __asm__ __volatile__(
  85        "       stw%U1 %0, %1   \n"
  86        :
  87        : "r" (s), "m" (*(volatile u16 __force *)addr)
  88        : "memory");
  89
  90}
  91
  92#define __raw_writel __raw_writel
  93static inline void __raw_writel(u32 w, volatile void __iomem *addr)
  94{
  95        __asm__ __volatile__(
  96        "       st%U1 %0, %1    \n"
  97        :
  98        : "r" (w), "m" (*(volatile u32 __force *)addr)
  99        : "memory");
 100
 101}
 102
 103#include <asm-generic/io.h>
 104
 105#endif /* _ASM_ARC_IO_H */
 106