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 */ 41typedef unsigned long mm_context_id_t[NR_CPUS]; 42 43typedef 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 */ 58bool __in_29bit_mode(void); 59 60void pmb_init(void); 61int pmb_bolt_mapping(unsigned long virt, phys_addr_t phys, 62 unsigned long size, pgprot_t prot); 63void __iomem *pmb_remap_caller(phys_addr_t phys, unsigned long size, 64 pgprot_t prot, void *caller); 65int pmb_unmap(void __iomem *addr); 66 67#else 68 69static inline int 70pmb_bolt_mapping(unsigned long virt, phys_addr_t phys, 71 unsigned long size, pgprot_t prot) 72{ 73 return -EINVAL; 74} 75 76static inline void __iomem * 77pmb_remap_caller(phys_addr_t phys, unsigned long size, 78 pgprot_t prot, void *caller) 79{ 80 return NULL; 81} 82 83static inline int pmb_unmap(void __iomem *addr) 84{ 85 return -EINVAL; 86} 87 88#define pmb_init(addr) do { } while (0) 89 90#ifdef CONFIG_29BIT 91#define __in_29bit_mode() (1) 92#else 93#define __in_29bit_mode() (0) 94#endif 95 96#endif /* CONFIG_PMB */ 97 98static inline void __iomem * 99pmb_remap(phys_addr_t phys, unsigned long size, pgprot_t prot) 100{ 101 return pmb_remap_caller(phys, size, prot, __builtin_return_address(0)); 102} 103 104#endif /* __ASSEMBLY__ */ 105 106#endif /* __MMU_H */ 107