Skip to content
Snippets Groups Projects
  1. Jan 18, 2008
    • rtoy's avatar
      o Add a new section for double-double-float numbers. · 2b9b7926
      rtoy authored
      o Remove the part about precision control since this no longer
        exists.
      2b9b7926
    • rtoy's avatar
      Update from logs. · fcc43b12
      rtoy authored
      fcc43b12
    • rtoy's avatar
      code/bit-bash.lisp: · 6fea08db
      rtoy authored
      o Change MAX-BITS to #xffffffff.  This fixes (works around) the issue
        reported by Walter Pelissero, reported on cmucl-help, 2008-01-09.
        We will still have problems for sufficiently long strings.
      
      boot-2007-12-1.lisp:
      o Boot file to use for the above change.
      6fea08db
    • rtoy's avatar
      Move the rules for e_rem_pio2.c and k_rem_pio2.c from GNUmakefile to · c7582f44
      rtoy authored
      Config.linux_gencgc.
      
      This only appears to be an issue on Linux.  FreeBSD and Darwin are
      ok.  And it depends on the compiler. gcc 4.2.1 produces bad results,
      but gcc 3.4.6 is ok.  Could be an aliasing issue.  So use -O1
      everywhere.  -ffloat-store doesn't appear to matter so remove that
      too.
      c7582f44
    • rtoy's avatar
      Compile e_rem_pio2.c and k_rem_pio2.c with -ffloat-store on those · 1880c4a3
      rtoy authored
      platforms that need them.  This is to make sure double-float precision
      is used throughout instead of extended precision, which will cause bad
      answers.
      
      Linux also appears to need -O1 instead of -O2, so use -O1 everywhere.
      (Should this be changed?)
      1880c4a3
  2. Jan 17, 2008
    • rtoy's avatar
      Clear the FPU status word before loading the control word from the · 346910c6
      rtoy authored
      sigcontext.
      
      This is a workaround for an issue on x86/darwin where loading of the
      control word enabling the invalid operation exception would cause that
      exception because the status word had that exception.  Not sure why
      this is needed or why the invalid operation exception was set.  It was
      happening in a call run-program while concatenating the files for the
      hemlock library.
      346910c6
  3. Jan 09, 2008
  4. Jan 03, 2008
    • rtoy's avatar
      Update from logs. · e0705867
      rtoy authored
      e0705867
    • rtoy's avatar
      Update from logs. · f96bb087
      rtoy authored
      f96bb087
    • cshapiro's avatar
      Switch the FreeBSD port to use the common floating point trap handling · 9495c516
      cshapiro authored
      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.
      9495c516
  5. Dec 21, 2007
  6. Dec 18, 2007
  7. Dec 17, 2007
  8. Dec 15, 2007
    • rtoy's avatar
      Abstract out the access to the eflags register in a sigcontext. · 5c6f325d
      rtoy authored
      x86-lispregs.h:
      o Add SC_EFLAGS macro to access the eflags register (currently only
        for linux and darwin).
      
      x86-arch.c:
      o Use the SC_EFLAGS macro to enable/disable single-stepping.
      o If SC_EFLAGS is not defined, use the single-step helper stuff.
      5c6f325d
    • rtoy's avatar
      Tracing with :encapsulate NIL works on Darwin now. There are some · 7d7c3c3e
      rtoy authored
      issues like why the mcontext slot is 0 in the sigcontext from a
      function end breakpoint.  This works around that problem for now.
      
      lisp/x86-arch.c:
      o Add documentation on how arch_do_displaced_inst works.
      o Darwin has the eflags register in the sigcontext so use that to
        enable and disable single-stepping using the eflags slot.  This is
        how Linux works too.  This change makes function start breakpoints
        work.
      
      code/debug-int.lisp:
      o In FIND-ESCAPED-FRAME, make sure the mcontext slot is not null (0)
        before we try to grab the cfp slot from it.  This works around an
        issue where the mcontext slot is 0 on Darwin.
      
      code/ntrace.lisp:
      o Make *TRACE-ENCAPSULATE-DEFAULT* be :default again.
      7d7c3c3e
  9. Dec 14, 2007
  10. Dec 13, 2007
  11. Dec 10, 2007
  12. Dec 09, 2007
  13. Dec 07, 2007
  14. Dec 06, 2007
    • rtoy's avatar
      This has the same issue with finding make as in build.sh. Copy over · 61c2dee3
      rtoy authored
      the code from build.sh to here so we do the same thing.
      
      (Should this be moved out to a separate file?)
      61c2dee3
    • cshapiro's avatar
      Minor changes to support the latest betas of FreeBSD 7. · 27bc1a7b
      cshapiro authored
      * Update the Config file to detect the GCC version at build time and
        use -iquote instead of -I- if we are not using GCC 2 or 3.  This
        silences the unsilenceable deprecation message emitted by GCC 4.
      
      * Check the FreeBSD version at compile time and switch the protection
        violation signal to SIGSEGV if we are on a version of FreeBSD 7 that
        will deliver a SIGSEGV instead of a SIGBUS for access errors.
      
      * Install sigbus_handler to handle whatever UNIX signal the macro
        PROTECTION_VIOLATION_SIGNAL expands to.  Get rid of the useless
        sigsegv_handler.  Add the PROTECTION_VIOLATION_CODE macro so we do
        not have to conditionalize the check that guards the write barrier
        code.
      27bc1a7b
  15. Dec 04, 2007
  16. Dec 03, 2007
    • pwerkowski's avatar
      caa5a031
    • rtoy's avatar
      From Helmut Eller, cmucl-imp, 2007/11/29: · 06764498
      rtoy authored
          the following example gets miscompiled:
      
          (defun foo ()
            (let ((<= (symbol-function 'list)))
      	(lambda (x y)
      	  (funcall <= x y))))
      
          (assert (equal (funcall (foo) 'a 'b) '(a b)))
      
          It seems to me that the compiler inappropriately applies a source
          transformation because the local variable happens to have a function
          type.  (This happens also for symbols other than <=, e.g. char= .)
      
          The following patch fixes that.  It seems to me, that we can use the
          secondary return of VALIDATE-CALL-TYPE (info) to decide whether we
          deal with a global variable, because VALIDATE-CALL-TYPE indirectly
          calls RECOGNIZE-KNOWN-CALL which does the proper checks for a global
          variable.
      06764498
    • rtoy's avatar
      Update from logs. · af072e4e
      rtoy authored
      af072e4e
  17. Nov 28, 2007
  18. Nov 27, 2007
  19. Nov 16, 2007
  20. Nov 15, 2007
    • rtoy's avatar
      To make single-float operations produce correctly rounded single-float · a836526a
      rtoy authored
      operations, store the result of the operation to the stack and reload
      it.
      
      This needs some work because the compiler there are a lot of redundant
      stores and loads.
      
      Also, I am unable to create code to exercise all of the possible
      conditions in the vops, so I am not 100% sure all of these are
      correct.
      a836526a
  21. Nov 14, 2007
    • rtoy's avatar
      Export COMPATIBLE-FUNCTION-TYPES-P. · 2b51b6a3
      rtoy authored
      2b51b6a3
    • rtoy's avatar
      Fix some mistakes accidentally introduced in the sigcontext · 42b3bda6
      rtoy authored
      rearrangement.  Changes not tested, but there are no compiler warnings
      anymore.
      
      o Fix typo:  It's fpstate, not ftpstate.
      o Fix dereferencing of the fpstate, which is not in the sigcontext
        anymore.  It's in the sc-mcontext slot of the sigcontext now.
      42b3bda6
    • rtoy's avatar
      boot-1007-11-14-1.lisp: · e86597ac
      rtoy authored
      o Add comments that we need to cross-compile on x86.
      o Load up boot-2007-11-1 for the x86 cross-compile to get rid of a
        warning.
      o Load up the default cross-x86-x86 script.
      
      exports.lisp:
      o Remove FLOAT-ACCURACY.  It is now gone.
      e86597ac
Loading