summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2013-05-28 15:24:30 +0530
committerVineet Gupta <vgupta@synopsys.com>2013-06-22 19:23:23 +0530
commit1898a959b7512fcf6fa9f436ac8c403fab7255c3 (patch)
treee990d920414c458af317afb08f53c7f9e05404b3 /arch
parent3ebedbb2fdf730b7e5e2417dbd37faee6304bfb5 (diff)
ARC: Entry Handler tweaks: Avoid hardcoded LIMMS for ECR values
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arc/include/asm/arcregs.h5
-rw-r--r--arch/arc/kernel/entry.S15
2 files changed, 14 insertions, 6 deletions
diff --git a/arch/arc/include/asm/arcregs.h b/arch/arc/include/asm/arcregs.h
index 6addeec34a7c..122e9af46824 100644
--- a/arch/arc/include/asm/arcregs.h
+++ b/arch/arc/include/asm/arcregs.h
@@ -68,6 +68,11 @@
#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
diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S
index 53655bf4c9d7..b4a96144430d 100644
--- a/arch/arc/kernel/entry.S
+++ b/arch/arc/kernel/entry.S
@@ -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 ========