On Sun, Sep 10, 2000 at 04:23:04PM +0100, Daniel Barlow wrote:
> People might be interested to know that SBCL 0.6.5 on Linux/Alpha now
> successfully starts up with cold-sbcl.core, and makes it through
> cold-init to the * prompt.
> It blows up very quickly afterwards (LET and QUIT are among the forms
> that can make it die) but I thought that rated as progress anyway.
> I can evaluate "(+ 1 2 3)" with no problems :-)
This sounds very good to me. (Now all I need is an Alpha.:-)
> 3) I hacked up the signals stuff in an if-it-builds-ship-it fashion -
> linux/alpha supports posix signals so I thought I'd wait for 0.6.7
> instead of expending effort trying to understand what 0.6.5 did
> Signals are still set to bite me. GC I expect will bite me (it looks
> like CMUCL on the Alpha uses gc.c which is neither conservative or
> generational). Floating point modes likewise as soon as I uncomment
> the appropriate call in. Dynamic loading, when I get that far, I'll
> make work like the x86 Linux version works.
Signals are, if I may say so myself, *much* cleaner in 0.6.7 than in
0.6.5. Take a look, and hopefully you will agree. Of course, it won't
help that the code corresponds less closely to the CMU CL code,
including the Alpha code that you're starting with, but I hope that
most of the changes should be very straightforward. (E.g. writing a
new wrapper function context_eflags_addr(..) is not rocket science,
unless I've screwed up by making an implicit assumption which doesn't
make sense on the Alpha.)
GC will probably be a bit of a mess, since the #+GENGC/#+GENCGC/#+X86
stuff in CMU CL was fairly messy to begin with and I might have made
it worse, since I didn't have any way to test whether my changes make
sense on non-X86 systems. But the interface is not fundamentally all
that complicated, so it should probably be pretty manageable. And I
don't think anything I did to the CMU CL code base should have broken
the fundamental precise-vs-conservative compilation characteristics of
the system, so if gc.c is precise and worked on the Alpha on CMU CL
2.4.7, I'd expect it to be fundamentally OK on SBCL.
Dynamic loading looks pretty simple actually, now that I've read
the man pages for the appropriate system calls.
> I'm not sure if it gets easier or harder from here ...
Easier, I hope, but I can't say for sure. In my original port, by the
time I got to this point, most of the hard stuff was over, and much of
the stuff which wasn't over shouldn't be an issue in your port (e.g.
making PCL work). However, don't remember problems like what you
describe with LET and (presumably, as part of the implementation of
QUIT) THROW. If the compilation of special forms is screwed up, that
could be as simple as finding one or two messed up 32-bit-vs-64-bit
hacks, but could possibly be something much nastier. I hope it's the
William Harold Newman <william.newman@...>
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C