summaryrefslogtreecommitdiff
path: root/arch/parisc/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel/entry.S')
-rw-r--r--arch/parisc/kernel/entry.S11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index ecf50159359e..2af27c8b4aa6 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -554,8 +554,9 @@
extrd,s \pte,63,25,\pte
.endm
- /* The alias region is an 8MB aligned 16MB to do clear and
- * copy user pages at addresses congruent with the user
+ /* The alias region is comprised of a pair of 4 MB regions
+ * aligned to 8 MB. It is used to clear/copy/flush user pages
+ * using kernel virtual addresses congruent with the user
* virtual address.
*
* To use the alias page, you set %r26 up with the to TLB
@@ -571,7 +572,7 @@
depdi 0,31,32,\tmp
#endif
copy \va,\tmp1
- depi 0,31,23,\tmp1
+ depi_safe 0,31,TMPALIAS_SIZE_BITS+1,\tmp1
cmpb,COND(<>),n \tmp,\tmp1,\fault
mfctl %cr19,\tmp /* iir */
/* get the opcode (first six bits) into \tmp */
@@ -605,9 +606,9 @@
* Check "subtle" note in pacache.S re: r23/r26.
*/
#ifdef CONFIG_64BIT
- extrd,u,*= \va,41,1,%r0
+ extrd,u,*= \va,63-TMPALIAS_SIZE_BITS,1,%r0
#else
- extrw,u,= \va,9,1,%r0
+ extrw,u,= \va,31-TMPALIAS_SIZE_BITS,1,%r0
#endif
or,COND(tr) %r23,%r0,\pte
or %r26,%r0,\pte