Commit Graph

195 Commits

Author SHA1 Message Date
287c4ab060 Run clang-format 2022-12-07 16:11:59 +00:00
bbfaa4645a Add a should_invoke_scheduler method 2022-12-07 16:11:59 +00:00
1badc40a4a
Run include-what-you-use everywhere 2022-12-07 11:40:02 +01:00
8ff9cb4b96
x86_64: Add a friendlier handler for page faults
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-05 21:02:21 +01:00
762131a425
Make more constexpr 2022-12-05 16:43:52 +01:00
2eaa458555
Remove release_value call 2022-12-05 16:41:39 +01:00
1e3706ac01
Make ARCH_PAGE_SIZE and ARCH_TIMER_FREQ known at compile-time 2022-12-05 16:36:41 +01:00
4f183958e3
General constness + [[gnu::packed]] everywhere 2022-12-05 16:13:38 +01:00
58ecf11424
Make all refs to the bootboot structure const 2022-12-05 13:04:01 +01:00
c7ab6bc2d3
Reorganize the luna/ directory so that headers aren't in the top level include path 2022-12-04 12:42:43 +01:00
bed29e71af
Replace some uses of check() with expect() 2022-12-04 12:25:16 +01:00
985d45ddfb Switch to logging functions everywhere 2022-11-30 17:16:36 +01:00
d2856d8812 Provide meaningful error numbers 2022-11-30 17:13:59 +01:00
29dad5651d Move __check_failed to Log.cpp so it can be logged across all backends 2022-11-30 17:12:06 +01:00
1ed51d11cb Do not push unused values 2022-11-23 19:37:25 +01:00
82893fa3a4 Introduce a kernel_yield function to use once a scheduler is implemented 2022-11-23 19:34:04 +01:00
7230eceb4d x86_64/Timer: Show explanatory message on static assertion fail 2022-11-23 18:58:39 +01:00
88f588a0c5 Make ARCH_TIMER_FREQ less frequent so it is more accurate (I hope) 2022-11-23 18:00:09 +01:00
43e26e583c Calculate the boot timestamp in UNIX time for further usage 2022-11-20 18:30:40 +01:00
d96cb73995 Rename physical "pages" to "frames"
AFAIK, this is the proper naming scheme. "Pages" are virtual, and "frames" physical.
2022-11-19 22:27:08 +01:00
847f2b4f4c Replace more usage of stdint.h types with Luna's Types.h 2022-11-19 22:25:03 +01:00
83bcac7a16 Kernel: Introduce a timer interface 2022-11-19 20:01:01 +01:00
424b069d55 Kernel: Start the call stack with a null RBP on x86_64 2022-11-19 18:38:32 +01:00
70c6b78e35 Organize source tree 2022-11-19 17:59:49 +01:00
8cae20a82c Move __check_failed out of line so anyone can implement it 2022-11-19 17:20:10 +01:00
b8c136eeb4 Make a common header for attribute shorthands 2022-11-19 17:18:51 +01:00
648bd3fb61 Switch format.h to use Result 2022-11-19 16:13:25 +01:00
31673c0ac9 Introduce format attribute 2022-11-19 15:53:58 +01:00
603ff46d8c Add a format implementation 2022-11-19 12:30:36 +01:00
762ca844d8 Add CPU::platform_string 2022-11-18 21:04:53 +01:00
109de54822 Provide stubbed handlers for many more x86 exceptions
I am now officially a big-boy OS developer, I read the Intel manuals for this!! (Not that the OSDev wiki doesn't have the information, but it was missing descriptions for some more obscure exceptions)
2022-11-18 20:51:25 +01:00
9d318d50aa Use TRY in MMU.cpp 2022-11-16 20:37:41 +01:00
2c9329928c Replace page_size (function) with ARCH_PAGE_SIZE (constant) 2022-11-16 20:37:32 +01:00
30ac95bcf8 Use usize/isize instead of (s)size_t
Since we're using Rust-style integer types already, why not go all in?
2022-11-16 20:30:34 +01:00
7f15ba0ac5 Add some interrupt handling 2022-11-16 17:37:18 +01:00
df8666fd73 Remove unneeded label 2022-11-15 20:47:50 +01:00
bb46cd890b Add GDT and IDT setup and loading + NX if supported 2022-11-15 20:41:59 +01:00
c319336e3d Add a CPU interface 2022-11-15 19:10:32 +01:00
e16324887f MMU: Properly clear flags 2022-11-15 19:10:19 +01:00
ae235e5538 MMU: unmap and remap for x86_64 2022-11-13 16:51:21 +01:00
ba1bf72e1b Remove unused include 2022-11-13 16:32:28 +01:00
d6c56fb512 Mapping finally works!! 2022-11-13 16:31:32 +01:00
4c4f72b865 More MMU stuff, but writing still fails 2022-11-13 15:33:53 +01:00
705c2747de Add memory manager 2022-11-13 14:29:15 +01:00
82c2381ac9 Serial printing!! 2022-11-13 10:30:10 +01:00