/[cmucl]/src/lisp/Linux-os.c
ViewVC logotype

Log of /src/lisp/Linux-os.c

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Tag:

Revision 1.52 - (view) (annotate) - [select for diffs]
Thu Sep 1 05:18:26 2011 UTC (2 years, 7 months ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, snapshot-2011-09
Changes since 1.51: +10 -3 lines
Diff to previous 1.51
Add os_init0 to allow for some really early OS inits.

On Linux, os_init can re-exec lisp to set up the correct personality.
Not normally a problem, but if any output happens before os_init is
called, the output appears to happen twice.  So add os_init0 to do
this early on, before any output.  This is a bit of a kludge.

lisp/lisp.c:
o Call os_init0 early in main.

lisp/Linux-os.c:
o Move the personality stuff from os_init to os_init0.

lisp/Darwin-os.c:
lisp/FreeBSD-os.c:
lisp/NetBSD-os.c:
lisp/OpenBSD-os.c:
lisp/hpux-os.c:
lisp/irix-os.c:
lisp/mach-os.c:
lisp/osf1-os.c:
lisp/solaris-os.c:
lisp/sunos-os.c:
o Add dummy implementation of os_init0.  These OSes don't (currently)
  need anything special.

lisp/os.h:
o Declare os_init0.

Revision 1.51 - (view) (annotate) - [select for diffs]
Sun Dec 26 16:04:43 2010 UTC (3 years, 3 months ago) by rswindells
Branch: MAIN
CVS Tags: snapshot-2011-01, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07
Changes since 1.50: +9 -1 lines
Diff to previous 1.50
Add a test for whether the operating system supports use of the SSE2
registers. The test is a stub on everything except NetBSD for now.

Revision 1.50 - (view) (annotate) - [select for diffs]
Tue Jun 22 16:55:17 2010 UTC (3 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20b, cross-sol-x86-2010-12-20, cross-sol-x86-base, cross-sol-x86-merged, cross-sparc-branch-base, release-20b-pre1, release-20b-pre2, snapshot-2010-07, snapshot-2010-08, snapshot-2010-11, snapshot-2010-12, sparc-tramp-assem-2010-07-19, sparc-tramp-assem-base
Branch point for: RELEASE-20B-BRANCH, cross-sol-x86-branch, cross-sparc-branch, sparc-tramp-assem-branch
Changes since 1.49: +5 -2 lines
Diff to previous 1.49
Make previous changes build for x87.

compiler/x86/vm.lisp:
o Change *float-register-names* to be defparameter.
o Setup float-regs and def-random-reg-tns appropriately for x87 and
  sse2.

lisp/Darwin-os.c:
lisp/Linux-os.c:
o Conditionalize previous change for FEATURE_SSE2.

Revision 1.49 - (view) (annotate) - [select for diffs]
Tue Jun 22 15:35:23 2010 UTC (3 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.48: +14 -6 lines
Diff to previous 1.48
Revert the previous change to fix debug:arg/trace issue.  Instead, use
Carl's suggestion and define new SC numbers for the xmm registers
instead of overloading the x87 fpu registers and the xmm register
SC's.

bootfiles/20a/boot-2010-06-cross-x86.lisp:
o New file needed for cross-compiling this change.

code/x86-vm.lisp:
o Revert previous change.

compiler/x86/sse2-c-call.lisp:
o Use xmm0-tn instead of fr0-tn.  No functional change, but makes the
  code more readable.

compiler/x86/vm.lisp:
o Increase the number of float registers from 8 to 16 (8 more for SSE2
  registers).
o Define new xmm<n> registers
o Update the locations with the new sse2 SC locations for single-reg,
  double-reg, double-double-reg, complex-single-reg,
  complex-double-reg, and complex-double-double-reg storage classes.

lisp/Darwin-os.c:
o Revert previous change.
o Update os_sigcontext_fpu_reg to support the xmm registers.

lisp/Linux-os.c:
o Update os_sigcontext_fpu_reg to support the xmm registers.

Revision 1.48 - (view) (annotate) - [select for diffs]
Mon Feb 1 16:04:43 2010 UTC (4 years, 2 months ago) by rtoy
Branch: MAIN
CVS Tags: intl-2-branch-base, intl-branch-2010-03-18-1300, intl-branch-base, intl-branch-working-2010-02-11-1000, intl-branch-working-2010-02-19-1000, post-merge-intl-branch, pre-merge-intl-branch, snapshot-2010-03, snapshot-2010-04, snapshot-2010-05, snapshot-2010-06
Branch point for: intl-2-branch, intl-branch
Changes since 1.47: +41 -41 lines
Diff to previous 1.47
Linux-os.c:
o Follow CMUCL coding style.
o Argv and envp are const char*.

os.h:
lisp.c:
Darwin-os.c:
FreeBSD-os.c:
NetBSD-os.c:
OpenBSD-os.c:
hpux-os.c:
irix-os.c:
mach-os.c:
osf1-os.c:
solaris-os.c:
sunos-os.c:
o argv and envp are const char *.

Revision 1.47 - (view) (annotate) - [select for diffs]
Mon Feb 1 15:16:09 2010 UTC (4 years, 2 months ago) by rtoy
Branch: MAIN
Changes since 1.46: +84 -2 lines
Diff to previous 1.46
Patch from Stelian Ionescu on cmucl-imp, 2010/02/01:

    When run on a kernel compiled without COMPAT_BRK CMUCL segfaults,
    so I copied the kludge used by SBCL - check the current
    personality, and if necessary, enable ADDR_NO_RANDOMIZE and
    re-exec itself.

Linux-os.c:
o Check for personality and rexec if necessary.

os.h:
o New prototype for os_init needed because it needs argv and envp.

lisp.c:
Darwin-os.c:
FreeBSD-os.c:
NetBSD-os.c:
OpenBSD-os.c:
hpux-os.c:
irix-os.c:
mach-os.c:
osf1-os.c:
solaris-os.c:
sunos-os.c:
o Update call to os_init, which needs argv and envp now.

Revision 1.44.2.2 - (view) (annotate) - [select for diffs]
Wed Nov 4 03:45:23 2009 UTC (4 years, 5 months ago) by rtoy
Branch: amd64-dd-branch
Changes since 1.44.2.1: +52 -1 lines
Diff to previous 1.44.2.1 , to branch point 1.44 , to next main 1.52
Make amd64 look more like current x86.

code/amd64-vm.lisp:
o Remove all of the sigcontext structure definitions and make it be
  just an sap.
o Instead of direct access to sigcontext structures, call out to C, as
  is done on x86.

code/float-trap.lisp:
o Update floating-point-modes stuff to work for x86 and amd64.

lisp/Linux-os.c:
o Add missing os_sigcontext_fpu_reg and os_sigcontext_fpu_modes for
  amd64, just like on x86.

Revision 1.46 - (view) (annotate) - [select for diffs]
Mon Nov 2 15:05:07 2009 UTC (4 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2009-12, snapshot-2010-01, snapshot-2010-02
Changes since 1.45: +20 -57 lines
Diff to previous 1.45
Revert previous changes.  They were supposed to go on
amd64-dd-branch.

Revision 1.44.2.1 - (view) (annotate) - [select for diffs]
Mon Nov 2 14:29:46 2009 UTC (4 years, 5 months ago) by rtoy
Branch: amd64-dd-branch
Changes since 1.44: +58 -21 lines
Diff to previous 1.44
(Oops.  Previous checkin went to wrong branch.  Here is the commit
log, again.)

This large checkin brings the amd64 port up-to-date with the current
sources.  No real attempt has been made to make it work, but the
cross-compile does create a kernel.core, and the C code compiles (on
openSuSE 10.3).  The resulting kernel.core does not yet work.

Use cross-x86-amd64.lisp as the cross-compile script.  This is
intended to be cross-compiled using the 20a release for Linux, and
only supports x87.  The sse2 support has not be ported yet.

tools/cross-scripts/cross-x86-amd64.lisp:
o Update cross-compile with some missing constants, and frob new
  symbols.

tools/clean-target.sh:
o Remove amd64f files too.

code/pred.lisp:
o Define predicates for double-doubles for bootstrapping to work
  around recursive known function problems with these predicates.

code/sap.lisp:
o Define int-sap with (unsigned-byte 64) type declaration.  (May not
  be needed?)

code/unix-glibc2.lisp:
o Build fails defining map_failed to (int-sap -1).  Just hard-wire to
  0 for now so we can build.

compiler/float-tran.lisp:
o Add missing conditional for %complex-double-double-float.

compiler/amd64/float.lisp:
o Merge double-double support for amd64.  Not really tested yet.

compiler/amd64/parms.lisp:
o Update to match x86 build.  In particular, get the space address
  correct and update the static symbols.

compiler/amd64/type-vops.lisp:
o DYLAN-FUNCTION-HEADER-TYPE no longer exists.

compiler/amd64/vm.lisp:
o Add double-double storage classes and register definitions.

lisp/Config.amd64:
o Bring in line with Config.x86 and friends.

lisp/Linux-os.c:
o Bring amd64 code up-to-date with x86/linux code.

lisp/Linux-os.h
o Need to include sys/ucontext.h to get ucontext defined.  (Why?)
o Also define __USE_GNU so we get the register offsets in the ucontext
  defined.  (Why?)

lisp/amd64-arch.c:
o Change struct sigcontext to os_context_t.
o Use SC_PC instead of context->sc_pc.
o Merge some changes in from x86 version, like SC_EFLAGS.  May need
  more work.

lisp/amd64-assem.s:
o Use rbx instead of ebx for jmp.

lisp/amd64-lispregs.h:
o Define SC_REG, SC_PC, SC_SP using the new x86 style.

lisp/backtrace.c:
o Remove inline assembly for now until I figure out what the amd64
  version should be.

lisp/gencgc.c:
o Conditionalize out weak hash table support for now.

lisp/gencgc.h:
o Set PAGE_SIZE for amd64.  (Is 4096 right?)

lisp/globals.h:
o Export current_dynamic_space_free_pointer and
  current_auto_gc_trigger like for x86.

Revision 1.45 - (view) (annotate) - [select for diffs]
Mon Nov 2 02:51:58 2009 UTC (4 years, 5 months ago) by rtoy
Branch: MAIN
Changes since 1.44: +58 -21 lines
Diff to previous 1.44
This large checkin brings the amd64 port up-to-date with the current
sources.  No real attempt has been made to make it work, but the
cross-compile does create a kernel.core, and the C code compiles (on
openSuSE 10.3).  The resulting kernel.core does not yet work.

Use cross-x86-amd64.lisp as the cross-compile script.  This is
intended to be cross-compiled using the 20a release for Linux, and
only supports x87.  The sse2 support has not be ported yet.

tools/cross-scripts/cross-x86-amd64.lisp:
o Update cross-compile with some missing constants, and frob new
  symbols.

tools/clean-target.sh:
o Remove amd64f files too.

code/pred.lisp:
o Define predicates for double-doubles for bootstrapping to work
  around recursive known function problems with these predicates.

code/sap.lisp:
o Define int-sap with (unsigned-byte 64) type declaration.  (May not
  be needed?)

code/unix-glibc2.lisp:
o Build fails defining map_failed to (int-sap -1).  Just hard-wire to
  0 for now so we can build.

compiler/float-tran.lisp:
o Add missing conditional for %complex-double-double-float.

compiler/amd64/float.lisp:
o Merge double-double support for amd64.  Not really tested yet.

compiler/amd64/parms.lisp:
o Update to match x86 build.  In particular, get the space address
  correct and update the static symbols.

compiler/amd64/type-vops.lisp:
o DYLAN-FUNCTION-HEADER-TYPE no longer exists.

compiler/amd64/vm.lisp:
o Add double-double storage classes and register definitions.

lisp/Config.amd64:
o Bring in line with Config.x86 and friends.

lisp/Linux-os.c:
o Bring amd64 code up-to-date with x86/linux code.

lisp/Linux-os.h
o Need to include sys/ucontext.h to get ucontext defined.  (Why?)
o Also define __USE_GNU so we get the register offsets in the ucontext
  defined.  (Why?)

lisp/amd64-arch.c:
o Change struct sigcontext to os_context_t.
o Use SC_PC instead of context->sc_pc.
o Merge some changes in from x86 version, like SC_EFLAGS.  May need
  more work.

lisp/amd64-assem.s:
o Use rbx instead of ebx for jmp.

lisp/amd64-lispregs.h:
o Define SC_REG, SC_PC, SC_SP using the new x86 style.

lisp/backtrace.c:
o Remove inline assembly for now until I figure out what the amd64
  version should be.

lisp/gencgc.c:
o Conditionalize out weak hash table support for now.

lisp/gencgc.h:
o Set PAGE_SIZE for amd64.  (Is 4096 right?)

lisp/globals.h:
o Export current_dynamic_space_free_pointer and
  current_auto_gc_trigger like for x86.

Revision 1.44 - (view) (annotate) - [select for diffs]
Thu Oct 15 15:05:51 2009 UTC (4 years, 6 months ago) by rtoy
Branch: MAIN
CVS Tags: amd64-dd-start, snapshot-2009-11
Branch point for: amd64-dd-branch
Changes since 1.43: +2 -2 lines
Diff to previous 1.43
As reported by Robert Swindells, cmucl-imp, 2009-10-15, we should not
use arch_support_sse2 here in case we're running an x87 core on a chip
with SSE2 support.

Revision 1.37.6.3 - (view) (annotate) - [select for diffs]
Wed Mar 18 15:37:29 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-snapshot-2009-05, unicode-snapshot-2009-06, unicode-utf16-extfmt-2009-03-27, unicode-utf16-extfmt-2009-06-11
Changes since 1.37.6.2: +2 -2 lines
Diff to previous 1.37.6.2 , to branch point 1.37 , to next main 1.52
Sync to utf16 branch, tag unicode-utf16-sync-label-2009-03-16.

Revision 1.37.4.3 - (view) (annotate) - [select for diffs]
Mon Mar 16 21:10:56 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-char-support-2009-03-25, unicode-utf16-char-support-2009-03-26, unicode-utf16-sync-label-2009-03-16
Changes since 1.37.4.2: +2 -2 lines
Diff to previous 1.37.4.2 , to branch point 1.37 , to next main 1.52
Sync to CVS HEAD, tag label-2009-03-16.

But don't sync Config.FreeBSD_gencgc, Config.x86_freebsd,
FreeBSD-os.c, and FreeBSD-os.h.  Let Alex sync those later.

The result seems to work as expected on Solaris and x86/linux.
Darwin (ppc or x86) untested.

Revision 1.43 - (view) (annotate) - [select for diffs]
Tue Jan 6 02:28:14 2009 UTC (5 years, 3 months ago) by agoncharov
Branch: MAIN
CVS Tags: RELEASE_19f, RELEASE_20a, label-2009-03-16, label-2009-03-25, merge-with-19f, merged-unicode-utf16-extfmt-2009-06-11, portable-clx-base, portable-clx-import-2009-06-16, release-19f-base, release-19f-pre1, release-20a-base, release-20a-pre1, snapshot-2009-01, snapshot-2009-02, snapshot-2009-04, snapshot-2009-05, snapshot-2009-07, snapshot-2009-08, unicode-string-buffer-base, unicode-string-buffer-impl-base
Branch point for: RELEASE-19F-BRANCH, RELEASE-20A-BRANCH, portable-clx-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch
Changes since 1.42: +2 -2 lines
Diff to previous 1.42
* code/exports.lisp -- Added a missing quote characher.
* lisp/FreeBSD-os.c -- Fixed the switch to the SSE2 mode, in line with other OSes.
* lisp/Linux-os.c -- Fixed a comment (sse != sse2)

Revision 1.42 - (view) (annotate) - [select for diffs]
Mon Jan 5 22:26:27 2009 UTC (5 years, 3 months ago) by rtoy
Branch: MAIN
Changes since 1.41: +3 -3 lines
Diff to previous 1.41
Fix for handling arithmetic errors with x87.

Use bootstrap-2009-01-1.lisp to bootstrap this change.

code/float-trap.lisp:
o FLOATING-POINT-MODES for :X87 needs to massage the results into the
  expected format (SSE2 MXCSR order).
o Update for changed VOP names too.

compiler/x86/float.lisp:
o Rename the floating-point-modes and set-floating-point-modes VOPS to
  x87-floating-point-modes and set-x87-floating-point-modes.  Change
  the translations accordingly too.

compiler/x86/parms.lisp:
o The float property bytes have been updated to match the SSE2 MXCSR
  register for both SSE2 and X87 builds because the code assumes SSE2
  format.

lisp/Linux-os.c:
o Don't OR in the SSE2 modes if we're not running an SSE2 build.
  Doing this can erroneously mask out exceptions because the Lisp code
  didn't set up the sse2 modes.  (This happens if you select the x87
  core on a chip that supports sse2.)

lisp/globals.h:
o Declare fpu_mode.

lisp/lisp.c:
o Set fpu_mode to be the mode determined from the core file.  Needed
  in Linux-os.c to process the SSE2 modes correctly with an x87 core
  on a sse2-capable chip.

Revision 1.37.6.2 - (view) (annotate) - [select for diffs]
Fri Dec 19 01:31:34 2008 UTC (5 years, 3 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-utf16-extfmts-sync-2008-12
Changes since 1.37.6.1: +41 -8 lines
Diff to previous 1.37.6.1 , to branch point 1.37
Merge changes from utf16 branch to update to snapshot 2008-12.

Revision 1.37.4.2 - (view) (annotate) - [select for diffs]
Thu Dec 18 21:50:19 2008 UTC (5 years, 3 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-sync-2008-12
Changes since 1.37.4.1: +41 -8 lines
Diff to previous 1.37.4.1 , to branch point 1.37
Merge Snapshot 2008-12 to this branch.  Some tweaks needed in
boot-2008-05-cross-unicode-x86.lisp and the Config files.  FreeBSD and
Darwin/x86 untested, but Linux and Solaris build ok.

Revision 1.41 - (view) (annotate) - [select for diffs]
Wed Dec 10 02:39:13 2008 UTC (5 years, 4 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2008-12
Changes since 1.40: +3 -3 lines
Diff to previous 1.40
os_sigcontext_fpu_modes should return a 32-bit int, not a long since
x86-vm.lisp declares os_sigcontext_fpu_modes to return a 32-bit int.

Revision 1.40 - (view) (annotate) - [select for diffs]
Sun Dec 7 02:33:55 2008 UTC (5 years, 4 months ago) by agoncharov
Branch: MAIN
Changes since 1.39: +1 -3 lines
Diff to previous 1.39
Instead of defining DPRINTF in every X-os.c file, do it once, in os.h

Revision 1.39 - (view) (annotate) - [select for diffs]
Wed Nov 12 15:04:24 2008 UTC (5 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: merge-sse2-packed
Changes since 1.38: +40 -5 lines
Diff to previous 1.38
Merge in SSE2 changes from sse2-packed-branch (tag
sse2-packed-2008-11-12).

Revision 1.37.6.1 - (view) (annotate) - [select for diffs]
Sun Nov 2 13:30:03 2008 UTC (5 years, 5 months ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.37: +2 -16 lines
Diff to previous 1.37
Sync to snapshot 2008-11.  But we didn't sync code/extfmts.lisp or
iso8859-1.lisp and utf-8.lisp.  (I don't think we want those changes,
yet.)

Revision 1.37.4.1 - (view) (annotate) - [select for diffs]
Sat Nov 1 22:40:36 2008 UTC (5 years, 5 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-sync-2008-11
Changes since 1.37: +2 -16 lines
Diff to previous 1.37
Sync to snapshot 2008-11.

Revision 1.38.2.9 - (view) (annotate) - [select for diffs]
Wed Oct 1 16:27:05 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
CVS Tags: sse2-checkpoint-2008-10-01, sse2-merge-with-2008-10, sse2-merge-with-2008-11, sse2-packed-2008-11-12, sse2-packed-base
Branch point for: sse2-packed-branch
Changes since 1.38.2.8: +2 -39 lines
Diff to previous 1.38.2.8 , to branch point 1.38 , to next main 1.52
Some random cleanups of the code.

code/float-trap.lisp:
o Merge the SSE2 version into the original version.  There's only a
  small difference.

compiler/x86/float-sse2.lisp:
o Remove the vops floating-point-modes and set-floating-point-modes
  that are no longer used.

compiler/x86/insts.lisp:
o Remove the sse2 conditionalizations for the sse2 instructions.  They
  aren't really necessary.

lisp/Linux-os.c:
o Remove unused os_set_sigcontext_fpu_modes.

Revision 1.38.2.8 - (view) (annotate) - [select for diffs]
Wed Oct 1 13:48:13 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.7: +7 -10 lines
Diff to previous 1.38.2.7 , to branch point 1.38
Update os_sigcontext_fpu_modes to return the modes in the correct
format.  Basically, use the same format as the mxcsr register.

Revision 1.38.2.7 - (view) (annotate) - [select for diffs]
Tue Sep 30 15:12:15 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.6: +4 -8 lines
Diff to previous 1.38.2.6 , to branch point 1.38
Make the SSE2 stuff use run-time tests so that we can run this code on
a chip without SSE2.

We leave the #ifdef's in place, just in case someone wants to build
the code on a machine without sse2 support at all.

Revision 1.38.2.6 - (view) (annotate) - [select for diffs]
Tue Sep 30 15:00:29 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.5: +7 -8 lines
Diff to previous 1.38.2.5 , to branch point 1.38
It appears we don't need to set the sigcontext.  Just set the
floating-point modes.  FP traps appear to be working now.

For now, leave the sse2 version of sigfpe-handler for now.  Leave the
sigcontext setter around too.

lisp/Linux-os.c:
o Turn off debugging prints.

code/float-trap.lisp:
o Remove debugging prints
o Set the FP modes directly instead of setting the modes in the
  sigcontext.

Revision 1.38.2.5 - (view) (annotate) - [select for diffs]
Tue Sep 30 14:40:08 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.4: +52 -1 lines
Diff to previous 1.38.2.4 , to branch point 1.38
First cut at getting sigfpe working with sse2.  Previously, the
enabled traps were cleared, but now they retain their original
values.  However, after handling the sigfpe, the current-exceptions
includes the just handled exception.  This causes the exception to be
thrown again at the next FP instruction.

More work needed.

lisp/Linux-os.c:
o Add os_set_sigcontext_fpu_modes function to set the FPU modes in the
  sigcontext.
o Update restore_fpu to restore the SSE2 status like we already do for
  the FPU status.

code/x86-vm.lisp:
o Add interfact to os_set_sigcontext_fpu_modes.

code/float-trap.lisp:
o For now, add special version of SIGFPE-HANDLER for SSE2.  We attempt
  to clear the signaled exception from the modes and set the
  sigcontext with the new modes.  (The sigcontext appears to be set,
  but the curent-exceptions doesn't appear to be correctly cleared.)

Revision 1.38.2.4 - (view) (annotate) - [select for diffs]
Sat Sep 27 20:15:30 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.3: +6 -4 lines
Diff to previous 1.38.2.3 , to branch point 1.38
Fix up some FP handling for SSE2.  Need to set up the X87 state as
well.

(Should we split this into to two and allow separate control of SSE2
and X87?)

compiler/x86/float-sse2.lisp:
o FLOATING-POINT-MODES needs to grab the stuff from the x87 state
  too.  Or them all together to get the final result.
o (SETF FLOATING-POINT-MODES) needs to set both the SSE2 and X87
  control and status flags.

lisp/Darwin-os.c:
o Use DPRINTF
o Forgot to OR in the control (mask) part of the SSE2 control.

lisp/Linux-os.c:
o Use DPRINTF
o Fix bug where modes were xor'ed too early.
o Forgot to OR in the control (mask) part of the SSE2 control.

Revision 1.38.2.3 - (view) (annotate) - [select for diffs]
Sat Sep 27 13:25:39 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.2: +3 -22 lines
Diff to previous 1.38.2.2 , to branch point 1.38
Some clean up of code, and porting to Darwin/x86.

lisp/Linux-os.c:
o Comment out the include of asm/sigcontext.h.  This causes multiple
  definitions on a Suse 10.3 machine.
o Move the os_support_sse2 stuff to x86-arch.c.

lisp/x86-arch.c:
o Add inline assembly for the cpuid instruction, so we don't have to
  depend on the OS to define it in some random include file.
o Add arch_support_sse2 to tell us if the machine has sse2 support.

lisp/x86-assem.S:
o Clean up definition of have_sse2 to work on both Linux and Darwin.
o Fix typo where we were skipping over fldz's in call_into_lisp.  We
  still need that for now.

Revision 1.38.2.2 - (view) (annotate) - [select for diffs]
Fri Sep 26 21:47:09 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38.2.1: +20 -1 lines
Diff to previous 1.38.2.1 , to branch point 1.38
Initial support for x87 and sse2 cores with one binary.  More support
still needed, though.

lisp/Linux-os.c:
o Add os_support_sse2 function to tell if the chip supports SSE2 or
  not.

lisp/arch.h:
o Change declaration for arch_init to match Linux implementation.
  (Eventually, we'll get rid of this.)

lisp/lisp.c:
o Add fpu_mode variable
o Recognize -fpu switch to allow the user to select the desired FPU
  mode.
o Call arch_init with the fpu mode.

lisp/x86-arch.c:
o Use the fpu mode to select the name of the core file.

lisp/x86-assem.S:
o Add have_sse2 global variable.
o If have_sse2 is set, we copy the float result in ST(0) to XMM0.

Revision 1.38.2.1 - (view) (annotate) - [select for diffs]
Fri Sep 26 18:56:43 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
Changes since 1.38: +28 -1 lines
Diff to previous 1.38
Initial support for SSE2.  This compiles itself ok on Linux, and
should work on OSX.  Much cleanup is needed, and still need to restore
buildability without SSE2.

Use bootfiles/19e/boot-2008-09-sse2.lisp as the cross-compile script.

The key changes are in these new files:

o float-sse2.lisp: implements all of the floating-point stuff with
  SSE2
o sse2-array.lisp: replacement vops using sse2 instead of x87
o sse2-c-call.lisp: replacement vops using sse2 instead of x87.
o sse2-sap.lisp: replacement vops using sse2 instead of x87



code/irrat.lisp:
o Basically turn off all the special routines that use the x87 trig,
  log, or exp instructions.  We don't support that currently.  (Would
  be nice, though.)
o Turn on %%sin and friends, like on ppc.
o Turn off %sin-quick and friends since we don't want to use x87 now.

code/misc.lisp:
o Register :sse2 feature.

compiler/float-tran.lisp:
o Disable transforms for x86 that use x87 instructions.  We don't
  support that with sse2.

compiler/loadbackend.lisp:
o Load up the appropriate sse2 files for the compiler.  This will
  currently overwrite existing vops with vops for SSE2.

compiler/x86/float.lisp:
o Disable various vops using the x87 instructions, since
  float-sse2.lisp doesn't have equivalents.  (Just in case.  Since
  this isn't compiled or loaded, we shouldn't need to do this.)

compiler/x86/insts.lisp:
o Add support for SSE2 instructions.  Shamelessly borrowed from our
  SBCL friends.

compiler/x86/vm.lisp:
o Turn off some fp-constants that are not supported with sse2.
o Print FP registers as XMM instead of FR.

lisp/Config.linux_gencgc:
lisp/Config.x86_darwin:
o Enable FEATURE_SSE2 flag when compiling.

lisp/Darwin-os.c:
lisp/Linux-os.c:
o Get the mxcsr status bits too when getting the FPU status from a
  sigcontext.

lisp/x86-assem.S:
o For SSE2, we copy any floating-point result (in ST(0)) to XMM0, so
  Lisp code can get it.

tools/comcom.lisp:
o Compile up the SSE2 files as needed.

Revision 1.38 - (view) (annotate) - [select for diffs]
Tue Sep 16 08:52:31 2008 UTC (5 years, 7 months ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2008-10, snapshot-2008-11, sse2-base
Branch point for: sse2-branch
Changes since 1.37: +2 -16 lines
Diff to previous 1.37
Move the gencgc write barrier code into its own function.

Revision 1.37 - (view) (annotate) - [select for diffs]
Thu Jan 3 11:41:54 2008 UTC (6 years, 3 months ago) by cshapiro
Branch: MAIN
CVS Tags: release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03, snapshot-2008-04, snapshot-2008-05, snapshot-2008-06, snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, unicode-utf16-base, unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-string-support, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09
Branch point for: release-19e-branch, unicode-utf16-branch, unicode-utf16-extfmt-branch
Changes since 1.36: +57 -21 lines
Diff to previous 1.36
Switch the FreeBSD port to use the common floating point trap handling
code.  Rather than introduce a new FreeBSD case to the x86 sigcontext
member accessor routines, collapse all of the system specific routines
down to a common set of routines.

* code/debug-int.lisp - Disable some Darwin-specific code to debug
  NULL mcontext pointers.

* code/float-trap.lisp - Remove ancient FreeBSD-specific code for
  handling floating point signals.

* code/macros.lisp, code/sap.lisp, compiler/saptran.lisp - Include the
  SAP-REF-LONG setter by default on the x86.

* code/x86-vm.lisp - Remove operating system specific sigcontext
  definitions and sigcontext accessors.  Define the alien sigcontext
  as a system area pointer.  Replace the sigcontext accessors with
  foreign function calls that mask the complexity of the underlying
  sigcontext member access.

* compiler/x86/float.lisp - Unconditionally define STORE-LONG-FLOAT.
  This function is used by the %SET-SAP-REF-LONG VOP that underlies
  the SAP-REF-LONG setter.

* compiler/x86/sap.lisp - Unconditionally define %SET-SAP-REF-LONG.
  In the case where there is not a distinct LONG-FLOAT type, admit
  DOUBLE-FLOAT values instead.  The x87 automatically widens values
  pushed onto stack.  This mirrors the behavior of the SAP-REF-LONG
  VOP.

* lisp/Darwin-os.c, lisp/Linux-os.c - Define functions to access
  sigcontext members of interest to Lisp.  Delete the sc_reg function
  and replace its uses with os_sigcontext_reg which is more suitably
  typed.

* lisp/FreeBSD-os.c - Define functions to access sigcontext members of
  interest to Lisp.  We need to be careful about the SSE and non-SSE
  cases for retrieving x87 registers from the saved machine state.
  Define a low-level SIGFPE handler to intercept floating point traps
  and restore the cleared status word bits based on the signal code.
  Get rid of sc_reg for the reasons noted above.

* lisp/Darwin-os.h, lisp/FreeBSD-os.h - Declare the restore_fpu
  function and define a specialized RESTORE_FPU macro.  Remove the
  sc_reg prototype.

* lisp/Linux-os.h - Remove the sc_reg prototype.

* lisp/os.h - Add prototypes for the new os_sigcontext functions.

* lisp/x86-lispregs.h - Redefine SC_REG and SC_PC to expand out to the
  new os_sigcontext functions.  Redfine SC_SP to expand out to SC_REG.
  Eliminate all platform-specific defintions of SC_PC and SC_SP.

Revision 1.36 - (view) (annotate) - [select for diffs]
Mon Dec 17 09:54:35 2007 UTC (6 years, 4 months ago) by cshapiro
Branch: MAIN
Changes since 1.35: +1 -8 lines
Diff to previous 1.35
Make all ports use an accessor function to retrieve the value of
h_errno.  Like errno, it is left unspecified whether h_errno is a
macro or an identifier declared with external linkage.  Let the C
compiler sort this out for us.

Revision 1.35 - (view) (annotate) - [select for diffs]
Fri Dec 14 12:19:58 2007 UTC (6 years, 4 months ago) by cshapiro
Branch: MAIN
Changes since 1.34: +10 -15 lines
Diff to previous 1.34
Reintroduce code to restore the x87 control word state from the
sigcontext before calling back into Lisp.  The rounding mode is always
set correctly when we reenter Lisp through call_into_lisp.  We now
ensure that the trap bits enabled by the user are also preserved.

Revision 1.34 - (view) (annotate) - [select for diffs]
Fri Dec 14 08:06:50 2007 UTC (6 years, 4 months ago) by cshapiro
Branch: MAIN
Changes since 1.33: +19 -19 lines
Diff to previous 1.33
Update amd64 specific code for POSIX signals.

Revision 1.33 - (view) (annotate) - [select for diffs]
Tue Jul 31 10:08:47 2007 UTC (6 years, 8 months ago) by cshapiro
Branch: MAIN
CVS Tags: pre-telent-clx, snapshot-2007-08, snapshot-2007-09, snapshot-2007-10, snapshot-2007-11, snapshot-2007-12
Changes since 1.32: +1 -9 lines
Diff to previous 1.32
Replace operating system private errno accessors with a common set of
errno accessors shared by all ports.  Change the definition of
UNIX:UNIX-ERRNO so that it always calls down to an accessor function.

Revision 1.32 - (view) (annotate) - [select for diffs]
Mon Jul 30 07:24:46 2007 UTC (6 years, 8 months ago) by cshapiro
Branch: MAIN
Changes since 1.31: +1 -2 lines
Diff to previous 1.31
Remove the attempted include of a local signal.h header.  Replace this
quoted include with an include of the system signal.h where needed.

Revision 1.31 - (view) (annotate) - [select for diffs]
Wed Jul 25 10:23:54 2007 UTC (6 years, 8 months ago) by cshapiro
Branch: MAIN
Changes since 1.30: +21 -30 lines
Diff to previous 1.30
Use sa_sigaction signal handlers on Linux.  The glibc definition of
sigset_t is different from the one used in the Linux kernel.  This means
that we cannot make assignments of sigset_t objects without corrupting
memory.  To work around this problem we update uc_sigmask differently
on Linux than on other systems.  Also, remove x87 control word updates
since the x87 is setup correctly inside call_into_lisp.

Revision 1.30 - (view) (annotate) - [select for diffs]
Sun Jul 15 21:33:14 2007 UTC (6 years, 9 months ago) by cshapiro
Branch: MAIN
Changes since 1.29: +1 -14 lines
Diff to previous 1.29
Remove unused context saving and setting functions.

Revision 1.29 - (view) (annotate) - [select for diffs]
Fri Jul 13 08:34:21 2007 UTC (6 years, 9 months ago) by cshapiro
Branch: MAIN
Changes since 1.28: +1 -13 lines
Diff to previous 1.28
Remove conditionally-compiled code to support old Linux versions.

Revision 1.28 - (view) (annotate) - [select for diffs]
Fri Jul 13 05:03:03 2007 UTC (6 years, 9 months ago) by cshapiro
Branch: MAIN
Changes since 1.27: +6 -16 lines
Diff to previous 1.27
When an address hint is passed to os_validate set the MAP_FIXED flag.

Revision 1.27 - (view) (annotate) - [select for diffs]
Tue Nov 7 11:24:12 2006 UTC (7 years, 5 months ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2006-12, snapshot-2007-01, snapshot-2007-02, snapshot-2007-03, snapshot-2007-04, snapshot-2007-05, snapshot-2007-06, snapshot-2007-07
Changes since 1.26: +29 -30 lines
Diff to previous 1.26
Make SC_REG expand out to an lvalue on the x86 and AMD64.  Define a
reg_NARGS macro on these targets and use SC_REG to replace open-coded
assignments to platform specific sigcontext members in interrupt.c and
os-common.c.  This code could be simplified further by merging the x86
and AMD64 cases into the general case.

Revision 1.26 - (view) (annotate) - [select for diffs]
Fri Mar 17 02:56:45 2006 UTC (8 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: double-double-array-base, double-double-array-checkpoint, double-double-base, double-double-init-%make-sparc, double-double-init-checkpoint-1, double-double-init-ppc, double-double-init-sparc, double-double-init-sparc-2, double-double-init-x86, double-double-irrat-end, double-double-irrat-start, double-double-reader-base, double-double-reader-checkpoint-1, double-double-sparc-checkpoint-1, release-19d, release-19d-base, release-19d-pre1, release-19d-pre2, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06, snapshot-2006-07, snapshot-2006-08, snapshot-2006-09, snapshot-2006-10, snapshot-2006-11
Branch point for: double-double-array-branch, double-double-branch, double-double-reader-branch, release-19d-branch
Changes since 1.25: +7 -1 lines
Diff to previous 1.25
lisp/Linux-os.c:
o Add function get_h_errno to extract h_errno.

code/internet.lisp:
o On Linux, call the get_h_errno function to get h_errno instead of
  calling __h_errno_location ourselves since that's not part of the
  public API.

Revision 1.23.2.2 - (view) (annotate) - [select for diffs]
Mon Dec 19 01:10:11 2005 UTC (8 years, 4 months ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-12-17, ppc_gencgc_snap_2006-01-06
Changes since 1.23.2.1: +229 -192 lines
Diff to previous 1.23.2.1 , to branch point 1.23 , to next main 1.52
Merge code from main branch of 2005-12-17 to ppc gencgc branch.  Still
doesn't work of course.

Revision 1.25 - (view) (annotate) - [select for diffs]
Thu Sep 15 18:26:50 2005 UTC (8 years, 7 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19c, release-19c-base, release-19c-pre1, snapshot-2005-10, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01, snapshot-2006-02, snapshot-2006-03
Branch point for: release-19c-branch
Changes since 1.24: +229 -192 lines
Diff to previous 1.24
Indent all source files using GNU indent using the config in
.indent.pro.

Revision 1.23.2.1 - (view) (annotate) - [select for diffs]
Sun May 15 20:01:31 2005 UTC (8 years, 11 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.23: +15 -11 lines
Diff to previous 1.23
Merge snapshot-2005-05 to this branch.

Revision 1.24 - (view) (annotate) - [select for diffs]
Sun Apr 24 12:41:58 2005 UTC (8 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19b-base, release-19b-pre1, release-19b-pre2, snapshot-2005-05, snapshot-2005-06, snapshot-2005-07, snapshot-2005-08, snapshot-2005-09
Branch point for: release-19b-branch
Changes since 1.23: +15 -11 lines
Diff to previous 1.23
Don't use MAP_FIXED so we don't clobber existing mappings.  If we
can't allocate at the desired address, produce an error message and
die gracefully.

From James Y Knight, cmucl-imp, 2005/03/11

Revision 1.23 - (view) (annotate) - [select for diffs]
Fri Dec 24 15:11:10 2004 UTC (9 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: ppc_gencgc_snap_2005-05-14, snapshot-2005-01, snapshot-2005-02, snapshot-2005-03, snapshot-2005-04
Branch point for: ppc_gencgc_branch
Changes since 1.22: +24 -1 lines
Diff to previous 1.22
From Helmut Eller, cmucl-imp, 2004-10-05:

    on Linux/x86, the Lisp signal handler for SIGSEGV overwrites the
    beginning of the control stack.

    For SIGSEGV we use an extra signal stack and when the signal isn't
    handled by the GC or by the stack overflow handler we call eventually
    call_into_lisp.  call_into_lisp tests whether the current stack
    pointer points to the normal control stack.  But the test fails
    because we use the extra signal stack, so call_into_lisp just sets the
    stack pointer to the beginning of the normal control stack. This is
    not much fun for debugging because the backtrace is truncated and it's
    also no longer possible to throw to the top-level-catcher because its
    frame was overwritten.

    I tried to fix that with the patch below.  The idea is to switch back
    to the normal stack before calling the Lisp handler.  The patch may
    not be very elegant but it is at least short  :) .

Revision 1.22 - (view) (annotate) - [select for diffs]
Tue Oct 19 19:12:03 2004 UTC (9 years, 5 months ago) by cwang
Branch: MAIN
CVS Tags: snapshot-2004-11, snapshot-2004-12
Changes since 1.21: +9 -5 lines
Diff to previous 1.21
Add registers r8-15

Revision 1.21 - (view) (annotate) - [select for diffs]
Sat Sep 11 19:18:02 2004 UTC (9 years, 7 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2004-10
Changes since 1.20: +12 -2 lines
Diff to previous 1.20
Port of SBCL's float-accuracy compilation policy.  Intended to make
double-float-epsilon actually be epsilon on x86.  No effect on other
ports.

The default precision is now 53-bit (double-float) instead of 64-bit
(80-bit floats).  However, to preserve C expectations, all calls to C
have the precision set to 64-bit.  This slows down calls to C, but we
try to make syscalls and such fast by not changing precision for the
call.

By default ext:float-accuracy is 3.

Use boot7.lisp to bootstrap.

Revision 1.20 - (view) (annotate) - [select for diffs]
Thu Jul 8 04:10:09 2004 UTC (9 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: prm-before-macosx-merge-tag, snapshot-2004-08, snapshot-2004-09
Changes since 1.19: +7 -7 lines
Diff to previous 1.19
More fixes for compiler warnings about printf arg types, implicit
conversions to pointers from ints.  Correct the return type of
sigsegv_handle_now.

Revision 1.19 - (view) (annotate) - [select for diffs]
Mon Jun 7 15:24:08 2004 UTC (9 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2004-07
Changes since 1.18: +7 -2 lines
Diff to previous 1.18
Add sigsegv_handle_now (and segv_handle_now) to handle segv's that
weren't caused by a write-protected heap.  Requested by Lynn Quam.

Revision 1.18 - (view) (annotate) - [select for diffs]
Thu May 20 00:32:24 2004 UTC (9 years, 11 months ago) by cwang
Branch: MAIN
CVS Tags: snapshot-2004-06
Changes since 1.17: +5 -1 lines
Diff to previous 1.17
A couple simple fixes to compile a lisp executable

Revision 1.17 - (view) (annotate) - [select for diffs]
Wed May 19 22:37:40 2004 UTC (9 years, 11 months ago) by cwang
Branch: MAIN
Changes since 1.16: +30 -4 lines
Diff to previous 1.16
amd64 changes

Revision 1.16.6.1 - (view) (annotate) - [select for diffs]
Wed Sep 3 11:32:06 2003 UTC (10 years, 7 months ago) by gerd
Branch: lisp-executable
Changes since 1.16: +9 -8 lines
Diff to previous 1.16 , to next main 1.52
Fred Gilham's Lisp executable support for CMUCL.

Revision 1.15.4.2 - (view) (annotate) - [select for diffs]
Mon Mar 24 10:54:52 2003 UTC (11 years ago) by gerd
Branch: cold-pcl
Changes since 1.15.4.1: +2 -2 lines
Diff to previous 1.15.4.1 , to branch point 1.15 , to next main 1.52
Merge with HEAD

Revision 1.16 - (view) (annotate) - [select for diffs]
Sun Mar 23 21:23:41 2003 UTC (11 years ago) by gerd
Branch: MAIN
CVS Tags: amd64-merge-start, dynamic-extent-base, lisp-executable-base, mod-arith-base, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, remove_negative_zero_not_zero, snapshot-2003-10, snapshot-2003-11, snapshot-2003-12, snapshot-2004-04, snapshot-2004-05, sparc_gencgc, sparc_gencgc_merge
Branch point for: dynamic-extent, lisp-executable, mod-arith-branch, release-19a-branch, sparc_gencgc_branch
Changes since 1.15: +8 -3 lines
Diff to previous 1.15
	Optional control stack checking.  This is controlled by the
	feature :stack-checking because it's not implemented for other
	systems/architectures yet.  It is currently known to work on
	FreeBSD 4.8-RC/x86 and Debian 2.2.20/x86.

	* bootfiles/18e/boot3.lisp: New boot file, well, only a
	description of the boot procedure since no boot file is needed.

	* lisp/x86-validate.h (SIGNAL_STACK_START, SIGNAL_STACK_SIZE)
	[__FreeBSD__, __linux__]: New defines.
	(CONTROL_STACK_SIZE) {__FreeBSD__, __linux__]:
	Adjust for signal stack.

	* lisp/validate.c (validate) [RED_ZONE_HIT]: Call
	os_guard_control_stack.  Some cleanup.

	* lisp/os.h (BOTH_ZONES, YELLOW_ZONE, RED_ZONE): New enums.
	Add function prototypes.

	* lisp/interrupt.c (interrupt_install_low_level_handler)
	[RED_ZONE_HIT]: Deliver protection violations on a dedicated
	signal stack.

	* lisp/os-common.c (os_stack_grows_down_1, os_stack_grows_down):
	New functions.
	(guard_zones, control_stack_zone, os_guard_control_stack)
	(os_control_stack_overflow) [RED_ZONE_HIT]: New functions.
	(os_control_stack_overflow) [!RED_ZONE_HIT]: Dummy function.

	* lisp/Linux-os.c (sigsegv_handler) [RED_ZONE_HIT]: Handle control
	stack overflows.

	* lisp/FreeBSD-os.c: General cleansing.
	(sigbus_handler) [RED_ZONE_HIT]: Handle control stack overflows.

	* lisp/FreeBSD-os.h (PROTECTION_VIOLATION_SIGNAL): New define.

	* lisp/Linux-os.h (PROTECTION_VIOLATION_SIGNAL): New define.

	* compiler/x86/system.lisp (lisp::%scrub-control-stack): Change
	defknown from sys:scrub-control-stack.
	(%scrub-control-stack): Rename VOP.

	* code/lispinit.lisp (os-guard-control-stack) [#+stack-checking]:
	Define alien os_guard_control_stack.
	(%scrub-control-stack) [#+x86]: New function.
	(scrub-control-stack) [#+x86]: Call %scrub-control-stack,
	call os-guard-control-stack if #+stack-checking.

	* code/interr.lisp (yellow-zone-hit,
	red-zone-hit) [#+stack-checking]: New functions.

	* code/error.lisp (stack-overflow) [#+stack-checking]: New
	condition.

	* compiler/generic/new-genesis.lisp (finish-symbols)
	[#+stack-checking]: Add symbols for control stack checking.

	* compiler/x86/parms.lisp (static-symbols): Likewise.

Revision 1.15.4.1 - (view) (annotate) - [select for diffs]
Sun Mar 9 12:51:56 2003 UTC (11 years, 1 month ago) by gerd
Branch: cold-pcl
Changes since 1.15: +8 -3 lines
Diff to previous 1.15
*** empty log message ***

Revision 1.15 - (view) (annotate) - [select for diffs]
Wed Aug 28 13:29:25 2002 UTC (11 years, 7 months ago) by pmai
Branch: MAIN
CVS Tags: UNICODE-BASE, cold-pcl-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: UNICODE-BRANCH, cold-pcl, release-18e-branch
Changes since 1.14: +5 -2 lines
Diff to previous 1.14
A number of smallish changes to the new linkage-table code:
o Conditionalized some code that is only used in linkage-table builds
  on :linkage-table and LINKAGE_TABLE respectively.
o Modernized undefined_ff_tramp based on recent changes, and renamed
  it to undefined_foreign_symbol_trap, because it really isn't a
  trampoline.
o Conditionalized a stray puts(...,dlerror()) in Linux-os.c on DEBUG
o Installed an error reporter for UNDEFINED_FOREIGN_SYMBOL_ERROR,
  which for now signals a simple-program-error.  We might want to
  introduced a new condition UNDEFINED-FOREIGN-SYMBOL or something,
  which could also be used by the old foreign linkage code.

Revision 1.14 - (view) (annotate) - [select for diffs]
Wed Aug 28 07:16:38 2002 UTC (11 years, 7 months ago) by moore
Branch: MAIN
Changes since 1.13: +3 -3 lines
Diff to previous 1.13
Fix foregin object braindamage noted by Pierre Mai.

Revision 1.13 - (view) (annotate) - [select for diffs]
Tue Aug 27 22:18:31 2002 UTC (11 years, 7 months ago) by moore
Branch: MAIN
CVS Tags: LINKAGE_TABLE
Changes since 1.12: +50 -1 lines
Diff to previous 1.12
On x86 FreeBSD and Linux, change the way foreign symbol addresses are resolved.
They now go through a table -- effectively a new space in the core file.
Function references are resolved lazily, data references are resolved on startup
and when a .so is loaded.  The end result is that cores can be dumped that
contain references to symbols in shared libraries.  Also, the dependence of the core on addresses in the Lisp runtime is broken.

The linkage table feature is controlled by :linkage-table and LINKAGE_TABLE in C
runtime.  Several foreign symbols are now Lisp static symbols, so a cross
compile is required whether or not the new stuff is used.  I've checked in
boot4-cross-foreign-linkage.lisp that builds the compiler for linkage table; do whatever you usually do for the non-linkage table case:)  Seriously, lets start
a discussion on standardizing "cross compilation," not to mention the general
build procedure.

Revision 1.2.2.3 - (view) (annotate) - [select for diffs]
Tue Oct 24 13:33:55 2000 UTC (13 years, 5 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18c, RELEASE_18d
Changes since 1.2.2.2: +3 -3 lines
Diff to previous 1.2.2.2 , to branch point 1.2 , to next main 1.52
o Add the command line switch -dynamic-space-size for setting the size
  of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum
  size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default.

o Increase the maximum dynamic space size for Linux x86 to 1.625GB,
  with the default remaining at 512MB.

o Define the default dynamic space size for FreeBSD x86 to also be 512MB,
  with a maximum of 2GB.

Revision 1.12 - (view) (annotate) - [select for diffs]
Tue Oct 24 13:32:30 2000 UTC (13 years, 5 months ago) by dtc
Branch: MAIN
CVS Tags: PRE_LINKAGE_TABLE
Changes since 1.11: +3 -3 lines
Diff to previous 1.11
o Add the command line switch -dynamic-space-size for setting the size
  of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum
  size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default.

o Increase the maximum dynamic space size for Linux x86 to 1.625GB,
  with the default remaining at 512MB.

o Define the default dynamic space size for FreeBSD x86 to also be 512MB,
  with a maximum of 2GB.

Revision 1.11 - (view) (annotate) - [select for diffs]
Sun Aug 27 14:45:41 2000 UTC (13 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.10: +1 -2 lines
Diff to previous 1.10
Misc source cleanup.

Revision 1.2.2.2 - (view) (annotate) - [select for diffs]
Tue May 23 16:38:12 2000 UTC (13 years, 10 months ago) by pw
Branch: RELENG_18
Changes since 1.2.2.1: +119 -155 lines
Diff to previous 1.2.2.1 , to branch point 1.2
This set of revisions brings the RELENG_18 branch up to HEAD in preparation
for an 18c release.

Revision 1.10 - (view) (annotate) - [select for diffs]
Wed Jan 19 18:15:15 2000 UTC (14 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.9: +11 -44 lines
Diff to previous 1.9
Have os_validate pass the MAP_NORESERVE flag to mmap. This allows
users with low swap plus memory to run without enabling the
non-standard and perhaps undesirable overcommit_memory option. With
this change the current scheme of splitting mmap operations into
smaller pieces to bypass the kernel checks is no longer necessary,
and this code has been cleaned up.

Revision 1.9 - (view) (annotate) - [select for diffs]
Mon Nov 29 17:04:07 1999 UTC (14 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.8: +89 -112 lines
Diff to previous 1.8
Source cleanup.

Revision 1.8 - (view) (annotate) - [select for diffs]
Wed Aug 25 14:25:06 1999 UTC (14 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.7: +5 -5 lines
Diff to previous 1.7
Improve the packing of information into the page table, reducing the
table size by 25%, and move to a fixed layout of the page flags to
better support future atomic operations for threaded code.

Revision 1.7 - (view) (annotate) - [select for diffs]
Mon Feb 22 11:26:41 1999 UTC (15 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.6: +3 -20 lines
Diff to previous 1.6
Post Linux-Alpha patch cleanup.

Revision 1.6 - (view) (annotate) - [select for diffs]
Sat Feb 20 15:54:42 1999 UTC (15 years, 1 month ago) by pw
Branch: MAIN
Changes since 1.5: +43 -6 lines
Diff to previous 1.5
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.

Revision 1.5 - (view) (annotate) - [select for diffs]
Tue Feb 2 10:58:24 1999 UTC (15 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.4: +2 -2 lines
Diff to previous 1.4
Provide our own implementation of setfpucw for the Linux port, as
recent libraries are reported to no long provide __setfpucw.

Revision 1.2.2.1 - (view) (annotate) - [select for diffs]
Tue Jun 23 11:24:46 1998 UTC (15 years, 9 months ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18b
Changes since 1.2: +53 -13 lines
Diff to previous 1.2
This (huge) revision brings the RELENG_18 branch up to the current HEAD.
Note code/unix-glib2.lisp not yet included -- not sure it is ready to go.

Revision 1.4 - (view) (annotate) - [select for diffs]
Fri May 1 01:21:40 1998 UTC (15 years, 11 months ago) by dtc
Branch: MAIN
Changes since 1.3: +13 -2 lines
Diff to previous 1.3
Update for the linux port from Peter VanEynde, adds preliminary
support for glibc2.

Revision 1.3 - (view) (annotate) - [select for diffs]
Tue Nov 25 17:59:17 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.2: +41 -12 lines
Diff to previous 1.2
Conservative generational garbage collection for the x86 port.

Revision 1.2 - (view) (annotate) - [select for diffs]
Sat Jun 7 15:25:38 1997 UTC (16 years, 10 months ago) by pw
Branch: MAIN
CVS Tags: RELEASE_18a
Branch point for: RELENG_18
Changes since 1.1: +5 -1 lines
Diff to previous 1.1
Peter's fixes for Linux 2.1

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Jan 21 00:28:13 1997 UTC (17 years, 2 months ago) by ram
Branch: MAIN
source kit 1.03.7

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5