summaryrefslogtreecommitdiff
path: root/arch/i386/boot (follow)
Commit message (Collapse)AuthorAgeFilesLines
* arch: boot: allocate a few pages at startupDanny Holman2024-06-211-11/+18
| | | | | | | Allocate a few pages at startup just to get the paging and physical memory manager up and running. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: pass entry page directory to entry funcDanny Holman2024-05-271-3/+2
| | | | | | | | 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>
* arch: i386: kernel: add mostly finished PFA and paging systemDanny Holman2024-03-281-7/+11
| | | | | | | Add the mostly finished physical memory allocator and expose its functions to the paging system. Signed-off-by: Danny Holman <dholman@gymli.org>
* kernel: string: add a strcpy functionDanny Holman2024-02-241-10/+6
| | | | | | | 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>
* arch: i386: cleanup everything and reorganizeDanny Holman2024-02-243-349/+0
| | | | | | | | | | 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>
* arch: i386: move jump_userspace to its own fileDanny Holman2024-02-241-18/+1
| | | | | | Move the function that jumps to ring 3 to its own assembly file. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: move IRQ functions to PIC driverDanny Holman2024-02-161-17/+26
| | | | | | | | 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>
* arch: i386: move raw assembly calls to their own headerDanny Holman2024-02-161-13/+0
| | | | | | | Move simple assembly calls to their own header. All one or two line assembly calls should be defined in a single place. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: gdt.c: fix a bug in userspace jumpDanny Holman2024-02-161-52/+12
| | | | | | | Fix a bug in the GDT that prevented the kernel from jumping to userspace correctly. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: boot: ISR frame should not include ESPDanny Holman2024-02-161-2/+6
| | | | | | | | The code that constructs an isr_frame struct should not push ESP to the stack. In addition, the kernel should set its own copy of ESP into a function defined elsewhere for scheduling purposes. 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-221-14/+8
| | | | | | | | 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-221-3/+2
| | | | | | | The x86 system call/interrupt handlers should be refactored to be more readable. Signed-off-by: Danny Holman <dholman@gymli.org>
* arch: i386: move non-critial files out of bootDanny Holman2022-01-217-282/+0
| | | | | | | 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: add support for IRQs and system callsDanny Holman2022-01-155-2/+40
| | | | | | 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>
* arch: i386: simplify IDT setupDanny Holman2022-01-153-28/+125
| | | | | | 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-092-62/+94
| | | | | | 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-281-0/+14
| | | | | | | 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-282-45/+73
| | | | | | | 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-282-1/+55
| | | | | | 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-303-1/+115
| | | | | | Create files that add IDT support for i386. 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-242-0/+97
| | | | | | 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-202-7/+50
| | | | | Move the start of the kernel image to the "higher half" of memory. This also enables paging.
* i386: create terminal_scroll functionDanny Holman2021-01-281-10/+25
| | | | | | Add support for scrolling the terminal at the end of the VGA buffer. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* i386: add support for newlinesDanny Holman2021-01-251-0/+7
| | | | | | Add support for the newline character in the TTY layer. Signed-off-by: Danny Holman <dholman@gymli.xyz>
* x86: reorganize the i386 directoryDanny Holman2021-01-245-0/+142
Add structure to the internals of the x86 directory. Signed-off-by: Danny Holman <dholman@gymli.xyz>