|
|
1.1 root 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) 3/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:
28: ENTRY(bunequal)
29: movl 4(ap),r1
30: movl 8(ap),r3
31: movl 12(ap),r4
32: 1:
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
44: 2:
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:
63: ENTRY(bskip)
64: movl 4(ap),r1
65: movl 8(ap),r3
66: movl 12(ap),r4
67: 1:
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
77: 2:
78: skpc r4,r3,(r1)
79: subl3 r0,8(ap),r0
80: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.