diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-07-02 09:10:06 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-07-02 09:10:06 +0000 |
commit | 179a0025aad232bc821bc21c2bc3ea052ada402c (patch) | |
tree | b6a81cfe29399ed1c10198b66232176889d13d6c | |
parent | 1453dc92e4934bdc85b0759a98ee99fba1ab9fb2 (diff) | |
download | ruby-179a0025aad232bc821bc21c2bc3ea052ada402c.tar.gz |
* defines.h (FLUSH_REGISTER_WINDOWS): defined for IA64.
(flush_register_windows): declare flush_register_windows.
* eval.c (flush_register_windows): new function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | defines.h | 7 | ||||
-rw-r--r-- | eval.c | 10 |
3 files changed, 24 insertions, 0 deletions
@@ -1,3 +1,10 @@ +Sat Jul 2 17:06:23 2005 Tanaka Akira <akr@m17n.org> + + * defines.h (FLUSH_REGISTER_WINDOWS): defined for IA64. + (flush_register_windows): declare flush_register_windows. + + * eval.c (flush_register_windows): new function. + Fri Jul 1 17:48:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org> * bignum.c (get2comp): revert all prior changes, and calculate @@ -224,6 +224,13 @@ flush_register_windows(void) ; } # define FLUSH_REGISTER_WINDOWS flush_register_windows() +#elif defined(__ia64__) +void flush_register_windows(void) +# if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3 +__attribute__ ((noinline)) +# endif + ; +# define FLUSH_REGISTER_WINDOWS flush_register_windows() #else # define FLUSH_REGISTER_WINDOWS ((void)0) #endif @@ -12823,3 +12823,13 @@ rb_throw(tag, val) argv[1] = val; rb_f_throw(2, argv); } + +/* flush_register_windows must not be inlined because flushrs doesn't flush + * current frame in register stack. */ +#ifdef __ia64__ +void flush_register_windows(void) +{ + __asm__ ("flushrs"); +} +#endif + |