blob: 215a0477354c446defa8a52234b4d2b53255d6da [file] [log] [blame]
diff --git a/plat/arm/board/fvp/aarch64/fvp_fault.S b/plat/arm/board/fvp/aarch64/fvp_fault.S
new file mode 100644
index 000000000..f6e6bee1e
--- /dev/null
+++ b/plat/arm/board/fvp/aarch64/fvp_fault.S
@@ -0,0 +1,42 @@
+
+#include <asm_macros.S>
+
+ .globl plat_handle_uncontainable_ea
+
+str_uncontainable:
+ .byte 10 /* Log marker */
+ .asciz "Injected Uncontainable Error\n"
+
+str_double_fault:
+ .byte 10 /* Log marker */
+ .asciz "Injected Double Fault\n"
+
+ /* -----------------------------------------------------
+ * Platform handler for Uncontainable External Abort.
+ *
+ * x0: EA reason
+ * x1: EA syndrome
+ * -----------------------------------------------------
+ */
+func plat_handle_uncontainable_ea
+ adr x0, str_uncontainable
+ bl tf_log
+1:
+ wfe
+ b 1b
+endfunc plat_handle_uncontainable_ea
+
+ /* -----------------------------------------------------
+ * Platform handler for Double Fault.
+ *
+ * x0: EA reason
+ * x1: EA syndrome
+ * -----------------------------------------------------
+ */
+func plat_handle_double_fault
+ adr x0, str_double_fault
+ bl tf_log
+1:
+ wfe
+ b 1b
+endfunc plat_handle_double_fault
diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk
index 0d2c31971..3f90c7ef0 100644
--- a/plat/arm/board/fvp/platform.mk
+++ b/plat/arm/board/fvp/platform.mk
@@ -6,6 +6,8 @@
include common/fdt_wrappers.mk
+BL31_SOURCES += plat/arm/board/fvp/aarch64/fvp_fault.S
+
# Use the GICv3 driver on the FVP by default
FVP_USE_GIC_DRIVER := FVP_GICV3