1 2 #ifndef _I386_TYPES_H 3 #define _I386_TYPES_H 4 5 #include <minix/sys_config.h> 6 #include <machine/stackframe.h> 7 #include <machine/fpu.h> 8 #include <sys/cdefs.h> 9 10 struct segdesc_s { /* segment descriptor for protected mode */ 11 u16_t limit_low; 12 u16_t base_low; 13 u8_t base_middle; 14 u8_t access; /* |P|DL|1|X|E|R|A| */ 15 u8_t granularity; /* |G|X|0|A|LIMT| */ 16 u8_t base_high; 17 } __attribute__((packed)); 18 19 struct gatedesc_s { 20 u16_t offset_low; 21 u16_t selector; 22 u8_t pad; /* |000|XXXXX| ig & trpg, |XXXXXXXX| task g */ 23 u8_t p_dpl_type; /* |P|DL|0|TYPE| */ 24 u16_t offset_high; 25 } __attribute__((packed)); 26 27 struct desctableptr_s { 28 u16_t limit; 29 u32_t base; 30 } __attribute__((packed)); 31 32 typedef struct segframe { 33 reg_t p_cr3; /* page table root */ 34 u32_t *p_cr3_v; 35 char *fpu_state; 36 int p_kern_trap_style; 37 } segframe_t; 38 39 struct cpu_info { 40 u8_t vendor; 41 u8_t family; 42 u8_t model; 43 u8_t stepping; 44 u32_t freq; /* in MHz */ 45 u32_t flags[2]; 46 }; 47 48 typedef u32_t atomic_t; /* access to an aligned 32bit value is atomic on i386 */ 49 50 #endif /* #ifndef _I386_TYPES_H */ 51 52