summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702
diff options
context:
space:
mode:
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>2016-04-23 10:53:57 +0000
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>2016-04-23 10:53:57 +0000
commitd46d63692760f5fb3165657884eafdf827901f44 (patch)
tree62835aa019a9e72f41ae92344efa51b3bcc00eaf /FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702
parentb20c4425f0ba2754b38bc2fade0354b383b9a8b0 (diff)
downloadfreertos-d46d63692760f5fb3165657884eafdf827901f44.tar.gz
Update the GCC Cortex-A9 port to introduce a version of the IRQ handler that saves the FPU registers.
git-svn-id: http://svn.code.sf.net/p/freertos/code/trunk@2447 1d2547de-c912-0410-9cb9-b8ca96c0e9e2
Diffstat (limited to 'FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702')
-rw-r--r--FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/FreeRTOS_tick_config.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/FreeRTOS_tick_config.c b/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/FreeRTOS_tick_config.c
index 24ed53b18..0b2507acc 100644
--- a/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/FreeRTOS_tick_config.c
+++ b/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/FreeRTOS_tick_config.c
@@ -147,7 +147,14 @@ void vClearTickInterrupt( void )
}
/*-----------------------------------------------------------*/
-void vApplicationIRQHandler( uint32_t ulICCIAR )
+/* This is the callback function which is called by the FreeRTOS Cortex-A port
+layer in response to an interrupt. If the function is called
+vApplicationFPUSafeIRQHandler() then it is called after the floating point
+registers have been saved. If the function is called vApplicationIRQHandler()
+then it will be called without first having saved the FPU registers. See
+http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html for
+more information */
+void vApplicationFPUSafeIRQHandler( uint32_t ulICCIAR )
{
extern const XScuGic_Config XScuGic_ConfigTable[];
static const XScuGic_VectorTableEntry *pxVectorTable = XScuGic_ConfigTable[ XPAR_SCUGIC_SINGLE_DEVICE_ID ].HandlerTable;
@@ -155,7 +162,7 @@ uint32_t ulInterruptID;
const XScuGic_VectorTableEntry *pxVectorEntry;
/* Re-enable interrupts. */
- __asm ( "cpsie i" );
+ __asm ( "cpsie i" );
/* The ID of the interrupt is obtained by bitwise anding the ICCIAR value
with 0x3FF. */