Adds justfile to build everything
This commit is contained in:
@@ -6,4 +6,4 @@ build-std = ["core", "compiler_builtins", "alloc"]
|
|||||||
build-std-features = ["compiler-builtins-mem"]
|
build-std-features = ["compiler-builtins-mem"]
|
||||||
|
|
||||||
[target.riscv64]
|
[target.riscv64]
|
||||||
runner = "qemu-system-riscv64 -machine virt -device bochs-display -bios none -m 512M -device loader,file=/home/julien/ensimag/TPs/kernel/disk.img,addr=0x90000000 -s -S -kernel"
|
runner = "qemu-system-riscv64 -machine virt -device bochs-display -bios none -m 512M -device loader,file=/home/julien/ensimag/TPs/kernel/disk.img,addr=0x90000000 -kernel"
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,7 +1,7 @@
|
|||||||
.helix
|
.helix
|
||||||
|
|
||||||
**/target
|
**/target
|
||||||
Cargo.lock
|
**/Cargo.lock
|
||||||
|
|
||||||
disk.img
|
disk.img
|
||||||
out.mem
|
**/*.mem
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
cargo-features = ["profile-rustflags"]
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["kernel", "test_pic"]
|
members = ["kernel", "user/*"]
|
||||||
default-members = ["kernel"]
|
default-members = ["kernel"]
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#![no_std]
|
|
||||||
|
|
||||||
const MAGIC_NUMBER: usize = 0xBFF5;
|
|
||||||
3
crates/bffs/src/lib.rs
Normal file
3
crates/bffs/src/lib.rs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#![no_std]
|
||||||
|
|
||||||
|
// const MAGIC_NUMBER: usize = 0xBFF5;
|
||||||
20
justfile
Normal file
20
justfile
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
release := ""
|
||||||
|
cargo_flags := if release != "" { "--release" } else { "" }
|
||||||
|
|
||||||
|
default: run
|
||||||
|
|
||||||
|
build_user_prog prog:
|
||||||
|
cd {{ "user" / prog }} && \
|
||||||
|
RUSTFLAGS="-C relocation-model=pic" cargo b {{ cargo_flags }}
|
||||||
|
riscv64-elf-objcopy -O binary {{ "target/riscv64/debug" / prog }} {{ "user" / prog / prog + ".mem" }}
|
||||||
|
|
||||||
|
build: (map_dir "user" "build_user_prog")
|
||||||
|
cargo b {{ cargo_flags }}
|
||||||
|
|
||||||
|
run: build
|
||||||
|
cargo r {{ cargo_flags }} --bin kernel-rust
|
||||||
|
|
||||||
|
map_dir dir recipe:
|
||||||
|
@for file in `ls {{ dir }}`; do \
|
||||||
|
just cargo_flags={{ cargo_flags }} {{ recipe }} $file ; \
|
||||||
|
done
|
||||||
@@ -5,7 +5,7 @@ edition = "2024"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
embedded-alloc = "0.7"
|
embedded-alloc = "0.7"
|
||||||
kernel-macros = { path = "../kernel-macros" }
|
kernel-macros = { path = "../crates/kernel-macros" }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
critical-section = { version = "1", features = ["restore-state-bool"] }
|
critical-section = { version = "1", features = ["restore-state-bool"] }
|
||||||
bffs = { path = "../bffs" }
|
bffs = { path = "../crates/bffs" }
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ pub extern "C" fn supervisor_mode_entry() {
|
|||||||
init_log().unwrap();
|
init_log().unwrap();
|
||||||
Vga::init();
|
Vga::init();
|
||||||
scheduler_init();
|
scheduler_init();
|
||||||
// enable_supervisor_interrupt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
info!("Hello World !");
|
info!("Hello World !");
|
||||||
@@ -62,7 +61,7 @@ pub extern "C" fn supervisor_mode_entry() {
|
|||||||
create_process(test, "proc1");
|
create_process(test, "proc1");
|
||||||
create_process(proc2, "proc2");
|
create_process(proc2, "proc2");
|
||||||
|
|
||||||
// MemoryDisk::new();
|
MemoryDisk::test();
|
||||||
|
|
||||||
enable_supervisor_interrupt();
|
enable_supervisor_interrupt();
|
||||||
idle();
|
idle();
|
||||||
|
|||||||
@@ -2,12 +2,11 @@ use core::str;
|
|||||||
use log::info;
|
use log::info;
|
||||||
|
|
||||||
const DISK_ADDR: usize = 0x9000_0000;
|
const DISK_ADDR: usize = 0x9000_0000;
|
||||||
const DISK_SIZE: usize = 16 * 1024 * 1024; // 16MB
|
|
||||||
|
|
||||||
pub struct MemoryDisk {}
|
pub struct MemoryDisk {}
|
||||||
|
|
||||||
impl MemoryDisk {
|
impl MemoryDisk {
|
||||||
pub fn new() {
|
pub fn test() {
|
||||||
let test = unsafe { str::from_raw_parts(DISK_ADDR as *const u8, 13) };
|
let test = unsafe { str::from_raw_parts(DISK_ADDR as *const u8, 13) };
|
||||||
info!("{}", test);
|
info!("{}", test);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
use core::{arch::asm, time::Duration};
|
use core::time::Duration;
|
||||||
|
|
||||||
use log::info;
|
|
||||||
|
|
||||||
use crate::syscall::{sleep, write_int_temp, write_string_temp};
|
use crate::syscall::{sleep, write_int_temp, write_string_temp};
|
||||||
|
|
||||||
#[repr(align(32))]
|
#[repr(align(32))]
|
||||||
struct Alignement([u8; 132]);
|
struct Alignement([u8; 136]);
|
||||||
|
|
||||||
static PROG: Alignement = Alignement(*include_bytes!("../../out.mem"));
|
static PROG: Alignement = Alignement(*include_bytes!("../../user/test_pic/test_pic.mem"));
|
||||||
|
|
||||||
pub fn test() {
|
pub fn test() {
|
||||||
write_int_temp(PROG.0.as_ptr() as u64);
|
write_int_temp(PROG.0.as_ptr() as u64);
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
#![no_std]
|
#![no_std]
|
||||||
#![no_main]
|
#![no_main]
|
||||||
|
|
||||||
use core::arch::global_asm;
|
|
||||||
|
|
||||||
#[panic_handler]
|
#[panic_handler]
|
||||||
fn panic(_panic_info: &core::panic::PanicInfo) -> ! {
|
fn panic(_panic_info: &core::panic::PanicInfo) -> ! {
|
||||||
loop {}
|
loop {}
|
||||||
@@ -20,5 +18,4 @@ pub extern "C" fn entry() {
|
|||||||
clobber_abi("system")
|
clobber_abi("system")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
loop {}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user