1 #ifndef __MMU_H 2 #define __MMU_H 3 4 /* 5 * Privileged Space Mapping Buffer (PMB) definitions 6 */ 7 #define PMB_PASCR 0xff000070 8 #define PMB_IRMCR 0xff000078 9 10 #define PASCR_SE 0x80000000 11 12 #define PMB_ADDR 0xf6100000 13 #define PMB_DATA 0xf7100000 14 15 #define NR_PMB_ENTRIES 16 16 17 #define PMB_E_MASK 0x0000000f 18 #define PMB_E_SHIFT 8 19 20 #define PMB_PFN_MASK 0xff000000 21 22 #define PMB_SZ_16M 0x00000000 23 #define PMB_SZ_64M 0x00000010 24 #define PMB_SZ_128M 0x00000080 25 #define PMB_SZ_512M 0x00000090 26 #define PMB_SZ_MASK PMB_SZ_512M 27 #define PMB_C 0x00000008 28 #define PMB_WT 0x00000001 29 #define PMB_UB 0x00000200 30 #define PMB_CACHE_MASK (PMB_C | PMB_WT | PMB_UB) 31 #define PMB_V 0x00000100 32 33 #define PMB_NO_ENTRY (-1) 34 35 #ifndef __ASSEMBLY__ 36 #include <linux/errno.h> 37 #include <linux/threads.h> 38 #include <asm/page.h> 39 40 /* Default "unsigned long" context */ 41 typedef unsigned long mm_context_id_t[NR_CPUS]; 42 43 typedef struct { 44 #ifdef CONFIG_MMU 45 mm_context_id_t id; 46 void *vdso; 47 #else 48 unsigned long end_brk; 49 #endif 50 #ifdef CONFIG_BINFMT_ELF_FDPIC 51 unsigned long exec_fdpic_loadmap; 52 unsigned long interp_fdpic_loadmap; 53 #endif 54 } mm_context_t; 55 56 #ifdef CONFIG_PMB 57 /* arch/sh/mm/pmb.c */ 58 long pmb_remap(unsigned long virt, unsigned long phys, 59 unsigned long size, pgprot_t prot); 60 void pmb_unmap(unsigned long addr); 61 void pmb_init(void); 62 bool __in_29bit_mode(void); 63 #else 64 static inline long pmb_remap(unsigned long virt, unsigned long phys, 65 unsigned long size, pgprot_t prot) 66 { 67 return -EINVAL; 68 } 69 70 #define pmb_unmap(addr) do { } while (0) 71 #define pmb_init(addr) do { } while (0) 72 73 #ifdef CONFIG_29BIT 74 #define __in_29bit_mode() (1) 75 #else 76 #define __in_29bit_mode() (0) 77 #endif 78 79 #endif /* CONFIG_PMB */ 80 #endif /* __ASSEMBLY__ */ 81 82 #endif /* __MMU_H */ 83