Commit Graph

36 Commits

Author SHA1 Message Date
Philipp Oppermann
95d6d30c29 Merge multiboot section to .text section
All sections must be page aligned to set the right privileges, so we would many padding bytes otherwise.
2015-09-15 14:57:08 +02:00
Philipp Oppermann
23e8270a60 Enable the no-execute feature in page tables 2015-09-15 14:57:08 +02:00
Philipp Oppermann
2655ac093c wip 2015-09-15 14:57:08 +02:00
Philipp Oppermann
812396d473 Add bitflags macro 2015-09-15 14:57:08 +02:00
Philipp Oppermann
7391a7a9eb [unfinished] Add Multiboot 2 crate and load Multiboot structure
Conflicts:
	Cargo.toml
	src/lib.rs

Conflicts:
	Cargo.toml
2015-09-15 14:57:08 +02:00
Philipp Oppermann
6713e55073 Pass Multiboot structure pointer as argument 2015-09-15 14:57:08 +02:00
Philipp Oppermann
88455c3f85 use vga buffer module for test output 2015-09-15 14:56:31 +02:00
Philipp Oppermann
a06577c685 add VGA text buffer module 2015-09-15 14:56:31 +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