OSDN Git Service

* config/sh/lib1funcs.asm (ic_invalidate): Align the
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 3 Jun 2001 22:08:26 +0000 (22:08 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 3 Jun 2001 22:08:26 +0000 (22:08 +0000)
cache-mirroring sequence.  Add nops.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42833 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/lib1funcs.asm

index c77ed73..a563081 100644 (file)
@@ -1,3 +1,8 @@
+2001-06-03  Alexandre Oliva  <aoliva@redhat.com>
+
+       * config/sh/lib1funcs.asm (ic_invalidate): Align the
+       cache-mirroring sequence.  Add nops.
+
 2001-06-03  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * doc/install-old.texi: Remove more old installation
index d2a860e..2170758 100644 (file)
@@ -1217,18 +1217,23 @@ GLOBAL(ic_invalidate):
        ocbwb   @r4
        mova    0f,r0
        mov.w   1f,r1
+/* Compute how many cache lines 0f is away from r4.  */
        sub     r0,r4
        and     r1,r4
-       add     #4,r4
+/* Prepare to branch to 0f plus the cache-line offset.  */
+       add     # 0f - 1f,r4
        braf    r4
        nop
 1:
        .short  0x1fe0
-       nop
+       .p2align 5
+/* This must be aligned to the beginning of a cache line.  */
 0:
-       .rept   2048
+       .rept   256 /* There are 256 cache lines of 32 bytes.  */
        rts
+       .rept   15
        nop
        .endr
+       .endr
 #endif /* SH4 */
 #endif /* L_ic_invalidate */