Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6
[pandora-kernel.git] / arch / sh / include / asm / mmu.h
index c7426ad..56e4418 100644 (file)
@@ -11,7 +11,9 @@
 
 #define PMB_ADDR               0xf6100000
 #define PMB_DATA               0xf7100000
-#define PMB_ENTRY_MAX          16
+
+#define NR_PMB_ENTRIES         16
+
 #define PMB_E_MASK             0x0000000f
 #define PMB_E_SHIFT            8
 
 #define PMB_C                  0x00000008
 #define PMB_WT                 0x00000001
 #define PMB_UB                 0x00000200
+#define PMB_CACHE_MASK         (PMB_C | PMB_WT | PMB_UB)
 #define PMB_V                  0x00000100
 
 #define PMB_NO_ENTRY           (-1)
 
 #ifndef __ASSEMBLY__
+#include <linux/errno.h>
+#include <linux/threads.h>
+#include <asm/page.h>
 
 /* Default "unsigned long" context */
 typedef unsigned long mm_context_id_t[NR_CPUS];
@@ -47,29 +53,54 @@ typedef struct {
 #endif
 } mm_context_t;
 
-struct pmb_entry;
+#ifdef CONFIG_PMB
+/* arch/sh/mm/pmb.c */
+bool __in_29bit_mode(void);
 
-struct pmb_entry {
-       unsigned long vpn;
-       unsigned long ppn;
-       unsigned long flags;
+void pmb_init(void);
+int pmb_bolt_mapping(unsigned long virt, phys_addr_t phys,
+                    unsigned long size, pgprot_t prot);
+void __iomem *pmb_remap_caller(phys_addr_t phys, unsigned long size,
+                              pgprot_t prot, void *caller);
+int pmb_unmap(void __iomem *addr);
 
-       /*
-        * 0 .. NR_PMB_ENTRIES for specific entry selection, or
-        * PMB_NO_ENTRY to search for a free one
-        */
-       int entry;
+#else
 
-       struct pmb_entry *next;
-       /* Adjacent entry link for contiguous multi-entry mappings */
-       struct pmb_entry *link;
-};
+static inline int
+pmb_bolt_mapping(unsigned long virt, phys_addr_t phys,
+                unsigned long size, pgprot_t prot)
+{
+       return -EINVAL;
+}
+
+static inline void __iomem *
+pmb_remap_caller(phys_addr_t phys, unsigned long size,
+                pgprot_t prot, void *caller)
+{
+       return NULL;
+}
+
+static inline int pmb_unmap(void __iomem *addr)
+{
+       return -EINVAL;
+}
+
+#define pmb_init(addr)         do { } while (0)
+
+#ifdef CONFIG_29BIT
+#define __in_29bit_mode()      (1)
+#else
+#define __in_29bit_mode()      (0)
+#endif
+
+#endif /* CONFIG_PMB */
+
+static inline void __iomem *
+pmb_remap(phys_addr_t phys, unsigned long size, pgprot_t prot)
+{
+       return pmb_remap_caller(phys, size, prot, __builtin_return_address(0));
+}
 
-/* arch/sh/mm/pmb.c */
-long pmb_remap(unsigned long virt, unsigned long phys,
-              unsigned long size, unsigned long flags);
-void pmb_unmap(unsigned long addr);
-int pmb_init(void);
 #endif /* __ASSEMBLY__ */
 
 #endif /* __MMU_H */