Date: Sun, 22 Sep 2002 23:48:00 -0700 (PDT) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 17972 for review Message-ID: <200209230648.g8N6m0KY056730@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=17972 Change 17972 by peter@peter_overcee on 2002/09/22 23:47:03 split up the memory and system descriptors. They have different sizes in 64 bit mode. Affected files ... .. //depot/projects/hammer/sys/x86_64/include/segments.h#6 edit Differences ... ==== //depot/projects/hammer/sys/x86_64/include/segments.h#6 (text+ko) ==== @@ -42,7 +42,7 @@ #define _MACHINE_SEGMENTS_H_ /* - * 386 Segmentation Data Structures and definitions + * x86-64 Segmentation Data Structures and definitions * William F. Jolitz (william@ernie.berkeley.edu) 6/20/1989 */ @@ -60,7 +60,25 @@ #define GSEL(s,r) (((s)<<3) | r) /* a global selector */ /* - * Memory and System segment descriptors + * Memory segment descriptors (%cs, %ds etc for compatability apps. 32 bit wide) + */ +struct segment_descriptor { + unsigned sd_lolimit:16 ; /* segment extent (lsb) */ + unsigned sd_lobase:24 __attribute__ ((packed)); + /* segment base address (lsb) */ + unsigned sd_type:5 ; /* segment type */ + unsigned sd_dpl:2 ; /* segment descriptor priority level */ + unsigned sd_p:1 ; /* segment descriptor present */ + unsigned sd_hilimit:4 ; /* segment extent (msb) */ + unsigned sd_xx:1 ; /* unused */ + unsigned sd_l:2 ; /* long mode (cs only) */ + unsigned sd_def32:1 ; /* default 32 vs 16 bit size */ + unsigned sd_gran:1 ; /* limit granularity (byte/page units)*/ + unsigned sd_hibase:8 ; /* segment base address (msb) */ +}; + +/* + * System segment descriptors (64 bit wide) */ struct segment_descriptor { unsigned sd_lolimit:16 ; /* segment extent (lsb) */ @@ -75,10 +93,10 @@ unsigned sd_def32:1 ; /* default 32 vs 16 bit size */ unsigned sd_gran:1 ; /* limit granularity (byte/page units)*/ unsigned sd_hibase:8 ; /* segment base address (msb) */ -} ; +}; /* - * Gate descriptors (e.g. indirect descriptors) + * Gate descriptors (e.g. indirect descriptors, trap, interrupt etc. 64 bit) */ struct gate_descriptor { unsigned gd_looffset:16 ; /* gate offset (lsb) */ @@ -91,14 +109,6 @@ unsigned gd_hioffset:16 ; /* gate offset (msb) */ unsigned gd_hihioffset:32 ; /* gate offset (bits 32-63) */ unsigned gd_rsvd:32 ; /* reserved */ -} ; - -/* - * Generic descriptor - */ -union descriptor { - struct segment_descriptor sd; - struct gate_descriptor gd; }; /* system segments and gate types */ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209230648.g8N6m0KY056730>