]>
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; |
b2fa47e6 MS |
17 | /* The mmu context has extended page tables. */ |
18 | unsigned int has_pgste:1; | |
65eef335 DD |
19 | /* The mmu context uses storage keys. */ |
20 | unsigned int use_skey:1; | |
146e4b3c | 21 | } mm_context_t; |
1da177e4 | 22 | |
a1b200e2 HC |
23 | #define INIT_MM_CONTEXT(name) \ |
24 | .context.list_lock = __SPIN_LOCK_UNLOCKED(name.context.list_lock), \ | |
e5992f2e MS |
25 | .context.pgtable_list = LIST_HEAD_INIT(name.context.pgtable_list), \ |
26 | .context.gmap_list = LIST_HEAD_INIT(name.context.gmap_list), | |
a1b200e2 | 27 | |
a0616cde DH |
28 | static inline int tprot(unsigned long addr) |
29 | { | |
30 | int rc = -EFAULT; | |
31 | ||
32 | asm volatile( | |
33 | " tprot 0(%1),0\n" | |
34 | "0: ipm %0\n" | |
35 | " srl %0,28\n" | |
36 | "1:\n" | |
37 | EX_TABLE(0b,1b) | |
38 | : "+d" (rc) : "a" (addr) : "cc"); | |
39 | return rc; | |
40 | } | |
41 | ||
1da177e4 | 42 | #endif |