xref: /csrg-svn/lib/libc/vax/string/strcat.s (revision 26683)
1/*
2 * Copyright (c) 1983 Regents of the University of California.
3 * All rights reserved.  The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 */
6
7#ifdef LIBC_SCCS
8	.asciz	"@(#)strcat.s	5.3 (Berkeley) 03/09/86"
9#endif LIBC_SCCS
10
11/*
12 * Concatenate string s2 to the end of s1
13 * and return the base of s1.
14 *
15 * char *
16 * strcat(s1, s2)
17 *	char *s1, *s2;
18 */
19#include "DEFS.h"
20
21ENTRY(strcat, R6|R7)
22	movq	4(ap), r6	# r6 = s1; r7 = s2
23	movl	r6,r1
240:
25	locc	$0,$65535,(r1)	# look for '\0'
26	beql	0b
27	movl	r1,r3		# save end of s1
281:
29	locc	$0,$65535,(r7)	# find length of s2
30	bneq	2f
31	movc3	$65535,(r7),(r3)# copy full block
32	movl	r1,r7
33	jbr	1b
342:
35	subl2	r7,r1		# calculate length
36	incl	r1
37	movc3	r1,(r7),(r3)	# copy remainder
38	movl	r6,r0
39	ret
40