diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-07-06 17:00:15 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-07-06 17:00:15 +0000 |
commit | e0ff69ab1195bfc3fcc0c5f91cf5fea89acf54ff (patch) | |
tree | 8694454d55e417de26e72972c1b19c8b2940888c /gcc/config | |
parent | d6c2c77c91822a5c3c215187d148bbc75d08751b (diff) | |
download | gcc-e0ff69ab1195bfc3fcc0c5f91cf5fea89acf54ff.zip gcc-e0ff69ab1195bfc3fcc0c5f91cf5fea89acf54ff.tar.gz gcc-e0ff69ab1195bfc3fcc0c5f91cf5fea89acf54ff.tar.bz2 |
sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
gcc/
* config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
(prefetch): Likewise if "pref" would be used.
From-SVN: r126423
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/sh/sh.md | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index f7b179d..e2d144e 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -13565,18 +13565,21 @@ mov.l\\t1f,r0\\n\\ [(prefetch (match_operand:SI 0 "register_operand" "r") (match_operand:SI 1 "const_int_operand" "n") (match_operand:SI 2 "const_int_operand" "n"))] - "TARGET_HARD_SH4 || TARGET_SHCOMPACT" + "(TARGET_HARD_SH4 || TARGET_SHCOMPACT) && !TARGET_VXWORKS_RTP" "* { return \"pref @%0\"; }" [(set_attr "type" "other")]) +;; In user mode, the "pref" instruction will raise a RADDERR exception +;; for accesses to [0x80000000,0xffffffff]. This makes it an unsuitable +;; implementation of __builtin_prefetch for VxWorks RTPs. (define_expand "prefetch" [(prefetch (match_operand 0 "address_operand" "p") (match_operand:SI 1 "const_int_operand" "n") (match_operand:SI 2 "const_int_operand" "n"))] - "TARGET_HARD_SH4 || TARGET_SH5" + "(TARGET_HARD_SH4 || TARGET_SH5) && (TARGET_SHMEDIA || !TARGET_VXWORKS_RTP)" " { if (GET_MODE (operands[0]) != Pmode |