| asm!("push {lr}\n svc 0\n pop {lr}" : : : "memory", "lr" : "volatile"); |
| pub fn yieldk_for<F: Fn() -> bool>(cond: F) { |
| pub unsafe fn allow(major: u32, minor: u32, slice: &[u8]) -> isize { |
| asm!("svc 3" : "={r0}"(res) |
| : "{r0}"(major) "{r1}"(minor) "{r2}"(slice.as_ptr()) "{r3}"(slice.len()) |
| pub unsafe fn subscribe(major: u32, minor: u32, cb: extern fn(usize, usize, usize, usize), ud: usize) -> isize { |
| asm!("svc 1" : "={r0}"(res) |
| : "{r0}"(major) "{r1}"(minor) "{r2}"(cb) "{r3}"(ud) |
| pub unsafe fn command(major: u32, minor: u32, arg1: isize) -> isize { |
| asm!("svc 2" : "={r0}"(res) |
| : "{r0}"(major) "{r1}"(minor) "{r2}"(arg1) |
| pub unsafe fn memop(major: u32, arg1: usize) -> isize { |
| asm!("svc 4" : "={r0}"(res) |
| : "{r0}"(major) "{r1}"(arg1) |