mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-19 12:59:21 +08:00
b8f7ea5ccb
* libc/machine/h8300/setarch.h: New. * libc/machine/h8300/memcpy.S: Use it. * libc/machine/h8300/memset.S: Likewise. * libc/machine/h8300/reg_memcpy.S: Likewise. * libc/machine/h8300/reg_memset.S: Likewise. * libc/machine/h8300/setjmp.S: Likewise. * libc/machine/h8300/strcmp.S: Likewise.
45 lines
604 B
ArmAsm
45 lines
604 B
ArmAsm
#include "setarch.h"
|
|
|
|
#include "defines.h"
|
|
|
|
; A0P pointer to cursor
|
|
; A1P thing to copy
|
|
.global _memset
|
|
|
|
_memset:
|
|
|
|
; MOVP @(2/4,r7),A2P ; dst
|
|
; MOVP @(4/8,r7),A1 ; src thing
|
|
; MOVP @(6/12,r7),A3P ; len
|
|
|
|
MOVP A2P,A2P
|
|
beq quit
|
|
|
|
; A3 points to the end of the area
|
|
MOVP A0P,A3P
|
|
ADDP A2P,A3P
|
|
|
|
; see if we can do it in words
|
|
; by oring in the start of the buffer to the end address
|
|
|
|
or A0L,A2L
|
|
btst #0,A2L
|
|
bne byteloop
|
|
|
|
; we can do it a word at a time
|
|
|
|
mov.b A1L,A1H
|
|
|
|
wordloop:
|
|
mov.w A1,@-A3P
|
|
CMPP A3P,A0P
|
|
bne wordloop
|
|
quit: rts
|
|
|
|
byteloop:
|
|
mov.b A1L,@-A3P
|
|
CMPP A3P,A0P
|
|
bne byteloop
|
|
rts
|
|
|