aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/include
diff options
context:
space:
mode:
authorMatteo Gmür <matteo.gmuer1@ost.ch>2025-03-13 10:00:42 +0000
committerMatteo Gmür <matteo.gmuer1@ost.ch>2025-03-13 10:00:42 +0000
commit34c36096e55ac678e29c58f7336b419647e805b6 (patch)
treeca144deee44d3b8ba25f94a3cb92f5e01f34aeb4 /arch/x86_64/include
parentb8a0024ee71a64ec0e87a1e2d0c0c7280dc954e6 (diff)
downloadteachos-34c36096e55ac678e29c58f7336b419647e805b6.tar.xz
teachos-34c36096e55ac678e29c58f7336b419647e805b6.zip
Fix segment descriptor bit order of private members
Diffstat (limited to 'arch/x86_64/include')
-rw-r--r--arch/x86_64/include/arch/context_switching/descriptor_table/segment_descriptor.hpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/x86_64/include/arch/context_switching/descriptor_table/segment_descriptor.hpp b/arch/x86_64/include/arch/context_switching/descriptor_table/segment_descriptor.hpp
index b5697e3..06e2e8a 100644
--- a/arch/x86_64/include/arch/context_switching/descriptor_table/segment_descriptor.hpp
+++ b/arch/x86_64/include/arch/context_switching/descriptor_table/segment_descriptor.hpp
@@ -51,11 +51,14 @@ namespace teachos::arch::context_switching::descriptor_table
auto get_segment_type() const -> segment_descriptor_type;
private:
- uint32_t _reserved = {};
- access_byte _access = {};
- gdt_flags _flag = {};
- uint64_t _base = {};
- std::bitset<20U> _limit = {};
+ // The order in private variables starts for the first variable being the rightmost bit.
+ std::bitset<16U> _limit_1 = {}; ///< First part of the limit field (0 - 15)
+ std::bitset<24U> _base_1 = {}; ///< First part of the base field (16 - 39)
+ access_byte _access = {}; ///< Access byte field (40 - 47)
+ std::bitset<4U> _limit_2 = {}; ///< Second part of the limit field (48 - 51)
+ gdt_flags _flag = {}; ///< Flags field (52 - 55)
+ std::bitset<40U> _base_2 = {}; ///< Second part of the base field (56 - 95)
+ uint32_t _reserved = {}; ///< Reserved field used to ensure this struct is 128 bits big (96 - 127)
};
} // namespace teachos::arch::context_switching::descriptor_table