commit
5a7b58ffd7
@ -58,6 +58,9 @@ pub mod arm;
|
|||||||
#[cfg(all(kernel_user_helpers, target_os = "linux", target_arch = "arm"))]
|
#[cfg(all(kernel_user_helpers, target_os = "linux", target_arch = "arm"))]
|
||||||
pub mod arm_linux;
|
pub mod arm_linux;
|
||||||
|
|
||||||
|
#[cfg(any(target_arch = "riscv32"))]
|
||||||
|
pub mod riscv32;
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
pub mod x86;
|
pub mod x86;
|
||||||
|
|
||||||
|
17
src/riscv32.rs
Normal file
17
src/riscv32.rs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
intrinsics! {
|
||||||
|
// Implementation from gcc
|
||||||
|
// https://raw.githubusercontent.com/gcc-mirror/gcc/master/libgcc/config/epiphany/mulsi3.c
|
||||||
|
pub extern "C" fn __mulsi3(mut a: u32, mut b: u32) -> u32 {
|
||||||
|
let mut r: usize = 0;
|
||||||
|
|
||||||
|
while a > 0 {
|
||||||
|
if a & 1 > 0 {
|
||||||
|
r += b;
|
||||||
|
}
|
||||||
|
a >>= 1;
|
||||||
|
b <<= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
r
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user