ARM Linux version of squeak HELP.

Tim Rowledge tim at
Mon May 24 19:31:19 UTC 2004

Yoshiki Ohshima <Yoshiki.Ohshima at> wrote:

> > 
> > Would this fix my problem?  From the post, it seems that Tim 
> > is using a different toolchain than what I am using.  I am 
> > using a gcc 2.95-3 toolchain.  I might have to change these 
> > defines to reflect a gnu assembler style (which I am not sure 
> > about) and maybe change a few other things.

This is all a long time ago and I suspect that gcc2.95 was the one - it
was on a Corel NetWinder. Somewhere buried deep in storage I still have
that machine. There were some terrible bugs in the optimiser of
whichever version of gcc is involved. You couldn't actually allow _any_
level and get a workable VM. It wasn't just for Squeak either
- VisualWorks' VM could be compiled optimised. Supposedly the more
recent 3.whatever gcc is better but I haven't any way to test that.
>   Rather, you might want to define those REGs as null strings.
> # define IP_REG
> # define SP_REG
> # define CB_REG

Much more like what I remember.

'bad opcode' is the sort of thing I expect to see from the late phase
of the compiler getting a bad input. Only thing I can think of off the
top of my head is that the "S1" etc that you used might have got down
to the assembler and read as an opcode. Assuming that the gcc assembler
uses the normal ARM mnemonics (what is the mnemonic for how to spell
that?) it probably wouldn't like that.

I also have vague recollections of seeing an error like 'bad constant'
from the assembler phase as well; a clear indication of a bad bug in a
higher level.

The good news is that it _is_ possible to get it to work. On an earlier
release of the NetWinder tools the optimiser was ok and performance was
about what you'd expect from a 200MHz StrongARM with reasonable memory
- ~12MBc/s and 500ksends/s or so. If you have a 400MHz XScale doohickey
it will probably roughly double that unless you're having problem with
those early versions before the XA260 release.

My desktop machine is a 600MHz IOP80231 XScale which does 33M & 1.2M.
If you're really lucky you might have a 733MHz IOP80200 like the
TeamASA NPWR boxes. If you're staggeringly well connected you might
even have 1.2GHz Samsung Halla :-) If that's the case, gissa job! 

Tim Rowledge, tim at,
A list is only as strong as its weakest link.  - Don Knuth

More information about the Squeak-dev mailing list