diff --git a/lisp/Config.x86_darwin b/lisp/Config.x86_darwin
index 6d6b91651ddfd8dc3fbb6e5dc38eb03977d3d436..bc8e6f362fc01010ee1be771c5d99ff3e15b8ecb 100644
--- a/lisp/Config.x86_darwin
+++ b/lisp/Config.x86_darwin
@@ -27,6 +27,10 @@ ifdef FEATURE_SSE2
 RUNTIME += -DFEATURE_SSE2
 endif
 
+# Compile code that will run on OSX 10.4 (Tiger)
+MIN_VER = -mmacosx-version-min=10.4
+RUNTIME += $(MIN_VER)
+
 CPPFLAGS = -Di386 -DDARWIN $(RUNTIME)
 CFLAGS = -Wstrict-prototypes -Wall -g3 $(CPPFLAGS) $(INCLUDES)
 ASFLAGS = -g3 $(INCLUDES) $(RUNTIME)
@@ -35,7 +39,7 @@ UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
 ASSEM_SRC = x86-assem.S
 ARCH_SRC = x86-arch.c
 OS_SRC = Darwin-os.c os-common.c e_rem_pio2.c k_rem_pio2.c
-# OS_LINK_FLAGS = -dynamic -export-dynamic
+OS_LINK_FLAGS = $(MIN_VER)
 OS_LIBS =
 
 # This has aliasing problems, so turn off aliasing.
diff --git a/lisp/Darwin-os.c b/lisp/Darwin-os.c
index 737b4bde99dbe9ce043e28ddcc7a11e05d26f5b0..e6111c32ad24f550e068465010fc8338b18d370a 100644
--- a/lisp/Darwin-os.c
+++ b/lisp/Darwin-os.c
@@ -14,7 +14,7 @@
  * Frobbed for OpenBSD by Pierre R. Mai, 2001.
  * Frobbed for Darwin by Pierre R. Mai, 2003.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Darwin-os.c,v 1.23 2008/12/10 02:39:13 rtoy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Darwin-os.c,v 1.24 2008/12/29 14:40:34 rtoy Exp $
  *
  */
 
@@ -200,6 +200,33 @@ sc_reg(os_context_t * context, int offset)
 unsigned long *
 os_sigcontext_reg(ucontext_t *scp, int index)
 {
+#if __DARWIN_UNIX03
+  /* Nothing needed for 10.5 */
+#else
+  /* This is for 10.4 */
+#define __ss ss
+#define __eax eax
+#define __ecx ecx
+#define __edx edx
+#define __ebx ebx
+#define __esp esp
+#define __ebp ebp
+#define __esi esi
+#define __edi edi
+#define __eip eip  
+#define __fs fs
+#define __fpu_stmm0 fpu_stmm0
+#define __fpu_stmm1 fpu_stmm1
+#define __fpu_stmm2 fpu_stmm2
+#define __fpu_stmm3 fpu_stmm3
+#define __fpu_stmm4 fpu_stmm4
+#define __fpu_stmm5 fpu_stmm5
+#define __fpu_stmm6 fpu_stmm6
+#define __fpu_stmm7 fpu_stmm7
+#define __fpu_fcw   fpu_fcw
+#define __fpu_fsw   fpu_fsw
+#define __fpu_mxcsr fpu_mxcsr
+#endif
     switch (index) {
     case 0:
 	return (unsigned long *) &scp->uc_mcontext->__ss.__eax;
diff --git a/lisp/x86-lispregs.h b/lisp/x86-lispregs.h
index 09866b600b1b0b08609db2b855680e4e4961f8e4..0e9735e241e0a0f27361441a4411f22df426be20 100644
--- a/lisp/x86-lispregs.h
+++ b/lisp/x86-lispregs.h
@@ -1,5 +1,5 @@
 /* x86-lispregs.h -*- Mode: C; -*-
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-lispregs.h,v 1.12 2008/01/03 11:41:54 cshapiro Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-lispregs.h,v 1.13 2008/12/29 14:40:34 rtoy Rel $
  */
 
 #ifndef _X86_LISPREGS_H_
@@ -49,7 +49,13 @@
 #define SC_SP(scp) SC_REG(scp, reg_ESP)
 
 #if defined(DARWIN)
+#if __DARWIN_UNIX03
+/* For 10.5 */
 #define SC_EFLAGS(sc) ((sc)->uc_mcontext->__ss.__eflags)
+#else
+/* For 10.4 */
+#define SC_EFLAGS(sc) ((sc)->uc_mcontext->ss.eflags)
+#endif
 #elif defined(__linux__)
 #define SC_EFLAGS(sc) ((sc)->uc_mcontext.gregs[REG_EFL])
 #endif