Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e16fc77 authored by Brian Gerst's avatar Brian Gerst Committed by H. Peter Anvin
Browse files

x86-64: Reorganize io_64.h



Make it more similar to io_32.h.  No real code changes.

Signed-off-by: default avatarBrian Gerst <brgerst@gmail.com>
LKML-Reference: <1265380629-3212-4-git-send-email-brgerst@gmail.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent bd2984e9
Loading
Loading
Loading
Loading
+49 −41
Original line number Diff line number Diff line
@@ -35,6 +35,54 @@
  *  - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
  */

#ifdef __KERNEL__

#include <asm-generic/iomap.h>

#include <linux/vmalloc.h>

/*
 * Convert a virtual cached pointer to an uncached pointer
 */
#define xlate_dev_kmem_ptr(p)	p

void memset_io(volatile void __iomem *a, int b, size_t c);

void __memcpy_fromio(void *, unsigned long, unsigned);
static inline void memcpy_fromio(void *to, const volatile void __iomem *from,
				 unsigned len)
{
	__memcpy_fromio(to, (unsigned long)from, len);
}

void __memcpy_toio(unsigned long, const void *, unsigned);
static inline void memcpy_toio(volatile void __iomem *to, const void *from,
			       unsigned len)
{
	__memcpy_toio((unsigned long)to, from, len);
}

/*
 * ISA space is 'always mapped' on a typical x86 system, no need to
 * explicitly ioremap() it. The fact that the ISA IO space is mapped
 * to PAGE_OFFSET is pure coincidence - it does not mean ISA values
 * are physical addresses. The following constant pointer can be
 * used as the IO-area pointer (it can be iounmapped as well, so the
 * analogy with PCI is quite large):
 */
#define __ISA_IO_base ((char __iomem *)(PAGE_OFFSET))

/*
 *	Cache management
 *
 *	This needed for two cases
 *	1. Out of order aware processors
 *	2. Accidentally out of order processors (PPro errata #51)
 */
#define flush_write_buffers() do { } while (0)

#endif /* __KERNEL__ */

extern void native_io_delay(void);

extern int io_delay_type;
@@ -53,6 +101,7 @@ static inline void slow_down_io(void)
	native_io_delay();
#endif
}

#endif

/*
@@ -136,46 +185,5 @@ __OUTS(b)
__OUTS(w)
__OUTS(l)

#if defined(__KERNEL__) && defined(__x86_64__)

#include <linux/vmalloc.h>

#include <asm-generic/iomap.h>

void __memcpy_fromio(void *, unsigned long, unsigned);
void __memcpy_toio(unsigned long, const void *, unsigned);

static inline void memcpy_fromio(void *to, const volatile void __iomem *from,
				 unsigned len)
{
	__memcpy_fromio(to, (unsigned long)from, len);
}

static inline void memcpy_toio(volatile void __iomem *to, const void *from,
			       unsigned len)
{
	__memcpy_toio((unsigned long)to, from, len);
}

void memset_io(volatile void __iomem *a, int b, size_t c);

/*
 * ISA space is 'always mapped' on a typical x86 system, no need to
 * explicitly ioremap() it. The fact that the ISA IO space is mapped
 * to PAGE_OFFSET is pure coincidence - it does not mean ISA values
 * are physical addresses. The following constant pointer can be
 * used as the IO-area pointer (it can be iounmapped as well, so the
 * analogy with PCI is quite large):
 */
#define __ISA_IO_base ((char __iomem *)(PAGE_OFFSET))

#define flush_write_buffers()

/*
 * Convert a virtual cached pointer to an uncached pointer
 */
#define xlate_dev_kmem_ptr(p)	p

#endif /* __KERNEL__ */

#endif /* _ASM_X86_IO_64_H */