Age | Commit message (Collapse) | Author |
|
Create a generic interface for drivers to make use of interrupt vectors.
This API should be platform-agnostic enough to allow any driver to make
use of virtually any interrupt vector on any CPU. On x86, the first 32
interrupts are set aside for CPU exceptions, and interrupt 128 is set
aside for system calls.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Refactor the physical memory manager to be more efficient and require
fewer function calls from layers above.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Make the declaration of flush_gdt available to files including asm.h.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Remove all the remaining references to headers that were moved into the
libk.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
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>
|
|
Add two functions to control thread-local spinlocks.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Add the mostly finished physical memory allocator and expose its
functions to the paging system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
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>
|
|
Move all the data structures required for operation of the GDT to their
own header file.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Add functions to the syscall handlers that dump registers and stack in
case of catastrophic failure.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
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>
|
|
Add a simple, bitmap-based physical memory management system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Define a few standard Unix system calls. These may change based on
future needs.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Make the register_irq_function accessible from files including pic.h.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Remove references to extern functions. All the necessary functionality
for this file is already contained.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
The x86 system call/interrupt handlers should be refactored to be more
readable.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Make the inline assembly calls consistent across different i386 files.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add support for rudementary system calls and IRQ interrupts.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Simplify the interrupt descriptor table setup and frame assembly.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Include information about the current stack frame in the IDT handler(s).
Signed-off-by: Danny Holman <dholman@gymli.xyz>
|
|
Add functions that let the OS read the internal state registers of the
8259 PIC.
Signed-off-by: Danny Holman <dholman@gymli.xyz>
|
|
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>
|
|
Add support for the 8259 programmable interrupt controller.
Signed-off-by: Danny Holman <dholman@gymli.xyz>
|
|
Add a set of routines that setup the x86's global descriptor table.
Signed-off-by: Danny Holman <dholman@gymli.xyz>
|
|
Add structure to the internals of the x86 directory.
Signed-off-by: Danny Holman <dholman@gymli.xyz>
|