larcenists / larceny

Larceny Scheme implementation
Other
202 stars 32 forks source link

-r7r6 library load failure on ARM (0.99a1 - alpha) #755

Closed KenDickey closed 8 years ago

KenDickey commented 8 years ago

larceny-r7.txt

Hi Will,

Just started noodling around, so fairly clueless.

Built ARM version on ARM Chromebook under Crouton/Ubuntu.

uname -a Linux localhost 3.10.18 #1 SMP Wed Apr 27 13:19:33 PDT 2016 armv7l armv7l armv7l GNU/Linux twobit Larceny v0.99a1 (alpha test) (May 11 2016 18:16:31, precise:Linux:split) twobit.heap, built on Wed May 11 18:19:20 PDT 2016

Cheers, -KenD

KenDickey commented 8 years ago

I dunno.

Reinvoked the library compile in a fresh image and everything came up peaches.

(require 'r7rsmode) (larceny:compile-r7rs-runtime)

Sorry for the bother.

-KenD

WillClinger commented 8 years ago

Nice to hear from you, Ken.

It's good to know Larceny works on ARM Chromebooks under Crouton/Ubuntu. I've been using Arch Linux for development and testing of the ARM version.

KenDickey commented 8 years ago

On Thu, 12 May 2016 06:07:37 -0700 Will Clinger notifications@github.com wrote:

Nice to hear from you, Ken.

It's good to know Larceny works on ARM Chromebooks under Crouton/Ubuntu. I've been using Arch Linux for development and testing of the ARM version.

Hi Will. Good to hear from you too! Hope all is well. Dare I ask how you are doing?

My answer is "fine, if you don't ask for details".

Ellen and I built a "passive house" (see Wikipedia) a year ago and have been on Whidbey Island for a dozen years now. I guess we like the place. Walking and gardening are prime activities.

I have been playing in Cuis Smalltalk for a while and thinking lately about a clean-room ARM bootstrap of Smalltalk in Scheme.

I noted the ARM back end and started poking through the Larceny code and docs.

One idea I had was to grab and mask a Scheme native object's typetag (low byte) and index into a vector of "classes" to give native and smalltalk objects uniform behavior w.r.t. method lookup.

Logically: ($raw_bytetag whatever) -> byteValue

/* grab the low byte type tag of the arg in r0 and return as a small fixnum */ .global fmc_raw_bytetag fmc_raw_bytetag: and r0, r0, #255 lsl r0, r0, #2 ..

I am currently grovellng around the runtime figuring out how properly to get the info through the system levels.

The SPARC docs are a little dated. ;^)

Any hints on how best to do this would help, but don't bother if you don't have time -- we all suffer from busy lives.

Thanks a bunch, -KenD

-KenD