/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */1/*2* ldt.h3*4* Definitions of structures used with the modify_ldt system call.5*/6#ifndef _ASM_X86_LDT_H7#define _ASM_X86_LDT_H89/* Maximum number of LDT entries supported. */10#define LDT_ENTRIES 819211/* The size of each LDT entry. */12#define LDT_ENTRY_SIZE 81314#ifndef __ASSEMBLER__15/*16* Note on 64bit base and limit is ignored and you cannot set DS/ES/CS17* not to the default values if you still want to do syscalls. This18* call is more for 32bit mode therefore.19*/20struct user_desc {21unsigned int entry_number;22unsigned int base_addr;23unsigned int limit;24unsigned int seg_32bit:1;25unsigned int contents:2;26unsigned int read_exec_only:1;27unsigned int limit_in_pages:1;28unsigned int seg_not_present:1;29unsigned int useable:1;30#ifdef __x86_64__31/*32* Because this bit is not present in 32-bit user code, user33* programs can pass uninitialized values here. Therefore, in34* any context in which a user_desc comes from a 32-bit program,35* the kernel must act as though lm == 0, regardless of the36* actual value.37*/38unsigned int lm:1;39#endif40};4142#define MODIFY_LDT_CONTENTS_DATA 043#define MODIFY_LDT_CONTENTS_STACK 144#define MODIFY_LDT_CONTENTS_CODE 24546#endif /* !__ASSEMBLER__ */47#endif /* _ASM_X86_LDT_H */484950