xref: /linux/arch/x86/include/asm/mmu.h (revision 93c26d7dc02380fe11e57ff0d152368743762169)
1 #ifndef _ASM_X86_MMU_H
2 #define _ASM_X86_MMU_H
3 
4 #include <linux/spinlock.h>
5 #include <linux/mutex.h>
6 
7 /*
8  * The x86 doesn't have a mmu context, but
9  * we put the segment information here.
10  */
11 typedef struct {
12 #ifdef CONFIG_MODIFY_LDT_SYSCALL
13 	struct ldt_struct *ldt;
14 #endif
15 
16 #ifdef CONFIG_X86_64
17 	/* True if mm supports a task running in 32 bit compatibility mode. */
18 	unsigned short ia32_compat;
19 #endif
20 
21 	struct mutex lock;
22 	void __user *vdso;			/* vdso base address */
23 	const struct vdso_image *vdso_image;	/* vdso image in use */
24 
25 	atomic_t perf_rdpmc_allowed;	/* nonzero if rdpmc is allowed */
26 #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
27 	/*
28 	 * One bit per protection key says whether userspace can
29 	 * use it or not.  protected by mmap_sem.
30 	 */
31 	u16 pkey_allocation_map;
32 	s16 execute_only_pkey;
33 #endif
34 } mm_context_t;
35 
36 #ifdef CONFIG_SMP
37 void leave_mm(int cpu);
38 #else
39 static inline void leave_mm(int cpu)
40 {
41 }
42 #endif
43 
44 #endif /* _ASM_X86_MMU_H */
45