Justin C. Miller
5dedd2e0e0
Finish memory bootstrap sequence.
...
Now we're setting up all our own page tables, and handing off to
page_manager's init function. (Which is still NYI.)
2018-04-21 19:32:39 -07:00
Justin C. Miller
57abb03deb
Rearrange memory manager into two classes.
...
page_manager and memory_manager are now separate, and are also pre
allocated in the kernel so they don't have to allocate themselves.
2018-04-21 17:34:33 -07:00
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
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
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
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
712df97dfc
Add a better boot message with version
2018-04-12 09:17:59 -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
165ed28cd3
Reduce dependency on efi library functions
2018-03-31 17:32:10 -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
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
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
Justin C. Miller
47ebdc7f41
Prematurely jumping into kernel_main
2018-03-19 17:04:35 -07:00
Justin C. Miller
72e143b93c
Bootloader loading kernel, not yet jumping to it
2018-03-18 18:07:19 -07:00
Justin C. Miller
d02e1d97d9
Splitting out UEFI bootloader code from kernel
...
Now the bootloader should be responsible for all initial setup,
loading the kernel, and then handing off to the kernel with
proper data in place.
2017-07-26 01:41:46 -07:00
Justin C. Miller
9ae583b1ec
Fix up using con_status* calls.
...
* Main was using CHECK_EFI_STATUS_OR_RETURN despite saying it shouldn't
* Use con_status* calls instead
* Clean up line-clobbering in con_status_{ok,fail}
2017-07-14 09:25:23 -07:00
Justin C. Miller
e6dcdda6b9
Added memory.c
...
Includes routine replacing efilib's LibMemoryMap, and a debug function for
dumping the map to the console. Currently get_memory_map() is only used
for the debug function dump_memory_map.
Thanks to Finnbar Murphy for the blog post that helped me figure out why
my memory map iteration was wrong.
http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html
2017-02-20 22:12:11 -08:00
Justin C. Miller
29922e3546
Moved graphics.c into console.h, with boot message framework
2017-01-16 16:42:11 -08:00
Justin C. Miller
0260abecab
Breaking gfx mode code out into graphics.c
2017-01-03 08:21:11 -08:00
Justin C. Miller
eeaf27bbdf
Moved check_status to a header file and properly case/named it
2017-01-03 08:14:16 -08:00
Justin C. Miller
2397618a68
Wasn't using this linker script anymore - using GNU-EFI's instead.
2017-01-03 08:09:11 -08:00