Intel 253668-032US User Manual

Page of 806
3-16   Vol. 3
PROTECTED-MODE MEMORY MANAGEMENT
G (granularity) flag 
Determines the scaling of the segment limit field. When the 
granularity flag is clear, the segment limit is interpreted in byte 
units; when flag is set, the segment limit is interpreted in 
4-KByte units. (This flag does not affect the granularity of the 
base address; it is always byte granular.) When the granularity 
flag is set, the twelve least significant bits of an offset are not 
tested when checking the offset against the segment limit. For 
example, when the granularity flag is set, a limit of 0 results in 
valid offsets from 0 to 4095.
L (64-bit code segment) flag 
In IA-32e mode, bit 21 of the second doubleword of the segment 
descriptor indicates whether a code segment contains native 64-bit 
code. A value of 1 indicates instructions in this code segment are 
executed in 64-bit mode. A value of 0 indicates the instructions in this 
code segment are executed in compatibility mode. If L-bit is set, then 
D-bit must be cleared. When not in IA-32e mode or for non-code 
segments, bit 21 is reserved and should always be set to 0.
Available and reserved bits 
Bit 20 of the second doubleword of the segment descriptor is available 
for use by system software.
3.4.5.1  
Code- and Data-Segment Descriptor Types
When the S (descriptor type) flag in a segment descriptor is set, the descriptor is for 
either a code or a data segment. The highest order bit of the type field (bit 11 of the 
second double word of the segment descriptor) then determines whether the 
descriptor is for a data segment (clear) or a code segment (set). 
For data segments, the three low-order bits of the type field (bits 8, 9, and 10) are 
interpreted as accessed (A), write-enable (W), and expansion-direction (E). See 
Table 3-1 for a description of the encoding of the bits in the type field for code and 
data segments. Data segments can be read-only or read/write segments, depending 
on the setting of the write-enable bit.