Philipp Oppermann
51f83717d6
Use Frame::containing_address
2015-12-09 15:38:46 +01:00
Philipp Oppermann
7e5da6c897
Modify pointed_frame to return an Option
2015-12-09 15:38:46 +01:00
Philipp Oppermann
6535aa017d
Add lock module (name is temporary)
2015-12-09 15:38:46 +01:00
Philipp Oppermann
6c5b932fbc
Split translate into translate_page and rest
2015-12-09 15:38:46 +01:00
Philipp Oppermann
44fd5f682d
Some new test printlns
2015-12-09 15:38:46 +01:00
Philipp Oppermann
a8df7b2e4d
Finish basics of new paging module
2015-12-09 15:38:46 +01:00
Philipp Oppermann
562221d725
Add some unstable features and some printing tests
2015-12-09 15:38:46 +01:00
Philipp Oppermann
b7debed3b7
Increase stack size to 4096*2
2015-12-09 15:38:46 +01:00
Philipp Oppermann
c7fe1348f0
Old attempts for a new design
2015-12-09 15:38:46 +01:00
Philipp Oppermann
ace53fad91
Updates for the old paging code
2015-12-09 15:38:46 +01:00
Philipp Oppermann
ae49ab5072
Add alternative paging module with new design
2015-12-09 15:38:45 +01:00
Philipp Oppermann
540c398ec3
Alternative, more advanced design
2015-12-09 15:38:45 +01:00
Philipp Oppermann
907f51bb5b
Add section about modifying table entries
2015-12-09 15:38:45 +01:00
Philipp Oppermann
882af6f14e
Make p{1,2,3}_table functions unsafe
2015-12-09 15:38:45 +01:00
Philipp Oppermann
6462a3263c
Add basic module and corresponding documentation
2015-12-09 15:38:33 +01:00
Philipp Oppermann
6b72dd8223
Remove Lock structure again as we changed design
2015-12-08 22:20:19 +01:00
Philipp Oppermann
f917bd67a1
Begin paging module
2015-12-08 22:20:19 +01:00
Philipp Oppermann
0e574426c5
Add recursive mapping and start describing it
2015-12-08 22:20:19 +01:00
Philipp Oppermann
a8600a00b6
Don't derive Copy/Clone for Frame so we can be sure that it's free
...
If a Frame would be clonable or even Copy, the frame could be freed (e.g. passed to deallocate_frame) and used thereafter. Or it could be freed multiple times.
2015-11-19 19:56:22 +01:00
Philipp Oppermann
88eb0636f3
Don't set write protect bit as we don't need it now
2015-11-19 15:26:58 +01:00
Philipp Oppermann
a8580ad3a2
Fix: next_free_frame must be increased to the start of the current area
2015-11-15 12:00:03 +01:00
Philipp Oppermann
16078431db
Add basic description for frame allocator methods
2015-11-15 12:00:03 +01:00
Philipp Oppermann
8304439c82
Add a FrameAllocator trait
2015-11-15 12:00:03 +01:00
Philipp Oppermann
75988f1324
Test: allocate all frames
2015-11-15 12:00:03 +01:00
Philipp Oppermann
a2047bc70a
Add an AreaFrameAllocator
2015-11-15 12:00:03 +01:00
Philipp Oppermann
6f8a21eba6
Create a memory module with a Frame struct
2015-11-15 12:00:03 +01:00
Philipp Oppermann
ccaa2ed645
Add section about start and end of kernel/multiboot
2015-11-15 12:00:03 +01:00
Philipp Oppermann
718db100cd
Add let bindings for tags
2015-11-15 12:00:03 +01:00
Philipp Oppermann
f2b91d3d61
Improve panic handler
2015-11-15 12:00:03 +01:00
Philipp Oppermann
fc389c9e9e
Increase stack size to 4096
2015-11-15 12:00:03 +01:00
Philipp Oppermann
895d40cd13
Add section about kernel elf sections
2015-11-15 12:00:03 +01:00
Philipp Oppermann
33fdbce530
Print available memory areas using multiboot info
2015-11-15 12:00:03 +01:00
Philipp Oppermann
73aa41e25e
Pass multiboot pointer as argument to rust_main
2015-11-15 12:00:03 +01:00
Philipp Oppermann
fa78bd82a8
Add missing license header
2015-11-03 19:53:28 +01:00
Philipp Oppermann
8789fa8531
Use unsigned mul instead of signed imul
2015-10-31 13:48:58 +01:00
Philipp Oppermann
2a35ec19b6
Use 2MiB pages instead of one 1GiB page
2015-10-29 17:47:21 +01:00
Philipp Oppermann
e439e9eb5d
Use a byte char instead of casting
2015-10-27 20:48:14 +01:00
Philipp Oppermann
c36a3d19d2
Add and use a clear_screen function
2015-10-27 20:47:58 +01:00
Philipp Oppermann
7b0428b07a
Rename multiboot section to multiboot_header
2015-10-27 18:42:28 +01:00
Philipp Oppermann
5e5374cd7d
Update grub.cfg to use renamed kernel file
...
Renaming occurred in 37b576e to be in line with the blog posts.
2015-10-26 16:54:45 +01:00
Philipp Oppermann
34dd42a6fc
Add #[repr(C)] to ScreenChar
2015-10-25 15:38:08 +01:00
Philipp Oppermann
f670e330f5
Fix long mode test ( fixes #6 )
2015-10-25 01:49:42 +02:00
Philipp Oppermann
a39a611629
Wording: replace check with test
2015-10-25 01:48:57 +02:00
Philipp Oppermann
5b1f2361f2
Use println! to print the `Hello World!
2015-10-23 01:45:10 +02:00
Philipp Oppermann
4d29482952
Add custom print and println macros
2015-10-23 01:45:10 +02:00
Philipp Oppermann
e4a8c4c9fa
Silence dead code warnings for unused colors
2015-10-23 01:45:10 +02:00
Philipp Oppermann
c547b128e5
Implement fmt::Write trait for Writer
2015-10-23 01:45:10 +02:00
Philipp Oppermann
4668acb09e
Add a public static writer
...
Since `unsafe const` aren't allowed yet, we temorary add a custom version of Unique to make `Unique::new` const (instead of unsafe).
2015-10-23 01:45:10 +02:00
Philipp Oppermann
ab464b107d
Add a basic writer type to print single bytes
...
It prints always to the last line and shifts lines up on newline or line wrap. To easily shift lines up, we make the ColorCode and ScreenChar types Copy.
2015-10-23 01:45:10 +02:00
Philipp Oppermann
49fd8926a5
Add a VGA buffer module skeleton
...
It contains basic types for colors, screen characters, and the buffer itself.
2015-10-23 01:45:10 +02:00