--- Net2/arch/i386/include/segments.h 2018/04/24 18:04:01 1.1.1.1 +++ Net2/arch/i386/include/segments.h 2018/04/24 18:12:30 1.1.1.2 @@ -42,6 +42,10 @@ * William F. Jolitz (william@ernie.berkeley.edu) 6/20/1989 */ +#if __GNUC__ >= 2 +#pragma pack(1) +#endif + /* * Selectors */ @@ -92,7 +96,6 @@ union descriptor { struct segment_descriptor sd; struct gate_descriptor gd; }; -#define d_type gd.gd_type /* system segments and gate types */ #define SDT_SYSNULL 0 /* system null */ @@ -172,11 +175,11 @@ extern ssdtosd() ; /* to decode a ssd */ extern sdtossd() ; /* to encode a sd */ /* - * region descriptors, used to load gdt/idt tables before segments yet exist + * region descriptors, used to load gdt/idt tables before segments yet exist. */ struct region_descriptor { - unsigned rd_limit:16 ; /* segment extent */ - char *rd_base; /* base address */ + unsigned rd_limit:16; /* segment extent */ + unsigned rd_base:32; /* base address */ }; /* @@ -188,3 +191,14 @@ struct region_descriptor { #define SEGEX_TI 0x04 /* local descriptor table */ /* other bits are affected descriptor index */ #define SEGEX_IDX(s) ((s)>>3)&0x1fff) + +/* + * Size of IDT table + */ + +#define NIDT 256 +#define NRSVIDT 32 /* reserved entries for cpu exceptions */ + +#if __GNUC__ >= 2 +#pragma pack(4) +#endif