blob: 02c7e18768033b39e5a02798c94fa0e6dc06547f [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 e69de29bb..3a2faca1a 100644
--- /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 2b1e0ac70..461932124 100644
--- a/plat/arm/board/fvp/platform.mk
+++ b/plat/arm/board/fvp/platform.mk
@@ -4,6 +4,8 @@
# SPDX-License-Identifier: BSD-3-Clause
#
+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