Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC)
- Fix for possible unset uid/gid in toproto
- Fix for default mtree style
- Update libelf
- Importing libexecinfo
- Resynchronize GCC, mpc, gmp, mpfr
- build.sh: Replace params with show-params.
This has been done as the make target has been renamed in the same
way, while a new target named params has been added. This new
target generates a file containing all the parameters, instead of
printing it on the console.
- Update test48 with new etc/services (Fix by Ben Gras <ben@minix3.org)
get getservbyport() out of the inner loop
Change-Id: Ie6ad5226fa2621ff9f0dee8782ea48f9443d2091
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* $NetBSD: memmove.S,v 1.3 2008/04/28 20:22:52 martin Exp $ */
|
||||
/* $NetBSD: memmove.S,v 1.7 2013/11/30 20:20:42 joerg Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
||||
@@ -49,7 +49,7 @@ ENTRY(bcopy)
|
||||
subhs r3, r0, r1 /* if (dst > src) r3 = dst - src */
|
||||
sublo r3, r1, r0 /* if (src > dst) r3 = src - dst */
|
||||
cmp r3, r2 /* if (r3 >= len) we have an overlap */
|
||||
bhs PIC_SYM(_C_LABEL(memcpy), PLT)
|
||||
bhs PLT_SYM(_C_LABEL(memcpy))
|
||||
|
||||
/* Determine copy direction */
|
||||
cmp r1, r0
|
||||
@@ -58,7 +58,7 @@ ENTRY(bcopy)
|
||||
moveq r0, #0 /* Quick abort for len=0 */
|
||||
RETc(eq)
|
||||
|
||||
stmdb sp!, {r0, lr} /* memmove() returns dest addr */
|
||||
push {r0, lr} /* memmove() returns dest addr */
|
||||
subs r2, r2, #4
|
||||
blt .Lmemmove_fl4 /* less than 4 bytes */
|
||||
ands r12, r0, #3
|
||||
@@ -72,7 +72,7 @@ ENTRY(bcopy)
|
||||
blt .Lmemmove_fl12 /* less than 12 bytes (4 from above) */
|
||||
subs r2, r2, #0x14
|
||||
blt .Lmemmove_fl32 /* less than 32 bytes (12 from above) */
|
||||
stmdb sp!, {r4} /* borrow r4 */
|
||||
push {r4} /* borrow r4 */
|
||||
|
||||
/* blat 32 bytes at a time */
|
||||
/* XXX for really big copies perhaps we should use more registers */
|
||||
@@ -85,19 +85,19 @@ ENTRY(bcopy)
|
||||
bge .Lmemmove_floop32
|
||||
|
||||
cmn r2, #0x10
|
||||
ldmgeia r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
|
||||
stmgeia r0!, {r3, r4, r12, lr}
|
||||
ldmiage r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
|
||||
stmiage r0!, {r3, r4, r12, lr}
|
||||
subge r2, r2, #0x10
|
||||
ldmia sp!, {r4} /* return r4 */
|
||||
pop {r4} /* return r4 */
|
||||
|
||||
.Lmemmove_fl32:
|
||||
adds r2, r2, #0x14
|
||||
|
||||
/* blat 12 bytes at a time */
|
||||
.Lmemmove_floop12:
|
||||
ldmgeia r1!, {r3, r12, lr}
|
||||
stmgeia r0!, {r3, r12, lr}
|
||||
subges r2, r2, #0x0c
|
||||
ldmiage r1!, {r3, r12, lr}
|
||||
stmiage r0!, {r3, r12, lr}
|
||||
subsge r2, r2, #0x0c
|
||||
bge .Lmemmove_floop12
|
||||
|
||||
.Lmemmove_fl12:
|
||||
@@ -107,24 +107,24 @@ ENTRY(bcopy)
|
||||
subs r2, r2, #4
|
||||
ldrlt r3, [r1], #4
|
||||
strlt r3, [r0], #4
|
||||
ldmgeia r1!, {r3, r12}
|
||||
stmgeia r0!, {r3, r12}
|
||||
ldmiage r1!, {r3, r12}
|
||||
stmiage r0!, {r3, r12}
|
||||
subge r2, r2, #4
|
||||
|
||||
.Lmemmove_fl4:
|
||||
/* less than 4 bytes to go */
|
||||
adds r2, r2, #4
|
||||
ldmeqia sp!, {r0, pc} /* done */
|
||||
popeq {r0, pc} /* done */
|
||||
|
||||
/* copy the crud byte at a time */
|
||||
cmp r2, #2
|
||||
ldrb r3, [r1], #1
|
||||
strb r3, [r0], #1
|
||||
ldrgeb r3, [r1], #1
|
||||
strgeb r3, [r0], #1
|
||||
ldrgtb r3, [r1], #1
|
||||
strgtb r3, [r0], #1
|
||||
ldmia sp!, {r0, pc}
|
||||
ldrbge r3, [r1], #1
|
||||
strbge r3, [r0], #1
|
||||
ldrbgt r3, [r1], #1
|
||||
strbgt r3, [r0], #1
|
||||
pop {r0, pc}
|
||||
|
||||
/* erg - unaligned destination */
|
||||
.Lmemmove_fdestul:
|
||||
@@ -134,10 +134,10 @@ ENTRY(bcopy)
|
||||
/* align destination with byte copies */
|
||||
ldrb r3, [r1], #1
|
||||
strb r3, [r0], #1
|
||||
ldrgeb r3, [r1], #1
|
||||
strgeb r3, [r0], #1
|
||||
ldrgtb r3, [r1], #1
|
||||
strgtb r3, [r0], #1
|
||||
ldrbge r3, [r1], #1
|
||||
strbge r3, [r0], #1
|
||||
ldrbgt r3, [r1], #1
|
||||
strbgt r3, [r0], #1
|
||||
subs r2, r2, r12
|
||||
blt .Lmemmove_fl4 /* less the 4 bytes */
|
||||
|
||||
@@ -155,7 +155,7 @@ ENTRY(bcopy)
|
||||
cmp r2, #0x0c
|
||||
blt .Lmemmove_fsrcul1loop4
|
||||
sub r2, r2, #0x0c
|
||||
stmdb sp!, {r4, r5}
|
||||
push {r4, r5}
|
||||
|
||||
.Lmemmove_fsrcul1loop16:
|
||||
#ifdef __ARMEB__
|
||||
@@ -184,7 +184,7 @@ ENTRY(bcopy)
|
||||
stmia r0!, {r3-r5, r12}
|
||||
subs r2, r2, #0x10
|
||||
bge .Lmemmove_fsrcul1loop16
|
||||
ldmia sp!, {r4, r5}
|
||||
pop {r4, r5}
|
||||
adds r2, r2, #0x0c
|
||||
blt .Lmemmove_fsrcul1l4
|
||||
|
||||
@@ -212,7 +212,7 @@ ENTRY(bcopy)
|
||||
cmp r2, #0x0c
|
||||
blt .Lmemmove_fsrcul2loop4
|
||||
sub r2, r2, #0x0c
|
||||
stmdb sp!, {r4, r5}
|
||||
push {r4, r5}
|
||||
|
||||
.Lmemmove_fsrcul2loop16:
|
||||
#ifdef __ARMEB__
|
||||
@@ -241,7 +241,7 @@ ENTRY(bcopy)
|
||||
stmia r0!, {r3-r5, r12}
|
||||
subs r2, r2, #0x10
|
||||
bge .Lmemmove_fsrcul2loop16
|
||||
ldmia sp!, {r4, r5}
|
||||
pop {r4, r5}
|
||||
adds r2, r2, #0x0c
|
||||
blt .Lmemmove_fsrcul2l4
|
||||
|
||||
@@ -269,7 +269,7 @@ ENTRY(bcopy)
|
||||
cmp r2, #0x0c
|
||||
blt .Lmemmove_fsrcul3loop4
|
||||
sub r2, r2, #0x0c
|
||||
stmdb sp!, {r4, r5}
|
||||
push {r4, r5}
|
||||
|
||||
.Lmemmove_fsrcul3loop16:
|
||||
#ifdef __ARMEB__
|
||||
@@ -298,7 +298,7 @@ ENTRY(bcopy)
|
||||
stmia r0!, {r3-r5, r12}
|
||||
subs r2, r2, #0x10
|
||||
bge .Lmemmove_fsrcul3loop16
|
||||
ldmia sp!, {r4, r5}
|
||||
pop {r4, r5}
|
||||
adds r2, r2, #0x0c
|
||||
blt .Lmemmove_fsrcul3l4
|
||||
|
||||
@@ -336,7 +336,7 @@ ENTRY(bcopy)
|
||||
/* We have aligned source and destination */
|
||||
subs r2, r2, #8
|
||||
blt .Lmemmove_bl12 /* less than 12 bytes (4 from above) */
|
||||
stmdb sp!, {r4, lr}
|
||||
push {r4, lr}
|
||||
subs r2, r2, #0x14 /* less than 32 bytes (12 from above) */
|
||||
blt .Lmemmove_bl32
|
||||
|
||||
@@ -352,14 +352,14 @@ ENTRY(bcopy)
|
||||
|
||||
.Lmemmove_bl32:
|
||||
cmn r2, #0x10
|
||||
ldmgedb r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
|
||||
stmgedb r0!, {r3, r4, r12, lr}
|
||||
ldmdbge r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
|
||||
stmdbge r0!, {r3, r4, r12, lr}
|
||||
subge r2, r2, #0x10
|
||||
adds r2, r2, #0x14
|
||||
ldmgedb r1!, {r3, r12, lr} /* blat a remaining 12 bytes */
|
||||
stmgedb r0!, {r3, r12, lr}
|
||||
ldmdbge r1!, {r3, r12, lr} /* blat a remaining 12 bytes */
|
||||
stmdbge r0!, {r3, r12, lr}
|
||||
subge r2, r2, #0x0c
|
||||
ldmia sp!, {r4, lr}
|
||||
pop {r4, lr}
|
||||
|
||||
.Lmemmove_bl12:
|
||||
adds r2, r2, #8
|
||||
@@ -367,8 +367,8 @@ ENTRY(bcopy)
|
||||
subs r2, r2, #4
|
||||
ldrlt r3, [r1, #-4]!
|
||||
strlt r3, [r0, #-4]!
|
||||
ldmgedb r1!, {r3, r12}
|
||||
stmgedb r0!, {r3, r12}
|
||||
ldmdbge r1!, {r3, r12}
|
||||
stmdbge r0!, {r3, r12}
|
||||
subge r2, r2, #4
|
||||
|
||||
.Lmemmove_bl4:
|
||||
@@ -380,10 +380,10 @@ ENTRY(bcopy)
|
||||
cmp r2, #2
|
||||
ldrb r3, [r1, #-1]!
|
||||
strb r3, [r0, #-1]!
|
||||
ldrgeb r3, [r1, #-1]!
|
||||
strgeb r3, [r0, #-1]!
|
||||
ldrgtb r3, [r1, #-1]!
|
||||
strgtb r3, [r0, #-1]!
|
||||
ldrbge r3, [r1, #-1]!
|
||||
strbge r3, [r0, #-1]!
|
||||
ldrbgt r3, [r1, #-1]!
|
||||
strbgt r3, [r0, #-1]!
|
||||
RET
|
||||
|
||||
/* erg - unaligned destination */
|
||||
@@ -393,10 +393,10 @@ ENTRY(bcopy)
|
||||
/* align destination with byte copies */
|
||||
ldrb r3, [r1, #-1]!
|
||||
strb r3, [r0, #-1]!
|
||||
ldrgeb r3, [r1, #-1]!
|
||||
strgeb r3, [r0, #-1]!
|
||||
ldrgtb r3, [r1, #-1]!
|
||||
strgtb r3, [r0, #-1]!
|
||||
ldrbge r3, [r1, #-1]!
|
||||
strbge r3, [r0, #-1]!
|
||||
ldrbgt r3, [r1, #-1]!
|
||||
strbgt r3, [r0, #-1]!
|
||||
subs r2, r2, r12
|
||||
blt .Lmemmove_bl4 /* less than 4 bytes to go */
|
||||
ands r12, r1, #3
|
||||
@@ -413,7 +413,7 @@ ENTRY(bcopy)
|
||||
cmp r2, #0x0c
|
||||
blt .Lmemmove_bsrcul3loop4
|
||||
sub r2, r2, #0x0c
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
push {r4, r5, lr}
|
||||
|
||||
.Lmemmove_bsrcul3loop16:
|
||||
#ifdef __ARMEB__
|
||||
@@ -442,7 +442,7 @@ ENTRY(bcopy)
|
||||
stmdb r0!, {r4, r5, r12, lr}
|
||||
subs r2, r2, #0x10
|
||||
bge .Lmemmove_bsrcul3loop16
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
pop {r4, r5, lr}
|
||||
adds r2, r2, #0x0c
|
||||
blt .Lmemmove_bsrcul3l4
|
||||
|
||||
@@ -470,7 +470,7 @@ ENTRY(bcopy)
|
||||
cmp r2, #0x0c
|
||||
blt .Lmemmove_bsrcul2loop4
|
||||
sub r2, r2, #0x0c
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
push {r4, r5, lr}
|
||||
|
||||
.Lmemmove_bsrcul2loop16:
|
||||
#ifdef __ARMEB__
|
||||
@@ -499,7 +499,7 @@ ENTRY(bcopy)
|
||||
stmdb r0!, {r4, r5, r12, lr}
|
||||
subs r2, r2, #0x10
|
||||
bge .Lmemmove_bsrcul2loop16
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
pop {r4, r5, lr}
|
||||
adds r2, r2, #0x0c
|
||||
blt .Lmemmove_bsrcul2l4
|
||||
|
||||
@@ -527,7 +527,7 @@ ENTRY(bcopy)
|
||||
cmp r2, #0x0c
|
||||
blt .Lmemmove_bsrcul1loop4
|
||||
sub r2, r2, #0x0c
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
push {r4, r5, lr}
|
||||
|
||||
.Lmemmove_bsrcul1loop32:
|
||||
#ifdef __ARMEB__
|
||||
@@ -556,7 +556,7 @@ ENTRY(bcopy)
|
||||
stmdb r0!, {r4, r5, r12, lr}
|
||||
subs r2, r2, #0x10
|
||||
bge .Lmemmove_bsrcul1loop32
|
||||
ldmia sp!, {r4, r5, lr}
|
||||
pop {r4, r5, lr}
|
||||
adds r2, r2, #0x0c
|
||||
blt .Lmemmove_bsrcul1l4
|
||||
|
||||
@@ -579,3 +579,12 @@ ENTRY(bcopy)
|
||||
.Lmemmove_bsrcul1l4:
|
||||
add r1, r1, #1
|
||||
b .Lmemmove_bl4
|
||||
#ifndef _BCOPY
|
||||
END(memmove)
|
||||
#else
|
||||
END(bcopy)
|
||||
#endif
|
||||
|
||||
#if defined(__ARM_EABI__) && !defined(BCOPY)
|
||||
STRONG_ALIAS(__aeabi_memmove, memmove)
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user