xref: /OK3568_Linux_fs/kernel/arch/h8300/lib/strncpy.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun;;; SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun;;; strncpy.S
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun#include <asm/linkage.h>
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun	.text
7*4882a593Smuzhiyun.global strncpy_from_user
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun;;; long strncpy_from_user(void *to, void *from, size_t n)
10*4882a593Smuzhiyunstrncpy_from_user:
11*4882a593Smuzhiyun	mov.l	er2,er2
12*4882a593Smuzhiyun	bne	1f
13*4882a593Smuzhiyun	sub.l	er0,er0
14*4882a593Smuzhiyun	rts
15*4882a593Smuzhiyun1:
16*4882a593Smuzhiyun	mov.l	er4,@-sp
17*4882a593Smuzhiyun	sub.l	er3,er3
18*4882a593Smuzhiyun2:
19*4882a593Smuzhiyun	mov.b	@er1+,r4l
20*4882a593Smuzhiyun	mov.b	r4l,@er0
21*4882a593Smuzhiyun	adds	#1,er0
22*4882a593Smuzhiyun	beq	3f
23*4882a593Smuzhiyun	inc.l	#1,er3
24*4882a593Smuzhiyun	dec.l	#1,er2
25*4882a593Smuzhiyun	bne	2b
26*4882a593Smuzhiyun3:
27*4882a593Smuzhiyun	dec.l	#1,er2
28*4882a593Smuzhiyun4:
29*4882a593Smuzhiyun	mov.b	r4l,@er0
30*4882a593Smuzhiyun	adds	#1,er0
31*4882a593Smuzhiyun	dec.l	#1,er2
32*4882a593Smuzhiyun	bne	4b
33*4882a593Smuzhiyun	mov.l	er3,er0
34*4882a593Smuzhiyun	mov.l	@sp+,er4
35*4882a593Smuzhiyun	rts
36