aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRichard Kuo <rkuo@codeaurora.org>2012-10-28 20:54:37 -0400
committerRichard Kuo <rkuo@codeaurora.org>2013-04-30 20:40:24 -0400
commitdb0fe532db3f60c93147514adfd1765894ea501e (patch)
treee938cc1aa7cbad94cafd35504f7792349d687e85 /arch
parent20f704b69af63bffbc8e70bcf21990318a8912f5 (diff)
Hexagon: add support for additional exceptions
Add multi-reg-write and unaligned-PC exceptions. Signed-off-by: Richard Kuo <rkuo@codeaurora.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/hexagon/kernel/traps.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c
index d59ee62f772d..12164a30e8ff 100644
--- a/arch/hexagon/kernel/traps.c
+++ b/arch/hexagon/kernel/traps.c
@@ -65,6 +65,10 @@ static const char *ex_name(int ex)
65 return "Write protection fault"; 65 return "Write protection fault";
66 case HVM_GE_C_XMAL: 66 case HVM_GE_C_XMAL:
67 return "Misaligned instruction"; 67 return "Misaligned instruction";
68 case HVM_GE_C_WREG:
69 return "Multiple writes to same register in packet";
70 case HVM_GE_C_PCAL:
71 return "Program counter values that are not properly aligned";
68 case HVM_GE_C_RMAL: 72 case HVM_GE_C_RMAL:
69 return "Misaligned data load"; 73 return "Misaligned data load";
70 case HVM_GE_C_WMAL: 74 case HVM_GE_C_WMAL:
@@ -324,6 +328,12 @@ void do_genex(struct pt_regs *regs)
324 case HVM_GE_C_XMAL: 328 case HVM_GE_C_XMAL:
325 misaligned_instruction(regs); 329 misaligned_instruction(regs);
326 break; 330 break;
331 case HVM_GE_C_WREG:
332 illegal_instruction(regs);
333 break;
334 case HVM_GE_C_PCAL:
335 misaligned_instruction(regs);
336 break;
327 case HVM_GE_C_RMAL: 337 case HVM_GE_C_RMAL:
328 misaligned_data_load(regs); 338 misaligned_data_load(regs);
329 break; 339 break;