#error configMAX_API_CALL_INTERRUPT_PRIORITY must be greater than ( configUNIQUE_INTERRUPT_PRIORITIES / 2 )\r
#endif\r
\r
-#ifndef configINSTALL_FREERTOS_VECTOR_TABLE\r
- #warning configINSTALL_FREERTOS_VECTOR_TABLE was undefined. Defaulting configINSTALL_FREERTOS_VECTOR_TABLE to 0.\r
-#endif\r
-\r
#ifndef configCLEAR_TICK_INTERRUPT\r
#define configCLEAR_TICK_INTERRUPT()\r
#endif\r
#define portNO_FLOATING_POINT_CONTEXT ( ( StackType_t ) 0 )\r
\r
/* Constants required to setup the initial task context. */\r
-#warning FIQ is disabled\r
-#define portINITIAL_SPSR ( ( StackType_t ) 0x5f ) /* System mode, ARM mode, IRQ enabled FIQ disabled. 1f is required to enable FIQ. */\r
+#define portINITIAL_SPSR ( ( StackType_t ) 0x1f ) /* System mode, ARM mode, IRQ enabled FIQ enabled. */\r
#define portTHUMB_MODE_BIT ( ( StackType_t ) 0x20 )\r
#define portINTERRUPT_ENABLE_BIT ( 0x80UL )\r
#define portTHUMB_MODE_ADDRESS ( 0x01UL )\r
ulAPSR &= portAPSR_MODE_BITS_MASK;\r
configASSERT( ulAPSR != portAPSR_USER_MODE );\r
\r
- #if configINSTALL_FREERTOS_VECTOR_TABLE == 1\r
- {\r
- extern void vPortInstallFreeRTOSVectorTable( void );\r
-\r
- vPortInstallFreeRTOSVectorTable();\r
- }\r
- #endif\r
-\r
-\r
if( ulAPSR != portAPSR_USER_MODE )\r
{\r
/* Only continue if the binary point value is set to its lowest possible\r
*/\r
\r
.text\r
+ .arm\r
\r
.set SYS_MODE, 0x1f\r
.set SVC_MODE, 0x13\r
.extern vTaskSwitchContext\r
.extern vApplicationIRQHandler\r
.extern ulPortInterruptNesting\r
+ .extern ulPortTaskHasFPUContext\r
\r
.global FreeRTOS_IRQ_Handler\r
.global FreeRTOS_SWI_Handler\r
/******************************************************************************\r
* SVC handler is used to start the scheduler and yield a task.\r
*****************************************************************************/\r
+.align 4\r
+.type FreeRTOS_SWI_Handler, %function\r
FreeRTOS_SWI_Handler:\r
/* Save the context of the current task and select a new task to run. */\r
portSAVE_CONTEXT\r
LDR R0, vTaskSwitchContextConst\r
BLX R0\r
\r
+.type vPortRestoreTaskContext, %function\r
vPortRestoreTaskContext:\r
portRESTORE_CONTEXT\r
\r
+.align 4\r
+.type FreeRTOS_IRQ_Handler, %function\r
FreeRTOS_IRQ_Handler:\r
/* Return to the interrupted instruction. */\r
SUB lr, lr, #4\r
next. */\r
portRESTORE_CONTEXT\r
\r
-vPortInstallFreeRTOSVectorTable:\r
- /* Set VBAR to the vector table that contains the FreeRTOS handlers. */\r
- ldr r0, =_freertos_vector_table\r
- mcr p15, 0, r0, c12, c0, 0\r
- dsb\r
- isb\r
- bx lr\r
-\r
ulICCIARConst: .word ulICCIAR\r
ulICCEOIRConst: .word ulICCEOIR\r
ulICCPMRConst: .word ulICCPMR\r