]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARC: Exception Entry tweaks - Avoid full LIMMS for ECR values
authorVineet Gupta <vgupta@synopsys.com>
Tue, 28 May 2013 09:54:30 +0000 (15:24 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Mon, 17 Jun 2013 13:02:20 +0000 (18:32 +0530)
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/include/asm/arcregs.h
arch/arc/kernel/entry.S

index 6addeec34a7c74d3fe9c1f998bff7243defa59a3..122e9af468245111d3a2f84683455de816f097a4 100644 (file)
 #define ECR_C_PROTV_XCHG               0x03
 #define ECR_C_PROTV_MISALIG_DATA       0x04
 
+#define ECR_C_BIT_PROTV_MISALIG_DATA   10
+
+/* Machine Check Cause Code Values */
+#define ECR_C_MCHK_DUP_TLB             0x01
+
 /* DTLB Miss Exception Cause Code Values */
 #define ECR_C_BIT_DTLB_LD_MISS         8
 #define ECR_C_BIT_DTLB_ST_MISS         9
index 53655bf4c9d71b96816d1c17006896a0b9ff0d77..b4a96144430d5d9abaa0b4251f009a2da65e4a8e 100644 (file)
@@ -321,7 +321,10 @@ ARC_ENTRY EV_MachineCheck
        lr  r1, [efa]
        mov r2, sp
 
-       brne    r0, 0x200100, 1f
+       lsr     r3, r0, 8
+       bmsk    r3, r3, 7
+       brne    r3, ECR_C_MCHK_DUP_TLB, 1f
+
        bl      do_tlb_overlap_fault
        b       ret_from_exception
 
@@ -368,11 +371,11 @@ ARC_ENTRY EV_TLBProtV
        ;------ (5) Type of Protection Violation? ----------
        ;
        ; ProtV Hardware Exception is triggered for Access Faults of 2 types
-       ;   -Access Violaton (WRITE to READ ONLY Page) - for linux COW
-       ;   -Unaligned Access (READ/WRITE on odd boundary)
+       ;   -Access Violaton    : 00_23_(00|01|02|03)_00
+       ;                                x  r  w  r+w
+       ;   -Unaligned Access   : 00_23_04_00
        ;
-       cmp r2, 0x230400    ; Misaligned data access ?
-       beq 4f
+       bbit1 r2, ECR_C_BIT_PROTV_MISALIG_DATA, 4f
 
        ;========= (6a) Access Violation Processing ========
        mov r0, sp              ; pt_regs
@@ -542,7 +545,7 @@ ARC_ENTRY EV_Trap
 
        ;------- (4) What caused the Trap --------------
        lr     r12, [ecr]
-       and.f  0, r12, ECR_PARAM_MASK
+       bmsk.f 0, r12, 7
        bnz    trap_with_param
 
        ; ======= (5a) Trap is due to System Call ========