diff options
Diffstat (limited to 'lib/libc/arch/mips64/string/bcmp.S')
-rw-r--r-- | lib/libc/arch/mips64/string/bcmp.S | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/lib/libc/arch/mips64/string/bcmp.S b/lib/libc/arch/mips64/string/bcmp.S index 5b1c23b5797..2ff4a6e817e 100644 --- a/lib/libc/arch/mips64/string/bcmp.S +++ b/lib/libc/arch/mips64/string/bcmp.S @@ -1,4 +1,4 @@ -/* $OpenBSD: bcmp.S,v 1.3 2005/08/07 16:40:15 espie Exp $ */ +/* $OpenBSD: bcmp.S,v 1.4 2009/12/11 05:10:17 miod Exp $ */ /*- * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. @@ -40,66 +40,66 @@ LEAF(bcmp, 0) blt a2, 16, small # is it worth any trouble? xor v0, a0, a1 # compare low two bits of addresses and v0, v0, 3 - subu a3, zero, a1 # compute # bytes to word align address + dsubu a3, zero, a1 # compute # bytes to word align address bne v0, zero, unaligned # not possible to align addresses and a3, a3, 3 beq a3, zero, 1f - subu a2, a2, a3 # subtract from remaining count + dsubu a2, a2, a3 # subtract from remaining count move v0, v1 # init v0,v1 so unmodified bytes match LWHI v0, 0(a0) # read 1, 2, or 3 bytes LWHI v1, 0(a1) - addu a1, a1, a3 + daddu a1, a1, a3 bne v0, v1, nomatch - addu a0, a0, a3 + daddu a0, a0, a3 1: and a3, a2, ~3 # compute number of whole words left - subu a2, a2, a3 # which has to be >= (16-3) & ~3 - addu a3, a3, a0 # compute ending address + dsubu a2, a2, a3 # which has to be >= (16-3) & ~3 + daddu a3, a3, a0 # compute ending address 2: lw v0, 0(a0) # compare words lw v1, 0(a1) - addu a0, a0, 4 + daddu a0, a0, 4 bne v0, v1, nomatch - addu a1, a1, 4 + daddu a1, a1, 4 bne a0, a3, 2b nop b small # finish remainder nop unaligned: beq a3, zero, 2f - subu a2, a2, a3 # subtract from remaining count - addu a3, a3, a0 # compute ending address + dsubu a2, a2, a3 # subtract from remaining count + daddu a3, a3, a0 # compute ending address 1: lbu v0, 0(a0) # compare bytes until a1 word aligned lbu v1, 0(a1) - addu a0, a0, 1 + daddu a0, a0, 1 bne v0, v1, nomatch - addu a1, a1, 1 + daddu a1, a1, 1 bne a0, a3, 1b nop 2: and a3, a2, ~3 # compute number of whole words left - subu a2, a2, a3 # which has to be >= (16-3) & ~3 - addu a3, a3, a0 # compute ending address + dsubu a2, a2, a3 # which has to be >= (16-3) & ~3 + daddu a3, a3, a0 # compute ending address 3: LWHI v0, 0(a0) # compare words a0 unaligned, a1 aligned LWLO v0, 3(a0) lw v1, 0(a1) - addu a0, a0, 4 + daddu a0, a0, 4 bne v0, v1, nomatch - addu a1, a1, 4 + daddu a1, a1, 4 bne a0, a3, 3b nop small: ble a2, zero, match - addu a3, a2, a0 # compute ending address + daddu a3, a2, a0 # compute ending address 1: lbu v0, 0(a0) lbu v1, 0(a1) - addu a0, a0, 1 + daddu a0, a0, 1 bne v0, v1, nomatch - addu a1, a1, 1 + daddu a1, a1, 1 bne a0, a3, 1b nop match: |