|
StuBS
|
Namespaces | |
| namespace | GDT |
| Abstracts the GDT that, primarily, contains descriptors to memory segments. | |
Classes | |
| union | GDT::SegmentDescriptor |
| Describes the structure of segment descriptors. More... | |
| struct | GDT::Pointer |
| Structure that describes a GDT Pointer (aka GDT Descriptor). More... | |
| struct | GDT::SegmentDescriptor.__unnamed0__ |
| struct | GDT::SegmentDescriptor.__unnamed1__ |
| Fields specific for Code Segment (for debugging purposes). More... | |
| struct | GDT::SegmentDescriptor.__unnamed2__ |
| Fields specific for Data Segment (for debugging purposes). More... | |
| struct GDT::SegmentDescriptor.__unnamed0__ |
| Class Members | ||
|---|---|---|
| uint64_t | limit_low: 16 | Least-significant bits of segment size (influenced by granularity!). |
| uint64_t | base_low: 24 | Least-significant bits of base address. |
| uint64_t | type: 4 | Meaning of those 4 bits depends on descriptor_type below. |
| DescriptorType | descriptor_type: 1 | Descriptor type (influences the meaning of the 3 bits above). |
| uint64_t | privilege_level: 2 | Ring for this segment. |
| bool | present: 1 | Entry is valid iff set to true. |
| uint64_t | limit_high: 4 | Most-significant bits of segment size. |
| bool | available: 1 | Bit which can be used for other purposes (in software). |
| uint64_t | custom: 2 | Meaning of those 2 bits relate to descriptor_type and type. |
| Granularity | granularity: 1 | Unit used as granularity for the segment limit. |
| uint64_t | base_high: 8 | most-significant bits of base address |
| struct GDT::SegmentDescriptor.__unnamed1__ |
Fields specific for Code Segment (for debugging purposes).
| Class Members | ||
|---|---|---|
| uint64_t | __pad0__: 40 | Ignored (set via limit_low and base_low ). |
| bool | code_accessed: 1 | If set, the code segment was used since the last reset of this value. |
| bool | readable: 1 | If set, the code is readable (otherwise only executable). |
| bool | conforming: 1 | If set, the execution of code from this segment is only allowed when running at a privilege of numerically less than or equal to privilege_level (i.e. the executor has the same or higher privileges). However, the executor's privileges remain unchanged. For nonconforming code segments (i.e., conforming is set to 0), execution is allowed only if the privileges are equal. Execution will cause a GPF in case of privilege violation. |
| bool | code: 1 | Has to be set to true. |
| uint64_t | __pad1__: 9 | Ignored (set via privilege_level ... available). |
| Size | operation_size: 2 | Default address width (custom field bit). |
| uint64_t | __pad2__: 0 | Remainder ignored (set via base_high). |
| struct GDT::SegmentDescriptor.__unnamed2__ |
Fields specific for Data Segment (for debugging purposes).