]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/GCC/ARM_CM3_MPU/port.c
Update version number to 9.0.0rc2.
[freertos] / FreeRTOS / Source / portable / GCC / ARM_CM3_MPU / port.c
index 950cdb2c1998672fc0260aabd66d22b52de636c5..f5420d519d936ac24f5b3d1fe91a0c5a7695cb01 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V8.2.0 - Copyright (C) 2015 Real Time Engineers Ltd.\r
+    FreeRTOS V9.0.0rc2 - Copyright (C) 2016 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -8,14 +8,14 @@
 \r
     FreeRTOS is free software; you can redistribute it and/or modify it under\r
     the terms of the GNU General Public License (version 2) as published by the\r
-    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.\r
+    Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.\r
 \r
-       ***************************************************************************\r
+    ***************************************************************************\r
     >>!   NOTE: The modification to the GPL is included to allow you to     !<<\r
     >>!   distribute a combined work that includes FreeRTOS without being   !<<\r
     >>!   obliged to provide the source code for proprietary components     !<<\r
     >>!   outside of the FreeRTOS kernel.                                   !<<\r
-       ***************************************************************************\r
+    ***************************************************************************\r
 \r
     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY\r
     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
     ***************************************************************************\r
 \r
     http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading\r
-       the FAQ page "My application does not run, what could be wrong?".  Have you\r
-       defined configASSERT()?\r
+    the FAQ page "My application does not run, what could be wrong?".  Have you\r
+    defined configASSERT()?\r
 \r
-       http://www.FreeRTOS.org/support - In return for receiving this top quality\r
-       embedded software for free we request you assist our global community by\r
-       participating in the support forum.\r
+    http://www.FreeRTOS.org/support - In return for receiving this top quality\r
+    embedded software for free we request you assist our global community by\r
+    participating in the support forum.\r
 \r
-       http://www.FreeRTOS.org/training - Investing in training allows your team to\r
-       be as productive as possible as early as possible.  Now you can receive\r
-       FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
-       Ltd, and the world's leading authority on the world's leading RTOS.\r
+    http://www.FreeRTOS.org/training - Investing in training allows your team to\r
+    be as productive as possible as early as possible.  Now you can receive\r
+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers\r
+    Ltd, and the world's leading authority on the world's leading RTOS.\r
 \r
     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
     including FreeRTOS+Trace - an indispensable productivity tool, a DOS\r
@@ -71,6 +71,8 @@
  * Implementation of functions defined in portable.h for the ARM CM3 port.\r
  *----------------------------------------------------------*/\r
 \r
+#error This port is not supported in this V9.0.0 pre-release revision, but will be supported in the final release.  For now use V8.2.3 instead.\r
\r
 /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\r
 all the API functions to use the MPU wrappers.  That should only be done when\r
 task.h is included from an application file. */\r
@@ -207,8 +209,6 @@ QueueHandle_t MPU_xQueueCreateMutex( void );
 QueueHandle_t MPU_xQueueCreateCountingSemaphore( UBaseType_t uxCountValue, UBaseType_t uxInitialCount );\r
 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xBlockTime );\r
 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t xMutex );\r
-BaseType_t MPU_xQueueAltGenericSend( QueueHandle_t pxQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, BaseType_t xCopyPosition );\r
-BaseType_t MPU_xQueueAltGenericReceive( QueueHandle_t pxQueue, void * const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking );\r
 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, char *pcName );\r
 void MPU_vQueueDelete( QueueHandle_t xQueue );\r
 void *MPU_pvPortMalloc( size_t xSize );\r
@@ -334,7 +334,7 @@ static void prvRestoreContextOfFirstTask( void )
                "       ldr r14, =0xfffffffd                    \n" /* Load exec return code. */\r
                "       bx r14                                                  \n"\r
                "                                                                       \n"\r
-               "       .align 2                                                \n"\r
+               "       .align 4                                                \n"\r
                "pxCurrentTCBConst2: .word pxCurrentTCB \n"\r
        );\r
 }\r
@@ -440,7 +440,7 @@ void xPortPendSVHandler( void )
                "       msr psp, r0                                                     \n"\r
                "       bx r14                                                          \n"\r
                "                                                                               \n"\r
-               "       .align 2                                                        \n"\r
+               "       .align 4                                                        \n"\r
                "pxCurrentTCBConst: .word pxCurrentTCB  \n"\r
                ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY)\r
        );\r
@@ -911,7 +911,7 @@ BaseType_t xRunningPrivileged = prvRaisePrivilege();
 \r
                uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );\r
                portRESET_PRIVILEGE( xRunningPrivileged );\r
-               return xReturn;\r
+               return uxReturn;\r
        }\r
 #endif\r
 /*-----------------------------------------------------------*/\r
@@ -1136,32 +1136,6 @@ void * xReturn;
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
-#if configUSE_ALTERNATIVE_API == 1\r
-       BaseType_t MPU_xQueueAltGenericSend( QueueHandle_t pxQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, BaseType_t xCopyPosition )\r
-       {\r
-       BaseType_t xReturn;\r
-       BaseType_t xRunningPrivileged = prvRaisePrivilege();\r
-\r
-               xReturn =       BaseType_t xQueueAltGenericSend( pxQueue, pvItemToQueue, xTicksToWait, xCopyPosition );\r
-               portRESET_PRIVILEGE( xRunningPrivileged );\r
-               return xReturn;\r
-       }\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_ALTERNATIVE_API == 1\r
-       BaseType_t MPU_xQueueAltGenericReceive( QueueHandle_t pxQueue, void * const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking )\r
-       {\r
-    BaseType_t xReturn;\r
-       BaseType_t xRunningPrivileged = prvRaisePrivilege();\r
-\r
-               xReturn = xQueueAltGenericReceive( pxQueue, pvBuffer, xTicksToWait, xJustPeeking );\r
-               portRESET_PRIVILEGE( xRunningPrivileged );\r
-               return xReturn;\r
-       }\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
 #if configQUEUE_REGISTRY_SIZE > 0\r
        void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, char *pcName )\r
        {\r
@@ -1184,27 +1158,35 @@ BaseType_t xRunningPrivileged = prvRaisePrivilege();
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void *MPU_pvPortMalloc( size_t xSize )\r
-{\r
-void *pvReturn;\r
-BaseType_t xRunningPrivileged = prvRaisePrivilege();\r
+#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\r
+       \r
+       void *MPU_pvPortMalloc( size_t xSize )\r
+       {\r
+       void *pvReturn;\r
+       BaseType_t xRunningPrivileged = prvRaisePrivilege();\r
 \r
-       pvReturn = pvPortMalloc( xSize );\r
+               pvReturn = pvPortMalloc( xSize );\r
 \r
-       portRESET_PRIVILEGE( xRunningPrivileged );\r
+               portRESET_PRIVILEGE( xRunningPrivileged );\r
 \r
-       return pvReturn;\r
-}\r
+               return pvReturn;\r
+       }\r
+       \r
+#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\r
 /*-----------------------------------------------------------*/\r
 \r
-void MPU_vPortFree( void *pv )\r
-{\r
-BaseType_t xRunningPrivileged = prvRaisePrivilege();\r
+#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\r
 \r
-       vPortFree( pv );\r
+       void MPU_vPortFree( void *pv )\r
+       {\r
+       BaseType_t xRunningPrivileged = prvRaisePrivilege();\r
 \r
-       portRESET_PRIVILEGE( xRunningPrivileged );\r
-}\r
+               vPortFree( pv );\r
+\r
+               portRESET_PRIVILEGE( xRunningPrivileged );\r
+       }\r
+       \r
+#endif /* configSUPPORT_DYNAMIC_ALLOCATION */\r
 /*-----------------------------------------------------------*/\r
 \r
 void MPU_vPortInitialiseBlocks( void )\r