diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-10-04 19:50:24 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-10-04 19:50:24 +0200 |
commit | 9e3ef5c777971707ab4ba426bb55d3bb2553ddf9 (patch) | |
tree | a5126925764bd3cb47d8702bab4bbd8b6b02aea3 /sys/src/ape/lib/ap/spim/memchr.s | |
parent | d2af6b40af268fafdbd04c0222e785167b9ae021 (diff) |
ape: add machine specific code for spim
Diffstat (limited to 'sys/src/ape/lib/ap/spim/memchr.s')
-rw-r--r-- | sys/src/ape/lib/ap/spim/memchr.s | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sys/src/ape/lib/ap/spim/memchr.s b/sys/src/ape/lib/ap/spim/memchr.s new file mode 100644 index 000000000..b244ea279 --- /dev/null +++ b/sys/src/ape/lib/ap/spim/memchr.s @@ -0,0 +1,39 @@ +TEXT memchr(SB), $0 + MOVW R1, 0(FP) + + MOVW n+8(FP), R1 + MOVW s1+0(FP), R2 + MOVBU c+4(FP), R3 + ADDU R1, R2, R6 + + AND $(~1), R1, R5 + ADDU R2, R5 + BEQ R2, R5, lt2 + +l1: + MOVBU 0(R2), R4 + MOVBU 1(R2), R7 + BEQ R3, R4, eq0 + ADDU $2, R2 + BEQ R3, R7, eq + BNE R2, R5, l1 + +lt2: + BEQ R2, R6, zret + +l2: + MOVBU (R2), R4 + ADDU $1, R2 + BEQ R3, R4, eq + BNE R2, R6, l2 +zret: + MOVW R0, R1 + RET + +eq0: + MOVW R2, R1 + RET + +eq: + SUBU $1,R2, R1 + RET |