1/*
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that this notice is preserved and that due credit is given
7 * to the University of California at Berkeley. The name of the University
8 * may not be used to endorse or promote products derived from this
9 * software without specific prior written permission. This software
10 * is provided ``as is'' without express or implied warranty.
11 *
12 *	@(#)vaxbsubs.s	1.2 (Berkeley) 03/28/88
13 */
14
15/* This is taken from bcmp.s from 4.2.
16 * The output of bunequal is the offset of the byte which didn't match;
17 * if all the bytes match, then we return n.
18 *
19 * BUGNOTE:  This has no chance of working for lengths greater than 64K.
20 *		(so, if you use this somewhere else, you may need to
21 *		fix it...)
22 */
23
24/* bunequal(s1, s2, n) */
25
26#include "defs.h"
27
28ENTRY(bunequal)
29	movl	4(ap),r1
30	movl	8(ap),r3
31	movl	12(ap),r4
321:
33	movzwl	$65535,r0
34	cmpl	r4,r0
35	jleq	2f
36	subl2	r0,r4
37	cmpc3	r0,(r1),(r3)
38	jeql	1b
39	addl2	r4,r0
40	/* changes... */
41	subl3	r0,12(ap),r0
42	/* end of changes for bunequal... */
43	ret
442:
45	cmpc3	r4,(r1),(r3)
46	/* changes... */
47	subl3	r0,12(ap),r0
48	/* end of changes for bunequal... */
49	ret
50
51
52
53
54/* brand new code, using the above as base... */
55/* bskip(s1, n, b) : finds the first occurrence of any byte != 'b' in the 'n'
56 * bytes beginning at 's1'.
57 *
58 * BUGNOTE:  This has no chance of working for lengths greater than 64K.
59 *		(so, if you use this somewhere else, you may need to
60 *		fix it...)
61 */
62
63ENTRY(bskip)
64	movl	4(ap),r1
65	movl	8(ap),r3
66	movl	12(ap),r4
671:
68	movzwl	$65535,r0
69	cmpl	r3,r0
70	jleq	2f
71	subl2	r0,r3
72	skpc	r4,r0,(r1)
73	jeql	1b
74	addl2	r3,r0
75	subl3	r0,8(ap),r0
76	ret
772:
78	skpc	r4,r3,(r1)
79	subl3	r0,8(ap),r0
80	ret
81