Age | Commit message (Collapse) | Author |
|
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>
|
|
Strip the code calling for the memory manager to allocate pages to
kmalloc. The function should just return a raw pointer while a page
fault will allocate the required memory.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a panic function that stops the current CPU and prints an error
message into the ring buffer.
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>
|
|
Fix a bug in the GDT that prevented the kernel from jumping to userspace
correctly.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Add the container_of.h file that defines the container_of macro. This
macro allows the kernel to get the parent struct of a pointer with an
offset.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add more functions to the string library to process buffers and strings.
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>
|
|
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>
|
|
The function kprintf should print to an internal ringbuffer instead of
directly to the framebuffer. This reduces dependence on the existence of
a framebuffer in the first place.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Move list.h into a designated directory for data structure definitions.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Remove an inline assembly instruction that was placed for debugging
purposes.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add new source files to the x86 architecture build configuration.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add references to the PMM bitmap to the linker script.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a linked-list implementation using the kmalloc system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Finish implementing pic_eoi and similar. This allows standardized
communication with the x86 PIC chip.
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>
|
|
Create the ISR stubs for use by IRQ handlers.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Actually install the ISR handlers to the IDT.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Add a infinite while loop just in case the "hlt" instruction fails.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Remove several preprocessor macros that serve no purpose and pollute the
source file.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Perform some initialization routines on the TSS structure before loading
its address.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Fix several small bugs in assembler.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
The x86 system call/interrupt handlers should be refactored to be more
readable.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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 setup and definitions of GDT/TSS entries.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add targets to perform a test run and debug run inside a VM.
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>
|