From e901f77acc9b49c030adf5d4a1c5aeb501912497 Mon Sep 17 00:00:00 2001
From: Raymond Toy <toy.raymond@gmail.com>
Date: Fri, 20 Jan 2012 20:32:24 -0800
Subject: [PATCH] Get rid of os_stack_grows_down and friends and hardwire the
 decision within guard_zones since the stack overflow checking was only ported
 to x86 and sparc.

---
 src/lisp/os-common.c | 33 ++++++---------------------------
 1 file changed, 6 insertions(+), 27 deletions(-)
 mode change 100644 => 100755 src/lisp/os-common.c

diff --git a/src/lisp/os-common.c b/src/lisp/os-common.c
old mode 100644
new mode 100755
index e6684b2da..9ea6f4603
--- a/src/lisp/os-common.c
+++ b/src/lisp/os-common.c
@@ -368,23 +368,6 @@ lazy_resolve_linkage(unsigned long retaddr)
 #endif /* LINKAGE_TABLE */
 }
 
-static int
-os_stack_grows_down_1(int *local_var_address)
-{
-    int dummy;
-
-    return &dummy < local_var_address;
-}
-
-/* Value is true if the processor stack grows down.  */
-
-int
-os_stack_grows_down(void)
-{
-    int dummy;
-
-    return os_stack_grows_down_1(&dummy);
-}
 
 
 #ifdef RED_ZONE_HIT
@@ -425,17 +408,13 @@ static void
 guard_zones(char **yellow_start, char **red_start)
 {
 #if (defined(i386) || defined(__x86_64))
-    if (os_stack_grows_down()) {
-	char *end = (char *) CONTROL_STACK_START;
-
-	*red_start = end;
-	*yellow_start = *red_start + RED_ZONE_SIZE;
-    } else {
-	char *end = (char *) CONTROL_STACK_START + control_stack_size;
+    /*
+     * All x86's have a control stack (aka C stack) that grows down.
+     */
+    char *end = (char *) CONTROL_STACK_START;
 
-	*red_start = end - RED_ZONE_SIZE;
-	*yellow_start = *red_start - YELLOW_ZONE_SIZE;
-    }
+    *red_start = end;
+    *yellow_start = *red_start + RED_ZONE_SIZE;
 #else
     /*
      * On Solaris/sparc, the C stack grows down, but the Lisp control
-- 
GitLab