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;
}
-#if USE_HPPA_IOREMAP
+#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 /* USE_HPPA_IOREMAP */
+#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 !(USE_HPPA_IOREMAP)
-
+#if !defined(CONFIG_HPPA_IOREMAP)
unsigned long end = phys_addr + size - 1;
/* Support EISA addresses */
if ((phys_addr >= 0x00080000 && end < 0x000fffff)
void iounmap(void __iomem *addr)
{
-#if !(USE_HPPA_IOREMAP)
- return;
-#else
+#ifdef CONFIG_HPPA_IOREMAP
if (addr > high_memory)
return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
+#else
+ return;
#endif
}
*/
#ifdef CONFIG_DEBUG_IOREMAP
-#ifdef CONFIG_64BIT
-#define NYBBLE_SHIFT 60
-#else
-#define NYBBLE_SHIFT 28
-#endif
+#define NYBBLE_SHIFT (BITS_PER_LONG - 4)
extern void gsc_bad_addr(unsigned long addr);
extern void __raw_bad_addr(const volatile void __iomem *addr);
#define gsc_check_addr(addr) \
extern void iounmap(void __iomem *addr);
/*
- * USE_HPPA_IOREMAP is the magic flag to enable or disable real ioremap()
+ * 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.
*/
-#define USE_HPPA_IOREMAP 0
-
-#if USE_HPPA_IOREMAP
+#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 /* !USE_HPPA_IOREMAP */
+#else /* !CONFIG_HPPA_IOREMAP */
static inline unsigned char __raw_readb(const volatile void __iomem *addr)
{
__raw_check_addr(addr);
gsc_writeq(b, (unsigned long) addr);
}
-#endif /* !USE_HPPA_IOREMAP */
+#endif /* !CONFIG_HPPA_IOREMAP */
/* readb can never be const, so use __fswab instead of le*_to_cpu */
#define readb(addr) __raw_readb(addr)