Drew Galbraith
6f5b65de30
Map user pages in the proper mode.
...
This causes the user code to execute succesfully.
However now we don't differentiate between syscalls so we pass right
over the exit syscall and continue executing until we fault.
2023-05-29 13:06:08 -07:00
Drew Galbraith
7184f527a0
Jump to user mode.
...
This instantly creates a page fault as we always map pages with ring 0
permissions.
2023-05-29 13:06:08 -07:00
Drew Galbraith
aefb4f082b
Add a kernel ELF module and load it in a new process.
...
Don't yet jump to userspace.
2023-05-29 00:32:54 -07:00
Drew Galbraith
f86bbe6ea9
Wireframe for syscalls in place
2023-05-18 16:03:09 -07:00
Drew Galbraith
d3024211a7
Cycle through multiple tasks in multiple processes
2023-05-18 13:56:54 -07:00
Drew Galbraith
7a3b4d2d42
Add true page fault handler.
2023-05-18 13:56:09 -07:00
Drew Galbraith
0d275c72a1
Have processes enqueue their own threads
2023-05-18 13:28:22 -07:00
Drew Galbraith
cb41953354
Scheduler with working threads.
...
Currently only one process but it is a start.
2023-05-18 13:24:02 -07:00
Drew Galbraith
960cbf9519
Add Scheduler wireframe.
...
Right now does nothing but has containing classes for process and thread
information.
2023-05-18 12:43:53 -07:00
Drew Galbraith
de2c96b848
Internal many paging_util functions.
2023-05-18 11:40:13 -07:00
Drew Galbraith
fa2bb4df89
Added a PhysicalMemoryManager class.
...
Stores a linkedlist of free blocks of PhysicalMemory.
2023-05-18 11:34:45 -07:00
Drew Galbraith
4380590af2
Add new and delete operator implementations to the kernel heap.
...
For now delete does nothing.
2023-05-18 11:29:44 -07:00
Drew Galbraith
2d719d0443
Add a bootstrap physical memory manager.
...
This will allow the real physical memory manager to use allocations.
2023-05-18 11:00:05 -07:00
Drew Galbraith
747c2a4e17
Add a page fault handler
2023-05-18 10:59:45 -07:00
Drew Galbraith
0b7e667368
Add a basic kernel heap object.
...
Currently allocation always fails because we don't
have a way to allocate a physical page.
2023-05-18 10:59:39 -07:00
Drew Galbraith
45b5817a36
Recursively map the PML4
2023-05-18 02:00:01 -07:00
Drew Galbraith
b3f8cb9003
Dump the memory map from limine.
...
Also adds the ability to print formatted messages.
2023-05-18 01:16:53 -07:00
Drew Galbraith
9fc1aa15ef
Add an interrupt descriptor table.
...
Set up a very basic handler for divide by zero and
general protection faults.
2023-05-17 22:54:37 -07:00
Drew Galbraith
3e1a1f7485
Add a qemu debug option and gdb init file.
2023-05-17 22:53:32 -07:00
Drew Galbraith
03fe4d8c2e
Load our own GDT.
...
Replace the GDT from limine with our own.
2023-05-17 21:41:08 -07:00
Drew Galbraith
872e6f3392
Add a debug output utility.
2023-05-17 20:42:59 -07:00
Drew Galbraith
c2af2eee97
Add compile_commands.json to .gitignore
2023-05-17 20:42:21 -07:00
Drew Galbraith
559d00e872
Add a clang format spec
2023-05-17 20:30:15 -07:00
Drew Galbraith
91b52f1872
Move IO Port Function to a separate file
2023-05-17 20:26:51 -07:00
Drew Galbraith
a164d9d67c
Boot directly into AcadiaOS
2023-05-17 20:26:20 -07:00
Drew Galbraith
e9705f7579
Barebones Kernel Commit
...
Uses limine to boot off of a disk.
Outputs a character to the debug port.
2023-05-17 20:20:53 -07:00