summaryrefslogtreecommitdiff
path: root/arch/i386/kernel (unfollow)
Commit message (Collapse)AuthorFilesLines
2024-06-21arch: i386: paging: do the recursive paging trickDanny Holman1-64/+58
Map the page directory to the last page table. This allows the kernel to access every page table on the system from the address 0xFFC00000 plus an offset. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-29arch: i386: paging: make a temp map in init_page_tableDanny Holman1-3/+4
Make a temporary mapping for a alloc'd page in init_page_table. This ensures that the mapping is firmly inside the page table set aside for page accounting structures. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-29arch: i386: paging: remove ref to non-existant headerDanny Holman1-1/+0
Remove a reference to a non-existant header file in an include statement. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-29arch: i386: remove last refs to moved headersDanny Holman2-25/+10
Remove all the remaining references to headers that were moved into the libk. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-29arch: i386: fix several bugs in paging subsystemDanny Holman4-116/+100
Fix several triple-faulting bugs in the paging initialization routines. These include causing a page fault during physical memory manager initialization, causing a page fault during paging initialization and other double-faulting and triple-faulting bugs. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27arch: i386: pmem: refactor the physical MMDanny Holman1-53/+38
Refactor the physical memory manager to be dramatically simpler. The new design uses only a single freelist, and only uses temporary mappings where needed. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27arch: i386: update all files to use the new libkDanny Holman4-20/+20
Update all the files under arch to make use of the new libk implementation. Most of these changes are simply path changes in include directives. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27arch: i386: add a spinlock implementationDanny Holman1-0/+30
Add two functions to control thread-local spinlocks. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27arch: i386: pass entry page directory to entry funcDanny Holman1-19/+25
Add a third argument to i386_entry. This argument is the bootstrap page directory. Pages can be temporarily mapped in during the initialization of the paging system. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27drivers: create a subdir just for driver codeDanny Holman2-249/+0
Create a subdirectory branching from the project root. This directory will contain nothing but driver and device code. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28kernel: add a basic thread schedulerDanny Holman1-0/+28
Add a basic thread scheduler. This should allow the kernel to schedule threads according to the round robin algorithm. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28arch: i386: kernel: implement a kmalloc functionDanny Holman1-0/+66
Add a basic kmalloc implementation. This allows the kernel to allocate blocks smaller than a whole page. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28arch: i386: kernel: add mostly finished PFA and paging systemDanny Holman4-49/+152
Add the mostly finished physical memory allocator and expose its functions to the paging system. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-24kernel: string: add a strcpy functionDanny Holman1-1/+0
Add an implmentation of strcpy. This function is used in several places in the kernel to copy strings between memory addresses. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-24arch: i386: cleanup everything and reorganizeDanny Holman8-81/+414
Clean up everything in the i386 arch directory. This code has been in dire need of refactoring for a long while. All the inline assembly functions and the data structures related to the architecture should be placed into their own header file. Now the scheduler can access registers and ISRs without having to deal with arch-specific code. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-24arch: i386: move jump_userspace to its own fileDanny Holman1-0/+29
Move the function that jumps to ring 3 to its own assembly file. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: add basic keyboard driverDanny Holman1-0/+142
Add a basic driver for the PS/2 keyboard. This driver just prints whatever it receives back out to the framebuffer. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: roll physical memory control into VMMDanny Holman2-96/+87
The VMM should control the physical memory as well as paging. This allows the VMM to grab frames as it sees fit. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: multiboot: move arch-specific inits hereDanny Holman1-13/+33
Move all the architecture-specific initialization calls to this file. This frees up the main function to initialize other parts of the kernel. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: move IRQ functions to PIC driverDanny Holman1-1/+11
Move all the functions that control IRQ lines to the PIC driver. This allows the IDT controller to handle only raw interrupts no matter where they come from. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: syscall.c: add functions that dump dataDanny Holman1-1/+7
Add functions to the syscall handlers that dump registers and stack in case of catastrophic failure. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: add operations to control PIT timerDanny Holman1-0/+29
Add a set of functions that control the programmable interrupt timer. This will be used as the primary means of preemption on this architecture. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: put framebuffer ops in own fileDanny Holman2-88/+105
Move all operations related to the x86 framebuffer into its own set of files. This makes the TTY layer more architecture agnostic. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16arch: i386: kernel: the serial driver should be more POSIX-yDanny Holman1-13/+13
Make the serial driver behave more like a standard POSIX call. It should have write and read functions that call architecture specific functions. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: alloc: remove erroneous halt instructionDanny Holman1-1/+0
Remove an inline assembly instruction that was placed for debugging purposes. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: paging: add a proper paging APIDanny Holman1-0/+88
Add a proper page control API. These functions allow the kernel to directly map and unmap pages in the logical address space. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: alloc: add a physical memory managerDanny Holman1-0/+43
Add a simple, bitmap-based physical memory management system. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: add multiboot supportDanny Holman1-0/+23
Add support for the multiboot specification. These files will allow the kernel to read the multiboot header information as well as the provided memory map. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: tty.c: remove unneeded local variableDanny Holman1-3/+4
Remove an unused local variable from tty_putchar. Instead, just cast the signed char to unsigned as needed. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: syscall.c: replace function calls with single switchDanny Holman1-21/+9
Replace individual function calls with a single switch-case structure for system calls. The new function, handle_syscall, will construct and call the interrupt without input from the programmer. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: pic.c: finish implementing functions from pic.hDanny Holman1-1/+3
Finish implementing pic_eoi and similar. This allows standardized communication with the x86 PIC chip. Signed-off-by: Danny Holman <dholman@gymli.org>
2022-03-22arch: i386: make serial_writestring inlineDanny Holman1-5/+0
The serial_writestring function is small enough and platform-agnostic, and therefore it should be moved into the main serial header and marked as inline. Signed-off-by: Danny Holman <dholman@gymli.org>
2022-03-22arch: i386: refactor the system call APIDanny Holman2-6/+1
The x86 system call/interrupt handlers should be refactored to be more readable. Signed-off-by: Danny Holman <dholman@gymli.org>
2022-01-21arch: i386: move non-critial files out of bootDanny Holman3-0/+197
Move all files not needed for the bootstrap process out of boot and into the main x86 source directory. Signed-off-by: Danny Holman <dholman@gymli.org>
2021-09-28arch: i386: add support for 8259 PICDanny Holman2-17/+1
Add support for the 8259 programmable interrupt controller. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-24x86: reorganize the i386 directoryDanny Holman2-0/+63
Add structure to the internals of the x86 directory. Signed-off-by: Danny Holman <dholman@gymli.xyz>