Philipp Oppermann
9cd9ec25db
Merge pull request #5 from phil-opp/rust-target
...
Specify rust target
2015-10-24 16:25:50 +02:00
Philipp Oppermann
3d94304bbb
Specify rust target
2015-10-24 16:20:46 +02:00
Philipp Oppermann
95028c0f5d
Merge pull request #3 from phil-opp/vga_buffer
...
Add a VGA buffer module
2015-10-23 12:47:44 +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
3e7fd1b433
Merge pull request #4 from phil-opp/better_hello_world
...
Improve `Hello World!` code
2015-10-03 17:40:14 +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
893d720ae8
Merge pull request #1 from phil-opp/cargo_test_support
...
Fix testing
2015-09-15 14:54:58 +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
c6223ed48f
Omit unwinding landing pads (we don't support panics atm)
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
d9ce36be11
Compile rust project in Makefile
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
4b3a10f6f3
Ignore the build directory
2015-08-25 14:54:06 +02:00
Philipp Oppermann
a97009dddf
Add a configuration file for travis CI
2015-08-25 14:54:05 +02:00
Philipp Oppermann
262e64f184
Add a Makefile
...
It provides `make` (builds the kernel), `make iso` (builds kernel+ISO), and `make run` (builds kernel+ISO and starts qemu). All assembly files from the arch subdirectories are compiled and linked. It also provides basic multi-architecture support through e.g. `make arch=mips iso`.
2015-08-13 12:48:17 +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
Philipp Oppermann
45babee90d
Initial commit
2015-08-10 12:56:16 +02:00