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