enable this option otherwise. The 64bit kernel is significantly bigger
and slower than the 32bit one.
-config HPPA_IOREMAP
- bool "Enable IOREMAP functionality (EXPERIMENTAL)"
- depends on EXPERIMENTAL
- default n
- help
- Enable this option if you want to enable real IOREMAPPING on PA-RISC.
- Currently we just "simulate" I/O remapping, and enabling this option
- will just crash your machine.
-
- Say N here, unless you are a real PA-RISC Linux kernel hacker.
-
config SMP
bool "Symmetric multi-processing support"
---help---
return 0;
}
-#ifdef CONFIG_HPPA_IOREMAP
static int
remap_area_pages(unsigned long address, unsigned long phys_addr,
unsigned long size, unsigned long flags)
return error;
}
-#endif /* CONFIG_HPPA_IOREMAP */
#ifdef CONFIG_DEBUG_IOREMAP
static unsigned long last = 0;
*/
void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
{
-#if !defined(CONFIG_HPPA_IOREMAP)
+#ifdef CONFIG_EISA
+ #error FIXME.
unsigned long end = phys_addr + size - 1;
/* Support EISA addresses */
if ((phys_addr >= 0x00080000 && end < 0x000fffff)
|| (phys_addr >= 0x00500000 && end < 0x03bfffff)) {
phys_addr |= 0xfc000000;
}
-
-#ifdef CONFIG_DEBUG_IOREMAP
- return (void __iomem *)(phys_addr - (0x1UL << NYBBLE_SHIFT));
-#else
- return (void __iomem *)phys_addr;
#endif
-#else
void *addr;
struct vm_struct *area;
unsigned long offset, last_addr;
}
return (void __iomem *) (offset + (char *)addr);
-#endif
}
void iounmap(void __iomem *addr)
{
-#ifdef CONFIG_HPPA_IOREMAP
if (addr > high_memory)
return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
-#else
- return;
-#endif
}
extern void iounmap(void __iomem *addr);
-/*
- * CONFIG_HPPA_IOREMAP is the magic flag to enable or disable real ioremap()
- * functionality. It's currently disabled because it may not work on some
- * machines.
- */
-#ifdef CONFIG_HPPA_IOREMAP
+
static inline unsigned char __raw_readb(const volatile void __iomem *addr)
{
return (*(volatile unsigned char __force *) (addr));
{
*(volatile unsigned long long __force *) addr = b;
}
-#else /* !CONFIG_HPPA_IOREMAP */
-static inline unsigned char __raw_readb(const volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- return gsc_readb((unsigned long) addr);
-}
-static inline unsigned short __raw_readw(const volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- return gsc_readw((unsigned long) addr);
-}
-static inline unsigned int __raw_readl(const volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- return gsc_readl((unsigned long) addr);
-}
-static inline unsigned long long __raw_readq(const volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- return gsc_readq((unsigned long) addr);
-}
-
-static inline void __raw_writeb(unsigned char b, volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- gsc_writeb(b, (unsigned long) addr);
-}
-static inline void __raw_writew(unsigned short b, volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- gsc_writew(b, (unsigned long) addr);
-}
-static inline void __raw_writel(unsigned int b, volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- gsc_writel(b, (unsigned long) addr);
-}
-static inline void __raw_writeq(unsigned long long b, volatile void __iomem *addr)
-{
- __raw_check_addr(addr);
-
- gsc_writeq(b, (unsigned long) addr);
-}
-#endif /* !CONFIG_HPPA_IOREMAP */
/* readb can never be const, so use __fswab instead of le*_to_cpu */
#define readb(addr) __raw_readb(addr)