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