summaryrefslogtreecommitdiff
path: root/gcc/config/sh/sh.h
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2003-04-08 17:31:24 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2003-04-08 17:31:24 +0000
commit36a2dfdb85d3fc67b8d5a4852d0ed01bdec76c1a (patch)
treeadd95cedb7af8f7a17f8f508b45eb61409595cf9 /gcc/config/sh/sh.h
parentfd2d7dfc4f9feda02b1e33c677b2add5dde2613c (diff)
downloadgcc-36a2dfdb85d3fc67b8d5a4852d0ed01bdec76c1a.tar.gz
* sh.h (NORMAL_MODE): If interrupt handler and TARGET_FMOVD,
this is FP_MODE_DOUBLE . * sh.c (ra.h): #include. (push_regs): Add second parameter. Changed all callers. If necessary, set fpscr before saving floating point registers. (calc_live_regs): If interrupt handler and TARGET_FMOVD, always do saves / restores with SZ == 1. (sh_expand_prologue): If interrupt handler, don't use gen_toggle_sz. (sh_expand_epilogue): Likewise. For TARGET_FMOVD, if floating point registers are being restored, restore FPSCR only after restoring them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65379 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sh/sh.h')
-rw-r--r--gcc/config/sh/sh.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 1b2f3816e1c..35fa7c6a157 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -3292,7 +3292,8 @@ extern int rtx_equal_function_value_matters;
(TARGET_FPU_SINGLE ? FP_MODE_SINGLE : FP_MODE_DOUBLE)
#define NORMAL_MODE(ENTITY) \
- (sh_cfun_interrupt_handler_p () ? FP_MODE_NONE \
+ (sh_cfun_interrupt_handler_p () \
+ ? (TARGET_FMOVD ? FP_MODE_DOUBLE : FP_MODE_NONE) \
: ACTUAL_NORMAL_MODE (ENTITY))
#define EPILOGUE_USES(REGNO) ((TARGET_SH2E || TARGET_SH4) \