1*47942Sbostic/*- 2*47942Sbostic * Copyright (c) 1991 The Regents of the University of California. 3*47942Sbostic * All rights reserved. 4*47942Sbostic * 5*47942Sbostic * This code is derived from software contributed to Berkeley by 6*47942Sbostic * Computer Consoles Inc. 7*47942Sbostic * 8*47942Sbostic * %sccs.include.proprietary.c% 9*47942Sbostic */ 1029958Smckusick 11*47942Sbostic#ifndef lint 12*47942Sbostic .asciz "@(#)rindex_s.s 5.2 (Berkeley) 04/12/91" 13*47942Sbostic#endif /* not lint */ 14*47942Sbostic 1529958Smckusick.data 1629958Smckusick.text 1729958SmckusickLL0:.align 1 1829958Smckusick.globl _rindex_ 1929958Smckusick.set MASK__,0x1c0c 2029958Smckusick.data 2129958Smckusick.text 2229958Smckusick_rindex_: .word MASK__ 2329958Smckusick 2429958Smckusick movl 16(fp),r12 /* sublen */ 2529958Smckusick tstl r12 /* if sublen == 0 */ 2629958Smckusick jeql out0 /* return(0L) */ 2729958Smckusick 2829958Smckusick movl 4(fp), r11 /* str */ 2929958Smckusick movl 8(fp), r10 /* substr */ 3029958Smckusick addl3 r11, 12(fp), r3 /* p = str + strlen */ 3129958Smckusick subl2 r12, r3 /* p -= sublen */ 3229958Smckusickloop: 3329958Smckusick cmpl r3, r11 /* while (p >= str) */ 3429958Smckusick jlss out0 /* not found - return(0L) */ 3529958Smckusick movl r3, r0 /* current p (in str) */ 3629958Smckusick movl r10, r1 /* substr */ 3729958Smckusick movl r12, r2 /* sublen */ 3829958Smckusick cmps3 /* if strigs equal */ 3929958Smckusick jeql out /* return index */ 4029958Smckusick 4129958Smckusick decl r3 /* p-- */ 4229958Smckusick jbr loop 4329958Smckusick 4429958Smckusickout: 4529958Smckusick incl r3 /* index = ++p - str */ 4629958Smckusick subl3 r11, r3, r0 4729958Smckusick ret 4829958Smckusick 4929958Smckusickout0: 5029958Smckusick clrl r0 5129958Smckusick ret 5229958Smckusick 53