aboutsummaryrefslogtreecommitdiff
path: root/docs/pre/arch/x86_64
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2025-12-15 17:13:12 +0100
committerFelix Morgner <felix.morgner@ost.ch>2025-12-15 17:13:12 +0100
commit7b9482ae637126ac9337876e60f519b493437711 (patch)
tree6fc71a253c8b0325d303bd34c95b564ba536ed14 /docs/pre/arch/x86_64
parent116f9332a206767c45095950f09f7c7447b561cf (diff)
parenta9eeec745e29d89afd48ee43d09432eb6fc35be7 (diff)
downloadteachos-7b9482ae637126ac9337876e60f519b493437711.tar.xz
teachos-7b9482ae637126ac9337876e60f519b493437711.zip
os: rework kernel architecture
Rework the code structure and architecture of the kernel by separating platform-dependent and platform-independent code more cleanly. As of this patchset, full feature parity has not been achieved. Nonetheless, a sufficient subset of functionality has been ported to the new architecture to demonstrate the feasibility of the new structure.
Diffstat (limited to 'docs/pre/arch/x86_64')
-rw-r--r--docs/pre/arch/x86_64/boot.rst9
-rw-r--r--docs/pre/arch/x86_64/boot/pointers.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching.rst9
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table.rst9
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/gate_descriptor.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/idt_flags.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table copy.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table_pointer copy.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/ist_offset.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/segment_selector.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/main.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table.rst9
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/access_byte.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/gdt_flags.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table_pointer.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_base.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_extension.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_type.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/segment_descriptor_table/task_state_segment.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/syscall.rst9
-rw-r--r--docs/pre/arch/x86_64/context_switching/syscall/main.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/syscall/syscall_enable.rst5
-rw-r--r--docs/pre/arch/x86_64/context_switching/syscall/syscall_handler.rst5
-rw-r--r--docs/pre/arch/x86_64/exception_handling.rst9
-rw-r--r--docs/pre/arch/x86_64/exception_handling/assert.rst5
-rw-r--r--docs/pre/arch/x86_64/exception_handling/panic.rst5
-rw-r--r--docs/pre/arch/x86_64/interrupt_handling.rst9
-rw-r--r--docs/pre/arch/x86_64/interrupt_handling/generic_interrupt_handler.rst5
-rw-r--r--docs/pre/arch/x86_64/io.rst9
-rw-r--r--docs/pre/arch/x86_64/io/port_io.rst6
-rw-r--r--docs/pre/arch/x86_64/kernel.rst9
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu.rst9
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/call.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/control_register.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/gdtr.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/idtr.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/if.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/msr.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/segment_register.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/tlb.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/cpu/tr.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/halt.rst5
-rw-r--r--docs/pre/arch/x86_64/kernel/main.rst5
-rw-r--r--docs/pre/arch/x86_64/memory.rst9
-rw-r--r--docs/pre/arch/x86_64/memory/allocator.rst9
-rw-r--r--docs/pre/arch/x86_64/memory/allocator/area_frame_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/allocator/concept.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/allocator/physical_frame.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/allocator/tiny_frame_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/cpu.rst9
-rw-r--r--docs/pre/arch/x86_64/memory/heap.rst9
-rw-r--r--docs/pre/arch/x86_64/memory/heap/bump_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/heap/global_heap_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/heap/heap_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/heap/linked_list_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/heap/memory_block.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/heap/user_heap_allocator.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/main.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/multiboot.rst9
-rw-r--r--docs/pre/arch/x86_64/memory/multiboot/elf_symbols_section.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/multiboot/info.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/multiboot/memory_map.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/multiboot/reader.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging.rst9
-rw-r--r--docs/pre/arch/x86_64/memory/paging/active_page_table.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging/inactive_page_table.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging/kernel_mapper.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging/page_entry.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging/page_table.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging/temporary_page.rst5
-rw-r--r--docs/pre/arch/x86_64/memory/paging/virtual_page.rst5
-rw-r--r--docs/pre/arch/x86_64/stl.rst9
-rw-r--r--docs/pre/arch/x86_64/stl/container.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/contiguous_pointer_iterator.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/forward_value_iterator.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/mutex.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/shared_pointer.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/stack.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/unique_pointer.rst5
-rw-r--r--docs/pre/arch/x86_64/stl/vector.rst5
-rw-r--r--docs/pre/arch/x86_64/user.rst9
-rw-r--r--docs/pre/arch/x86_64/user/main.rst5
-rw-r--r--docs/pre/arch/x86_64/video.rst9
-rw-r--r--docs/pre/arch/x86_64/video/vga.rst9
-rw-r--r--docs/pre/arch/x86_64/video/vga/io.rst4
-rw-r--r--docs/pre/arch/x86_64/video/vga/text.rst5
87 files changed, 515 insertions, 0 deletions
diff --git a/docs/pre/arch/x86_64/boot.rst b/docs/pre/arch/x86_64/boot.rst
new file mode 100644
index 0000000..8be2a57
--- /dev/null
+++ b/docs/pre/arch/x86_64/boot.rst
@@ -0,0 +1,9 @@
+Boot Information Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ boot/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/boot/pointers.rst b/docs/pre/arch/x86_64/boot/pointers.rst
new file mode 100644
index 0000000..3ec626a
--- /dev/null
+++ b/docs/pre/arch/x86_64/boot/pointers.rst
@@ -0,0 +1,5 @@
+Boot Information Structure
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/boot/pointers.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching.rst b/docs/pre/arch/x86_64/context_switching.rst
new file mode 100644
index 0000000..c3b3b03
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching.rst
@@ -0,0 +1,9 @@
+Context Switching Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ context_switching/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table.rst
new file mode 100644
index 0000000..dd6e478
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table.rst
@@ -0,0 +1,9 @@
+Interrupt Descriptor Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ interrupt_descriptor_table/*
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/gate_descriptor.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/gate_descriptor.rst
new file mode 100644
index 0000000..29e7586
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/gate_descriptor.rst
@@ -0,0 +1,5 @@
+Interrupt Gate Descriptor
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/interrupt_descriptor_table/gate_descriptor.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/idt_flags.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/idt_flags.rst
new file mode 100644
index 0000000..60e8c37
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/idt_flags.rst
@@ -0,0 +1,5 @@
+Interrupt Descriptor Flags
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/interrupt_descriptor_table/idt_flags.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table copy.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table copy.rst
new file mode 100644
index 0000000..a2b8997
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table copy.rst
@@ -0,0 +1,5 @@
+Interrupt Descriptor Table
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/interrupt_descriptor_table/interrupt_descriptor_table.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table_pointer copy.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table_pointer copy.rst
new file mode 100644
index 0000000..3a8c259
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/interrupt_descriptor_table_pointer copy.rst
@@ -0,0 +1,5 @@
+Interrupt Descriptor Table Pointer
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/interrupt_descriptor_table/interrupt_descriptor_table_pointer.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/ist_offset.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/ist_offset.rst
new file mode 100644
index 0000000..ddba6ee
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/ist_offset.rst
@@ -0,0 +1,5 @@
+Interrupt Stack Table Offset
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/interrupt_descriptor_table/ist_offset.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/segment_selector.rst b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/segment_selector.rst
new file mode 100644
index 0000000..2da142e
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/interrupt_descriptor_table/segment_selector.rst
@@ -0,0 +1,5 @@
+Segment Selector
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/interrupt_descriptor_table/segment_selector.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/main.rst b/docs/pre/arch/x86_64/context_switching/main.rst
new file mode 100644
index 0000000..e9e8a35
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/main.rst
@@ -0,0 +1,5 @@
+Context Switching Main
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/main.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table.rst
new file mode 100644
index 0000000..449622d
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table.rst
@@ -0,0 +1,9 @@
+Segment Descriptor Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ segment_descriptor_table/*
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/access_byte.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/access_byte.rst
new file mode 100644
index 0000000..f2e7d67
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/access_byte.rst
@@ -0,0 +1,5 @@
+Access Byte
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/access_byte.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/gdt_flags.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/gdt_flags.rst
new file mode 100644
index 0000000..faa2ffc
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/gdt_flags.rst
@@ -0,0 +1,5 @@
+Global Descriptor Table Flags
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/gdt_flags.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table.rst
new file mode 100644
index 0000000..35403db
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table.rst
@@ -0,0 +1,5 @@
+Global Descriptor Table
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/global_descriptor_table.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table_pointer.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table_pointer.rst
new file mode 100644
index 0000000..41ceffd
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/global_descriptor_table_pointer.rst
@@ -0,0 +1,5 @@
+Global Descriptor Table Pointer
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/global_descriptor_table_pointer.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_base.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_base.rst
new file mode 100644
index 0000000..952ab2a
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_base.rst
@@ -0,0 +1,5 @@
+Segment Descriptor Base (32-bit)
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/segment_descriptor_base.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_extension.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_extension.rst
new file mode 100644
index 0000000..874d1cb
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_extension.rst
@@ -0,0 +1,5 @@
+Segment Descriptor Extension (64-bit)
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/segment_descriptor_extension.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_type.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_type.rst
new file mode 100644
index 0000000..e45b0a5
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/segment_descriptor_type.rst
@@ -0,0 +1,5 @@
+Segment Descriptor Type
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/segmen