summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-01-03 10:12:07 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-01-03 10:12:07 +0000
commit31cf6801e8e5f4dc699142b96b6638239bf92796 (patch)
tree450e22a52f09fdb9ff736f6174410ca312ea6637
parent0239882c8147e89ce5b6c6d39786804fb12343ea (diff)
merge revision(s) %s: 33757:33758
* include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code to a separete file sparc.c for preventing inlining optimization. Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685] * sparc.c (rb_sparc_flush_register_windows): ditto. * configure.in: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--configure.in3
-rw-r--r--include/ruby/defines.h17
3 files changed, 12 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 3da13a8e85..c2a7d99e76 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue Jan 3 19:05:42 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
+ to a separete file sparc.c for preventing inlining optimization.
+ Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685]
+ * sparc.c (rb_sparc_flush_register_windows): ditto.
+ * configure.in: ditto.
+
Mon Jan 2 23:52:20 2012 TAKAO Kouji <kouji@takao7.net>
* ext/readline/readline.c (Init_readline): libedit check
diff --git a/configure.in b/configure.in
index 6bcd1e9a74..9c37b914c2 100644
--- a/configure.in
+++ b/configure.in
@@ -1137,7 +1137,8 @@ AS_CASE(["$target_cpu"],
[CFLAGS="-mieee $CFLAGS"],
[osf*], # ccc
[CFLAGS="-ieee $CFLAGS"],
- )])
+ )],
+[sparc*], [AC_LIBOBJ([sparc])])
ac_cv_header_net_socket_h=${ac_cv_header_net_socket_h=no}
if test "$ac_cv_header_net_socket_h" = yes; then
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
index ea38dc3689..8fd09716f1 100644
--- a/include/ruby/defines.h
+++ b/include/ruby/defines.h
@@ -268,21 +268,8 @@ void xfree(void*);
#endif
#if defined(sparc) || defined(__sparc__)
-static inline void
-flush_register_windows(void)
-{
- asm
-#ifdef __GNUC__
- volatile
-#endif
-# if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
- ("flushw")
-# else
- ("ta 0x03")
-# endif /* trap always to flush register windows if we are on a Sparc system */
- ;
-}
-# define FLUSH_REGISTER_WINDOWS flush_register_windows()
+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);