aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/context_switching
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/context_switching')
-rw-r--r--arch/x86_64/src/context_switching/descriptor_table/global_descriptor_table.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86_64/src/context_switching/descriptor_table/global_descriptor_table.cpp b/arch/x86_64/src/context_switching/descriptor_table/global_descriptor_table.cpp
index 2b399f8..77bd3e9 100644
--- a/arch/x86_64/src/context_switching/descriptor_table/global_descriptor_table.cpp
+++ b/arch/x86_64/src/context_switching/descriptor_table/global_descriptor_table.cpp
@@ -34,10 +34,11 @@ namespace teachos::arch::context_switching::descriptor_table
access_level_bitset |= access_byte::WRITABLE;
}
+ uint64_t base = 0x0;
std::bitset<20U> limit{0xFFFFF};
access_byte access_byte{access_level_bitset};
gdt_flags gdt_flags{gdt_flags_bitset, limit};
- segment_descriptor code_segment{access_byte, gdt_flags, 0, limit};
+ segment_descriptor code_segment{access_byte, gdt_flags, base, limit};
return code_segment;
}
@@ -54,8 +55,8 @@ namespace teachos::arch::context_switching::descriptor_table
segment_descriptor user_data_segment =
create_segment_descriptor(segment_descriptor_type::DATA_SEGMENT, access_level::USER);
- stl::vector<segment_descriptor> global_descriptor_table{null_segment, kernel_code_segment, kernel_data_segment,
- user_code_segment, user_data_segment};
+ global_descriptor_table global_descriptor_table{null_segment, kernel_code_segment, kernel_data_segment,
+ user_code_segment, user_data_segment};
return global_descriptor_table;
}