?? os_cpu_c.src
字號:
; C166/ST10 C compiler v6.0 r2 SN00082920-161 (c) 1998 TASKING, Inc.
; options: -Id:\c166\include -IC:\software\UCOS-II\C167\Tasking\test
; -IC:\software\UCOS-II\C167\Tasking\source
; -IC:\software\UCOS-II\C167\Tasking\Test -IC:\software\UCOS-II\SOURCE
; -xmifp -Ml -P -FFSc -Ot -OB -zautobitastruct-4 -zautobita-0 -T256 -s
; -g -zvolatile_union -A1 -O1
$DEBUG
$NOLOCALS
$EXTEND
$NOMOD166
$STDNAMES(reg.def)
$SEGMENTED
$CASE
$MODEL(LARGE)
$CHECKCPU16
NAME OS_CPU_C
ASSUME DPP3:SYSTEM
?SYMB 'c:\software\ucos-ii\c167\tasking\source\os_cpu_c.c',32,80,16
?SYMB '',1,82,0
?SYMB '80166',0,84,0
?SYMB '',0,81,0
?SYMB 'void',00H,45,1
?SYMB 'char',080000H,45,2
?SYMB 'unsigned char',080000H,45,3
?SYMB 'short',0100000H,45,4
?SYMB 'unsigned short',0100000H,45,5
?SYMB 'long',0200000H,45,6
?SYMB 'unsigned long',0200000H,45,7
?SYMB 'float',0200000H,45,10
?SYMB 'double',0400000H,45,11
?SYMB 'int',0100000H,45,16
?SYMB 'unsigned int',0100000H,45,18
?SYMB 'bit',010000H,7,256
?SYMB 'c:\software\ucos-ii\c167\tasking\source\os_cpu_c.c',0,29,1
?SYMB '',0,86,1
; os_cpu_c.c 1 /*
; os_cpu_c.c 2 *********************************************************************************************************
; os_cpu_c.c 3 * uC/OS-II
; os_cpu_c.c 4 * The Real-Time Kernel
; os_cpu_c.c 5 *
; os_cpu_c.c 6 * (c) Copyright 1992-1999, Jean J. Labrosse, Weston, FL
; os_cpu_c.c 7 * All Rights Reserved
; os_cpu_c.c 8 *
; os_cpu_c.c 9 *
; os_cpu_c.c 10 * C167 Specific code
; os_cpu_c.c 11 * LARGE MEMORY MODEL
; os_cpu_c.c 12 *
; os_cpu_c.c 13 * File : OS_CPU_C.C
; os_cpu_c.c 14 * By : Jean J. Labrosse
; os_cpu_c.c 15 * Michael Awosika
; os_cpu_c.c 16 Karl Wannenmacher
; os_cpu_c.c 17 *********************************************************************************************************
; os_cpu_c.c 18 */
; os_cpu_c.c 19
; os_cpu_c.c 20 #define OS_CPU_GLOBALS
; os_cpu_c.c 21 #include "includes.h"
?SYMB 'C:\software\UCOS-II\C167\Tasking\test\includes.h',0,29,2
?SYMB '',0,86,2
?SYMB 'd:\c166\include\stdio.h',0,29,3
?SYMB '',0,86,3
?SYMB 'd:\c166\include\stdarg.h',0,29,4
?SYMB '',0,86,4
?SYMB '',0,86,3
?SYMB '',01a0002H,38,258
?SYMB '_iobuf',0,40,259
?SYMB '_ptr',0,23,258
?SYMB '_cnt',32,23,16
?SYMB '_base',48,23,258
?SYMB '_flag',80,23,2
?SYMB '_file',88,23,2
?SYMB '_bufsiz',96,23,16
?SYMB '',112,18,0
?SYMB 'FILE',259,13,260
?SYMB '',01a0001H,38,262
?SYMB '',01080106H,5,263
?SYMB '',16,47,264
?SYMB '',0,30,0
?SYMB '',0,49,0
?SYMB 'va_list',263,13,265
?SYMB 'size_t',18,13,266
?SYMB 'fpos_t',7,13,267
?SYMB '',0,86,2
?SYMB 'd:\c166\include\string.h',0,29,3
?SYMB '',0,86,3
?SYMB '',0,86,2
?SYMB 'd:\c166\include\ctype.h',0,29,3
?SYMB '',0,86,3
?SYMB '',0,86,2
?SYMB 'd:\c166\include\stdlib.h',0,29,3
?SYMB '',0,86,3
?SYMB 'T$1',0,40,268
?SYMB 'quot',0,23,16
?SYMB 'rem',16,23,16
?SYMB '',32,18,0
?SYMB 'div_t',268,13,269
?SYMB 'T$2',0,40,270
?SYMB 'quot',0,23,6
?SYMB 'rem',32,23,6
?SYMB '',64,18,0
?SYMB 'ldiv_t',270,13,271
?SYMB '',0,86,2
?SYMB 'd:\c166\include\reg167.h',0,29,3
?SYMB '',0,86,3
?SYMB '',0,86,2
?SYMB 'C:\software\UCOS-II\C167\Tasking\source\os_cpu.h',0,29,3
?SYMB '',0,86,3
?SYMB 'INT16U',5,13,272
?SYMB '',0,86,2
?SYMB 'C:\software\UCOS-II\C167\Tasking\test\os_cfg.h',0,29,3
?SYMB '',0,86,3
?SYMB '',0,86,2
?SYMB 'C:\software\UCOS-II\C167\Tasking\source\ucos_ii.h',0,29,3
?SYMB '',0,86,3
?SYMB 'INT8U',3,13,273
?SYMB 'OS_STK',18,13,274
?SYMB '',01140111H,5,275
?SYMB '',16,47,276
?SYMB '',0,30,0
?SYMB '',1,49,0
?SYMB 'T$3',0,40,277
?SYMB 'OSEventPtr',0,23,262
?SYMB 'OSEventTbl',32,23,275
?SYMB 'OSEventCnt',48,23,272
?SYMB 'OSEventType',64,23,273
?SYMB 'OSEventGrp',72,23,273
?SYMB '',80,18,0
?SYMB 'OS_EVENT',277,13,278
?SYMB 'INT32U',7,13,279
?SYMB 'INT8S',2,13,280
?SYMB 'BOOLEAN',3,13,281
?SYMB '',01a0112H,38,283
?SYMB '',01a011cH,38,286
?SYMB '',01a0116H,38,288
?SYMB 'os_tcb',0,40,284
?SYMB 'OSTCBStkPtr',0,23,283
?SYMB 'OSTCBNext',32,23,286
?SYMB 'OSTCBPrev',64,23,286
?SYMB 'OSTCBEventPtr',96,23,288
?SYMB 'OSTCBMsg',128,23,262
?SYMB 'OSTCBDly',160,23,272
?SYMB 'OSTCBStat',176,23,273
?SYMB 'OSTCBPrio',184,23,273
?SYMB 'OSTCBX',192,23,273
?SYMB 'OSTCBY',200,23,273
?SYMB 'OSTCBBitX',208,23,273
?SYMB 'OSTCBBitY',216,23,273
?SYMB '',224,18,0
?SYMB 'OS_TCB',284,13,289
?SYMB 'T$4',0,40,290
?SYMB 'OSMsg',0,23,262
?SYMB 'OSEventTbl',32,23,275
?SYMB 'OSEventGrp',48,23,273
?SYMB '',64,18,0
?SYMB 'OS_MBOX_DATA',290,13,291
?SYMB 'T$5',0,40,292
?SYMB 'OSMsg',0,23,262
?SYMB 'OSNMsgs',32,23,272
?SYMB 'OSQSize',48,23,272
?SYMB 'OSEventTbl',64,23,275
?SYMB 'OSEventGrp',80,23,273
?SYMB '',96,18,0
?SYMB 'OS_Q_DATA',292,13,293
?SYMB 'T$6',0,40,294
?SYMB 'OSCnt',0,23,272
?SYMB 'OSEventTbl',16,23,275
?SYMB 'OSEventGrp',32,23,273
?SYMB '',48,18,0
?SYMB 'OS_SEM_DATA',294,13,295
?SYMB '',0,86,2
?SYMB '',0,86,1
; os_cpu_c.c 22
; os_cpu_c.c 23 /*
; os_cpu_c.c 24 *********************************************************************************************************
; os_cpu_c.c 25 * INITIALISE A TASK'S STACK
; os_cpu_c.c 26 *
; os_cpu_c.c 27 * Description: This function is called by either OSTaskCreate() or OSTaskCreateExt() to initialise the
; os_cpu_c.c 28 * stack frame of the task being created. This function is highly processor specific.
; os_cpu_c.c 29 *
; os_cpu_c.c 30 * Arguments : task is a pointer to the task code
; os_cpu_c.c 31 *
; os_cpu_c.c 32 * pdata is a pointer to a user supplied data area that will be passed to the task
; os_cpu_c.c 33 * when the task first executes.
; os_cpu_c.c 34 *
; os_cpu_c.c 35 * ptos is a pointer to the top of stack. It is assumed that 'ptos' points to
; os_cpu_c.c 36 * a 'free' entry on the task stack. If OS_STK_GROWTH is set to 1 then
; os_cpu_c.c 37 * 'ptos' will contain the HIGHEST valid address of the stack. Similarly, if
; os_cpu_c.c 38 * OS_STK_GROWTH is set to 0, the 'ptos' will contains the LOWEST valid address
; os_cpu_c.c 39 * of the stack.
; os_cpu_c.c 40 *
; os_cpu_c.c 41 * opt specifies options that can be used to alter the behavior of OSTaskStkInit().
; os_cpu_c.c 42 *
; os_cpu_c.c 43 * Returns : Always returns the location of the new top-of-stack' once the processor registers have
; os_cpu_c.c 44 * been placed on the stack in the proper order.
; os_cpu_c.c 45 *
; os_cpu_c.c 46 * Note(s) : Interrupts are enabled when your task starts executing. You can change this by setting the
; os_cpu_c.c 47 * PSW to 0x0800 instead. In this case, interrupts would be disabled upon task startup. The
; os_cpu_c.c 48 * application code would be responsible for enabling interrupts at the beginning of the task
; os_cpu_c.c 49 * code. You will need to modify OSTaskIdle() and OSTaskStat() so that they enable
; os_cpu_c.c 50 * interrupts. Failure to do this will make your system crash!
; os_cpu_c.c 51 *
; os_cpu_c.c 52 *********************************************************************************************************
; os_cpu_c.c 53 */
; os_cpu_c.c 54 OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
; os_cpu_c.c 55 {
OS_CPU_C_1_PR SECTION CODE WORD PUBLIC 'CPROGRAM'
?LINE 55
PUBLIC _OSTaskStkInit
?SYMB 'OSTaskStkInit',_OSTaskStkInit,37,283
?SYMB '',55,8,34
_OSTaskStkInit PROC FAR
?SYMB '',03c0H,95,0
MOV [-R0],R9
?SYMB '',$,96,2
MOV [-R0],R8
?SYMB '',$,96,4
MOV [-R0],R7
?SYMB '',$,96,6
MOV [-R0],R6
?SYMB '',$,96,8
MOV [-R0],R13
?SYMB '',$,96,10
MOV [-R0],R12
?SYMB '',$,96,12
SUB R0,#02h
?SYMB '',$,96,14
; Locals:
;
; CSEs:
; stk = R14R15
; task = offset 2
; page = R8
; offset = R9
; data_pof = R6
; usr = R7R1
; data_pag = offset 0
; pdata = R14R15
; ptos = offset 18
;
?SYMB '',1,55,297
?SYMB '',0a0129H,38,299
?SYMB 'task',4,99,299
?SYMB 'pdata',9,99,262
?SYMB 'ptos',6,99,283
?SYMB '',01a0110H,38,301
?SYMB 'stk',5,98,301
?SYMB 'usr',3,98,279
?SYMB 'page',1,98,272
?SYMB 'offset',2,98,272
?SYMB 'data_pag',8,98,272
?SYMB 'data_pof',7,98,272
?SYMB 'R14R15',$,100,9
?SYMB '4',$,101,6
?SYMB '-c',$,101,4
; os_cpu_c.c 56 INT16U *stk;
; os_cpu_c.c 57 INT32U usr;
; os_cpu_c.c 58 INT16U page;
; os_cpu_c.c 59 INT16U offset;
; os_cpu_c.c 60 INT16U data_pag;
; os_cpu_c.c 61 INT16U data_pof;
; os_cpu_c.c 62
; os_cpu_c.c 63
; os_cpu_c.c 64 opt = opt; /* 'opt' is not used, prevent warning */
; os_cpu_c.c 65 data_pag = (INT16U)_pag(pdata);
?LINE 65
MOV R1,R15
MOV [R0],R1
?SYMB '-e',$,101,8
; os_cpu_c.c 66 data_pof = (INT16U)_pof(pdata);
?LINE 66
MOV R6,R14
?SYMB 'R6',$,100,7
; os_cpu_c.c 67 stk = (INT16U *)ptos; /* Load stack pointer */
?LINE 67
MOV R14,[R0+#012H]
?SYMB '',$,102,9
MOV R15,[R0+#014H]
?SYMB 'R14R15',$,100,5
; os_cpu_c.c 68 *stk-- = data_pag;
?LINE 68
MOV R2,R14
MOV R3,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R3,#01h
MOV [R2],R1
; os_cpu_c.c 69 *stk-- = data_pof;
?LINE 69
MOV R8,R14
MOV R9,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R9,#01h
MOV [R8],R6
; os_cpu_c.c 70 *stk-- = (INT16U)_seg(task); /* Task segment start address */
?LINE 70
MOV R9,[R0+#02H]
MOV R7,[R0+#04H]
MOV R8,R7
MOV R12,R14
MOV R13,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R13,#01h
MOV [R12],R8
; os_cpu_c.c 71 *stk-- = (INT16U)_sof(task); /* Task offset start address */
?LINE 71
MOV R9,[R0+#02H]
MOV R7,[R0+#04H]
MOV R8,R9
MOV R12,R14
MOV R13,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R13,#01h
MOV [R12],R8
; os_cpu_c.c 72 usr = (INT32U)stk;
?LINE 72
MOV R8,R14
MOV R9,R15
MOV R12,R9
SHL R12,#0Eh
OR R8,R12
SHR R9,#02h
MOV R7,R8
MOV R1,R9
?SYMB 'R7R1',$,100,3
; os_cpu_c.c 73 offset = (INT16U)((((usr) & 0x3FFF) - 10) | 0x4000); /* Task user stack offset */
?LINE 73
MOV R8,R7
MOV R12,R1
AND R8,#03FFFh
AND R12,#00h
SUB R8,#0Ah
SUBC R12,#00h
BSET R8.14
MOV R9,R8
?SYMB 'R9',$,100,2
; os_cpu_c.c 74 *stk-- = offset;
?LINE 74
MOV R8,R14
MOV R12,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R12,#01h
MOV [R8],R9
; os_cpu_c.c 75 page = (INT16U)(usr >> 0x000E); /* Task user stack page */
?LINE 75
MOV R12,R1
SHR R7,#0Eh
?SYMB '',$,102,3
SHR R1,#0Eh
SHL R12,#02h
OR R7,R12
MOV R8,R7
?SYMB 'R8',$,100,1
; os_cpu_c.c 76 *stk-- = page;
?LINE 76
MOV R7,R14
MOV R12,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R12,#01h
MOV [R7],R8
; os_cpu_c.c 77 *stk-- = (INT16U)0x0800; /* Task PSW = Interrupts enabled */
?LINE 77
MOV R7,#0800h
MOV R12,R14
MOV R13,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R13,#01h
MOV [R12],R7
; os_cpu_c.c 78 *stk-- = (INT16U)_sof(task); /* Task offset return address */
?LINE 78
MOV R13,[R0+#02H]
MOV R1,[R0+#04H]
MOV R12,R13
MOV R2,R14
MOV R3,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R3,#01h
MOV [R2],R12
; os_cpu_c.c 79 *stk-- = (INT16U)_seg(task); /* Task segment return address */
?LINE 79
MOV R13,[R0+#02H]
MOV R1,[R0+#04H]
MOV R12,R1
MOV R2,R14
MOV R3,R15
SUB R14,#02h
?SYMB '',$,102,5
?SYMB 'R14R15',$,100,5
EXTP R3,#01h
MOV [R2],R12
; os_cpu_c.c 80 OSTaskBuildStk(page, offset, data_pag, data_pof);
?LINE 80
MOV R7,R14
MOV [-R0],R15
?SYMB '',$,96,16
MOV R12,R8
MOV R13,R9
MOV R14,[R0+#02H]
?SYMB '',$,102,5
MOV R15,R6
MOV R8,#SOF _3
?SYMB '',$,102,1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -