xref: /openbmc/linux/arch/x86/include/asm/mmu.h (revision 8730046c)
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 #ifdef CONFIG_X86_INTEL_MPX
35 	/* address of the bounds directory */
36 	void __user *bd_addr;
37 #endif
38 } mm_context_t;
39 
40 #ifdef CONFIG_SMP
41 void leave_mm(int cpu);
42 #else
43 static inline void leave_mm(int cpu)
44 {
45 }
46 #endif
47 
48 #endif /* _ASM_X86_MMU_H */
49