[POWERPC] Fix return value from memcpy
As pointed out by Herbert Xu <herbert@gondor.apana.org.au>, our memcpy implementation didn't return the destination pointer as its return value, and there is code in the kernel that expects that. This fixes it. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
e7498656b5
commit
d0027bf09f
1 changed files with 7 additions and 4 deletions
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
.align 7
|
.align 7
|
||||||
_GLOBAL(memcpy)
|
_GLOBAL(memcpy)
|
||||||
|
std r3,48(r1) /* save destination pointer for return value */
|
||||||
mtcrf 0x01,r5
|
mtcrf 0x01,r5
|
||||||
cmpldi cr1,r5,16
|
cmpldi cr1,r5,16
|
||||||
neg r6,r3 # LS 3 bits = # bytes to 8-byte dest bdry
|
neg r6,r3 # LS 3 bits = # bytes to 8-byte dest bdry
|
||||||
|
@ -38,7 +39,7 @@ _GLOBAL(memcpy)
|
||||||
stdu r9,16(r3)
|
stdu r9,16(r3)
|
||||||
bdnz 1b
|
bdnz 1b
|
||||||
3: std r8,8(r3)
|
3: std r8,8(r3)
|
||||||
beqlr
|
beq 3f
|
||||||
addi r3,r3,16
|
addi r3,r3,16
|
||||||
ld r9,8(r4)
|
ld r9,8(r4)
|
||||||
.Ldo_tail:
|
.Ldo_tail:
|
||||||
|
@ -53,7 +54,8 @@ _GLOBAL(memcpy)
|
||||||
2: bf cr7*4+3,3f
|
2: bf cr7*4+3,3f
|
||||||
rotldi r9,r9,8
|
rotldi r9,r9,8
|
||||||
stb r9,0(r3)
|
stb r9,0(r3)
|
||||||
3: blr
|
3: ld r3,48(r1) /* return dest pointer */
|
||||||
|
blr
|
||||||
|
|
||||||
.Lsrc_unaligned:
|
.Lsrc_unaligned:
|
||||||
srdi r6,r5,3
|
srdi r6,r5,3
|
||||||
|
@ -115,7 +117,7 @@ _GLOBAL(memcpy)
|
||||||
5: srd r12,r9,r11
|
5: srd r12,r9,r11
|
||||||
or r12,r8,r12
|
or r12,r8,r12
|
||||||
std r12,24(r3)
|
std r12,24(r3)
|
||||||
beqlr
|
beq 4f
|
||||||
cmpwi cr1,r5,8
|
cmpwi cr1,r5,8
|
||||||
addi r3,r3,32
|
addi r3,r3,32
|
||||||
sld r9,r9,r10
|
sld r9,r9,r10
|
||||||
|
@ -167,4 +169,5 @@ _GLOBAL(memcpy)
|
||||||
3: bf cr7*4+3,4f
|
3: bf cr7*4+3,4f
|
||||||
lbz r0,0(r4)
|
lbz r0,0(r4)
|
||||||
stb r0,0(r3)
|
stb r0,0(r3)
|
||||||
4: blr
|
4: ld r3,48(r1) /* return dest pointer */
|
||||||
|
blr
|
||||||
|
|
Loading…
Add table
Reference in a new issue