?? os_cpu_c.lst
字號:
620 _OSTimeTickHook PROC FAR
621 ?SYMB '',00H,95,0
622 ; Locals:
623 ;
624 ; CSEs:
625 ;
626 ; os_cpu_c.c 167 }
627 ?LINE 167
013E 9830 628 MOV R3,[R0+]
0140 9820 629 MOV R2,[R0+]
0142 D120 630 ATOMIC #03h
0144 ECF3 3 631 PUSH R3
0146 ECF2 2 632 PUSH R2
0148 DB00 1 633 RETS
634 _OSTimeTickHook ENDP
R 635 ?SYMB '',$,17,167
636 ; os_cpu_c.c 168
637 ; os_cpu_c.c 169
638 ; os_cpu_c.c 170 #endif
639 ; os_cpu_c.c 171
640 ; os_cpu_c.c 172 /*
641 ; os_cpu_c.c 173 ***********************************************************************************
**********************
642 ; os_cpu_c.c 174 * BUILD A TASK'S STACK AREA
643 ; os_cpu_c.c 175 *
644 ; os_cpu_c.c 176 * Description: This function is called by OSTaskStkInit to initialise the
645 ; os_cpu_c.c 177 * stack frame of the task being created.
646 ; os_cpu_c.c 178 *
647 ; os_cpu_c.c 179 * Arguments : page is a pointer to the current task user stack page.
648 ; os_cpu_c.c 180 *
649 ; os_cpu_c.c 181 * offset is a pointer to the current task user stack offset.
650 ; os_cpu_c.c 182 *
651 ; os_cpu_c.c 183 * datapag is a pointer to a user supplied data area page when th
e task first executes.
652 ; os_cpu_c.c 184 *
653 ; os_cpu_c.c 185 * datapof is a pointer to a user supplied data area offset when
the task first executes.
654 ; os_cpu_c.c 186 *
655 ; os_cpu_c.c 187 * Returns : None
656 ; os_cpu_c.c 188 ***********************************************************************************
**********************
657 ; os_cpu_c.c 189 */
658 ; os_cpu_c.c 190 void OSTaskBuildStk (INT16U page, INT16U offset, INT16U datapag, INT16U datapof)
659 ; os_cpu_c.c 191 {
660 ?LINE 191
661 PUBLIC _OSTaskBuildStk
R 662 ?SYMB 'OSTaskBuildStk',_OSTaskBuildStk,37,1
663 ?SYMB '',191,8,34
664 _OSTaskBuildStk PROC FAR
665 ?SYMB '',00H,95,0
666 ; @w1 = R12
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc. Date: Dec 5 2000 Time: 10:02:44 Page: 14
os_cpu_c
LOC CODE LINE SOURCELINE
667 ; @w2 = R13
668 ; @w3 = R14
669 ; @w4 = R15
670 ; Locals:
671 ;
672 ; CSEs:
673 ; offset = R13
674 ; datapof = R15
675 ; page = R12
676 ; datapag = R14
677 ;
678 ?SYMB 'page',4,99,272
679 ?SYMB 'offset',3,99,272
680 ?SYMB 'datapag',2,99,272
681 ?SYMB 'datapof',1,99,272
R 682 ?SYMB 'R12',$,100,4
R 683 ?SYMB 'R13',$,100,3
R 684 ?SYMB 'R14',$,100,2
R 685 ?SYMB 'R15',$,100,1
R 686 ?SYMB '',$,102,4
R 687 ?SYMB '',$,102,3
R 688 ?SYMB '',$,102,2
R 689 ?SYMB '',$,102,1
690 ; os_cpu_c.c 192 #pragma asm(@1=page, @2=offset, @3=datapag, @4=datapof)
691 ?LINE 192
692 ?LINE 265
693 ; ; SAVE USED REGISTERS
014A ECF1 694 PUSH R1
014C ECF2 695 PUSH R2
014E ECF3 696 PUSH R3
0150 ECF4 697 PUSH R4
0152 ECFA 698 PUSH R10
0154 EC01 699 PUSH DPP1
700
701 ; ; LOAD INITIAL TASK STACK.
0156 F04D 702 MOV R4,R13 ; Get pointer to Task Stack
0158 F6FC02FE 703 MOV DPP1,R12 ; Task Stack DPP1:R4
015C F02E 704 MOV R2,R14 ; Page pointer to passed parameter
015E F03F 705 MOV R3,R15 ; Offset pointer to passed parameter
706
707 ; ; ADJUST THE TASK USER OFFSET POINTER
0160 06F40A00 708 ADD R4,#10 ; Point at user stack offset
0164 A814 709 MOV R1,[R4] ; Get initial user offset pointer
0166 26F12C00 710 SUB R1,#2Ch ; adjust user offset pointer to save task registers
016A B814 711 MOV [R4],R1 ; Save true user offset pointer
016C F04D 712 MOV R4,R13 ; Reload current stack pointer
713
714 ; ; INITIALISE REGISTER VALUES
016E 2011 715 SUB R1,R1 ; Set R1 to zero
0170 E6FA1111 716 MOV R10,#01111h ; R1 initialised to 1111
0174 88A4 717 MOV [-R4],R10
0176 E6FA2222 718 MOV R10,#02222h ; R2 initialised to 2222
017A 88A4 719 MOV [-R4],R10
017C E6FA3333 720 MOV R10,#03333h ; R3 initialised to 3333
0180 88A4 721 MOV [-R4],R10
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc. Date: Dec 5 2000 Time: 10:02:44 Page: 15
os_cpu_c
LOC CODE LINE SOURCELINE
0182 E6FA4444 722 MOV R10,#04444h ; R4 initialised to 4444
0186 88A4 723 MOV [-R4],R10
0188 E6FA5555 724 MOV R10,#05555h ; R5 initialised to 5555
018C 88A4 725 MOV [-R4],R10
018E E6FA6666 726 MOV R10,#06666h ; R6 initialised to 6666
0192 88A4 727 MOV [-R4],R10
0194 E6FA7777 728 MOV R10,#07777h ; R7 initialised to 7777
0198 88A4 729 MOV [-R4],R10
019A E6FA8888 730 MOV R10,#08888h ; R8 initialised to 8888
019E 88A4 731 MOV [-R4],R10
01A0 E6FA9999 732 MOV R10,#09999h ; R9 initialised to 9999
01A4 88A4 733 MOV [-R4],R10
01A6 E6FAAAAA 734 MOV R10,#0AAAAh ; R10 initialised to AAAA
01AA 88A4 735 MOV [-R4],R10
01AC E6FABBBB 736 MOV R10,#0BBBBh ; R11 initialised to BBBB
01B0 88A4 737 MOV [-R4],R10
01B2 F0A3 738 MOV R10,R3 ; R12 initialised to point @ POF of pdata
01B4 88A4 739 MOV [-R4],R10
01B6 F0A2 740 MOV R10,R2 ; R13 initialised to point @ PAG of pdata
01B8 88A4 741 MOV [-R4],R10
01BA E6FAEEEE 742 MOV R10,#0EEEEh ; R14 initialised to EEEE
01BE 88A4 743 MOV [-R4],R10
01C0 E6FAFFFF 744 MOV R10,#0FFFFh ; R15 initialised to FFFF
01C4 88A4 745 MOV [-R4],R10
01C6 F2FA10FE 746 MOV R10,CP ; Get the Context Pointer (CP)
01CA 88A4 747 MOV [-R4],R10 ; Put it on the user stack
01CC F2FA06FE 748 MOV R10,DPP3 ; Get Data Page Pointer 3 (DPP3)
01D0 88A4 749 MOV [-R4],R10 ; Put it on the user stack
01D2 F2FA04FE 750 MOV R10,DPP2 ; Get Data Page Pointer 2 (DPP2)
01D6 88A4 751 MOV [-R4],R10 ; Put it on the user stack
01D8 F2FA00FE 752 MOV R10,DPP0 ; Get Data Page Pointer 0 (DPP0)
01DC 88A4 753 MOV [-R4],R10 ; Put it on the user stack
01DE 8814 754 MOV [-R4],R1 ; Set Multiply/Divide Control (MDC)
01E0 8814 755 MOV [-R4],R1 ; Set Multiply/Divide High (MDH)
01E2 8814 756 MOV [-R4],R1 ; Set Multiply/Divide Low (MDL)
757
758 ; ; RESTORE USED REGISTERS
01E4 FC01 759 POP DPP1
01E6 FCFA 760 POP R10
01E8 FCF4 761 POP R4
01EA FCF3 762 POP R3
01EC FCF2 763 POP R2
01EE FCF1 764 POP R1
765 ; os_cpu_c.c 265 #pragma endasm
766 ; os_cpu_c.c 266 }
767 ?LINE 266
01F0 9830 768 MOV R3,[R0+]
01F2 9820 769 MOV R2,[R0+]
01F4 D120 770 ATOMIC #03h
01F6 ECF3 3 771 PUSH R3
01F8 ECF2 2 772 PUSH R2
01FA DB00 1 773 RETS
774 _OSTaskBuildStk ENDP
R 775 ?SYMB '',$,17,266
776 ; os_cpu_c.c 267
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc. Date: Dec 5 2000 Time: 10:02:44 Page: 16
os_cpu_c
LOC CODE LINE SOURCELINE
777 ; os_cpu_c.c 268 /*$PAGE*/
778 ; os_cpu_c.c 269 /*
779 ; os_cpu_c.c 270 ***********************************************************************************
**********************
780 ; os_cpu_c.c 271 * INITIALIZE SYSTEM TICK
781 ; os_cpu_c.c 272 *
782 ; os_cpu_c.c 273 * Description: This function is called to initialize and configure the system inter
rupt tick.
783 ; os_cpu_c.c 274 *
784 ; os_cpu_c.c 275 * Arguments : none
785 ; os_cpu_c.c 276 ***********************************************************************************
**********************
786 ; os_cpu_c.c 277 */
787 ; os_cpu_c.c 278 void OSTickISRInit (void)
788 ; os_cpu_c.c 279 {
789 ?LINE 279
790 PUBLIC _OSTickISRInit
R 791 ?SYMB 'OSTickISRInit',_OSTickISRInit,37,1
792 ?SYMB '',279,8,34
793 _OSTickISRInit PROC FAR
794 ?SYMB '',00H,95,0
795 ; Locals:
796 ;
797 ; CSEs:
798 ;
799 ; os_cpu_c.c 280 IEN=1; // allg. Interrupt freigeben
800 ?LINE 280
01FC BF88 801 BSET IEN
802 ; os_cpu_c.c 281 T3CON=0x0; // Mode: Timer, Input Prescaler = 1
6 -> 26ms -> 38 times/sec,
803 ?LINE 281
01FE E6A10000 804 MOV T3CON,#00h
805 ; os_cpu_c.c 282 T3IC=68; // Timer3 Prioritaet und Interrupt
freigeben
806 ?LINE 282
0202 E6B14400 807 MOV T3IC,#044h
808 ; os_cpu_c.c 283 T3R=1;
809 ?LINE 283
0206 6FA1 810 BSET T3R
811 ; os_cpu_c.c 284 }
812 ?LINE 284
0208 9830 813 MOV R3,[R0+]
020A 9820 814 MOV R2,[R0+]
020C D120 815 ATOMIC #03h
020E ECF3 3 816 PUSH R3
0210 ECF2 2 817 PUSH R2
0212 DB00 1 818 RETS
819 _OSTickISRInit ENDP
R 820 ?SYMB '',$,17,284
821 OS_CPU_C_1_PR ENDS
822
823 C166_US SECTION DATA WORD GLBUSRSTACK 'CUSTACK'
0000 824 DS 20
825 C166_US ENDS
826
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc. Date: Dec 5 2000 Time: 10:02:44 Page: 17
os_cpu_c
LOC CODE LINE SOURCELINE
827
828 REGDEF R0-R15
829 END
total errors: 0, warnings: 0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -