forked from M-Labs/artiq
runtime: bump libfringe, impl ecall abi
See libfringe PR: M-Labs/libfringe#1
This commit is contained in:
parent
0a59c889de
commit
46326716fd
|
@ -163,9 +163,9 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "fringe"
|
||||
version = "1.2.1"
|
||||
source = "git+https://git.m-labs.hk/M-Labs/libfringe.git?rev=9748bb#9748bb8af86c131d45be1238ea4d5f965a974630"
|
||||
source = "git+https://git.m-labs.hk/M-Labs/libfringe.git?rev=3ecbe5#3ecbe53f7644b18ee46ebd5b2ca12c9cbceec43a"
|
||||
dependencies = [
|
||||
"libc 0.2.101",
|
||||
"libc 0.2.103",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -32,6 +32,6 @@ riscv = { version = "0.6.0", features = ["inline-asm"] }
|
|||
|
||||
[dependencies.fringe]
|
||||
git = "https://git.m-labs.hk/M-Labs/libfringe.git"
|
||||
rev = "9748bb"
|
||||
rev = "3ecbe5"
|
||||
default-features = false
|
||||
features = ["alloc"]
|
||||
|
|
|
@ -290,6 +290,18 @@ pub extern fn exception(regs: *const TrapFrame) {
|
|||
mcause::Trap::Interrupt(source) => {
|
||||
info!("Called interrupt with {:?}", source);
|
||||
},
|
||||
|
||||
mcause::Trap::Exception(mcause::Exception::UserEnvCall) => {
|
||||
unsafe {
|
||||
if (*regs).a7 == 0 {
|
||||
pmp::pop_pmp_region()
|
||||
} else {
|
||||
pmp::push_pmp_region((*regs).a7)
|
||||
}
|
||||
}
|
||||
mepc::write(pc + 4);
|
||||
},
|
||||
|
||||
mcause::Trap::Exception(e) => {
|
||||
println!("Trap frame: {:x?}", unsafe { *regs });
|
||||
|
||||
|
|
|
@ -61,7 +61,8 @@ impl Thread {
|
|||
let spawned = io.spawned.clone();
|
||||
let sockets = io.sockets.clone();
|
||||
|
||||
let stack = OwnedStack::new(stack_size);
|
||||
// Add a 4k stack guard to the stack of any new threads
|
||||
let stack = OwnedStack::new(stack_size + 4096);
|
||||
ThreadHandle::new(Thread {
|
||||
generator: Generator::unsafe_new(stack, |yielder, _| {
|
||||
f(Io {
|
||||
|
|
Loading…
Reference in New Issue