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
Philipp Oppermann
5bcd6d2c2d
Improve Hello World! code
...
Avoid special core features and complicated iterator chaining to make the code simpler overall.
2015-10-03 17:38:41 +02:00
Philipp Oppermann
9c4d057e3d
Don't implement lang items on testing
...
The `std` library is imported on testing. It already implements all lang items.
2015-09-15 14:51:38 +02:00
Philipp Oppermann
5db8977495
Rename main to rust_main to support testing
...
On testing, `std` is imported, which defines an own `main` function. Thus `cargo test` fails if there alread exists one non-mangled main.
2015-09-15 14:51:07 +02:00
Philipp Oppermann
3030b1c862
Print Hello World!
2015-08-25 14:54:06 +02:00
Philipp Oppermann
03a46b4141
Print OS returned! instead of OKAY
2015-08-25 14:54:06 +02:00
Philipp Oppermann
e09ae042a3
Setup SSE because rust needs it
2015-08-25 14:54:06 +02:00
Philipp Oppermann
c65797d89f
Add an 64-bit error function
2015-08-25 14:54:06 +02:00
Philipp Oppermann
fcf69dcc53
Remove unused sections to avoid float issues
...
Avoids a linker error for `fmod` and `fmodf`. These functions are refenced in libcore. The KEEP ensures that the Multiboot section isn't removed.
2015-08-25 14:54:06 +02:00
Philipp Oppermann
4c793e6dd9
Add rlibc dependency for memset, memcpy, etc.
2015-08-25 14:54:06 +02:00
Philipp Oppermann
3c08203437
Call rust main function
2015-08-25 14:54:06 +02:00
Philipp Oppermann
66cc22608c
Add a rust project
2015-08-25 14:54:06 +02:00
Philipp Oppermann
7e898e6a4c
Reload selector registers and print OKAY
2015-08-25 14:54:06 +02:00
Philipp Oppermann
9c4b8fef9d
Add and load a 64-bit GDT
2015-08-25 14:54:06 +02:00
Philipp Oppermann
457a61341a
Enable paging
2015-08-25 14:54:06 +02:00
Philipp Oppermann
b47699685f
Add and setup a P4 and a P3 table
2015-08-25 14:54:06 +02:00
Philipp Oppermann
bd11ed9a6f
Check for Multiboot, CPUID, and Long Mode
2015-08-25 14:54:06 +02:00
Philipp Oppermann
49f8c3c810
Add a small stack
2015-08-25 14:54:06 +02:00
Philipp Oppermann
d474c8fa7f
Add error function
2015-08-25 14:54:06 +02:00
Philipp Oppermann
0c44988b4f
Add grub config for iso creation
2015-08-13 12:48:17 +02:00
Philipp Oppermann
2c529d0060
Add a basic linker script
...
Ensures that the multiboot header is early in the executable.
2015-08-13 12:48:17 +02:00
Philipp Oppermann
3f530b3e83
Add basic boot code
...
It just prints a green `OK` to the screen and hangs.
2015-08-13 12:48:17 +02:00
Philipp Oppermann
cd12dc0427
Add multiboot 2 header file
2015-08-10 12:56:36 +02:00