From: Torbjorn Granlund Date: Wed, 20 Oct 1993 22:10:08 +0000 (+0000) Subject: (cacheflush): Split into dcacheflush and icacheflush. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bdc87462e73937f06523adba73e993a0b11d2a47;p=gcc.git (cacheflush): Split into dcacheflush and icacheflush. Rewrite to use space regs correctly. From-SVN: r5837 --- diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index e3bdef34d9d..cb9247eb388 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -3362,10 +3362,22 @@ ;; 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" + +(define_insn "dcacheflush" [(unspec_volatile [(const_int 1)] 0) (use (mem:SI (match_operand:SI 0 "register_operand" "r"))) (use (mem:SI (match_operand:SI 1 "register_operand" "r")))] "" - "fdc 0(0,%0)\;sync\;fic 0(0,%0)\;sync\;fdc 0(0,%1)\;sync\;fic 0(0,%1)\;sync\;nop\;nop\;nop\;nop\;nop\;nop\;nop" - [(set_attr "length" "60")]) + "fdc 0(0,%0)\;fdc 0(0,%1)\;sync" + [(set_attr "length" "12")]) + +(define_insn "icacheflush" + [(unspec_volatile [(const_int 2)] 0) + (use (mem:SI (match_operand:SI 0 "register_operand" "r"))) + (use (mem:SI (match_operand:SI 1 "register_operand" "r"))) + (use (match_operand:SI 2 "register_operand" "r")) + (clobber (match_operand:SI 3 "register_operand" "=&r")) + (clobber (match_operand:SI 4 "register_operand" "=&r"))] + "" + "mfsp %%sr0,%4\;ldsid (0,%2),%3\;mtsp %3,%%sr0\;fic 0(%%sr0,%0)\;fic 0(%%sr0,%1)\;sync\;mtsp %4,%%sr0\;nop\;nop\;nop\;nop\;nop\;nop" + [(set_attr "length" "52")])