forked from Imagelibrary/rtems
bsp/qoriq: Set PPC_EXC_CONFIG_USE_FIXED_HANDLER
This commit is contained in:
@@ -64,6 +64,7 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c \
|
|||||||
../../shared/bspclean.c \
|
../../shared/bspclean.c \
|
||||||
../../shared/bspgetworkarea.c \
|
../../shared/bspgetworkarea.c \
|
||||||
../../shared/src/bsp-uboot-board-info.c \
|
../../shared/src/bsp-uboot-board-info.c \
|
||||||
|
../shared/src/ppc-exc-handler-table.c \
|
||||||
../shared/src/tictac.c \
|
../shared/src/tictac.c \
|
||||||
../shared/src/bsp-start-zero.S \
|
../shared/src/bsp-start-zero.S \
|
||||||
../shared/startup/bspidle.c \
|
../shared/startup/bspidle.c \
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ RTEMS_BSPOPTS_HELP_INSTRUCTION_CACHE_ENABLED
|
|||||||
RTEMS_BSPOPTS_SET([BSP_USE_DATA_CACHE_BLOCK_TOUCH],[*],[1])
|
RTEMS_BSPOPTS_SET([BSP_USE_DATA_CACHE_BLOCK_TOUCH],[*],[1])
|
||||||
RTEMS_BSPOPTS_HELP([BSP_USE_DATA_CACHE_BLOCK_TOUCH],[if defined use dcbt instruction])
|
RTEMS_BSPOPTS_HELP([BSP_USE_DATA_CACHE_BLOCK_TOUCH],[if defined use dcbt instruction])
|
||||||
|
|
||||||
|
RTEMS_BSPOPTS_SET([PPC_EXC_CONFIG_USE_FIXED_HANDLER],[*],[1])
|
||||||
|
RTEMS_BSPOPTS_HELP([PPC_EXC_CONFIG_USE_FIXED_HANDLER],
|
||||||
|
[use fixed high-level exception handler])
|
||||||
|
|
||||||
RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[*],[115200])
|
RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[*],[115200])
|
||||||
RTEMS_BSPOPTS_HELP([BSP_CONSOLE_BAUD],[default baud for console and other serial devices])
|
RTEMS_BSPOPTS_HELP([BSP_CONSOLE_BAUD],[default baud for console and other serial devices])
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2010, 2011 embedded brains GmbH. All rights reserved.
|
* Copyright (c) 2010, 2012 embedded brains GmbH. All rights reserved.
|
||||||
*
|
*
|
||||||
* embedded brains GmbH
|
* embedded brains GmbH
|
||||||
* Obere Lagerstr. 30
|
* Obere Lagerstr. 30
|
||||||
@@ -240,7 +240,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
|||||||
return pic_vector_enable(vector, VPR_MSK);
|
return pic_vector_enable(vector, VPR_MSK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qoriq_external_exception_handler(BSP_Exception_frame *frame, unsigned exception_number)
|
static void qoriq_interrupt_dispatch(void)
|
||||||
{
|
{
|
||||||
rtems_vector_number vector = qoriq.pic.iack;
|
rtems_vector_number vector = qoriq.pic.iack;
|
||||||
|
|
||||||
@@ -256,9 +256,21 @@ static int qoriq_external_exception_handler(BSP_Exception_frame *frame, unsigned
|
|||||||
} else {
|
} else {
|
||||||
bsp_interrupt_handler_default(vector);
|
bsp_interrupt_handler_default(vector);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
|
static int qoriq_external_exception_handler(BSP_Exception_frame *frame, unsigned exception_number)
|
||||||
|
{
|
||||||
|
qoriq_interrupt_dispatch();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
void bsp_interrupt_dispatch(void)
|
||||||
|
{
|
||||||
|
qoriq_interrupt_dispatch();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool pic_is_ipi(rtems_vector_number vector)
|
static bool pic_is_ipi(rtems_vector_number vector)
|
||||||
{
|
{
|
||||||
@@ -291,9 +303,11 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
|
|||||||
rtems_vector_number i = 0;
|
rtems_vector_number i = 0;
|
||||||
uint32_t processor_id = ppc_processor_id();
|
uint32_t processor_id = ppc_processor_id();
|
||||||
|
|
||||||
|
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
if (ppc_exc_set_handler(ASM_EXT_VECTOR, qoriq_external_exception_handler)) {
|
if (ppc_exc_set_handler(ASM_EXT_VECTOR, qoriq_external_exception_handler)) {
|
||||||
return RTEMS_IO_ERROR;
|
return RTEMS_IO_ERROR;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (processor_id == 0) {
|
if (processor_id == 0) {
|
||||||
/* Core 0 must do the basic initialization */
|
/* Core 0 must do the basic initialization */
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2010-2011 embedded brains GmbH. All rights reserved.
|
* Copyright (c) 2010-2012 embedded brains GmbH. All rights reserved.
|
||||||
*
|
*
|
||||||
* embedded brains GmbH
|
* embedded brains GmbH
|
||||||
* Obere Lagerstr. 30
|
* Obere Lagerstr. 30
|
||||||
@@ -178,9 +178,15 @@ bsp_exc_vector_base:
|
|||||||
li r4, 4
|
li r4, 4
|
||||||
b ppc_exc_wrap_nopush_std
|
b ppc_exc_wrap_nopush_std
|
||||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||||
|
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||||
li r4, -32763
|
li r4, -32763
|
||||||
|
#endif
|
||||||
b ppc_exc_wrap_async_normal
|
b ppc_exc_wrap_async_normal
|
||||||
|
#ifdef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
#endif
|
||||||
stwu r1, -EXC_GENERIC_SIZE(r1)
|
stwu r1, -EXC_GENERIC_SIZE(r1)
|
||||||
stw r4, GPR4_OFFSET(r1)
|
stw r4, GPR4_OFFSET(r1)
|
||||||
li r4, 6
|
li r4, 6
|
||||||
@@ -203,13 +209,25 @@ system_call:
|
|||||||
li r4, 24
|
li r4, 24
|
||||||
b ppc_exc_wrap_nopush_std
|
b ppc_exc_wrap_nopush_std
|
||||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||||
|
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||||
li r4, -32752
|
li r4, -32752
|
||||||
|
#endif
|
||||||
b ppc_exc_wrap_async_normal
|
b ppc_exc_wrap_async_normal
|
||||||
|
#ifdef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
#endif
|
||||||
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
stwu r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
|
||||||
|
#ifndef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
stw r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
|
||||||
li r4, -32749
|
li r4, -32749
|
||||||
|
#endif
|
||||||
b ppc_exc_wrap_async_normal
|
b ppc_exc_wrap_async_normal
|
||||||
|
#ifdef PPC_EXC_CONFIG_USE_FIXED_HANDLER
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
#endif
|
||||||
stw r1, ppc_exc_lock_crit@sdarel(r13)
|
stw r1, ppc_exc_lock_crit@sdarel(r13)
|
||||||
stw r4, ppc_exc_vector_register_crit@sdarel(r13)
|
stw r4, ppc_exc_vector_register_crit@sdarel(r13)
|
||||||
li r4, -32748
|
li r4, -32748
|
||||||
|
|||||||
Reference in New Issue
Block a user