# About  macro: listGET\_OWNER\_OF\_NEXT\_ENTRY

**URL:** <https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363>\
**Category:** Kernel\
**Created:** [July 18, 2007, 4:41am UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363 "2007-07-18T04:41:39Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://d2v6vdsk2p900z.cloudfront.net/original/1X/7fc8fdb729c645aab5b20282bbe34e57cb407be6.jpeg) [@system](https://forums.freertos.org/u/system)\
**Post date:** [July 18, 2007, 4:41am UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/1 "2007-07-18T04:41:39Z")

</div>

**[ny88](https://sourceforge.net/u/ny88/)** wrote on [Wednesday, July 18, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296):

Posiont:

In Function void vTaskSwitchContext( void ), FreeRTOS 4.3.1, at line 1864  
: listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[uxTopReadyPriority] ) ).

Problem:

Because listGET\_OWNER\_OF\_NEXT\_ENTRY is a macro by defined, the compilers can rarely optimize its parameters. They only replace them simply. I have tested it as below.

A partial Solution:

change " listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[uxTopReadyPriority] ) );"  
to "  
&nbsp;&nbsp; xList\* ppp=&( pxReadyTasksLists[uxTopReadyPriority] );  
&nbsp;&nbsp; listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, ppp );  
"

Test:

Condition: ATMega323, WinAVR20070525, AVR Studio4.13 simulation mode Frequence = 4MHz, makefile: OPT = s, configUSE\_TRACE\_FACILITY == 0.  
Result:  
&nbsp;&nbsp; (1) listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[uxTopReadyPriority] ) ):  
&nbsp;&nbsp; asm:  
1420:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[uxTopReadyPriority] ) );  
+00000100:&nbsp;&nbsp; 91200079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R18,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+00000102:&nbsp;&nbsp; 91800079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R24,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+00000104:&nbsp;&nbsp; 2799&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+00000105:&nbsp;&nbsp; 01FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000106:&nbsp;&nbsp; E0A3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDI&nbsp;&nbsp;&nbsp;&nbsp; R26,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load immediate  
+00000107:&nbsp;&nbsp; 0FEE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LSL&nbsp;&nbsp;&nbsp;&nbsp; R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical Shift Left  
+00000108:&nbsp;&nbsp; 1FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROL&nbsp;&nbsp;&nbsp;&nbsp; R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate Left Through Carry  
+00000109:&nbsp;&nbsp; 95AA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEC&nbsp;&nbsp;&nbsp;&nbsp; R26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decrement  
+0000010A:&nbsp;&nbsp; F7E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC-0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+0000010B:&nbsp;&nbsp; 0FE8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add without carry  
+0000010C:&nbsp;&nbsp; 1FF9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADC&nbsp;&nbsp;&nbsp;&nbsp; R31,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add with carry  
+0000010D:&nbsp;&nbsp; 58E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R30,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+0000010E:&nbsp;&nbsp; 4FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R31,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+0000010F:&nbsp;&nbsp; 8001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R0,Z+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000110:&nbsp;&nbsp; 81F2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R31,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000111:&nbsp;&nbsp; 2DE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp; R30,R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register  
+00000112:&nbsp;&nbsp; 8182&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R24,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000113:&nbsp;&nbsp; 8193&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R25,Z+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000114:&nbsp;&nbsp; 2733&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+00000115:&nbsp;&nbsp; 01F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R30,R18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000116:&nbsp;&nbsp; E073&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDI&nbsp;&nbsp;&nbsp;&nbsp; R23,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load immediate  
+00000117:&nbsp;&nbsp; 0FEE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LSL&nbsp;&nbsp;&nbsp;&nbsp; R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical Shift Left  
+00000118:&nbsp;&nbsp; 1FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROL&nbsp;&nbsp;&nbsp;&nbsp; R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate Left Through Carry  
+00000119:&nbsp;&nbsp; 957A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEC&nbsp;&nbsp;&nbsp;&nbsp; R23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decrement  
+0000011A:&nbsp;&nbsp; F7E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC-0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+0000011B:&nbsp;&nbsp; 0FE2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp; R30,R18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add without carry  
+0000011C:&nbsp;&nbsp; 1FF3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADC&nbsp;&nbsp;&nbsp;&nbsp; R31,R19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add with carry  
+0000011D:&nbsp;&nbsp; 58E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R30,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+0000011E:&nbsp;&nbsp; 4FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R31,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+0000011F:&nbsp;&nbsp; 8392&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Z+2,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+00000120:&nbsp;&nbsp; 8381&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Z+1,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+00000121:&nbsp;&nbsp; 91800079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R24,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+00000123:&nbsp;&nbsp; 91200079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R18,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+00000125:&nbsp;&nbsp; 9F24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MUL&nbsp;&nbsp;&nbsp;&nbsp; R18,R20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Multiply unsigned  
+00000126:&nbsp;&nbsp; 0190&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R18,R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000127:&nbsp;&nbsp; 2411&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+00000128:&nbsp;&nbsp; 572E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R18,0x7E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+00000129:&nbsp;&nbsp; 4F3F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R19,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+0000012A:&nbsp;&nbsp; 2799&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+0000012B:&nbsp;&nbsp; 01FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+0000012C:&nbsp;&nbsp; E063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDI&nbsp;&nbsp;&nbsp;&nbsp; R22,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load immediate  
+0000012D:&nbsp;&nbsp; 0FEE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LSL&nbsp;&nbsp;&nbsp;&nbsp; R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical Shift Left  
+0000012E:&nbsp;&nbsp; 1FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROL&nbsp;&nbsp;&nbsp;&nbsp; R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate Left Through Carry  
+0000012F:&nbsp;&nbsp; 956A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEC&nbsp;&nbsp;&nbsp;&nbsp; R22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decrement  
+00000130:&nbsp;&nbsp; F7E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC-0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+00000131:&nbsp;&nbsp; 0FE8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add without carry  
+00000132:&nbsp;&nbsp; 1FF9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADC&nbsp;&nbsp;&nbsp;&nbsp; R31,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add with carry  
+00000133:&nbsp;&nbsp; 58E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R30,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+00000134:&nbsp;&nbsp; 4FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R31,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+00000135:&nbsp;&nbsp; 8181&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R24,Z+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000136:&nbsp;&nbsp; 8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R25,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000137:&nbsp;&nbsp; 1782&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R24,R18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compare  
+00000138:&nbsp;&nbsp; 0793&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPC&nbsp;&nbsp;&nbsp;&nbsp; R25,R19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compare with carry  
+00000139:&nbsp;&nbsp; F509&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC+0x22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+0000013A:&nbsp;&nbsp; 91200079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R18,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+0000013C:&nbsp;&nbsp; 91800079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R24,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+0000013E:&nbsp;&nbsp; 2799&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+0000013F:&nbsp;&nbsp; 01FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000140:&nbsp;&nbsp; E053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDI&nbsp;&nbsp;&nbsp;&nbsp; R21,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load immediate  
+00000141:&nbsp;&nbsp; 0FEE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LSL&nbsp;&nbsp;&nbsp;&nbsp; R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical Shift Left  
+00000142:&nbsp;&nbsp; 1FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROL&nbsp;&nbsp;&nbsp;&nbsp; R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate Left Through Carry  
+00000143:&nbsp;&nbsp; 955A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEC&nbsp;&nbsp;&nbsp;&nbsp; R21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decrement  
+00000144:&nbsp;&nbsp; F7E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC-0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+00000145:&nbsp;&nbsp; 0FE8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add without carry  
+00000146:&nbsp;&nbsp; 1FF9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADC&nbsp;&nbsp;&nbsp;&nbsp; R31,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add with carry  
+00000147:&nbsp;&nbsp; 58E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R30,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+00000148:&nbsp;&nbsp; 4FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R31,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+00000149:&nbsp;&nbsp; 8001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R0,Z+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000014A:&nbsp;&nbsp; 81F2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R31,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000014B:&nbsp;&nbsp; 2DE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp; R30,R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register  
+0000014C:&nbsp;&nbsp; 8182&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R24,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000014D:&nbsp;&nbsp; 8193&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R25,Z+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000014E:&nbsp;&nbsp; 2733&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+0000014F:&nbsp;&nbsp; 01F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R30,R18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000150:&nbsp;&nbsp; E043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDI&nbsp;&nbsp;&nbsp;&nbsp; R20,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load immediate  
+00000151:&nbsp;&nbsp; 0FEE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LSL&nbsp;&nbsp;&nbsp;&nbsp; R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical Shift Left  
+00000152:&nbsp;&nbsp; 1FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROL&nbsp;&nbsp;&nbsp;&nbsp; R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate Left Through Carry  
+00000153:&nbsp;&nbsp; 954A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEC&nbsp;&nbsp;&nbsp;&nbsp; R20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decrement  
+00000154:&nbsp;&nbsp; F7E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC-0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+00000155:&nbsp;&nbsp; 0FE2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp; R30,R18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add without carry  
+00000156:&nbsp;&nbsp; 1FF3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADC&nbsp;&nbsp;&nbsp;&nbsp; R31,R19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add with carry  
+00000157:&nbsp;&nbsp; 58E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R30,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+00000158:&nbsp;&nbsp; 4FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R31,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+00000159:&nbsp;&nbsp; 8392&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Z+2,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+0000015A:&nbsp;&nbsp; 8381&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Z+1,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+0000015B:&nbsp;&nbsp; 91800079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R24,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+0000015D:&nbsp;&nbsp; 2799&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+0000015E:&nbsp;&nbsp; 01FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+0000015F:&nbsp;&nbsp; E023&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDI&nbsp;&nbsp;&nbsp;&nbsp; R18,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load immediate  
+00000160:&nbsp;&nbsp; 0FEE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LSL&nbsp;&nbsp;&nbsp;&nbsp; R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical Shift Left  
+00000161:&nbsp;&nbsp; 1FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROL&nbsp;&nbsp;&nbsp;&nbsp; R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate Left Through Carry  
+00000162:&nbsp;&nbsp; 952A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEC&nbsp;&nbsp;&nbsp;&nbsp; R18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decrement  
+00000163:&nbsp;&nbsp; F7E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC-0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+00000164:&nbsp;&nbsp; 0FE8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add without carry  
+00000165:&nbsp;&nbsp; 1FF9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADC&nbsp;&nbsp;&nbsp;&nbsp; R31,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add with carry  
+00000166:&nbsp;&nbsp; 58E1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R30,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+00000167:&nbsp;&nbsp; 4FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R31,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
+00000168:&nbsp;&nbsp; 8001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R0,Z+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000169:&nbsp;&nbsp; 81F2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R31,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000016A:&nbsp;&nbsp; 2DE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp; R30,R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register  
+0000016B:&nbsp;&nbsp; 8186&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R24,Z+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000016C:&nbsp;&nbsp; 8197&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R25,Z+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000016D:&nbsp;&nbsp; 93900073&nbsp;&nbsp;&nbsp; STS&nbsp;&nbsp;&nbsp;&nbsp; 0x0073,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store direct to data space  
+0000016F:&nbsp;&nbsp; 93800072&nbsp;&nbsp;&nbsp; STS&nbsp;&nbsp;&nbsp;&nbsp; 0x0072,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store direct to data space  
+00000171:&nbsp;&nbsp; 9508&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subroutine return  
&nbsp;&nbsp; time: ~= 49us

&nbsp;&nbsp;&nbsp; (2) xList\* ppp=&( pxReadyTasksLists[uxTopReadyPriority] );  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, ppp );

1422:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xList\* ppp=&( pxReadyTasksLists[uxTopReadyPriority] );  
+00000102:&nbsp;&nbsp; 91800079&nbsp;&nbsp;&nbsp; LDS&nbsp;&nbsp;&nbsp;&nbsp; R24,0x0079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load direct from data space  
+00000104:&nbsp;&nbsp; 9F89&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MUL&nbsp;&nbsp;&nbsp;&nbsp; R24,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Multiply unsigned  
+00000105:&nbsp;&nbsp; 01D0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R26,R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000106:&nbsp;&nbsp; 2411&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR&nbsp;&nbsp;&nbsp;&nbsp; R1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clear Register  
+00000107:&nbsp;&nbsp; 58A1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBI&nbsp;&nbsp;&nbsp; R26,0x81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate  
+00000108:&nbsp;&nbsp; 4FBF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SBCI&nbsp;&nbsp;&nbsp; R27,0xFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subtract immediate with carry  
1423:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listGET\_OWNER\_OF\_NEXT\_ENTRY( pxCurrentTCB, ppp );  
+00000109:&nbsp;&nbsp; 01ED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R28,R26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+0000010A:&nbsp;&nbsp; 81E9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R30,Y+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000010B:&nbsp;&nbsp; 81FA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R31,Y+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000010C:&nbsp;&nbsp; 8002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R0,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000010D:&nbsp;&nbsp; 81F3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R31,Z+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000010E:&nbsp;&nbsp; 2DE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp; R30,R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register  
+0000010F:&nbsp;&nbsp; 83FA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Y+2,R31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+00000110:&nbsp;&nbsp; 83E9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Y+1,R30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+00000111:&nbsp;&nbsp; 01CD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R24,R26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+00000112:&nbsp;&nbsp; 9603&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADIW&nbsp;&nbsp;&nbsp; R24,0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add immediate to word  
+00000113:&nbsp;&nbsp; 17E8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R30,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compare  
+00000114:&nbsp;&nbsp; 07F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPC&nbsp;&nbsp;&nbsp;&nbsp; R31,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compare with carry  
+00000115:&nbsp;&nbsp; F421&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BRNE&nbsp;&nbsp;&nbsp; PC+0x05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Branch if not equal  
+00000116:&nbsp;&nbsp; 8182&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R24,Z+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000117:&nbsp;&nbsp; 8193&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R25,Z+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+00000118:&nbsp;&nbsp; 839A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Y+2,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+00000119:&nbsp;&nbsp; 8389&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STD&nbsp;&nbsp;&nbsp;&nbsp; Y+1,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store indirect with displacement  
+0000011A:&nbsp;&nbsp; 01ED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVW&nbsp;&nbsp;&nbsp; R28,R26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy register pair  
+0000011B:&nbsp;&nbsp; 81E9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R30,Y+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000011C:&nbsp;&nbsp; 81FA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R31,Y+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000011D:&nbsp;&nbsp; 8186&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R24,Z+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000011E:&nbsp;&nbsp; 8197&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LDD&nbsp;&nbsp;&nbsp;&nbsp; R25,Z+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load indirect with displacement  
+0000011F:&nbsp;&nbsp; 93900073&nbsp;&nbsp;&nbsp; STS&nbsp;&nbsp;&nbsp;&nbsp; 0x0073,R25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store direct to data space  
+00000121:&nbsp;&nbsp; 93800072&nbsp;&nbsp;&nbsp; STS&nbsp;&nbsp;&nbsp;&nbsp; 0x0072,R24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Store direct to data space  
+00000123:&nbsp;&nbsp; 91DF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; POP&nbsp;&nbsp;&nbsp;&nbsp; R29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pop register from stack  
+00000124:&nbsp;&nbsp; 91CF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; POP&nbsp;&nbsp;&nbsp;&nbsp; R28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pop register from stack  
+00000125:&nbsp;&nbsp; 9508&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subroutine return  
&nbsp;&nbsp; time: ~= 14us

End:

Be careful to use a function defined by #define. "Maybe" to implement it with a true function is better in this case. There are some other places like this flaws, please correct it in next version.

B.R.

---

<div class="post-metadata">

**Author:** ![system](https://d2v6vdsk2p900z.cloudfront.net/original/1X/7fc8fdb729c645aab5b20282bbe34e57cb407be6.jpeg) [@system](https://forums.freertos.org/u/system)\
**Post date:** [July 18, 2007, 11:19am UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/2 "2007-07-18T11:19:38Z")

</div>

**[davedoors](https://sourceforge.net/u/davedoors/)** wrote on [Wednesday, July 18, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/614e):

Very good point, I agree.&nbsp; But in part it seems you have a very week optimizer.&nbsp; Here is the ARM IAR equivalent with and without optimization.

&nbsp; Old method no optimization.

&nbsp; 000018E0&nbsp; E59F0638&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+1592]&nbsp;&nbsp;  
&nbsp; 000018E4&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 000018E8&nbsp; E3A0101C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, #0x1C  
&nbsp; 000018EC&nbsp; E59F264C&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [PC, #+1612]&nbsp;&nbsp;  
&nbsp; 000018F0&nbsp; E0202091&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R1, R0, R2  
&nbsp; 000018F4&nbsp; E59F1624&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [PC, #+1572]&nbsp;&nbsp;  
&nbsp; 000018F8&nbsp; E5911000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+0]  
&nbsp; 000018FC&nbsp; E3A0201C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, #0x1C  
&nbsp; 00001900&nbsp; E59F3638&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [PC, #+1592]&nbsp;&nbsp;  
&nbsp; 00001904&nbsp; E0213192&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R2, R1, R3  
&nbsp; 00001908&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 0000190C&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 00001910&nbsp; E5801004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+4]  
&nbsp; 00001914&nbsp; E59F0604&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+1540]&nbsp;&nbsp;  
&nbsp; 00001918&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 0000191C&nbsp; E3A0101C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, #0x1C  
&nbsp; 00001920&nbsp; E59F2618&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [PC, #+1560]&nbsp;&nbsp;  
&nbsp; 00001924&nbsp; E0202091&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R1, R0, R2  
&nbsp; 00001928&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 0000192C&nbsp; E59F15EC&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [PC, #+1516]&nbsp;&nbsp;  
&nbsp; 00001930&nbsp; E5911000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+0]  
&nbsp; 00001934&nbsp; E3A0201C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, #0x1C  
&nbsp; 00001938&nbsp; E59F3600&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [PC, #+1536]&nbsp;&nbsp;  
&nbsp; 0000193C&nbsp; E0213192&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R2, R1, R3  
&nbsp; 00001940&nbsp; E2911008&nbsp; ADDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R1, #0x8  
&nbsp; 00001944&nbsp; E1500001&nbsp; CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R1  
&nbsp; 00001948&nbsp; 1A00000C&nbsp; BNE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x001980  
&nbsp; 0000194C&nbsp; E59F05CC&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+1484]&nbsp;&nbsp;  
&nbsp; 00001950&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 00001954&nbsp; E3A0101C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, #0x1C  
&nbsp; 00001958&nbsp; E59F25E0&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [PC, #+1504]&nbsp;&nbsp;  
&nbsp; 0000195C&nbsp; E0202091&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R1, R0, R2  
&nbsp; 00001960&nbsp; E59F15B8&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [PC, #+1464]&nbsp;&nbsp;  
&nbsp; 00001964&nbsp; E5911000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+0]  
&nbsp; 00001968&nbsp; E3A0201C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, #0x1C  
&nbsp; 0000196C&nbsp; E59F35CC&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [PC, #+1484]&nbsp;&nbsp;  
&nbsp; 00001970&nbsp; E0213192&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R2, R1, R3  
&nbsp; 00001974&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 00001978&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 0000197C&nbsp; E5801004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+4]  
&nbsp; 00001980&nbsp; E59F0170&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+368]&nbsp;&nbsp;&nbsp;  
&nbsp; 00001984&nbsp; E59F1594&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [PC, #+1428]&nbsp;&nbsp;  
&nbsp; 00001988&nbsp; E5911000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+0]  
&nbsp; 0000198C&nbsp; E3A0201C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, #0x1C  
&nbsp; 00001990&nbsp; E59F35A8&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [PC, #+1448]&nbsp;&nbsp;  
&nbsp; 00001994&nbsp; E0213192&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R2, R1, R3  
&nbsp; 00001998&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 0000199C&nbsp; E591100C&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+12]  
&nbsp; 000019A0&nbsp; E5801000&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+0]  
&nbsp; 000019A4&nbsp; E59F014C&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+332]&nbsp;&nbsp;&nbsp;  
&nbsp; 000019A8&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 000019AC&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 000019B0&nbsp; E59F1140&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [PC, #+320]&nbsp;&nbsp;&nbsp;

&nbsp; Old method with optimization.

&nbsp; 00001558&nbsp; E5902000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [R0, #+0]  
&nbsp; 0000155C&nbsp; E0221293&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R3, R2, R1  
&nbsp; 00001560&nbsp; E5903000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R0, #+0]  
&nbsp; 00001564&nbsp; E3A0C01C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R12, #0x1C  
&nbsp; 00001568&nbsp; E023139C&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, R12, R3, R1  
&nbsp; 0000156C&nbsp; E5933004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R3, #+4]  
&nbsp; 00001570&nbsp; E5933004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R3, #+4]  
&nbsp; 00001574&nbsp; E5823004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R2, #+4]  
&nbsp; 00001578&nbsp; E5902000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [R0, #+0]  
&nbsp; 0000157C&nbsp; E1A0300C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, R12  
&nbsp; 00001580&nbsp; E0221293&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R3, R2, R1  
&nbsp; 00001584&nbsp; E5922004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [R2, #+4]  
&nbsp; 00001588&nbsp; E5903000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R0, #+0]  
&nbsp; 0000158C&nbsp; E023139C&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, R12, R3, R1  
&nbsp; 00001590&nbsp; E2833008&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, R3, #0x8  
&nbsp; 00001594&nbsp; E1520003&nbsp; CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R3  
&nbsp; 00001598&nbsp; 1A000007&nbsp; BNE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0015BC  
&nbsp; 0000159C&nbsp; E5902000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [R0, #+0]  
&nbsp; 000015A0&nbsp; E1A0300C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, R12  
&nbsp; 000015A4&nbsp; E0221293&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R3, R2, R1  
&nbsp; 000015A8&nbsp; E5903000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R0, #+0]  
&nbsp; 000015AC&nbsp; E023139C&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, R12, R3, R1  
&nbsp; 000015B0&nbsp; E5933004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R3, #+4]  
&nbsp; 000015B4&nbsp; E5933004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R3, #+4]  
&nbsp; 000015B8&nbsp; E5823004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [R2, #+4]  
&nbsp; 000015BC&nbsp; E59F34B0&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [PC, #+1200]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp; 000015C0&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 000015C4&nbsp; E1A0200C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R12  
&nbsp; 000015C8&nbsp; E0201092&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R2, R0, R1  
&nbsp; 000015CC&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 000015D0&nbsp; E590000C&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+12]  
&nbsp; 000015D4&nbsp; E5830000&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R3, #+0]

&nbsp; New method no optimisation:

&nbsp; 000018E0&nbsp; E59F05C4&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+1476]  
&nbsp; 000018E4&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 000018E8&nbsp; E3A0101C&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, #0x1C  
&nbsp; 000018EC&nbsp; E59F25D8&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, [PC, #+1496]  
&nbsp; 000018F0&nbsp; E0202091&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R1, R0, R2  
&nbsp; 000018F4&nbsp; E1B04000&nbsp; MOVS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R4, R0  
&nbsp; 000018F8&nbsp; E5940004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R4, #+4]  
&nbsp; 000018FC&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 00001900&nbsp; E5840004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R4, #+4]  
&nbsp; 00001904&nbsp; E5940004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R4, #+4]  
&nbsp; 00001908&nbsp; E2941008&nbsp; ADDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R4, #0x8  
&nbsp; 0000190C&nbsp; E1500001&nbsp; CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R1  
&nbsp; 00001910&nbsp; 1A000002&nbsp; BNE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x001920  
&nbsp; 00001914&nbsp; E5940004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R4, #+4]  
&nbsp; 00001918&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 0000191C&nbsp; E5840004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R4, #+4]  
&nbsp; 00001920&nbsp; E59F02F4&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+756]  
&nbsp; 00001924&nbsp; E5941004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R4, #+4]  
&nbsp; 00001928&nbsp; E591100C&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+12]  
&nbsp; 0000192C&nbsp; E5801000&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+0]  
&nbsp; 00001930&nbsp; E59F02E4&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [PC, #+740]  
&nbsp; 00001934&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 00001938&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 0000193C&nbsp; E59F12D8&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [PC, #+728]  
&nbsp; 00001940&nbsp; E5911000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+0]

&nbsp; New method no optimisation:

&nbsp; 00001550&nbsp; E5900000&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+0]  
&nbsp; 00001554&nbsp; E1A02003&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R3  
&nbsp; 00001558&nbsp; E0201092&nbsp; MLA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, R2, R0, R1  
&nbsp; 0000155C&nbsp; E5901004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+4]  
&nbsp; 00001560&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 00001564&nbsp; E5801004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+4]  
&nbsp; 00001568&nbsp; E2802008&nbsp; ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R2, R0, #0x8  
&nbsp; 0000156C&nbsp; E1510002&nbsp; CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, R2  
&nbsp; 00001570&nbsp; 1A000001&nbsp; BNE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00157C  
&nbsp; 00001574&nbsp; E5911004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R1, #+4]  
&nbsp; 00001578&nbsp; E5801004&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R1, [R0, #+4]  
&nbsp; 0000157C&nbsp; E59F34A4&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R3, [PC, #+1188]  
&nbsp; 00001580&nbsp; E5900004&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+4]  
&nbsp; 00001584&nbsp; E590000C&nbsp; LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R0, #+12]  
&nbsp; 00001588&nbsp; E5830000&nbsp; STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R0, [R3, #+0]

With the optimizer the difference is no where near as marked as the AVR code you supplied.

---

<div class="post-metadata">

**Author:** ![rtel](https://d3iykfbgfh8zhg.cloudfront.net/user_avatar/forums.freertos.org/rtel/32/31_2.png) [@rtel](https://forums.freertos.org/u/rtel)\
**Post date:** [July 27, 2007, 8:02am UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/3 "2007-07-27T08:02:50Z")

</div>

**[rtel](https://sourceforge.net/u/rtel/)** wrote on [Friday, July 27, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/fe69):

I have updated the macro in SVN, and will include this in the next release (within the next few days).&nbsp; This seems to be the only place where this can be achieved without actually increasing the compiled code size.

In the change history within the file I have credited the change to B.R.&nbsp; Let me know your full name if you want it included in the project history file.

Thanks for your contribution.

Regards.

---

<div class="post-metadata">

**Author:** ![system](https://d2v6vdsk2p900z.cloudfront.net/original/1X/7fc8fdb729c645aab5b20282bbe34e57cb407be6.jpeg) [@system](https://forums.freertos.org/u/system)\
**Post date:** [July 30, 2007, 3:45pm UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/4 "2007-07-30T15:45:22Z")

</div>

**[ny88](https://sourceforge.net/u/ny88/)** wrote on [Monday, July 30, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/bbb1):

I feel highly honoured that my effort can be acknowledged.  
My name : Niu Yong  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tianjin University  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a Chinese man

---

<div class="post-metadata">

**Author:** ![system](https://d2v6vdsk2p900z.cloudfront.net/original/1X/7fc8fdb729c645aab5b20282bbe34e57cb407be6.jpeg) [@system](https://forums.freertos.org/u/system)\
**Post date:** [August 3, 2007, 5:07pm UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/5 "2007-08-03T17:07:27Z")

</div>

**[adarkar9](https://sourceforge.net/u/adarkar9/)** wrote on [Friday, August 03, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/fe69/919d):

Ouch!&nbsp; I just updated to V4.4.0 and got this "fix".&nbsp; Not only does it increase my compiled code size, but it also breaks the use of this macro in vTaskSwitchContext() for my compiler.

I am using Keil’s C51 compiler on a derivative of the Cygnal 8051 port.&nbsp; C51 uses a compiled stack to compensate for the lack of stack space in the 8051.&nbsp; Prior to this change, vTaskSwitchContext() did not use any compiled stack space and was, therefore, intrinsically reentrant.&nbsp; This change causes vTaskSwitchContext() to use three bytes of the compiled stack for the new pointer copy, causing the function to no longer be reentrant.

I am forced to either add the compiler’s inefficient “reentrant” attribute to the function (which would move the three bytes to a software run-time stack) or revert back to the previous version of the macro.&nbsp; I dislike both options.

Clearly, you can’t please everyone (or every compiler) all of the time.

---

<div class="post-metadata">

**Author:** ![rtel](https://d3iykfbgfh8zhg.cloudfront.net/user_avatar/forums.freertos.org/rtel/32/31_2.png) [@rtel](https://forums.freertos.org/u/rtel)\
**Post date:** [August 3, 2007, 8:57pm UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/6 "2007-08-03T20:57:47Z")

</div>

**[rtel](https://sourceforge.net/u/rtel/)** wrote on [Friday, August 03, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/fe69/919d/f24a):

Thats a bit of a bugger.&nbsp; I tried it on several ports and in each case the code size was smaller.&nbsp; I’m surprised this is not the case for Keil, where they make lots of claims on their code efficiency.&nbsp; Is the same true when you turn optimization on?

Regards.

p.s. Its not a ‘fix’ but an ‘improvement’, not in your case though ☹

---

<div class="post-metadata">

**Author:** ![rtel](https://d3iykfbgfh8zhg.cloudfront.net/user_avatar/forums.freertos.org/rtel/32/31_2.png) [@rtel](https://forums.freertos.org/u/rtel)\
**Post date:** [August 3, 2007, 9:00pm UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/7 "2007-08-03T21:00:02Z")

</div>

**[rtel](https://sourceforge.net/u/rtel/)** wrote on [Friday, August 03, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/fe69/919d/f24a/2bcc):

Does vTaskSwitchContext() need to be reentrant?&nbsp; It is only used with interrupts disabled.

Regards.

---

<div class="post-metadata">

**Author:** ![system](https://d2v6vdsk2p900z.cloudfront.net/original/1X/7fc8fdb729c645aab5b20282bbe34e57cb407be6.jpeg) [@system](https://forums.freertos.org/u/system)\
**Post date:** [August 6, 2007, 2:20pm UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/8 "2007-08-06T14:20:57Z")

</div>

**[adarkar9](https://sourceforge.net/u/adarkar9/)** wrote on [Monday, August 06, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/fe69/919d/f24a/2bcc/d828):

Good point.&nbsp; As long as vTaskSwitchContext() is only called with interrupts disabled, it does not need to be tagged as reentrant.&nbsp; Currently vTaskSwitchContext() is called from the timer tick ISR and vPortYield().&nbsp; I don’t imagine that will change, so I could just remove the function from the overlay analysis.&nbsp; I like that this would only affect the makefile and not the source code.

P.S.&nbsp; Optimization was at maximum.

---

<div class="post-metadata">

**Author:** ![system](https://d2v6vdsk2p900z.cloudfront.net/original/1X/7fc8fdb729c645aab5b20282bbe34e57cb407be6.jpeg) [@system](https://forums.freertos.org/u/system)\
**Post date:** [August 6, 2007, 6:35pm UTC](https://forums.freertos.org/t/about-macro-listget-owner-of-next-entry/5363/9 "2007-08-06T18:35:27Z")

</div>

**[adarkar9](https://sourceforge.net/u/adarkar9/)** wrote on [Monday, August 06, 2007](https://sourceforge.net/p/freertos/discussion/382005/thread/eaf30301/#5296/fe69/919d/f24a/2bcc/d828/e11d):

Update: I removed vTaskSwitchContext() from the overlay analysis and the resultant image uses one more byte of code space and three more bytes of RAM.&nbsp; I can live with that.

Thanks for the suggestion Richard!
