470e39e8e8
Added support for page types in mmgr
2021-04-19 06:55:27 -05:00
755f2a3d69
Wrote syscall interrupt handler in assembly
2021-04-19 06:53:39 -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
40da57e233
APIC enabled after running kernel state constructors
2021-04-18 02:10:56 -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
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
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
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
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
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
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
3229f55164
Added some code in initialize() to test interrupts
2021-04-15 05:49:40 -05:00
c5e38801f3
Fixed the idt_info_t struct and lidt()
...
Info was not loaded properly, causing crash
2021-04-15 05:49:11 -05:00
923057ee1c
Removed 'interrupt' attribute from isr_ap_start()
...
Added message to division by 0 exception
2021-04-15 04:55:28 -05:00
ac0e5261ba
Implemented apic_send_ipi()
2021-04-15 04:51:57 -05:00
d2617e4488
Wrote new ISR for AP entry
2021-04-15 04:51:23 -05:00
8eafcf899b
Wrote some simple MSR code
2021-04-15 04:44:41 -05:00
8851243f19
Wrote empty definitions for some APIC functions
...
Started x86 interrupt setup code
2021-04-14 20:23:13 -05:00
3130b07fd1
Removed generic_isr() definition
2021-04-14 03:39:25 -05:00
507b0fa53e
Renamed ISR functions to fit convention
2021-04-14 03:25:55 -05:00
eef1741e16
Added enum listing x86 exception codes
2021-04-14 03:25:21 -05:00
29544b0eb8
Moved interrupt code to separate file.
...
Added new source file to Makefile.am
2021-04-14 02:46:04 -05:00
4a8ca81a10
Started header for APIC structures
2021-04-14 02:25:57 -05:00
9f0867393f
Some cleanup in quark_x86.c
2021-04-14 00:52:56 -05:00
4c2ded8676
Fixed missing includes for multiboot2 files
2021-04-14 00:52:12 -05:00
4e6f487a0a
Moved ISRs and multiboot2 code to separate files
2021-04-14 00:11:44 -05:00
dd188132b9
Moved x86 ISR stubs to quark_x86.c
2021-04-13 00:26:59 -05:00
e6a417c822
Changed formatting flag used to print memory map
2021-04-13 00:21:36 -05:00
302ed3b816
Fixed issues with tabs and newlines in putchar()
2021-04-13 00:21:08 -05:00
cb7df05625
Added line to print character to screen after initializing
2021-04-12 15:52:32 -05:00
8d784364f8
Fixed value of pointer to video memory
2021-04-12 15:52:03 -05:00
f2c19bd4c4
Turned module_limit into a macro
2021-04-12 15:28:37 -05:00
20b718c935
Implemented bare-bones putchar() and puts()
2021-04-12 15:28:03 -05:00
c94a4a692b
Updated stdio.h include in quark_x86.c
2021-04-12 02:22:06 -05:00
e2562c9a4e
Fixed invlpg instruction in create_address_space()
2021-04-12 02:21:29 -05:00
5006addfb5
Fixed formatting in mmgr.c
2021-04-12 01:52:33 -05:00
dc4d3c0165
Added isr type enum to quark_x86.c
2021-04-12 01:44:17 -05:00
e84a2fadd3
Added stubs for stdio.h functions
...
putchar() and puts() are platform-dependent
2021-04-12 01:42:53 -05:00
e235e9bad2
Moved memory type enum to memorymap.h
...
Deleted memorytype.h
2021-04-12 01:21:18 -05:00