summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* kernel: mem: add a simple kmalloc implementationDanny Holman2023-11-262-0/+32
| | | | | | | Add a simple implementation of kmalloc. This system only works on x86-based processors at the time of commit. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: paging: add a proper paging APIDanny Holman2023-11-262-0/+140
| | | | | | | 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>
* arch: i386: alloc: add a physical memory managerDanny Holman2023-11-262-0/+56
| | | | | | Add a simple, bitmap-based physical memory management system. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: add multiboot supportDanny Holman2023-11-262-0/+127
| | | | | | | | 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>
* arch: i386: serial.c: make serial_writestring staticDanny Holman2023-11-261-1/+1
| | | | | | | Make the function serial_writestring static. This is an optimization specifically for small functions such as this one. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: tty.c: remove unneeded local variableDanny Holman2023-11-261-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>
* arch: i386: syscall.c: replace function calls with single switchDanny Holman2023-11-261-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>
* arch: i386: pic.c: finish implementing functions from pic.hDanny Holman2023-11-261-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>
* arch: i386: syscall.h: define some example system callsDanny Holman2023-11-261-5/+22
| | | | | | | Define a few standard Unix system calls. These may change based on future needs. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: pic.h: make register_irq_handler accessibleDanny Holman2023-11-261-0/+2
| | | | | | Make the register_irq_function accessible from files including pic.h. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: pic.h: change all chars into uint8_tDanny Holman2023-11-261-1/+2
| | | | | | | Make all variables with char or char* type into uint8_t. This makes the system more consistent and issues fewer compiler warnings. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: idt.h: remove extern functionsDanny Holman2023-11-261-4/+1
| | | | | | | Remove references to extern functions. All the necessary functionality for this file is already contained. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: isr.s: create the irq stubsDanny Holman2023-11-261-3/+21
| | | | | | Create the ISR stubs for use by IRQ handlers. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: idt.c: install the ISR handlersDanny Holman2023-11-261-47/+62
| | | | | | Actually install the ISR handlers to the IDT. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: idt.c: remove the irq number from handlerDanny Holman2023-11-261-1/+2
| | | | | | | Remove the irq number from the irq handler. This information is already stored in the ISR frame structure. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: idt.c: call the page fault handlerDanny Holman2023-11-261-3/+1
| | | | | | | Call the page fault handler when a page fault occurs instead of just dumping the registers and halting. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: idt.c: add a stopgap to halt_catch_fireDanny Holman2023-11-261-0/+1
| | | | | | Add a infinite while loop just in case the "hlt" instruction fails. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: idt.c: remove unneeded define macrosDanny Holman2023-11-261-23/+1
| | | | | | | Remove several preprocessor macros that serve no purpose and pollute the source file. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: gdt.c: init the TSS before loading itDanny Holman2023-11-261-2/+5
| | | | | | | Perform some initialization routines on the TSS structure before loading its address. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: boot.s: define functions for page managementDanny Holman2023-11-261-0/+27
| | | | | | | | Define the load_page_dir and enable_paging functions in assembly. This allows normal C code to initialize the CR3 register and control paging without using inline assembler. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: boot.s: move C entry point to fileDanny Holman2023-11-261-10/+3
| | | | | | | Move the initial C entry-point to its own file. Call all the i386 specific initialization routines from the new i386_entry function. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: boot: boot.sDanny Holman2023-11-261-8/+4
| | | | | | Fix several small bugs in assembler. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: make serial_writestring inlineDanny Holman2022-03-223-20/+15
| | | | | | | | 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>
* arch: i386: refactor the system call APIDanny Holman2022-03-225-11/+4
| | | | | | | The x86 system call/interrupt handlers should be refactored to be more readable. Signed-off-by: Danny Holman <dholman@gymli.org>
* Makefile: explicitly define CC variableDanny Holman2022-03-221-2/+4
| | | | | | | The CC variable is already defined by the make program, so use "CC:=" instead of "CC?=". This makes sure the proper cross compiler is in use. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: move non-critial files out of bootDanny Holman2022-01-219-91/+52
| | | | | | | 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>
* arch: i386: fix coding style issueDanny Holman2022-01-151-2/+2
| | | | | | Make the inline assembly calls consistent across different i386 files. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: add support for IRQs and system callsDanny Holman2022-01-157-3/+61
| | | | | | Add support for rudementary system calls and IRQ interrupts. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: simplifiy GDT setupDanny Holman2022-01-154-68/+176
| | | | | | Simplify the setup and definitions of GDT/TSS entries. Signed-off-by: Danny Holman <dholman@gymli.org>
* Makefile: add dry run and debug targetsDanny Holman2022-01-151-0/+6
| | | | | | Add targets to perform a test run and debug run inside a VM. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: simplify IDT setupDanny Holman2022-01-155-31/+128
| | | | | | Simplify the interrupt descriptor table setup and frame assembly. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: add support for tab charactersDanny Holman2021-11-291-0/+10
| | | | | | Add support for the tab character in the virtual terminal. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: rename the GDT array pointerDanny Holman2021-10-091-7/+7
| | | | | | | Rename the array/pointer to the GDT array in gdt.c pointer to be a bit clearer. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: include more information in IDTDanny Holman2021-10-094-73/+129
| | | | | | Include information about the current stack frame in the IDT handler(s). Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: add PIC register supportDanny Holman2021-09-282-0/+19
| | | | | | | Add functions that let the OS read the internal state registers of the 8259 PIC. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: fix IDT exception handlerDanny Holman2021-09-284-45/+145
| | | | | | | Fix the i386's general exception handler to actually work. Fix provided by Jon Sanderson (jjs295356@gmail.com). Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: fix GDT segment mismatchDanny Holman2021-09-281-1/+1
| | | | | | | Fix a bug in which the size of the main GDT array and the actual number of descriptors are different values. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: add support for 8259 PICDanny Holman2021-09-287-19/+103
| | | | | | Add support for the 8259 programmable interrupt controller. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* i386: create idt.c and isr.sDanny Holman2021-08-305-2/+118
| | | | | | Create files that add IDT support for i386. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* git: stop ignoring assembly filesDanny Holman2021-08-301-1/+36
| | | | | | | Remove the '*.s' line from .gitignore. There are important assembler files that should be in a distribution. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* doc: add the Developer's Certificate of OriginDanny Holman2021-08-301-0/+26
| | | | | | | Add the Developer's Certificate of Origin to the documentation directory. This allows developers to keep their own copyright. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: add ring-3 descriptors to the GDTDanny Holman2021-08-271-1/+3
| | | | | | Add two ring-3 segment discriptors to the GDT during gdt_install. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: surround GDT macros with parensDanny Holman2021-07-251-15/+14
| | | | | | | Add parenthesis around the GDT setup macros. This is done to prevent having to do it when using them. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: add GDT setup routinesDanny Holman2021-07-245-70/+99
| | | | | | Add a set of routines that setup the x86's global descriptor table. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* arch: i386: move the kernel to high memoryDanny Holman2021-07-203-13/+66
| | | | | Move the start of the kernel image to the "higher half" of memory. This also enables paging.
* io: prefix a 'k' to print functionsDanny Holman2021-07-203-8/+6
| | | | Add a 'k' prefix to the kernel versions of the printf family.
* Makefile: clean up targetsDanny Holman2021-06-041-8/+11
| | | | | | Clean up the Makefile to be more clear and readable. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* Makefile: include dependency filesDanny Holman2021-03-091-0/+2
| | | | | | | Add an include directive in the main Makefile that includes the dependency files generated by GCC. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* README: fix improper formattingDanny Holman2021-03-091-0/+1
| | | | | | | Fix wrong formatting in the project README file. Lists should have an empty line proceeding them, otherwise the first element is italicized. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* Makefile: fix wrong -I directive to compilerDanny Holman2021-03-092-4/+3
| | | | | | | Fix a bug in which the architecture specific include directories are not properly included in the main Makefile. Signed-off-by: Danny Holman <dholman@gymli.xyz>