Changes for Linux running on Alpha.
From: Julian Dolby <dolby@csag-226-8.UCSD.EDU> Enclosed below are diffs against the cvs repository as of Feb 12; aside from minor changes like using different include files (e.g. validate.h instead of x86-validate.h in Linux-os.c) and adding alpha-linux specifics unix-glibc2.lisp, there are two code changes. The first is to signal handling. I had to put the POSIX-SIGS ifdefs into places used by alpha but not by x86, and I ifdef'ed out most of the linux #define kludges for signals for alpha linux, since alpha linux uses OSF/1 signals rather than linux ones. The second is that the trick of or'ing 2 into the reg_ALLOC address to cause faults does not work on alpha linux since the kernel traps and handles the unaligned access; I did not find a way to change that kernel behavior, so I changed the code to or (1<<63) into the address to cause a seg fault, and then check, in the seg fault handler, to see if the high-order address bits are set. One change I made is to the memory layout (lisp/alpha-validate.h and compiler/alpha/parms.lisp); that change is not needed to make lisp run on alpha linux, but is there because I wanted more heap space.
Showing
- code/unix-glibc2.lisp 100 additions, 57 deletionscode/unix-glibc2.lisp
- compiler/alpha/parms.lisp 8 additions, 4 deletionscompiler/alpha/parms.lisp
- lisp/Linux-os.c 43 additions, 6 deletionslisp/Linux-os.c
- lisp/Linux-os.h 32 additions, 2 deletionslisp/Linux-os.h
- lisp/alpha-arch.c 36 additions, 3 deletionslisp/alpha-arch.c
- lisp/alpha-assem.S 9 additions, 1 deletionlisp/alpha-assem.S
- lisp/alpha-lispregs.h 7 additions, 1 deletionlisp/alpha-lispregs.h
- lisp/alpha-validate.h 22 additions, 1 deletionlisp/alpha-validate.h
- lisp/interrupt.c 35 additions, 19 deletionslisp/interrupt.c
- lisp/lisp.c 2 additions, 2 deletionslisp/lisp.c
- lisp/lisp.h 13 additions, 1 deletionlisp/lisp.h
- lisp/monitor.c 2 additions, 2 deletionslisp/monitor.c
- lisp/print.c 6 additions, 1 deletionlisp/print.c
- lisp/undefineds.h 12 additions, 2 deletionslisp/undefineds.h
Loading
Please register or sign in to comment