summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcommon.mk2
-rw-r--r--configure.ac33
-rw-r--r--cont.c93
-rw-r--r--dln.c4
-rw-r--r--ext/etc/etc.c6
-rw-r--r--gc.c25
-rw-r--r--ia64.S42
-rw-r--r--include/ruby/defines.h4
-rw-r--r--include/ruby/ruby.h6
-rw-r--r--thread.c22
-rw-r--r--thread_pthread.c75
-rw-r--r--thread_win32.c2
-rw-r--r--tool/m4/ruby_stack_grow_direction.m42
-rw-r--r--vm.c3
-rw-r--r--vm_core.h5
-rw-r--r--vm_dump.c8
-rw-r--r--win32/Makefile.sub12
-rw-r--r--win32/README.win324
-rwxr-xr-xwin32/configure.bat3
-rw-r--r--win32/setup.mak5
20 files changed, 24 insertions, 332 deletions
diff --git a/common.mk b/common.mk
index f740f93af6..0fc2e7e8bd 100755
--- a/common.mk
+++ b/common.mk
@@ -917,8 +917,6 @@ strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
strstr.$(OBJEXT): {$(VPATH)}strstr.c
nt.$(OBJEXT): {$(VPATH)}nt.c
-ia64.$(OBJEXT): {$(VPATH)}ia64.s
- $(CC) $(CFLAGS) -c $<
.coroutine_obj $(COROUTINE_OBJ): \
{$(VPATH)}$(COROUTINE_H:.h=).$(ASMEXT) \
$(COROUTINE_H:/Context.h=/.time)
diff --git a/configure.ac b/configure.ac
index bed27c98f0..5d13a0af01 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1687,24 +1687,6 @@ AS_IF([test "x$ALLOCA" = "x"], [
])
AC_FUNC_MEMCMP
-# http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html
-# Debian GNU/Linux Etch's libc6.1 2.3.6.ds1-13etch5 has this problem.
-# Debian GNU/Linux Lenny's libc6.1 2.7-10 has no problem.
-AC_CACHE_CHECK(for broken erfc of glibc-2.3.6 on IA64, rb_cv_broken_glibc_ia64_erfc,
- [AC_TRY_RUN([
-#include <math.h>
-int
-main()
-{
- erfc(10000.0);
- return 0;
-}
-],
- rb_cv_broken_glibc_ia64_erfc=no,
- rb_cv_broken_glibc_ia64_erfc=yes,
- rb_cv_broken_glibc_ia64_erfc=no)])
-AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no])
-
AS_CASE(["$target_os"],[freebsd*],[
AC_DEFINE(BROKEN_CLOSE)
AC_REPLACE_FUNCS(close)
@@ -2217,21 +2199,6 @@ AS_IF([test x"$ac_cv_func_dirfd" = xno], [
])])
])
-AS_IF([test x"$target_cpu" = xia64], [
- AC_LIBOBJ([ia64])
- AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base,
- rb_cv___libc_ia64_register_backing_store_base,
- [rb_cv___libc_ia64_register_backing_store_base=no
- AC_TRY_LINK(
- [extern unsigned long __libc_ia64_register_backing_store_base;],
- [unsigned long p = __libc_ia64_register_backing_store_base;
- printf("%ld\n", p);],
- [rb_cv___libc_ia64_register_backing_store_base=yes])])
- AS_IF([test $rb_cv___libc_ia64_register_backing_store_base = yes], [
- AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE)
- ])
-])
-
AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
rb_cv_rshift_sign=yes,
diff --git a/cont.c b/cont.c
index accf93aba0..8337ddce99 100644
--- a/cont.c
+++ b/cont.c
@@ -61,10 +61,6 @@
/* On Solaris because resuming any Fiber caused SEGV, for some reason.
*/
# define FIBER_USE_NATIVE 0
-# elif defined(__ia64)
-/* At least, Linux/ia64's getcontext(3) doesn't save register window.
- */
-# define FIBER_USE_NATIVE 0
# elif defined(__GNU__)
/* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext
* and swapcontext functions. Disabling their usage till support is
@@ -121,11 +117,6 @@ typedef struct rb_context_struct {
VALUE *stack;
VALUE *stack_src;
size_t stack_size;
-#ifdef __ia64
- VALUE *register_stack;
- VALUE *register_stack_src;
- int register_stack_size;
-#endif
} machine;
rb_execution_context_t saved_ec;
int free_vm_stack;
@@ -386,12 +377,6 @@ cont_mark(void *ptr)
}
}
}
-#ifdef __ia64
- if (cont->machine.register_stack) {
- rb_gc_mark_locations(cont->machine.register_stack,
- cont->machine.register_stack + cont->machine.register_stack_size);
- }
-#endif
RUBY_MARK_LEAVE("cont");
}
@@ -453,9 +438,6 @@ cont_free(void *ptr)
ruby_xfree(cont->ensure_array);
RUBY_FREE_UNLESS_NULL(cont->machine.stack);
#endif
-#ifdef __ia64
- RUBY_FREE_UNLESS_NULL(cont->machine.register_stack);
-#endif
RUBY_FREE_UNLESS_NULL(cont->saved_vm_stack.ptr);
if (mjit_enabled && cont->mjit_cont != NULL) {
@@ -485,11 +467,7 @@ cont_memsize(const void *ptr)
if (cont->machine.stack) {
size += cont->machine.stack_size * sizeof(*cont->machine.stack);
}
-#ifdef __ia64
- if (cont->machine.register_stack) {
- size += cont->machine.register_stack_size * sizeof(*cont->machine.register_stack);
- }
-#endif
+
return size;
}
@@ -598,9 +576,6 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
size_t size;
SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
-#ifdef __ia64
- th->ec->machine.register_stack_end = rb_ia64_bsp();
-#endif
if (th->ec->machine.stack_start > th->ec->machine.stack_end) {
size = cont->machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
@@ -620,20 +595,6 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
FLUSH_REGISTER_WINDOWS;
MEMCPY(cont->machine.stack, cont->machine.stack_src, VALUE, size);
-
-#ifdef __ia64
- rb_ia64_flushrs();
- size = cont->machine.register_stack_size = th->ec->machine.register_stack_end - th->ec->machine.register_stack_start;
- cont->machine.register_stack_src = th->ec->machine.register_stack_start;
- if (cont->machine.register_stack) {
- REALLOC_N(cont->machine.register_stack, VALUE, size);
- }
- else {
- cont->machine.register_stack = ALLOC_N(VALUE, size);
- }
-
- MEMCPY(cont->machine.register_stack, cont->machine.register_stack_src, VALUE, size);
-#endif
}
static const rb_data_type_t cont_data_type = {
@@ -655,10 +616,6 @@ cont_save_thread(rb_context_t *cont, rb_thread_t *th)
/* saved_ec->machine.stack_end should be NULL */
/* because it may happen GC afterward */
sec->machine.stack_end = NULL;
-
-#ifdef __ia64
- sec->machine.register_stack_end = NULL;
-#endif
}
static void
@@ -993,9 +950,6 @@ fiber_initialize_machine_stack_context(rb_fiber_t *fib, size_t size)
sec->machine.stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
sec->machine.stack_maxsize = size - RB_PAGE_SIZE;
#endif
-#ifdef __ia64
- sth->machine.register_stack_maxsize = sth->machine.stack_maxsize;
-#endif
}
NOINLINE(static void fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib));
@@ -1065,53 +1019,11 @@ cont_restore_1(rb_context_t *cont)
VALUE, cont->machine.stack_size);
}
-#ifdef __ia64
- if (cont->machine.register_stack_src) {
- MEMCPY(cont->machine.register_stack_src, cont->machine.register_stack,
- VALUE, cont->machine.register_stack_size);
- }
-#endif
-
ruby_longjmp(cont->jmpbuf, 1);
}
NORETURN(NOINLINE(static void cont_restore_0(rb_context_t *, VALUE *)));
-#ifdef __ia64
-#define C(a) rse_##a##0, rse_##a##1, rse_##a##2, rse_##a##3, rse_##a##4
-#define E(a) rse_##a##0= rse_##a##1= rse_##a##2= rse_##a##3= rse_##a##4
-static volatile int C(a), C(b), C(c), C(d), C(e);
-static volatile int C(f), C(g), C(h), C(i), C(j);
-static volatile int C(k), C(l), C(m), C(n), C(o);
-static volatile int C(p), C(q), C(r), C(s), C(t);
-#if 0
-{/* the above lines make cc-mode.el confused so much */}
-#endif
-int rb_dummy_false = 0;
-NORETURN(NOINLINE(static void register_stack_extend(rb_context_t *, VALUE *, VALUE *)));
-static void
-register_stack_extend(rb_context_t *cont, VALUE *vp, VALUE *curr_bsp)
-{
- if (rb_dummy_false) {
- /* use registers as much as possible */
- E(a) = E(b) = E(c) = E(d) = E(e) =
- E(f) = E(g) = E(h) = E(i) = E(j) =
- E(k) = E(l) = E(m) = E(n) = E(o) =
- E(p) = E(q) = E(r) = E(s) = E(t) = 0;
- E(a) = E(b) = E(c) = E(d) = E(e) =
- E(f) = E(g) = E(h) = E(i) = E(j) =
- E(k) = E(l) = E(m) = E(n) = E(o) =
- E(p) = E(q) = E(r) = E(s) = E(t) = 0;
- }
- if (curr_bsp < cont->machine.register_stack_src+cont->machine.register_stack_size) {
- register_stack_extend(cont, vp, (VALUE*)rb_ia64_bsp());
- }
- cont_restore_0(cont, vp);
-}
-#undef C
-#undef E
-#endif
-
static void
cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
{
@@ -1160,9 +1072,6 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
}
cont_restore_1(cont);
}
-#ifdef __ia64
-#define cont_restore_0(cont, vp) register_stack_extend((cont), (vp), (VALUE*)rb_ia64_bsp())
-#endif
/*
* Document-class: Continuation
diff --git a/dln.c b/dln.c
index 7acea5f888..c40cbfc6ac 100644
--- a/dln.c
+++ b/dln.c
@@ -1171,7 +1171,7 @@ dln_strerror(void)
}
#endif
-#if defined(_AIX) && ! defined(_IA64)
+#if defined(_AIX)
static void
aix_loaderror(const char *pathname)
{
@@ -1400,7 +1400,7 @@ dln_load(const char *file)
}
#endif /* hpux */
-#if defined(_AIX) && ! defined(_IA64)
+#if defined(_AIX)
#define DLN_DEFINED
{
void (*init_fct)();
diff --git a/ext/etc/etc.c b/ext/etc/etc.c
index 2dd4ed673e..93b19f12f5 100644
--- a/ext/etc/etc.c
+++ b/ext/etc/etc.c
@@ -754,9 +754,6 @@ etc_uname(VALUE obj)
# ifndef PROCESSOR_ARCHITECTURE_AMD64
# define PROCESSOR_ARCHITECTURE_AMD64 9
# endif
-# ifndef PROCESSOR_ARCHITECTURE_IA64
-# define PROCESSOR_ARCHITECTURE_IA64 6
-# endif
# ifndef PROCESSOR_ARCHITECTURE_INTEL
# define PROCESSOR_ARCHITECTURE_INTEL 0
# endif
@@ -768,9 +765,6 @@ etc_uname(VALUE obj)
case PROCESSOR_ARCHITECTURE_ARM:
mach = "ARM";
break;
- case PROCESSOR_ARCHITECTURE_IA64:
- mach = "IA64";
- break;
case PROCESSOR_ARCHITECTURE_INTEL:
mach = "x86";
break;
diff --git a/gc.c b/gc.c
index b92e068440..de682e0dda 100644
--- a/gc.c
+++ b/gc.c
@@ -4324,11 +4324,7 @@ init_mark_stack(mark_stack_t *stack)
/* Marking */
-#ifdef __ia64
-#define SET_STACK_END (SET_MACHINE_STACK_END(&ec->machine.stack_end), ec->machine.register_stack_end = rb_ia64_bsp())
-#else
#define SET_STACK_END SET_MACHINE_STACK_END(&ec->machine.stack_end)
-#endif
#define STACK_START (ec->machine.stack_start)
#define STACK_END (ec->machine.stack_end)
@@ -4384,12 +4380,7 @@ stack_check(rb_execution_context_t *ec, int water_mark)
int ret;
SET_STACK_END;
ret = STACK_LENGTH > STACK_LEVEL_MAX - water_mark;
-#ifdef __ia64
- if (!ret) {
- ret = (VALUE*)rb_ia64_bsp() - ec->machine.register_stack_start >
- ec->machine.register_stack_maxsize/sizeof(VALUE) - water_mark;
- }
-#endif
+
return ret;
}
#else
@@ -4719,11 +4710,7 @@ mark_stack_locations(rb_objspace_t *objspace, const rb_execution_context_t *ec,
{
gc_mark_locations(objspace, stack_start, stack_end);
-#ifdef __ia64
- gc_mark_locations(objspace,
- ec->machine.register_stack_start,
- ec->machine.register_stack_end);
-#endif
+
#if defined(__mc68000__)
gc_mark_locations(objspace,
(VALUE*)((char*)stack_start + 2),
@@ -7230,14 +7217,6 @@ garbage_collect_with_gvl(rb_objspace_t *objspace, int reason)
}
}
-#undef Init_stack
-
-void
-Init_stack(volatile VALUE *addr)
-{
- ruby_init_stack(addr);
-}
-
/*
* call-seq:
* GC.start -> nil
diff --git a/ia64.S b/ia64.S
deleted file mode 100644
index 1087105585..0000000000
--- a/ia64.S
+++ /dev/null
@@ -1,42 +0,0 @@
-// rb_ia64_flushrs and rb_ia64_bsp is written in IA64 assembly language
-// because Intel Compiler for IA64 doesn't support inline assembly.
-//
-// This file is based on following C program compiled by gcc.
-//
-// void rb_ia64_flushrs(void) { __builtin_ia64_flushrs(); }
-// void *rb_ia64_bsp(void) { return __builtin_ia64_bsp(); }
-//
-// Note that rb_ia64_flushrs and rb_ia64_bsp works in its own stack frame.
-// It's because BSP is updated by br.call/brl.call (not alloc instruction).
-// So rb_ia64_flushrs flushes stack frames including caller's one.
-// rb_ia64_bsp returns the address next to caller's register stack frame.
-//
-// See also
-// Intel Itanium Architecture Software Developer's Manual
-// Volume 2: System Architecture.
-//
- .file "ia64.c"
- .text
- .align 16
- .global rb_ia64_flushrs#
- .proc rb_ia64_flushrs#
-rb_ia64_flushrs:
- .prologue
- .body
- flushrs
- ;;
- nop.i 0
- br.ret.sptk.many b0
- .endp rb_ia64_flushrs#
- .align 16
- .global rb_ia64_bsp#
- .proc rb_ia64_bsp#
-rb_ia64_bsp:
- .prologue
- .body
- nop.m 0
- ;;
- mov r8 = ar.bsp
- br.ret.sptk.many b0
- .endp rb_ia64_bsp#
- .ident "GCC: (GNU) 3.3.5 (Debian 1:3.3.5-13)"
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
index cbf5537790..5d890df854 100644
--- a/include/ruby/defines.h
+++ b/include/ruby/defines.h
@@ -401,10 +401,6 @@ ruby_xrealloc2_with_location(void *ptr, size_t s1, size_t s2, const char *file,
#if defined(__sparc)
void rb_sparc_flush_register_windows(void);
# define FLUSH_REGISTER_WINDOWS rb_sparc_flush_register_windows()
-#elif defined(__ia64)
-void *rb_ia64_bsp(void);
-void rb_ia64_flushrs(void);
-# define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs()
#else
# define FLUSH_REGISTER_WINDOWS ((void)0)
#endif
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index e698142514..281c3ff98e 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -2669,13 +2669,7 @@ void ruby_show_copyright(void);
ruby_init_stack(&variable_in_this_stack_frame);
/*! @} */
-#ifdef __ia64
-void ruby_init_stack(volatile VALUE*, void*);
-#define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp())
-#else
void ruby_init_stack(volatile VALUE*);
-#endif
-#define Init_stack(addr) ruby_init_stack(addr)
int ruby_setup(void);
int ruby_cleanup(volatile int);
diff --git a/thread.c b/thread.c
index 4eebfa18bb..fdd2a959d1 100644
--- a/thread.c
+++ b/thread.c
@@ -148,16 +148,9 @@ static inline int blocking_region_begin(rb_thread_t *th, struct rb_blocking_regi
rb_unblock_function_t *ubf, void *arg, int fail_if_interrupted);
static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region);
-#ifdef __ia64
-#define RB_GC_SAVE_MACHINE_REGISTER_STACK(th) \
- do{(th)->ec->machine.register_stack_end = rb_ia64_bsp();}while(0)
-#else
-#define RB_GC_SAVE_MACHINE_REGISTER_STACK(th)
-#endif
#define RB_GC_SAVE_MACHINE_CONTEXT(th) \
do { \
FLUSH_REGISTER_WINDOWS; \
- RB_GC_SAVE_MACHINE_REGISTER_STACK(th); \
setjmp((th)->ec->machine.regs); \
SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \
} while (0)
@@ -332,11 +325,7 @@ rb_thread_s_debug_set(VALUE self, VALUE val)
# define PRI_THREAD_ID "p"
#endif
-#ifndef __ia64
-#define thread_start_func_2(th, st, rst) thread_start_func_2(th, st)
-#endif
-NOINLINE(static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start,
- VALUE *register_stack_start));
+NOINLINE(static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start));
static void timer_thread_function(void);
void ruby_sigchld_handler(rb_vm_t *); /* signal.c */
@@ -608,9 +597,6 @@ thread_cleanup_func_before_exec(void *th_ptr)
rb_thread_t *th = th_ptr;
th->status = THREAD_KILLED;
th->ec->machine.stack_start = th->ec->machine.stack_end = NULL;
-#ifdef __ia64
- th->ec->machine.register_stack_start = th->ec->machine.register_stack_end = NULL;
-#endif
}
static void
@@ -713,7 +699,7 @@ rb_vm_push_frame(rb_execution_context_t *sec,
int stack_max);
static int
-thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start)
+thread_start_func_2(rb_thread_t *th, VALUE *stack_start)
{
STACK_GROW_DIR_DETECTION;
enum ruby_tag_type state;
@@ -734,9 +720,7 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s
th->ec->machine.stack_start = STACK_DIR_UPPER(vm_stack + size, vm_stack);
th->ec->machine.stack_maxsize -= size * sizeof(VALUE);
-#ifdef __ia64
- th->ec->machine.register_stack_start = register_stack_start;
-#endif
+
thread_debug("thread start: %p\n", (void *)th);
gvl_acquire(th->vm, th);
diff --git a/thread_pthread.c b/thread_pthread.c
index 75922797bb..8e5c0c4c1a 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -647,51 +647,6 @@ size_t pthread_get_stacksize_np(pthread_t);
#define STACKADDR_AVAILABLE 1
#elif defined __HAIKU__
#define STACKADDR_AVAILABLE 1
-#elif defined __ia64 && defined _HPUX_SOURCE
-#include <sys/dyntune.h>
-
-#define STACKADDR_AVAILABLE 1
-
-/*
- * Do not lower the thread's stack to PTHREAD_STACK_MIN,
- * otherwise one would receive a 'sendsig: useracc failed.'
- * and a coredump.
- */
-#undef PTHREAD_STACK_MIN
-
-#define HAVE_PTHREAD_ATTR_GET_NP 1
-#undef HAVE_PTHREAD_ATTR_GETSTACK
-
-/*
- * As the PTHREAD_STACK_MIN is undefined and
- * no one touches the default stacksize,
- * it is just fine to use the default.
- */
-#define pthread_attr_get_np(thid, attr) 0
-
-/*
- * Using value of sp is very rough... To make it more real,
- * addr would need to be aligned to vps_pagesize.
- * The vps_pagesize is 'Default user page size (kBytes)'
- * and could be retrieved by gettune().
- */
-static int
-hpux_attr_getstackaddr(const pthread_attr_t *attr, void **addr)
-{
- static uint64_t pagesize;
- size_t size;
-
- if (!pagesize) {
- if (gettune("vps_pagesize", &pagesize)) {
- pagesize = 16;
- }
- pagesize *= 1024;
- }
- pthread_attr_getstacksize(attr, &size);
- *addr = (void *)((size_t)((char *)_Asm_get_sp() - size) & ~(pagesize - 1));
- return 0;
-}
-#define pthread_attr_getstackaddr(attr, addr) hpux_attr_getstackaddr(attr, addr)
#endif
#ifndef MAINSTACKADDR_AVAILABLE
@@ -791,9 +746,6 @@ static struct {
rb_nativethread_id_t id;
size_t stack_maxsize;
VALUE *stack_start;
-#ifdef __ia64
- VALUE *register_stack_start;
-#endif
} native_main_thread;
#ifdef STACK_END_ADDRESS
@@ -879,19 +831,10 @@ reserve_stack(volatile char *limit, size_t size)
* You must call this function before any heap allocation by Ruby implementation.
* Or GC will break living objects */
void
-ruby_init_stack(volatile VALUE *addr
-#ifdef __ia64
- , void *bsp
-#endif
- )
+ruby_init_stack(volatile VALUE *addr)
{
native_main_thread.id = pthread_self();
-#ifdef __ia64
- if (!native_main_thread.register_stack_start ||
- (VALUE*)bsp < native_main_thread.register_stack_start) {
- native_main_thread.register_stack_start = (VALUE*)bsp;
- }
-#endif
+
#if MAINSTACKADDR_AVAILABLE
if (native_main_thread.stack_maxsize) return;
{
@@ -995,11 +938,7 @@ native_thread_init_stack(rb_thread_t *th)
rb_raise(rb_eNotImpError, "ruby engine can initialize only in the main thread");
#endif
}
-#ifdef __ia64
- th->ec->machine.register_stack_start = native_main_thread.register_stack_start;
- th->ec->machine.stack_maxsize /= 2;
- th->ec->machine.register_stack_maxsize = th->ec->machine.stack_maxsize;
-#endif
+
return 0;
}
@@ -1027,9 +966,9 @@ thread_start_func_1(void *th_ptr)
native_thread_init(th);
/* run */
#if defined USE_NATIVE_THREAD_INIT
- thread_start_func_2(th, th->ec->machine.stack_start, rb_ia64_bsp());
+ thread_start_func_2(th, th->ec->machine.stack_start);
#else
- thread_start_func_2(th, &stack_start, rb_ia64_bsp());
+ thread_start_func_2(th, &stack_start);
#endif
}
#if USE_THREAD_CACHE
@@ -1161,10 +1100,6 @@ native_thread_create(rb_thread_t *th)
const size_t space = space_size(stack_size);
th->ec->machine.stack_maxsize = stack_size - space;
-#ifdef __ia64
- th->ec->machine.stack_maxsize /= 2;
- th->ec->machine.register_stack_maxsize = th->ec->machine.stack_maxsize;
-#endif
CHECK_ERR(pthread_attr_init(&attr));
diff --git a/thread_win32.c b/thread_win32.c
index e1286253a5..d8eb2b1ee6 100644
--- a/thread_win32.c
+++ b/thread_win32.c
@@ -582,7 +582,7 @@ thread_start_func_1(void *th_ptr)
thread_debug("thread created (th: %p, thid: %p, event: %p)\n", th,
th->thread_id, th->native_thread_data.interrupt_event);
- thread_start_func_2(th, th->ec->machine.stack_start, rb_ia64_bsp());
+ thread_start_func_2(th, th->ec->machine.stack_start);
w32_close_handle(thread_id);
thread_debug("thread deleted (th: %p)\n", th);
diff --git a/tool/m4/ruby_stack_grow_direction.m4 b/tool/m4/ruby_stack_grow_direction.m4
index e930bc62ec..74ec219322 100644
--- a/tool/m4/ruby_stack_grow_direction.m4
+++ b/tool/m4/ruby_stack_grow_direction.m4
@@ -3,7 +3,7 @@ AC_DEFUN([RUBY_STACK_GROW_DIRECTION], [
AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1])
AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [
AS_CASE(["$1"],
-[m68*|x86*|x64|i?86|ia64|ppc*|sparc*|alpha*], [ $2=-1],
+[m68*|x86*|x64|i?86|ppc*|sparc*|alpha*], [ $2=-1],
[hppa*], [ $2=+1],
[
AC_TRY_RUN([
diff --git a/vm.c b/vm.c
index 439464a42f..16a7312ce3 100644
--- a/vm.c
+++ b/vm.c
@@ -2878,9 +2878,6 @@ mjit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
extern VALUE *rb_gc_stack_start;
extern size_t rb_gc_stack_maxsize;
-#ifdef __ia64
-extern VALUE *rb_gc_register_stack_start;
-#endif
/* debug functions */
diff --git a/vm_core.h b/vm_core.h
index 7860c2d505..99dee425ab 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -894,11 +894,6 @@ typedef struct rb_execution_context_struct {
VALUE *stack_start;
VALUE *stack_end;
size_t stack_maxsize;
-#ifdef __ia64
- VALUE *register_stack_start;
- VALUE *register_stack_end;
- size_t register_stack_maxsize;
-#endif
RUBY_ALIGNAS(SIZEOF_VALUE) jmp_buf regs;
} machine;
} rb_execution_context_t;
diff --git a/vm_dump.c b/vm_dump.c
index 53cc764551..2099310f60 100644
--- a/vm_dump.c
+++ b/vm_dump.c
@@ -649,14 +649,6 @@ dump_thread(void *arg)
frame.AddrFrame.Offset = context.Rbp;
frame.AddrStack.Mode = AddrModeFlat;
frame.AddrStack.Offset = context.Rsp;
-#elif defined(_M_IA64) || defined(__ia64__)
- mac = IMAGE_FILE_MACHINE_IA64;
- frame.AddrPC.Mode = AddrModeFlat;
- frame.AddrPC.Offset = context.StIIP;
- frame.AddrBStore.Mode = AddrModeFlat;
- frame.AddrBStore.Offset = context.RsBSP;
- frame.AddrStack.Mode = AddrModeFlat;
- frame.AddrStack.Offset = context.IntSp;
#else /* i386 */
mac = IMAGE_FILE_MACHINE_I386;
frame.AddrPC.Mode = AddrModeFlat;
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index 756ee7a280..d79a16bddb 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -399,7 +399,7 @@ RUBY = ruby
DTRACE_EXT = dmyh
!if !defined(STACK)
-!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
+!if "$(ARCH)" == "x64"
STACK = 0x400000
!else
STACK = 0x200000
@@ -646,7 +646,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
!else
#define SIZEOF_OFF_T 4
!endif
-!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
+!if "$(ARCH)" == "x64"
#define SIZEOF_VOIDP 8
!else
#define SIZEOF_VOIDP 4
@@ -668,7 +668,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
#define NUM2CLOCKID(v) NUM2INT(v)
#define SIZEOF_CLOCK_T 4
#define SIZEOF_RLIM_T 0
-!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
+!if "$(ARCH)" == "x64"
#define SIZEOF_SIZE_T 8
#define SIZEOF_PTRDIFF_T 8
#define SIZEOF_INTPTR_T 8
@@ -712,7 +712,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
!else
#define PACKED_STRUCT(x) x
!endif
-!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
+!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64"
#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
!else
#define PACKED_STRUCT_UNALIGNED(x) x
@@ -778,7 +778,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
#define HAVE_INTPTR_T 1
#define HAVE_UINTPTR_T 1
#define HAVE_SSIZE_T 1
-!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
+!if "$(ARCH)" == "x64"
#define ssize_t __int64
#define PRI_PTR_PREFIX "I64"
!else
@@ -868,7 +868,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
#define restrict /* not supported */
!endif
#define NEED_IO_SEEK_BETWEEN_RW 1
-!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
+!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64"
#define STACK_GROW_DIRECTION -1
!endif
!if "$(COROUTINE_OBJ)" != ""
diff --git a/win32/README.win32 b/win32/README.win32
index 18d03815b2..eae6cdce9a 100644
--- a/win32/README.win32
+++ b/win32/README.win32
@@ -8,8 +8,8 @@
2. Visual C++ 12.0 (2013) or later.
- [Note] if you want to build x64 or ia64 version, use native compiler for
- x64/ia64.
+ [Note] if you want to build x64 version, use native compiler for
+ x64.
3. Please set environment variable +INCLUDE+, +LIB+, +PATH+
to run required commands properly from the command line.
diff --git a/win32/configure.bat b/win32/configure.bat
index fa8966e0c9..b141bfc546 100755
--- a/win32/configure.bat
+++ b/win32/configure.bat
@@ -101,8 +101,7 @@ goto :loop ;
:target
echo>> ~tmp~.mak "%~2" \
echo>>confargs.tmp --target=%2 \
- if "%~2" == "x64-mswin64" goto target2
- if NOT "%~2" == "ia64-mswin64" goto target3
+ if NOT "%~2" == "x64-mswin64" goto target3
:target2
echo>> ~tmp~.mak "TARGET_OS=mswin64" \
:target3
diff --git a/win32/setup.mak b/win32/setup.mak
index 043edbeb66..d67b6843a4 100644
--- a/win32/setup.mak
+++ b/win32/setup.mak
@@ -31,7 +31,6 @@ i586-mswin32: -prologue- -i586- -epilogue-
i686-mswin32: -prologue- -i686- -epilogue-
alpha-mswin32: -prologue- -alpha- -epilogue-
x64-mswin64: -prologue- -x64- -epilogue-
-ia64-mswin64: -prologue- -ia64- -epilogue-
-prologue-: -basic-vars-
-generic-: -osname-
@@ -178,8 +177,6 @@ RUBY_SO_NAME = $(RUBY_SO_NAME)
@$(CPP) <<conftest.c 2>nul | findstr = >>$(MAKEFILE)
#if defined _M_X64
MACHINE = x64
-#elif defined _M_IA64
-MACHINE = ia64
#else
MACHINE = x86
#endif
@@ -192,8 +189,6 @@ MACHINE = x86
@echo MACHINE = alpha>>$(MAKEFILE)
-x64-: -osname64-
@echo MACHINE = x64>>$(MAKEFILE)
--ia64-: -osname64-
- @echo MACHINE = ia64>>$(MAKEFILE)
-ix86-: -osname32-
@echo MACHINE = x86>>$(MAKEFILE)