Preparing for maintenance release:

Kernel source changes:
- Added xTaskNotifyStateClear() API function.
- Added the GCC Cortex-R port (existed for a while) into the main download.
- Improved the IAR RL78 port's handling of different memory model combinations.
- Removed some compiler warnings in heap_5.c.

Demo app changes:
- Added example use of xTaskNotifyStateClear() to the TaskNotify standard demo tasks.
diff --git a/FreeRTOS/Demo/Common/Minimal/TaskNotify.c b/FreeRTOS/Demo/Common/Minimal/TaskNotify.c
index 2f48783..3265312 100644
--- a/FreeRTOS/Demo/Common/Minimal/TaskNotify.c
+++ b/FreeRTOS/Demo/Common/Minimal/TaskNotify.c
@@ -356,7 +356,7 @@
 

 

 	/*--------------------------------------------------------------------------

-	Now try querying the previus value while notifying a task. */

+	Now try querying the previous value while notifying a task. */

 	xTaskNotifyAndQuery( xTaskToNotify, 0x00, eSetBits, &ulPreviousValue );

 	configASSERT( ulNotifiedValue == ( ULONG_MAX & ~( ulBit0 | ulBit1 ) ) );

 

@@ -376,6 +376,28 @@
 		ulExpectedValue |= ulLoop;

 	}

 

+

+

+	/* -------------------------------------------------------------------------

+	/* Clear the previous notifications. */

+	xTaskNotifyWait( ULONG_MAX, 0, &ulNotifiedValue, 0 );

+

+	/* The task should not have any notifications pending, so an attempt to clear

+	the notification state should fail. */

+	configASSERT( xTaskNotifyStateClear( NULL ) == pdFALSE );

+

+	/* Get the task to notify itself.  This is not a normal thing to do, and is

+	only done here for test purposes. */

+	xTaskNotifyAndQuery( xTaskToNotify, ulFirstNotifiedConst, eSetValueWithoutOverwrite, &ulPreviousValue );

+

+	/* Now the notification state should be eNotified, so it should now be

+	possible to clear the notification state. */

+	configASSERT( xTaskNotifyStateClear( NULL ) == pdTRUE );

+	configASSERT( xTaskNotifyStateClear( NULL ) == pdFALSE );

+

+

+

+

 	/* Incremented to show the task is still running. */

 	ulNotifyCycleCount++;

 

@@ -509,9 +531,9 @@
 						break;

 

 				default:/* Should never get here!. */

-						break;						

+						break;

 			}

-			

+

 			ulTimerNotificationsSent++;

 		}

 	}

diff --git a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
index e2c8284..ebf6356 100644
--- a/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
+++ b/FreeRTOS/Demo/PIC24_MPLAB/nbproject/Makefile-genesis.properties
@@ -1,5 +1,5 @@
 #

-#Thu Oct 15 21:03:35 BST 2015

+#Fri Oct 16 11:40:45 BST 2015

 default.com-microchip-mplab-nbide-toolchainXC16-XC16LanguageToolchain.md5=7b5555b9f3fac10bdeeaa71fff22c072

 default.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc16\\v1.25\\bin

 configurations-xml=e1668378027c43cfe57bea932c980e61

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
index 6f00e67..23d9fdb 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-PIC32MZ2048_SK.mk
@@ -77,7 +77,7 @@
 endif
 	${MAKE}  -f nbproject/Makefile-PIC32MZ2048_SK.mk dist/${CND_CONF}/${IMAGE_TYPE}/RTOSDemo.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
 
-MP_PROCESSOR_OPTION=32MZ2048ECM144
+MP_PROCESSOR_OPTION=32MZ2048ECH144
 MP_LINKER_FILE_OPTION=
 # ------------------------------------------------------------------------------------
 # Rules for buildStep: assemble
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
index f03ec51..be1055f 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-genesis.properties
@@ -1,9 +1,9 @@
 #

-#Thu Oct 15 18:30:50 BST 2015

+#Fri Oct 16 11:52:06 BST 2015

 PIC32MZ2048_SK.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b

 PIC32MZ2048EF_SK_SOFT_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin

 conf.ids=PIC32MZ2048_SK,PIC32MZ2048EF_SK_SOFT_FLOAT,PIC32MZ2048EF_SK_HARD_FLOAT

-configurations-xml=b89c82494ccd01c641a679d02e4a20c2

+configurations-xml=5494ca7739a1fe76ccf1dd947214ff1b

 PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.dir=C\:\\DevTools\\Microchip\\xc32\\v1.40\\bin

 PIC32MZ2048EF_SK_SOFT_FLOAT.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=dcb36c7e6928d5535e26dd359786192b

 PIC32MZ2048EF_SK_HARD_FLOAT.languagetoolchain.version=1.40

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
index 37740d5..8fb0b30 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/Makefile-impl.mk
@@ -27,7 +27,7 @@
 PROJECTNAME=RTOSDemo.X
 
 # Active Configuration
-DEFAULTCONF=PIC32MZ2048EF_SK_HARD_FLOAT
+DEFAULTCONF=PIC32MZ2048_SK
 CONF=${DEFAULTCONF}
 
 # All Configurations
diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
index 43fc1c1..c9b574d 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/configurations.xml
@@ -84,7 +84,7 @@
     <conf name="PIC32MZ2048_SK" type="2">

       <toolsSet>

         <developmentServer>localhost</developmentServer>

-        <targetDevice>PIC32MZ2048ECM144</targetDevice>

+        <targetDevice>PIC32MZ2048ECH144</targetDevice>

         <targetHeader></targetHeader>

         <targetPluginBoard></targetPluginBoard>

         <platformTool>PKOBSKDEPlatformTool</platformTool>

@@ -621,7 +621,6 @@
         <property key="ToolFirmwareFilePath"

                   value="Press to browse for a specific firmware version"/>

         <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>

-        <property key="firmware.download.all" value="false"/>

         <property key="memories.configurationmemory" value="false"/>

         <property key="memories.dataflash" value="true"/>

         <property key="memories.eeprom" value="false"/>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
index a084b2b..02300ab 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/configurations.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <configurationDescriptor version="62">

   <projectmakefile>Makefile</projectmakefile>

-  <defaultConf>2</defaultConf>

+  <defaultConf>0</defaultConf>

   <confs>

     <conf name="PIC32MZ2048_SK" type="2">

-      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>8107:=&lt;rev>0002:=&lt;man>Microchip Technology Incorporated:=&lt;prod>PIC32MZ EF Family:=&lt;sn>BUR153124004:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>

+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>8107:=&lt;rev>0002:=&lt;man>Microchip Technology Incorporated:=&lt;prod>PIC32MZ EC Family:=&lt;sn>MTI132990155:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>

       <languageToolchainDir>C:\DevTools\Microchip\xc32\v1.40\bin</languageToolchainDir>

       <mdbdebugger version="1">

         <placeholder1>place holder 1</placeholder1>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
index d1d5490..ce03ea5 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/RTOSDemo.X/nbproject/private/private.xml
@@ -16,6 +16,7 @@
         </group>

         <group name="Masters19024">

             <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c</file>

+            <file>file:/C:/E/Dev/FreeRTOS/WorkingCopy/FreeRTOS/Demo/PIC32MZ_MPLAB/flop_mz.c</file>

         </group>

     </open-files>

 </project-private>

diff --git a/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c b/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
index 4d0fb8b..29fb6da 100644
--- a/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
+++ b/FreeRTOS/Demo/PIC32MZ_MPLAB/main.c
@@ -104,8 +104,6 @@
 	#pragma config EJTAGBEN = NORMAL, DBGPER = PG_ALL, FSLEEP = OFF, FECCCON = OFF_UNLOCKED

 	#pragma config BOOTISA = MIPS32, TRCEN = ON, ICESEL = ICS_PGx2, JTAGEN = OFF, DEBUG = ON

 	#pragma config CP = OFF

-	#pragma config_alt FWDTEN=OFF

-	#pragma config_alt USERID = 0x1234u

 #elif defined(__32MZ2048EFM144) || defined(__32MZ2048EFH144)

 	#pragma config FMIIEN = OFF, FETHIO = OFF, PGL1WAY = OFF, PMDL1WAY = OFF, IOL1WAY = OFF, FUSBIDIO = OFF

 	#pragma config FNOSC = SPLL, FSOSCEN = OFF, IESO = OFF, POSCMOD = EC

@@ -317,14 +315,3 @@
 }

 /*-----------------------------------------------------------*/

 

-void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )

-{

-	( void ) pcTaskName;

-	( void ) pxTask;

-

-	/* Run time stack overflow checking is performed if

-	configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2.  This hook

-	function is called if a stack overflow is detected. */

-	taskDISABLE_INTERRUPTS();

-	for( ;; );

-}

diff --git a/FreeRTOS/Demo/RL78_multiple_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/RL78_multiple_IAR/FreeRTOSConfig.h
index eb9a224..78fd279 100644
--- a/FreeRTOS/Demo/RL78_multiple_IAR/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/RL78_multiple_IAR/FreeRTOSConfig.h
@@ -98,7 +98,7 @@
 #define configUSE_PREEMPTION			1

 #define configTICK_RATE_HZ				( ( unsigned short ) 1000 )

 #define configMAX_PRIORITIES			( 4 )

-#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 80 )

+#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 75 )

 #define configMAX_TASK_NAME_LEN			( 10 )

 #define configUSE_TRACE_FACILITY		0

 #define configUSE_16_BIT_TICKS			1

diff --git a/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewd
index 6b7ccaa..cb8cd71 100644
--- a/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewd
+++ b/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewd
@@ -49,7 +49,7 @@
         </option>

         <option>

           <name>DynDriver</name>

-          <state>TKRL78</state>

+          <state>SIMRL78</state>

         </option>

         <option>

           <name>DebugDDFOverride</name>

@@ -946,7 +946,7 @@
         </option>

         <option>

           <name>DynDriver</name>

-          <state>SIMRL78</state>

+          <state>E1RL78</state>

         </option>

         <option>

           <name>DebugDDFOverride</name>

diff --git a/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewp
index 465e6ea..2c7684d 100644
--- a/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewp
+++ b/FreeRTOS/Demo/RL78_multiple_IAR/RTOSDemo.ewp
@@ -10,7 +10,7 @@
     <debug>1</debug>

     <settings>

       <name>General</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>1</version>

         <wantNonLocal>1</wantNonLocal>

@@ -153,7 +153,7 @@
     </settings>

     <settings>

       <name>ICCRL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>7</version>

         <wantNonLocal>1</wantNonLocal>

@@ -401,9 +401,9 @@
     </settings>

     <settings>

       <name>ARL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

-        <version>2</version>

+        <version>3</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

@@ -553,6 +553,10 @@
           <name>PreInclude</name>

           <state></state>

         </option>

+        <option>

+          <name>AsmListIncludeHeaderSource</name>

+          <state>0</state>

+        </option>

       </data>

     </settings>

     <settings>

@@ -561,6 +565,7 @@
       <data>

         <extensions></extensions>

         <cmdline></cmdline>

+        <hasPrio>0</hasPrio>

       </data>

     </settings>

     <settings>

@@ -578,12 +583,16 @@
     </settings>

     <settings>

       <name>XLINK</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>14</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

+          <name>XlinkHugeHeap</name>

+          <state>1</state>

+        </option>

+        <option>

           <name>XOutOverride</name>

           <state>0</state>

         </option>

@@ -864,7 +873,7 @@
     </settings>

     <settings>

       <name>XAR</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>0</version>

         <wantNonLocal>1</wantNonLocal>

@@ -885,7 +894,7 @@
     </settings>

     <settings>

       <name>INTERNAL_HWSUPPORT</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data/>

     </settings>

     <settings>

@@ -902,7 +911,7 @@
     <debug>1</debug>

     <settings>

       <name>General</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>1</version>

         <wantNonLocal>1</wantNonLocal>

@@ -1045,7 +1054,7 @@
     </settings>

     <settings>

       <name>ICCRL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>7</version>

         <wantNonLocal>1</wantNonLocal>

@@ -1293,9 +1302,9 @@
     </settings>

     <settings>

       <name>ARL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

-        <version>2</version>

+        <version>3</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

@@ -1445,6 +1454,10 @@
           <name>PreInclude</name>

           <state></state>

         </option>

+        <option>

+          <name>AsmListIncludeHeaderSource</name>

+          <state>0</state>

+        </option>

       </data>

     </settings>

     <settings>

@@ -1453,6 +1466,7 @@
       <data>

         <extensions></extensions>

         <cmdline></cmdline>

+        <hasPrio>0</hasPrio>

       </data>

     </settings>

     <settings>

@@ -1470,12 +1484,16 @@
     </settings>

     <settings>

       <name>XLINK</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>14</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

+          <name>XlinkHugeHeap</name>

+          <state>1</state>

+        </option>

+        <option>

           <name>XOutOverride</name>

           <state>0</state>

         </option>

@@ -1756,7 +1774,7 @@
     </settings>

     <settings>

       <name>XAR</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>0</version>

         <wantNonLocal>1</wantNonLocal>

@@ -1777,7 +1795,7 @@
     </settings>

     <settings>

       <name>INTERNAL_HWSUPPORT</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data/>

     </settings>

     <settings>

@@ -1794,7 +1812,7 @@
     <debug>1</debug>

     <settings>

       <name>General</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>1</version>

         <wantNonLocal>1</wantNonLocal>

@@ -1937,7 +1955,7 @@
     </settings>

     <settings>

       <name>ICCRL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>7</version>

         <wantNonLocal>1</wantNonLocal>

@@ -2185,9 +2203,9 @@
     </settings>

     <settings>

       <name>ARL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

-        <version>2</version>

+        <version>3</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

@@ -2337,6 +2355,10 @@
           <name>PreInclude</name>

           <state></state>

         </option>

+        <option>

+          <name>AsmListIncludeHeaderSource</name>

+          <state>0</state>

+        </option>

       </data>

     </settings>

     <settings>

@@ -2345,6 +2367,7 @@
       <data>

         <extensions></extensions>

         <cmdline></cmdline>

+        <hasPrio>0</hasPrio>

       </data>

     </settings>

     <settings>

@@ -2362,12 +2385,16 @@
     </settings>

     <settings>

       <name>XLINK</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>14</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

+          <name>XlinkHugeHeap</name>

+          <state>1</state>

+        </option>

+        <option>

           <name>XOutOverride</name>

           <state>0</state>

         </option>

@@ -2648,7 +2675,7 @@
     </settings>

     <settings>

       <name>XAR</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>0</version>

         <wantNonLocal>1</wantNonLocal>

@@ -2669,7 +2696,7 @@
     </settings>

     <settings>

       <name>INTERNAL_HWSUPPORT</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data/>

     </settings>

     <settings>

@@ -2686,7 +2713,7 @@
     <debug>1</debug>

     <settings>

       <name>General</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>1</version>

         <wantNonLocal>1</wantNonLocal>

@@ -2702,12 +2729,12 @@
         <option>

           <name>GenCodeModel</name>

           <version>0</version>

-          <state>1</state>

+          <state>0</state>

         </option>

         <option>

           <name>GenDataModel</name>

           <version>0</version>

-          <state>1</state>

+          <state>0</state>

         </option>

         <option>

           <name>GenNearConstLocation</name>

@@ -2754,11 +2781,11 @@
         </option>

         <option>

           <name>GenRTConfigPath</name>

-          <state>$TOOLKIT_DIR$\LIB\dlrl78ff1n.h</state>

+          <state>$TOOLKIT_DIR$\LIB\dlrl78nn1n.h</state>

         </option>

         <option>

           <name>GenRTLibraryPath</name>

-          <state>$TOOLKIT_DIR$\LIB\dlrl78ff1n.r87</state>

+          <state>$TOOLKIT_DIR$\LIB\dlrl78fn1n.r87</state>

         </option>

         <option>

           <name>GenHwSupport</name>

@@ -2771,7 +2798,7 @@
         </option>

         <option>

           <name>GenLibInFormatterDescription</name>

-          <state>No specifier n, no float, no scan set, no assignment suppressing.</state>

+          <state>No specifier n, no float or long long, no scan set, no assignment suppressing.</state>

         </option>

         <option>

           <name>GenLibOutFormatter</name>

@@ -2780,7 +2807,7 @@
         </option>

         <option>

           <name>GenLibOutFormatterDescription</name>

-          <state>No specifier a or A, no specifier n, no float, no flags.</state>

+          <state>No specifier a or A, no specifier n, no float or long long, no flags.</state>

         </option>

         <option>

           <name>GenStackSize</name>

@@ -2829,7 +2856,7 @@
     </settings>

     <settings>

       <name>ICCRL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>7</version>

         <wantNonLocal>1</wantNonLocal>

@@ -3077,9 +3104,9 @@
     </settings>

     <settings>

       <name>ARL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

-        <version>2</version>

+        <version>3</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

@@ -3163,7 +3190,7 @@
         <option>

           <name>AsmDefines</name>

           <state>RSKRL78L13</state>

-          <state>__FAR_DATA_MODEL__</state>

+          <state>__NEAR_DATA_MODEL__</state>

         </option>

         <option>

           <name>AsmPreprocOutput</name>

@@ -3229,6 +3256,10 @@
           <name>PreInclude</name>

           <state></state>

         </option>

+        <option>

+          <name>AsmListIncludeHeaderSource</name>

+          <state>0</state>

+        </option>

       </data>

     </settings>

     <settings>

@@ -3237,6 +3268,7 @@
       <data>

         <extensions></extensions>

         <cmdline></cmdline>

+        <hasPrio>0</hasPrio>

       </data>

     </settings>

     <settings>

@@ -3254,12 +3286,16 @@
     </settings>

     <settings>

       <name>XLINK</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>14</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

+          <name>XlinkHugeHeap</name>

+          <state>1</state>

+        </option>

+        <option>

           <name>XOutOverride</name>

           <state>0</state>

         </option>

@@ -3540,7 +3576,7 @@
     </settings>

     <settings>

       <name>XAR</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>0</version>

         <wantNonLocal>1</wantNonLocal>

@@ -3561,7 +3597,7 @@
     </settings>

     <settings>

       <name>INTERNAL_HWSUPPORT</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data/>

     </settings>

     <settings>

@@ -3578,7 +3614,7 @@
     <debug>1</debug>

     <settings>

       <name>General</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>1</version>

         <wantNonLocal>1</wantNonLocal>

@@ -3721,7 +3757,7 @@
     </settings>

     <settings>

       <name>ICCRL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>7</version>

         <wantNonLocal>1</wantNonLocal>

@@ -3969,9 +4005,9 @@
     </settings>

     <settings>

       <name>ARL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

-        <version>2</version>

+        <version>3</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

@@ -4121,6 +4157,10 @@
           <name>PreInclude</name>

           <state></state>

         </option>

+        <option>

+          <name>AsmListIncludeHeaderSource</name>

+          <state>0</state>

+        </option>

       </data>

     </settings>

     <settings>

@@ -4129,6 +4169,7 @@
       <data>

         <extensions></extensions>

         <cmdline></cmdline>

+        <hasPrio>0</hasPrio>

       </data>

     </settings>

     <settings>

@@ -4146,12 +4187,16 @@
     </settings>

     <settings>

       <name>XLINK</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>14</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

+          <name>XlinkHugeHeap</name>

+          <state>1</state>

+        </option>

+        <option>

           <name>XOutOverride</name>

           <state>0</state>

         </option>

@@ -4432,7 +4477,7 @@
     </settings>

     <settings>

       <name>XAR</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>0</version>

         <wantNonLocal>1</wantNonLocal>

@@ -4453,7 +4498,7 @@
     </settings>

     <settings>

       <name>INTERNAL_HWSUPPORT</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data/>

     </settings>

     <settings>

@@ -4470,7 +4515,7 @@
     <debug>1</debug>

     <settings>

       <name>General</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>1</version>

         <wantNonLocal>1</wantNonLocal>

@@ -4613,7 +4658,7 @@
     </settings>

     <settings>

       <name>ICCRL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>7</version>

         <wantNonLocal>1</wantNonLocal>

@@ -4861,9 +4906,9 @@
     </settings>

     <settings>

       <name>ARL78</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

-        <version>2</version>

+        <version>3</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

@@ -5013,6 +5058,10 @@
           <name>PreInclude</name>

           <state></state>

         </option>

+        <option>

+          <name>AsmListIncludeHeaderSource</name>

+          <state>0</state>

+        </option>

       </data>

     </settings>

     <settings>

@@ -5021,6 +5070,7 @@
       <data>

         <extensions></extensions>

         <cmdline></cmdline>

+        <hasPrio>0</hasPrio>

       </data>

     </settings>

     <settings>

@@ -5038,12 +5088,16 @@
     </settings>

     <settings>

       <name>XLINK</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>14</version>

         <wantNonLocal>1</wantNonLocal>

         <debug>1</debug>

         <option>

+          <name>XlinkHugeHeap</name>

+          <state>1</state>

+        </option>

+        <option>

           <name>XOutOverride</name>

           <state>0</state>

         </option>

@@ -5324,7 +5378,7 @@
     </settings>

     <settings>

       <name>XAR</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data>

         <version>0</version>

         <wantNonLocal>1</wantNonLocal>

@@ -5345,7 +5399,7 @@
     </settings>

     <settings>

       <name>INTERNAL_HWSUPPORT</name>

-      <archiveVersion>5</archiveVersion>

+      <archiveVersion>6</archiveVersion>

       <data/>

     </settings>

     <settings>

diff --git a/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dbgdt b/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dbgdt
index 534b769..b56f789 100644
--- a/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dbgdt
+++ b/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dbgdt
@@ -19,14 +19,14 @@
           

           

           

-        <Column0>154</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>

+        <Column0>255</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>

       </Workspace>

       <Disassembly>

         

         

         

       <PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><MixedMode>1</MixedMode><CodeCovShow>1</CodeCovShow><InstrProfShow>1</InstrProfShow><col-names><item>Disassembly</item><item>_I0</item></col-names><col-widths><item>500</item><item>20</item></col-widths><DisasmHistory/><ShowCodeCoverage>0</ShowCodeCoverage><ShowInstrProfiling>0</ShowInstrProfiling></Disassembly>

-    <STACK2><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></STACK2><Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register><WATCH_1><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><expressions><item/></expressions><col-names><item>Expression</item><item>Location</item><item>Type</item><item>Value</item></col-names><col-widths><item>100</item><item>150</item><item>100</item><item>100</item></col-widths></WATCH_1><CallStack><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Frame</item><item>_I0</item></col-names><col-widths><item>400</item><item>20</item></col-widths></CallStack><Breakpoints><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Breakpoint</item><item>_I0</item></col-names><col-widths><item>500</item><item>35</item></col-widths></Breakpoints></Static>

+    <STACK2><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></STACK2><Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register><WATCH_1><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><expressions><item/></expressions><col-names><item>Expression</item><item>Location</item><item>Type</item><item>Value</item></col-names><col-widths><item>179</item><item>150</item><item>100</item><item>100</item></col-widths></WATCH_1><CallStack><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Frame</item><item>_I0</item></col-names><col-widths><item>400</item><item>20</item></col-widths></CallStack><Breakpoints><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Breakpoint</item><item>_I0</item></col-names><col-widths><item>500</item><item>35</item></col-widths></Breakpoints></Static>

     <Windows>

       

       

@@ -47,7 +47,7 @@
           </Tab>

         </Tabs>

         

-      <SelectedTab>0</SelectedTab></Wnd0><Wnd3>

+      <SelectedTab>0</SelectedTab></Wnd0><Wnd1>

         <Tabs>

           <Tab>

             <Identity>TabID-8606-17564</Identity>

@@ -55,24 +55,24 @@
             <Factory>Workspace</Factory>

             <Session>

               

-            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source/StandardDemos</ExpandedNode><ExpandedNode>RTOSDemo/Kernel Source</ExpandedNode><ExpandedNode>RTOSDemo/Output</ExpandedNode></NodeDict></Session>

+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source/StandardDemos</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source/main_full.c</ExpandedNode><ExpandedNode>RTOSDemo/Kernel Source</ExpandedNode><ExpandedNode>RTOSDemo/Output</ExpandedNode></NodeDict></Session>

           </Tab>

         </Tabs>

         

-      <SelectedTab>0</SelectedTab></Wnd3><Wnd4><Tabs><Tab><Identity>TabID-10337-22371</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd4><Wnd5><Tabs><Tab><Identity>TabID-15419-24732</Identity><TabName>Register</TabName><Factory>Register</Factory><Session><REG1>0</REG1><REG2>0</REG2><Group>0</Group><States>0</States></Session></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd5></Windows>

+      <SelectedTab>0</SelectedTab></Wnd1></Windows>

     <Editor>

       

       

       

       

-    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>0</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>185</YPos2><SelStart2>10664</SelStart2><SelEnd2>10664</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>138</YPos2><SelStart2>6875</SelStart2><SelEnd2>6875</SelEnd2></Tab><ActiveTab>2</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\..\..\..\devtools\IAR Systems\Embedded Workbench 6.5\rl78\inc\ior5f10jgc.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>11</YPos2><SelStart2>821</SelStart2><SelEnd2>821</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>69</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\demo_specific_io.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>71</YPos2><SelStart2>4661</SelStart2><SelEnd2>4661</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\tasks.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>2852</YPos2><SelStart2>95683</SelStart2><SelEnd2>95683</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>

+    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>241</YPos2><SelStart2>13257</SelStart2><SelEnd2>13257</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>62</YPos2><SelStart2>10664</SelStart2><SelEnd2>10664</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\ExampleISR.s87</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>66</YPos2><SelStart2>4592</SelStart2><SelEnd2>4592</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\RL78\ISR_Support.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>0</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>142</YPos2><SelStart2>7176</SelStart2><SelEnd2>7176</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\tasks.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>2220</YPos2><SelStart2>76534</SelStart2><SelEnd2>76534</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\dynamic.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>432</YPos2><SelStart2>17463</SelStart2><SelEnd2>17463</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>71</YPos2><SelStart2>5114</SelStart2><SelEnd2>5116</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\timers.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>461</YPos2><SelStart2>19747</SelStart2><SelEnd2>19747</SelEnd2></Tab><ActiveTab>8</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\RegTest.s87</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>168</YPos2><SelStart2>6068</SelStart2><SelEnd2>6068</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\RL78\portmacro.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>85</YPos2><SelStart2>5368</SelStart2><SelEnd2>5376</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>

     <Positions>

       

       

       

       

       

-    <Top><Row0><Sizes><Toolbar-01348a30><key>iaridepm.enu1</key></Toolbar-01348a30></Sizes></Row0><Row1><Sizes><Toolbar-049d5188><key>debuggergui.enu1</key></Toolbar-049d5188></Sizes></Row1><Row2><Sizes><Toolbar-0ba72fe0><key>rl78ocd.enu1</key></Toolbar-0ba72fe0></Sizes></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10><Row11><Sizes/></Row11><Row12><Sizes/></Row12><Row13><Sizes/></Row13><Row14><Sizes/></Row14><Row15><Sizes/></Row15><Row16><Sizes/></Row16><Row17><Sizes/></Row17><Row18><Sizes/></Row18><Row19><Sizes/></Row19></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>614</Bottom><Right>228</Right><x>-2</x><y>-2</y><xscreen>9</xscreen><yscreen>8</yscreen><sizeHorzCX>5357</sizeHorzCX><sizeHorzCY>8147</sizeHorzCY><sizeVertCX>136905</sizeVertCX><sizeVertCY>627291</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes><Wnd4><Rect><Top>-2</Top><Left>-2</Left><Bottom>614</Bottom><Right>530</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>316667</sizeVertCX><sizeVertCY>627291</sizeVertCY></Rect></Wnd4></Sizes></Row0><Row1><Sizes><Wnd5><Rect><Top>-2</Top><Left>528</Left><Bottom>614</Bottom><Right>833</Right><x>528</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>181548</sizeVertCX><sizeVertCY>627291</sizeVertCY></Rect></Wnd5></Sizes></Row1></Right><Bottom><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>276</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>278</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>283096</sizeHorzCY><sizeVertCX>5357</sizeVertCX><sizeVertCY>8147</sizeVertCY></Rect></Wnd0></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>

+    <Top><Row0><Sizes><Toolbar-029D9C80><key>iaridepm.enu1</key></Toolbar-029D9C80></Sizes></Row0><Row1><Sizes><Toolbar-142947E8><key>debuggergui.enu1</key></Toolbar-142947E8></Sizes></Row1><Row2><Sizes><Toolbar-14294A40><key>rl78ocd.enu1</key></Toolbar-14294A40></Sizes></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10><Row11><Sizes/></Row11><Row12><Sizes/></Row12><Row13><Sizes/></Row13><Row14><Sizes/></Row14><Row15><Sizes/></Row15><Row16><Sizes/></Row16><Row17><Sizes/></Row17><Row18><Sizes/></Row18><Row19><Sizes/></Row19></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>615</Bottom><Right>345</Right><x>-2</x><y>-2</y><xscreen>9</xscreen><yscreen>8</yscreen><sizeHorzCX>5357</sizeHorzCX><sizeHorzCY>8130</sizeHorzCY><sizeVertCX>206548</sizeVertCX><sizeVertCY>627033</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>277</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>279</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>283537</sizeHorzCY><sizeVertCX>5357</sizeVertCX><sizeVertCY>8130</sizeVertCY></Rect></Wnd0></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>

   </Desktop>

 </Project>

 

diff --git a/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dni b/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dni
index a30073c..518458e 100644
--- a/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dni
+++ b/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.dni
@@ -1,5 +1,5 @@
 [DebugChecksum]

-Checksum=1325488880

+Checksum=-1598462895

 [DisAssemblyWindow]

 NumStates=_ 1

 State 1=_ 1

@@ -8,10 +8,10 @@
 [CodeCoverage]

 Enabled=_ 0

 [E1]

-Map0=0,0,262143,262144

-Map1=1,1031936,1048319,16384

+Map0=0,0,131071,131072

+Map1=1,1040128,1048319,8192

 MapEntries=2

-HWsettings=3,0,1,2,4,0,1,0,16,1,0

+HWsettings=2,0,1,2,4,0,1,0,16,17,0

 HWsettingsCube=2,4294967295,2,4294967295,0,1,0,0

 HWsettingsRsuid=00000000000000000000

 EventEntries=0

@@ -59,10 +59,10 @@
 TimerSettings=0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

 CoverSettings=1048192,1048207,0

 Version=1,trace.txt

-LastDevFile=DR5F110PJ.DVF

+LastDevFile=DR5F10WMG.DVF

 EmulType=64

 BreakToggle=0

-EventLimits=0,2,2,0,0,0,2

+EventLimits=0,1,1,0,0,0,1

 LastSetupFailed=0

 ForceHwSetup=0

 [StackPlugin]

@@ -147,34 +147,8 @@
 ShowArgs=0

 [Disassembly]

 MixedMode=1

-[InterruptLog]

-LogEnabled=0

-SumEnabled=0

-GraphEnabled=0

-ShowTimeLog=1

-ShowTimeSum=1

-SumSortOrder=0

-[DataLog]

-LogEnabled=0

-SumEnabled=0

-GraphEnabled=0

-ShowTimeLog=1

-ShowTimeSum=1

-[Breakpoints2]

-Bp0=_ 0 "STD_CODE2" "{$PROJ_DIR$\RegTest.s87}.172.1" 0 0 1 "" 0 ""

-Count=1

-[Interrupts]

-Enabled=1

-[MemoryMap]

+[CallStackLog]

 Enabled=0

-Base=0

-UseAuto=0

-TypeViolation=1

-UnspecRange=1

-ActionState=1

-[Trace1]

-Enabled=0

-ShowSource=1

 [DataSample]

 LogEnabled=0

 GraphEnabled=0

@@ -190,8 +164,6 @@
 [TraceHelper]

 Enabled=0

 ShowSource=1

-[CallStackLog]

-Enabled=0

 [DriverProfiling]

 Enabled=0

 Mode=0

@@ -200,7 +172,39 @@
 Exclusions=

 [Breakpoints]

 Count=0

+[InterruptLog]

+LogEnabled=0

+SumEnabled=0

+GraphEnabled=0

+ShowTimeLog=1

+ShowTimeSum=1

+SumSortOrder=0

+[DataLog]

+LogEnabled=0

+SumEnabled=0

+GraphEnabled=0

+ShowTimeLog=1

+ShowTimeSum=1

+[Breakpoints2]

+Bp0=_ 0 "STD_CODE2" "{$PROJ_DIR$\RegTest.s87}.172.1" 0 0 1 "" 0 ""

+Bp1=_ 1 "STD_CODE2" "{$PROJ_DIR$\main_full.c}.346.2" 0 0 1 "" 0 ""

+Bp2=_ 1 "STD_CODE2" "{$PROJ_DIR$\main_full.c}.352.3" 0 0 1 "" 0 ""

+Count=3

+[Interrupts]

+Enabled=1

+[MemoryMap]

+Enabled=0

+Base=0

+UseAuto=0

+TypeViolation=1

+UnspecRange=1

+ActionState=1

+[Trace1]

+Enabled=0

+ShowSource=1

 [Aliases]

 A0=_ "C:\Data\RL78_STICK\FreeRTOSV6.1.1\Source\portable\IAR\RL78\portasm.s87" "E:\Data\RL78_STICK\FreeRTOSV6.1.1\Source\portable\IAR\RL78\portasm.s87"

 Count=1

 SuppressDialog=1

+[Simulator]

+Freq=10000000

diff --git a/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.wsdt b/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.wsdt
index 1a1034f..adafd73 100644
--- a/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.wsdt
+++ b/FreeRTOS/Demo/RL78_multiple_IAR/settings/rtosdemo.wsdt
@@ -3,7 +3,7 @@
 <Workspace>

   <ConfigDictionary>

     

-  <CurrentConfigs><Project>RTOSDemo/RSKRL78L1C</Project></CurrentConfigs></ConfigDictionary>

+  <CurrentConfigs><Project>RTOSDemo/YRPBRL78G13</Project></CurrentConfigs></ConfigDictionary>

   <Desktop>

     <Static>

       <Workspace>

@@ -25,24 +25,24 @@
             <Factory>Workspace</Factory>

             <Session>

               

-            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode></NodeDict></Session>

+            <NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Kernel Source</ExpandedNode></NodeDict></Session>

           </Tab>

         </Tabs>

         

-      <SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-4654-17433</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-7454-1824</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab><Tab><Identity>TabID-32199-1847</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab><Tab><Identity>TabID-16124-30648</Identity><TabName>Ambiguous Definitions</TabName><Factory>Select-Ambiguous-Definitions</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>

+      <SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-4654-17433</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-7454-1824</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab><Tab><Identity>TabID-16124-30648</Identity><TabName>Ambiguous Definitions</TabName><Factory>Select-Ambiguous-Definitions</Factory><Session/></Tab><Tab><Identity>TabID-21155-6491</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>

     <Editor>

       

       

       

       

-    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>63</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main_blinky.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>62</YPos2><SelStart2>10664</SelStart2><SelEnd2>10664</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>60</YPos2><SelStart2>6875</SelStart2><SelEnd2>6875</SelEnd2></Tab><ActiveTab>2</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>

+    <Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>67</YPos2><SelStart2>7176</SelStart2><SelEnd2>7176</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>

     <Positions>

       

       

       

       

       

-    <Top><Row0><Sizes><Toolbar-01348a30><key>iaridepm.enu1</key></Toolbar-01348a30></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10><Row11><Sizes/></Row11><Row12><Sizes/></Row12><Row13><Sizes/></Row13><Row14><Sizes/></Row14><Row15><Sizes/></Row15><Row16><Sizes/></Row16><Row17><Sizes/></Row17><Row18><Sizes/></Row18><Row19><Sizes/></Row19><Row20><Sizes/></Row20><Row21><Sizes/></Row21><Row22><Sizes/></Row22></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>505</Bottom><Right>443</Right><x>-2</x><y>-2</y><xscreen>12633</xscreen><yscreen>8252</yscreen><sizeHorzCX>7519643</sizeHorzCX><sizeHorzCY>8403259</sizeHorzCY><sizeVertCX>264881</sizeVertCX><sizeVertCY>516293</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>433</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>435</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>442974</sizeHorzCY><sizeVertCX>9869643</sizeVertCX><sizeVertCY>10668024</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>

+    <Top><Row0><Sizes><Toolbar-029D9C80><key>iaridepm.enu1</key></Toolbar-029D9C80></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2><Row3><Sizes/></Row3><Row4><Sizes/></Row4><Row5><Sizes/></Row5><Row6><Sizes/></Row6><Row7><Sizes/></Row7><Row8><Sizes/></Row8><Row9><Sizes/></Row9><Row10><Sizes/></Row10><Row11><Sizes/></Row11><Row12><Sizes/></Row12><Row13><Sizes/></Row13><Row14><Sizes/></Row14><Row15><Sizes/></Row15><Row16><Sizes/></Row16><Row17><Sizes/></Row17><Row18><Sizes/></Row18><Row19><Sizes/></Row19><Row20><Sizes/></Row20><Row21><Sizes/></Row21></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>506</Bottom><Right>443</Right><x>-2</x><y>-2</y><xscreen>12633</xscreen><yscreen>8269</yscreen><sizeHorzCX>7519643</sizeHorzCX><sizeHorzCY>8403455</sizeHorzCY><sizeVertCX>264881</sizeVertCX><sizeVertCY>516260</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>434</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>436</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>443089</sizeHorzCY><sizeVertCX>9869643</sizeVertCX><sizeVertCY>10667683</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>

   </Desktop>

 </Workspace>

 

diff --git a/FreeRTOS/Source/include/task.h b/FreeRTOS/Source/include/task.h
index 5ecd9af..d80908d 100644
--- a/FreeRTOS/Source/include/task.h
+++ b/FreeRTOS/Source/include/task.h
@@ -1814,15 +1814,19 @@
 

 /**

  * task. h

- * <PRE>void vTaskNotifyClear( TaskHandle_t xTask );</pre>

+ * <PRE>BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );</pre>

  *

- * Clear the notification state of the task referenced by the handle xTask.  The

- * task's notification value is not altered.  Set xTask to NULL to clear the

+ * If the notification state of the task referenced by the handle xTask is 

+ * eNotified, then set the task's notification state to eNotWaitingNotification.  

+ * The task's notification value is not altered.  Set xTask to NULL to clear the

  * notification state of the calling task.

+ *

+ * @return pdTRUE if the task's notification state was set to 

+ * eNotWaitingNotification, otherwise pdFALSE.

  * \defgroup vTaskNotifyClear vTaskNotifyClear

  * \ingroup TaskNotifications

  */

-void vTaskNotifyStateClear( TaskHandle_t xTask );

+BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );

 

 /*-----------------------------------------------------------

  * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES

diff --git a/FreeRTOS/Source/portable/GCC/ARM_CR5/port.c b/FreeRTOS/Source/portable/GCC/ARM_CR5/port.c
new file mode 100644
index 0000000..248be59
--- /dev/null
+++ b/FreeRTOS/Source/portable/GCC/ARM_CR5/port.c
@@ -0,0 +1,567 @@
+/*

+    FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.

+    All rights reserved

+

+    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.

+

+    This file is part of the FreeRTOS distribution.

+

+    FreeRTOS is free software; you can redistribute it and/or modify it under

+    the terms of the GNU General Public License (version 2) as published by the

+    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.

+

+    ***************************************************************************

+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<

+    >>!   distribute a combined work that includes FreeRTOS without being   !<<

+    >>!   obliged to provide the source code for proprietary components     !<<

+    >>!   outside of the FreeRTOS kernel.                                   !<<

+    ***************************************************************************

+

+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY

+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

+    FOR A PARTICULAR PURPOSE.  Full license text is available on the following

+    link: http://www.freertos.org/a00114.html

+

+    ***************************************************************************

+     *                                                                       *

+     *    FreeRTOS provides completely free yet professionally developed,    *

+     *    robust, strictly quality controlled, supported, and cross          *

+     *    platform software that is more than just the market leader, it     *

+     *    is the industry's de facto standard.                               *

+     *                                                                       *

+     *    Help yourself get started quickly while simultaneously helping     *

+     *    to support the FreeRTOS project by purchasing a FreeRTOS           *

+     *    tutorial book, reference manual, or both:                          *

+     *    http://www.FreeRTOS.org/Documentation                              *

+     *                                                                       *

+    ***************************************************************************

+

+    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading

+    the FAQ page "My application does not run, what could be wrong?".  Have you

+    defined configASSERT()?

+

+    http://www.FreeRTOS.org/support - In return for receiving this top quality

+    embedded software for free we request you assist our global community by

+    participating in the support forum.

+

+    http://www.FreeRTOS.org/training - Investing in training allows your team to

+    be as productive as possible as early as possible.  Now you can receive

+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers

+    Ltd, and the world's leading authority on the world's leading RTOS.

+

+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,

+    including FreeRTOS+Trace - an indispensable productivity tool, a DOS

+    compatible FAT file system, and our tiny thread aware UDP/IP stack.

+

+    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.

+    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.

+

+    http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High

+    Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS

+    licenses offer ticketed support, indemnification and commercial middleware.

+

+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety

+    engineered and independently SIL3 certified version for use in safety and

+    mission critical applications that require provable dependability.

+

+    1 tab == 4 spaces!

+*/

+

+/* Standard includes. */

+#include <stdlib.h>

+

+/* Scheduler includes. */

+#include "FreeRTOS.h"

+#include "task.h"

+

+#ifndef configINTERRUPT_CONTROLLER_BASE_ADDRESS

+	#error configINTERRUPT_CONTROLLER_BASE_ADDRESS must be defined.  Refer to Cortex-A equivalent: http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html

+#endif

+

+#ifndef configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET

+	#error configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET must be defined.  Refer to Cortex-A equivalent: http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html

+#endif

+

+#ifndef configUNIQUE_INTERRUPT_PRIORITIES

+	#error configUNIQUE_INTERRUPT_PRIORITIES must be defined.  Refer to Cortex-A equivalent: http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html

+#endif

+

+#ifndef configSETUP_TICK_INTERRUPT

+	#error configSETUP_TICK_INTERRUPT() must be defined.  Refer to Cortex-A equivalent: http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html

+#endif /* configSETUP_TICK_INTERRUPT */

+

+#ifndef configMAX_API_CALL_INTERRUPT_PRIORITY

+	#error configMAX_API_CALL_INTERRUPT_PRIORITY must be defined.  Refer to Cortex-A equivalent: http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html

+#endif

+

+#if configMAX_API_CALL_INTERRUPT_PRIORITY == 0

+	#error configMAX_API_CALL_INTERRUPT_PRIORITY must not be set to 0

+#endif

+

+#if configMAX_API_CALL_INTERRUPT_PRIORITY > configUNIQUE_INTERRUPT_PRIORITIES

+	#error configMAX_API_CALL_INTERRUPT_PRIORITY must be less than or equal to configUNIQUE_INTERRUPT_PRIORITIES as the lower the numeric priority value the higher the logical interrupt priority

+#endif

+

+#if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1

+	/* Check the configuration. */

+	#if( configMAX_PRIORITIES > 32 )

+		#error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32.  It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.

+	#endif

+#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */

+

+/* In case security extensions are implemented. */

+#if configMAX_API_CALL_INTERRUPT_PRIORITY <= ( configUNIQUE_INTERRUPT_PRIORITIES / 2 )

+	#error configMAX_API_CALL_INTERRUPT_PRIORITY must be greater than ( configUNIQUE_INTERRUPT_PRIORITIES / 2 )

+#endif

+

+/* Some vendor specific files default configCLEAR_TICK_INTERRUPT() in

+portmacro.h. */

+#ifndef configCLEAR_TICK_INTERRUPT

+	#define configCLEAR_TICK_INTERRUPT()

+#endif

+

+/* A critical section is exited when the critical section nesting count reaches

+this value. */

+#define portNO_CRITICAL_NESTING			( ( uint32_t ) 0 )

+

+/* In all GICs 255 can be written to the priority mask register to unmask all

+(but the lowest) interrupt priority. */

+#define portUNMASK_VALUE				( 0xFFUL )

+

+/* Tasks are not created with a floating point context, but can be given a

+floating point context after they have been created.  A variable is stored as

+part of the tasks context that holds portNO_FLOATING_POINT_CONTEXT if the task

+does not have an FPU context, or any other value if the task does have an FPU

+context. */

+#define portNO_FLOATING_POINT_CONTEXT	( ( StackType_t ) 0 )

+

+/* Constants required to setup the initial task context. */

+#define portINITIAL_SPSR				( ( StackType_t ) 0x1f ) /* System mode, ARM mode, IRQ enabled FIQ enabled. */

+#define portTHUMB_MODE_BIT				( ( StackType_t ) 0x20 )

+#define portINTERRUPT_ENABLE_BIT		( 0x80UL )

+#define portTHUMB_MODE_ADDRESS			( 0x01UL )

+

+/* Used by portASSERT_IF_INTERRUPT_PRIORITY_INVALID() when ensuring the binary

+point is zero. */

+#define portBINARY_POINT_BITS			( ( uint8_t ) 0x03 )

+

+/* Masks all bits in the APSR other than the mode bits. */

+#define portAPSR_MODE_BITS_MASK			( 0x1F )

+

+/* The value of the mode bits in the APSR when the CPU is executing in user

+mode. */

+#define portAPSR_USER_MODE				( 0x10 )

+

+/* The critical section macros only mask interrupts up to an application

+determined priority level.  Sometimes it is necessary to turn interrupt off in

+the CPU itself before modifying certain hardware registers. */

+#define portCPU_IRQ_DISABLE()										\

+	__asm volatile ( "CPSID i" );									\

+	__asm volatile ( "DSB" );										\

+	__asm volatile ( "ISB" );

+

+#define portCPU_IRQ_ENABLE()										\

+	__asm volatile ( "CPSIE i" );									\

+	__asm volatile ( "DSB" );										\

+	__asm volatile ( "ISB" );

+

+

+/* Macro to unmask all interrupt priorities. */

+#define portCLEAR_INTERRUPT_MASK()									\

+{																	\

+	portCPU_IRQ_DISABLE();											\

+	portICCPMR_PRIORITY_MASK_REGISTER = portUNMASK_VALUE;			\

+	__asm(	"DSB		\n"											\

+			"ISB		\n" );										\

+	portCPU_IRQ_ENABLE();											\

+}

+

+#define portINTERRUPT_PRIORITY_REGISTER_OFFSET		0x400UL

+#define portMAX_8_BIT_VALUE							( ( uint8_t ) 0xff )

+#define portBIT_0_SET								( ( uint8_t ) 0x01 )

+

+/* Let the user override the pre-loading of the initial LR with the address of

+prvTaskExitError() in case is messes up unwinding of the stack in the

+debugger. */

+#ifdef configTASK_RETURN_ADDRESS

+	#define portTASK_RETURN_ADDRESS	configTASK_RETURN_ADDRESS

+#else

+	#define portTASK_RETURN_ADDRESS	prvTaskExitError

+#endif

+

+/*-----------------------------------------------------------*/

+

+/*

+ * Starts the first task executing.  This function is necessarily written in

+ * assembly code so is implemented in portASM.s.

+ */

+extern void vPortRestoreTaskContext( void );

+

+/*

+ * Used to catch tasks that attempt to return from their implementing function.

+ */

+static void prvTaskExitError( void );

+

+/*-----------------------------------------------------------*/

+

+/* A variable is used to keep track of the critical section nesting.  This

+variable has to be stored as part of the task context and must be initialised to

+a non zero value to ensure interrupts don't inadvertently become unmasked before

+the scheduler starts.  As it is stored as part of the task context it will

+automatically be set to 0 when the first task is started. */

+volatile uint32_t ulCriticalNesting = 9999UL;

+

+/* Saved as part of the task context.  If ulPortTaskHasFPUContext is non-zero then

+a floating point context must be saved and restored for the task. */

+uint32_t ulPortTaskHasFPUContext = pdFALSE;

+

+/* Set to 1 to pend a context switch from an ISR. */

+uint32_t ulPortYieldRequired = pdFALSE;

+

+/* Counts the interrupt nesting depth.  A context switch is only performed if

+if the nesting depth is 0. */

+uint32_t ulPortInterruptNesting = 0UL;

+

+/* Used in asm code. */

+__attribute__(( used )) const uint32_t ulICCIAR = portICCIAR_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS;

+__attribute__(( used )) const uint32_t ulICCEOIR = portICCEOIR_END_OF_INTERRUPT_REGISTER_ADDRESS;

+__attribute__(( used )) const uint32_t ulICCPMR	= portICCPMR_PRIORITY_MASK_REGISTER_ADDRESS;

+__attribute__(( used )) const uint32_t ulMaxAPIPriorityMask = ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT );

+

+/*-----------------------------------------------------------*/

+

+/*

+ * See header file for description.

+ */

+StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )

+{

+	/* Setup the initial stack of the task.  The stack is set exactly as

+	expected by the portRESTORE_CONTEXT() macro.

+

+	The fist real value on the stack is the status register, which is set for

+	system mode, with interrupts enabled.  A few NULLs are added first to ensure

+	GDB does not try decoding a non-existent return address. */

+	*pxTopOfStack = ( StackType_t ) NULL;

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) NULL;

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) NULL;

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) portINITIAL_SPSR;

+

+	if( ( ( uint32_t ) pxCode & portTHUMB_MODE_ADDRESS ) != 0x00UL )

+	{

+		/* The task will start in THUMB mode. */

+		*pxTopOfStack |= portTHUMB_MODE_BIT;

+	}

+

+	pxTopOfStack--;

+

+	/* Next the return address, which in this case is the start of the task. */

+	*pxTopOfStack = ( StackType_t ) pxCode;

+	pxTopOfStack--;

+

+	/* Next all the registers other than the stack pointer. */

+	*pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;	/* R14 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x12121212;	/* R12 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x11111111;	/* R11 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x10101010;	/* R10 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x09090909;	/* R9 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x08080808;	/* R8 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x07070707;	/* R7 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x06060606;	/* R6 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x05050505;	/* R5 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x04040404;	/* R4 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x03030303;	/* R3 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x02020202;	/* R2 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) 0x01010101;	/* R1 */

+	pxTopOfStack--;

+	*pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */

+	pxTopOfStack--;

+

+	/* The task will start with a critical nesting count of 0 as interrupts are

+	enabled. */

+	*pxTopOfStack = portNO_CRITICAL_NESTING;

+	pxTopOfStack--;

+

+	/* The task will start without a floating point context.  A task that uses

+	the floating point hardware must call vPortTaskUsesFPU() before executing

+	any floating point instructions. */

+	*pxTopOfStack = portNO_FLOATING_POINT_CONTEXT;

+

+	return pxTopOfStack;

+}

+/*-----------------------------------------------------------*/

+

+static void prvTaskExitError( void )

+{

+	/* A function that implements a task must not exit or attempt to return to

+	its caller as there is nothing to return to.  If a task wants to exit it

+	should instead call vTaskDelete( NULL ).

+

+	Artificially force an assert() to be triggered if configASSERT() is

+	defined, then stop here so application writers can catch the error. */

+	configASSERT( ulPortInterruptNesting == ~0UL );

+	portDISABLE_INTERRUPTS();

+	for( ;; );

+}

+/*-----------------------------------------------------------*/

+

+BaseType_t xPortStartScheduler( void )

+{

+uint32_t ulAPSR, ulCycles = 8; /* 8 bits per byte. */

+

+	#if( configASSERT_DEFINED == 1 )

+	{

+		volatile uint32_t ulOriginalPriority;

+		volatile uint8_t * const pucFirstUserPriorityRegister = ( volatile uint8_t * const ) ( configINTERRUPT_CONTROLLER_BASE_ADDRESS + portINTERRUPT_PRIORITY_REGISTER_OFFSET );

+		volatile uint8_t ucMaxPriorityValue;

+

+		/* Determine how many priority bits are implemented in the GIC.

+

+		Save the interrupt priority value that is about to be clobbered. */

+		ulOriginalPriority = *pucFirstUserPriorityRegister;

+

+		/* Determine the number of priority bits available.  First write to

+		all possible bits. */

+		*pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE;

+

+		/* Read the value back to see how many bits stuck. */

+		ucMaxPriorityValue = *pucFirstUserPriorityRegister;

+

+		/* Shift to the least significant bits. */

+		while( ( ucMaxPriorityValue & portBIT_0_SET ) != portBIT_0_SET )

+		{

+			ucMaxPriorityValue >>= ( uint8_t ) 0x01;

+

+			/* If ulCycles reaches 0 then ucMaxPriorityValue must have been

+			read as 0, indicating a misconfiguration. */

+			ulCycles--;

+			if( ulCycles == 0 )

+			{

+				break;

+			}

+		}

+

+		/* Sanity check configUNIQUE_INTERRUPT_PRIORITIES matches the read

+		value. */

+//		configASSERT( ucMaxPriorityValue == portLOWEST_INTERRUPT_PRIORITY );

+

+		/* Restore the clobbered interrupt priority register to its original

+		value. */

+		*pucFirstUserPriorityRegister = ulOriginalPriority;

+	}

+	#endif /* conifgASSERT_DEFINED */

+

+	/* Only continue if the CPU is not in User mode.  The CPU must be in a

+	Privileged mode for the scheduler to start. */

+	__asm volatile ( "MRS %0, APSR" : "=r" ( ulAPSR ) );

+	ulAPSR &= portAPSR_MODE_BITS_MASK;

+	configASSERT( ulAPSR != portAPSR_USER_MODE );

+

+	if( ulAPSR != portAPSR_USER_MODE )

+	{

+		/* Only continue if the binary point value is set to its lowest possible

+		setting.  See the comments in vPortValidateInterruptPriority() below for

+		more information. */

+		configASSERT( ( portICCBPR_BINARY_POINT_REGISTER & portBINARY_POINT_BITS ) <= portMAX_BINARY_POINT_VALUE );

+

+		if( ( portICCBPR_BINARY_POINT_REGISTER & portBINARY_POINT_BITS ) <= portMAX_BINARY_POINT_VALUE )

+		{

+			/* Interrupts are turned off in the CPU itself to ensure tick does

+			not execute	while the scheduler is being started.  Interrupts are

+			automatically turned back on in the CPU when the first task starts

+			executing. */

+			portCPU_IRQ_DISABLE();

+

+			/* Start the timer that generates the tick ISR. */

+			configSETUP_TICK_INTERRUPT();

+

+			/* Start the first task executing. */

+			vPortRestoreTaskContext();

+		}

+	}

+

+	/* Will only get here if xTaskStartScheduler() was called with the CPU in

+	a non-privileged mode or the binary point register was not set to its lowest

+	possible value.  prvTaskExitError() is referenced to prevent a compiler

+	warning about it being defined but not referenced in the case that the user

+	defines their own exit address. */

+	( void ) prvTaskExitError;

+	return 0;

+}

+/*-----------------------------------------------------------*/

+

+void vPortEndScheduler( void )

+{

+	/* Not implemented in ports where there is nothing to return to.

+	Artificially force an assert. */

+	configASSERT( ulCriticalNesting == 1000UL );

+}

+/*-----------------------------------------------------------*/

+

+void vPortEnterCritical( void )

+{

+	/* Mask interrupts up to the max syscall interrupt priority. */

+	ulPortSetInterruptMask();

+

+	/* Now interrupts are disabled ulCriticalNesting can be accessed

+	directly.  Increment ulCriticalNesting to keep a count of how many times

+	portENTER_CRITICAL() has been called. */

+	ulCriticalNesting++;

+

+	/* This is not the interrupt safe version of the enter critical function so

+	assert() if it is being called from an interrupt context.  Only API

+	functions that end in "FromISR" can be used in an interrupt.  Only assert if

+	the critical nesting count is 1 to protect against recursive calls if the

+	assert function also uses a critical section. */

+	if( ulCriticalNesting == 1 )

+	{

+		configASSERT( ulPortInterruptNesting == 0 );

+	}

+}

+/*-----------------------------------------------------------*/

+

+void vPortExitCritical( void )

+{

+	if( ulCriticalNesting > portNO_CRITICAL_NESTING )

+	{

+		/* Decrement the nesting count as the critical section is being

+		exited. */

+		ulCriticalNesting--;

+

+		/* If the nesting level has reached zero then all interrupt

+		priorities must be re-enabled. */

+		if( ulCriticalNesting == portNO_CRITICAL_NESTING )

+		{

+			/* Critical nesting has reached zero so all interrupt priorities

+			should be unmasked. */

+			portCLEAR_INTERRUPT_MASK();

+		}

+	}

+}

+/*-----------------------------------------------------------*/

+

+void FreeRTOS_Tick_Handler( void )

+{

+	/* Set interrupt mask before altering scheduler structures.   The tick

+	handler runs at the lowest priority, so interrupts cannot already be masked,

+	so there is no need to save and restore the current mask value.  It is

+	necessary to turn off interrupts in the CPU itself while the ICCPMR is being

+	updated. */

+	portCPU_IRQ_DISABLE();

+	portICCPMR_PRIORITY_MASK_REGISTER = ( uint32_t ) ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT );

+	__asm volatile (	"dsb		\n"

+						"isb		\n" );

+	portCPU_IRQ_ENABLE();

+

+	/* Increment the RTOS tick. */

+	if( xTaskIncrementTick() != pdFALSE )

+	{

+		ulPortYieldRequired = pdTRUE;

+	}

+

+	/* Ensure all interrupt priorities are active again. */

+	portCLEAR_INTERRUPT_MASK();

+	configCLEAR_TICK_INTERRUPT();

+}

+/*-----------------------------------------------------------*/

+

+void vPortTaskUsesFPU( void )

+{

+uint32_t ulInitialFPSCR = 0;

+

+	/* A task is registering the fact that it needs an FPU context.  Set the

+	FPU flag (which is saved as part of the task context). */

+	ulPortTaskHasFPUContext = pdTRUE;

+

+	/* Initialise the floating point status register. */

+	__asm volatile ( "FMXR 	FPSCR, %0" :: "r" (ulInitialFPSCR) );

+}

+/*-----------------------------------------------------------*/

+

+void vPortClearInterruptMask( uint32_t ulNewMaskValue )

+{

+	if( ulNewMaskValue == pdFALSE )

+	{

+		portCLEAR_INTERRUPT_MASK();

+	}

+}

+/*-----------------------------------------------------------*/

+

+uint32_t ulPortSetInterruptMask( void )

+{

+uint32_t ulReturn;

+

+	/* Interrupt in the CPU must be turned off while the ICCPMR is being

+	updated. */

+	portCPU_IRQ_DISABLE();

+	if( portICCPMR_PRIORITY_MASK_REGISTER == ( uint32_t ) ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT ) )

+	{

+		/* Interrupts were already masked. */

+		ulReturn = pdTRUE;

+	}

+	else

+	{

+		ulReturn = pdFALSE;

+		portICCPMR_PRIORITY_MASK_REGISTER = ( uint32_t ) ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT );

+		__asm volatile (	"dsb		\n"

+							"isb		\n" );

+	}

+	portCPU_IRQ_ENABLE();

+

+	return ulReturn;

+}

+/*-----------------------------------------------------------*/

+

+#if( configASSERT_DEFINED == 1 )

+

+	void vPortValidateInterruptPriority( void )

+	{

+		/* The following assertion will fail if a service routine (ISR) for

+		an interrupt that has been assigned a priority above

+		configMAX_SYSCALL_INTERRUPT_PRIORITY calls an ISR safe FreeRTOS API

+		function.  ISR safe FreeRTOS API functions must *only* be called

+		from interrupts that have been assigned a priority at or below

+		configMAX_SYSCALL_INTERRUPT_PRIORITY.

+

+		Numerically low interrupt priority numbers represent logically high

+		interrupt priorities, therefore the priority of the interrupt must

+		be set to a value equal to or numerically *higher* than

+		configMAX_SYSCALL_INTERRUPT_PRIORITY.

+

+		FreeRTOS maintains separate thread and ISR API functions to ensure

+		interrupt entry is as fast and simple as possible. */

+

+		configASSERT( portICCRPR_RUNNING_PRIORITY_REGISTER >= ( uint32_t ) ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT ) );

+

+		/* Priority grouping:  The interrupt controller (GIC) allows the bits

+		that define each interrupt's priority to be split between bits that

+		define the interrupt's pre-emption priority bits and bits that define

+		the interrupt's sub-priority.  For simplicity all bits must be defined

+		to be pre-emption priority bits.  The following assertion will fail if

+		this is not the case (if some bits represent a sub-priority).

+

+		The priority grouping is configured by the GIC's binary point register

+		(ICCBPR).  Writting 0 to ICCBPR will ensure it is set to its lowest

+		possible value (which may be above 0). */

+		configASSERT( ( portICCBPR_BINARY_POINT_REGISTER & portBINARY_POINT_BITS ) <= portMAX_BINARY_POINT_VALUE );

+	}

+

+#endif /* configASSERT_DEFINED */

+/*-----------------------------------------------------------*/

+

+

+

diff --git a/FreeRTOS/Source/portable/GCC/ARM_CR5/portASM.S b/FreeRTOS/Source/portable/GCC/ARM_CR5/portASM.S
new file mode 100644
index 0000000..d53b778
--- /dev/null
+++ b/FreeRTOS/Source/portable/GCC/ARM_CR5/portASM.S
@@ -0,0 +1,325 @@
+/*

+    FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.

+    All rights reserved

+

+    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.

+

+    This file is part of the FreeRTOS distribution.

+

+    FreeRTOS is free software; you can redistribute it and/or modify it under

+    the terms of the GNU General Public License (version 2) as published by the

+    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.

+

+    ***************************************************************************

+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<

+    >>!   distribute a combined work that includes FreeRTOS without being   !<<

+    >>!   obliged to provide the source code for proprietary components     !<<

+    >>!   outside of the FreeRTOS kernel.                                   !<<

+    ***************************************************************************

+

+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY

+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

+    FOR A PARTICULAR PURPOSE.  Full license text is available on the following

+    link: http://www.freertos.org/a00114.html

+

+    ***************************************************************************

+     *                                                                       *

+     *    FreeRTOS provides completely free yet professionally developed,    *

+     *    robust, strictly quality controlled, supported, and cross          *

+     *    platform software that is more than just the market leader, it     *

+     *    is the industry's de facto standard.                               *

+     *                                                                       *

+     *    Help yourself get started quickly while simultaneously helping     *

+     *    to support the FreeRTOS project by purchasing a FreeRTOS           *

+     *    tutorial book, reference manual, or both:                          *

+     *    http://www.FreeRTOS.org/Documentation                              *

+     *                                                                       *

+    ***************************************************************************

+

+    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading

+    the FAQ page "My application does not run, what could be wrong?".  Have you

+    defined configASSERT()?

+

+    http://www.FreeRTOS.org/support - In return for receiving this top quality

+    embedded software for free we request you assist our global community by

+    participating in the support forum.

+

+    http://www.FreeRTOS.org/training - Investing in training allows your team to

+    be as productive as possible as early as possible.  Now you can receive

+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers

+    Ltd, and the world's leading authority on the world's leading RTOS.

+

+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,

+    including FreeRTOS+Trace - an indispensable productivity tool, a DOS

+    compatible FAT file system, and our tiny thread aware UDP/IP stack.

+

+    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.

+    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.

+

+    http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High

+    Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS

+    licenses offer ticketed support, indemnification and commercial middleware.

+

+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety

+    engineered and independently SIL3 certified version for use in safety and

+    mission critical applications that require provable dependability.

+

+    1 tab == 4 spaces!

+*/

+

+	.text

+	.arm

+

+	.set SYS_MODE,	0x1f

+	.set SVC_MODE,	0x13

+	.set IRQ_MODE,	0x12

+

+	/* Hardware registers. */

+	.extern ulICCIAR

+	.extern ulICCEOIR

+	.extern ulICCPMR

+

+	/* Variables and functions. */

+	.extern ulMaxAPIPriorityMask

+	.extern _freertos_vector_table

+	.extern pxCurrentTCB

+	.extern vTaskSwitchContext

+	.extern vApplicationIRQHandler

+	.extern ulPortInterruptNesting

+	.extern ulPortTaskHasFPUContext

+

+	.global FreeRTOS_IRQ_Handler

+	.global FreeRTOS_SWI_Handler

+	.global vPortRestoreTaskContext

+	.global vPortInstallFreeRTOSVectorTable

+

+

+

+

+.macro portSAVE_CONTEXT

+

+	/* Save the LR and SPSR onto the system mode stack before switching to

+	system mode to save the remaining system mode registers. */

+	SRSDB	sp!, #SYS_MODE

+	CPS		#SYS_MODE

+	PUSH	{R0-R12, R14}

+

+	/* Push the critical nesting count. */

+	LDR		R2, ulCriticalNestingConst

+	LDR		R1, [R2]

+	PUSH	{R1}

+

+	/* Does the task have a floating point context that needs saving?  If

+	ulPortTaskHasFPUContext is 0 then no. */

+	LDR		R2, ulPortTaskHasFPUContextConst

+	LDR		R3, [R2]

+	CMP		R3, #0

+

+	/* Save the floating point context, if any. */

+	FMRXNE  R1,  FPSCR

+	VPUSHNE {D0-D15}

+	/*VPUSHNE	{D16-D31}*/

+	PUSHNE	{R1}

+

+	/* Save ulPortTaskHasFPUContext itself. */

+	PUSH	{R3}

+

+	/* Save the stack pointer in the TCB. */

+	LDR		R0, pxCurrentTCBConst

+	LDR		R1, [R0]

+	STR		SP, [R1]

+

+	.endm

+

+; /**********************************************************************/

+

+.macro portRESTORE_CONTEXT

+

+	/* Set the SP to point to the stack of the task being restored. */

+	LDR		R0, pxCurrentTCBConst

+	LDR		R1, [R0]

+	LDR		SP, [R1]

+

+	/* Is there a floating point context to restore?  If the restored

+	ulPortTaskHasFPUContext is zero then no. */

+	LDR		R0, ulPortTaskHasFPUContextConst

+	POP		{R1}

+	STR		R1, [R0]

+	CMP		R1, #0

+

+	/* Restore the floating point context, if any. */

+	POPNE 	{R0}

+	/*VPOPNE	{D16-D31}*/

+	VPOPNE	{D0-D15}

+	VMSRNE  FPSCR, R0

+

+	/* Restore the critical section nesting depth. */

+	LDR		R0, ulCriticalNestingConst

+	POP		{R1}

+	STR		R1, [R0]

+

+	/* Ensure the priority mask is correct for the critical nesting depth. */

+	LDR		R2, ulICCPMRConst

+	LDR		R2, [R2]

+	CMP		R1, #0

+	MOVEQ	R4, #255

+	LDRNE	R4, ulMaxAPIPriorityMaskConst

+	LDRNE	R4, [R4]

+	STR		R4, [R2]

+

+	/* Restore all system mode registers other than the SP (which is already

+	being used). */

+	POP		{R0-R12, R14}

+

+	/* Return to the task code, loading CPSR on the way. */

+	RFEIA	sp!

+

+	.endm

+

+

+

+

+/******************************************************************************

+ * SVC handler is used to start the scheduler.

+ *****************************************************************************/

+.align 4

+.type FreeRTOS_SWI_Handler, %function

+FreeRTOS_SWI_Handler:

+	/* Save the context of the current task and select a new task to run. */

+	portSAVE_CONTEXT

+	LDR R0, vTaskSwitchContextConst

+	BLX	R0

+	portRESTORE_CONTEXT

+

+

+/******************************************************************************

+ * vPortRestoreTaskContext is used to start the scheduler.

+ *****************************************************************************/

+.type vPortRestoreTaskContext, %function

+vPortRestoreTaskContext:

+	/* Switch to system mode. */

+	CPS		#SYS_MODE

+	portRESTORE_CONTEXT

+

+.align 4

+.type FreeRTOS_IRQ_Handler, %function

+FreeRTOS_IRQ_Handler:

+

+	/* Return to the interrupted instruction. */

+	SUB		lr, lr, #4

+

+	/* Push the return address and SPSR. */

+	PUSH	{lr}

+	MRS		lr, SPSR

+	PUSH	{lr}

+

+	/* Change to supervisor mode to allow reentry. */

+	CPS		#SVC_MODE

+

+	/* Push used registers. */

+	PUSH	{r0-r4, r12}

+

+	/* Increment nesting count.  r3 holds the address of ulPortInterruptNesting

+	for future use.  r1 holds the original ulPortInterruptNesting value for

+	future use. */

+	LDR		r3, ulPortInterruptNestingConst

+	LDR		r1, [r3]

+	ADD		r4, r1, #1

+	STR		r4, [r3]

+

+	/* Read value from the interrupt acknowledge register, which is stored in r0

+	for future parameter and interrupt clearing use. */

+	LDR 	r2, ulICCIARConst

+	LDR		r2, [r2]

+	LDR		r0, [r2]

+

+	/* Ensure bit 2 of the stack pointer is clear.  r2 holds the bit 2 value for

+	future use. */

+	MOV		r2, sp

+	AND		r2, r2, #4

+	SUB		sp, sp, r2

+

+	/* Call the interrupt handler. */

+	PUSH	{r0-r3, lr}

+	LDR		r1, vApplicationIRQHandlerConst

+	BLX		r1

+	POP		{r0-r3, lr}

+	ADD		sp, sp, r2

+

+	CPSID	i

+	DSB

+	ISB

+

+	/* Write the value read from ICCIAR to ICCEOIR. */

+	LDR 	r4, ulICCEOIRConst

+	LDR		r4, [r4]

+	STR		r0, [r4]

+

+	/* Restore the old nesting count. */

+	STR		r1, [r3]

+

+	/* A context switch is never performed if the nesting count is not 0. */

+	CMP		r1, #0

+	BNE		exit_without_switch

+

+	/* Did the interrupt request a context switch?  r1 holds the address of

+	ulPortYieldRequired and r0 the value of ulPortYieldRequired for future

+	use. */

+	LDR		r1, =ulPortYieldRequired

+	LDR		r0, [r1]

+	CMP		r0, #0

+	BNE		switch_before_exit

+

+exit_without_switch:

+	/* No context switch.  Restore used registers, LR_irq and SPSR before

+	returning. */

+	POP		{r0-r4, r12}

+	CPS		#IRQ_MODE

+	POP		{LR}

+	MSR		SPSR_cxsf, LR

+	POP		{LR}

+	MOVS	PC, LR

+

+switch_before_exit:

+	/* A context swtich is to be performed.  Clear the context switch pending

+	flag. */

+	MOV		r0, #0

+	STR		r0, [r1]

+

+	/* Restore used registers, LR-irq and SPSR before saving the context

+	to the task stack. */

+	POP		{r0-r4, r12}

+	CPS		#IRQ_MODE

+	POP		{LR}

+	MSR		SPSR_cxsf, LR

+	POP		{LR}

+	portSAVE_CONTEXT

+

+	/* Call the function that selects the new task to execute.

+	vTaskSwitchContext() if vTaskSwitchContext() uses LDRD or STRD

+	instructions, or 8 byte aligned stack allocated data.  LR does not need

+	saving as a new LR will be loaded by portRESTORE_CONTEXT anyway. */

+	LDR		R0, vTaskSwitchContextConst

+	BLX		R0

+

+	/* Restore the context of, and branch to, the task selected to execute

+	next. */

+	portRESTORE_CONTEXT

+

+ulICCIARConst:	.word ulICCIAR

+ulICCEOIRConst:	.word ulICCEOIR

+ulICCPMRConst: .word ulICCPMR

+pxCurrentTCBConst: .word pxCurrentTCB

+ulCriticalNestingConst: .word ulCriticalNesting

+ulPortTaskHasFPUContextConst: .word ulPortTaskHasFPUContext

+ulMaxAPIPriorityMaskConst: .word ulMaxAPIPriorityMask

+vTaskSwitchContextConst: .word vTaskSwitchContext

+vApplicationIRQHandlerConst: .word vApplicationIRQHandler

+ulPortInterruptNestingConst: .word ulPortInterruptNesting

+

+.end

+

+

+

+

+

diff --git a/FreeRTOS/Source/portable/GCC/ARM_CR5/portmacro.h b/FreeRTOS/Source/portable/GCC/ARM_CR5/portmacro.h
new file mode 100644
index 0000000..ca11a80
--- /dev/null
+++ b/FreeRTOS/Source/portable/GCC/ARM_CR5/portmacro.h
@@ -0,0 +1,235 @@
+/*

+    FreeRTOS V8.2.2 - Copyright (C) 2015 Real Time Engineers Ltd.

+    All rights reserved

+

+    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.

+

+    This file is part of the FreeRTOS distribution.

+

+    FreeRTOS is free software; you can redistribute it and/or modify it under

+    the terms of the GNU General Public License (version 2) as published by the

+    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.

+

+    ***************************************************************************

+    >>!   NOTE: The modification to the GPL is included to allow you to     !<<

+    >>!   distribute a combined work that includes FreeRTOS without being   !<<

+    >>!   obliged to provide the source code for proprietary components     !<<

+    >>!   outside of the FreeRTOS kernel.                                   !<<

+    ***************************************************************************

+

+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY

+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS

+    FOR A PARTICULAR PURPOSE.  Full license text is available on the following

+    link: http://www.freertos.org/a00114.html

+

+    ***************************************************************************

+     *                                                                       *

+     *    FreeRTOS provides completely free yet professionally developed,    *

+     *    robust, strictly quality controlled, supported, and cross          *

+     *    platform software that is more than just the market leader, it     *

+     *    is the industry's de facto standard.                               *

+     *                                                                       *

+     *    Help yourself get started quickly while simultaneously helping     *

+     *    to support the FreeRTOS project by purchasing a FreeRTOS           *

+     *    tutorial book, reference manual, or both:                          *

+     *    http://www.FreeRTOS.org/Documentation                              *

+     *                                                                       *

+    ***************************************************************************

+

+    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading

+    the FAQ page "My application does not run, what could be wrong?".  Have you

+    defined configASSERT()?

+

+    http://www.FreeRTOS.org/support - In return for receiving this top quality

+    embedded software for free we request you assist our global community by

+    participating in the support forum.

+

+    http://www.FreeRTOS.org/training - Investing in training allows your team to

+    be as productive as possible as early as possible.  Now you can receive

+    FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers

+    Ltd, and the world's leading authority on the world's leading RTOS.

+

+    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,

+    including FreeRTOS+Trace - an indispensable productivity tool, a DOS

+    compatible FAT file system, and our tiny thread aware UDP/IP stack.

+

+    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.

+    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.

+

+    http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High

+    Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS

+    licenses offer ticketed support, indemnification and commercial middleware.

+

+    http://www.SafeRTOS.com - High Integrity Systems also provide a safety

+    engineered and independently SIL3 certified version for use in safety and

+    mission critical applications that require provable dependability.

+

+    1 tab == 4 spaces!

+*/

+

+#ifndef PORTMACRO_H

+#define PORTMACRO_H

+

+#ifdef __cplusplus

+	extern "C" {

+#endif

+

+/*-----------------------------------------------------------

+ * Port specific definitions.

+ *

+ * The settings in this file configure FreeRTOS correctly for the given hardware

+ * and compiler.

+ *

+ * These settings should not be altered.

+ *-----------------------------------------------------------

+ */

+

+/* Type definitions. */

+#define portCHAR		char

+#define portFLOAT		float

+#define portDOUBLE		double

+#define portLONG		long

+#define portSHORT		short

+#define portSTACK_TYPE	uint32_t

+#define portBASE_TYPE	long

+

+typedef portSTACK_TYPE StackType_t;

+typedef long BaseType_t;

+typedef unsigned long UBaseType_t;

+

+typedef uint32_t TickType_t;

+#define portMAX_DELAY ( TickType_t ) 0xffffffffUL

+

+/*-----------------------------------------------------------*/

+

+/* Hardware specifics. */

+#define portSTACK_GROWTH			( -1 )

+#define portTICK_PERIOD_MS			( ( TickType_t ) 1000 / configTICK_RATE_HZ )

+#define portBYTE_ALIGNMENT			8

+

+/*-----------------------------------------------------------*/

+

+/* Task utilities. */

+

+/* Called at the end of an ISR that can cause a context switch. */

+#define portEND_SWITCHING_ISR( xSwitchRequired )\

+{												\

+extern uint32_t ulPortYieldRequired;			\

+												\

+	if( xSwitchRequired != pdFALSE )			\

+	{											\

+		ulPortYieldRequired = pdTRUE;			\

+	}											\

+}

+

+#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )

+#define portYIELD() __asm volatile ( "SWI 0" );

+

+

+/*-----------------------------------------------------------

+ * Critical section control

+ *----------------------------------------------------------*/

+

+extern void vPortEnterCritical( void );

+extern void vPortExitCritical( void );

+extern uint32_t ulPortSetInterruptMask( void );

+extern void vPortClearInterruptMask( uint32_t ulNewMaskValue );

+extern void vPortInstallFreeRTOSVectorTable( void );

+

+/* These macros do not globally disable/enable interrupts.  They do mask off

+interrupts that have a priority below configMAX_API_CALL_INTERRUPT_PRIORITY. */

+#define portENTER_CRITICAL()		vPortEnterCritical();

+#define portEXIT_CRITICAL()			vPortExitCritical();

+#define portDISABLE_INTERRUPTS()	ulPortSetInterruptMask()

+#define portENABLE_INTERRUPTS()		vPortClearInterruptMask( 0 )

+#define portSET_INTERRUPT_MASK_FROM_ISR()		ulPortSetInterruptMask()

+#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x)	vPortClearInterruptMask(x)

+

+/*-----------------------------------------------------------*/

+

+/* Task function macros as described on the FreeRTOS.org WEB site.  These are

+not required for this port but included in case common demo code that uses these

+macros is used. */

+#define portTASK_FUNCTION_PROTO( vFunction, pvParameters )	void vFunction( void *pvParameters )

+#define portTASK_FUNCTION( vFunction, pvParameters )	void vFunction( void *pvParameters )

+

+/* Prototype of the FreeRTOS tick handler.  This must be installed as the

+handler for whichever peripheral is used to generate the RTOS tick. */

+void FreeRTOS_Tick_Handler( void );

+

+/* Any task that uses the floating point unit MUST call vPortTaskUsesFPU()

+before any floating point instructions are executed. */

+void vPortTaskUsesFPU( void );

+#define portTASK_USES_FLOATING_POINT() vPortTaskUsesFPU()

+

+#define portLOWEST_INTERRUPT_PRIORITY ( ( ( uint32_t ) configUNIQUE_INTERRUPT_PRIORITIES ) - 1UL )

+#define portLOWEST_USABLE_INTERRUPT_PRIORITY ( portLOWEST_INTERRUPT_PRIORITY - 1UL )

+

+/* Architecture specific optimisations. */

+#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION

+	#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1

+#endif

+

+#if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1

+

+	/* Store/clear the ready priorities in a bit map. */

+	#define portRECORD_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )

+	#define portRESET_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )

+

+	/*-----------------------------------------------------------*/

+

+	#define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) uxTopPriority = ( 31 - __builtin_clz( uxReadyPriorities ) )

+

+#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */

+

+#ifdef configASSERT

+	void vPortValidateInterruptPriority( void );

+	#define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() 	vPortValidateInterruptPriority()

+#endif /* configASSERT */

+

+#define portNOP() __asm volatile( "NOP" )

+

+

+#ifdef __cplusplus

+	} /* extern C */

+#endif

+

+

+/* The number of bits to shift for an interrupt priority is dependent on the

+number of bits implemented by the interrupt controller. */

+#if configUNIQUE_INTERRUPT_PRIORITIES == 16

+	#define portPRIORITY_SHIFT 4

+	#define portMAX_BINARY_POINT_VALUE	3

+#elif configUNIQUE_INTERRUPT_PRIORITIES == 32

+	#define portPRIORITY_SHIFT 3

+	#define portMAX_BINARY_POINT_VALUE	2

+#elif configUNIQUE_INTERRUPT_PRIORITIES == 64

+	#define portPRIORITY_SHIFT 2

+	#define portMAX_BINARY_POINT_VALUE	1

+#elif configUNIQUE_INTERRUPT_PRIORITIES == 128

+	#define portPRIORITY_SHIFT 1

+	#define portMAX_BINARY_POINT_VALUE	0

+#elif configUNIQUE_INTERRUPT_PRIORITIES == 256

+	#define portPRIORITY_SHIFT 0

+	#define portMAX_BINARY_POINT_VALUE	0

+#else

+	#error Invalid configUNIQUE_INTERRUPT_PRIORITIES setting.  configUNIQUE_INTERRUPT_PRIORITIES must be set to the number of unique priorities implemented by the target hardware

+#endif

+

+/* Interrupt controller access addresses. */

+#define portICCPMR_PRIORITY_MASK_OFFSET  						( 0x04 )

+#define portICCIAR_INTERRUPT_ACKNOWLEDGE_OFFSET 				( 0x0C )

+#define portICCEOIR_END_OF_INTERRUPT_OFFSET 					( 0x10 )

+#define portICCBPR_BINARY_POINT_OFFSET							( 0x08 )

+#define portICCRPR_RUNNING_PRIORITY_OFFSET						( 0x14 )

+

+#define portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS 		( configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET )

+#define portICCPMR_PRIORITY_MASK_REGISTER 					( *( ( volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCPMR_PRIORITY_MASK_OFFSET ) ) )

+#define portICCIAR_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS 	( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCIAR_INTERRUPT_ACKNOWLEDGE_OFFSET )

+#define portICCEOIR_END_OF_INTERRUPT_REGISTER_ADDRESS 		( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCEOIR_END_OF_INTERRUPT_OFFSET )

+#define portICCPMR_PRIORITY_MASK_REGISTER_ADDRESS 			( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCPMR_PRIORITY_MASK_OFFSET )

+#define portICCBPR_BINARY_POINT_REGISTER 					( *( ( const volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCBPR_BINARY_POINT_OFFSET ) ) )

+#define portICCRPR_RUNNING_PRIORITY_REGISTER 				( *( ( const volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCRPR_RUNNING_PRIORITY_OFFSET ) ) )

+

+#endif /* PORTMACRO_H */

+

diff --git a/FreeRTOS/Source/portable/IAR/78K0R/ISR_Support.h b/FreeRTOS/Source/portable/IAR/78K0R/ISR_Support.h
index baabc16..bfc4c00 100644
--- a/FreeRTOS/Source/portable/IAR/78K0R/ISR_Support.h
+++ b/FreeRTOS/Source/portable/IAR/78K0R/ISR_Support.h
@@ -69,15 +69,10 @@
 

 	PUSH      AX                    ; Save AX Register to stack.

 	PUSH      HL

-#if configMEMORY_MODE == 1

 	MOV       A, CS                 ; Save CS register.

 	XCH       A, X

 	MOV       A, ES                 ; Save ES register.

 	PUSH      AX

-#else

-	MOV       A, CS                 ; Save CS register.

-	PUSH      AX

-#endif

 	PUSH      DE                    ; Save the remaining general purpose registers.

 	PUSH      BC

 	MOVW      AX, usCriticalNesting ; Save the usCriticalNesting value.

@@ -104,15 +99,10 @@
 	MOVW      usCriticalNesting, AX

 	POP	      BC                    ; Restore the necessary general purpose registers.

 	POP	      DE

-#if configMEMORY_MODE == 1

 	POP       AX                    ; Restore the ES register.

 	MOV       ES, A

 	XCH       A, X                  ; Restore the CS register.

 	MOV       CS, A

-#else

-	POP       AX

-	MOV       CS, A                 ; Restore CS register.

-#endif

 	POP       HL                    ; Restore general purpose register HL.

 	POP       AX                    ; Restore AX.

 	ENDM

diff --git a/FreeRTOS/Source/portable/IAR/RL78/ISR_Support.h b/FreeRTOS/Source/portable/IAR/RL78/ISR_Support.h
index b9cb63f..3389e22 100644
--- a/FreeRTOS/Source/portable/IAR/RL78/ISR_Support.h
+++ b/FreeRTOS/Source/portable/IAR/RL78/ISR_Support.h
@@ -70,15 +70,10 @@
 

 	PUSH      AX                    ; Save AX Register to stack.

 	PUSH      HL

-#if __DATA_MODEL__ == __DATA_MODEL_FAR__

 	MOV       A, CS                 ; Save CS register.

 	XCH       A, X

 	MOV       A, ES                 ; Save ES register.

 	PUSH      AX

-#else

-	MOV       A, CS                 ; Save CS register.

-	PUSH      AX

-#endif

 	PUSH      DE                    ; Save the remaining general purpose registers.

 	PUSH      BC

 	MOVW      AX, usCriticalNesting ; Save the usCriticalNesting value.

@@ -105,15 +100,10 @@
 	MOVW      usCriticalNesting, AX

 	POP	      BC                    ; Restore the necessary general purpose registers.

 	POP	      DE

-#if __DATA_MODEL__ == __DATA_MODEL_FAR__

 	POP       AX                    ; Restore the ES register.

 	MOV       ES, A

 	XCH       A, X                  ; Restore the CS register.

 	MOV       CS, A

-#else

-	POP       AX

-	MOV       CS, A                 ; Restore CS register.

-#endif

 	POP       HL                    ; Restore general purpose register HL.

 	POP       AX                    ; Restore AX.

 	ENDM

diff --git a/FreeRTOS/Source/portable/MemMang/heap_5.c b/FreeRTOS/Source/portable/MemMang/heap_5.c
index 666ec65..6e957de 100644
--- a/FreeRTOS/Source/portable/MemMang/heap_5.c
+++ b/FreeRTOS/Source/portable/MemMang/heap_5.c
@@ -431,7 +431,7 @@
 void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions )

 {

 BlockLink_t *pxFirstFreeBlockInRegion = NULL, *pxPreviousFreeBlock;

-uint8_t *pucAlignedHeap;

+size_t xAlignedHeap;

 size_t xTotalRegionSize, xTotalHeapSize = 0;

 BaseType_t xDefinedRegions = 0;

 size_t xAddress;

@@ -457,14 +457,14 @@
 			xTotalRegionSize -= xAddress - ( size_t ) pxHeapRegion->pucStartAddress;

 		}

 

-		pucAlignedHeap = ( uint8_t * ) xAddress;

+		xAlignedHeap = xAddress;

 

 		/* Set xStart if it has not already been set. */

 		if( xDefinedRegions == 0 )

 		{

 			/* xStart is used to hold a pointer to the first item in the list of

 			free blocks.  The void cast is used to prevent compiler warnings. */

-			xStart.pxNextFreeBlock = ( BlockLink_t * ) pucAlignedHeap;

+			xStart.pxNextFreeBlock = ( BlockLink_t * ) xAlignedHeap;

 			xStart.xBlockSize = ( size_t ) 0;

 		}

 		else

@@ -483,7 +483,7 @@
 

 		/* pxEnd is used to mark the end of the list of free blocks and is

 		inserted at the end of the region space. */

-		xAddress = ( ( size_t ) pucAlignedHeap ) + xTotalRegionSize;

+		xAddress = xAlignedHeap + xTotalRegionSize;

 		xAddress -= xHeapStructSize;

 		xAddress &= ~portBYTE_ALIGNMENT_MASK;

 		pxEnd = ( BlockLink_t * ) xAddress;

@@ -493,7 +493,7 @@
 		/* To start with there is a single free block in this region that is

 		sized to take up the entire heap region minus the space taken by the

 		free block structure. */

-		pxFirstFreeBlockInRegion = ( BlockLink_t * ) pucAlignedHeap;

+		pxFirstFreeBlockInRegion = ( BlockLink_t * ) xAlignedHeap;

 		pxFirstFreeBlockInRegion->xBlockSize = xAddress - ( size_t ) pxFirstFreeBlockInRegion;

 		pxFirstFreeBlockInRegion->pxNextFreeBlock = pxEnd;

 

diff --git a/FreeRTOS/Source/tasks.c b/FreeRTOS/Source/tasks.c
index bd76742..4228afb 100644
--- a/FreeRTOS/Source/tasks.c
+++ b/FreeRTOS/Source/tasks.c
@@ -2241,8 +2241,7 @@
 		#endif /* configGENERATE_RUN_TIME_STATS */

 

 		/* Check for stack overflow, if configured. */

-		taskFIRST_CHECK_FOR_STACK_OVERFLOW();

-		taskSECOND_CHECK_FOR_STACK_OVERFLOW();

+		taskCHECK_FOR_STACK_OVERFLOW();

 

 		/* Select a new task to run using either the generic C or port

 		optimised asm code. */

@@ -4078,7 +4077,7 @@
 					#endif /* INCLUDE_vTaskSuspend */

 

 					traceTASK_NOTIFY_WAIT_BLOCK();

-					

+

 					/* All ports are written to allow a yield in a critical

 					section (some will yield immediately, others wait until the

 					critical section exits) - but it is not something that

@@ -4100,7 +4099,7 @@
 		taskENTER_CRITICAL();

 		{

 			traceTASK_NOTIFY_WAIT();

-			

+

 			if( pulNotificationValue != NULL )

 			{

 				/* Output the current notification value, which may or may not

@@ -4315,7 +4314,7 @@
 			}

 

 			traceTASK_NOTIFY_FROM_ISR();

-			

+

 			/* If the task is in the blocked state specifically to wait for a

 			notification then unblock it now. */

 			if( eOriginalNotifyState == eWaitingNotification )

@@ -4396,7 +4395,7 @@
 			/* 'Giving' is equivalent to incrementing a count in a counting

 			semaphore. */

 			( pxTCB->ulNotifiedValue )++;

-			

+

 			traceTASK_NOTIFY_GIVE_FROM_ISR();

 

 			/* If the task is in the blocked state specifically to wait for a

@@ -4440,6 +4439,37 @@
 

 /*-----------------------------------------------------------*/

 

+#if( configUSE_TASK_NOTIFICATIONS == 1 )

+

+	BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask )

+	{

+	TCB_t *pxTCB;

+	BaseType_t xReturn;

+

+		pxTCB = ( TCB_t * ) xTask;

+

+		/* If null is passed in here then it is the calling task that is having

+		its notification state cleared. */

+		pxTCB = prvGetTCBFromHandle( pxTCB );

+

+		taskENTER_CRITICAL();

+		{

+			if( pxTCB->eNotifyState == eNotified )

+			{

+				pxTCB->eNotifyState = eNotWaitingNotification;

+				xReturn = pdPASS;

+			}

+			else

+			{

+				xReturn = pdFAIL;

+			}

+		}

+		taskEXIT_CRITICAL();

+

+		return xReturn;

+	}

+

+#endif /* configUSE_TASK_NOTIFICATIONS */

 

 #ifdef FREERTOS_MODULE_TEST

 	#include "tasks_test_access_functions.h"