📄 os_cpu_c.lis
字号:
0014 ; *
0014 ; * The AVR return stack is placed OS_TASK_HARD_STK_SIZE bytes before the bottom of the task's
0014 ; * stack.
0014 ; *
0014 ; * (1) IMPORTANT: The ICC compiler handles function pointers by actually passing the pointer
0014 ; * to a location in Flash that actually contains the pointer to the function.
0014 ; **********************************************************************************************************
0014 ; */
0014 ;
0014 ; OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)
0014 ; {
0014 .dbline 173
0014 ; INT8U *psoft_stk;
0014 ; INT8U *phard_stk; /* Temp. variable used for setting up AVR hardware stack */
0014 ; INT16U tmp;
0014 ;
0014 ;
0014 ; opt = opt; /* 'opt' is not used, prevent warning */
0014 .dbline 174
0014 ; psoft_stk = (INT8U *)ptos;
0014 A501 movw R20,R10
0016 .dbline 175
0016 ; phard_stk = (INT8U *)ptos
0016 20900200 lds R2,_OSTaskStkSize
001A 30900300 lds R3,_OSTaskStkSize+1
001E 2501 movw R4,R10
0020 4218 sub R4,R2
0022 5308 sbc R5,R3
0024 60910000 lds R22,_OSTaskHardStkSize
0028 70910100 lds R23,_OSTaskHardStkSize+1
002C 640D add R22,R4
002E 751D adc R23,R5
0030 .dbline 179
0030 ; - OSTaskStkSize /* Task stack size */
0030 ; + OSTaskHardStkSize; /* AVR return stack ("hardware stack") */
0030 ;
0030 ; tmp = *(INT16U const *)task; /* (1) ICC compiler handles function pointers indirectly! */
0030 F801 movw R30,R16
0032 A790 elpm R10,Z+
0034 B690 elpm R11,Z
0036 .dbline 181
0036 ;
0036 ; *phard_stk-- = (INT8U)tmp; /* Put task start address on top of "hardware stack" */
0036 1B01 movw R2,R22
0038 6150 subi R22,1
003A 7040 sbci R23,0
003C F101 movw R30,R2
003E A082 std z+0,R10
0040 .dbline 182
0040 ; *phard_stk-- = (INT8U)(tmp >> 8);
0040 2B01 movw R4,R22
0042 6150 subi R22,1
0044 7040 sbci R23,0
0046 1501 movw R2,R10
0048 232C mov R2,R3
004A 3324 clr R3
004C F201 movw R30,R4
004E 2082 std z+0,R2
0050 .dbline 184
0050 ;
0050 ; *psoft_stk-- = (INT8U)0x00; /* R0 = 0x00 */
0050 6A01 movw R12,R20
0052 4150 subi R20,1
0054 5040 sbci R21,0
0056 2224 clr R2
0058 F601 movw R30,R12
005A 2082 std z+0,R2
005C .dbline 185
005C ; *psoft_stk-- = (INT8U)0x01; /* R1 = 0x01 */
005C 6A01 movw R12,R20
005E 4150 subi R20,1
0060 5040 sbci R21,0
0062 81E0 ldi R24,1
0064 F601 movw R30,R12
0066 8083 std z+0,R24
0068 .dbline 186
0068 ; *psoft_stk-- = (INT8U)0x02; /* R2 = 0x02 */
0068 6A01 movw R12,R20
006A 4150 subi R20,1
006C 5040 sbci R21,0
006E 82E0 ldi R24,2
0070 F601 movw R30,R12
0072 8083 std z+0,R24
0074 .dbline 187
0074 ; *psoft_stk-- = (INT8U)0x03; /* R3 = 0x03 */
0074 6A01 movw R12,R20
0076 4150 subi R20,1
0078 5040 sbci R21,0
007A 83E0 ldi R24,3
007C F601 movw R30,R12
007E 8083 std z+0,R24
0080 .dbline 188
0080 ; *psoft_stk-- = (INT8U)0x04; /* R4 = 0x04 */
0080 6A01 movw R12,R20
0082 4150 subi R20,1
0084 5040 sbci R21,0
0086 84E0 ldi R24,4
0088 F601 movw R30,R12
008A 8083 std z+0,R24
008C .dbline 189
008C ; *psoft_stk-- = (INT8U)0x05; /* R5 = 0x05 */
008C 6A01 movw R12,R20
008E 4150 subi R20,1
0090 5040 sbci R21,0
0092 85E0 ldi R24,5
0094 F601 movw R30,R12
0096 8083 std z+0,R24
0098 .dbline 190
0098 ; *psoft_stk-- = (INT8U)0x06; /* R6 = 0x06 */
0098 6A01 movw R12,R20
009A 4150 subi R20,1
009C 5040 sbci R21,0
009E 86E0 ldi R24,6
00A0 F601 movw R30,R12
00A2 8083 std z+0,R24
00A4 .dbline 191
00A4 ; *psoft_stk-- = (INT8U)0x07; /* R7 = 0x07 */
00A4 6A01 movw R12,R20
00A6 4150 subi R20,1
00A8 5040 sbci R21,0
00AA 87E0 ldi R24,7
00AC F601 movw R30,R12
00AE 8083 std z+0,R24
00B0 .dbline 192
00B0 ; *psoft_stk-- = (INT8U)0x08; /* R8 = 0x08 */
00B0 6A01 movw R12,R20
00B2 4150 subi R20,1
00B4 5040 sbci R21,0
00B6 88E0 ldi R24,8
00B8 F601 movw R30,R12
00BA 8083 std z+0,R24
00BC .dbline 193
00BC ; *psoft_stk-- = (INT8U)0x09; /* R9 = 0x09 */
00BC 6A01 movw R12,R20
00BE 4150 subi R20,1
00C0 5040 sbci R21,0
00C2 89E0 ldi R24,9
00C4 F601 movw R30,R12
00C6 8083 std z+0,R24
00C8 .dbline 194
00C8 ; *psoft_stk-- = (INT8U)0x10; /* R10 = 0x10 */
00C8 6A01 movw R12,R20
00CA 4150 subi R20,1
00CC 5040 sbci R21,0
00CE 80E1 ldi R24,16
00D0 F601 movw R30,R12
00D2 8083 std z+0,R24
00D4 .dbline 195
00D4 ; *psoft_stk-- = (INT8U)0x11; /* R11 = 0x11 */
00D4 6A01 movw R12,R20
00D6 4150 subi R20,1
00D8 5040 sbci R21,0
00DA 81E1 ldi R24,17
00DC F601 movw R30,R12
00DE 8083 std z+0,R24
00E0 .dbline 196
00E0 ; *psoft_stk-- = (INT8U)0x12; /* R12 = 0x12 */
00E0 6A01 movw R12,R20
00E2 4150 subi R20,1
00E4 5040 sbci R21,0
00E6 82E1 ldi R24,18
00E8 F601 movw R30,R12
00EA 8083 std z+0,R24
00EC .dbline 197
00EC ; *psoft_stk-- = (INT8U)0x13; /* R13 = 0x13 */
00EC 6A01 movw R12,R20
00EE 4150 subi R20,1
00F0 5040 sbci R21,0
00F2 83E1 ldi R24,19
00F4 F601 movw R30,R12
00F6 8083 std z+0,R24
00F8 .dbline 198
00F8 ; *psoft_stk-- = (INT8U)0x14; /* R14 = 0x14 */
00F8 6A01 movw R12,R20
00FA 4150 subi R20,1
00FC 5040 sbci R21,0
00FE 84E1 ldi R24,20
0100 F601 movw R30,R12
0102 8083 std z+0,R24
0104 .dbline 199
0104 ; *psoft_stk-- = (INT8U)0x15; /* R15 = 0x15 */
0104 6A01 movw R12,R20
0106 4150 subi R20,1
0108 5040 sbci R21,0
010A 85E1 ldi R24,21
010C F601 movw R30,R12
010E 8083 std z+0,R24
0110 .dbline 200
0110 ; tmp = (INT16U)p_arg;
0110 5901 movw R10,R18
0112 .dbline 201
0112 ; *psoft_stk-- = (INT8U)tmp; /* 'p_arg' passed in R17:R16 */
0112 6A01 movw R12,R20
0114 4150 subi R20,1
0116 5040 sbci R21,0
0118 F601 movw R30,R12
011A A082 std z+0,R10
011C .dbline 202
011C ; *psoft_stk-- = (INT8U)(tmp >> 8);
011C 6A01 movw R12,R20
011E 4150 subi R20,1
0120 5040 sbci R21,0
0122 1501 movw R2,R10
0124 232C mov R2,R3
0126 3324 clr R3
0128 F601 movw R30,R12
012A 2082 std z+0,R2
012C .dbline 203
012C ; *psoft_stk-- = (INT8U)0x18; /* R18 = 0x18 */
012C 6A01 movw R12,R20
012E 4150 subi R20,1
0130 5040 sbci R21,0
0132 88E1 ldi R24,24
0134 F601 movw R30,R12
0136 8083 std z+0,R24
0138 .dbline 204
0138 ; *psoft_stk-- = (INT8U)0x19; /* R19 = 0x19 */
0138 6A01 movw R12,R20
013A 4150 subi R20,1
013C 5040 sbci R21,0
013E 89E1 ldi R24,25
0140 F601 movw R30,R12
0142 8083 std z+0,R24
0144 .dbline 205
0144 ; *psoft_stk-- = (INT8U)0x20; /* R20 = 0x20 */
0144 6A01 movw R12,R20
0146 4150 subi R20,1
0148 5040 sbci R21,0
014A 80E2 ldi R24,32
014C F601 movw R30,R12
014E 8083 std z+0,R24
0150 .dbline 206
0150 ; *psoft_stk-- = (INT8U)0x21; /* R21 = 0x21 */
0150 6A01 movw R12,R20
0152 4150 subi R20,1
0154 5040 sbci R21,0
0156 81E2 ldi R24,33
0158 F601 movw R30,R12
015A 8083 std z+0,R24
015C .dbline 207
015C ; *psoft_stk-- = (INT8U)0x22; /* R22 = 0x22 */
015C 6A01 movw R12,R20
015E 4150 subi R20,1
0160 5040 sbci R21,0
0162 82E2 ldi R24,34
0164 F601 movw R30,R12
0166 8083 std z+0,R24
0168 .dbline 208
0168 ; *psoft_stk-- = (INT8U)0x23; /* R23 = 0x23 */
0168 6A01 movw R12,R20
016A 4150 subi R20,1
016C 5040 sbci R21,0
016E 83E2 ldi R24,35
0170 F601 movw R30,R12
0172 8083 std z+0,R24
0174 .dbline 209
0174 ; *psoft_stk-- = (INT8U)0x24; /* R24 = 0x24 */
0174 6A01 movw R12,R20
0176 4150 subi R20,1
0178 5040 sbci R21,0
017A 84E2 ldi R24,36
017C F601 movw R30,R12
017E 8083 std z+0,R24
0180 .dbline 210
0180 ; *psoft_stk-- = (INT8U)0x25; /* R25 = 0x25 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -