Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef __MMU_H |
2 | #define __MMU_H | |
3 | ||
4 | #if !defined(CONFIG_MMU) | |
5 | ||
6 | struct mm_rblock_struct { | |
7 | int size; | |
8 | int refcount; | |
9 | void *kblock; | |
10 | }; | |
11 | ||
12 | struct mm_tblock_struct { | |
13 | struct mm_rblock_struct *rblock; | |
14 | struct mm_tblock_struct *next; | |
15 | }; | |
16 | ||
17 | typedef struct { | |
18 | struct mm_tblock_struct tblock; | |
19 | unsigned long end_brk; | |
20 | } mm_context_t; | |
21 | ||
22 | #else | |
23 | ||
24 | /* Default "unsigned long" context */ | |
25 | typedef unsigned long mm_context_t; | |
26 | ||
27 | #endif /* CONFIG_MMU */ | |
0c7b1df6 PM |
28 | |
29 | /* | |
30 | * Privileged Space Mapping Buffer (PMB) definitions | |
31 | */ | |
32 | #define PMB_PASCR 0xff000070 | |
33 | #define PMB_IRMCR 0xff000078 | |
34 | ||
35 | #define PMB_ADDR 0xf6100000 | |
36 | #define PMB_DATA 0xf7100000 | |
37 | #define PMB_ENTRY_MAX 16 | |
38 | #define PMB_E_MASK 0x0000000f | |
39 | #define PMB_E_SHIFT 8 | |
40 | ||
41 | #define PMB_SZ_16M 0x00000000 | |
42 | #define PMB_SZ_64M 0x00000010 | |
43 | #define PMB_SZ_128M 0x00000080 | |
44 | #define PMB_SZ_512M 0x00000090 | |
45 | #define PMB_SZ_MASK PMB_SZ_512M | |
46 | #define PMB_C 0x00000008 | |
47 | #define PMB_WT 0x00000001 | |
48 | #define PMB_UB 0x00000200 | |
49 | #define PMB_V 0x00000100 | |
50 | ||
51 | #define PMB_NO_ENTRY (-1) | |
52 | ||
d7cdc9e8 PM |
53 | struct pmb_entry; |
54 | ||
0c7b1df6 PM |
55 | struct pmb_entry { |
56 | unsigned long vpn; | |
57 | unsigned long ppn; | |
58 | unsigned long flags; | |
59 | ||
60 | /* | |
61 | * 0 .. NR_PMB_ENTRIES for specific entry selection, or | |
62 | * PMB_NO_ENTRY to search for a free one | |
63 | */ | |
64 | int entry; | |
d7cdc9e8 PM |
65 | |
66 | struct pmb_entry *next; | |
67 | /* Adjacent entry link for contiguous multi-entry mappings */ | |
68 | struct pmb_entry *link; | |
0c7b1df6 PM |
69 | }; |
70 | ||
71 | /* arch/sh/mm/pmb.c */ | |
72 | int __set_pmb_entry(unsigned long vpn, unsigned long ppn, | |
73 | unsigned long flags, int *entry); | |
d7cdc9e8 | 74 | int set_pmb_entry(struct pmb_entry *pmbe); |
0c7b1df6 PM |
75 | void clear_pmb_entry(struct pmb_entry *pmbe); |
76 | struct pmb_entry *pmb_alloc(unsigned long vpn, unsigned long ppn, | |
77 | unsigned long flags); | |
78 | void pmb_free(struct pmb_entry *pmbe); | |
d7cdc9e8 PM |
79 | long pmb_remap(unsigned long virt, unsigned long phys, |
80 | unsigned long size, unsigned long flags); | |
81 | void pmb_unmap(unsigned long addr); | |
0c7b1df6 PM |
82 | |
83 | #endif /* __MMU_H */ | |
1da177e4 | 84 |