aboutsummaryrefslogtreecommitdiff
path: root/payloads/libpayload/arch/arm/exception_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'payloads/libpayload/arch/arm/exception_asm.S')
-rw-r--r--payloads/libpayload/arch/arm/exception_asm.S19
1 files changed, 19 insertions, 0 deletions
diff --git a/payloads/libpayload/arch/arm/exception_asm.S b/payloads/libpayload/arch/arm/exception_asm.S
index 974d1724b5..7b722cb86f 100644
--- a/payloads/libpayload/arch/arm/exception_asm.S
+++ b/payloads/libpayload/arch/arm/exception_asm.S
@@ -45,25 +45,44 @@ exception_table:
1:
mov sp, $0
b exception_common
+
+/* Undefined Instruction (CAREFUL: the PC offset is specific to thumb mode!) */
2:
+ sub lr, lr, $2
mov sp, $1
b exception_common
+
+/* Software Interrupt (no PC offset necessary) */
3:
mov sp, $2
b exception_common
+
+/* Prefetch Abort */
4:
+ sub lr, lr, $4
mov sp, $3
b exception_common
+
+/* Data Abort */
5:
+ sub lr, lr, $8
mov sp, $4
b exception_common
+
+/* (not used) */
6:
mov sp, $5
b exception_common
+
+/* Interrupt */
7:
+ sub lr, lr, $4
mov sp, $6
b exception_common
+
+/* Fast Interrupt */
8:
+ sub lr, lr, $4
mov sp, $7
b exception_common