mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-18 20:39:33 +08:00
* libc/machine/sh/strcpy.S (strcpy, __SHMEDIA__ code):
Fix clobbering bytes before destination if src and dst have same non-zero misalignment.
This commit is contained in:
parent
7bbed70832
commit
13f7d71fee
@ -1,4 +1,8 @@
|
||||
Thu Jun 13 15:52:03 2002 J"orn Rennecke <joern.rennecke@superh.com>
|
||||
Thu Jun 13 19:23:40 2002 J"orn Rennecke <joern.rennecke@superh.com>
|
||||
|
||||
* libc/machine/sh/strcpy.S (strcpy, __SHMEDIA__ code):
|
||||
Fix clobbering bytes before destination if src and dst have same
|
||||
non-zero misalignment.
|
||||
|
||||
* libc/machine/sh/memset.S (memset, __SHMEDIA__ code):
|
||||
Fixed bug in writing end of set region.
|
||||
|
@ -27,9 +27,11 @@ ENTRY(strcpy)
|
||||
pta/l loop, tr0
|
||||
ori r2,-8,r22
|
||||
mcmpeq.b r5, r63, r6
|
||||
bge/u r22, r23, tr2 // no_lddst
|
||||
bgt/u r22, r23, tr2 // no_lddst
|
||||
|
||||
// r22 < r23 ; Need to do a load from the destination.
|
||||
// r22 < r23 : Need to do a load from the destination.
|
||||
// r22 == r23 : Doesn't actually need to load from destination,
|
||||
// but still can be handled here.
|
||||
ldlo.q r2, 0, r9
|
||||
movi -1, r8
|
||||
SHLO r8, r7, r8
|
||||
@ -41,6 +43,8 @@ ENTRY(strcpy)
|
||||
addi r0, 8, r0
|
||||
blink tr1, r63 // shortstring
|
||||
no_lddst:
|
||||
// r22 > r23: note that for r22 == r23 the sthi.q would clobber
|
||||
// bytes before the destination region.
|
||||
stlo.q r2, 0, r4
|
||||
SHHI r4, r7, r4
|
||||
sthi.q r0, -1, r4
|
||||
|
Loading…
x
Reference in New Issue
Block a user