aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2007-07-06 17:00:15 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-07-06 17:00:15 +0000
commite0ff69ab1195bfc3fcc0c5f91cf5fea89acf54ff (patch)
tree8694454d55e417de26e72972c1b19c8b2940888c /gcc/config
parentd6c2c77c91822a5c3c215187d148bbc75d08751b (diff)
downloadgcc-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.md7
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