diff options
| author | Matteo Gmür <matteo.gmuer1@ost.ch> | 2025-03-15 11:29:26 +0000 |
|---|---|---|
| committer | Matteo Gmür <matteo.gmuer1@ost.ch> | 2025-03-15 11:29:26 +0000 |
| commit | 60ab85044289f4a9a0a84c37bfb2b3938f6ae416 (patch) | |
| tree | f1b41963d0a28bbe26e4e8f61c8bcc11b4daa000 /arch/x86_64/src/kernel | |
| parent | f2b9ac8f0f22354241e9b78e47aa7cb94e5ef511 (diff) | |
| download | teachos-60ab85044289f4a9a0a84c37bfb2b3938f6ae416.tar.xz teachos-60ab85044289f4a9a0a84c37bfb2b3938f6ae416.zip | |
Fix size of segment descriptor using bit fields and struct packing
Diffstat (limited to 'arch/x86_64/src/kernel')
| -rw-r--r-- | arch/x86_64/src/kernel/cpu/lgdt.cpp | 6 | ||||
| -rw-r--r-- | arch/x86_64/src/kernel/main.cpp | 3 |
2 files changed, 2 insertions, 7 deletions
diff --git a/arch/x86_64/src/kernel/cpu/lgdt.cpp b/arch/x86_64/src/kernel/cpu/lgdt.cpp index 70a48dd..cad3ffa 100644 --- a/arch/x86_64/src/kernel/cpu/lgdt.cpp +++ b/arch/x86_64/src/kernel/cpu/lgdt.cpp @@ -8,10 +8,6 @@ namespace teachos::arch::kernel::cpu load_global_descriptor_table(context_switching::descriptor_table::global_descriptor_table_pointer const & gdt_pointer) -> void { - // TODO: build lgdt argument from global_descriptor_table_pointer (don't know how yet) - // asm volatile("lgdt (%0)" : : "r"(gdt_pointer)); - if (gdt_pointer.table_length) - { - } + asm volatile("lgdt %[input]" : /* no output from call */ : [input] "r"(gdt_pointer)); } } // namespace teachos::arch::kernel::cpu diff --git a/arch/x86_64/src/kernel/main.cpp b/arch/x86_64/src/kernel/main.cpp index 4db9599..055b516 100644 --- a/arch/x86_64/src/kernel/main.cpp +++ b/arch/x86_64/src/kernel/main.cpp @@ -60,8 +60,7 @@ namespace teachos::arch::kernel heap_test(); - context_switching::descriptor_table::global_descriptor_table global_descriptor_table{ - context_switching::descriptor_table::initialize_global_descriptor_table()}; + auto global_descriptor_table = context_switching::descriptor_table::initialize_global_descriptor_table(); decltype(auto) x = global_descriptor_table.at(1); if (global_descriptor_table.size() == 0) |
