summaryrefslogtreecommitdiff
path: root/thread_pthread.c
diff options
context:
space:
mode:
Diffstat (limited to 'thread_pthread.c')
-rw-r--r--thread_pthread.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/thread_pthread.c b/thread_pthread.c
index 55e7238d2d..72a4dae8cb 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -179,6 +179,10 @@ static struct {
#endif
} native_main_thread;
+#ifdef STACK_END_ADDRESS
+extern void *STACK_END_ADDRESS;
+#endif
+
#undef ruby_init_stack
void
ruby_init_stack(VALUE *addr
@@ -188,12 +192,16 @@ ruby_init_stack(VALUE *addr
)
{
native_main_thread.id = pthread_self();
+#ifdef STACK_END_ADDRESS
+ native_main_thread.stack_start = STACK_END_ADDRESS;
+#else
if (!native_main_thread.stack_start ||
STACK_UPPER(&addr,
native_main_thread.stack_start > addr,
native_main_thread.stack_start < addr)) {
native_main_thread.stack_start = addr;
}
+#endif
#ifdef __ia64
if (!native_main_thread.register_stack_start ||
(VALUE*)bsp < native_main_thread.register_stack_start) {