Skip to content
  1. Apr 05, 2014
    • Raymond Toy's avatar
      Simplify call-out for sse2. · 29359293
      Raymond Toy authored
      For sse2, we don't need to do the fldz/fstp dance when doing a
      foreign function call.
      
      A cross-compile is needed!
      
       * src/bootfiles/20e/boot-2014-04-cross-x86.lisp:
         * Cross-compile script to enable these changes.
       * src/compiler/x86/c-call.lisp:
         * Make the float result tn be xmm registers, not x87 fpu registers.
       * src/compiler/x86/sse2-c-call.lisp:
         * Simplify call-out not to use fldz/fstp except for the minimum
           required for the 32-bit ABI.
       * src/lisp/x86-assem.S
         * Comment out the fstp/fldz insts that aren't needed for SSE2.
      29359293
  2. Jul 18, 2012
  3. Jul 17, 2012
    • Raymond Toy's avatar
      Clean up not-inline-allocation. · 99020b36
      Raymond Toy authored
      src/lisp/x86-assem.S:
      o Remove the (now) unused alloc_to_<reg> functions.
      
      src/compiler/x86/macros.lisp:
      o Simplify the not-inline-allocation to use the same routines as
        inline allocation.
      99020b36
  4. Jul 13, 2012
  5. Jul 12, 2012
    • Raymond Toy's avatar
      Clean up alloc overflow routine. Cross-compile needed. · 2e95a0bb
      Raymond Toy authored
      src/bootfiles/20c/boot-2012-07-1-x86-cross.lisp:
      o X86 cross-compile script
      
      src/compiler/x86/macros.lisp:
      o New inline-allocation to call our new overflow routine.
      
      src/lisp/x86-assem.S:
      o New alloc_overflow routine.
      
      src/tools/cross-scripts/cross-x86-x86.lisp:
      o Export all symbols in VM that are external symbols in OLD-VM with
        the corresponding symbol name.
      2e95a0bb
  6. Jan 08, 2012
  7. Jan 06, 2012
  8. Dec 22, 2011
    • Raymond Toy's avatar
      Make stack 16-byte aligned. · 43c8a820
      Raymond Toy authored
      lisp/x86-assem.S:
      o Make sure the stack is 16-byte aligned in the alloc_overflow_foo and
        alloc_to_foo routines.  These eventually call into C code, and the
        stack is required to be 16-byte aligned on Darwin.  We apply this to
        all x86 implementations since it's harmless.
      o Did not update the alloc_8/16_to_foo routines because they are going
        to be deleted.
      
      x86/macros.lisp:
      o Don't call the alloc_8/16_to_foo routines when we're not doing
        inline allocation.  I don't think there's much to be gained with
        these special functions and maintainence is a pain with assembly
        code.
      43c8a820
  9. Nov 04, 2011
  10. Sep 24, 2011
    • Raymond Toy's avatar
      Fix Trac ticket:46. · 44a8f0c7
      Raymond Toy authored
      Make the size of all spaces configurable from the command line.
      
      code/commandline.lisp:
      o Define the switches so lisp doesn't complain.
      
      general-info/lisp.1:
      o Document new switches.
      
      general-info/release-20c.txt:
      o Update
      
      lisp/Darwin-os.c
      lisp/FreeBSD-os.c
      lisp/Linux-os.c
      lisp/NetBSD-os.c
      lisp/backtrace.c
      lisp/cgc.c
      lisp/gencgc.c
      lisp/os-common.c
      lisp/ppc-validate.h
      lisp/purify.c
      lisp/solaris-os.c
      lisp/sparc-arch.c
      lisp/sparc-validate.h
      lisp/x86-validate.h:
      lisp/validate.c
      o Basically rename CONTROL_STACK_SIZE, BINDING_STACK_SIZE,
        READ_ONLY_SPACE_SIZE, and STATIC_SPACE_SIZE to control_stack_size,
        binding_stack_size, read_only_space_size, and static_space_size,
        respectively.
      
      lisp/coreparse.c
      o Check the space size in the core file against the allocated size.
        If the allocated space is too small, print an error message and
        exit.
      
      lisp/globals.c
      o Define new variables for the allocated size of spaces.
      
      lisp/globals.h
      o Declare the new variables for the size of the spaces.
      
      lisp/lisp.c
      o Set the default values of the spaces.
      o Parse the new command-line flags and set the space sizes.
      
      lisp/sunos-os.c:
      o Added os_init0 (that we forgot last time).
      
      lisp/x86-assem.S:
      o Change $CONTROL_STACK_END to GNAME(control_stack_end) to get the
        correct end of the stack.
      44a8f0c7
  11. Dec 22, 2010
  12. Jul 19, 2010
    • rtoy's avatar
      Merge changes from sparc-tramp-assem-2010-07-19. This moves · 30102669
      rtoy authored
      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.
      30102669
  13. Apr 01, 2010
    • rtoy's avatar
      Fix SSE2 bug when running · 5efbe364
      rtoy authored
      (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.
      5efbe364
  14. Dec 24, 2008
  15. Dec 17, 2008
  16. Nov 12, 2008
  17. Mar 18, 2008
  18. Jul 06, 2007
  19. Jun 27, 2007
  20. Jun 12, 2007
  21. Feb 06, 2005
  22. Oct 24, 2003
    • toy's avatar
      Add support for x86 heap-overflow checking. · 10d10ac0
      toy authored
      	* 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.
      10d10ac0
  23. Aug 28, 2002
    • pmai's avatar
      A number of smallish changes to the new linkage-table code: · cf055d22
      pmai authored
      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.
      cf055d22
  24. Aug 27, 2002
    • moore's avatar
      · bf84be07
      moore authored
      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.
      bf84be07
  25. Aug 23, 2002
  26. Jan 28, 2002
    • pmai's avatar
      Added specialised port to NetBSD (1.5.2) on x86. Since the code-base · 4ea11535
      pmai authored
      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.
      4ea11535
  27. Sep 05, 2000
  28. May 06, 2000
  29. Oct 06, 1999
  30. Sep 11, 1999
  31. Sep 09, 1999
  32. Jun 19, 1998
  33. Mar 21, 1998
  34. Feb 21, 1998
  35. Feb 19, 1998
  36. Jan 19, 1998
  37. Nov 29, 1997
  38. Nov 28, 1997
  39. Nov 25, 1997