0.8.15.17
authorDaniel Barlow <dan@telent.net>
Mon, 18 Oct 2004 13:07:41 +0000 (13:07 +0000)
committerDaniel Barlow <dan@telent.net>
Mon, 18 Oct 2004 13:07:41 +0000 (13:07 +0000)
Merge NetBSD stack exhaustion patch from Richard Kreuter:
after a signal handler returns, NetBSD restores esp from the
mcontext's uesp slot, not the esp slot
(sbcl-devel 2004-10-15)

src/runtime/interrupt.c
src/runtime/x86-bsd-os.c
src/runtime/x86-lispregs.h
version.lisp-expr

index 6bd4351..1dcc462 100644 (file)
@@ -679,7 +679,11 @@ void arrange_return_to_lisp_function(os_context_t *context, lispobj function)
     *os_context_pc_addr(context) = call_into_lisp;
     *os_context_register_addr(context,reg_ECX) = 0; 
     *os_context_register_addr(context,reg_EBP) = sp-2;
+#ifdef __NetBSD__ 
+    *os_context_register_addr(context,reg_UESP) = sp-14;
+#else
     *os_context_register_addr(context,reg_ESP) = sp-14;
+#endif
 #else
     /* this much of the calling convention is common to all
        non-x86 ports */
index 3c0e2f6..8baf11d 100644 (file)
@@ -69,6 +69,8 @@ os_context_register_addr(os_context_t *context, int offset)
        return CONTEXT_ADDR_FROM_STEM(ESI);
     case 14:
        return CONTEXT_ADDR_FROM_STEM(EDI);
+    case 16:
+       return CONTEXT_ADDR_FROM_STEM(UESP);
     default:
        return 0;
     }
index 57cf416..9c1d462 100644 (file)
@@ -34,8 +34,9 @@
 #define reg_EBP REG(10)
 #define reg_ESI REG(12)
 #define reg_EDI REG(14)
+#define reg_UESP REG(16)
 
-#define REGNAMES "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI"
+#define REGNAMES "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "UESP"
 
 /* classification of registers
  *
index 5f744cc..bd77c7c 100644 (file)
@@ -17,4 +17,4 @@
 ;;; 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.8.15.16"
+"0.8.15.17"