Merge tag 'parisc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6
[linux-flexiantxendom0-3.2.10.git] / arch / parisc / kernel / entry.S
index e8c119b..5350342 100644 (file)
 
        /* Register definitions for tlb miss handler macros */
 
-       va  = r8        /* virtual address for which the trap occured */
-       spc = r24       /* space for which the trap occured */
+       va  = r8        /* virtual address for which the trap occurred */
+       spc = r24       /* space for which the trap occurred */
 
 #ifndef CONFIG_64BIT
 
         */
        cmpiclr,=       0x01,\tmp,%r0
        ldi             (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot
+#ifdef CONFIG_64BIT
        depd,z          \prot,8,7,\prot
+#else
+       depw,z          \prot,8,7,\prot
+#endif
        /*
         * OK, it is in the temp alias region, check whether "from" or "to".
         * Check "subtle" note in pacache.S re: r23/r26.
@@ -692,6 +696,9 @@ ENTRY(fault_vector_11)
 END(fault_vector_11)
 
 #endif
+       /* Fault vector is separately protected and *must* be on its own page */
+       .align          PAGE_SIZE
+ENTRY(end_fault_vector)
 
        .import         handle_interruption,code
        .import         do_cpu_irq_mask,code
@@ -882,7 +889,7 @@ ENTRY(syscall_exit_rfi)
         * (we don't store them in the sigcontext), so set them
         * to "proper" values now (otherwise we'll wind up restoring
         * whatever was last stored in the task structure, which might
-        * be inconsistent if an interrupt occured while on the gateway
+        * be inconsistent if an interrupt occurred while on the gateway
         * page). Note that we may be "trashing" values the user put in
         * them, but we don't support the user changing them.
         */
@@ -1156,11 +1163,11 @@ ENDPROC(intr_save)
         */
 
        t0 = r1         /* temporary register 0 */
-       va = r8         /* virtual address for which the trap occured */
+       va = r8         /* virtual address for which the trap occurred */
        t1 = r9         /* temporary register 1 */
        pte  = r16      /* pte/phys page # */
        prot = r17      /* prot bits */
-       spc  = r24      /* space for which the trap occured */
+       spc  = r24      /* space for which the trap occurred */
        ptp = r25       /* page directory/page table pointer */
 
 #ifdef CONFIG_64BIT
@@ -1206,23 +1213,7 @@ nadtlb_miss_20w:
        nop
 
 nadtlb_check_alias_20w:
-       do_alias        spc,t0,t1,va,pte,prot,nadtlb_check_flush_20w
-
-       idtlbt          pte,prot
-
-       rfir
-       nop
-
-nadtlb_check_flush_20w:
-       bb,>=,n          pte,_PAGE_FLUSH_BIT,nadtlb_emulate
-
-       /* Insert a "flush only" translation */
-
-       depdi,z         7,7,3,prot
-       depdi           1,10,1,prot
-
-       /* Drop prot bits from pte and convert to page addr for idtlbt */
-       convert_for_tlb_insert20 pte
+       do_alias        spc,t0,t1,va,pte,prot,nadtlb_emulate
 
        idtlbt          pte,prot
 
@@ -1286,7 +1277,7 @@ nadtlb_miss_11:
        nop
 
 nadtlb_check_alias_11:
-       do_alias        spc,t0,t1,va,pte,prot,nadtlb_check_flush_11
+       do_alias        spc,t0,t1,va,pte,prot,nadtlb_emulate
 
        idtlba          pte,(va)
        idtlbp          prot,(va)
@@ -1294,30 +1285,6 @@ nadtlb_check_alias_11:
        rfir
        nop
 
-nadtlb_check_flush_11:
-       bb,>=,n          pte,_PAGE_FLUSH_BIT,nadtlb_emulate
-
-       /* Insert a "flush only" translation */
-
-       zdepi           7,7,3,prot
-       depi            1,10,1,prot
-
-       /* Get rid of prot bits and convert to page addr for idtlba */
-
-       depi            0,31,ASM_PFN_PTE_SHIFT,pte
-       SHRREG          pte,(ASM_PFN_PTE_SHIFT-(31-26)),pte
-
-       mfsp            %sr1,t0  /* Save sr1 so we can use it in tlb inserts */
-       mtsp            spc,%sr1
-
-       idtlba          pte,(%sr1,va)
-       idtlbp          prot,(%sr1,va)
-
-       mtsp            t0, %sr1        /* Restore sr1 */
-
-       rfir
-       nop
-
 dtlb_miss_20:
        space_adjust    spc,va,t0
        get_pgd         spc,ptp
@@ -1363,28 +1330,13 @@ nadtlb_miss_20:
        nop
 
 nadtlb_check_alias_20:
-       do_alias        spc,t0,t1,va,pte,prot,nadtlb_check_flush_20
+       do_alias        spc,t0,t1,va,pte,prot,nadtlb_emulate
 
        idtlbt          pte,prot
 
        rfir
        nop
 
-nadtlb_check_flush_20:
-       bb,>=,n          pte,_PAGE_FLUSH_BIT,nadtlb_emulate
-
-       /* Insert a "flush only" translation */
-
-       depdi,z         7,7,3,prot
-       depdi           1,10,1,prot
-
-       /* Drop prot bits from pte and convert to page addr for idtlbt */
-       convert_for_tlb_insert20 pte
-
-       idtlbt          pte,prot
-
-       rfir
-       nop
 #endif
 
 nadtlb_emulate: