The comment at the start of pacache.S states that the base and index
registers used for
fdc,fic, and pdc instructions should not use shadowed registers.
Although this is probably
unnecessary for tmpalias flushes, there is also no reason not to
comply. The same
index register (%r23) is used as in other routines.
Signed-off-by: John David Anglin <dave.anglin@xxxxxxxx>
---
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index 36d7f40..5f98abc 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -860,7 +860,7 @@ ENTRY(flush_dcache_page_asm)
#endif
ldil L%dcache_stride, %r1
- ldw R%dcache_stride(%r1), %r1
+ ldw R%dcache_stride(%r1), r23
#ifdef CONFIG_64BIT
depdi,z 1, 63-PAGE_SHIFT,1, %r25
@@ -868,26 +868,26 @@ ENTRY(flush_dcache_page_asm)
depwi,z 1, 31-PAGE_SHIFT,1, %r25
#endif
add %r28, %r25, %r25
- sub %r25, %r1, %r25
-
-
-1: fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
- fdc,m %r1(%r28)
+ sub %r25, r23, %r25
+
+
+1: fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
+ fdc,m r23(%r28)
cmpb,COND(<<) %r28, %r25,1b
- fdc,m %r1(%r28)
+ fdc,m r23(%r28)
sync
@@ -936,7 +936,7 @@ ENTRY(flush_icache_page_asm)
#endif
ldil L%icache_stride, %r1
- ldw R%icache_stride(%r1), %r1
+ ldw R%icache_stride(%r1), %r23
#ifdef CONFIG_64BIT
depdi,z 1, 63-PAGE_SHIFT,1, %r25
@@ -944,28 +944,28 @@ ENTRY(flush_icache_page_asm)
depwi,z 1, 31-PAGE_SHIFT,1, %r25
#endif
add %r28, %r25, %r25
- sub %r25, %r1, %r25
+ sub %r25, %r23, %r25
/* fic only has the type 26 form on PA1.1, requiring an
* explicit space specification, so use %sr4 */
-1: fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
- fic,m %r1(%sr4,%r28)
+1: fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
cmpb,COND(<<) %r28, %r25,1b
- fic,m %r1(%sr4,%r28)
+ fic,m %r23(%sr4,%r28)
sync
--
John David Anglin dave.anglin@xxxxxxxx