Skip to content

Commit 47138b8

Browse files
committed
Fix memset arguments for MSP430 target.
On MSP430 second argument to memset has i16 type instead of i32.
1 parent 568df8f commit 47138b8

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/mem.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ pub unsafe extern "C" fn memmove(dest: *mut u8,
3535
}
3636

3737
#[no_mangle]
38+
#[cfg(not(target_pointer_width = "16"))]
3839
pub unsafe extern "C" fn memset(s: *mut u8, c: i32, n: usize) -> *mut u8 {
3940
let mut i = 0;
4041
while i < n {
@@ -44,6 +45,17 @@ pub unsafe extern "C" fn memset(s: *mut u8, c: i32, n: usize) -> *mut u8 {
4445
s
4546
}
4647

48+
#[no_mangle]
49+
#[cfg(target_pointer_width = "16")]
50+
pub unsafe extern "C" fn memset(s: *mut u8, c: i16, n: usize) -> *mut u8 {
51+
let mut i = 0;
52+
while i < n {
53+
*s.offset(i as isize) = c as u8;
54+
i += 1;
55+
}
56+
s
57+
}
58+
4759
#[no_mangle]
4860
pub unsafe extern "C" fn memcmp(s1: *const u8, s2: *const u8, n: usize) -> i32 {
4961
let mut i = 0;

0 commit comments

Comments
 (0)