aboutsummaryrefslogtreecommitdiff
path: root/docs/pre/arch
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
parent116f9332a206767c45095950f09f7c7447b561cf (diff)
parenta9eeec745e29d89afd48ee43d09432eb6fc35be7 (diff)
downloadkernel-7b9482ae637126ac9337876e60f519b493437711.tar.xz
kernel-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')
-rw-r--r--docs/pre/arch/x86_64.rst9
-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
88 files changed, 524 insertions, 0 deletions
diff --git a/docs/pre/arch/x86_64.rst b/docs/pre/arch/x86_64.rst
new file mode 100644
index 0000000..dc432f1
--- /dev/null
+++ b/docs/pre/arch/x86_64.rst
@@ -0,0 +1,9 @@
+x86_64
+======
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ x86_64/* \ No newline at end of file
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/segment_descriptor_type.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/task_state_segment.rst b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/task_state_segment.rst
new file mode 100644
index 0000000..731d7bb
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/segment_descriptor_table/task_state_segment.rst
@@ -0,0 +1,5 @@
+Task State Segment
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/segment_descriptor_table/task_state_segment.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/syscall.rst b/docs/pre/arch/x86_64/context_switching/syscall.rst
new file mode 100644
index 0000000..28acf28
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/syscall.rst
@@ -0,0 +1,9 @@
+System Call Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ syscall/*
diff --git a/docs/pre/arch/x86_64/context_switching/syscall/main.rst b/docs/pre/arch/x86_64/context_switching/syscall/main.rst
new file mode 100644
index 0000000..6be577b
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/syscall/main.rst
@@ -0,0 +1,5 @@
+System Call Main
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/syscall/main.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/syscall/syscall_enable.rst b/docs/pre/arch/x86_64/context_switching/syscall/syscall_enable.rst
new file mode 100644
index 0000000..e9162f1
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/syscall/syscall_enable.rst
@@ -0,0 +1,5 @@
+System Call Configuration
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/syscall/syscall_enable.hpp
+
diff --git a/docs/pre/arch/x86_64/context_switching/syscall/syscall_handler.rst b/docs/pre/arch/x86_64/context_switching/syscall/syscall_handler.rst
new file mode 100644
index 0000000..0e86780
--- /dev/null
+++ b/docs/pre/arch/x86_64/context_switching/syscall/syscall_handler.rst
@@ -0,0 +1,5 @@
+System Call Handler
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/context_switching/syscall/syscall_handler.hpp
+
diff --git a/docs/pre/arch/x86_64/exception_handling.rst b/docs/pre/arch/x86_64/exception_handling.rst
new file mode 100644
index 0000000..3bf2770
--- /dev/null
+++ b/docs/pre/arch/x86_64/exception_handling.rst
@@ -0,0 +1,9 @@
+Exception Handling Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ exception_handling/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/exception_handling/assert.rst b/docs/pre/arch/x86_64/exception_handling/assert.rst
new file mode 100644
index 0000000..053cf66
--- /dev/null
+++ b/docs/pre/arch/x86_64/exception_handling/assert.rst
@@ -0,0 +1,5 @@
+Exception Handling Assertion
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/exception_handling/assert.hpp
+
diff --git a/docs/pre/arch/x86_64/exception_handling/panic.rst b/docs/pre/arch/x86_64/exception_handling/panic.rst
new file mode 100644
index 0000000..50b6284
--- /dev/null
+++ b/docs/pre/arch/x86_64/exception_handling/panic.rst
@@ -0,0 +1,5 @@
+Exception Handling Panic
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/exception_handling/panic.hpp
+
diff --git a/docs/pre/arch/x86_64/interrupt_handling.rst b/docs/pre/arch/x86_64/interrupt_handling.rst
new file mode 100644
index 0000000..d4ff94a
--- /dev/null
+++ b/docs/pre/arch/x86_64/interrupt_handling.rst
@@ -0,0 +1,9 @@
+Interrupt Handling Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ interrupt_handling/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/interrupt_handling/generic_interrupt_handler.rst b/docs/pre/arch/x86_64/interrupt_handling/generic_interrupt_handler.rst
new file mode 100644
index 0000000..6099170
--- /dev/null
+++ b/docs/pre/arch/x86_64/interrupt_handling/generic_interrupt_handler.rst
@@ -0,0 +1,5 @@
+Generic Interrupt Handler
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/interrupt_handling/generic_interrupt_handler.hpp
+
diff --git a/docs/pre/arch/x86_64/io.rst b/docs/pre/arch/x86_64/io.rst
new file mode 100644
index 0000000..7082bd5
--- /dev/null
+++ b/docs/pre/arch/x86_64/io.rst
@@ -0,0 +1,9 @@
+General Input/Output Subsystem
+==============================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ io/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/io/port_io.rst b/docs/pre/arch/x86_64/io/port_io.rst
new file mode 100644
index 0000000..18a9f6a
--- /dev/null
+++ b/docs/pre/arch/x86_64/io/port_io.rst
@@ -0,0 +1,6 @@
+Port-based Input/Output
+=======================
+
+.. doxygenstruct:: teachos::arch::io::port
+ :members:
+
diff --git a/docs/pre/arch/x86_64/kernel.rst b/docs/pre/arch/x86_64/kernel.rst
new file mode 100644
index 0000000..650e3a6
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel.rst
@@ -0,0 +1,9 @@
+Kernel Main Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ kernel/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/kernel/cpu.rst b/docs/pre/arch/x86_64/kernel/cpu.rst
new file mode 100644
index 0000000..da3dfc0
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu.rst
@@ -0,0 +1,9 @@
+Kernel CPU Registers
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ cpu/*
diff --git a/docs/pre/arch/x86_64/kernel/cpu/call.rst b/docs/pre/arch/x86_64/kernel/cpu/call.rst
new file mode 100644
index 0000000..33d15ec
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/call.rst
@@ -0,0 +1,5 @@
+Far Call
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/call.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/control_register.rst b/docs/pre/arch/x86_64/kernel/cpu/control_register.rst
new file mode 100644
index 0000000..a45c6d9
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/control_register.rst
@@ -0,0 +1,5 @@
+Control Register
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/control_register.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/gdtr.rst b/docs/pre/arch/x86_64/kernel/cpu/gdtr.rst
new file mode 100644
index 0000000..41c0f6b
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/gdtr.rst
@@ -0,0 +1,5 @@
+Global Descriptor Table Register
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/gdtr.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/idtr.rst b/docs/pre/arch/x86_64/kernel/cpu/idtr.rst
new file mode 100644
index 0000000..b4c4bb0
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/idtr.rst
@@ -0,0 +1,5 @@
+Interrupt Descriptor Table Register
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/idtr.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/if.rst b/docs/pre/arch/x86_64/kernel/cpu/if.rst
new file mode 100644
index 0000000..2dd07b4
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/if.rst
@@ -0,0 +1,5 @@
+Interrupt Flag
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/if.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/msr.rst b/docs/pre/arch/x86_64/kernel/cpu/msr.rst
new file mode 100644
index 0000000..75c4f47
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/msr.rst
@@ -0,0 +1,5 @@
+Model Specific Register
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/msr.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/segment_register.rst b/docs/pre/arch/x86_64/kernel/cpu/segment_register.rst
new file mode 100644
index 0000000..8159369
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/segment_register.rst
@@ -0,0 +1,5 @@
+CPU Segment Register
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/segment_register.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/tlb.rst b/docs/pre/arch/x86_64/kernel/cpu/tlb.rst
new file mode 100644
index 0000000..1ceec1d
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/tlb.rst
@@ -0,0 +1,5 @@
+Translation Lookaside Buffer
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/tlb.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/cpu/tr.rst b/docs/pre/arch/x86_64/kernel/cpu/tr.rst
new file mode 100644
index 0000000..a2b234b
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/cpu/tr.rst
@@ -0,0 +1,5 @@
+Task Register
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/cpu/tr.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/halt.rst b/docs/pre/arch/x86_64/kernel/halt.rst
new file mode 100644
index 0000000..c425e81
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/halt.rst
@@ -0,0 +1,5 @@
+Kernel Halt
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/halt.hpp
+
diff --git a/docs/pre/arch/x86_64/kernel/main.rst b/docs/pre/arch/x86_64/kernel/main.rst
new file mode 100644
index 0000000..194bd85
--- /dev/null
+++ b/docs/pre/arch/x86_64/kernel/main.rst
@@ -0,0 +1,5 @@
+Kernel Main
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/kernel/main.hpp
+
diff --git a/docs/pre/arch/x86_64/memory.rst b/docs/pre/arch/x86_64/memory.rst
new file mode 100644
index 0000000..58d12e9
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory.rst
@@ -0,0 +1,9 @@
+Kernel Memory Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ memory/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/memory/allocator.rst b/docs/pre/arch/x86_64/memory/allocator.rst
new file mode 100644
index 0000000..6ce0a74
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/allocator.rst
@@ -0,0 +1,9 @@
+Physical Frame Allocator Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ allocator/*
diff --git a/docs/pre/arch/x86_64/memory/allocator/area_frame_allocator.rst b/docs/pre/arch/x86_64/memory/allocator/area_frame_allocator.rst
new file mode 100644
index 0000000..422f33c
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/allocator/area_frame_allocator.rst
@@ -0,0 +1,5 @@
+Area Physical Frame Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/allocator/area_frame_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/allocator/concept.rst b/docs/pre/arch/x86_64/memory/allocator/concept.rst
new file mode 100644
index 0000000..734a2ce
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/allocator/concept.rst
@@ -0,0 +1,5 @@
+Physical Frame Allocator Concept
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/allocator/concept.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/allocator/physical_frame.rst b/docs/pre/arch/x86_64/memory/allocator/physical_frame.rst
new file mode 100644
index 0000000..c5d0fd2
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/allocator/physical_frame.rst
@@ -0,0 +1,5 @@
+Physical Frame
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/allocator/physical_frame.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/allocator/tiny_frame_allocator.rst b/docs/pre/arch/x86_64/memory/allocator/tiny_frame_allocator.rst
new file mode 100644
index 0000000..27401b2
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/allocator/tiny_frame_allocator.rst
@@ -0,0 +1,5 @@
+Tiny Physical Frame Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/allocator/tiny_frame_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/cpu.rst b/docs/pre/arch/x86_64/memory/cpu.rst
new file mode 100644
index 0000000..4cb5af0
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/cpu.rst
@@ -0,0 +1,9 @@
+CPU Registers Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ cpu/*
diff --git a/docs/pre/arch/x86_64/memory/heap.rst b/docs/pre/arch/x86_64/memory/heap.rst
new file mode 100644
index 0000000..409d93a
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap.rst
@@ -0,0 +1,9 @@
+Heap Memory Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ heap/*
diff --git a/docs/pre/arch/x86_64/memory/heap/bump_allocator.rst b/docs/pre/arch/x86_64/memory/heap/bump_allocator.rst
new file mode 100644
index 0000000..b20916e
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap/bump_allocator.rst
@@ -0,0 +1,5 @@
+Kernel Heap Bump Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/heap/bump_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/heap/global_heap_allocator.rst b/docs/pre/arch/x86_64/memory/heap/global_heap_allocator.rst
new file mode 100644
index 0000000..60ec0b5
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap/global_heap_allocator.rst
@@ -0,0 +1,5 @@
+Global Heap Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/heap/global_heap_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/heap/heap_allocator.rst b/docs/pre/arch/x86_64/memory/heap/heap_allocator.rst
new file mode 100644
index 0000000..b410e41
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap/heap_allocator.rst
@@ -0,0 +1,5 @@
+Kernel Heap Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/heap/heap_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/heap/linked_list_allocator.rst b/docs/pre/arch/x86_64/memory/heap/linked_list_allocator.rst
new file mode 100644
index 0000000..d156852
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap/linked_list_allocator.rst
@@ -0,0 +1,5 @@
+Kernel Heap Linked List Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/heap/linked_list_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/heap/memory_block.rst b/docs/pre/arch/x86_64/memory/heap/memory_block.rst
new file mode 100644
index 0000000..8ed6566
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap/memory_block.rst
@@ -0,0 +1,5 @@
+Heap Linked List Free Memory Block
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/heap/memory_block.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/heap/user_heap_allocator.rst b/docs/pre/arch/x86_64/memory/heap/user_heap_allocator.rst
new file mode 100644
index 0000000..d0febb6
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/heap/user_heap_allocator.rst
@@ -0,0 +1,5 @@
+User Heap Linked List Allocator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/heap/user_heap_allocator.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/main.rst b/docs/pre/arch/x86_64/memory/main.rst
new file mode 100644
index 0000000..d9a9f39
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/main.rst
@@ -0,0 +1,5 @@
+Memory Main
+===========
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/main.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/multiboot.rst b/docs/pre/arch/x86_64/memory/multiboot.rst
new file mode 100644
index 0000000..22ec3f2
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/multiboot.rst
@@ -0,0 +1,9 @@
+Kernel Multiboot Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ multiboot/*
diff --git a/docs/pre/arch/x86_64/memory/multiboot/elf_symbols_section.rst b/docs/pre/arch/x86_64/memory/multiboot/elf_symbols_section.rst
new file mode 100644
index 0000000..bbd6dfb
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/multiboot/elf_symbols_section.rst
@@ -0,0 +1,5 @@
+Multiboot ELF Header Symbols Section Structure
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/multiboot/elf_symbols_section.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/multiboot/info.rst b/docs/pre/arch/x86_64/memory/multiboot/info.rst
new file mode 100644
index 0000000..847870d
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/multiboot/info.rst
@@ -0,0 +1,5 @@
+Multiboot Header Information Structure
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/multiboot/info.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/multiboot/memory_map.rst b/docs/pre/arch/x86_64/memory/multiboot/memory_map.rst
new file mode 100644
index 0000000..9c77331
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/multiboot/memory_map.rst
@@ -0,0 +1,5 @@
+Multiboot Memory Map Header Structure
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/multiboot/memory_map.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/multiboot/reader.rst b/docs/pre/arch/x86_64/memory/multiboot/reader.rst
new file mode 100644
index 0000000..fac98e2
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/multiboot/reader.rst
@@ -0,0 +1,5 @@
+Multiboot Reader
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/multiboot/reader.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging.rst b/docs/pre/arch/x86_64/memory/paging.rst
new file mode 100644
index 0000000..10cd976
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging.rst
@@ -0,0 +1,9 @@
+Virtual Page Table Paging Subsystem
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ paging/*
diff --git a/docs/pre/arch/x86_64/memory/paging/active_page_table.rst b/docs/pre/arch/x86_64/memory/paging/active_page_table.rst
new file mode 100644
index 0000000..5710131
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/active_page_table.rst
@@ -0,0 +1,5 @@
+Active Page Table
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/active_page_table.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging/inactive_page_table.rst b/docs/pre/arch/x86_64/memory/paging/inactive_page_table.rst
new file mode 100644
index 0000000..5732e64
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/inactive_page_table.rst
@@ -0,0 +1,5 @@
+Inactive Page Table
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/inactive_page_table.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging/kernel_mapper.rst b/docs/pre/arch/x86_64/memory/paging/kernel_mapper.rst
new file mode 100644
index 0000000..9948e4e
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/kernel_mapper.rst
@@ -0,0 +1,5 @@
+Kernel Mapper
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/kernel_mapper.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging/page_entry.rst b/docs/pre/arch/x86_64/memory/paging/page_entry.rst
new file mode 100644
index 0000000..8900b0e
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/page_entry.rst
@@ -0,0 +1,5 @@
+Virtual Page Table Entry
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/page_entry.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging/page_table.rst b/docs/pre/arch/x86_64/memory/paging/page_table.rst
new file mode 100644
index 0000000..c5ab8c7
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/page_table.rst
@@ -0,0 +1,5 @@
+Virtual Page Table
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/page_table.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging/temporary_page.rst b/docs/pre/arch/x86_64/memory/paging/temporary_page.rst
new file mode 100644
index 0000000..0c63899
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/temporary_page.rst
@@ -0,0 +1,5 @@
+Temporary Virtual Page Table
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/temporary_page.hpp
+
diff --git a/docs/pre/arch/x86_64/memory/paging/virtual_page.rst b/docs/pre/arch/x86_64/memory/paging/virtual_page.rst
new file mode 100644
index 0000000..dd42f47
--- /dev/null
+++ b/docs/pre/arch/x86_64/memory/paging/virtual_page.rst
@@ -0,0 +1,5 @@
+Virtual Page
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/memory/paging/virtual_page.hpp
+
diff --git a/docs/pre/arch/x86_64/stl.rst b/docs/pre/arch/x86_64/stl.rst
new file mode 100644
index 0000000..bb21f9a
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl.rst
@@ -0,0 +1,9 @@
+Standard Library Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ stl/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/stl/container.rst b/docs/pre/arch/x86_64/stl/container.rst
new file mode 100644
index 0000000..19c735b
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/container.rst
@@ -0,0 +1,5 @@
+Container Structure
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/container.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/contiguous_pointer_iterator.rst b/docs/pre/arch/x86_64/stl/contiguous_pointer_iterator.rst
new file mode 100644
index 0000000..47f88c4
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/contiguous_pointer_iterator.rst
@@ -0,0 +1,5 @@
+Contiguous Pointer Iterator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/contiguous_pointer_iterator.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/forward_value_iterator.rst b/docs/pre/arch/x86_64/stl/forward_value_iterator.rst
new file mode 100644
index 0000000..72270de
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/forward_value_iterator.rst
@@ -0,0 +1,5 @@
+Forward Value Iterator
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/forward_value_iterator.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/mutex.rst b/docs/pre/arch/x86_64/stl/mutex.rst
new file mode 100644
index 0000000..2098113
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/mutex.rst
@@ -0,0 +1,5 @@
+Mutex
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/mutex.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/shared_pointer.rst b/docs/pre/arch/x86_64/stl/shared_pointer.rst
new file mode 100644
index 0000000..46ddb65
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/shared_pointer.rst
@@ -0,0 +1,5 @@
+Shared Pointer
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/shared_pointer.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/stack.rst b/docs/pre/arch/x86_64/stl/stack.rst
new file mode 100644
index 0000000..a554387
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/stack.rst
@@ -0,0 +1,5 @@
+Stack
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/stack.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/unique_pointer.rst b/docs/pre/arch/x86_64/stl/unique_pointer.rst
new file mode 100644
index 0000000..f508763
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/unique_pointer.rst
@@ -0,0 +1,5 @@
+Unique Pointer
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/unique_pointer.hpp
+
diff --git a/docs/pre/arch/x86_64/stl/vector.rst b/docs/pre/arch/x86_64/stl/vector.rst
new file mode 100644
index 0000000..b60023a
--- /dev/null
+++ b/docs/pre/arch/x86_64/stl/vector.rst
@@ -0,0 +1,5 @@
+Vector
+=======================
+
+.. doxygenfile:: arch/x86_64/include/arch/stl/vector.hpp
+
diff --git a/docs/pre/arch/x86_64/user.rst b/docs/pre/arch/x86_64/user.rst
new file mode 100644
index 0000000..3be32bb
--- /dev/null
+++ b/docs/pre/arch/x86_64/user.rst
@@ -0,0 +1,9 @@
+User Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ user/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/user/main.rst b/docs/pre/arch/x86_64/user/main.rst
new file mode 100644
index 0000000..0f641b2
--- /dev/null
+++ b/docs/pre/arch/x86_64/user/main.rst
@@ -0,0 +1,5 @@
+User Main
+===========
+
+.. doxygenfile:: arch/x86_64/include/arch/user/main.hpp
+
diff --git a/docs/pre/arch/x86_64/video.rst b/docs/pre/arch/x86_64/video.rst
new file mode 100644
index 0000000..bbae5ed
--- /dev/null
+++ b/docs/pre/arch/x86_64/video.rst
@@ -0,0 +1,9 @@
+Video Output Subsystem
+======================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ video/* \ No newline at end of file
diff --git a/docs/pre/arch/x86_64/video/vga.rst b/docs/pre/arch/x86_64/video/vga.rst
new file mode 100644
index 0000000..2c32bb2
--- /dev/null
+++ b/docs/pre/arch/x86_64/video/vga.rst
@@ -0,0 +1,9 @@
+VGA Support
+===========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+ :glob:
+
+ vga/*
diff --git a/docs/pre/arch/x86_64/video/vga/io.rst b/docs/pre/arch/x86_64/video/vga/io.rst
new file mode 100644
index 0000000..39609c9
--- /dev/null
+++ b/docs/pre/arch/x86_64/video/vga/io.rst
@@ -0,0 +1,4 @@
+VGA Input/Output Types and Constants
+====================================
+
+.. doxygenfile:: arch/x86_64/include/arch/video/vga/io.hpp
diff --git a/docs/pre/arch/x86_64/video/vga/text.rst b/docs/pre/arch/x86_64/video/vga/text.rst
new file mode 100644
index 0000000..592cdd5
--- /dev/null
+++ b/docs/pre/arch/x86_64/video/vga/text.rst
@@ -0,0 +1,5 @@
+VGA Text Mode
+=============
+
+.. doxygennamespace:: teachos::arch::video::vga::text
+ :members: