Implement __mulsi3.
This commit is contained in:
parent
52a6a4d708
commit
6dcbd85f11
@ -58,6 +58,9 @@ pub mod arm;
|
||||
#[cfg(all(kernel_user_helpers, target_os = "linux", target_arch = "arm"))]
|
||||
pub mod arm_linux;
|
||||
|
||||
#[cfg(any(target_arch = "riscv32"))]
|
||||
pub mod riscv32;
|
||||
|
||||
#[cfg(target_arch = "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