Which way to store log in flash on mpc8xx?

2005-11-28 Thread David Ho
Hi, just catching up on this problem as I have another unit that
showed the same symptom.
My system looks like this

MPC852T
128Mbytes SDRAM
64Mbytes Flash

Flash partitions
2*1.25Mbytes partitions for Kernel
61.5Mbytes for rootfs and applications.
Remaining 1Mbyte for U-boot, u-boot env and spare.

I get that same problem as well.  kernel BUG at gc.c: 139

I have compiled Perl, Openssl, Openssh, etc running NFS so SDRAM is
definitely not the issue.

David: have you gotten any new insights since?

Regards,
David Ho


On 9/20/05, Wolfgang Denk  wrote:
> In message <200509201117.40454.david.jander at protonic.nl> you wrote:
> >
> > Is there something like memtest86 for linux-ppc (i.e. written in portable 
> > C)?
>
> Yes, there is. Run the system with root file system mounted over NFS,
> and then put some load on the system, like  by  compiling  the  linux
> kernel  on  the  target.  Anything  else which adds DMA load does not
> hurt, either. In such a situation, with a lots of  context  switches,
> stress  on  the  memory  management  system  and having a lots of DMA
> traffic going on you may see some memory problems. Unfortunately none
> of the standard memory tests will catch thse, as  the  tests  usually
> provide  only plain read / write accesses, while the problems show up
> only in burst mode, i. e. when filling the caches and/or doing DMA.
>
> There is an attempt of a burst mode memory test in the  U-Boot  code,
> but  I  have to admit that I didn't work to show the exact problem on
> the system it was written for.
>
> > Hmm, but there is no data corruption. I have not seen one file on flash
> > that had other data than intended, and that inspite of the GC freaking out.
>
> Maybe there is no corruption of the data in flash. But are  you  sure
> that  correct  data are loaded to and read from RAM? We had a similar
> problem on a board where data got corrupted only when doing a lot  of
> transfers flash->RAM.
>
> > That commit only changed 3 files, non of them directly related to jffs2 
> > code,
>
> This is correct.
>
> > and only seemed to add support for FUJITSU flash chips. What am I missing?
> > MTD developers say that cvs from march-2005 _is_ broken, so there must be 
> > some
>
> Yes, of course it's broken. Like  all  computer  code.  There  are  a
> couple  of  known  issues  (especially  with NAND flash), but I don't
> think they could explain the type of problems you are seeing.
>
> Best regards,
>
> Wolfgang Denk
>
> --
> Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> Einstein argued that there must be simplified explanations of nature,
> because God is not capricious or arbitrary. No  such  faith  comforts
> the software engineer. - Fred Brooks, Jr.
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



NPTL support on PPC

2005-10-13 Thread David Ho
glibc used on ELDK 3.0 is still using linuxthreads.

David

bash-2.05# ./libc.so.6
GNU C Library stable release version 2.3.1, by Roland McGrath et al.
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.2.2 20030217 (Yellow Dog Linux 3.0 3.2.2-2a_1).
Compiled on a Linux 2.4.24-pre2 system on 2004-02-17.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.10 by Xavier Leroy
BIND-8.2.3-T5B
libthread_db work sponsored by Alpha Processor Inc
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
software FPU emulation by Richard Henderson, Jakub Jelinek and others
Report bugs using the `glibcbug' script to .


On 10/13/05, David Ho  wrote:
>
> Hi all,
>
> Just out of curiosity, is NPTL support already available on PPC?
>
> I believe there are 2 parts to it. Kernel support which is probably
> already there in 2.6. And the other is glibc, is there a generally
> available toolchain (i.e. ELDK) that already support NPTL?
>
> Thanks, David
>
-- next part --
An HTML attachment was scrubbed...
URL: 
http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20051013/bba2bd8b/attachment.htm
 


NPTL support on PPC

2005-10-13 Thread David Ho
Hi all,

Just out of curiosity, is NPTL support already available on PPC?

I believe there are 2 parts to it. Kernel support which is probably already
there in 2.6. And the other is glibc, is there a generally available
toolchain (i.e. ELDK) that already support NPTL?

Thanks, David
-- next part --
An HTML attachment was scrubbed...
URL: 
http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20051013/e712cff9/attachment.htm
 


Meet at OLS2005

2005-07-20 Thread David Ho
Grant, The CE Linux forum is holding a embedded linux BOF at Les
Suites at the same time.  It is probably more ARM based, but it will
have lots of interested talks about XIP, PM suspend/resume, etc.

Not sure if you are interested to attend there as well.

David

On 7/20/05, Grant Likely  wrote:
> I talked to Kumar on the last break.  We're going to have the
> ppcembedded BOF on Thursday at 7:00 in the downstairs lounge.  I'm
> about to post an announcement on the mailing list.  Let everyone know
> 
> g.
> 
> On 7/20/05, David Ho  wrote:
> > btw, Marcelo is asking when/where the ppc BOF will take place, I'm in
> > Room C again from 3-4pm, the last talk ran late.  Maybe meet at the
> > Sofas outside Room C at 4pm.
> > Can talk about ppc BOF, I'm interested.
> >
> > David
> >
> > On 7/20/05, Grant Likely  wrote:
> > > I just got back online after lunch, so I probably missed you; I'm
> > > available between now and the next session.  At the moment I'm on the
> > > 3rd floor at the DConf BOF.  I'll have my email up that whole time
> > > also.
> > >
> > > Cheers
> > > g.
> > >
> > > On 7/20/05, David Ho  wrote:
> > > > Do you want to meet up now? I'm at Room C at the bottom floor.  There
> > > > are a bunch of sofas outside so it might be a better place to
> > > > chill/chat.
> > > >
> > > > David
> > > >
> > > > On 7/20/05, Grant Likely  wrote:
> > > > > David, Kumar;
> > > > >
> > > > > I'd like to meet both of you today, but as I don't know what either of
> > > > > you look like it's hard to track you down  :-)
> > > > >
> > > > > When you get this, could you please either call me on my cell (403)
> > > > > 399-0195 or email me back?
> > > > >
> > > > > At the moment, I'm in the NLKD session in Room A.  (Middle section,
> > > > > 4th row back, dark blue tee-shirt.)
> > > > >
> > > > > Thanks,
> > > > > g.
> > > > >
> > > >
> > >
> > >
> > > --
> > > "Why do musicians compose symphonies and poets write poems? They do it
> > > because life wouldn't have any meaning for them if they didn't.
> > > That's why I draw cartoons. It's my life."
> > >
> > > -- Charles Shultz
> > >
> >
> 
> 
> --
> "Why do musicians compose symphonies and poets write poems? They do it
> because life wouldn't have any meaning for them if they didn't.
> That's why I draw cartoons. It's my life."
> 
> -- Charles Shultz
>



How reliable is jffs2 really (denx cvs devel kernel)?

2005-07-19 Thread David Ho
Wolfgang,

It must have be more than a year ago that I did this.   And I have not
done any testing with the latest devel kernel from your CVS so I am
not making any conclusion about the latest kernel.

Just trying to be helpful.  

The mount time issue is fixed a long time ago, so your back port most
probably has this fix.

David

On 7/19/05, Wolfgang Denk  wrote:
> In message <4dd15d1805071905573ebcba61 at mail.gmail.com> you wrote:
> >
> > I updated the JFFS2 portion of the Denx devel kernel with the latest
> > from CVS and it solved the initial mount time problem.  But it was a
> > while a ago when I did this.  Both the devel kernel and the CVS head
> > has changed quite a bit since then.
> 
> I would rally appreciate if you mentioned which exact version of  the
> kernel you are talking about. "The Denx devel kernel" can be anything
> - either yesterday or 3 years old.
> 
> At the moment our CVS tree contains a snapshot from MTD CVS of  March
> 13, 2005; yes, we did the necessary backport to the 2.4 kernel.
> 
> Do you want to say that this version still  has  mount  time  issues?
> Please provide details!
> 
> 
> Best regards,
> 
> Wolfgang Denk
> 
> --
> Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> The word "fit", as I understand it, means "appropriate to a purpose",
> and I would say the body of the Dean is supremely appropriate to  the
> purpose of sitting around all day and eating big heavy meals.
>  - Terry Pratchett, _Moving Pictures_
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



How reliable is jffs2 really (denx cvs devel kernel)?

2005-07-19 Thread David Ho
I ran into similar problems, I had talked to David Woodhouse about a
number of issues with JFFS2.  But he has no plans to support 2.4
kernels.

There are a bunch of people that back ports the latest JFFS2 code from
2.6 and snapshots are found here
ftp://ftp.uk.linux.org/pub/people/dwmw2/mtd/cvs/.

I updated the JFFS2 portion of the Denx devel kernel with the latest
from CVS and it solved the initial mount time problem.  But it was a
while a ago when I did this.  Both the devel kernel and the CVS head
has changed quite a bit since then.

But some people on the mailing list seem to indicate timing resolution
in the 2.4 leading to race condition, or some other deficiency from
what I recall.

The people in the mailing list were not interested in fixing these so
called kernel bugs.  And since JFFS2 code is too complex for my spare
time and it does not cause the kernel to hang, I have yet to figure
out a fix for it.

I like to know other's experience with JFFS2 on 2.4 as well.

David


On 7/19/05, David Jander  wrote:
> 
> Hi,
> 
> I have seen some strange problems with jffs2. I have been victim of the BUG()
> in fs/jffs2/gc.c, line 139. I have been battling with kgdb to see what
> happens there. Here are my findings until now (I am still working on this):
> 
> c->checked_ino starts counting from 0
> c->highest_ino is 92 ()
> 
> Isn't this a little low?
> 
> Flash partition size is 15Mbyte, it probably has been mistreated by writing
> large files (logfiles) line by line, wasting a lot of space until it gets
> almost full.
> When debugging the for(;;) loop, used size starts from a few kb counting up,
> dirty size is around 5 Mb and unchecked size is about 9.9Mb, so when it gets
> past inode 92 it most probably has still a lot of unchecked space.===> BUG().
> 
> Googleing for this bug, I have found discouraging e-mails (luckily most of
> them from 2003 or older) saying that this is common and nobody (back then)
> seemed to know where it came from. Bugs in fjjs2 code, etc
> 
> This is scaring me.
> 
> Anybody knows more about this problem, why it is caused, and hopefully how to
> prevent this?
> 
> Thanks,
> 
> --
> David Jander
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



[OLS 2005] Ottawa pub ideas - V 2.0

2005-07-18 Thread David Ho
Minor update.  Some links were broken.

David

---
D'arcy McGee's Irish Pub
44 Sparks Street
Ottawa, ON
Tel:(613)230-4433

http://www.darcymcgees.ca/ottawa/

It's Ottawa's authentic Irish Pub, designed and built in Ireland. A
large selection of Irish Whiskeys, Single Malt Scotches, Bourbons,
Cognacs, and Ports awaits those with discerning tastes. Darcy's offers
live entertainment four nights a week (from Wednesday to Saturday
night) featuring Celtic, Maritime, Irish and a mix of contemporary
songs.


Parliament Pub
101 Sparks Street
Ottawa , ON
Tel:(613) 563-0636
www.parliamentpub.com

The Parliament Pub combines Dining and Political Fun.  It is directly
across the street from Parliament Hill. It's an inviting spot for
lunch and dinner where excellent food and beverages can be enjoyed
against a political backdrop. The Parliament Pub serves great
sandwiches and wraps and creative salads. A fine selection of beers
(with no political agenda) is on tap.


Heart and Crown Irish Pub
67 Clarence Street
Ottawa , ON

(613) 562-0674

http://www.irishvillage.ca/

Live entertainment Wednesday to Saturday night with the finest bands,
offering a wide range of Popular, Traditional, Scottish and Irish
music.


The Fox and Feather Pub
283 Elgin Street
Ottawa, ON
(613) 233-2219

http://www.foxandfeather.ca

The Fox and Feather Pub is a great place to have a quiet pint, throw a
party or share an evening of fun with friends. They have got a
complimentary pool table, dartboards and board games to add to the
entertainment, and their large selection of beers on-tap covers
everything from Irish brews to Canadian microbreweries.

Pub Italia
434 Preston Street
Ottawa, ON

http://www.pubitalia.ca/welcome.html

Fine Italian food doubles as pub fare, and Wednesdays to Saturdays you
can order dishes after midnight .  Pub Italia represents the perfect
marriage between an Italian trattoria and an Irish pub with its
combination of wonderful pizza and pasta dishes, and an incredible
selection of over 200 beers.

Other notables
-
Honest Lawyer
141 George Street
Ottawa, ON
K1N 5W5
http://www.honestlawyer.com/

Newly opened Restaurant/Lounge

Milestone's Restaurant
700 Susses Drive
Ottawa, ON
http://www.milestonesrestaurants.com/



[OLS 2005] Ottawa pub ideas

2005-07-18 Thread David Ho
Sorry for the wait, and I hope everyone has access to their email in Ottawa.

David

---
D'arcy McGee's Irish Pub
44 Sparks Street
Ottawa, ON
Tel:(613)230-4433

http://www.heartandcrown.com/

It's Ottawa's authentic Irish Pub, designed and built in Ireland. A
large selection of Irish Whiskeys, Single Malt Scotches, Bourbons,
Cognacs, and Ports awaits those with discerning tastes. Darcy's offers
live entertainment four nights a week (from Wednesday to Saturday
night) featuring Celtic, Maritime, Irish and a mix of contemporary
songs.


Parliament Pub
101 Sparks Street
Ottawa , ON
Tel:(613) 563-0636
www.parliamentpub.com

The Parliament Pub combines Dining and Political Fun.  It is directly
across the street from Parliament Hill. It's an inviting spot for
lunch and dinner where excellent food and beverages can be enjoyed
against a political backdrop. The Parliament Pub serves great
sandwiches and wraps and creative salads. A fine selection of beers
(with no political agenda) is on tap.


Heart and Crown Irish Pub
67 Clarence Street
Ottawa , ON

(613) 562-0674

http://www.heartandcrown.com/

Live entertainment Wednesday to Saturday night with the finest bands,
offering a wide range of Popular, Traditional, Scottish and Irish
music.


The Fox and Feather Pub
283 Elgin Street
Ottawa, ON
(613) 233-2219

http://www.foxandfeather.ca

The Fox and Feather Pub is a great place to have a quiet pint, throw a
party or share an evening of fun with friends. They have got a
complimentary pool table, dartboards and board games to add to the
entertainment, and their large selection of beers on-tap covers
everything from Irish brews to Canadian microbreweries.

Pub Italia
434 Preston Street
Ottawa, ON

http://www.pubitalia.ca/welcome.html

Fine Italian food doubles as pub fare, and Wednesdays to Saturdays you
can order dishes after midnight .  Pub Italia represents the perfect
marriage between an Italian trattoria and an Irish pub with its
combination of wonderful pizza and pasta dishes, and an incredible
selection of over 200 beers.

Other notables
-
Honest Lawyer 
141 George Street
Ottawa, ON
K1N 5W5
http://www.honestlawyer.com/

Newly opened Restaurant/Lounge

Milestone's Restaurant
700 Susses Drive
Ottawa, ON
http://www.milestonesrestaurants.com/



OLS 2005

2005-07-12 Thread David Ho
Heads up for ppl coming to Ottawa next week, it is 34 degrees Celsius
all this week, and the weather has been like that for a few weeks. 
It's gonna be hot and sweaty...

David

On 7/12/05, Grant Likely  wrote:
> On 7/11/05, Greg KH  wrote:
> > On Mon, Jul 11, 2005 at 10:04:30PM -0600, Grant Likely wrote:
> > > On 7/6/05, Kumar Gala  wrote:
> > > > On Jul 6, 2005, at 12:49 PM, Grant Likely wrote:
> > > > > On 4/27/05, Kumar Gala  wrote:
> > > > >
> > > > >> I wondering if we can get a PPC BoF together, ...
> > > The schedule is now posted on the OLS website.  Thursday and Friday
> > > evenings are set for scheduled BOFs.  Why don't we tentatively plan an
> > > unoffical PPCembedded BOF Thursday evening?
> > >
> > > We should try to meet each other during the day Wednesday and choose a
> > > good time.
> > >
> > > > > I'd like to discuss the platform bus a bit.  As was discussed a month
> > > > > or so ago, there is no clean way of matching multiple device drivers
> > > > > to a single device type, like with PSCs on the MPC5200.
> > > > >
> > > > We should try to see if we can find GregKH to discuss what changes
> > > > would need to be made to the driver core to allow this.
> > > >
> > > How 'bout it Greg?  Can we get some of your time?
> >
> > Sure, grab me, but I'll have just taught 6 hours of tutorials and will
> > probably want a beer or three :)
> 
> Maybe I'll just need to buy you one of those beers to keep you cooperative.
> 
> g.
> >
> > thanks,
> >
> > greg k-h
> >
> 
> 
> --
> "Why do musicians compose symphonies and poets write poems? They do it
> because life wouldn't have any meaning for them if they didn't.
> That's why I draw cartoons. It's my life."
> 
> -- Charles Shultz
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



crosstool-0.37

2005-07-11 Thread David Ho
Hi, Thanks to Tim Hayman (my boss =),  Crosstool-0.37 can now build a
cross-compiling GCJ using GCC 4.0.x source and an older GCC core (the GCC
core is used to build glibc which is required for the actual GCC build when
you select more complex features such as C++ and Java).  This is of course
tested on MPC8xx our favourite platform at Nanometrics.

David




PPC bn_div_words routine rewrite

2005-07-05 Thread David Ho
Okay, having actually did what Andy suggested, i.e. the one liner fix
in the assembly code, bn_div_words returns the correct results.

At this point, my conclusion is, up to openssl-0.9.8-beta6,  the ppc32
bn_div_words routine generated from crypto/bn/ppc.pl is still busted. 
Your solution is either to use the one liner fix andy provided in his
reply or my routine.  My solution is a complete rewrite of the
routine, which is tested to work on ppc8xx.  I personally do not know
why it would not work on other ppc32 systems but if you have time to
spare you are welcome to give it a try on your ppc32, because it is by
far the most straight-forward algorithm for division.  If you have
done long division on paper from your primary school days, this
function mimics exactly the long division steps in binary (as opposed
to decimal).  Way easier to fix if you know what the algorithm is
trying to do.

Comments I have for the old routine are:

Why do you signal an overflow condition when it appears functions that
call bn_div_words do not check for overflow conditions?  That's why in
my routine I just let the register overflow.

Why the complexity, does it offer performance advantage?  Obviously
code size is huge compared to mine.

David










On 7/5/05, David Ho  wrote:
> Let's take first call to BN_div_word for example from BN_bn2dec, the
> parameter being passed to BN_div_word is (a=35, w=10) (decimal
> numbers).  It then calls the bn_div_words with (h=0, l=35,
> d=10)  if you examine the code in linux_ppc32.s it will exit
> early on because h is 0.  the routine returns a divide by 0, which is
> undefined according to the manual.  In the case of ppc8xx the result
> is 0x8000.  So this is the return value from bn_div_words, as seen
> in register R3.
> 
> So what happens next is BN_div_word modifies "a" (1st parameter) with
> the result (0x8000) and returns 23 as the remainder of the
> division. So "a" is never zero as a result and hence the test for
> BN_is_zero is always false.  The problem fails the very first time it
> uses bn_div_words.
> 
> The next thing I did naturally was to fix the case when you have h=0,
> which you can quite easy do it with the native divwu instruction.  Lo
> and behold I was once again disappointed when h is not equal to 0.
> 
> More to come...
> 
> 
> On 7/5/05, David Ho  wrote:
> > I can tell you with certainty, with reference to the function
> > BN_bn2dec, that since lp is a pointer, and within the while loop
> > around bn_print.c:136 lp is being incremented.  Because the test
> > BN_is_zero(t) is always false, you have a pointer that is going off
> > into the stratosphere, hence the segfault on ppc8xx.
> >
> > More analysis to come.
> >
> > On 7/5/05, David Ho  wrote:
> > > First pass debugging results from gdb on ppc8xx.  Executing ssh-keygen
> > > with following arguments.
> > >
> > > (gdb) show args
> > > Argument list to give program being debugged when it is started is
> > > "-t rsa1 -f /etc/ssh/ssh_host_key -N """.
> > >
> > > Program received signal SIGSEGV, Segmentation fault.
> > > BN_bn2dec (a=0x1002d9f0) at bn_print.c:136
> > > 136 *lp=BN_div_word(t,BN_DEC_CONV);
> > >
> > > (gdb) i r
> > > r0 0x0  0
> > > r1 0x7fffd580   2147472768
> > > r2 0x30012868   805382248
> > > r3 0x8000   2147483648
> > > r4 0xfef33fc267334652
> > > r5 0x25 37
> > > r6 0xfccdef8265084664
> > > r7 0x7fffd4c0   2147472576
> > > r8 0xfbad2887   4222429319
> > > r9 0x84044022   2214871074
> > > r100x0  0
> > > r110x2  2
> > > r120xfef2054267329620
> > > r130x10030bc8   268635080
> > > r140x0  0
> > > r150x0  0
> > > r160x0  0
> > > r170x0  0
> > > r180x0  0
> > > r190x0  0
> > > r200x0  0
> > > r210x0  0
> > > r220x0  0
> > > r230x64 100
> > > r240x5  5
> > > r250x1002d438   268620856
> > > r260x1002d9f0   268622320
> > > r270x1002c578   268617080
> > > r280x1  1
> > > r290x10031000   268636160
> >

PPC bn_div_words routine rewrite

2005-07-05 Thread David Ho
Let's take first call to BN_div_word for example from BN_bn2dec, the
parameter being passed to BN_div_word is (a=35, w=10) (decimal
numbers).  It then calls the bn_div_words with (h=0, l=35,
d=10)  if you examine the code in linux_ppc32.s it will exit
early on because h is 0.  the routine returns a divide by 0, which is
undefined according to the manual.  In the case of ppc8xx the result
is 0x8000.  So this is the return value from bn_div_words, as seen
in register R3.

So what happens next is BN_div_word modifies "a" (1st parameter) with
the result (0x8000) and returns 23 as the remainder of the
division. So "a" is never zero as a result and hence the test for
BN_is_zero is always false.  The problem fails the very first time it
uses bn_div_words.

The next thing I did naturally was to fix the case when you have h=0,
which you can quite easy do it with the native divwu instruction.  Lo
and behold I was once again disappointed when h is not equal to 0.

More to come...


On 7/5/05, David Ho  wrote:
> I can tell you with certainty, with reference to the function
> BN_bn2dec, that since lp is a pointer, and within the while loop
> around bn_print.c:136 lp is being incremented.  Because the test
> BN_is_zero(t) is always false, you have a pointer that is going off
> into the stratosphere, hence the segfault on ppc8xx.
> 
> More analysis to come.
> 
> On 7/5/05, David Ho  wrote:
> > First pass debugging results from gdb on ppc8xx.  Executing ssh-keygen
> > with following arguments.
> >
> > (gdb) show args
> > Argument list to give program being debugged when it is started is
> > "-t rsa1 -f /etc/ssh/ssh_host_key -N """.
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > BN_bn2dec (a=0x1002d9f0) at bn_print.c:136
> > 136 *lp=BN_div_word(t,BN_DEC_CONV);
> >
> > (gdb) i r
> > r0 0x0  0
> > r1 0x7fffd580   2147472768
> > r2 0x30012868   805382248
> > r3 0x8000   2147483648
> > r4 0xfef33fc267334652
> > r5 0x25 37
> > r6 0xfccdef8265084664
> > r7 0x7fffd4c0   2147472576
> > r8 0xfbad2887   4222429319
> > r9 0x84044022   2214871074
> > r100x0  0
> > r110x2  2
> > r120xfef2054267329620
> > r130x10030bc8   268635080
> > r140x0  0
> > r150x0  0
> > r160x0  0
> > r170x0  0
> > r180x0  0
> > r190x0  0
> > r200x0  0
> > r210x0  0
> > r220x0  0
> > r230x64 100
> > r240x5  5
> > r250x1002d438   268620856
> > r260x1002d9f0   268622320
> > r270x1002c578   268617080
> > r280x1  1
> > r290x10031000   268636160
> > r300xffbf7d0268171216
> > r310x1002d9f0   268622320
> > pc 0xfef2058267329624
> > ps 0xd032   53298
> > cr 0x24044022   604258338
> > lr 0xfef2054267329620
> > ctr0xfccefa0265088928
> > xer0x2000   536870912
> > fpscr  0x0  0
> > vscr   0x0  0
> > vrsave 0x0  0
> >
> > (gdb) p/x $pc
> > $1 = 0xfef2058
> >
> > 0x0fef2058 : stw r3,0(r29)
> >
> > (gdb) x 0x10031000
> > 0x10031000: Cannot access memory at address 0x10031000
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On 7/5/05, David Ho  wrote:
> > > This is the second confirmed report of the same problem on the ppc8xx.
> > >
> > > After reading my email.  I must say I was the unfriendly one, I
> > > apologize for that.
> > >
> > > More debugging evidence to come.
> > >
> > > -- Forwarded message --
> > > From: Murch, Christopher 
> > > Date: Jul 1, 2005 9:46 AM
> > > Subject: RE: PPC bn_div_words routine rewrite
> > > To: David Ho 
> > >
> > >
> > > David,
> > > I had observed the same issue on ppc 8xx machines after upgrading to the 
> > > asm
> > > version of the BN routines.  Thank you very much for your work for the 
> > > fix.
> > > 

PPC bn_div_words routine rewrite

2005-07-05 Thread David Ho
I can tell you with certainty, with reference to the function
BN_bn2dec, that since lp is a pointer, and within the while loop
around bn_print.c:136 lp is being incremented.  Because the test
BN_is_zero(t) is always false, you have a pointer that is going off
into the stratosphere, hence the segfault on ppc8xx.

More analysis to come.

On 7/5/05, David Ho  wrote:
> First pass debugging results from gdb on ppc8xx.  Executing ssh-keygen
> with following arguments.
> 
> (gdb) show args
> Argument list to give program being debugged when it is started is
> "-t rsa1 -f /etc/ssh/ssh_host_key -N """.
> 
> Program received signal SIGSEGV, Segmentation fault.
> BN_bn2dec (a=0x1002d9f0) at bn_print.c:136
> 136 *lp=BN_div_word(t,BN_DEC_CONV);
> 
> (gdb) i r
> r0 0x0  0
> r1 0x7fffd580   2147472768
> r2 0x30012868   805382248
> r3 0x8000   2147483648
> r4 0xfef33fc267334652
> r5 0x25 37
> r6 0xfccdef8265084664
> r7 0x7fffd4c0   2147472576
> r8 0xfbad2887   4222429319
> r9 0x84044022   2214871074
> r100x0  0
> r110x2  2
> r120xfef2054267329620
> r130x10030bc8   268635080
> r140x0  0
> r150x0  0
> r160x0  0
> r170x0  0
> r180x0  0
> r190x0  0
> r200x0  0
> r210x0  0
> r220x0  0
> r230x64 100
> r240x5  5
> r250x1002d438   268620856
> r260x1002d9f0   268622320
> r270x1002c578   268617080
> r280x1  1
> r290x10031000   268636160
> r300xffbf7d0268171216
> r310x1002d9f0   268622320
> pc 0xfef2058267329624
> ps 0xd032   53298
> cr 0x24044022   604258338
> lr 0xfef2054267329620
> ctr0xfccefa0265088928
> xer0x2000   536870912
> fpscr  0x0  0
> vscr   0x0  0
> vrsave 0x0  0
> 
> (gdb) p/x $pc
> $1 = 0xfef2058
> 
> 0x0fef2058 : stw r3,0(r29)
> 
> (gdb) x 0x10031000
> 0x10031000: Cannot access memory at address 0x10031000
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On 7/5/05, David Ho  wrote:
> > This is the second confirmed report of the same problem on the ppc8xx.
> >
> > After reading my email.  I must say I was the unfriendly one, I
> > apologize for that.
> >
> > More debugging evidence to come.
> >
> > -- Forwarded message --
> > From: Murch, Christopher 
> > Date: Jul 1, 2005 9:46 AM
> > Subject: RE: PPC bn_div_words routine rewrite
> > To: David Ho 
> >
> >
> > David,
> > I had observed the same issue on ppc 8xx machines after upgrading to the asm
> > version of the BN routines.  Thank you very much for your work for the fix.
> > My question is, do you have high confidence in the other new asm ppc BN
> > routines after observing this issue or do you think they might have similiar
> > problems?
> > Thanks.
> > Chris
> >
> > -Original Message-
> > From: David Ho [mailto:davidkwho at gmail.com]
> > Sent: Thursday, June 30, 2005 6:22 PM
> > To: openssl-dev at openssl.org; linuxppc-embedded at ozlabs.org
> > Subject: Re: PPC bn_div_words routine rewrite
> >
> >
> > The reason I had to redo this routine, in case anyone is wondering, is
> > because ssh-keygen  segfaults when this assembly routine returns junk
> > to the BN_div_word function. On a ppc, if you issue the command
> >
> > ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""
> >
> > The program craps out when it tries to write the public key in ascii
> > decimal.
> >
> > Regards,
> > David
> >
> > On 6/30/05, David Ho  wrote:
> > > Hi all,
> > >
> > > This is a rewrite of the bn_div_words routine for the PowerPC arch,
> > > tested on a MPC8xx processor.
> > > I initially thought there is maybe a small mistake in the code that
> > > requires a one-liner change but it turns out I have to redo the
> > > routine.
> > > I guess this routine is not called very often as I see that most other
> > > routines are hand-crafted, whereas this routine is compiled from 

PPC bn_div_words routine rewrite

2005-07-05 Thread David Ho
First pass debugging results from gdb on ppc8xx.  Executing ssh-keygen
with following arguments.

(gdb) show args
Argument list to give program being debugged when it is started is
"-t rsa1 -f /etc/ssh/ssh_host_key -N """.

Program received signal SIGSEGV, Segmentation fault.
BN_bn2dec (a=0x1002d9f0) at bn_print.c:136
136 *lp=BN_div_word(t,BN_DEC_CONV);

(gdb) i r
r0 0x0  0
r1 0x7fffd580   2147472768
r2 0x30012868   805382248
r3 0x8000   2147483648
r4 0xfef33fc267334652
r5 0x25 37
r6 0xfccdef8265084664
r7 0x7fffd4c0   2147472576
r8 0xfbad2887   4222429319
r9 0x84044022   2214871074
r100x0  0
r110x2  2
r120xfef2054267329620
r130x10030bc8   268635080
r140x0  0
r150x0  0
r160x0  0
r170x0  0
r180x0  0
r190x0  0
r200x0  0
r210x0  0
r220x0  0
r230x64 100
r240x5  5
r250x1002d438   268620856
r260x1002d9f0   268622320
r270x1002c578   268617080
r280x1  1
r290x10031000   268636160
r300xffbf7d0268171216
r310x1002d9f0   268622320
pc 0xfef2058267329624
ps 0xd032   53298
cr 0x24044022   604258338
lr 0xfef2054267329620
ctr0xfccefa0265088928
xer0x2000   536870912
fpscr  0x0  0
vscr   0x0  0
vrsave 0x0  0

(gdb) p/x $pc
$1 = 0xfef2058

0x0fef2058 : stw r3,0(r29)

(gdb) x 0x10031000
0x10031000: Cannot access memory at address 0x10031000










On 7/5/05, David Ho  wrote:
> This is the second confirmed report of the same problem on the ppc8xx.
> 
> After reading my email.  I must say I was the unfriendly one, I
> apologize for that.
> 
> More debugging evidence to come.
> 
> -- Forwarded message --
> From: Murch, Christopher 
> Date: Jul 1, 2005 9:46 AM
> Subject: RE: PPC bn_div_words routine rewrite
> To: David Ho 
> 
> 
> David,
> I had observed the same issue on ppc 8xx machines after upgrading to the asm
> version of the BN routines.  Thank you very much for your work for the fix.
> My question is, do you have high confidence in the other new asm ppc BN
> routines after observing this issue or do you think they might have similiar
> problems?
> Thanks.
> Chris
> 
> -Original Message-
> From: David Ho [mailto:davidkwho at gmail.com]
> Sent: Thursday, June 30, 2005 6:22 PM
> To: openssl-dev at openssl.org; linuxppc-embedded at ozlabs.org
> Subject: Re: PPC bn_div_words routine rewrite
> 
> 
> The reason I had to redo this routine, in case anyone is wondering, is
> because ssh-keygen  segfaults when this assembly routine returns junk
> to the BN_div_word function. On a ppc, if you issue the command
> 
> ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""
> 
> The program craps out when it tries to write the public key in ascii
> decimal.
> 
> Regards,
> David
> 
> On 6/30/05, David Ho  wrote:
> > Hi all,
> >
> > This is a rewrite of the bn_div_words routine for the PowerPC arch,
> > tested on a MPC8xx processor.
> > I initially thought there is maybe a small mistake in the code that
> > requires a one-liner change but it turns out I have to redo the
> > routine.
> > I guess this routine is not called very often as I see that most other
> > routines are hand-crafted, whereas this routine is compiled from a C
> > function that apparently has not gone through a whole lot of testing.
> >
> > I wrote a C function to confirm correctness of the code.
> >
> > unsigned long div_words (unsigned long h,
> >  unsigned long l,
> >  unsigned long d)
> > {
> >   unsigned long i_h; /* intermediate dividend */
> >   unsigned long i_q; /* quotient of i_h/d */
> >   unsigned long i_r; /* remainder of i_h/d */
> >
> >   unsigned long i_cntr;
> >   unsigned long i_carry;
> >
> >   unsigned long ret_q; /* return quotient */
> >
> >   /* cannot divide by zero */
> >   if (d == 0) return 0x;
> >
> >   /* do simple 32-bit divide */
> >   if (h == 0) return l/d;
> >
> >   i_q = h/d;
> >   i_r = h - (i_q*d);
> >   ret_q = i_q;
> >
> >   i_cntr = 32;
> >
> >   while (i_cntr--)
&g

Fwd: PPC bn_div_words routine rewrite

2005-07-05 Thread David Ho
This is the second confirmed report of the same problem on the ppc8xx.

After reading my email.  I must say I was the unfriendly one, I
apologize for that.

More debugging evidence to come.

-- Forwarded message --
From: Murch, Christopher <[EMAIL PROTECTED]>
Date: Jul 1, 2005 9:46 AM
Subject: RE: PPC bn_div_words routine rewrite
To: David Ho 


David,
I had observed the same issue on ppc 8xx machines after upgrading to the asm
version of the BN routines.  Thank you very much for your work for the fix.
My question is, do you have high confidence in the other new asm ppc BN
routines after observing this issue or do you think they might have similiar
problems?
Thanks.
Chris

-Original Message-
From: David Ho [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 30, 2005 6:22 PM
To: openssl-dev at openssl.org; linuxppc-embedded at ozlabs.org
Subject: Re: PPC bn_div_words routine rewrite


The reason I had to redo this routine, in case anyone is wondering, is
because ssh-keygen  segfaults when this assembly routine returns junk
to the BN_div_word function. On a ppc, if you issue the command

ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""

The program craps out when it tries to write the public key in ascii
decimal.

Regards,
David

On 6/30/05, David Ho  wrote:
> Hi all,
>
> This is a rewrite of the bn_div_words routine for the PowerPC arch,
> tested on a MPC8xx processor.
> I initially thought there is maybe a small mistake in the code that
> requires a one-liner change but it turns out I have to redo the
> routine.
> I guess this routine is not called very often as I see that most other
> routines are hand-crafted, whereas this routine is compiled from a C
> function that apparently has not gone through a whole lot of testing.
>
> I wrote a C function to confirm correctness of the code.
>
> unsigned long div_words (unsigned long h,
>  unsigned long l,
>  unsigned long d)
> {
>   unsigned long i_h; /* intermediate dividend */
>   unsigned long i_q; /* quotient of i_h/d */
>   unsigned long i_r; /* remainder of i_h/d */
>
>   unsigned long i_cntr;
>   unsigned long i_carry;
>
>   unsigned long ret_q; /* return quotient */
>
>   /* cannot divide by zero */
>   if (d == 0) return 0x;
>
>   /* do simple 32-bit divide */
>   if (h == 0) return l/d;
>
>   i_q = h/d;
>   i_r = h - (i_q*d);
>   ret_q = i_q;
>
>   i_cntr = 32;
>
>   while (i_cntr--)
>   {
> i_carry = (l & 0x8000) ? 1:0;
> l = l << 1;
>
> i_h = (i_r << 1) | i_carry;
> i_q = i_h/d;
> i_r = i_h - (i_q*d);
>
> ret_q = (ret_q << 1) | i_q;
>   }
>
>   return ret_q;
> }
>
>
> Then I handcrafted the routine in PPC assembly.
> The result is a 26 line assembly that is easy to understand and
> predictable as opposed to a 81liner that I am still trying to
> decipher...
> If anyone is interested in incorporating this routine to the openssl
> code I'll be happy to assist.
> At this point I think I will be taking a bit of a break from this 3
> day debugging/fixing marathon.
>
> Regards,
> David Ho
>
>
> #
> #   Handcrafted version of bn_div_words
> #
> #   r3 = h
> #   r4 = l
> #   r5 = d
>
> cmplwi  0,r5,0  # compare r5 and 0
> bc  BO_IF_NOT,CR0_EQ,.Lppcasm_div1  # proceed if d!=0
> li  r3,-1   # d=0 return -1
> bclrBO_ALWAYS,CR0_LT
> .Lppcasm_div1:
> cmplwi  0,r3,0  # compare r3 and 0
> bc  BO_IF_NOT,CR0_EQ,.Lppcasm_div2  # proceed if h != 0
> divwu   r3,r4,r5# ret_q = l/d
> bclrBO_ALWAYS,CR0_LT# return result in r3
> .Lppcasm_div2:
> divwu   r9,r3,r5# i_q = h/d
> mullw   r10,r9,r5   # i_r = h - (i_q*d)
> subfr10,r10,r3
> mr  r3,r9   # req_q = i_q
> .Lppcasm_set_ctr:
> li  r12,32  # ctr = bitsizeof(d)
> mtctr   r12
> .Lppcasm_div_loop:
> addcr4,r4,r4# l = l << 1 -> i_carry
> adder11,r10,r10 # i_h = (i_r << 1) | i_carry
> divwu   r9,r11,r5   # i_q = i_h/d
> mullw   r10,r9,r5   # i_r = i_h - (i_q*d)
> subfr10,r10,r11
> add r3,r3,r3# ret_q = ret_q << 1 | i_q
> add r3,r3,r9
> bc  BO_dCTR_NZERO,CR0_EQ,.Lppcasm_div_loop
> .Lppc_div_end:
> bclrBO_ALWAYS,CR0_LT# return result in r3
> .long   0x
>
___
Linuxppc-embedded mailing list
Linuxppc-embedded at ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded



PPC bn_div_words routine rewrite

2005-07-04 Thread David Ho
Good morning gentleman,  

Let's start the week off with less hostility and more productive
criticism on this topic.  As I see it, the popular Linux distributions
are not that interested on ppc32 since neither Novell nor Redhat
openly support this arch.  We will have to put our heads together to
make ppc32 a stable Linux platform.

On 7/1/05, Andy Polyakov  wrote:

> BN_div_word does write to memory, but I fail
> to see how a bogus value could possibly trigger seg-fault. 

Assuming that you are a maintainer of the openssl code, which I gather
you are, would you even care to take the time to examine the code in
suspect, or find someone who is capable of doing that, I'm sure you
must have a lot of friends, at least one who is knowledgeable in the
ppc32 arch.

> The only
> possibility is that assembler doesn't follow ABI convention and corrupts
> registers, which caller is using/expects to be preserved by callee.
> There're several PPC ABI flavors in use, but OpenSSL routines were
> designed ABI-neutral, Well, "neutrality" really means "common
> denominator for ABI specs examined at the moment of coding," so there is
> a window of opportunity that it won't be "neutral" to future ABI, but is
> it really case? 

I don't understand the terminology you use here.  As I understand it
ABI is there so binaries can inter-operate in the case of dynamic
loading, when the ABI is consistent you can use any compiler that
conforms to the ABI and those binaries can work together.  As I see it
I'm building openssl and openssh with the same compiler so what is the
real issue here?  Or is it an issue at all?

If you are referring to C calling convention, then I can only guess
you have figured it out or otherwise none of the assembly routine will
work.

> That your system uses some newly designed PPC ABI? You
> never mentioned what's your system...

In my very first email, I have already said quote "tested on a MPC8xx
processor"  and I am using 2.4.24 which is nothing close to the
bleeding edge so I reckon the ABI is fairly standard.

Do you have any experience with the PowerPC arch?  

> But you're apparently right about a bug being present in PPC assembler.

So you are saying there is a bug in the GCC assembler?  How confident
are you in that?  Is the first correct step to examine the assembly
code for errors before jumping to any conclusion that the GCC
assembler is bad?

> >>This is a rewrite of the bn_div_words routine for the PowerPC arch,
> >>tested on a MPC8xx processor.
> 
> Well, suggested routine apparently sends ssh-keygen on the PPC-based
> 32-bit system I have access to to an end-less loop... 

If you care to read the c function I supplied or if you don't believe
it:  If you understand ppc 32-bit instructions, as specified in the
PowerPC Microprocessor Family: Programming Environments for 32-Bit
Microprocessors.  My routine would not be able to find a condition
that will make it go into an end-less loop,unless you messed up bad
somewhere.

> And (cd test; make
> test_bn) fails early in BN_sqr... And test/exptest fails miserably with
> "bad reciprocal"...

I don't know what you did but (make test_bn) works for me.  So I
question how diligently you are in setting up the tests.  If you are
busy, please get one of your ppc friends to do it.

> >>I initially thought there is maybe a small mistake in the code that
> >>requires a one-liner change
> 
> But apparently this appears to be the case! Please verify following:
> 
> --- crypto/bn/asm/ppc.pl.orig2004-04-28 00:05:50.0 +0200
> +++ crypto/bn/asm/ppc.pl  2005-07-01 18:58:21.105656512 +0200
> @@ -1717,7 +1717,7 @@
>  li  r9,1# r9=1
>  $SHLr10,r9,r8   # r9<<=r8
>  $UCMP   0,r3,r10#
> -   bc  BO_IF,CR0_GT,Lppcasm_div2   #or if (h > (1< +   bc  BO_IF_NOT,CR0_GT,Lppcasm_div2   #or if (h > (1<  $UDIV   r3,r3,r0#if not assert(0) divide by 0!
>  #that's how we signal overflow
>  bclrBO_ALWAYS,CR0_LT#return. NEVER REACHED.
> 

You don't think I have gone in and fix that before realizing it's
worse than that?  I am sure you didn't think I spend 3 days out in the
beach and somehow come up with an idea of clobbering some useful
routine because I think my routine is better?

In summary, what I am trying to provide the community is an
alternative to do something, the current implementation of which is
very questionable.  You might resist change which is understandable. 
But I were a diligent maintainer and I realize something is broken in
my code, then I will put the time to investigate the problem.

PPC bn_div_words routine rewrite

2005-06-30 Thread David Ho
The reason I had to redo this routine, in case anyone is wondering, is
because ssh-keygen  segfaults when this assembly routine returns junk
to the BN_div_word function. On a ppc, if you issue the command

ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""

The program craps out when it tries to write the public key in ascii decimal.

Regards,
David 

On 6/30/05, David Ho  wrote:
> Hi all,
> 
> This is a rewrite of the bn_div_words routine for the PowerPC arch,
> tested on a MPC8xx processor.
> I initially thought there is maybe a small mistake in the code that
> requires a one-liner change but it turns out I have to redo the
> routine.
> I guess this routine is not called very often as I see that most other
> routines are hand-crafted, whereas this routine is compiled from a C
> function that apparently has not gone through a whole lot of testing.
> 
> I wrote a C function to confirm correctness of the code.
> 
> unsigned long div_words (unsigned long h,
>  unsigned long l,
>  unsigned long d)
> {
>   unsigned long i_h; /* intermediate dividend */
>   unsigned long i_q; /* quotient of i_h/d */
>   unsigned long i_r; /* remainder of i_h/d */
> 
>   unsigned long i_cntr;
>   unsigned long i_carry;
> 
>   unsigned long ret_q; /* return quotient */
> 
>   /* cannot divide by zero */
>   if (d == 0) return 0x;
> 
>   /* do simple 32-bit divide */
>   if (h == 0) return l/d;
> 
>   i_q = h/d;
>   i_r = h - (i_q*d);
>   ret_q = i_q;
> 
>   i_cntr = 32;
> 
>   while (i_cntr--)
>   {
> i_carry = (l & 0x8000) ? 1:0;
> l = l << 1;
> 
> i_h = (i_r << 1) | i_carry;
> i_q = i_h/d;
> i_r = i_h - (i_q*d);
> 
> ret_q = (ret_q << 1) | i_q;
>   }
> 
>   return ret_q;
> }
> 
> 
> Then I handcrafted the routine in PPC assembly.
> The result is a 26 line assembly that is easy to understand and
> predictable as opposed to a 81liner that I am still trying to
> decipher...
> If anyone is interested in incorporating this routine to the openssl
> code I'll be happy to assist.
> At this point I think I will be taking a bit of a break from this 3
> day debugging/fixing marathon.
> 
> Regards,
> David Ho
> 
> 
> #
> #   Handcrafted version of bn_div_words
> #
> #   r3 = h
> #   r4 = l
> #   r5 = d
> 
> cmplwi  0,r5,0  # compare r5 and 0
> bc  BO_IF_NOT,CR0_EQ,.Lppcasm_div1  # proceed if d!=0
> li  r3,-1   # d=0 return -1
> bclrBO_ALWAYS,CR0_LT
> .Lppcasm_div1:
> cmplwi  0,r3,0  # compare r3 and 0
> bc  BO_IF_NOT,CR0_EQ,.Lppcasm_div2  # proceed if h != 0
> divwu   r3,r4,r5# ret_q = l/d
> bclrBO_ALWAYS,CR0_LT# return result in r3
> .Lppcasm_div2:
> divwu   r9,r3,r5# i_q = h/d
> mullw   r10,r9,r5   # i_r = h - (i_q*d)
> subfr10,r10,r3
> mr  r3,r9   # req_q = i_q
> .Lppcasm_set_ctr:
> li  r12,32  # ctr = bitsizeof(d)
> mtctr   r12
> .Lppcasm_div_loop:
> addcr4,r4,r4# l = l << 1 -> i_carry
> adder11,r10,r10 # i_h = (i_r << 1) | i_carry
> divwu   r9,r11,r5   # i_q = i_h/d
> mullw   r10,r9,r5   # i_r = i_h - (i_q*d)
> subfr10,r10,r11
> add r3,r3,r3# ret_q = ret_q << 1 | i_q
> add r3,r3,r9
> bc  BO_dCTR_NZERO,CR0_EQ,.Lppcasm_div_loop
> .Lppc_div_end:
> bclrBO_ALWAYS,CR0_LT# return result in r3
> .long   0x
>



PowerPC bn_div_words routine rewrite

2005-06-29 Thread David Ho
Hi all,

This is a rewrite of the bn_div_words routine for the PowerPC arch, tested
on a MPC8xx processor.
I initially thought there is maybe a small mistake in the code that
requires a one-liner change but it turns out I have to redo the routine.
I guess this routine is not called very often as I see that most other
routines are hand-crafted, whereas this routine is compiled from a C
function that apparently has not gone through a whole lot of testing.

I wrote a C function to confirm correctness of the code.

unsigned long div_words (unsigned long h,
 unsigned long l,
 unsigned long d)
{
  unsigned long i_h; /* intermediate dividend */
  unsigned long i_q; /* quotient of i_h/d */
  unsigned long i_r; /* remainder of i_h/d */

  unsigned long i_cntr;
  unsigned long i_carry;

  unsigned long ret_q; /* return quotient */

  /* cannot divide by zero */
  if (d == 0) return 0x;

  /* do simple 32-bit divide */
  if (h == 0) return l/d;

  i_q = h/d;
  i_r = h - (i_q*d);
  ret_q = i_q;

  i_cntr = 32;

  while (i_cntr--)
  {
i_carry = (l & 0x8000) ? 1:0;
l = l << 1;

i_h = (i_r << 1) | i_carry;
i_q = i_h/d;
i_r = i_h - (i_q*d);

ret_q = (ret_q << 1) | i_q;
  }

  return ret_q;
}


Then I handcrafted the routine in PPC assembly.
The result is a 26 line assembly that is easy to understand and predictable
as opposed to a 81liner that I am still trying to decipher...
If anyone is interested in incorporating this routine to the openssl code
I'll be happy to assist.
At this point I think I will be taking a bit of a break from this 3 day
debugging/fixing marathon.

Regards,
David Ho


#
#   Handcrafted version of bn_div_words
#
#   r3 = h
#   r4 = l
#   r5 = d

cmplwi  0,r5,0  # compare r5 and 0
bc  BO_IF_NOT,CR0_EQ,.Lppcasm_div1  # proceed if d!=0
li  r3,-1   # d=0 return -1
bclrBO_ALWAYS,CR0_LT
.Lppcasm_div1:
cmplwi  0,r3,0  # compare r3 and 0
bc  BO_IF_NOT,CR0_EQ,.Lppcasm_div2  # proceed if h != 0
divwu   r3,r4,r5# ret_q = l/d
bclrBO_ALWAYS,CR0_LT# return result in r3
.Lppcasm_div2:
divwu   r9,r3,r5# i_q = h/d
mullw   r10,r9,r5   # i_r = h - (i_q*d)
subfr10,r10,r3
mr  r3,r9   # req_q = i_q
.Lppcasm_set_ctr:
li  r12,32  # ctr = bitsizeof(d)
mtctr   r12
.Lppcasm_div_loop:
addcr4,r4,r4# l = l << 1 -> i_carry
adder11,r10,r10 # i_h = (i_r << 1) | i_carry
divwu   r9,r11,r5   # i_q = i_h/d
mullw   r10,r9,r5   # i_r = i_h - (i_q*d)
subfr10,r10,r11
add r3,r3,r3# ret_q = ret_q << 1 | i_q
add r3,r3,r9
bc  BO_dCTR_NZERO,CR0_EQ,.Lppcasm_div_loop
.Lppc_div_end:
bclrBO_ALWAYS,CR0_LT# return result in r3
.long   0x




JVM for PPC405

2005-06-13 Thread David Ho
At nanometrics, we have tried numerous different JVMs but we ended up
using GCJ instead, it gives us the speed to run applications on a tiny
66MHz MPC8xx so if you are evaluating JVM options, I suggest you try
GCJ included in GCC 4.0.

David

On 6/13/05, colui77 at virgilio.it  wrote:
> Hi all,
> I need to installa a JVM on montavista linux for ML300 (PPC405).
> I tried the Blackdown 1.3.1 for PPC but it doesn't seems to work
> (at the command
> $ java
> I received
> illegal istruction)
> Any suggestion? Please I need help...
> Luigi
> 
> ___
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



libssl in ELDK3.0

2005-05-11 Thread David Ho
Hi Wolfgang,

I noticed that the libssl.so and libcrypto.so in the ELDK3.0 development
rootfs are built with the linux-elf option on the ppc when it should have
been built with linux-ppc.  When I was trying to build ssh with these libs,
it would not work with an i386 Linux box.  I had to build libssl from
scratch.

David




OLS 2005

2005-04-27 Thread David Ho
Is anyone interested in going to the OLS this year?  I've been working in
Ottawa for 4 years so if you are interested I can give anyone more
information about things to do in Ottawa.

Just heads up for those planning to go, the deadline for early bird
registration is May 1 I think.  You save CAN $150 (350 as opposed to 500).

http://www.linuxsymposium.org/2005/

David




Browsers that support javascript and Nano-X

2005-04-27 Thread David Ho
Hi,

At Nanometrics, we have compiled Konqueror-embedded, kdenox, and
qt-embedded for our Motorola PowerPC 8xx platform.
Total memory usage of the browser is around 20Megs.
I don't believe ppc8xx is not too much different from the PowerPC 405, but
I might be wrong.
If you need help you can post questions at konq-e at kde.org

David



   
 Vijesh VH 
To 
 Sent by:  linuxppc-embedded at ozlabs.org,   
 linuxppc-embedded NanoGUI Mailing List
 -bounces at ozlabs.o   
 
 rg cc 
   
   Subject 
 04/27/2005 09:09  Browsers that support javascript
 AMand Nano-X  
   
   
 Please respond to 
 Vijesh VH 
 
   
   





Hi,
Has any one tried cross compiling (for PowerPc4 05)any javascript supported
browser. If so please help me out in selection of the open source browsers.

Architecture:PowerPC 405 Embedded Processor
GUI: NanoX

--
Thanks and Regards,
Vijesh V H ___
Linuxppc-embedded mailing list
Linuxppc-embedded at ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded




modem control for 8xx serial

2005-03-15 Thread David Ho
Hi all,

Has anyone implemented modem control in arch/ppc/8xx_io/serial.c.  I don't
want to reinvent the wheel if someone's already done it.  I'll be glad to
do the dirty work and submit it if anyone is interested.

Thanks, David H.




Testing ISP1362 USB network device driver.

2005-02-01 Thread David Ho
Hi Wolfgang,

I'm testing the device side of the ISP1362 using your USB network driver.
I can get a PC to enumerate with the 1362 but then I don't have a windows
driver to route IP traffic to it.  I'm just curious how you test the
driver?  Do you have a Linux host side driver to communicate with the 1362
as a USB NIC device?

Thanks,
David H.




How to port ppc-linux to new custom boards? (virtexII)

2004-08-25 Thread David Ho

> > Finally, do not overestimate the commercial support, to my experience;
> > the collaborative mailing lists are often as good if not better to
point
> > you in the correct direction due to the diverse expertises of the ppl
on
> > the list.
>
> Correct.
>
> I'd like to add, though, that commercial support is somthing you payed
for,
> and which you can *claim*, so IMHO you shouldn't underestimate it. A
> guaranteed support line can be very critical at certain stages of your
> project.
>

Sorry to stick my nose in your discussion, but I have a strong opinion on
commerial support.  Working in a small company, we have never gotten the
level of commitment we would expect from companies like ISI (vendor of
pSOS) and Timesys.  You can get the basic installation support fine.  But
when you need to get into the nitty gritty detail their value is a lot less
compared to mailing lists.

The way I see it is being large commercial OS vendor that they are, they
seem to funnel their resource to the big customers who are willing to pay
the big bucks to get stuff done.

When choosing commercial support, one critical factor is their customer
base.  Big fish don't go after the tiny ticks in the sea, they go for
seals.  And you really have to find the right sized OS vender to give you
the attention you need.

Regards,
David Ho
Nanometrics Inc.


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





How to remove JFFS2 'Making dirty' display on RPXlite DW?

2004-08-05 Thread David Ho

> When creating a JFFS2 filesytem with DENX SELF ramdisk
> as follows,the target displayed some wired
> message,what would be problem be?
>
> =
>
> After unpacking SELF,I use the following command to
> create a jffs2 filesystem:
>
> eraseall /dev/mtd3
>
> mkfs.jffs2 -r /tmp/tmp -e 0x1 -o image.jffs2 -b
>
> dd if=image.jffs2 of=/dev/mtd3 bs=256k
>
> mount -t jffs2 /dev/mtdblock3 /mnt
>
> 

What is the block size you specified when you do a mkfs.jffs2?

It has to match with your flash erase block size.  Care should be taken if
you have paralle banks.

I'm not sure this is your problem but it is a problem I ran into.

David

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





8xx block address mapping...

2004-07-28 Thread David Ho

Dan,

I am just curious about how the 8xx does a block mapping (e.g. mapping a
video frame buffer) without BATs.

Here are the 2 possilbilities I can think of for a 2 megabyte block.

- it allocates the smallest possible page size for the block requested.
i.e. it will have to allocate an 8-Myte page for the 2-Mbyte block, very
wasteful it seems.

- pages can be allocated such that a contiguous region of physical memory
can be mapped to the 2-Mbyte block, I can't imagine how this can take place
in the 8xx MMU.

Could you shed some light on how this works.  It will help me assess how
efficient block mapping is on the 8xx.

Thanks a lot,

David Ho


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





more questions about 8xx microcode patches

2004-07-28 Thread David Ho

owner-linuxppc-embedded at lists.linuxppc.org wrote on 07/27/2004 06:30:28 PM:

>
> Just to add to the complexity: are you aware that the  parameter  RAM
> relocation  may  be  different between 8xx processors? For example it
> seems that on the 866 family  you  can  relocate  PRAM  even  without
> loading any uCode by just writing the correct offset to (for example)
> the spi_rpbase register.
>

I just had a conversation with Wolfgang on the 866 uCode patch situation.
It appears that the I2C/SPI patch is already incorporated in this silicon
rev.  Please look at the follow post for detail of my findings.

http://sourceforge.net/mailarchive/message.php?msg_id=9072298

Hope this help you along the way.  Or it might not.

Regards,

David Ho
Nanometrics Inc.


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





How to set current time to 8xx RTC through Linux application?

2004-06-09 Thread David Ho

If you are using ELDK-3.0 and it's development root filesystem, hwclock
does the trick.

David

>
> I added 8xx RTC driver both on U-Boot and Linux
> kernel.And I could set current time right under
> U-Boot.But I have no idea on making it through Linux
> application?I could read it with following code but
> how to set it?


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





no core dump from the kernel on SIGSEGV

2004-06-01 Thread David Ho

> > >
> > > I'm looking at making the kernel core dump on a process that seg
vaulted.
> > > What I did was recompiled the kernel specifying a non-zero core file
size
> > > rlim[RLIMIT_CORE] = { RLIM_INFINITY, RLIM_INFINITY }.  I was still
not
> > > getting a core dump.
> >
> > Please, read about ulimit shell command.

> Okay, your point taken.  I assume ulimit will have the same effect of
> assigning it a non-zero value.
> What is troubling me is why it doesn't go to the core_dump function
> in fs/binfmt_elf.c

Oh, it's working all along.  One person on our team claims it was a problem
in the kernel.  But I proved it otherwise.

Thanks, David


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





no core dump from the kernel on SIGSEGV

2004-06-01 Thread David Ho

> >
> > I'm looking at making the kernel core dump on a process that seg
vaulted.
> > What I did was recompiled the kernel specifying a non-zero core file
size
> > rlim[RLIMIT_CORE] = { RLIM_INFINITY, RLIM_INFINITY }.  I was still not
> > getting a core dump.
> >
>
> DO NOT TOUCH the kernel!
>
> Please, read about ulimit shell command.

Okay, you point taken.  I assume ulimit will have the same effect of
assigning it a non-zero value.
What is troubling me is why it doesn't go to the core_dump function in
fs/binfmt_elf.c

David


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





no core dump from the kernel on SIGSEGV

2004-06-01 Thread David Ho

Hi all,

I'm looking at making the kernel core dump on a process that seg vaulted.
What I did was recompiled the kernel specifying a non-zero core file size
rlim[RLIMIT_CORE] = { RLIM_INFINITY, RLIM_INFINITY }.  I was still not
getting a core dump.

The following test program was used to signal a seg vault (SIGSEGV).

#include 

int main(int argc, char** argv) {

unsigned int* pointer = (unsigned int*) 0x12345678;

/* generate a SIGSEGV - invalid memory reference */
*pointer = 0xdeadbeef;

return 0;
}

Anyone can shred some light on this?

Thanks a lot,
David


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





RTC no longer exist on the 866/87x/88x

2004-05-28 Thread David Ho

Hi 8xx gurus,

I just noticed the RTC is no longer documented/tested/supported on the
duet.  How does this impact the current 2.4 8xx tree?

I know the /dev/rtc still uses RTC on the processor, it appears to work
fine, but I wouldn't bet my life on it for production units.

How about the kernel's timing service and scheduling, does it use the
timebase register instead?  Are these services effected at all?

Thanks a lot,

David Ho
Nanometrics Inc.


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





patch for cpu/mpc8xx/cpu.c:get_tbclk - correction

2004-05-27 Thread David Ho

Now that I think of it, the _multiplier_ (as I declared it here) cannot be
an integer, so this is all wrong.

I don't know how I got this working... I have a 50 Mhz oscillator with 66
Mhz system clock.

Why not use the oscillator define (CFG_8XX_XIN) for MPC866_et_al?

David


owner-linuxppc-embedded at lists.linuxppc.org wrote on 05/27/2004 03:19:26 PM:

>
> > The last if condition is wrong in this function.   The change is made
> > against 0.4.8.  AFAIK, 1.0.2 still has the same problem.
> >
> > And I wonder why it has to reverse engineer the oscclk when I pass the
> > value as a define to come up with the gd->cpu_clk for the MPC866
> family...
> > It is a bit useless I think.
> >
>
> Sorry, the last patch breaks on the old 8xx.
>
> This is a bit better.
>
>
> /*
>  * Get timebase clock frequency (like cpu_clk in Hz)
>  *
>  * See table 15-5 pp. 15-16, and SCCR[RTSEL] pp. 15-27.
>  */
> unsigned long get_tbclk (void)
> {
> DECLARE_GLOBAL_DATA_PTR;
>
> volatile immap_t *immr = (volatile immap_t *) CFG_IMMR;
> ulong oscclk, factor, multiplier;
>
> if (immr->im_clkrst.car_sccr & SCCR_TBS) {
> return (gd->cpu_clk / 16);
> }
> #define PLPRCR_val(a) (((CFG_PLPRCR) & PLPRCR_ ## a ## _MSK) >> PLPRCR_
##
> a ## _SHIFT)
> #ifdef CONFIG_MPC866_et_al
> /*   MFN
>  MFI + ---
>MFD + 1
>   factor =  -
>  (PDF + 1) * 2^S
>  */
>
> factor = (PLPRCR_val(MFI) + PLPRCR_val(MFN)/(PLPRCR_val(MFD)+1));
>
> multiplier = (PLPRCR_val(MFI) +
> PLPRCR_val(MFN)/(PLPRCR_val(MFD)+1))/
>  (PLPRCR_val(PDF)+1) / (1< #else
> multiplier = factor = PLPRCR_val(MF)+1;
> #endif
>
> oscclk = gd->cpu_clk / multiplier;
>
> if ((immr->im_clkrst.car_sccr & SCCR_RTSEL) == 0 || factor > 2) {
> return (oscclk / 4);
> }
> return (oscclk / 16);
> }
>
>
>


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





patch for cpu/mpc8xx/cpu.c:get_tbclk - correction

2004-05-27 Thread David Ho

> The last if condition is wrong in this function.   The change is made
> against 0.4.8.  AFAIK, 1.0.2 still has the same problem.
>
> And I wonder why it has to reverse engineer the oscclk when I pass the
> value as a define to come up with the gd->cpu_clk for the MPC866
family...
> It is a bit useless I think.
>

Sorry, the last patch breaks on the old 8xx.

This is a bit better.


/*
 * Get timebase clock frequency (like cpu_clk in Hz)
 *
 * See table 15-5 pp. 15-16, and SCCR[RTSEL] pp. 15-27.
 */
unsigned long get_tbclk (void)
{
DECLARE_GLOBAL_DATA_PTR;

volatile immap_t *immr = (volatile immap_t *) CFG_IMMR;
ulong oscclk, factor, multiplier;

if (immr->im_clkrst.car_sccr & SCCR_TBS) {
return (gd->cpu_clk / 16);
}
#define PLPRCR_val(a) (((CFG_PLPRCR) & PLPRCR_ ## a ## _MSK) >> PLPRCR_ ##
a ## _SHIFT)
#ifdef CONFIG_MPC866_et_al
/*   MFN
 MFI + ---
   MFD + 1
  factor =  -
 (PDF + 1) * 2^S
 */

factor = (PLPRCR_val(MFI) + PLPRCR_val(MFN)/(PLPRCR_val(MFD)+1));

multiplier = (PLPRCR_val(MFI) +
PLPRCR_val(MFN)/(PLPRCR_val(MFD)+1))/
 (PLPRCR_val(PDF)+1) / (1im_clkrst.car_sccr & SCCR_RTSEL) == 0 || factor > 2) {
return (oscclk / 4);
}
return (oscclk / 16);
}


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





patch for cpu/mpc8xx/cpu.c:get_tbclk

2004-05-27 Thread David Ho

Hi Wolfgang,

The last if condition is wrong in this function.   The change is made
against 0.4.8.  AFAIK, 1.0.2 still has the same problem.

And I wonder why it has to reverse engineer the oscclk when I pass the
value as a define to come up with the gd->cpu_clk for the MPC866 family...
It is a bit useless I think.

David



/*
 * Get timebase clock frequency (like cpu_clk in Hz)
 *
 * See table 15-5 pp. 15-16, and SCCR[RTSEL] pp. 15-27.
 */
unsigned long get_tbclk (void)
{
DECLARE_GLOBAL_DATA_PTR;

volatile immap_t *immr = (volatile immap_t *) CFG_IMMR;
ulong oscclk, factor, mf;

if (immr->im_clkrst.car_sccr & SCCR_TBS) {
return (gd->cpu_clk / 16);
}
#define PLPRCR_val(a) (((CFG_PLPRCR) & PLPRCR_ ## a ## _MSK) >> PLPRCR_ ##
a ## _SHIFT)
#ifdef CONFIG_MPC866_et_al
/*   MFN
 MFI + ---
   MFD + 1
  factor =  -
 (PDF + 1) * 2^S
 */

mf = (PLPRCR_val(MFI) + PLPRCR_val(MFN)/(PLPRCR_val(MFD)+1));

factor = (PLPRCR_val(MFI) + PLPRCR_val(MFN)/(PLPRCR_val(MFD)+1))/
 (PLPRCR_val(PDF)+1) / (1im_clkrst.car_sccr & SCCR_RTSEL) == 0 || mf > 2) {
return (oscclk / 4);
}
return (oscclk / 16);
}


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





mpc8xx linux maintenance

2004-05-14 Thread David Ho

Please don't mind correcting me on what I said here.  I would love to hear
some feedback from the community, and possibly the folks at Motorola,
Timesys, Montavista.

Regards,

David Ho
Nanometrics, Inc


>
> Hi all,
>
> Just wondering, do we have a person from Motorola or a well known
embedded
> linux company that actively ensures the operation of the Linux kernel on
> mpc8xx, 2.6 in particular?
>
> I noticed that is a lot of work being done by Montavista on the IBM
PowerPC
> chips and Timesys is working heavily on the Motorola 82xx for the 2.6
> kernel.  But not that much noise is made from these companies in regard
to
> the mpc8xx.  Should this be a concern?
>
> Wolfgeng mentioned in his interview with Linux Device (
> http://linuxdevices.com/articles/AT2240586951.html) that 2.6 may be slow,
> but if there are so many 2.6 features that are beneficial to embedded
> development (http://www.linuxjournal.com/article.php?sid=7477), why is
> mpc8xx , as I see it, being somewhat left behind.
>
> Regards,
>
> David Ho
> Nanometrics, Inc
>
>
>


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





mpc8xx linux maintenance

2004-05-14 Thread David Ho

Hi all,

Just wondering, do we have a person from Motorola or a well known embedded
linux company that actively ensures the operation of the Linux kernel on
mpc8xx, 2.6 in particular?

I noticed that is a lot of work being done by Montavista on the IBM PowerPC
chips and Timesys is working heavily on the Motorola 82xx for the 2.6
kernel.  But not that much noise is made from these companies in regard to
the mpc8xx.  Should this be a concern?

Wolfgeng mentioned in his interview with Linux Device (
http://linuxdevices.com/articles/AT2240586951.html) that 2.6 may be slow,
but if there are so many 2.6 features that are beneficial to embedded
development (http://www.linuxjournal.com/article.php?sid=7477), why is
mpc8xx , as I see it, being somewhat left behind.

Regards,

David Ho
Nanometrics, Inc


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





Running CompactFlash and HDD on mpc8xx

2004-05-10 Thread David Ho

Hi all,

I am looking a way to have CompactFlash and HDD working together on a
MPC8xx platform.  Ultimately both (IDE, IDE_CS) systems calls
m8xx_ide_init_hwif_ports to initialize ATA register location/hardware.
Right now this function is pretty stupid:  it assumes that it is being
called from the same subsystem and initialize stuff as if it is always a
hard drive hanging off of the processor bus.

One idea I have is to make m8xx_ide_init_hwif_ports smarter and have it
identify from the parameters passed which stack it is being called from so
that it can initialize to the appropriate hardware.  Right now I don't see
anything that can indicate/differentiate between the two.

Would anyone else has any ideas about this.  I would appreciate hearing
your suggestions.

I am cross posting this to Linux PCMCIA forums as well.

Regards,

David Ho
Nanometrics Seimological Instruments


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





user access to physical memory

2004-05-05 Thread David Ho

> >
> > I know this question has been asked before, but I can't seem to find it
in
> > the archive.
>
> You mean a simple search for "physical memory" like this one:
>
> http://lists.linuxppc.org/results.html?restrict=linuxppc-
> embedded&words=physical+memory
>
> didn't give you any results? Strange... I get quite a lot of messages.
>

searching for /dev/mem gave me more useful results.

David


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





user access to physical memory

2004-05-05 Thread David Ho

Hi all,

I know this question has been asked before, but I can't seem to find it in
the archive.

How do I get access to physical memory from user space?  I want to write a
simple test problem to access the frame buffer directly on the LCD
controller.

Thanks,

David Ho
Nanometrics Inc.


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





libjpeg

2004-04-26 Thread David Ho

> > Is there an idiot's guide to run the configure script to generate a
>
> "configure --help" may help ;-)
>
> > makefile that uses a cross-compiler instead of the native gcc.  I like
to
> > build it from my ix86 box.  I'm getting a headache from googling...
>

This seems to do the trick.

CC=ppc-linux-gcc ./configure --disable-shared ppc-linux
--prefix=/home/davidho/usr/local

David


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





libjpeg

2004-04-26 Thread David Ho

> > I'm trying to build Qtopia-free 1.7 using ELDK 3.0 and I noticed it
does
> > not contain a jpeg library which is required by Qtopia/QPE.  Do you
know
> > anyone who've already built that for the ELDK?  Otherwise I'll have to
> > build it myself.
>
> Try it out; it should be pretty straightforward.

Is there an idiot's guide to run the configure script to generate a
makefile that uses a cross-compiler instead of the native gcc.  I like to
build it from my ix86 box.  I'm getting a headache from googling...

David


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





libjpeg

2004-04-26 Thread David Ho

Hi Wolfgang,

I'm trying to build Qtopia-free 1.7 using ELDK 3.0 and I noticed it does
not contain a jpeg library which is required by Qtopia/QPE.  Do you know
anyone who've already built that for the ELDK?  Otherwise I'll have to
build it myself.

Regards,

David Ho
Nanometrics Inc.


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/