47 Commits

Author SHA1 Message Date
470eb5e9f9 Also map non-free memory areas into kernel space 2018-03-20 14:11:22 +01:00
5dc4e27392 Map all free memory pages and add to page stack 2018-03-20 14:11:22 +01:00
80cc165957 Read memory map tags from multiboot 2018-03-20 14:11:21 +01:00
6f0a745adc Ability to bind handler functions to interrupts 2018-03-20 14:11:21 +01:00
96d2ebd977 Collect the cpu specific stuff 2018-03-20 14:11:21 +01:00
127d6ca5a4 Interrupt cleanup 2018-03-20 14:11:21 +01:00
cbcc67fc31 Quick and dirty IDT setup 2018-03-20 14:11:21 +01:00
e4e891bb86 Clean up interface 2018-03-20 14:11:21 +01:00
79ca4681ff Make tests independent of structures in header files 2018-03-20 14:11:21 +01:00
9dbbc7013c Use debug macros 2018-03-20 14:11:21 +01:00
497bdef9f4 Debug print some of the multiboot data 2018-03-20 14:11:21 +01:00
49f7738be2 Parse multiboot information 2018-03-20 14:11:21 +01:00
9e2483d78e Halt-And-Catch-Fire macro 2018-03-20 14:11:21 +01:00
042f61bdb3 Add padding to field width (right adjust) 2018-03-20 14:11:21 +01:00
0659cf73f6 Some more debug macros 2018-03-20 14:11:21 +01:00
572bee19cc Add ability to disable debug printing and gdb symbols 2018-03-20 14:11:21 +01:00
4f00d428bf Writing (debug output) to screen 2018-03-20 14:11:21 +01:00
034a870ac7 Sending data (debug printing) to serial port 2018-03-20 14:11:21 +01:00
d05ddfeab4 Debug printing functions 2018-03-20 14:11:21 +01:00
8e47d7625f Don't set fs and gs. 2018-03-20 14:10:03 +01:00
950de8645c Update GDT pointer after unmapping GDT 2018-03-20 14:10:03 +01:00
b5e0d749b8 Reload cr3 after updating P4 2018-03-20 14:10:03 +01:00
83f81b9a74 Cleaning up and commenting 2018-03-20 14:10:03 +01:00
ab1a471857 Call a c function. 2018-03-20 14:10:03 +01:00
0a4b5ebd51 Update the stack pointer and remove identity mapping 2018-03-20 14:10:03 +01:00
663668ff93 Move the kernel to high memory 2018-03-20 14:10:03 +01:00
646d25825a Don't use huge pages, for simplicity 2018-03-20 14:01:26 +01:00
99ecff44d8 Save one byte! 2018-03-19 20:29:40 +01:00
3122de1666 Remove cpuid and longmode checks. Let's assume we have a modern processor 2018-03-19 20:29:40 +01:00
3d380f462b Use 2 Mb translation instead of 1 Gb 2018-03-19 20:29:40 +01:00
78dc192a16 Don't load fs and gs. They have special meaning in long mode. 2018-03-19 20:29:40 +01:00
bb25b7ea35 Change comment style, and more commenting 2018-03-19 20:29:40 +01:00
4f9a4292e5 Some simplification and commenting 2018-03-19 20:29:40 +01:00
93d60294ba Move include files 2018-03-19 20:29:40 +01:00
5ddf0173c2 Remove magic numbers. Also, no code segment - not needed. 2018-03-19 20:29:40 +01:00
dd7636e906 Simplest possible long-mode entry 2018-03-19 20:29:40 +01:00
eb637d0bbb Move stack to .bss and use it for function calls as well 2018-03-19 20:29:40 +01:00
dd565454e3 Check if long mode is available 2018-03-19 20:29:40 +01:00
607266bfd3 Clean up interface 2018-03-19 20:29:40 +01:00
2451851b9f Remove Multiboot1 support 2018-03-19 20:29:40 +01:00
bc8f16e270 Also simplify the kernel code as much as possible. 2018-03-19 20:29:40 +01:00
ca36e0ad0e Indicate multiboot version on boot 2018-03-19 20:29:40 +01:00
a44d0d7500 Move Multiboot headers to separate file 2018-03-19 20:29:40 +01:00
dda15ea889 Save eax after boot, so we can check that we're actually loaded via
multiboot
2018-03-19 20:29:40 +01:00
d80e87991e A bit of cleanup 2018-03-19 20:29:40 +01:00
fef9a11d16 Use either multiboot1 or multiboot2 2018-03-19 20:29:40 +01:00
39b43d825a Building a multiboot 1 compatible executable 2018-03-19 20:29:39 +01:00