grounding in the PCL implementation of CLOS.
   * bug fix: TRUENAME on "/" no longer returns a relative pathname.
     (reported by tomppa on #lisp)
+  * bug fix: clear the direction flag on Lisp -> C transitions, as 
+    required by the x86-64 ABI. Fixes mysterious GC crashes on SuSE.
+    (reported by Andrej Grozin and Hendrik Maryns)
   * optimization: major improvements to GC efficiency on GENCGC platforms
   * optimization: faster implementation of EQUAL
   * optimization: emit more efficient opcodes for some common 
 
   (:vop-var vop)
   (:save-p t)
   (:generator 0
+    ;; ABI: Direction flag must be clear on function entry. -- JES, 2006-01-20
+    (inst cld)
     ;; ABI: AL contains amount of arguments passed in XMM registers
     ;; for vararg calls.
     (move-immediate rax
 
        .global GNAME(call_into_c)
        .type   GNAME(call_into_c),@function
 GNAME(call_into_c):
+        /* ABI requires that the direction flag be clear on function
+         * entry and exit. */
+        cld
+        
        push    %rbp            # Save old frame pointer.
        mov     %rsp,%rbp       # Establish new frame.
 
        pop     %r12
        pop     %rbx
 
+        /* ABI requires that the direction flag be clear on function
+         * entry and exit. */
+        cld
+        
 /* FIXME Restore the NPX state. */
 
        /* return value is already in rax where lisp expects it */
        ret
        .size   GNAME(fast_bzero), .-GNAME(fast_bzero)
 
-\f
         .end
 
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.8.46"
+"0.9.8.47"