summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon3/startup/bspclean.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/sparc/leon3/startup/bspclean.c')
-rw-r--r--c/src/lib/libbsp/sparc/leon3/startup/bspclean.c83
1 files changed, 0 insertions, 83 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/startup/bspclean.c b/c/src/lib/libbsp/sparc/leon3/startup/bspclean.c
deleted file mode 100644
index eff9c8635b..0000000000
--- a/c/src/lib/libbsp/sparc/leon3/startup/bspclean.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * @file
- * @ingroup sparc_leon3
- * @brief LEON3 BSP fatal extension
- *
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
- *
- * embedded brains GmbH
- * Dornierstr. 4
- * 82178 Puchheim
- * Germany
- * <rtems@embedded-brains.de>
- *
- * COPYRIGHT (c) 2014
- * Aeroflex Gaisler
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#include <bsp.h>
-#include <bsp/bootcard.h>
-#include <rtems/bspIo.h>
-#include <rtems/score/smpimpl.h>
-
-void bsp_fatal_extension(
- rtems_fatal_source source,
- bool always_set_to_false,
- rtems_fatal_code code
-)
-{
- /* On SMP we must wait for all other CPUs not requesting a fatal halt, they
- * are responding to another CPU's fatal request. These CPUs goes into
- * power-down. The CPU requesting fatal halt waits for the others and then
- * handles the system shutdown via the normal procedure.
- */
- #ifdef RTEMS_SMP
- if ((source == RTEMS_FATAL_SOURCE_SMP) &&
- (code == SMP_FATAL_SHUTDOWN_RESPONSE)) {
- leon3_power_down_loop(); /* CPU didn't start shutdown sequence .. */
- } else {
- volatile struct irqmp_regs *irqmp = LEON3_IrqCtrl_Regs;
-
- if (irqmp != NULL) {
- /*
- * Value was choosen to get something in the magnitude of 1ms on a 200MHz
- * processor.
- */
- uint32_t max_wait = 1234567;
- uint32_t self_cpu = rtems_get_current_processor();
- uint32_t cpu_count = rtems_get_processor_count();
- uint32_t halt_mask = 0;
- uint32_t i;
-
- for (i = 0; i < cpu_count; ++i) {
- if ( (i != self_cpu) && _SMP_Should_start_processor( i ) ) {
- halt_mask |= UINT32_C(1) << i;
- }
- }
-
- /* Wait some time for secondary processors to halt */
- i = 0;
- while ((irqmp->mpstat & halt_mask) != halt_mask && i < max_wait) {
- ++i;
- }
- }
- }
- #endif
-
- #if (BSP_PRINT_EXCEPTION_CONTEXT)
- if ( source == RTEMS_FATAL_SOURCE_EXCEPTION ) {
- rtems_exception_frame_print( (const rtems_exception_frame *) code );
- }
- #endif
-
- /*
- * If user wants to implement custom reset/reboot it can be done here
- */
- #if (BSP_RESET_BOARD_AT_EXIT)
- bsp_reset();
- #endif
-}