summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/lib1funcs.asm11
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c77ed73ae86..a5630817fc9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm
index d2a860efb5c..21707587c9e 100644
--- a/gcc/config/sh/lib1funcs.asm
+++ b/gcc/config/sh/lib1funcs.asm
@@ -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 */