...there are ARM/Linux machines that would produce a suitable executable, such as the NetWinder (www.rebel.com) although I haven't been able to produce a working VM for mine since Ian changed to the autoconf stuff. Does yours still work ok Craig? Something about missing floating point libraries or similar.
On my machine the problem is that there aren't ARM register definitions in sqGnu.h. In particular, the C compiler barfed at gnu-interp.c:4308, because the currentBytecode register (CB_REG) wasn't defined. Everything was groovy after I inserted the following just before sqGnu.h:125:
***
#if defined(__arm__) # define IP_REG asm("%0") # define SP_REG asm("$1") # define CB_REG asm("$2")
***
I don't remember how the registers were chosen for the other platforms... Nothing caught fire with the above, so I assume it's okay. :) Ian, would you please add something like this to sqGnu.h?
The VM and compiled plugins I built is at http://smalltalk/squeak2.7NetWinder.zip.
thanks,
-C -- Craig Latta composer and computer scientist craig.latta@netjam.org www.netjam.org crl@watson.ibm.com Smalltalkers do: [:it | All with: Class, (And love: it)]
In message 395AF988.E142AAD5@NetJam.ORG you wrote:
On my machine the problem is that there aren't ARM register definitions in sqGnu.h. In particular, the C compiler barfed at gnu-interp.c:4308, because the currentBytecode register (CB_REG) wasn't defined. Everything was groovy after I inserted the following just before sqGnu.h:125:
#if defined(__arm__) # define IP_REG asm("%0") # define SP_REG asm("$1") # define CB_REG asm("$2")
I'm a little surprised that worked, but you can't argue with success. I always used to just define them as nulls so the compiler wouldn't squawk to loudly. I did experiment a little a looooong time ago with actually using the global registers and it seemed to make very little difference. The choice of register and the state of mind of the compiler would probably be crucial to the effect; I remember when Eliot & manage to persuade Acorn to add global registers to their compiler (in, um, '88?) it immediately made BHH go 40% faster on the contemporary Acorn machines. Of course, the ARM had no cache at all in those days, which would make an even bigger difference.
tim
squeak-dev@lists.squeakfoundation.org