sh: Make 29/32-bit mode check helper generally available.
[deliverable/linux.git] / arch / sh / include / asm / mmu.h
CommitLineData
1da177e4
LT
1#ifndef __MMU_H
2#define __MMU_H
3
0c7b1df6
PM
4/*
5 * Privileged Space Mapping Buffer (PMB) definitions
6 */
7#define PMB_PASCR 0xff000070
8#define PMB_IRMCR 0xff000078
9
1f69b6af
MF
10#define PASCR_SE 0x80000000
11
0c7b1df6
PM
12#define PMB_ADDR 0xf6100000
13#define PMB_DATA 0xf7100000
14#define PMB_ENTRY_MAX 16
15#define PMB_E_MASK 0x0000000f
16#define PMB_E_SHIFT 8
17
20b5014b
MF
18#define PMB_PFN_MASK 0xff000000
19
0c7b1df6
PM
20#define PMB_SZ_16M 0x00000000
21#define PMB_SZ_64M 0x00000010
22#define PMB_SZ_128M 0x00000080
23#define PMB_SZ_512M 0x00000090
24#define PMB_SZ_MASK PMB_SZ_512M
25#define PMB_C 0x00000008
26#define PMB_WT 0x00000001
27#define PMB_UB 0x00000200
28#define PMB_V 0x00000100
29
30#define PMB_NO_ENTRY (-1)
31
3b4df71b 32#ifndef __ASSEMBLY__
46c4e5da 33#include <linux/errno.h>
2efa53b2 34#include <linux/threads.h>
3b4df71b
FV
35
36/* Default "unsigned long" context */
37typedef unsigned long mm_context_id_t[NR_CPUS];
38
39typedef struct {
40#ifdef CONFIG_MMU
41 mm_context_id_t id;
42 void *vdso;
43#else
44 unsigned long end_brk;
45#endif
46#ifdef CONFIG_BINFMT_ELF_FDPIC
47 unsigned long exec_fdpic_loadmap;
48 unsigned long interp_fdpic_loadmap;
49#endif
50} mm_context_t;
51
d7cdc9e8
PM
52struct pmb_entry;
53
0c7b1df6
PM
54struct pmb_entry {
55 unsigned long vpn;
56 unsigned long ppn;
57 unsigned long flags;
58
59 /*
60 * 0 .. NR_PMB_ENTRIES for specific entry selection, or
61 * PMB_NO_ENTRY to search for a free one
62 */
63 int entry;
d7cdc9e8
PM
64
65 struct pmb_entry *next;
66 /* Adjacent entry link for contiguous multi-entry mappings */
67 struct pmb_entry *link;
0c7b1df6
PM
68};
69
a0ab3668 70#ifdef CONFIG_PMB
0c7b1df6 71/* arch/sh/mm/pmb.c */
d7cdc9e8
PM
72long pmb_remap(unsigned long virt, unsigned long phys,
73 unsigned long size, unsigned long flags);
74void pmb_unmap(unsigned long addr);
8386aebb 75int pmb_init(void);
2efa53b2 76bool __in_29bit_mode(void);
a0ab3668
PM
77#else
78static inline long pmb_remap(unsigned long virt, unsigned long phys,
79 unsigned long size, unsigned long flags)
80{
46c4e5da 81 return -EINVAL;
a0ab3668
PM
82}
83
84static inline void pmb_unmap(unsigned long addr)
85{
86}
87
88static inline int pmb_init(void)
89{
90 return -ENODEV;
91}
a0ab3668 92
2efa53b2
PM
93#ifdef CONFIG_29BIT
94#define __in_29bit_mode() (1)
95#else
96#define __in_29bit_mode() (0)
97#endif
98
99#endif /* CONFIG_PMB */
3b4df71b 100#endif /* __ASSEMBLY__ */
0c7b1df6
PM
101
102#endif /* __MMU_H */
This page took 0.420832 seconds and 5 git commands to generate.