summaryrefslogtreecommitdiff
path: root/lib/libc/arch/mips64/string/bcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/arch/mips64/string/bcmp.S')
-rw-r--r--lib/libc/arch/mips64/string/bcmp.S40
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: