summaryrefslogtreecommitdiff
path: root/arch/i386/boot (unfollow)
Commit message (Collapse)AuthorFilesLines
2024-05-27arch: i386: pass entry page directory to entry funcDanny Holman1-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>
2024-03-28arch: i386: kernel: add mostly finished PFA and paging systemDanny Holman1-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>
2024-02-24kernel: string: add a strcpy functionDanny Holman1-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>
2024-02-24arch: i386: cleanup everything and reorganizeDanny Holman3-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>
2024-02-24arch: i386: move jump_userspace to its own fileDanny Holman1-18/+1
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: move IRQ functions to PIC driverDanny Holman1-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>
2024-02-16arch: i386: move raw assembly calls to their own headerDanny Holman1-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>
2024-02-16arch: i386: gdt.c: fix a bug in userspace jumpDanny Holman1-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>
2024-02-16arch: i386: boot: ISR frame should not include ESPDanny Holman1-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>
2023-11-26arch: i386: isr.s: create the irq stubsDanny Holman1-3/+21
Create the ISR stubs for use by IRQ handlers. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: idt.c: install the ISR handlersDanny Holman1-47/+62
Actually install the ISR handlers to the IDT. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: idt.c: remove the irq number from handlerDanny Holman1-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>
2023-11-26arch: i386: idt.c: call the page fault handlerDanny Holman1-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>
2023-11-26arch: i386: idt.c: add a stopgap to halt_catch_fireDanny Holman1-0/+1
Add a infinite while loop just in case the "hlt" instruction fails. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: idt.c: remove unneeded define macrosDanny Holman1-23/+1
Remove several preprocessor macros that serve no purpose and pollute the source file. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: gdt.c: init the TSS before loading itDanny Holman1-2/+5
Perform some initialization routines on the TSS structure before loading its address. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26arch: i386: boot.s: define functions for page managementDanny Holman1-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>
2023-11-26arch: i386: boot.s: move C entry point to fileDanny Holman1-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>
2023-11-26arch: i386: boot: boot.sDanny Holman1-8/+4
Fix several small bugs in assembler. Signed-off-by: Danny Holman <dholman@gymli.org>
2022-03-22arch: i386: make serial_writestring inlineDanny Holman1-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>
2022-03-22arch: i386: refactor the system call APIDanny Holman1-3/+2
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 Holman7-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>
2022-01-15arch: i386: add support for IRQs and system callsDanny Holman5-2/+40
Add support for rudementary system calls and IRQ interrupts. Signed-off-by: Danny Holman <dholman@gymli.org>
2022-01-15arch: i386: simplifiy GDT setupDanny Holman4-68/+176
Simplify the setup and definitions of GDT/TSS entries. Signed-off-by: Danny Holman <dholman@gymli.org>
2022-01-15arch: i386: simplify IDT setupDanny Holman3-28/+125
Simplify the interrupt descriptor table setup and frame assembly. Signed-off-by: Danny Holman <dholman@gymli.org>
2021-11-29arch: i386: add support for tab charactersDanny Holman1-0/+10
Add support for the tab character in the virtual terminal. Signed-off-by: Danny Holman <dholman@gymli.org>
2021-10-09arch: i386: rename the GDT array pointerDanny Holman1-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>
2021-10-09arch: i386: include more information in IDTDanny Holman2-62/+94
Include information about the current stack frame in the IDT handler(s). Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-09-28arch: i386: add PIC register supportDanny Holman1-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>
2021-09-28arch: i386: fix IDT exception handlerDanny Holman2-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>
2021-09-28arch: i386: fix GDT segment mismatchDanny Holman1-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>
2021-09-28arch: i386: add support for 8259 PICDanny Holman2-1/+55
Add support for the 8259 programmable interrupt controller. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-08-30i386: create idt.c and isr.sDanny Holman3-1/+115
Create files that add IDT support for i386. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-08-27arch: i386: add ring-3 descriptors to the GDTDanny Holman1-1/+3
Add two ring-3 segment discriptors to the GDT during gdt_install. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-07-25arch: i386: surround GDT macros with parensDanny Holman1-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>
2021-07-24arch: i386: add GDT setup routinesDanny Holman2-0/+97
Add a set of routines that setup the x86's global descriptor table. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-07-20arch: i386: move the kernel to high memoryDanny Holman2-7/+50
Move the start of the kernel image to the "higher half" of memory. This also enables paging.
2021-01-28i386: create terminal_scroll functionDanny Holman1-10/+25
Add support for scrolling the terminal at the end of the VGA buffer. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-25i386: add support for newlinesDanny Holman1-0/+7
Add support for the newline character in the TTY layer. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-24x86: reorganize the i386 directoryDanny Holman5-0/+142
Add structure to the internals of the x86 directory. Signed-off-by: Danny Holman <dholman@gymli.xyz>