diff options
Diffstat (limited to 'target-alpha')
-rw-r--r-- | target-alpha/op_helper.c | 17 | ||||
-rw-r--r-- | target-alpha/op_helper.h | 6 | ||||
-rw-r--r-- | target-alpha/op_template.h | 8 |
3 files changed, 31 insertions, 0 deletions
diff --git a/target-alpha/op_helper.c b/target-alpha/op_helper.c index 9a3009c4d4..072499e306 100644 --- a/target-alpha/op_helper.c +++ b/target-alpha/op_helper.c @@ -1072,6 +1072,23 @@ void helper_mtpr (int iprn) } #endif +#if defined(HOST_SPARC) || defined(HOST_SPARC64) +void helper_reset_FT0 (void) +{ + FT0 = 0; +} + +void helper_reset_FT1 (void) +{ + FT1 = 0; +} + +void helper_reset_FT2 (void) +{ + FT2 = 0; +} +#endif + /*****************************************************************************/ /* Softmmu support */ #if !defined (CONFIG_USER_ONLY) diff --git a/target-alpha/op_helper.h b/target-alpha/op_helper.h index 0c65fd4a33..7e79720bc1 100644 --- a/target-alpha/op_helper.h +++ b/target-alpha/op_helper.h @@ -138,3 +138,9 @@ void helper_mtpr (int iprn); void helper_ld_phys_to_virt (void); void helper_st_phys_to_virt (void); void helper_tb_flush (void); + +#if defined(HOST_SPARC) || defined(HOST_SPARC64) +void helper_reset_FT0 (void); +void helper_reset_FT1 (void); +void helper_reset_FT2 (void); +#endif diff --git a/target-alpha/op_template.h b/target-alpha/op_template.h index db15bb8912..ab589f21e8 100644 --- a/target-alpha/op_template.h +++ b/target-alpha/op_template.h @@ -26,11 +26,19 @@ void OPPROTO glue(op_reset_T, REG) (void) RETURN(); } +#if !defined(HOST_SPARC) && !defined(HOST_SPARC64) void OPPROTO glue(op_reset_FT, REG) (void) { glue(FT, REG) = 0; RETURN(); } +#else +void OPPROTO glue(op_reset_FT, REG) (void) +{ + glue(helper_reset_FT, REG)(); + RETURN(); +} +#endif /* XXX: This can be great on most RISC machines */ #if !defined(__i386__) && !defined(__x86_64__) |