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 */ 11typedef 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 40void leave_mm(int cpu); 41 42#endif /* _ASM_X86_MMU_H */ 43