summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-17 09:23:59 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-19 09:59:38 +0100
commit801b5d80325dbd3e92218271d54e75f389da7136 (patch)
treed804e85db347bafd1c7b52b086beff7b6d61c170 /c/src/lib/libcpu
parentscore: Move SMP interrupt stack initialization (diff)
downloadrtems-801b5d80325dbd3e92218271d54e75f389da7136.tar.bz2
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.
Diffstat (limited to 'c/src/lib/libcpu')
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c3
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/vectors.h3
2 files changed, 0 insertions, 6 deletions
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c
index d0f911665d..07dfbeaf6b 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c
@@ -149,7 +149,6 @@ static void ppc_exc_fatal_error(void)
}
void ppc_exc_initialize_with_vector_base(
- uint32_t interrupt_disable_mask,
uintptr_t interrupt_stack_begin,
uintptr_t interrupt_stack_size,
void *vector_base
@@ -191,8 +190,6 @@ void ppc_exc_initialize_with_vector_base(
PPC_SET_SPECIAL_PURPOSE_REGISTER(SPRG1, interrupt_stack_pointer);
PPC_SET_SPECIAL_PURPOSE_REGISTER(SPRG2, interrupt_stack_begin);
- ppc_interrupt_set_disable_mask(interrupt_disable_mask);
-
#ifndef PPC_EXC_CONFIG_BOOKE_ONLY
/* Use current MMU / RI settings when running C exception handlers */
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/vectors.h b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/vectors.h
index bec81c1517..d928d70662 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/vectors.h
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/vectors.h
@@ -361,7 +361,6 @@ rtems_status_code ppc_exc_make_prologue(
* @see ppc_exc_initialize().
*/
void ppc_exc_initialize_with_vector_base(
- uint32_t interrupt_disable_mask,
uintptr_t interrupt_stack_begin,
uintptr_t interrupt_stack_size,
void *vector_base
@@ -381,13 +380,11 @@ void ppc_exc_initialize_with_vector_base(
* - the minimal prologue creation failed.
*/
static inline void ppc_exc_initialize(
- uint32_t interrupt_disable_mask,
uintptr_t interrupt_stack_begin,
uintptr_t interrupt_stack_size
)
{
ppc_exc_initialize_with_vector_base(
- interrupt_disable_mask,
interrupt_stack_begin,
interrupt_stack_size,
NULL