1: /* 2: * Copyright 1984, 1985 by the Regents of the University of 3: * California and by Gregory Glenn Minshall. 4: * 5: * Permission to use, copy, modify, and distribute these 6: * programs and their documentation for any purpose and 7: * without fee is hereby granted, provided that this 8: * copyright and permission appear on all copies and 9: * supporting documentation, the name of the Regents of 10: * the University of California not be used in advertising 11: * or publicity pertaining to distribution of the programs 12: * without specific prior permission, and notice be given in 13: * supporting documentation that copying and distribution is 14: * by permission of the Regents of the University of California 15: * and by Gregory Glenn Minshall. Neither the Regents of the 16: * University of California nor Gregory Glenn Minshall make 17: * representations about the suitability of this software 18: * for any purpose. It is provided "as is" without 19: * express or implied warranty. 20: */ 21: 22: /* This is taken from bcmp.s from 4.2. 23: * The output of bunequal is the offset of the byte which didn't match; 24: * if all the bytes match, then we return n. 25: * 26: * BUGNOTE: This has no chance of working for lengths greater than 64K. 27: * (so, if you use this somewhere else, you may need to 28: * fix it...) 29: */ 30: /* @(#)vaxbsubs.s 1.2 1.2 */ 31: /* bunequal(s1, s2, n) */ 32: 33: #include "DEFS.h" 34: 35: ENTRY(bunequal) 36: movl 4(ap),r1 37: movl 8(ap),r3 38: movl 12(ap),r4 39: 1: 40: movzwl $65535,r0 41: cmpl r4,r0 42: jleq 2f 43: subl2 r0,r4 44: cmpc3 r0,(r1),(r3) 45: jeql 1b 46: addl2 r4,r0 47: /* changes... */ 48: subl3 r0,12(ap),r0 49: /* end of changes for bunequal... */ 50: ret 51: 2: 52: cmpc3 r4,(r1),(r3) 53: /* changes... */ 54: subl3 r0,12(ap),r0 55: /* end of changes for bunequal... */ 56: ret 57: 58: 59: 60: 61: /* brand new code, using the above as base... */ 62: /* bskip(s1, n, b) : finds the first occurrence of any byte != 'b' in the 'n' 63: * bytes beginning at 's1'. 64: * 65: * BUGNOTE: This has no chance of working for lengths greater than 64K. 66: * (so, if you use this somewhere else, you may need to 67: * fix it...) 68: */ 69: 70: ENTRY(bskip) 71: movl 4(ap),r1 72: movl 8(ap),r3 73: movl 12(ap),r4 74: 1: 75: movzwl $65535,r0 76: cmpl r3,r0 77: jleq 2f 78: subl2 r0,r3 79: skpc r4,r0,(r1) 80: jeql 1b 81: addl2 r3,r0 82: subl3 r0,8(ap),r0 83: ret 84: 2: 85: skpc r4,r3,(r1) 86: subl3 r0,8(ap),r0 87: ret