Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • pw's avatar
    25b808fb
    Changes for Linux running on Alpha. · 25b808fb
    pw authored
    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.
    25b808fb
    History
    Changes for Linux running on Alpha.
    pw authored
    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.