From: Jeff P.M. Hultquist
Subject: Re: KCL on MIPS machines ...
Date:
Message-ID: <1763@amelia.nas.nasa.gov>
> Subject: KCL for MIPS machine?
>
> Are there patches to allow KCL to work on MIPS machines? (i.e. the DEC
> MIPS machine that just came out?) If so, could somebody please direct
> me to them?
I ported KCL to a Silicon Graphics "Personal Iris", which also
contains the MIPS chip. I don't have the diffs, but I can report
that these changes were required ...
------------------------------
copied from tape
touch all the sources to ensure proper 'make'
check that ... have not been truncated
lsp/evalmacros.data
cmpnew/cmpspecial.data
put 'SHELL=/bin/sh' in makefiles
changed makedefs for SGI4
* added "sgi4_chtab.s" to makefile
* no RSYM and no SFASL
* changed include.h and mdefs.h to define SGI4
* added sgi4_chtab.s to /c
make sources
This invokes some "super-diff" utility written by
Bill Schelter of Texas. He is the author of the
changes which cellectively transform KCL to A_KCL
(the 'a' stands for Austin).
patch page.h to account for data segment bit
The MIPS processor (which is in the IRIS-4) has a
high-order bit set on the data segment, and this
bit must be accounted for when we convert between
page numbers and addresses. See the note below
regarding the need to relocate the data segment
from its default position.
added new code to find start of fasl_vector in file.d
The object file format is different, and so locating
the start of the FASL vector has changed. This new
code mucks about in the object file headers to find
the right place. (Personally, I think that appending
the FASL stuff to the end of the object file is a
very bad idea.)
externs needed ...
* array declarations in cmpinclude.h
* character_table[] in object.h
* lisp_implementation_version[] in external.h
* system_directory[] in external.h
earith.c
defined 'extended_mul' and 'extended_div' to the
extended arithmetic routines.
I don't want SFASL!
* changed h/include.h so that it no longer defines SFASL
* commented 'sfasl.o' out of o/makefile
(The makefiles in this system are a mess!)
changed unixfasl.c
Completely rewrote this file, using code from GNU and
lots of advice from SGI. The system can only
incrementally load if the data section in within the
same segment (256 meg?) as the text segment. This is
because the JAL instruction has only 28 bits available
for the jump offset. The entire system must therefore
be compiled with '-Wl,-D,a000000' which instructs the
linker to move the data section in closer.
Changed the call to 'fasload' in 'file.d' so that uses
the new stuff in 'unixfasl'.
add *features* to main.c
Must define the features (UNIX, IEEE, ...) which are
available under this implementation. This sort of stuff
should be defined in LISP, and _not_ in C, but nobody
asked me. :-)
changed to 'vararg' passing in ...
'list' and 'listA' in list.d
'parse_keys' and 'check_other_keys' in bind.c
These four routines take an indeterminate number of
arguments, but they did _not_ use real honest-to-God
varargs. Now they do.
new version of unixsave, which uses 'unexmips.c'
Replaced unixsave with the unexmips which is packaged
with GNU. Also had to change the call to 'unexec' in
'unixsave.c'. Also, 'unixsave.c' used to call
'_cleanup', this does not work on an IRIS-4 (it leaves
the saved image with a null '_iob').
******** known bugs ********
Bignums don't work ... 'nuff said.
The compiler can't handle gl-funcs.lsp, which is
the collection of graphics library hooks originally
written by Eric Raible.
(directory "") does not work ... the pathname seems
to be mangled before the directory open is attempted.
Jeff Hultquist
········@prandtl.nas.nasa.gov
(415) 694-4970