]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef __MMU_H |
2 | #define __MMU_H | |
3 | ||
1b948d6c | 4 | #include <linux/cpumask.h> |
1e3cab2f HC |
5 | #include <linux/errno.h> |
6 | ||
146e4b3c | 7 | typedef struct { |
1b948d6c | 8 | cpumask_t cpu_attach_mask; |
050eef36 MS |
9 | atomic_t attach_count; |
10 | unsigned int flush_mm; | |
50aa98ba | 11 | spinlock_t list_lock; |
146e4b3c | 12 | struct list_head pgtable_list; |
e5992f2e | 13 | struct list_head gmap_list; |
146e4b3c | 14 | unsigned long asce_bits; |
6252d702 | 15 | unsigned long asce_limit; |
b020632e | 16 | unsigned long vdso_base; |
0b46e0a3 MS |
17 | /* The mmu context allocates 4K page tables. */ |
18 | unsigned int alloc_pgste:1; | |
19 | /* The mmu context uses extended page tables. */ | |
b2fa47e6 | 20 | unsigned int has_pgste:1; |
65eef335 DD |
21 | /* The mmu context uses storage keys. */ |
22 | unsigned int use_skey:1; | |
146e4b3c | 23 | } mm_context_t; |
1da177e4 | 24 | |
a1b200e2 HC |
25 | #define INIT_MM_CONTEXT(name) \ |
26 | .context.list_lock = __SPIN_LOCK_UNLOCKED(name.context.list_lock), \ | |
e5992f2e MS |
27 | .context.pgtable_list = LIST_HEAD_INIT(name.context.pgtable_list), \ |
28 | .context.gmap_list = LIST_HEAD_INIT(name.context.gmap_list), | |
a1b200e2 | 29 | |
a0616cde DH |
30 | static inline int tprot(unsigned long addr) |
31 | { | |
32 | int rc = -EFAULT; | |
33 | ||
34 | asm volatile( | |
35 | " tprot 0(%1),0\n" | |
36 | "0: ipm %0\n" | |
37 | " srl %0,28\n" | |
38 | "1:\n" | |
39 | EX_TABLE(0b,1b) | |
40 | : "+d" (rc) : "a" (addr) : "cc"); | |
41 | return rc; | |
42 | } | |
43 | ||
1da177e4 | 44 | #endif |