/[cmucl]/src/lisp/x86-assem.S
ViewVC logotype

Log of /src/lisp/x86-assem.S

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 1.35 - (view) (annotate) - [select for diffs]
Wed Dec 22 02:12:52 2010 UTC (3 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, cross-sol-x86-merged, snapshot-2011-01, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07, snapshot-2011-09
Changes since 1.34: +39 -22 lines
Diff to previous 1.34
Merge changes from cross-sol-x86-2010-12-20 which adds support for
Solaris/x86.  There should be no functional changes for either other
x86 ports or for the sparc port.

Revision 1.34.6.1 - (view) (annotate) - [select for diffs]
Tue Dec 14 04:25:11 2010 UTC (3 years, 4 months ago) by rtoy
Branch: cross-sol-x86-branch
CVS Tags: cross-sol-x86-2010-12-20
Changes since 1.34: +39 -22 lines
Diff to previous 1.34 , to next main 1.35
First cut at a build for Solaris/x86.  Result doesn't work; it gets as
far as TYPE-INIT, but then crashes.

These changes still allow solaris/sparc and darwin/x86 to build, so we
haven't broken both sparc and x86 while doing this.

tools/cross-scripts/cross-x86-osx-solaris.lisp:
o New cross-compile script to use darwin/x86 to cross-compile to
  solaris/x86.

compiler/x86/parms.lisp:
o For now, put thel linkage space start at 0xc0000000 on Solaris/x86.

lisp/Config.sparc_common:
o Separate out the common parts between Solaris sparc and x86.  Move
  the different parts into the appropriate file.

lisp/Config.sparc_sunc:
o Add ASSEM_SRC and ARCH_SRC here, with the appropriate OS_SRC,
  OS_LINK_FLAGS, and OS_LIBS>

lisp/Config.x86_solaris_sunc:
o New file for building solaris/x86 using Sun C (aka Sun Studio aka
  Solaris Studio)

lisp/interrupt.c:
o Use a static array for the altstack.  Should eventually do what
  other x86 platforms do.

lisp/solaris-os.c:
o Don't need os_flush_icache on x86 (?), so make the body empty for
  x86.
o Add x86 version of os_sigcontext_reg and os_sigcontext_pc.

lisp/sunos-os.h:
o The pagesize is 4096 on x86 instead of 8192.
o Don't need (?) SAVE_CONTEXT.

lisp/x86-assem.S:
o Update to support Sun C assembler:
  - Add appropriate GNAME, FUNCDEF and ENDFUNC macros.
  - Sun assembler doesn't have int3 instruction, so add INT3 macro to
    do the appropriate things.
  - Sun assembler doesn't like control L characters in the file so
    remove them.

lisp/x86-validate.h:
o Add entry for Solaris.  This needs work, but it looks like these
  values will work.

Revision 1.34 - (view) (annotate) - [select for diffs]
Mon Jul 19 23:08:37 2010 UTC (3 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20b, cross-sol-x86-base, cross-sparc-branch-base, release-20b-pre1, release-20b-pre2, snapshot-2010-08, snapshot-2010-11, snapshot-2010-12
Branch point for: RELEASE-20B-BRANCH, cross-sol-x86-branch, cross-sparc-branch
Changes since 1.33: +10 -1 lines
Diff to previous 1.33
Merge changes from sparc-tramp-assem-2010-07-19.  This moves
closure_tramp and undefined_tramp from the C side to the Lisp side via
Lisp assembly routines.  (Simplifies things quite a bit for sparc.)

Also includes some GC fixes for sparc and ppc to handle moving the pc,
npc, lr, and ctr registers.  They need to be handled like the lip
register.

See bootfiles/20a/boot-2010-07-1-cross.lisp for instructions on how to
bootstrap this change.  A basic cross-compile with a specific cross
bootstrap file is needed.

Revision 1.33.2.1 - (view) (annotate) - [select for diffs]
Sun Jul 18 20:29:21 2010 UTC (3 years, 9 months ago) by rtoy
Branch: sparc-tramp-assem-branch
CVS Tags: sparc-tramp-assem-2010-07-19
Changes since 1.33: +10 -1 lines
Diff to previous 1.33 , to next main 1.35
lisp/x86-assem.S:
o Comment out closure_tramp and undefined_tramp.

lisp/gencgc.c:
o Update code since closure_tramp and undefined_tramp no longer exist
  as C functions.

Revision 1.33 - (view) (annotate) - [select for diffs]
Thu Apr 1 14:05:45 2010 UTC (4 years ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2010-04, snapshot-2010-05, snapshot-2010-06, snapshot-2010-07, sparc-tramp-assem-base
Branch point for: sparc-tramp-assem-branch
Changes since 1.32: +43 -3 lines
Diff to previous 1.32
Fix SSE2 bug when running

(defun testfn ()
  (let* ((i-gc-ed-u nil)
         (ext:*gc-notify-before* (lambda (a) (/ a 0.34d0))))
    (dotimes (i 100000)
      (setf i-gc-ed-u nil)
      (let* ((v1 (list (* 1d0 (random 10)) (* 1d0 (random 10))))
             (v2 (list (* 1d0 (random 10)) (* 1d0 (random 10))))
             (dot1 (reduce #'+ (mapcar #'* v1 v2)))
             (dot2 (reduce #'+ (mapcar #'* v1 v2))))
        (when (/= dot1 dot2)
          (print `(gc ,i-gc-ed-u v1 ,v1 v2 ,v2 dot1 ,dot1 dot2 ,dot2)))))))

Running this with sse2 would cuase dot1 and dot2 to sometimes be
different.  We forgot to save the SSE2 state in call_into_lisp.

(This bug was mentioned on comp.lang.lisp, http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/828371aa4800272c?hl=en#

x86-assem.S:
o Save and restore SSE2 state when running with SSE2 core.  (This
  might need more tweaking.  Should we use cpuid instead of looking at
  fpu_mode?)

gencgc.c:
o Save the SSE2 state, along with X87 state for SSE2 cores.

Revision 1.29.4.2 - (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.29.4.1: +5 -2 lines
Diff to previous 1.29.4.1 , to branch point 1.29 , to next main 1.35
Sync to utf16 branch, tag unicode-utf16-sync-label-2009-03-16.

Revision 1.29.2.2 - (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.29.2.1: +5 -2 lines
Diff to previous 1.29.2.1 , to branch point 1.29 , to next main 1.35
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.32 - (view) (annotate) - [select for diffs]
Wed Dec 24 04:36:40 2008 UTC (5 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_19f, RELEASE_20a, amd64-dd-start, 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, 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, post-merge-intl-branch, pre-merge-intl-branch, 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, snapshot-2009-11, snapshot-2009-12, snapshot-2010-01, snapshot-2010-02, snapshot-2010-03, unicode-string-buffer-base, unicode-string-buffer-impl-base
Branch point for: RELEASE-19F-BRANCH, RELEASE-20A-BRANCH, amd64-dd-branch, intl-2-branch, intl-branch, portable-clx-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch
Changes since 1.31: +6 -16 lines
Diff to previous 1.31
Use a two-byte jmp instruction in function_end_breakpoint_guts.  This
works on Darwin and Linux.  No more hard-coded jmp instruction on
Darwin!

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

Revision 1.29.2.1 - (view) (annotate) - [select for diffs]
Thu Dec 18 21:50:19 2008 UTC (5 years, 4 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-sync-2008-12
Changes since 1.29: +3 -4 lines
Diff to previous 1.29
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.31 - (view) (annotate) - [select for diffs]
Wed Dec 17 12:42:30 2008 UTC (5 years, 4 months ago) by rtoy
Branch: MAIN
Changes since 1.30: +14 -1 lines
Diff to previous 1.30
Fix tracing on Darwin.  The jmp instruction at the beginning of
function_end_breakpoint_guts needs to be two bytes long but the
assembler was using a five byte version.

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

Revision 1.29.6.5.2.1 - (view) (annotate) - [select for diffs]
Mon Oct 20 18:09:50 2008 UTC (5 years, 5 months ago) by rtoy
Branch: sse2-packed-branch
CVS Tags: sse2-merge-with-2008-11, sse2-packed-2008-11-12
Changes since 1.29.6.5: +5 -25 lines
Diff to previous 1.29.6.5
Revert change merged from sse2-branch.  We want the assembly
code and call-out vop to be ignorant of whether we're have sse2 or
not.  Always do the x87 fstp/fldz stuff.

compiler/x86/sse2-c-call.lisp:
o Revert to vers 1.1.2.4, reinstating the fstp/fldz stuff in the
  callout vop.

lisp/lisp.c:
o Remove use of use_sse2.
o Use fpu_mode_t for checking the fpu type.

x86-assem.S:
o Revert to ver 1.29.6.4:
  - Remove use of use_sse2.
  - Always do x87 fstp/fldz stuff whether we're using an sse2 or x87
    core.

Revision 1.29.6.5 - (view) (annotate) - [select for diffs]
Sat Oct 4 14:27:51 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
CVS Tags: sse2-merge-with-2008-10, sse2-packed-base
Branch point for: sse2-packed-branch
Changes since 1.29.6.4: +25 -5 lines
Diff to previous 1.29.6.4 , to branch point 1.29 , to next main 1.35
Remove uses of x87 stuff when using sse2.  Update core file format to
tell us if the core is for x87 or sse2.

compiler/x86/sse2-c-call.lisp:
o Remove all of the fp-pop, fldz stuff from the inline foreign call.
o If there's a floating-point result, save the result and pop the FPU
  stack.

lisp/x86-assem.S:
o Add global variable use_sse2.  Non-zero means we are using SSE2 and
  should not do any x87 stuff in call_into_c and call_into_lisp.  We
  just branch around that code.  (Should we do this in a different way
  and have separate versions for x87 and sse2?)

lisp/save.c:
o After the core version, output a word indicating the type of FPU.
  Default is 0.  A value of 1 indicates we have SSE2.

lisp/coreparse.c:
o Read the fpu type word and return it.
o load_core_file has extra parameter to return the fpu type.

lisp/core.h:
o Update declaration of load_core_file

lisp/lisp.c:
o Update calls to new load_core_file.
o Add check to print a message before exiting in the case that the
  core uses SSE2 and but the chip doesn't support SSE2.
o Set use_sse2 flag appropriately.

Revision 1.29.6.4 - (view) (annotate) - [select for diffs]
Sun Sep 28 12:44:22 2008 UTC (5 years, 6 months ago) by rtoy
Branch: sse2-branch
CVS Tags: sse2-checkpoint-2008-10-01
Changes since 1.29.6.3: +1 -17 lines
Diff to previous 1.29.6.3 , to branch point 1.29
Use Carl's idea of doing the SSE2 stuff in c-call instead of in
call_into_c.  This makes x86-assem.S not depend on sse2 in any way.

compiler/x86/sse2-c-call.lisp:
o When calling call_into_c directly, move the float result to xmm0.
o Remove sse2 conditionalization since this file is for sse2

lisp/x86-arch.c:
o have_sse2 has been removed

lisp/x86-assem.S:
o Remove have_sse2
o Don't move float result into xmm0.  Let the lisp code deal with it.

Revision 1.29.6.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.29.6.2: +6 -10 lines
Diff to previous 1.29.6.2 , to branch point 1.29
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.29.6.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.29.6.1: +18 -5 lines
Diff to previous 1.29.6.1 , to branch point 1.29
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.29.6.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.29: +8 -2 lines
Diff to previous 1.29
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.29 - (view) (annotate) - [select for diffs]
Tue Mar 18 04:08:49 2008 UTC (6 years, 1 month ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2008-04, snapshot-2008-05, snapshot-2008-06, snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, snapshot-2008-10, snapshot-2008-11, sse2-base, unicode-utf16-base, unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-string-support, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09, unicode-utf16-sync-2008-11
Branch point for: sse2-branch, unicode-utf16-branch, unicode-utf16-extfmt-branch
Changes since 1.28: +2 -2 lines
Diff to previous 1.28
The toolchain shipping with Fedora Core 9 wants us to name a 16-bit
register as an argument to FNSTSW.  Make it so.

Revision 1.28 - (view) (annotate) - [select for diffs]
Fri Jul 6 08:04:39 2007 UTC (6 years, 9 months ago) by cshapiro
Branch: MAIN
CVS Tags: pre-telent-clx, release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, snapshot-2007-08, snapshot-2007-09, snapshot-2007-10, snapshot-2007-11, snapshot-2007-12, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03
Branch point for: release-19e-branch
Changes since 1.27: +33 -32 lines
Diff to previous 1.27
Import x86 Darwin port.

Revision 1.27 - (view) (annotate) - [select for diffs]
Wed Jun 27 10:25:02 2007 UTC (6 years, 9 months ago) by cshapiro
Branch: MAIN
CVS Tags: snapshot-2007-07
Changes since 1.26: +89 -212 lines
Diff to previous 1.26
Replace assembler pseudo-op boilerplate for function definitions with
pre-processor macros.  Also, use the more compatible .globl rather than
.global and enliminate the unused eight byte alignment macro.

Revision 1.26 - (view) (annotate) - [select for diffs]
Tue Jun 12 02:58:27 2007 UTC (6 years, 10 months ago) by cshapiro
Branch: MAIN
Changes since 1.25: +3 -7 lines
Diff to previous 1.25
Remove preprocessor conditionals supporting very old releases of
FreeBSD.

Revision 1.25 - (view) (annotate) - [select for diffs]
Sun Feb 6 06:11:07 2005 UTC (9 years, 2 months ago) by cshapiro
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, ppc_gencgc_snap_2005-05-14, ppc_gencgc_snap_2005-12-17, ppc_gencgc_snap_2006-01-06, release-19b-base, release-19b-pre1, release-19b-pre2, release-19c, release-19c-base, release-19c-pre1, release-19d, release-19d-base, release-19d-pre1, release-19d-pre2, snapshot-2005-03, snapshot-2005-04, snapshot-2005-05, snapshot-2005-06, snapshot-2005-07, snapshot-2005-08, snapshot-2005-09, snapshot-2005-10, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01, snapshot-2006-02, snapshot-2006-03, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06, snapshot-2006-07, snapshot-2006-08, snapshot-2006-09, snapshot-2006-10, snapshot-2006-11, snapshot-2006-12, snapshot-2007-01, snapshot-2007-02, snapshot-2007-03, snapshot-2007-04, snapshot-2007-05, snapshot-2007-06
Branch point for: double-double-array-branch, double-double-branch, double-double-reader-branch, ppc_gencgc_branch, release-19b-branch, release-19c-branch, release-19d-branch
Changes since 1.24: +1 -23 lines
Diff to previous 1.24
Retire i586_bzero() in favor of memset().  The i586_bzero() routine is
demonstrably slower than extant compiler intrinsics or C runtime
memset() implementations for blocks of memory greater than or equal to
an x86 VM page.

Revision 1.24 - (view) (annotate) - [select for diffs]
Fri Oct 24 04:29:14 2003 UTC (10 years, 5 months ago) by toy
Branch: MAIN
CVS Tags: amd64-merge-start, mod-arith-base, prm-before-macosx-merge-tag, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, snapshot-2003-11, snapshot-2003-12, snapshot-2004-04, snapshot-2004-05, snapshot-2004-06, snapshot-2004-07, snapshot-2004-08, snapshot-2004-09, snapshot-2004-10, snapshot-2004-11, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02
Branch point for: mod-arith-branch, release-19a-branch
Changes since 1.23: +24 -1 lines
Diff to previous 1.23
Add support for x86 heap-overflow checking.

	* x86-assem.S (multiple_value_return): Add new functions to handle
	heap overflow warnings and errors.

	* x86-arch.c (sigtrap_handler): Add cases for the two new heap
	overflow traps.

	* interrupt.c (interrupt_handle_space_overflow): Add support for
	x86.

	* parms.lisp (static-symbols): Add new static symbols for heap
	overflow checking.  Add new trap types for heap overflow
	checking.

Revision 1.23 - (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, dynamic-extent-base, lisp-executable-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2, remove_negative_zero_not_zero, snapshot-2003-10, sparc_gencgc, sparc_gencgc_merge
Branch point for: UNICODE-BRANCH, cold-pcl, dynamic-extent, lisp-executable, release-18e-branch, sparc_gencgc_branch
Changes since 1.22: +14 -21 lines
Diff to previous 1.22
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.22 - (view) (annotate) - [select for diffs]
Tue Aug 27 22:18:34 2002 UTC (11 years, 7 months ago) by moore
Branch: MAIN
CVS Tags: LINKAGE_TABLE
Changes since 1.21: +84 -7 lines
Diff to previous 1.21
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.21 - (view) (annotate) - [select for diffs]
Fri Aug 23 17:01:02 2002 UTC (11 years, 7 months ago) by pmai
Branch: MAIN
CVS Tags: PRE_LINKAGE_TABLE
Changes since 1.20: +6 -7 lines
Diff to previous 1.20
Added export of internal error code constants to internals.h, so that
platform assembler code can use those, instead of magic numbers and
bogus conditionalization on type_Long_Float.  Inspired/Stolen from
SBCL.  Also added some more comments in places, and a generic
SC_OFFSET macro that matches lisp/debug-info.lisp.

Revision 1.3.2.4 - (view) (annotate) - [select for diffs]
Sat Mar 23 18:51:10 2002 UTC (12 years ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18d
Changes since 1.3.2.3: +9 -7 lines
Diff to previous 1.3.2.3 , to branch point 1.3 , to next main 1.35
Mega commit to bring RELENG_18 branch in sync with HEAD in preparation
for release tagging 18d.

Revision 1.20 - (view) (annotate) - [select for diffs]
Mon Jan 28 20:17:12 2002 UTC (12 years, 2 months ago) by pmai
Branch: MAIN
Changes since 1.19: +2 -2 lines
Diff to previous 1.19
Added specialised port to NetBSD (1.5.2) on x86.  Since the code-base
was already cleaned up with the OpenBSD port, this doesn't require
massive changes.

Since current NetBSD is ELF-based by default, we don't make use of the
ELF feature, or in other words:  The presence of the NetBSD feature
implies ELF, since there is no support for non-ELF NetBSD.

Revision 1.19 - (view) (annotate) - [select for diffs]
Tue Sep 5 08:51:52 2000 UTC (13 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.18: +8 -6 lines
Diff to previous 1.18
Minor source cleanups.

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

Revision 1.18 - (view) (annotate) - [select for diffs]
Sat May 6 16:55:53 2000 UTC (13 years, 11 months ago) by dtc
Branch: MAIN
Changes since 1.17: +5 -1 lines
Diff to previous 1.17
Set the precision to 53 bits for a double-float build, rather than 64
bits as used by the long-float build. This corrects the handling of
double-float-epsilon for the double-float build, and should also
improve performance on some processors such as the AMD Athlon.

Revision 1.17 - (view) (annotate) - [select for diffs]
Wed Oct 6 14:32:36 1999 UTC (14 years, 6 months ago) by dtc
Branch: MAIN
Changes since 1.16: +2 -2 lines
Diff to previous 1.16
Modify the assembler syntax for the closure_tramp indirect jump to
'jmp *offset(%eax)' rather than 'jmp offset(%eax)'. Peter Van Eynde
reports that the older syntax is incorrectly assembled on recent linux
systems. The new syntax does work on recent FreeBSD systems.

Revision 1.16 - (view) (annotate) - [select for diffs]
Sat Sep 11 13:27:26 1999 UTC (14 years, 7 months ago) by pw
Branch: MAIN
Changes since 1.15: +3 -3 lines
Diff to previous 1.15
Fix alignment method for FreeBSD V3 (ELF) to use units of bytes
(like Linux) rather than bits.

Revision 1.15 - (view) (annotate) - [select for diffs]
Thu Sep 9 16:26:34 1999 UTC (14 years, 7 months ago) by pw
Branch: MAIN
Changes since 1.14: +6 -2 lines
Diff to previous 1.14
Remove prepending "_" to global names on FreeBSD V3+ systems. Note
that this may need to be undone if someone wants to build
with the aout compatibility package. From Martin Cracauer.

Revision 1.3.2.2 - (view) (annotate) - [select for diffs]
Tue Jun 23 11:25:10 1998 UTC (15 years, 9 months ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18b
Changes since 1.3.2.1: +542 -124 lines
Diff to previous 1.3.2.1 , to branch point 1.3
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.14 - (view) (annotate) - [select for diffs]
Fri Jun 19 14:26:13 1998 UTC (15 years, 10 months ago) by dtc
Branch: MAIN
Changes since 1.13: +3 -14 lines
Diff to previous 1.13
Further cleanup of the remnants of the x86-lra feature.

Revision 1.13 - (view) (annotate) - [select for diffs]
Sat Mar 21 08:15:03 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.12: +13 -2 lines
Diff to previous 1.12
Long-float support.

Revision 1.12 - (view) (annotate) - [select for diffs]
Sat Feb 21 16:52:20 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.11: +3 -3 lines
Diff to previous 1.11
Wrap the necessary GNAME around fpu_restore, noted by Ray.

Revision 1.11 - (view) (annotate) - [select for diffs]
Thu Feb 19 15:19:10 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.10: +21 -1 lines
Diff to previous 1.10
Save and reset the NPX state when a primitive halt is signalled so the
monitor can use the NPX (for printing float objects), and restore the
state when returning. This may be unnecessary on Linux?

Revision 1.10 - (view) (annotate) - [select for diffs]
Mon Jan 19 09:01:59 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.9: +10 -13 lines
Diff to previous 1.9
Fix the single value return from the function end breakpoint which had
been returning two values.

Revision 1.9 - (view) (annotate) - [select for diffs]
Sat Nov 29 19:52:32 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.8: +3 -4 lines
Diff to previous 1.8
Fix the .end statements.

Revision 1.8 - (view) (annotate) - [select for diffs]
Fri Nov 28 14:58:23 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.7: +4 -82 lines
Diff to previous 1.7
Remove the prep_mind_warp and do_purify code which hasn't been needed
since purify was patched some time ago.

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

Revision 1.6 - (view) (annotate) - [select for diffs]
Tue Nov 25 15:53:32 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.5: +38 -27 lines
Diff to previous 1.5
Breakpoint and single stepping support for the x86 port. This has been
tested in the experimental code and works on both FreeBSD and Linux.
Plus a few improvements to the interrupt safety for the x86 port.

Revision 1.5 - (view) (annotate) - [select for diffs]
Tue Nov 4 09:11:23 1997 UTC (16 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.4: +313 -3 lines
Diff to previous 1.4
Merge in changes to the x86 backend from the gencgc branch, allowing
common binaries to be run on both:

* The immediate-stack storage class has been removed, this is
unnecessary as the descriptor-stack SC can be used. It may have once
been part of some GC stragety to reduce the number of stack slots that
needed to be noted for a GC.

* The object allocation has been abstracted and cleaned up. This
should produce slightly faster smaller code with CGC, and can be
compiled to support inline allocation with GENCGC.  CGC compiled code
will run under GENCGC, and GENCGC binaries that don't use inline
allocation will run under CGC.

* A random hash is now placed in the unused symbol object slot (the
symbol-hash slot). This saves flushing the info cache at each GC, and
may have other uses for symbol based hash tables. Should help MP
safety.

* Common set of static symbols used by both CGC and GENCGC.

* Corrections to the stack-ref VOP; now returns lisp objects not
unsigned numbers. Required some patches to debug-int.

* Inline unsigned/signed byte 32 to bignum allocation enabled.

* Support for the x86 xadd instruction applied to instance slot and
symbol values - may be handy for some MP code.

* Bump up the FASL file version from 1 to 2.

Revision 1.3.2.1 - (view) (annotate) - [select for diffs]
Sun Sep 7 23:30:53 1997 UTC (16 years, 7 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18a
Changes since 1.3: +9 -6 lines
Diff to previous 1.3
Change the approach used for setting up the NPX state for C. Pop
registers off the stack to empty it rather than re-initialising the
whole NPX state. This has the advantage that the flagged exceptions
are preserved (they were just being flushed), and it also a little
quicker.

Revision 1.4 - (view) (annotate) - [select for diffs]
Sun Sep 7 23:27:48 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.3: +9 -6 lines
Diff to previous 1.3
Change the approach used for setting up the NPX state for C. Pop
registers off the stack to empty it rather than re-initialising the
whole NPX state. This has the advantage that the flagged exceptions
are preserved (they were just being flushed), and it also a little
quicker.

Revision 1.3 - (view) (annotate) - [select for diffs]
Sat Feb 22 19:19:47 1997 UTC (17 years, 1 month ago) by dtc
Branch: MAIN
Branch point for: RELENG_18
Changes since 1.2: +22 -30 lines
Diff to previous 1.2
Use a separate stack for alien value allocation on the x86. It had
been sharing the control stack with the compiler which could cause
trouble (pushes and pops out of order, holes in arguments built up on
the stack, exposed stack that can be written over on interrupt, etc)

Assigned a static symbol, x86::*alien-stack*, and by default set it to
the old C stack. A program many rebind this if it needs more room or
wants the allocation elsewhere.

The *alien-stack* is saved with the dynamic environment so is restored
with a non-local exist. It's not save on function entry/exit so you
need to take care to match an allocation with a deallocation.

Makes use of new VOPs which are already in place.

Backout an old alien stack deallocation hack.

Revision 1.2 - (view) (annotate) - [select for diffs]
Tue Feb 18 05:01:11 1997 UTC (17 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.1: +6 -13 lines
Diff to previous 1.1
Fix alignment for linux; it needs to be in bytes.

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Jan 21 00:28:13 1997 UTC (17 years, 3 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