Subject: Re: /bin/sh (?) problem on md-root on ZAO425
To: Chris Gilbert <chris@dokein.co.uk>
From: Chris Gilbert <chris@dokein.co.uk>
List: port-arm
Date: 08/16/2003 00:01:35
This is a multi-part message in MIME format.

--Multipart_Sat__16_Aug_2003_00:01:35_+0100_08216e00
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

On Fri, 15 Aug 2003 22:27:32 +0100
Chris Gilbert <chris@dokein.co.uk> wrote:

> On Fri, 15 Aug 2003 12:19:48 +0100 (BST)
> Steve Woodford <scw@netbsd.org> wrote:
> 
> > On Fri, 15 Aug 2003, Shoichi Miyake wrote:
> > 
> > > I think there's someting wrong in
> > > src/lib/libc/arch/arm/string/*.S, correct ?
> > > But I cannot assert, as I'm not familiar with arm assembly
> > > language... I wonder somebody arm expert could examine them...
> > 
> > I looked at memcpy.S when you first reported this problem (I have an
> > IXP425-based board which I'm very slowly working on) and concluded
> > that it was broken for big-endian mode. I just forgot to reply to
> > your earlier email ;-).
> 
> Yep a lot of those funcs may not work for big endian, I'll have a look
> and see if there's an obvious broken case for little endian.

Ok, could someone take a look at the attached files, and see if they
make sense, I believe it's a fairly good excercise of the memcpy
function.  The only thing it doesn't do is an overlapped memcpy, but
then we should be using memmove for that.

memcpy.S and _memcpy.S are copies of the libc/arch/arm/string files,
with the function renamed.  memcpytest.c is meant to exercise the memcpy
code.

included is a stripped binary.

It seems to work fine on my cats box (well it's still running)  If you
could give it a whirl on your boot disk and see if it works.  Note it
takes a while, and it's fairly verbose so you know it's doing something.
 the compile line was gcc -O2 -fno-builtins _memcpy.S memcpy.S
memcpytest.c -o memcpytest

Chris

--Multipart_Sat__16_Aug_2003_00:01:35_+0100_08216e00
Content-Type: application/octet-stream;
 name="memcpytest.tgz"
Content-Disposition: attachment;
 filename="memcpytest.tgz"
Content-Transfer-Encoding: base64

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

--Multipart_Sat__16_Aug_2003_00:01:35_+0100_08216e00--