Nathan Giddings
da04d019c6
Merge pull request #7 from ngiddings/pre-alpha
...
Latest development on pre-alpha
2022-06-15 16:03:06 -05:00
a52f06f81e
Massive backlog of changes
2022-06-15 15:59:31 -05:00
c962a83ff0
WIP on kernel syscalls
2021-05-01 17:09:50 -05:00
7caf49065d
page stack constructor takes stack base as argument
...
initialize() calls new constructors and fills in syscall table
2021-04-19 06:58:02 -05:00
8605f08405
Changed DPL of syscall interrupt to 3
2021-04-19 06:57:05 -05:00
a68503538b
putc() advances lines when screen is full
2021-04-19 06:56:49 -05:00
c5ca5e82a7
Added more status codes
2021-04-19 06:56:12 -05:00
7300b9ecd6
Fixed broken ELF loader
...
Only binaries less than a page long would load correctly.
2021-04-19 06:56:03 -05:00
470e39e8e8
Added support for page types in mmgr
2021-04-19 06:55:27 -05:00
a5e9d852ab
Implemented do_syscall()
...
Wrote constructor for kernel state
Added syscall table
2021-04-19 06:54:34 -05:00
755f2a3d69
Wrote syscall interrupt handler in assembly
2021-04-19 06:53:39 -05:00
0af53bcfc8
Moved config.h to include/
2021-04-19 06:52:02 -05:00
6df3f203b8
Added source file for syscalls
2021-04-19 06:51:48 -05:00
Nathan Giddings
6b73aff3d0
Merge pull request #6 from ngiddings/pre-alpha
...
Pre alpha
2021-04-19 03:42:05 -05:00
5efc389935
Finished basic task switching mechansim
...
PCB is local to a process's address space.
Context switches are written in assembly.
Moved x86 headers to include/x86
2021-04-19 03:40:33 -05:00
086dfe546a
GRUB config file loads modules at boot
2021-04-18 08:00:56 -05:00
40da57e233
APIC enabled after running kernel state constructors
2021-04-18 02:10:56 -05:00
625bbb04a8
Debug message printed before loading task context
2021-04-18 02:10:33 -05:00
c39cbb79cd
Task contexts now load segment registers correctly
...
Interrupt enable bit set in saved EFLAGS register
2021-04-18 02:10:03 -05:00
1171aa2ca3
Spurious interrupt vector set to 0xFF
2021-04-18 02:07:45 -05:00
0b84658a61
TSS is created and TR loaded in initialize_gdt()
2021-04-18 02:07:00 -05:00
979344e942
next_process() checks if a next process exists
...
Panics if not
2021-04-17 06:30:00 -05:00
b615a8d286
More process in initialize()
...
Function now constructs kernel state and enters a process
2021-04-17 06:27:55 -05:00
461194fdfd
Fixed initialize_context()
...
Function did not take 'popal' instruction into account when initializing stack
2021-04-17 06:26:56 -05:00
a68a4dff11
Added new 'null pointer' status code
2021-04-17 06:26:03 -05:00
7dd19d0c2a
Added constructors for heap and resource table
2021-04-17 06:25:46 -05:00
291ed65248
Fixed wrong pointer type in load_module()
...
Kernel passed a pointer to its own state to get_free_resource_slot(),
causing its state to be corrupted.
next_process() also now loads the address space of the next process before entering it.
2021-04-17 06:25:11 -05:00
2a5dcd4a0f
Improved get_free_resource_slot()
...
Table now tries to expand itself when no available slots are left
2021-04-17 04:59:39 -05:00
a28e586139
Fixed missing return in free_page()
...
Method would report "out of memory" when that was not the case
2021-04-17 04:58:02 -05:00
7c0c5cd8ce
Fixed calculation of kernel binary size in initialize()
2021-04-17 04:57:12 -05:00
55c5db056e
Fixed crash in initialize_context()
...
Function tried to dereference a physical address, causing page fault
2021-04-17 04:56:22 -05:00
5c4a756176
Fixed fatal error while loading modules
...
strcpy() was called with a char instead of a char*, obviously causing a crash
2021-04-17 04:24:23 -05:00
Nathan Giddings
d0f9d026cc
Merge pull request #5 from ngiddings/pre-alpha
...
Pre alpha
2021-04-17 03:46:34 -05:00
961139df9e
Improved kernel memory usage
...
Moved base linear address to 0xFF800000
Kernel only reserves the page frames it actually needs
Memory for multiboot2 headers is freed
Video memory and APIC registers are dynamically mapped into linear addresses
2021-04-17 03:45:45 -05:00
b141582f40
Added very simple kernel memory allocator
2021-04-17 01:18:14 -05:00
b582c39ff8
Started work on process management
2021-04-17 01:00:28 -05:00
ce6371f0c3
Added ISR for preemption of processes
2021-04-17 00:59:15 -05:00
4bbe63819a
Added page_table firld to process_t
2021-04-17 00:58:10 -05:00
db280f3fad
Added new source files to Makefile.am
2021-04-17 00:57:50 -05:00
cb6d2681ef
Started code to manage kernel resource table
2021-04-17 00:57:37 -05:00
9630d0a396
Added load_program() function
...
Builds program image from ELF file in memory
Fixed multiple definition error caused by constant in elf.h:
moved contant to elf.c
2021-04-17 00:56:44 -05:00
2d6fa0d163
Added functions to create and load process contexts
2021-04-17 00:55:05 -05:00
fdcdb9acab
Updated virtual memory manager
...
Added page flags
Added function current_address_space()
Fixed create_address_space()
Renamed some fields in page_table_entry_t to fit naming scheme
2021-04-17 00:52:16 -05:00
6c047c6343
Remvoed unused dymamic memory allocator
2021-04-17 00:49:38 -05:00
8896c4313f
Fixed glitch in trim_map()
...
Entries were not modified properly; only removals worked correctly.
2021-04-17 00:45:24 -05:00
6138766c49
Added sequence to remap PIC
...
Wrote GDT code in C
Added routines to initialize GDT and IDT
2021-04-16 01:45:40 -05:00
8e6589b472
Added some test code to setup a timer
2021-04-15 07:23:19 -05:00
3e73c7c0ac
Fixed APIC register mapping
2021-04-15 07:22:58 -05:00
0c5d18ddc0
Added enum for timer interrupt vector
2021-04-15 07:22:26 -05:00
50fcaa2673
Added timer ISR
2021-04-15 07:22:01 -05:00