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

Defined functions

_bskip defined in line 70; never used
_bunequal defined in line 35; never used
Last modified: 1986-01-11
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 653
Valid CSS Valid XHTML 1.0 Strict