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