mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-04 04:06:26 +00:00
PARISC: fix crash in flush_icache_page_asm on PA1.1
commit207f583d71
upstream. As pointed out by serveral people, PA1.1 only has a type 26 instruction meaning that the space register must be explicitly encoded. Not giving an explicit space means that the compiler uses the type 24 version which is PA2.0 only resulting in an illegal instruction crash. This regression was caused by commitf311847c2f
Author: James Bottomley <James.Bottomley@HansenPartnership.com> Date: Wed Dec 22 10:22:11 2010 -0600 parisc: flush pages through tmpalias space Reported-by: Helge Deller <deller@gmx.de> Signed-off-by: John David Anglin <dave.anglin@bell.net> Signed-off-by: James Bottomley <JBottomley@Parallels.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
31df6ef255
commit
0e963bc00d
@ -692,7 +692,7 @@ ENTRY(flush_icache_page_asm)
|
||||
|
||||
/* Purge any old translation */
|
||||
|
||||
pitlb (%sr0,%r28)
|
||||
pitlb (%sr4,%r28)
|
||||
|
||||
ldil L%icache_stride, %r1
|
||||
ldw R%icache_stride(%r1), %r1
|
||||
@ -706,27 +706,29 @@ ENTRY(flush_icache_page_asm)
|
||||
sub %r25, %r1, %r25
|
||||
|
||||
|
||||
1: fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%r28)
|
||||
/* 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)
|
||||
cmpb,COND(<<) %r28, %r25,1b
|
||||
fic,m %r1(%r28)
|
||||
fic,m %r1(%sr4,%r28)
|
||||
|
||||
sync
|
||||
bv %r0(%r2)
|
||||
pitlb (%sr0,%r25)
|
||||
pitlb (%sr4,%r25)
|
||||
.exit
|
||||
|
||||
.procend
|
||||
|
Loading…
Reference in New Issue
Block a user