Commit Graph

919 Commits

Author SHA1 Message Date
Justin C. Miller
4a38a74b16 Refactor memory code.
Break out some more bootstrap code into functions. Add the start of
some Doxygen doc comments to help organize my thoughts.
2018-04-21 16:49:39 -07:00
Justin C. Miller
9a45ea562b Updating notes v0.1.1 2018-04-21 02:53:18 -07:00
Justin C. Miller
da404f520d Rearrange memory bootstrapping code.
Move EFI-related code and initial memory manager bootstrap code
to memory_bootstrap.cpp, move memory page structs to their own
memory_page.h/cpp files.
2018-04-21 02:52:52 -07:00
Justin C. Miller
799ad8b264 Add operator| to enum_bitfields 2018-04-21 02:47:37 -07:00
Justin C. Miller
818b51d57c Make qemu.bat log to popcorn.log 2018-04-21 02:45:33 -07:00
Justin C. Miller
e8866abc7a Bootstrap in-kernel memory management 2018-04-20 02:15:56 -07:00
Justin C. Miller
3b560c063a Move kernel to higher half.
Return to having the bootloader re-map the kernel into the higher
half before jumping into the kernel entrypoint, so we don't have
to juggle pointers inside the kernel.
2018-04-19 01:37:34 -07:00
Justin C. Miller
a27b8d6a3a Add/move code into kutil library 2018-04-17 23:41:28 -07:00
Justin C. Miller
2050b89334 Move src/modules/main -> src/kernel 2018-04-17 09:45:05 -07:00
Justin C. Miller
504de44ff3 Make APIC addresses uint32_t*
APIC registers need to be read/written 32 bits at a time, so
best to keep these as pointers to that size.
2018-04-17 09:20:56 -07:00
Justin C. Miller
71a6f13fa5 Make interrupt_isrs.inc the one source of ISRs 2018-04-17 01:39:21 -07:00
Justin C. Miller
f62fbefe54 Parse APIC addresses out of ACPI tables. 2018-04-16 23:56:03 -07:00
Justin C. Miller
6c29024eac Remove broken console QEMU bat file. 2018-04-16 01:17:11 -07:00
Justin C. Miller
b7f18c0d31 Parse the ACPI XSDT and find ACPI tables. 2018-04-16 01:15:42 -07:00
Justin C. Miller
696c29086b Clean up isr references in main.cpp 2018-04-15 18:44:47 -07:00
Justin C. Miller
bce281606e Finish ISR code for CPU faults (ISRs 0-31) 2018-04-15 18:40:21 -07:00
Justin C. Miller
2388a92085 Add initial IDT and GDT setup.
WIP interrupt handling. Interrupts do not yet return.
2018-04-15 15:46:20 -07:00
Justin C. Miller
447991e82b Add comment to assert 2018-04-15 09:14:02 -07:00
Justin C. Miller
a8984350da Add new kassert macro. 2018-04-14 18:34:34 -07:00
Justin C. Miller
4d5da72e2e Add parse_memmap.py script 2018-04-13 23:54:34 -07:00
Justin C. Miller
712df97dfc Add a better boot message with version v0.1.0 2018-04-12 09:17:59 -07:00
Justin C. Miller
656d5dfedf Save tool scripts like parse_font.py in a scripts dir 2018-04-12 09:02:56 -07:00
Justin C. Miller
1f396ced8e Make console support 256 color mode 2018-04-12 00:19:43 -07:00
Justin C. Miller
7f805fae1a Fix only allocating one page for log 2018-04-11 10:14:13 -07:00
Justin C. Miller
2d52f64eb6 Implement scrolling console 2018-04-10 02:15:41 -07:00
Justin C. Miller
067ff3af89 fix tab/spaces 2018-04-10 01:03:52 -07:00
Justin C. Miller
eaa9d2ba53 Move screen and font to proper classes 2018-04-09 13:56:14 -07:00
Justin C. Miller
77cc1fe757 Move main module to c++ 2018-04-08 12:44:09 -07:00
Justin C. Miller
58729b412a Add inital console font rendering 2018-04-04 11:58:02 -07:00
Justin C. Miller
8914106bee Add PSF font header definition 2018-04-02 10:20:56 -07:00
Justin C. Miller
4577c2d10c Add the beginning of support for kernel graphics to bootloader.
* Load a font file off disk to pass to kernel
* Expose a framebuffer to the kernel
* Currently the kernel just paints the screen red
2018-04-01 22:48:46 -07:00
Justin C. Miller
23365b39c7 Move all guid instances into .rodata in our own list. 2018-04-01 17:06:49 -07:00
Justin C. Miller
913fb202eb Clean up lots of debug output I no longer use. 2018-04-01 15:41:32 -07:00
Justin C. Miller
967018c3ac Fix con_printf not returing anything. 2018-04-01 15:37:26 -07:00
Justin C. Miller
cbb6ca5bd1 Fix printing on video console 2018-04-01 14:19:17 -07:00
Justin C. Miller
7b4388af5c Add guids CSV 2018-03-31 17:33:31 -07:00
Justin C. Miller
165ed28cd3 Reduce dependency on efi library functions 2018-03-31 17:32:10 -07:00
Justin C. Miller
a09a25d3e6 Ignore .gdbinit 2018-03-31 17:31:39 -07:00
Justin C. Miller
7ce2898b6e Test for incoming data pointer in kernel_main 2018-03-29 09:49:38 -07:00
Justin C. Miller
cc01f9d260 Actually pass data pages to kernel 2018-03-27 14:50:28 -07:00
Justin C. Miller
fd32af4905 Make memory functions operate on structure type 2018-03-27 14:47:21 -07:00
Justin C. Miller
2b9a0ca15e Create a kernel data area for passing information 2018-03-27 14:46:53 -07:00
Justin C. Miller
561686abd3 Update gnu-efi 2018-03-26 10:21:34 -07:00
Justin C. Miller
fd5780610b Format using clang-format 2018-03-25 14:06:25 -07:00
Justin C. Miller
64a6d88e5c Truly enable virtual memory.
Map is still identity-mapped. I think we need to sort and/or clean up
the map before using a higher half address. In-kernel vga output not
working yet, but do_the_set_registers() is getting called.
2018-03-25 13:51:32 -07:00
Justin C. Miller
417f080993 Improve QEMU debugging setup 2018-03-25 13:45:52 -07:00
Justin C. Miller
df93eeb708 OVMF upgrade 2018-03-25 03:07:23 -07:00
Justin C. Miller
e19c7cee50 Give kernel image a header.
Kernel image now has a header with version, magic number, and a
pointer to its actual entrypoint. Entry point is now _start in
boot.s, and we now generate versions.s in the build tree for the
version macros.
2018-03-24 18:34:44 -07:00
Justin C. Miller
d438392ed5 Formatting fixes and removed commented code only. 2018-03-23 09:04:51 -07:00
Justin C. Miller
cdef82f06f Virtualizing memory after exiting boot services 2018-03-22 19:16:44 -07:00