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