Jump to rust successfully

Yay! :D
This commit is contained in:
greg
2015-11-07 22:53:31 -08:00
parent 670e6828a5
commit 5566c1797b
4 changed files with 30 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
[package]
name = "rust_kernel"
version = "0.1.0"
authors = ["yo"]
[lib]
crate-type = ["staticlib"]

View File

@@ -1,14 +1,17 @@
arch ?= x86-64 arch ?= x86-64
rust_target := x86_64-unknown-linux-gnu
linker_script := src/linker.ld linker_script := src/linker.ld
grub_cfg := src/grub.cfg grub_cfg := src/grub.cfg
kernel := kernel.bin kernel := kernel.bin
iso := os.iso iso := os.iso
asm_source := $(wildcard src/*.asm) asm_source := $(wildcard src/*.asm)
asm_object := $(patsubst src/%.asm, \ asm_object := $(patsubst src/%.asm, \
%.o, $(asm_source)) %.o, $(asm_source))
rust_object := target/$(rust_target)/debug/librust_kernel.a
.PHONY: all clean run iso .PHONY: all clean run iso
@@ -23,8 +26,11 @@ $(iso): $(kernel) $(grub_cfg)
@cp $(grub_cfg) isofiles/boot/grub @cp $(grub_cfg) isofiles/boot/grub
@grub-mkrescue -o $(iso) isofiles 2> /dev/null @grub-mkrescue -o $(iso) isofiles 2> /dev/null
$(kernel): $(asm_object) $(linker_script) cargo:
@ld -n -T $(linker_script) -o $(kernel) $(asm_object) @cargo build --target $(rust_target)
$(kernel): cargo $(rust_object) $(asm_object) $(linker_script)
@ld -n -T $(linker_script) -o $(kernel) $(asm_object) $(rust_object)
%.o: src/%.asm %.o: src/%.asm
@nasm -f elf64 $< -o $@ @nasm -f elf64 $< -o $@
@@ -34,3 +40,4 @@ clean:
@rm -f *.o @rm -f *.o
@rm -f kernel.bin @rm -f kernel.bin
@rm -f os.iso @rm -f os.iso
@cargo clean

View File

@@ -0,0 +1,12 @@
#![feature(no_std, lang_items)]
#![no_std]
#[no_mangle]
pub extern fn rust_main() {}
#[lang = "eh_personality"]
extern fn eh_personality() {}
#[lang = "panic_fmt"]
extern fn panic_fmt() -> ! { loop {}}

View File

@@ -5,6 +5,8 @@ bits 64
long_mode_start: long_mode_start:
; print "OKAY" ; print "OKAY"
extern rust_main
call rust_main
mov rax, 0x2f59_2f41_2f4b_2f4f mov rax, 0x2f59_2f41_2f4b_2f4f
mov qword [0xb8000], rax mov qword [0xb8000], rax
hlt hlt