aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/utils.c4
-rw-r--r--include/platform.h5
-rw-r--r--platforms/ibm-fsp/apollo.c1
-rw-r--r--platforms/ibm-fsp/firenze.c1
4 files changed, 10 insertions, 1 deletions
diff --git a/core/utils.c b/core/utils.c
index df9a815..5d86ed0 100644
--- a/core/utils.c
+++ b/core/utils.c
@@ -17,6 +17,7 @@
#include <skiboot.h>
#include <lock.h>
#include <fsp.h>
+#include <platform.h>
#include <processor.h>
#include <cpu.h>
#include <stack.h>
@@ -40,7 +41,8 @@ void __noreturn _abort(const char *msg)
prlog(PR_EMERG, "Aborting!\n");
backtrace();
- ibm_fsp_terminate(msg);
+ if (platform.terminate)
+ platform.terminate(msg);
for (;;) ;
}
diff --git a/include/platform.h b/include/platform.h
index 80aa8ba..f1bdc30 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -158,6 +158,11 @@ struct platform {
*/
int64_t (*sensor_read)(uint32_t sensor_hndl, int token,
uint32_t *sensor_data);
+
+ /*
+ * OPAL terminate
+ */
+ void __attribute__((noreturn)) (*terminate)(const char *msg);
};
extern struct platform __platforms_start;
diff --git a/platforms/ibm-fsp/apollo.c b/platforms/ibm-fsp/apollo.c
index be7e6cc..e9616d5 100644
--- a/platforms/ibm-fsp/apollo.c
+++ b/platforms/ibm-fsp/apollo.c
@@ -63,4 +63,5 @@ DECLARE_PLATFORM(apollo) = {
.start_preload_resource = fsp_start_preload_resource,
.resource_loaded = fsp_resource_loaded,
.sensor_read = ibm_fsp_sensor_read,
+ .terminate = ibm_fsp_terminate,
};
diff --git a/platforms/ibm-fsp/firenze.c b/platforms/ibm-fsp/firenze.c
index 4dd07a1..d093802 100644
--- a/platforms/ibm-fsp/firenze.c
+++ b/platforms/ibm-fsp/firenze.c
@@ -556,4 +556,5 @@ DECLARE_PLATFORM(firenze) = {
.start_preload_resource = fsp_start_preload_resource,
.resource_loaded = fsp_resource_loaded,
.sensor_read = ibm_fsp_sensor_read,
+ .terminate = ibm_fsp_terminate,
} ;