ARM Macro Assembler Page 1 1 00000000 PRESERVE8 2 00000000 THUMB 3 00000000 4 00000000 AREA |.text|, CODE, READONLY 5 00000000 6 00000000 PendSV_Handler PROC 7 00000000 IMPORT kevent_schedule 8 00000000 EXPORT PendSV_Handler 9 00000000 10 00000000 ;PendSVÒì³£´¦Àí³ÌÐòͨ¹ý²åÈëαÔìµÄÒì³£·µ»ØÉÏÏÂÎÄʵÏÖÇÀÕ¼± »ÖжϵÄÏ̵߳ÄCPU 11 00000000 ;²¢ÔÚÇÀÕ¼½áÊøºóÊÖ¶¯µÄ»Ø¸´±»ÖжÏÏ̵߳ÄÉÏÏÂÎÄ 12 00000000 13 00000000 ;µ±·¢ÉúÒ쳣ʱ£¬µ±Ç°µÄLRÓ뱻ѹջµÄxPSRָʾÁ˱»ÖжϵÄÏß³ÌÄ ³Ð©ÅäÖúÍ״̬£¬ 14 00000000 ;LR: 15 00000000 ;BIT3: µ±Õâ¸öλ±»ÉèÖÃʱ£¬Ö¸Ê¾Òì³£·µ»Øµ½Threadģʽ£¬·ñÔò· µ»Øµ½Handlerģʽ£¬PendSVÒì³£·¢Éúʱ£¬Õâ¸öλӦ¸ÃΪ1 16 00000000 ;BIT2: µ±Õâ¸öλ±»ÉèÖÃʱ£¬Ö¸Ê¾Òì³£·µ»ØÊ¹ÓÃPSP»Ö¸´Ïß³ÌÉÏÏ ÎÄ£¬·ñÔòʹÓÃMSP 17 00000000 ; 18 00000000 ;ÒÑѹջµÄxPSR: 19 00000000 ;BIT24: µ±Õâ¸öλ±»ÉèÖÃʱ£¬Òì³£·µ»Øºó½øÈëThumbģʽ£¬·ñÔò· µ»Øµ½ARMģʽ 20 00000000 ;BIT9: µ±Õâ¸öλ±»ÉèÖÃʱ£¬±íʾջÒÑ¿ªÆô8Byte¶ÔÆë£¬²¢Ö¸Ê¾ÔÚ µ¯³öÏß³ÌÉÏÏÂÎĺóSP+4 21 00000000 22 00000000 ;±¸·ÝLRµÄ״̬ 23 00000000 4670 MOV R0, LR 24 00000002 25 00000002 ;ÎÒÃÇÐèÒª²åÈëÒì³£·µ»ØÏÖ³¡ÐèҪʹÓõĿռ䣬²¢»ñÈ¡ËüµÄÕ»¶¥ 26 00000002 27 00000002 ;¼ì²éLR BIT2È·¶¨Òì³£·µ»ØÊ¹ÓÃPSP»¹ÊÇMSP 28 00000002 0741 LSLS R1, R0, #29 29 00000004 D402 BMI INSERT_FAKE_EXC_RETURN_CONTEXT_ SPACE_USE_PSP 30 00000006 31 00000006 ;ÒòΪµ±Ç°´¦ÓÚHandlerģʽ£¬Òò´ËÎÒÃÇ¿ÉÒÔÖ±½ÓʹÓÃSPÀ´²Ù×÷MS P 32 00000006 B088 SUB SP, #32 33 00000008 466A MOV R2, SP 34 0000000A E004 B INSERT_FAKE_EXC_RETURN_CONTEXT_ SPACE_ENDIF 35 0000000C 36 0000000C INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_USE_PSP 37 0000000C ;ÔÚHandlerģʽÏ£¬ÐèҪʹÓÃMRSÓëMSRÖ¸Áî²Ù×÷PSP 38 0000000C F3EF 8209 MRS R2, PSP 39 00000010 3A20 SUBS R2, #32 40 00000012 F382 8809 MSR PSP, R2 41 00000016 INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_ENDIF 42 00000016 43 00000016 ;ÎÒÃÇÉèÖöÑÕ»Öзµ»ØºóµÄλÖÃΪPENDSV_EXCRETURNHANDLER 44 00000016 A005 ADR R0, PENDSV_EXC_RETURN_HANDLER 45 00000018 6190 STR R0, [R2, #24] 46 0000001A 47 0000001A ;ÎÒÃÇÉèÖöÑÕ»ÖÐxPSR£¬Ê¹Òì³£·µ»Øºó½øÈëThumbģʽ²¢»Ö¸´ÒÔǰ µÄIPSR״̬ 48 0000001A 2101 MOVS R1, #1 ARM Macro Assembler Page 2 49 0000001C 0609 LSLS R1, #24 50 0000001E ;¶ÁÈ¡·µ»ØÉÏÏÂÎÄÖеÄIPSR 51 0000001E 6BD0 LDR R0, [R2, #60] 52 00000020 0680 LSLS R0, #26 53 00000022 0E80 LSRS R0, #26 54 00000024 ;ÉèÖÃxPSRΪBIT24 + IPSR 55 00000024 4301 ORRS R1, R0 56 00000026 61D1 STR R1, [R2, #28] 57 00000028 58 00000028 ;Òì³£·µ»Ø£¬½øÈëPENDSV_EXCRETURNHANDLER 59 00000028 4770 BX LR 60 0000002A BF00 NOP 61 0000002C PENDSV_EXC_RETURN_HANDLER 62 0000002C ;µ÷Óõ÷¶È³ÌÐò 63 0000002C F7FF FFFE BL kevent_schedule 64 00000030 65 00000030 ;µ±ÇÀÕ¼³ÌÐòÖ´ÐнáÊøÖ®ºó£¬ÎÒÃÇÐèÒª»Ö¸´ÇÀռǰµÄÉÏÏÂÎÄ 66 00000030 ;ÎÒÃÇ»¹ÐèÒª¼ì²éxPSRµÄBIT9£¬È·¶¨»Ö¸´Ö®ºóµÄÕ»¶¥Î»Öà 67 00000030 68 00000030 ;ÎÒÃǽ«R3Ö¸ÏòÏָ̻߳´ºóÕ»¶¥µÄǰÁ½¸ö×ÖµÄλÖã¬ÓÃÓÚ´æ·ÅR4Ó ëPC 69 00000030 AB06 ADD R3, SP, #24 70 00000032 71 00000032 ;¶ÁÈ¡xPSR 72 00000032 9807 LDR R0, [SP, #28] 73 00000034 74 00000034 ;ÅжÏxPSRµÄBIT9£¬ÈôÖÃλÔòÕ»¶¥ÐèÒª+4 75 00000034 0581 LSLS R1, R0, #22 76 00000036 0FC9 LSRS R1, #31 77 00000038 0089 LSLS R1, #2 78 0000003A 185B ADDS R3, R1 79 0000003C 80 0000003C ;¶ÁÈ¡Ï̵߳ÄPC£¬²¢¸ù¾ÝxPSRµÄBIT24ÉèÖÃThumb»òÕßARMģʽ 81 0000003C 9906 LDR R1, [SP, #24] 82 0000003E 01C2 LSLS R2, R0, #7 83 00000040 0FD2 LSRS R2, #31 84 00000042 4311 ORRS R1, R2 85 00000044 86 00000044 ;ÎÒÃÇ×ÜÊÇÐèÒªÔÚR0-R12£¬LR£¬SP»Ö¸´Ö®ºó²ÅÄÜÖ´Ðзµ»Ø 87 00000044 ;´Ëʱ£¬ÎÒÃÇûÓпÉÒÔʹÓõļĴæÆ÷±£´æPC£¬ 88 00000044 ;Òò´ËÐèÒª½«PC´æÈëÕ»ÖУ¬Ê¹ÓÃPOPÖ¸Áî½øÐлָ´ 89 00000044 ;ͬʱÎÒÃÇÒ²ÎÞ·¨ÔÚ»Ö¸´R0-R3Ö®ºó£¬ÔÙ±£´æÕ»¶¥µÄλÖà 90 00000044 ;Òò´ËÎÒÃDZØÐëʹÓÃR4¼Ç¼ջ¶¥£¬Òò´Ë»¹ÐèÒª¶ÔR4×ö±£´æ 91 00000044 6059 STR R1, [R3, #4] 92 00000046 601C STR R4, [R3, #0] 93 00000048 461C MOV R4, R3 94 0000004A 95 0000004A ;»Ö¸´R12£¬LR£¬xPSR 96 0000004A ;ΪÁ˼æÈÝM0£¬ÎÒÃDz»Ê¹ÓÃLDRDÖ¸ÁîÀ´»Ö¸´R12ÓëLR 97 0000004A F380 8803 MSR xPSR, R0 98 0000004E A804 ADD R0, SP, #16 99 00000050 C806 LDM R0!, {R1-R2} 100 00000052 468C MOV R12, R1 101 00000054 4696 MOV LR, R2 102 00000056 103 00000056 ;»Ö¸´R0-R3£¬SP 104 00000056 BC0F POP {R0-R3} 105 00000058 46A5 MOV SP, R4 106 0000005A ARM Macro Assembler Page 3 107 0000005A ;·µ»Ø±»ÇÀÕ¼µÄÏß³Ì 108 0000005A BD10 POP {R4, PC} 109 0000005C 110 0000005C ENDP 111 0000005C END Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw ork --depend=.\objects\preemption_nofp.d -o.\objects\preemption_nofp.o -IH:\й ¤×÷\eventRTOS\samples\MDK\RTE -ID:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.0.5\De vice\Include -ID:\Keil_v5\ARM\CMSIS\Include --predefine="__UVISION_VERSION SETA 514" --predefine="STM32F10X_LD_VL SETA 1" --list=.\listings\preemption_nofp.ls t ..\..\arch\cortex-m\armcc\preemption_nofp.s ARM Macro Assembler Page 1 Alphabetic symbol ordering Relocatable symbols .text 00000000 Symbol: .text Definitions At line 4 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Uses None Comment: .text unused INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_ENDIF 00000016 Symbol: INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_ENDIF Definitions At line 41 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Uses At line 34 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Comment: INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_ENDIF used once INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_USE_PSP 0000000C Symbol: INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_USE_PSP Definitions At line 36 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Uses At line 29 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Comment: INSERT_FAKE_EXC_RETURN_CONTEXT_SPACE_USE_PSP used once PENDSV_EXC_RETURN_HANDLER 0000002C Symbol: PENDSV_EXC_RETURN_HANDLER Definitions At line 61 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Uses At line 44 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Comment: PENDSV_EXC_RETURN_HANDLER used once PendSV_Handler 00000000 Symbol: PendSV_Handler Definitions At line 6 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Uses At line 8 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Comment: PendSV_Handler used once 5 symbols ARM Macro Assembler Page 1 Alphabetic symbol ordering External symbols kevent_schedule 00000000 Symbol: kevent_schedule Definitions At line 7 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Uses At line 63 in file ..\..\arch\cortex-m\armcc\preemption_nofp.s Comment: kevent_schedule used once 1 symbol 338 symbols in table