Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.2.
  1/* strlen_user.S: Sparc optimized strlen_user code
  2 *
  3 * Return length of string in userspace including terminating 0
  4 * or 0 for error
  5 *
  6 * Copyright (C) 1991,1996 Free Software Foundation
  7 * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
  8 * Copyright (C) 1996 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
  9 */
 10
 11#define LO_MAGIC 0x01010101
 12#define HI_MAGIC 0x80808080
 13
 1410:
 15	ldub	[%o0], %o5
 16	cmp	%o5, 0
 17	be	1f
 18	 add	%o0, 1, %o0
 19	andcc	%o0, 3, %g0
 20	be	4f
 21	 or	%o4, %lo(HI_MAGIC), %o3
 2211:
 23	ldub	[%o0], %o5
 24	cmp	%o5, 0
 25	be	2f
 26	 add	%o0, 1, %o0
 27	andcc	%o0, 3, %g0
 28	be	5f
 29	 sethi	%hi(LO_MAGIC), %o4
 3012:
 31	ldub	[%o0], %o5
 32	cmp	%o5, 0
 33	be	3f
 34	 add	%o0, 1, %o0
 35	b	13f
 36	 or	%o4, %lo(LO_MAGIC), %o2
 371:
 38	retl
 39	 mov	1, %o0
 402:
 41	retl
 42	 mov	2, %o0
 433:
 44	retl
 45	 mov	3, %o0
 46
 47	.align 4
 48	.global __strlen_user, __strnlen_user
 49__strlen_user:
 50	sethi	%hi(32768), %o1
 51__strnlen_user:
 52	mov	%o1, %g1
 53	mov	%o0, %o1
 54	andcc	%o0, 3, %g0
 55	bne	10b
 56	 sethi	%hi(HI_MAGIC), %o4
 57	or	%o4, %lo(HI_MAGIC), %o3
 584:
 59	sethi	%hi(LO_MAGIC), %o4
 605:
 61	or	%o4, %lo(LO_MAGIC), %o2
 6213:
 63	ld	[%o0], %o5
 642:
 65	sub	%o5, %o2, %o4
 66	andcc	%o4, %o3, %g0
 67	bne	82f
 68	 add	%o0, 4, %o0
 69	sub	%o0, %o1, %g2
 7081:	cmp	%g2, %g1
 71	blu	13b
 72	 mov	%o0, %o4
 73	ba,a	1f
 74
 75	/* Check every byte. */
 7682:	srl	%o5, 24, %g5
 77	andcc	%g5, 0xff, %g0
 78	be	1f
 79	 add	%o0, -3, %o4
 80	srl	%o5, 16, %g5
 81	andcc	%g5, 0xff, %g0
 82	be	1f
 83	 add	%o4, 1, %o4
 84	srl	%o5, 8, %g5
 85	andcc	%g5, 0xff, %g0
 86	be	1f
 87	 add	%o4, 1, %o4
 88	andcc	%o5, 0xff, %g0
 89	bne	81b
 90	 sub	%o0, %o1, %g2
 91
 92	add	%o4, 1, %o4
 931:
 94	retl
 95	 sub	%o4, %o1, %o0
 96
 97	.section .fixup,#alloc,#execinstr
 98	.align	4
 999:
100	retl
101	 clr	%o0
102
103	.section __ex_table,#alloc
104	.align	4
105
106	.word	10b, 9b
107	.word	11b, 9b
108	.word	12b, 9b
109	.word	13b, 9b