score: Move SMP interrupt stack initialization

Move SMP interrupt stack initialization for secondary processors from
_SMP_Handler_initialize() to _ISR_Handler_initialization() to avoid code
duplication.  Apply _CPU_Interrupt_stack_setup() to all interrupt
stacks.
powerpc: Change interrupt disable implemetation

Instead of SPRG0 (= special purpose register 272) use the new global
symbol _PPC_INTERRUPT_DISABLE_MASK to store the interrupt disable mask.
The benefit is that it is now possible to disable interrupts without
further run-time initialization in boot_card().

At least on Freescale e500 cores this leads also to a faster execution
since the mfmsr and mfspr instruction require four cycles to complete.
The instructions to load the mask value can execute while the mfmsr is
in progress.
score: Add SYSTEM_STATE_TERMINATED

Merge systems states SYSTEM_STATE_SHUTDOWN and SYSTEM_STATE_FAILED into
new system state SYSTEM_STATE_TERMINATED.  This reflects that all system
termination paths end up in _Internal_error_Occurred().
score: Delete _Thread_BSP_context

Do not return to BSP context in the exit() shutdown path.  This makes it
possible to re-use the initialization stack.  It can be used for the
interrupt stack for example.  On targets with a small RAM this is a
considerable benefit.

This change eliminates also some special cases and simplifies the code.

Delete _Thread_Set_global_exit_status(),
_Thread_Get_global_exit_status() and _Thread_Stop_multitasking().
score: Disable ISR in _Internal_error_Occurred()

Disable interrupts as the first step in _Internal_error_Occurred() to
get a defined execution context for the fatal extensions.

Make _ISR_Disable_without_giant() available for non-SMP configurations.
score: Move _SMP_Request_other_cores_to_shutdown()

Move _SMP_Request_other_cores_to_shutdown() invocation from
rtems_shutdown_executive() to _Internal_error_Occurred() to allow a
proper shutdown on SMP configurations even in the error case.
score: Delete INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UP

This error case is no longer required since rtems_shutdown_executive()
can be called anytime, anywhere
score: Add RTEMS_FATAL_SOURCE_BSP

Merge RTEMS_FATAL_SOURCE_BSP_GENERIC and RTEMS_FATAL_SOURCE_BSP_SPECIFIC
into new fatal source RTEMS_FATAL_SOURCE_BSP.  This makes it easier to
figure out the code position given a fatal source and code.
bsp/leon3: Add and use fatal codes
score: Add RTEMS_FATAL_SOURCE_SMP

Use rtems_fatal() instead of _CPU_Fatal_halt() to shutdown processors in
SMP configurations since this allows intervention of BSP or application
specific fatal extensions.
score: Rename RTEMS_BSP_SMP_SHUTDOWN

Rename RTEMS_BSP_SMP_SHUTDOWN in SMP_MESSAGE_SHUTDOWN since SMP messages
have nothing to do with the BSP.  Use UINT32_C() instead of casts.
score: Remove ASM guard
score: Rename bsp_smp_initialize()

Rename bsp_smp_initialize() into _CPU_SMP_Initialize() since every CPU
port must supply this function.
score: Delete bsp_smp_broadcast_interrupt()

Since the per-CPU SMP lock must be acquired and released to send the
message a single interrupt broadcast operations offers no benefits.  If
synchronization is required, then a SMP barrier must be used anyway.
score: Add and use <rtems/score/smpimpl.h>

Collect SMP implementation specific parts in the
<rtems/score/smpimpl.h> header file.
score: Rename rtems_smp_secondary_cpu_initialize()

Rename rtems_smp_secondary_cpu_initialize() into
_SMP_Start_multitasking_on_secondary_processor().  Move declaration to
<rtems/score/smpimpl.h>.
score: Rename rtems_smp_process_interrupt()

Rename rtems_smp_process_interrupt() into
_SMP_Inter_processor_interrupt_handler().  Delete unused header file
<rtems/bspsmp.h>.
bsp/leon3: Declare leon3_ext_irq_init() in header
bsp/leon3: Declare LEON3_IrqCtrl_EIrq only once
score: Move _SMP_Handler_initialize()