Commit Graph

47 Commits

Author SHA1 Message Date
Philipp Oppermann
d790fc20e5 Add an allocator 2015-10-09 17:52:00 +02:00
Philipp Oppermann
97a0da1bb9 Add spinlock dependency 2015-10-09 17:50:43 +02:00
Philipp Oppermann
3b762cafe0 Add unmap assertion 2015-10-09 15:16:36 +02:00
Philipp Oppermann
51949e80eb Remove old paging code 2015-10-09 15:14:22 +02:00
Philipp Oppermann
430181b9d7 Fix frame stack filling 2015-10-09 15:13:51 +02:00
Philipp Oppermann
bb593c2f63 WIP 2015-10-08 19:18:23 +02:00
Philipp Oppermann
f59b6c03d6 Print panic message 2015-10-08 18:31:16 +02:00
Philipp Oppermann
abd6e48c08 Add a dynamic growing frame stack 2015-10-08 01:54:46 +02:00
Philipp Oppermann
10ddcead2d wip 2015-09-15 14:57:09 +02:00
Philipp Oppermann
d27d36fdd0 WIP: Add paging and section remapping code 2015-09-15 14:57:09 +02:00
Philipp Oppermann
8090c2a752 Page align all sections as they will be individually mapped 2015-09-15 14:57:09 +02:00
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