[Openmcl-devel] Solaris x86-64?

Gary Byers gb at clozure.com
Wed Jan 2 08:39:32 PST 2008

I played around it a little a year or two ago; I don't currently
have Solaris installed and what I remember is a little fuzzy, so
take this with a grain of salt ...

There was something different (relative to Linux, Darwin, and FreeBSD)
about how Solaris's mmap (the system call used to ... map memory)
implementation worked; the lisp wants to try to reserve a large
(512GB) chunk of address space, preferably at a fixed address.  The
way that the we do it, Solaris would (I'm a little fuzzy on the
details) either give us a a large chunk or let us excerise control
over where it was, but not both.  When it allocated the large
chunk of address space, the addresses in question were in the
upper half of the 64-bit address space (had their sign bit on),
and I was concerned that something, somewhere in the lisp would
get confused by this.  (I read somewhere that Solaris's mmap()
will behave more like other OS's if one tries to map a file
descriptor open on /dev/zero rather than trying to create
an anonymous mapping like CCL's kernel does, but I never tried

That's about as far as I got; the lisp kernel compiled but
the initial memory reservation didn't behave the way that
I'd have liked it to.  I didn't get far enough to stress
anything else, but I'd guess that there'd likely some other
OS-dependent code (signal/exception handling) that'd have
to be conditionalized.  It's hard to know whether there
are other things that behave differently from what the
lisp expects/wants, but it'd probably take about a week or
two to account for the expected/minor OS differences.

The x86-64 port needs (or at least really, really wants)
some way to set the gs segment register so that it points
to per-thread lisp data.  I don't remember whether Solaris
offers a way to do this; if not, it might be hard to work
around that.

On Wed, 2 Jan 2008, Chris Curtis wrote:

> Sorry if this is a common question, but I couldn't find anything in
> the archives. What would be required to get a working implementation
> on Solaris x86-64? I've done some poking around in the repository and
> it looks like there's a fair bit of stuff there already, but it's not
> obvious what is what or even where to start.
> --chris
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

More information about the Openmcl-devel mailing list