> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of Wolfgang Denk
> Sent: Tuesday, June 29, 2010 7:56 AM
> To: Joakim Tjernlund
> Cc: [email protected]
> Subject: Re: [U-Boot] [PATCH] MPC512x: workaround data 
> corruption forunaligned local bus accesses
> 
> Dear Joakim Tjernlund,
> 
> In message 
> <ofeb4e68bc.f6b8c9d0-onc1257751.0045ae08-c1257751.0045d...@tra
> nsmode.se> you wrote:
> >
> > > I could not come up with a better name... What is "align32wrap"
> > > supposed to mean?
> > 
> > mpc5200_memcpy_fromio() resp. mpc5200_memcpy_toio()?
> 
> No. It's not only MPC5200, but also MPC521x. It's not I/O in 
> general, but only I/O from the Local Bus. And even then only 
> unaliged read access.
> 
> But memcpy_for_unaligned_read_from_local_bus() was too long 
> for me, and memcpy_furflb() too cryptic ;-)
> 
> Best regards,
> 
> Wolfgang Denk

I just posted a patch on the linuxppc-dev list that simply uses a
slightly modified version of memcpy to always keep the source address
aligned.  I had conditionals in that one so it only used it for MPC512x
or MPC52xx but you should be able to replace the regular memcpy with
this version.  This way you can avoid the wrappers and extra checks.  It
is a simple enough change in that case:


diff --git a/arch/powerpc/lib/ppcstring.S b/arch/powerpc/lib/ppcstring.S
index 97023a0..4e17265 100644
--- a/arch/powerpc/lib/ppcstring.S
+++ b/arch/powerpc/lib/ppcstring.S
@@ -114,7 +114,7 @@ memcpy:
        addi    r6,r3,-4
        addi    r4,r4,-4
        beq     2f                      /* if less than 8 bytes to do */
-       andi.   r0,r6,3                 /* get dest word aligned */
+       andi.   r0,r4,3                 /* get src word aligned */
        mtctr   r7
        bne     5f
 1:     lwz     r7,4(r4)
@@ -125,6 +125,8 @@ memcpy:
        andi.   r5,r5,7
 2:     cmplwi  0,r5,4
        blt     3f
+       andi.   r0,r4,3
+       bne     3f
        lwzu    r0,4(r4)
        addi    r5,r5,-4
        stwu    r0,4(r6)
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to