Remove IA64 support.
This commit is contained in:
parent
40f8c82b96
commit
d17344cfc5
@ -917,8 +917,6 @@ strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
|
|||||||
strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
|
strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
|
||||||
strstr.$(OBJEXT): {$(VPATH)}strstr.c
|
strstr.$(OBJEXT): {$(VPATH)}strstr.c
|
||||||
nt.$(OBJEXT): {$(VPATH)}nt.c
|
nt.$(OBJEXT): {$(VPATH)}nt.c
|
||||||
ia64.$(OBJEXT): {$(VPATH)}ia64.s
|
|
||||||
$(CC) $(CFLAGS) -c $<
|
|
||||||
.coroutine_obj $(COROUTINE_OBJ): \
|
.coroutine_obj $(COROUTINE_OBJ): \
|
||||||
{$(VPATH)}$(COROUTINE_H:.h=).$(ASMEXT) \
|
{$(VPATH)}$(COROUTINE_H:.h=).$(ASMEXT) \
|
||||||
$(COROUTINE_H:/Context.h=/.time)
|
$(COROUTINE_H:/Context.h=/.time)
|
||||||
|
33
configure.ac
33
configure.ac
@ -1687,24 +1687,6 @@ AS_IF([test "x$ALLOCA" = "x"], [
|
|||||||
])
|
])
|
||||||
AC_FUNC_MEMCMP
|
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*],[
|
AS_CASE(["$target_os"],[freebsd*],[
|
||||||
AC_DEFINE(BROKEN_CLOSE)
|
AC_DEFINE(BROKEN_CLOSE)
|
||||||
AC_REPLACE_FUNCS(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_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
|
||||||
[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
|
[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
|
||||||
rb_cv_rshift_sign=yes,
|
rb_cv_rshift_sign=yes,
|
||||||
|
93
cont.c
93
cont.c
@ -61,10 +61,6 @@
|
|||||||
/* On Solaris because resuming any Fiber caused SEGV, for some reason.
|
/* On Solaris because resuming any Fiber caused SEGV, for some reason.
|
||||||
*/
|
*/
|
||||||
# define FIBER_USE_NATIVE 0
|
# 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__)
|
# elif defined(__GNU__)
|
||||||
/* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext
|
/* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext
|
||||||
* and swapcontext functions. Disabling their usage till support is
|
* and swapcontext functions. Disabling their usage till support is
|
||||||
@ -121,11 +117,6 @@ typedef struct rb_context_struct {
|
|||||||
VALUE *stack;
|
VALUE *stack;
|
||||||
VALUE *stack_src;
|
VALUE *stack_src;
|
||||||
size_t stack_size;
|
size_t stack_size;
|
||||||
#ifdef __ia64
|
|
||||||
VALUE *register_stack;
|
|
||||||
VALUE *register_stack_src;
|
|
||||||
int register_stack_size;
|
|
||||||
#endif
|
|
||||||
} machine;
|
} machine;
|
||||||
rb_execution_context_t saved_ec;
|
rb_execution_context_t saved_ec;
|
||||||
int free_vm_stack;
|
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");
|
RUBY_MARK_LEAVE("cont");
|
||||||
}
|
}
|
||||||
@ -452,9 +437,6 @@ cont_free(void *ptr)
|
|||||||
#else /* not FIBER_USE_NATIVE */
|
#else /* not FIBER_USE_NATIVE */
|
||||||
ruby_xfree(cont->ensure_array);
|
ruby_xfree(cont->ensure_array);
|
||||||
RUBY_FREE_UNLESS_NULL(cont->machine.stack);
|
RUBY_FREE_UNLESS_NULL(cont->machine.stack);
|
||||||
#endif
|
|
||||||
#ifdef __ia64
|
|
||||||
RUBY_FREE_UNLESS_NULL(cont->machine.register_stack);
|
|
||||||
#endif
|
#endif
|
||||||
RUBY_FREE_UNLESS_NULL(cont->saved_vm_stack.ptr);
|
RUBY_FREE_UNLESS_NULL(cont->saved_vm_stack.ptr);
|
||||||
|
|
||||||
@ -485,11 +467,7 @@ cont_memsize(const void *ptr)
|
|||||||
if (cont->machine.stack) {
|
if (cont->machine.stack) {
|
||||||
size += cont->machine.stack_size * sizeof(*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;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,9 +576,6 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
|
|||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
|
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) {
|
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;
|
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;
|
FLUSH_REGISTER_WINDOWS;
|
||||||
MEMCPY(cont->machine.stack, cont->machine.stack_src, VALUE, size);
|
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 = {
|
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 */
|
/* saved_ec->machine.stack_end should be NULL */
|
||||||
/* because it may happen GC afterward */
|
/* because it may happen GC afterward */
|
||||||
sec->machine.stack_end = NULL;
|
sec->machine.stack_end = NULL;
|
||||||
|
|
||||||
#ifdef __ia64
|
|
||||||
sec->machine.register_stack_end = NULL;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
|
||||||
sec->machine.stack_maxsize = size - RB_PAGE_SIZE;
|
sec->machine.stack_maxsize = size - RB_PAGE_SIZE;
|
||||||
#endif
|
#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));
|
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);
|
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);
|
ruby_longjmp(cont->jmpbuf, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
NORETURN(NOINLINE(static void cont_restore_0(rb_context_t *, VALUE *)));
|
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
|
static void
|
||||||
cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
|
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);
|
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
|
* Document-class: Continuation
|
||||||
|
4
dln.c
4
dln.c
@ -1171,7 +1171,7 @@ dln_strerror(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_AIX) && ! defined(_IA64)
|
#if defined(_AIX)
|
||||||
static void
|
static void
|
||||||
aix_loaderror(const char *pathname)
|
aix_loaderror(const char *pathname)
|
||||||
{
|
{
|
||||||
@ -1400,7 +1400,7 @@ dln_load(const char *file)
|
|||||||
}
|
}
|
||||||
#endif /* hpux */
|
#endif /* hpux */
|
||||||
|
|
||||||
#if defined(_AIX) && ! defined(_IA64)
|
#if defined(_AIX)
|
||||||
#define DLN_DEFINED
|
#define DLN_DEFINED
|
||||||
{
|
{
|
||||||
void (*init_fct)();
|
void (*init_fct)();
|
||||||
|
@ -754,9 +754,6 @@ etc_uname(VALUE obj)
|
|||||||
# ifndef PROCESSOR_ARCHITECTURE_AMD64
|
# ifndef PROCESSOR_ARCHITECTURE_AMD64
|
||||||
# define PROCESSOR_ARCHITECTURE_AMD64 9
|
# define PROCESSOR_ARCHITECTURE_AMD64 9
|
||||||
# endif
|
# endif
|
||||||
# ifndef PROCESSOR_ARCHITECTURE_IA64
|
|
||||||
# define PROCESSOR_ARCHITECTURE_IA64 6
|
|
||||||
# endif
|
|
||||||
# ifndef PROCESSOR_ARCHITECTURE_INTEL
|
# ifndef PROCESSOR_ARCHITECTURE_INTEL
|
||||||
# define PROCESSOR_ARCHITECTURE_INTEL 0
|
# define PROCESSOR_ARCHITECTURE_INTEL 0
|
||||||
# endif
|
# endif
|
||||||
@ -768,9 +765,6 @@ etc_uname(VALUE obj)
|
|||||||
case PROCESSOR_ARCHITECTURE_ARM:
|
case PROCESSOR_ARCHITECTURE_ARM:
|
||||||
mach = "ARM";
|
mach = "ARM";
|
||||||
break;
|
break;
|
||||||
case PROCESSOR_ARCHITECTURE_IA64:
|
|
||||||
mach = "IA64";
|
|
||||||
break;
|
|
||||||
case PROCESSOR_ARCHITECTURE_INTEL:
|
case PROCESSOR_ARCHITECTURE_INTEL:
|
||||||
mach = "x86";
|
mach = "x86";
|
||||||
break;
|
break;
|
||||||
|
25
gc.c
25
gc.c
@ -4324,11 +4324,7 @@ init_mark_stack(mark_stack_t *stack)
|
|||||||
|
|
||||||
/* Marking */
|
/* 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)
|
#define SET_STACK_END SET_MACHINE_STACK_END(&ec->machine.stack_end)
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STACK_START (ec->machine.stack_start)
|
#define STACK_START (ec->machine.stack_start)
|
||||||
#define STACK_END (ec->machine.stack_end)
|
#define STACK_END (ec->machine.stack_end)
|
||||||
@ -4384,12 +4380,7 @@ stack_check(rb_execution_context_t *ec, int water_mark)
|
|||||||
int ret;
|
int ret;
|
||||||
SET_STACK_END;
|
SET_STACK_END;
|
||||||
ret = STACK_LENGTH > STACK_LEVEL_MAX - water_mark;
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
#else
|
#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);
|
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__)
|
#if defined(__mc68000__)
|
||||||
gc_mark_locations(objspace,
|
gc_mark_locations(objspace,
|
||||||
(VALUE*)((char*)stack_start + 2),
|
(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:
|
* call-seq:
|
||||||
* GC.start -> nil
|
* GC.start -> nil
|
||||||
|
42
ia64.S
42
ia64.S
@ -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)"
|
|
@ -401,10 +401,6 @@ ruby_xrealloc2_with_location(void *ptr, size_t s1, size_t s2, const char *file,
|
|||||||
#if defined(__sparc)
|
#if defined(__sparc)
|
||||||
void rb_sparc_flush_register_windows(void);
|
void rb_sparc_flush_register_windows(void);
|
||||||
# define FLUSH_REGISTER_WINDOWS rb_sparc_flush_register_windows()
|
# 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
|
#else
|
||||||
# define FLUSH_REGISTER_WINDOWS ((void)0)
|
# define FLUSH_REGISTER_WINDOWS ((void)0)
|
||||||
#endif
|
#endif
|
||||||
|
@ -2669,13 +2669,7 @@ void ruby_show_copyright(void);
|
|||||||
ruby_init_stack(&variable_in_this_stack_frame);
|
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*);
|
void ruby_init_stack(volatile VALUE*);
|
||||||
#endif
|
|
||||||
#define Init_stack(addr) ruby_init_stack(addr)
|
|
||||||
|
|
||||||
int ruby_setup(void);
|
int ruby_setup(void);
|
||||||
int ruby_cleanup(volatile int);
|
int ruby_cleanup(volatile int);
|
||||||
|
22
thread.c
22
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);
|
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);
|
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) \
|
#define RB_GC_SAVE_MACHINE_CONTEXT(th) \
|
||||||
do { \
|
do { \
|
||||||
FLUSH_REGISTER_WINDOWS; \
|
FLUSH_REGISTER_WINDOWS; \
|
||||||
RB_GC_SAVE_MACHINE_REGISTER_STACK(th); \
|
|
||||||
setjmp((th)->ec->machine.regs); \
|
setjmp((th)->ec->machine.regs); \
|
||||||
SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \
|
SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \
|
||||||
} while (0)
|
} while (0)
|
||||||
@ -332,11 +325,7 @@ rb_thread_s_debug_set(VALUE self, VALUE val)
|
|||||||
# define PRI_THREAD_ID "p"
|
# define PRI_THREAD_ID "p"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __ia64
|
NOINLINE(static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start));
|
||||||
#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));
|
|
||||||
static void timer_thread_function(void);
|
static void timer_thread_function(void);
|
||||||
void ruby_sigchld_handler(rb_vm_t *); /* signal.c */
|
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;
|
rb_thread_t *th = th_ptr;
|
||||||
th->status = THREAD_KILLED;
|
th->status = THREAD_KILLED;
|
||||||
th->ec->machine.stack_start = th->ec->machine.stack_end = NULL;
|
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
|
static void
|
||||||
@ -713,7 +699,7 @@ rb_vm_push_frame(rb_execution_context_t *sec,
|
|||||||
int stack_max);
|
int stack_max);
|
||||||
|
|
||||||
static int
|
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;
|
STACK_GROW_DIR_DETECTION;
|
||||||
enum ruby_tag_type state;
|
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_start = STACK_DIR_UPPER(vm_stack + size, vm_stack);
|
||||||
th->ec->machine.stack_maxsize -= size * sizeof(VALUE);
|
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);
|
thread_debug("thread start: %p\n", (void *)th);
|
||||||
|
|
||||||
gvl_acquire(th->vm, th);
|
gvl_acquire(th->vm, th);
|
||||||
|
@ -647,51 +647,6 @@ size_t pthread_get_stacksize_np(pthread_t);
|
|||||||
#define STACKADDR_AVAILABLE 1
|
#define STACKADDR_AVAILABLE 1
|
||||||
#elif defined __HAIKU__
|
#elif defined __HAIKU__
|
||||||
#define STACKADDR_AVAILABLE 1
|
#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
|
#endif
|
||||||
|
|
||||||
#ifndef MAINSTACKADDR_AVAILABLE
|
#ifndef MAINSTACKADDR_AVAILABLE
|
||||||
@ -791,9 +746,6 @@ static struct {
|
|||||||
rb_nativethread_id_t id;
|
rb_nativethread_id_t id;
|
||||||
size_t stack_maxsize;
|
size_t stack_maxsize;
|
||||||
VALUE *stack_start;
|
VALUE *stack_start;
|
||||||
#ifdef __ia64
|
|
||||||
VALUE *register_stack_start;
|
|
||||||
#endif
|
|
||||||
} native_main_thread;
|
} native_main_thread;
|
||||||
|
|
||||||
#ifdef STACK_END_ADDRESS
|
#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.
|
* You must call this function before any heap allocation by Ruby implementation.
|
||||||
* Or GC will break living objects */
|
* Or GC will break living objects */
|
||||||
void
|
void
|
||||||
ruby_init_stack(volatile VALUE *addr
|
ruby_init_stack(volatile VALUE *addr)
|
||||||
#ifdef __ia64
|
|
||||||
, void *bsp
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
native_main_thread.id = pthread_self();
|
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 MAINSTACKADDR_AVAILABLE
|
||||||
if (native_main_thread.stack_maxsize) return;
|
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");
|
rb_raise(rb_eNotImpError, "ruby engine can initialize only in the main thread");
|
||||||
#endif
|
#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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1027,9 +966,9 @@ thread_start_func_1(void *th_ptr)
|
|||||||
native_thread_init(th);
|
native_thread_init(th);
|
||||||
/* run */
|
/* run */
|
||||||
#if defined USE_NATIVE_THREAD_INIT
|
#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
|
#else
|
||||||
thread_start_func_2(th, &stack_start, rb_ia64_bsp());
|
thread_start_func_2(th, &stack_start);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if USE_THREAD_CACHE
|
#if USE_THREAD_CACHE
|
||||||
@ -1161,10 +1100,6 @@ native_thread_create(rb_thread_t *th)
|
|||||||
const size_t space = space_size(stack_size);
|
const size_t space = space_size(stack_size);
|
||||||
|
|
||||||
th->ec->machine.stack_maxsize = stack_size - space;
|
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));
|
CHECK_ERR(pthread_attr_init(&attr));
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ thread_start_func_1(void *th_ptr)
|
|||||||
thread_debug("thread created (th: %p, thid: %p, event: %p)\n", th,
|
thread_debug("thread created (th: %p, thid: %p, event: %p)\n", th,
|
||||||
th->thread_id, th->native_thread_data.interrupt_event);
|
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);
|
w32_close_handle(thread_id);
|
||||||
thread_debug("thread deleted (th: %p)\n", th);
|
thread_debug("thread deleted (th: %p)\n", th);
|
||||||
|
@ -3,7 +3,7 @@ AC_DEFUN([RUBY_STACK_GROW_DIRECTION], [
|
|||||||
AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1])
|
AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1])
|
||||||
AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [
|
AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [
|
||||||
AS_CASE(["$1"],
|
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],
|
[hppa*], [ $2=+1],
|
||||||
[
|
[
|
||||||
AC_TRY_RUN([
|
AC_TRY_RUN([
|
||||||
|
3
vm.c
3
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 VALUE *rb_gc_stack_start;
|
||||||
extern size_t rb_gc_stack_maxsize;
|
extern size_t rb_gc_stack_maxsize;
|
||||||
#ifdef __ia64
|
|
||||||
extern VALUE *rb_gc_register_stack_start;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* debug functions */
|
/* debug functions */
|
||||||
|
|
||||||
|
@ -894,11 +894,6 @@ typedef struct rb_execution_context_struct {
|
|||||||
VALUE *stack_start;
|
VALUE *stack_start;
|
||||||
VALUE *stack_end;
|
VALUE *stack_end;
|
||||||
size_t stack_maxsize;
|
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;
|
RUBY_ALIGNAS(SIZEOF_VALUE) jmp_buf regs;
|
||||||
} machine;
|
} machine;
|
||||||
} rb_execution_context_t;
|
} rb_execution_context_t;
|
||||||
|
@ -649,14 +649,6 @@ dump_thread(void *arg)
|
|||||||
frame.AddrFrame.Offset = context.Rbp;
|
frame.AddrFrame.Offset = context.Rbp;
|
||||||
frame.AddrStack.Mode = AddrModeFlat;
|
frame.AddrStack.Mode = AddrModeFlat;
|
||||||
frame.AddrStack.Offset = context.Rsp;
|
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 */
|
#else /* i386 */
|
||||||
mac = IMAGE_FILE_MACHINE_I386;
|
mac = IMAGE_FILE_MACHINE_I386;
|
||||||
frame.AddrPC.Mode = AddrModeFlat;
|
frame.AddrPC.Mode = AddrModeFlat;
|
||||||
|
@ -399,7 +399,7 @@ RUBY = ruby
|
|||||||
DTRACE_EXT = dmyh
|
DTRACE_EXT = dmyh
|
||||||
|
|
||||||
!if !defined(STACK)
|
!if !defined(STACK)
|
||||||
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
!if "$(ARCH)" == "x64"
|
||||||
STACK = 0x400000
|
STACK = 0x400000
|
||||||
!else
|
!else
|
||||||
STACK = 0x200000
|
STACK = 0x200000
|
||||||
@ -646,7 +646,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
|
|||||||
!else
|
!else
|
||||||
#define SIZEOF_OFF_T 4
|
#define SIZEOF_OFF_T 4
|
||||||
!endif
|
!endif
|
||||||
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
!if "$(ARCH)" == "x64"
|
||||||
#define SIZEOF_VOIDP 8
|
#define SIZEOF_VOIDP 8
|
||||||
!else
|
!else
|
||||||
#define SIZEOF_VOIDP 4
|
#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 NUM2CLOCKID(v) NUM2INT(v)
|
||||||
#define SIZEOF_CLOCK_T 4
|
#define SIZEOF_CLOCK_T 4
|
||||||
#define SIZEOF_RLIM_T 0
|
#define SIZEOF_RLIM_T 0
|
||||||
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
!if "$(ARCH)" == "x64"
|
||||||
#define SIZEOF_SIZE_T 8
|
#define SIZEOF_SIZE_T 8
|
||||||
#define SIZEOF_PTRDIFF_T 8
|
#define SIZEOF_PTRDIFF_T 8
|
||||||
#define SIZEOF_INTPTR_T 8
|
#define SIZEOF_INTPTR_T 8
|
||||||
@ -712,7 +712,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
|
|||||||
!else
|
!else
|
||||||
#define PACKED_STRUCT(x) x
|
#define PACKED_STRUCT(x) x
|
||||||
!endif
|
!endif
|
||||||
!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64"
|
||||||
#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
|
#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
|
||||||
!else
|
!else
|
||||||
#define PACKED_STRUCT_UNALIGNED(x) x
|
#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_INTPTR_T 1
|
||||||
#define HAVE_UINTPTR_T 1
|
#define HAVE_UINTPTR_T 1
|
||||||
#define HAVE_SSIZE_T 1
|
#define HAVE_SSIZE_T 1
|
||||||
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
!if "$(ARCH)" == "x64"
|
||||||
#define ssize_t __int64
|
#define ssize_t __int64
|
||||||
#define PRI_PTR_PREFIX "I64"
|
#define PRI_PTR_PREFIX "I64"
|
||||||
!else
|
!else
|
||||||
@ -868,7 +868,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
|
|||||||
#define restrict /* not supported */
|
#define restrict /* not supported */
|
||||||
!endif
|
!endif
|
||||||
#define NEED_IO_SEEK_BETWEEN_RW 1
|
#define NEED_IO_SEEK_BETWEEN_RW 1
|
||||||
!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64"
|
||||||
#define STACK_GROW_DIRECTION -1
|
#define STACK_GROW_DIRECTION -1
|
||||||
!endif
|
!endif
|
||||||
!if "$(COROUTINE_OBJ)" != ""
|
!if "$(COROUTINE_OBJ)" != ""
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
2. Visual C++ 12.0 (2013) or later.
|
2. Visual C++ 12.0 (2013) or later.
|
||||||
|
|
||||||
[Note] if you want to build x64 or ia64 version, use native compiler for
|
[Note] if you want to build x64 version, use native compiler for
|
||||||
x64/ia64.
|
x64.
|
||||||
|
|
||||||
3. Please set environment variable +INCLUDE+, +LIB+, +PATH+
|
3. Please set environment variable +INCLUDE+, +LIB+, +PATH+
|
||||||
to run required commands properly from the command line.
|
to run required commands properly from the command line.
|
||||||
|
@ -101,8 +101,7 @@ goto :loop ;
|
|||||||
:target
|
:target
|
||||||
echo>> ~tmp~.mak "%~2" \
|
echo>> ~tmp~.mak "%~2" \
|
||||||
echo>>confargs.tmp --target=%2 \
|
echo>>confargs.tmp --target=%2 \
|
||||||
if "%~2" == "x64-mswin64" goto target2
|
if NOT "%~2" == "x64-mswin64" goto target3
|
||||||
if NOT "%~2" == "ia64-mswin64" goto target3
|
|
||||||
:target2
|
:target2
|
||||||
echo>> ~tmp~.mak "TARGET_OS=mswin64" \
|
echo>> ~tmp~.mak "TARGET_OS=mswin64" \
|
||||||
:target3
|
:target3
|
||||||
|
@ -31,7 +31,6 @@ i586-mswin32: -prologue- -i586- -epilogue-
|
|||||||
i686-mswin32: -prologue- -i686- -epilogue-
|
i686-mswin32: -prologue- -i686- -epilogue-
|
||||||
alpha-mswin32: -prologue- -alpha- -epilogue-
|
alpha-mswin32: -prologue- -alpha- -epilogue-
|
||||||
x64-mswin64: -prologue- -x64- -epilogue-
|
x64-mswin64: -prologue- -x64- -epilogue-
|
||||||
ia64-mswin64: -prologue- -ia64- -epilogue-
|
|
||||||
|
|
||||||
-prologue-: -basic-vars-
|
-prologue-: -basic-vars-
|
||||||
-generic-: -osname-
|
-generic-: -osname-
|
||||||
@ -178,8 +177,6 @@ RUBY_SO_NAME = $(RUBY_SO_NAME)
|
|||||||
@$(CPP) <<conftest.c 2>nul | findstr = >>$(MAKEFILE)
|
@$(CPP) <<conftest.c 2>nul | findstr = >>$(MAKEFILE)
|
||||||
#if defined _M_X64
|
#if defined _M_X64
|
||||||
MACHINE = x64
|
MACHINE = x64
|
||||||
#elif defined _M_IA64
|
|
||||||
MACHINE = ia64
|
|
||||||
#else
|
#else
|
||||||
MACHINE = x86
|
MACHINE = x86
|
||||||
#endif
|
#endif
|
||||||
@ -192,8 +189,6 @@ MACHINE = x86
|
|||||||
@echo MACHINE = alpha>>$(MAKEFILE)
|
@echo MACHINE = alpha>>$(MAKEFILE)
|
||||||
-x64-: -osname64-
|
-x64-: -osname64-
|
||||||
@echo MACHINE = x64>>$(MAKEFILE)
|
@echo MACHINE = x64>>$(MAKEFILE)
|
||||||
-ia64-: -osname64-
|
|
||||||
@echo MACHINE = ia64>>$(MAKEFILE)
|
|
||||||
-ix86-: -osname32-
|
-ix86-: -osname32-
|
||||||
@echo MACHINE = x86>>$(MAKEFILE)
|
@echo MACHINE = x86>>$(MAKEFILE)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user