os_time.lst

来自「称植到lpc2124上的UCOS2.85版 是本人初学移植和ARM的成果 可」· LST 代码 · 共 748 行 · 第 1/3 页

LST
748
字号
 473 01cc 83E4      		ldi r24,lo8(67)
 474 01ce 90E0      		ldi r25,hi8(67)
 475 01d0 35C0      		rjmp .L19
 476               	.L22:
 188:../OSsrc/os_time.c ****     }
 189:../OSsrc/os_time.c ****     if (ptcb->OSTCBDly == 0) {                                 /* See if task is delayed           
 478               	.LM45:
 479 01d2 ED01      		movw r28,r26
 480 01d4 8F89      		ldd r24,Y+23
 481 01d6 988D      		ldd r25,Y+24
 482 01d8 892B      		or r24,r25
 483 01da 21F4      		brne .L23
 190:../OSsrc/os_time.c ****         OS_EXIT_CRITICAL();
 485               	.LM46:
 486               	/* #APP */
 487 01dc 7894      		sei
 191:../OSsrc/os_time.c ****         return (OS_ERR_TIME_NOT_DLY);                          /* Indicate that task was not delaye
 489               	.LM47:
 490               	/* #NOAPP */
 491 01de 80E5      		ldi r24,lo8(80)
 492 01e0 90E0      		ldi r25,hi8(80)
 493 01e2 2CC0      		rjmp .L19
 494               	.L23:
 192:../OSsrc/os_time.c ****     }
 193:../OSsrc/os_time.c **** 
 194:../OSsrc/os_time.c ****     ptcb->OSTCBDly = 0;                                        /* Clear the time delay             
 496               	.LM48:
 497 01e4 FD01      		movw r30,r26
 498 01e6 108E      		std Z+24,__zero_reg__
 499 01e8 178A      		std Z+23,__zero_reg__
 195:../OSsrc/os_time.c ****     if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
 501               	.LM49:
 502 01ea 218D      		ldd r18,Z+25
 503 01ec 822F      		mov r24,r18
 504 01ee 9927      		clr r25
 505 01f0 8773      		andi r24,lo8(55)
 506 01f2 9070      		andi r25,hi8(55)
 507 01f4 892B      		or r24,r25
 508 01f6 29F0      		breq .L24
 196:../OSsrc/os_time.c ****         ptcb->OSTCBStat     &= ~OS_STAT_PEND_ANY;              /* Yes, Clear status flag           
 510               	.LM50:
 511 01f8 287C      		andi r18,lo8(-56)
 512 01fa 218F      		std Z+25,r18
 197:../OSsrc/os_time.c ****         ptcb->OSTCBStatPend  =  OS_STAT_PEND_TO;               /* Indicate PEND timeout            
 514               	.LM51:
 515 01fc 81E0      		ldi r24,lo8(1)
 516 01fe 828F      		std Z+26,r24
 517 0200 02C0      		rjmp .L25
 518               	.L24:
 198:../OSsrc/os_time.c ****     } else {
 199:../OSsrc/os_time.c ****         ptcb->OSTCBStatPend  =  OS_STAT_PEND_OK;
 520               	.LM52:
 521 0202 ED01      		movw r28,r26
 522 0204 1A8E      		std Y+26,__zero_reg__
 523               	.L25:
 200:../OSsrc/os_time.c ****     }
 201:../OSsrc/os_time.c ****     if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* Is task suspended?               
 525               	.LM53:
 526 0206 FD01      		movw r30,r26
 527 0208 818D      		ldd r24,Z+25
 528 020a 83FD      		sbrc r24,3
 529 020c 14C0      		rjmp .L26
 202:../OSsrc/os_time.c ****         OSRdyGrp               |= ptcb->OSTCBBitY;             /* No,  Make ready                  
 531               	.LM54:
 532 020e 8091 0000 		lds r24,OSRdyGrp
 533 0212 978D      		ldd r25,Z+31
 534 0214 892B      		or r24,r25
 535 0216 8093 0000 		sts OSRdyGrp,r24
 203:../OSsrc/os_time.c ****         OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
 537               	.LM55:
 538 021a 858D      		ldd r24,Z+29
 539 021c E82F      		mov r30,r24
 540 021e FF27      		clr r31
 541 0220 E050      		subi r30,lo8(-(OSRdyTbl))
 542 0222 F040      		sbci r31,hi8(-(OSRdyTbl))
 543 0224 8081      		ld r24,Z
 544 0226 ED01      		movw r28,r26
 545 0228 9E8D      		ldd r25,Y+30
 546 022a 892B      		or r24,r25
 547 022c 8083      		st Z,r24
 204:../OSsrc/os_time.c ****         OS_EXIT_CRITICAL();
 549               	.LM56:
 550               	/* #APP */
 551 022e 7894      		sei
 205:../OSsrc/os_time.c ****         OS_Sched();                                            /* See if this is new highest priori
 553               	.LM57:
 554               	/* #NOAPP */
 555 0230 0E94 0000 		call OS_Sched
 556 0234 01C0      		rjmp .L27
 557               	.L26:
 206:../OSsrc/os_time.c ****     } else {
 207:../OSsrc/os_time.c ****         OS_EXIT_CRITICAL();                                    /* Task may be suspended            
 559               	.LM58:
 560               	/* #APP */
 561 0236 7894      		sei
 562               	/* #NOAPP */
 563               	.L27:
 208:../OSsrc/os_time.c ****     }
 209:../OSsrc/os_time.c ****     return (OS_ERR_NONE);
 565               	.LM59:
 566 0238 80E0      		ldi r24,lo8(0)
 567 023a 90E0      		ldi r25,hi8(0)
 568               	.L19:
 569               	/* epilogue: frame size=0 */
 570 023c DF91      		pop r29
 571 023e CF91      		pop r28
 572 0240 0895      		ret
 573               	/* epilogue end (size=3) */
 574               	/* function OSTimeDlyResume size 89 (84) */
 579               	.Lscope2:
 581               	.global	OSTimeGet
 583               	OSTimeGet:
 210:../OSsrc/os_time.c **** }
 211:../OSsrc/os_time.c **** #endif
 212:../OSsrc/os_time.c **** /*$PAGE*/
 213:../OSsrc/os_time.c **** /*
 214:../OSsrc/os_time.c **** ***************************************************************************************************
 215:../OSsrc/os_time.c **** *                                         GET CURRENT SYSTEM TIME
 216:../OSsrc/os_time.c **** *
 217:../OSsrc/os_time.c **** * Description: This function is used by your application to obtain the current value of the 32-bit
 218:../OSsrc/os_time.c **** *              counter which keeps track of the number of clock ticks.
 219:../OSsrc/os_time.c **** *
 220:../OSsrc/os_time.c **** * Arguments  : none
 221:../OSsrc/os_time.c **** *
 222:../OSsrc/os_time.c **** * Returns    : The current value of OSTime
 223:../OSsrc/os_time.c **** ***************************************************************************************************
 224:../OSsrc/os_time.c **** */
 225:../OSsrc/os_time.c **** 
 226:../OSsrc/os_time.c **** #if OS_TIME_GET_SET_EN > 0
 227:../OSsrc/os_time.c **** INT32U  OSTimeGet (void)
 228:../OSsrc/os_time.c **** {
 585               	.LM60:
 586               	/* prologue: frame size=0 */
 587               	/* prologue end (size=0) */
 229:../OSsrc/os_time.c ****     INT32U     ticks;
 230:../OSsrc/os_time.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 231:../OSsrc/os_time.c ****     OS_CPU_SR  cpu_sr = 0;
 232:../OSsrc/os_time.c **** #endif
 233:../OSsrc/os_time.c **** 
 234:../OSsrc/os_time.c **** 
 235:../OSsrc/os_time.c **** 
 236:../OSsrc/os_time.c ****     OS_ENTER_CRITICAL();
 589               	.LM61:
 590               	/* #APP */
 591 0242 F894      		cli
 237:../OSsrc/os_time.c ****     ticks = OSTime;
 593               	.LM62:
 594               	/* #NOAPP */
 595 0244 8091 0000 		lds r24,OSTime
 596 0248 9091 0000 		lds r25,(OSTime)+1
 597 024c A091 0000 		lds r26,(OSTime)+2
 598 0250 B091 0000 		lds r27,(OSTime)+3
 238:../OSsrc/os_time.c ****     OS_EXIT_CRITICAL();
 600               	.LM63:
 601               	/* #APP */
 602 0254 7894      		sei
 239:../OSsrc/os_time.c ****     return (ticks);
 240:../OSsrc/os_time.c **** }
 604               	.LM64:
 605               	/* #NOAPP */
 606 0256 BC01      		movw r22,r24
 607 0258 CD01      		movw r24,r26
 608               	/* epilogue: frame size=0 */
 609 025a 0895      		ret
 610               	/* epilogue end (size=1) */
 611               	/* function OSTimeGet size 15 (14) */
 616               	.Lscope3:
 619               	.global	OSTimeSet
 621               	OSTimeSet:
 241:../OSsrc/os_time.c **** #endif
 242:../OSsrc/os_time.c **** 
 243:../OSsrc/os_time.c **** /*
 244:../OSsrc/os_time.c **** ***************************************************************************************************
 245:../OSsrc/os_time.c **** *                                            SET SYSTEM CLOCK
 246:../OSsrc/os_time.c **** *
 247:../OSsrc/os_time.c **** * Description: This function sets the 32-bit counter which keeps track of the number of clock ticks
 248:../OSsrc/os_time.c **** *
 249:../OSsrc/os_time.c **** * Arguments  : ticks      specifies the new value that OSTime needs to take.
 250:../OSsrc/os_time.c **** *
 251:../OSsrc/os_time.c **** * Returns    : none
 252:../OSsrc/os_time.c **** ***************************************************************************************************
 253:../OSsrc/os_time.c **** */
 254:../OSsrc/os_time.c **** 
 255:../OSsrc/os_time.c **** #if OS_TIME_GET_SET_EN > 0
 256:../OSsrc/os_time.c **** void  OSTimeSet (INT32U ticks)
 257:../OSsrc/os_time.c **** {
 623               	.LM65:
 624               	/* prologue: frame size=0 */
 625               	/* prologue end (size=0) */
 626 025c DC01      		movw r26,r24
 627 025e CB01      		movw r24,r22
 258:../OSsrc/os_time.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 259:../OSsrc/os_time.c ****     OS_CPU_SR  cpu_sr = 0;
 260:../OSsrc/os_time.c **** #endif
 261:../OSsrc/os_time.c **** 
 262:../OSsrc/os_time.c **** 
 263:../OSsrc/os_time.c **** 
 264:../OSsrc/os_time.c ****     OS_ENTER_CRITICAL();
 629               	.LM66:
 630               	/* #APP */
 631 0260 F894      		cli
 265:../OSsrc/os_time.c ****     OSTime = ticks;
 633               	.LM67:
 634               	/* #NOAPP */
 635 0262 8093 0000 		sts OSTime,r24
 636 0266 9093 0000 		sts (OSTime)+1,r25
 637 026a A093 0000 		sts (OSTime)+2,r26
 638 026e B093 0000 		sts (OSTime)+3,r27
 266:../OSsrc/os_time.c ****     OS_EXIT_CRITICAL();
 640               	.LM68:
 641               	/* #APP */
 642 0272 7894      		sei
 643               	/* #NOAPP */
 644               	/* epilogue: frame size=0 */
 645 0274 0895      		ret
 646               	/* epilogue end (size=1) */
 647               	/* function OSTimeSet size 15 (14) */
 649               	.Lscope4:
 650               		.text
 652               	Letext:
 653               	/* File "../OSsrc/os_time.c": code  328 = 0x0148 ( 295), prologues  14, epilogues  19 */
DEFINED SYMBOLS
                            *ABS*:00000000 os_time.c
C:\WINDOWS\TEMP/cckbbaaa.s:3      *ABS*:0000003f __SREG__
C:\WINDOWS\TEMP/cckbbaaa.s:4      *ABS*:0000003e __SP_H__
C:\WINDOWS\TEMP/cckbbaaa.s:5      *ABS*:0000003d __SP_L__
C:\WINDOWS\TEMP/cckbbaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\WINDOWS\TEMP/cckbbaaa.s:7      *ABS*:00000001 __zero_reg__
C:\WINDOWS\TEMP/cckbbaaa.s:110    .text:00000000 OSTimeDly
C:\WINDOWS\TEMP/cckbbaaa.s:194    .text:00000058 OSTimeDlyHMSM
C:\WINDOWS\TEMP/cckbbaaa.s:417    .text:0000019c OSTimeDlyResume
C:\WINDOWS\TEMP/cckbbaaa.s:583    .text:00000242 OSTimeGet
C:\WINDOWS\TEMP/cckbbaaa.s:621    .text:0000025c OSTimeSet
C:\WINDOWS\TEMP/cckbbaaa.s:652    .text:00000276 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
OSIntNesting
OSTCBCur
OSRdyTbl
OSRdyGrp
OS_Sched
__mulsi3
__udivmodsi4
OSTCBPrioTbl
OSTime

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?