aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-03-27 11:40:27 -0700
committerJeff Law <law@gcc.gnu.org>1993-03-27 11:40:27 -0700
commit0002b1a854d38d9ea0e663ca5ca82c9908e5bb8b (patch)
treef7b275c05418b1bcf6a365a669776a7cd4ba0c8f /gcc
parentf18c8576634a5872b6c18e4f66bcb1acb26eebca (diff)
downloadgcc-0002b1a854d38d9ea0e663ca5ca82c9908e5bb8b.zip
gcc-0002b1a854d38d9ea0e663ca5ca82c9908e5bb8b.tar.gz
gcc-0002b1a854d38d9ea0e663ca5ca82c9908e5bb8b.tar.bz2
* pa.md (cacheflush): New pattern.
From-SVN: r3893
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index ed528b4..97a82f3 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -2897,3 +2897,14 @@
else
return \"fmpysub,sgl %1,%2,%0,%5,%3\";
}")
+
+;; Flush the I and D cache line found at the address in operand 0.
+;; This is used by the trampoline code for nested functions.
+;; So long as the trampoline itself is less than 32 bytes this
+;; is sufficient.
+(define_insn "cacheflush"
+ [(unspec_volatile [(const_int 1)] 0)
+ (use (match_operand:SI 0 "" ""))]
+ ""
+ "fdc %0\;sync\;fic %0\;sync\;nop\;nop\;nop\;nop\;nop\;nop\;nop"
+ [(set_attr "length" "11")])