Jump to rust successfully
Yay! :D
This commit is contained in:
7
rust_experiments/Cargo.toml
Normal file
7
rust_experiments/Cargo.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "rust_kernel"
|
||||
version = "0.1.0"
|
||||
authors = ["yo"]
|
||||
|
||||
[lib]
|
||||
crate-type = ["staticlib"]
|
||||
@@ -1,14 +1,17 @@
|
||||
|
||||
arch ?= x86-64
|
||||
rust_target := x86_64-unknown-linux-gnu
|
||||
|
||||
linker_script := src/linker.ld
|
||||
grub_cfg := src/grub.cfg
|
||||
kernel := kernel.bin
|
||||
iso := os.iso
|
||||
|
||||
|
||||
asm_source := $(wildcard src/*.asm)
|
||||
asm_object := $(patsubst src/%.asm, \
|
||||
%.o, $(asm_source))
|
||||
rust_object := target/$(rust_target)/debug/librust_kernel.a
|
||||
|
||||
.PHONY: all clean run iso
|
||||
|
||||
@@ -23,8 +26,11 @@ $(iso): $(kernel) $(grub_cfg)
|
||||
@cp $(grub_cfg) isofiles/boot/grub
|
||||
@grub-mkrescue -o $(iso) isofiles 2> /dev/null
|
||||
|
||||
$(kernel): $(asm_object) $(linker_script)
|
||||
@ld -n -T $(linker_script) -o $(kernel) $(asm_object)
|
||||
cargo:
|
||||
@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
|
||||
@nasm -f elf64 $< -o $@
|
||||
@@ -34,3 +40,4 @@ clean:
|
||||
@rm -f *.o
|
||||
@rm -f kernel.bin
|
||||
@rm -f os.iso
|
||||
@cargo clean
|
||||
|
||||
12
rust_experiments/src/lib.rs
Normal file
12
rust_experiments/src/lib.rs
Normal 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 {}}
|
||||
@@ -5,6 +5,8 @@ bits 64
|
||||
|
||||
long_mode_start:
|
||||
; print "OKAY"
|
||||
extern rust_main
|
||||
call rust_main
|
||||
mov rax, 0x2f59_2f41_2f4b_2f4f
|
||||
mov qword [0xb8000], rax
|
||||
hlt
|
||||
|
||||
Reference in New Issue
Block a user