P8000/WEGA/contrib/lcc/lib/libc/u8k/gen/memchr.s

34 lines
602 B
ArmAsm

//
// memchr - Returns a pointer to the first occurrence of character c in
// the first n characters of memory area s1, or NULL if c does
// not occur
//
// Input: s1 - memory area in which to conduct search
// c - character being sought
// n - maximum number of characters to search
//
// Output: pointer to character 'c' or NULL
//
.seg
sp := r15
SP := rr14
.psec
.code
_memchr::
{
ldm r2,|_stkseg+4|(sp),#4 // rr2 = s1
// r4 = c
// r5 = n
cp r5,#0
jr le,~ret0
cpirb rl4,@rr2,r5,eq
jr nz,~ret0
dec r3,#1
ret
~ret0: // return ((char *)0)
subl rr2,rr2
ret
}