Skip to content
Snippets Groups Projects
  1. Jul 06, 2007
  2. Jan 01, 2007
  3. Nov 08, 2006
  4. Nov 07, 2006
  5. Sep 15, 2005
  6. Oct 15, 2004
    • cwang's avatar
      typo · d89e9cd4
      cwang authored
      d89e9cd4
  7. Aug 02, 2004
  8. Jul 13, 2004
    • pmai's avatar
      First merge of the C side of the OS X/Darwin port. Besides adding Darwin · eb44537a
      pmai authored
      versions of all the required things, this commit separates the
      interrupt handler proper (now interrupt_handle_now_handler) from the
      actual work-horse (interrupt_handle_now), which is now only ever called
      from the two interrupt handlers, interrupt_handle_now_handler and
      maybe_now_maybe_later.  This follows similar changes in SBCL, and is in
      fact needed in order to properly use sigreturn in signal handlers, as
      required to work around a problem with the G5.
      eb44537a
  9. Jul 08, 2004
    • rtoy's avatar
      Fix more compiler warnings: · fcb4d9e1
      rtoy authored
      * interrupt.c: oldcont isn't used.
      
      * interrupt.c, monitor.c, validate.c:  Initialize some variables that
        the compiler thinks might be used without initialization.
      fcb4d9e1
  10. Jul 07, 2004
  11. Jun 18, 2004
  12. May 20, 2004
  13. May 19, 2004
  14. May 04, 2004
  15. Nov 01, 2003
  16. 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
    • toy's avatar
      Add support for catching heap overflows, similar to the control stack · 3e309c44
      toy authored
      overflow checking.  Enable with :heap-overflow-check.  We reserve some
      number of pages on the heap.  When the heap reaches the reserved
      pages, an overflow warning is signalled.  The reserved pages are set
      0.  This allows some additional allocation to happen during debugging,
      if necessary.  If another overflow happens, we throw to top-level.
      
      Sparc only right now.
      
      	* lisp/sparc-assem.S (_do_dynamic_space_overflow_error): New
      	function to handle a heap overflow error.
      	(_do_dynamic_space_overflow_warning): New function to handle heap
      	overflow warning.
      
      	* lisp/sparc-arch.c (sigill_handler): Handle the two new traps
      	caused by heap overflows.
      
      	* lisp/interrupt.c (interrupt_handle_space_overflow): New function
      	to handle interrupt caused by heap space overflows.
      
      	* lisp/gencgc.c (handle_heap_overflow): New function to handle
      	heap overflows.
      	(gc_alloc_new_region): Use handle_heap_overflow.
      	(gc_alloc_large): Use handle_heap_overflow
      
      	* compiler/sparc/parms.lisp (static-symbols): Add new static
      	symbols for heap overflow checking:
      	dynamic-space-overflow-error-hit and
      	dynamic-space-overflow-warning-hit.
      
      	* compiler/generic/new-genesis.lisp (finish-symbols): Initialize
      	the new dynamic-space-overflow-error-hit and
      	dynamic-space-overflow-warning-hit static symbols.
      
      	* code/lispinit.lisp (:heap-overflow-check): Add
      	heap-overflow-check to *runtime-features*, if necessary.
      	("reserved_heap_pages"): Access to alien variable for heap
      	overflow.
      	(*reserved-heap-pages*): Default number of heap pages to reserve
      	for heap overflow.
      	(%top-level): Set reserved-heap-pages to the default.
      
      	* code/interr.lisp (dynamic-space-overflow-warning-hit): Add
      	function to handle heap overflow warnings.
      	(dynamic-space-overflow-error-hit): Add function to handle heap
      	overflow error.
      
      	* code/error.lisp (heap-overflow): Add new condition type for heap
      	overflow
      3e309c44
  17. Jul 19, 2003
    • emarsden's avatar
      · 34b793ce
      emarsden authored
        - fix a signed/unsigned cast bug that was prevented the
          auto-gc-trigger from functioning correctly when using certain
          dynamic-space sizes (for platforms that don't have an internal gc
          trigger).
      
        - added a few #include files to avoid compiler warnings
      
        - changed some #ifdef semantics: DEBUG activates additional
          assertions, and PRINTNOISE activates debugging statements.
      34b793ce
  18. May 30, 2003
    • toy's avatar
      o Oops. It's i386, not x86. · f101ba1a
      toy authored
      o Remove the code in fake_foreign_function_call that was moved to
        build_fake_control_stack_frame
      f101ba1a
  19. May 29, 2003
    • toy's avatar
      Add control-stack checking for Sparc. Based on work from SBCL. · 72f0aa1e
      toy authored
      	* lisp/sunos-os.h (PROTECTION_VIOLATION_SIGNAL): Define it for
      	stack-checking.
      
      	* lisp/solaris-os.c (segv_handler): Add stack-checking support for
      	Solaris.
      
      	* lisp/os.h (os_control_stack_overflow): Give a type name to the
      	zone enums (mostly for the debugger).
      
      	* lisp/os-common.c (guard_zones): Add stack-checking support for
      	Solaris.
      	(os_control_stack_overflow): Add stack-checking support for
      	Solaris.
      
      	* lisp/interrupt.c (build_fake_control_stack_frame): New function
      	for building a stack frame without the foreign call stuff.  Used
      	for stack checking.
      	(interrupt_install_low_level_handler): Only need to install
      	alternate signal stack for x86.
      
      	* lispinit.lisp:
      	(scrub-control-stack): Rename to %scrub-control-stack to match x86
      	version so control stack guard is done.
      
      	* parms.lisp (static-symbols): Added new static symbols for
      	control stack checking.
      72f0aa1e
  20. Mar 23, 2003
    • gerd's avatar
      Optional control stack checking. This is controlled by the · 670d643f
      gerd authored
      	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.
      670d643f
  21. Dec 06, 2001
    • pmai's avatar
      Added specialised port to OpenBSD (2.9). Many parts of the original · 195461c1
      pmai authored
      code which were previously conditionalized on :FreeBSD, are now
      conditionalized on :BSD instead, with the :BSD feature now implying a
      4.4BSD(lite2) derived OS.  This should make future BSD-ports easier.
      FreeBSD and OpenBSD are differentiated by having either :FreeBSD or
      :OpenBSD on the features list.
      
      Currently the OpenBSD port does not have working ELF support, because
      OpenBSD 2.9 is still non-ELF by default.  So don't put ELF on the
      features list when building for OpenBSD, or fix the code to work
      correctly in this case instead.
      195461c1
  22. Oct 24, 2000
    • dtc's avatar
      o Add the command line switch -dynamic-space-size for setting the size · a7070998
      dtc authored
        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.
      a7070998
  23. Oct 21, 2000
  24. Apr 12, 2000
  25. Nov 11, 1999
  26. Sep 16, 1999
  27. Feb 22, 1999
  28. Feb 20, 1999
    • pw's avatar
      Remove a cast that was inserted for Alpha/Linux but generated a compiler · 6dbd1a2f
      pw authored
      error on FreeBSD/x86. More investigation needed on Alpha/Linux side.
      6dbd1a2f
    • pw's avatar
      Changes for Linux running on Alpha. · 25b808fb
      pw authored
      From: Julian Dolby <dolby@csag-226-8.UCSD.EDU>
      
        Enclosed below are diffs against the cvs repository as of Feb 12;
      aside from minor changes like using different include files
      (e.g. validate.h instead of x86-validate.h in Linux-os.c) and adding
      alpha-linux specifics unix-glibc2.lisp, there are two code changes.
      
       The first is to signal handling. I had to put the POSIX-SIGS
      ifdefs into places used by alpha but not by x86, and I ifdef'ed out
      most of the linux #define kludges for signals for alpha linux, since
      alpha linux uses OSF/1 signals rather than linux ones.
      
       The second is that the trick of or'ing 2 into the reg_ALLOC address
      to cause faults does not work on alpha linux since the kernel traps
      and handles the unaligned access; I did not find a way to change that
      kernel behavior, so I changed the code to or (1<<63) into the address
      to cause a seg fault, and then check, in the seg fault handler, to see
      if the high-order address bits are set.
      
       One change I made is to the memory layout (lisp/alpha-validate.h and
      compiler/alpha/parms.lisp); that change is not needed to make lisp run
      on alpha linux, but is there because I wanted more heap space.
      25b808fb
  29. Feb 02, 1999
  30. May 01, 1998
  31. Jan 05, 1998
  32. Nov 25, 1997
    • dtc's avatar
      Ignore the foreign_function_call_active flag on the x86 port. It was · c308db4d
      dtc authored
      of no utility and wasn't even being maintained thoroughly. Can now use
      pseudo atomic in C code. All interrupt contexts are saved, even those
      that occur when running foreign C code; this may be necessary for
      reliable stack parsing on some operating systems, e.g. Linux.
      
      When the pending interrupt from a GC trigger is processed by
      interrupt_handle_pending, any other accumulated pending interrupt is
      also processed even if *interrupts-enabled* is false, breaking the
      behaviour of the *interrupts-enabled* flag.  The best way around this
      for the x86 port is to call maybe-gc directly from the allocation
      routines; remove the recently introduced function set_maybe_gc_pending
      which also had other problems. Note this problem will likely occur on
      the other ports.
      c308db4d
  33. Nov 22, 1997
    • dtc's avatar
      Have interrupt_handle_pending reset the signal context sigmask before · 7de331b5
      dtc authored
      calling interrupt_handle_now, else when interrupt_handle_now resets
      signal mask to that in the signal context it will be masking the
      interrupts where the intention is to re-enable them. This caused the
      multi-processing to get stuck working on a particular process with the
      signals masked.  Change may have another benefit: the pending_mask is
      no longer needed so there is no danger from recursive pending
      interrupts.
      7de331b5
  34. Nov 21, 1997
    • dtc's avatar
      Delay the re-enabling of interrupts in interrupt_internal_error and · f851310c
      dtc authored
      interrupt_handle_now until after the context SAP object is allocated
      so that this allocation is not interrupted.
      
      May still be some lossage on the non-x86 ports as the GC will not see
      the object on the C stack until it is moved onto the control stack by
      the call into lisp.
      f851310c
  35. Nov 19, 1997
  36. Mar 16, 1997
  37. Feb 18, 1997
Loading