Justin C. Miller
cef0a71bce
Use uintptr_t instead of addr_t
...
They're never actually going to change independently, and it's also
brining in kutil headers more places than they should be.
2018-09-20 09:37:30 -07:00
Justin C. Miller
5e6769036c
APIC timer calibration
...
Now the APIC timer is calibrated against the PIT, and the interval for
timer_enable takes a number of microseconds instead of raw ticks and a
divisor.
2018-09-16 18:56:01 -07:00
Justin C. Miller
1308864061
MSR and syscall changes
...
- Moved MSR code to separate files with an enum class
- Implemented syscall_enable in C++ using new MSR calls
2018-09-15 00:37:49 -07:00
Justin C. Miller
5808599005
Getting rid of 'boogity!'.. end of an era.
...
Since I'm doing a lot of work on task scheduling, 'boogity!' simply
isn't the "we're all good and we're done!" message that it used to be.
2018-09-12 20:51:50 -07:00
Justin C. Miller
593cda3ee8
Convert page_block to use kutil::linked_list
...
- Created a new linked_list-based slab allocator
- Simplified memory bootstrap code by using the slab allocator and
linked_lists
2018-09-11 20:46:48 -07:00
Justin C. Miller
e7a509176d
Move makerd to TOML-based manifest
...
Added the cpptoml library (and license), and moved to using that for
the initrd manifest. It's now possible to specify the `executable`
flag for files, and the kernel correctly only launches new processes
for the initrd files marked `executable`.
2018-09-08 12:54:35 -07:00
Justin C. Miller
585abe9a18
Simple ELF program loader
...
Now any initrd file is treated like a program image and passed to the
loader to load as a process. Very rudimentary elf loading just allocates
pages, copies sections, and sets the ELF's entrypoint as the RIP to
iretq to.
2018-09-06 01:35:56 -07:00
Justin C. Miller
1758ee4215
Initial ramdisk support
...
- Create initrd library to support definitions and loading
- Allow tools compiled for the host machine to be built by wscript
- Create makerd tool to build initrd from manifest
- Move screenfont to initrd, so don't load framebuffer initially
2018-09-05 22:45:30 -07:00
Justin C. Miller
d5b8902d8f
Moving the rest (except ACPI tables) to high mem
...
Also the debug messaging to verify it.
2018-09-03 15:15:19 -07:00
Justin C. Miller
799fbbdd10
_Actually_ move the kernel to the last TiB.
...
More work on process page tables, including only mapping the last 2 pml4
entries (the highest 1TiB of the address space, ie, kernel space) into a
new table.
Includes the work of actually moving the kernel there, which I had
apparently done in name only previously. Oops.
2018-09-01 14:54:12 -07:00
Justin C. Miller
cd09c17d71
Commented out CPUID log messages, they're never differnet under qemu
2018-08-27 06:41:09 -07:00
Justin C. Miller
24ccf65aba
WIP ring3
2018-05-21 09:07:52 -07:00
Justin C. Miller
bfaab294e6
Set up initial task switching (ring0 only)
2018-05-21 09:07:52 -07:00
Justin C. Miller
4005e9e791
Split gdt.* from interrupts.*
2018-05-21 09:07:52 -07:00
Justin C. Miller
0d75cc999c
Add GPT partition handling as virtual block devices
2018-05-16 10:14:40 -07:00
Justin C. Miller
93e60cc136
Give kassert its own vector instead of DBZ
2018-05-15 21:38:44 -07:00
Justin C. Miller
716109bab5
Add block device management to device manager
2018-05-12 20:27:46 -07:00
Justin C. Miller
0684fcf7e9
Separate read function into blocking and async portions
2018-05-12 20:16:25 -07:00
Justin C. Miller
289104cde0
Enable AHCI interrupts.
...
* Implement MSI style interrupts
* Move interrupt handling to device_manager for IRQs
* Give device_manager the ability to allocate IRQs
* Move achi::port to an interrupt-based scheme
2018-05-12 18:38:47 -07:00
Justin C. Miller
b389e75d33
Move PCI classes to separate files
2018-05-09 01:21:30 -07:00
Justin C. Miller
9128bfc5f1
Switch to clang and improve cpprt
2018-05-09 01:17:18 -07:00
Justin C. Miller
0f54630725
Move memory_manager and assert into kutil.
2018-05-08 01:11:03 -07:00
Justin C. Miller
ff3bd640f0
Add simple vector implementation to kutil for device_manager
2018-05-07 09:47:34 -07:00
Justin C. Miller
abb347e1a8
Implement free() to finish buddy allocator
2018-05-07 00:59:45 -07:00
Justin C. Miller
cce892e92f
Load ELF file by sections to get addresses right
2018-05-06 22:03:44 -07:00
Justin C. Miller
20edb87505
Move block list dump to separate method in page manager
2018-05-06 01:37:39 -07:00
Justin C. Miller
34156c55ae
Add simple stack trace to exception handler
2018-05-05 17:12:02 -07:00
Justin C. Miller
569bc243f1
Fix bug in log::enable
2018-05-05 15:33:56 -07:00
Justin C. Miller
d7506b6aaf
Rename intr log to apic, remove debug defaults
2018-05-05 11:02:41 -07:00
Justin C. Miller
33012f35ef
Re-integrate framebuffer console
2018-05-03 22:01:33 -07:00
Justin C. Miller
d9fe457b44
Add beginning basic serial driver
2018-05-03 00:08:22 -07:00
Justin C. Miller
59700b07db
Add initial IO APIC support
...
- IO APIC vector mapping
- Legacy PIC disable
- Real interrupts happening
2018-05-02 16:46:37 -07:00
Justin C. Miller
428e4563d0
Add initial classes representing APIC
2018-05-01 01:03:19 -07:00
Justin C. Miller
2d4e7cfdee
Check CPUID info, switch cpu flag to Broadwell
2018-04-30 08:25:35 -07:00
Justin C. Miller
a845fee689
Remove test kalloc from main
2018-04-29 18:09:19 -07:00
Justin C. Miller
b3e49590a7
Add logging framework
2018-04-28 19:18:53 -07:00
Justin C. Miller
358837ed69
Implement first-pass simple virtual memory manager
2018-04-28 02:17:17 -07:00
Justin C. Miller
25b9625635
paging finally works
2018-04-25 19:53:22 -07:00
Justin C. Miller
bed882f41c
Enable paging WIP
2018-04-25 10:48:14 -07:00
Justin C. Miller
94de87ef86
Refactor screen ouput from main console code
2018-04-24 09:32:57 -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
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
e8866abc7a
Bootstrap in-kernel memory management
2018-04-20 02:15:56 -07:00
Justin C. Miller
2050b89334
Move src/modules/main -> src/kernel
2018-04-17 09:45:05 -07:00