Add first user program hello_world.rs

This commit is contained in:
Yifan Wu 2020-11-18 14:48:13 +08:00
parent d2c0be3dd0
commit a97d4e82a5
79 changed files with 343 additions and 0 deletions

20
user/src/syscall.rs Normal file
View file

@ -0,0 +1,20 @@
pub const STDOUT: usize = 1;
const SYSCALL_WRITE: usize = 64;
fn syscall(id: usize, args: [usize; 3]) -> isize {
let mut ret: isize;
unsafe {
llvm_asm!("ecall"
: "={x10}" (ret)
: "{x10}" (args[0]), "{x11}" (args[1]), "{x12}" (args[2]), "{x17}" (id)
: "memory"
: "volatile"
);
}
ret
}
pub fn sys_write(fd: usize, buffer: &[u8]) -> isize {
syscall(SYSCALL_WRITE, [fd, buffer.as_ptr() as usize, buffer.len()])
}