10437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* 20437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * ldt.h 30437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * 40437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * Definitions of structures used with the modify_ldt system call. 50437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */ 60437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef _ASM_X86_LDT_H 70437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define _ASM_X86_LDT_H 80437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 90437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* Maximum number of LDT entries supported. */ 100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define LDT_ENTRIES 8192 110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* The size of each LDT entry. */ 120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define LDT_ENTRY_SIZE 8 130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __ASSEMBLY__ 150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* 160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * Note on 64bit base and limit is ignored and you cannot set DS/ES/CS 170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * not to the default values if you still want to do syscalls. This 180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * call is more for 32bit mode therefore. 190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */ 200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct user_desc { 210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int entry_number; 220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int base_addr; 230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int limit; 240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int seg_32bit:1; 250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int contents:2; 260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int read_exec_only:1; 270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int limit_in_pages:1; 280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int seg_not_present:1; 290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int useable:1; 300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __x86_64__ 310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned int lm:1; 320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif 330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define MODIFY_LDT_CONTENTS_DATA 0 360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define MODIFY_LDT_CONTENTS_STACK 1 370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define MODIFY_LDT_CONTENTS_CODE 2 380437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__ASSEMBLY__ */ 400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* _ASM_X86_LDT_H */ 41