diff options
Diffstat (limited to 'comms/tn3270/files/general/vaxbsubs.s')
-rw-r--r-- | comms/tn3270/files/general/vaxbsubs.s | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/comms/tn3270/files/general/vaxbsubs.s b/comms/tn3270/files/general/vaxbsubs.s new file mode 100644 index 00000000000..f71a49e04d6 --- /dev/null +++ b/comms/tn3270/files/general/vaxbsubs.s @@ -0,0 +1,101 @@ +/* $NetBSD: vaxbsubs.s,v 1.1.1.1 2010/01/17 01:33:22 dholland Exp $ */ +/* From NetBSD: vaxbsubs.s,v 1.4 2003/08/07 11:16:34 agc Exp */ + +/*- + * Copyright (c) 1988 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * from: @(#)vaxbsubs.s 4.2 (Berkeley) 4/26/91 + * $NetBSD: vaxbsubs.s,v 1.1.1.1 2010/01/17 01:33:22 dholland Exp $ + */ + +/* This is taken from bcmp.s from 4.2. + * The output of bunequal is the offset of the byte which didn't match; + * if all the bytes match, then we return n. + * + * BUGNOTE: This has no chance of working for lengths greater than 64K. + * (so, if you use this somewhere else, you may need to + * fix it...) + */ + +/* bunequal(s1, s2, n) */ + +#include "defs.h" + +ENTRY(bunequal) + movl 4(ap),r1 + movl 8(ap),r3 + movl 12(ap),r4 +1: + movzwl $65535,r0 + cmpl r4,r0 + jleq 2f + subl2 r0,r4 + cmpc3 r0,(r1),(r3) + jeql 1b + addl2 r4,r0 + /* changes... */ + subl3 r0,12(ap),r0 + /* end of changes for bunequal... */ + ret +2: + cmpc3 r4,(r1),(r3) + /* changes... */ + subl3 r0,12(ap),r0 + /* end of changes for bunequal... */ + ret + + + + +/* brand new code, using the above as base... */ +/* bskip(s1, n, b) : finds the first occurrence of any byte != 'b' in the 'n' + * bytes beginning at 's1'. + * + * BUGNOTE: This has no chance of working for lengths greater than 64K. + * (so, if you use this somewhere else, you may need to + * fix it...) + */ + +ENTRY(bskip) + movl 4(ap),r1 + movl 8(ap),r3 + movl 12(ap),r4 +1: + movzwl $65535,r0 + cmpl r3,r0 + jleq 2f + subl2 r0,r3 + skpc r4,r0,(r1) + jeql 1b + addl2 r3,r0 + subl3 r0,8(ap),r0 + ret +2: + skpc r4,r3,(r1) + subl3 r0,8(ap),r0 + ret |