📄 isrtramp.lst
字号:
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_BKBLKRPT)
2 000042 8A1C popm rea
2 000043 8A1B popm rsa
2 000044 8A1A popm brc
2 000045 8A19 popm bk
2 .endif
TMS320C54x COFF Assembler Version 3.50 Sun Apr 02 13:46:35 2000
Copyright (c) 1996-1999 Texas Instruments Incorporated
isrtramp.asm PAGE 5
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR7)
2 popm ar7
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR6)
2 popm ar6
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR5)
2 000046 8A15 popm ar5
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR4)
2 000047 8A14 popm ar4
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR3)
2 000048 8A13 popm ar3
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR2)
2 000049 8A12 popm ar2
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR1)
2 popm ar1
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR0)
2 00004a 8A10 popm ar0
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_TTRN)
2 00004b 8A0F popm trn
2 00004c 8A0E popm t
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_B)
2 popm bg
2 popm bh
2 popm bl
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_A)
2 popm ag
2 popm ah
2 popm al
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_ST1)
2 popm st1
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_ST0)
2 popm st0
2 .endif
1
1 00004d FD00 xc 1, unc
1 00004e F7BB ssbx intm ; globally disable interrupts
1
1 ;
1 ; we used to do this as the first thing in HWI_exit, which is OK,
1 ; but confusing to users that think there is a hole for stack blowup.
1 ;
1 00004f F120 ld #0ffffh, b
000050 FFFF
1 000051 F280 and b, a
TMS320C54x COFF Assembler Version 3.50 Sun Apr 02 13:46:35 2000
Copyright (c) 1996-1999 Texas Instruments Incorporated
isrtramp.asm PAGE 6
1 000052 4900 ldm imr, b
1 000053 F1A0 or a, b
1 000054 8900 stlm b, imr ; restore imr bits based on the old imr value
1 ; and the IMRRESTOREMASK mask
1 000055 F495 nop ; for pipline latency
1 000056 F495 nop
1 000057 F495 nop
1
1 000058 6B00! addm #-1, SWI_D_lock ; SWI_D_lock--
000059 FFFF
1 00005a 6100! bitf SWI_D_lock, #8000h
00005b 8000
1 00005c F820 bc end?, NTC ; if (SWI_D_lock >= 0) goto end?
00005d 0073'
1 00005e 1200! ldu SWI_D_curmask, a
1 00005f 0A00! subs SWI_D_curset, a ;
1 000060 F846 bc end?, agt ; if (SWI_D_curmask > SWI_D_curset) goto end?
000061 0073'
1 ; else need to go to SWI scheduler
1 ; {
1 000062 7600! st #0, SWI_D_lock ; SWI_D_lock = 0 (SWI locked)
000063 0000
1
1 000064 1000! ld SWI_D_execaddr, a ; get exec fxn address
1 000065 F7BE ssbx cpl ; set cpl for upcoming stack access
1 000066 F495 nop
1 000067 F495 nop
1 000068 F495 nop
1 000069 8008 stl a, HWI_O_EXECFXN ; write exec fxn address to hole in stack
1
1 00006a C54_restore C54_ST01AB
2 .if (C54_ST01AB & C54_PMST)
2 popm pmst
2 .endif
2 .if (C54_ST01AB & C54_BKBLKRPT)
2 popm rea
2 popm rsa
2 popm brc
2 popm bk
2 .endif
2 .if (C54_ST01AB & C54_AR7)
2 popm ar7
2 .endif
2 .if (C54_ST01AB & C54_AR6)
2 popm ar6
2 .endif
2 .if (C54_ST01AB & C54_AR5)
2 popm ar5
2 .endif
2 .if (C54_ST01AB & C54_AR4)
2 popm ar4
2 .endif
2 .if (C54_ST01AB & C54_AR3)
2 popm ar3
2 .endif
TMS320C54x COFF Assembler Version 3.50 Sun Apr 02 13:46:35 2000
Copyright (c) 1996-1999 Texas Instruments Incorporated
isrtramp.asm PAGE 7
2 .if (C54_ST01AB & C54_AR2)
2 popm ar2
2 .endif
2 .if (C54_ST01AB & C54_AR1)
2 popm ar1
2 .endif
2 .if (C54_ST01AB & C54_AR0)
2 popm ar0
2 .endif
2 .if (C54_ST01AB & C54_TTRN)
2 popm trn
2 popm t
2 .endif
2 .if (C54_ST01AB & C54_B)
2 00006a 8A0D popm bg
2 00006b 8A0C popm bh
2 00006c 8A0B popm bl
2 .endif
2 .if (C54_ST01AB & C54_A)
2 00006d 8A0A popm ag
2 00006e 8A09 popm ah
2 00006f 8A08 popm al
2 .endif
2 .if (C54_ST01AB & C54_ST1)
2 000070 8A07 popm st1
2 .endif
2 .if (C54_ST01AB & C54_ST0)
2 000071 8A06 popm st0
2 .endif
1 000072 FC00 ret ; go to the function (e.g. SWI_F_exec)
1 ; whose address is in SWI_D_execaddr.
1 ; that function will do the actual return
1 ; to where interrupt occurred.
1 ; }
1 000073 end?:
1 000073 C54_restore C54_ST01AB
2 .if (C54_ST01AB & C54_PMST)
2 popm pmst
2 .endif
2 .if (C54_ST01AB & C54_BKBLKRPT)
2 popm rea
2 popm rsa
2 popm brc
2 popm bk
2 .endif
2 .if (C54_ST01AB & C54_AR7)
2 popm ar7
2 .endif
2 .if (C54_ST01AB & C54_AR6)
2 popm ar6
2 .endif
2 .if (C54_ST01AB & C54_AR5)
2 popm ar5
2 .endif
2 .if (C54_ST01AB & C54_AR4)
TMS320C54x COFF Assembler Version 3.50 Sun Apr 02 13:46:35 2000
Copyright (c) 1996-1999 Texas Instruments Incorporated
isrtramp.asm PAGE 8
2 popm ar4
2 .endif
2 .if (C54_ST01AB & C54_AR3)
2 popm ar3
2 .endif
2 .if (C54_ST01AB & C54_AR2)
2 popm ar2
2 .endif
2 .if (C54_ST01AB & C54_AR1)
2 popm ar1
2 .endif
2 .if (C54_ST01AB & C54_AR0)
2 popm ar0
2 .endif
2 .if (C54_ST01AB & C54_TTRN)
2 popm trn
2 popm t
2 .endif
2 .if (C54_ST01AB & C54_B)
2 000073 8A0D popm bg
2 000074 8A0C popm bh
2 000075 8A0B popm bl
2 .endif
2 .if (C54_ST01AB & C54_A)
2 000076 8A0A popm ag
2 000077 8A09 popm ah
2 000078 8A08 popm al
2 .endif
2 .if (C54_ST01AB & C54_ST1)
2 000079 8A07 popm st1
2 .endif
2 .if (C54_ST01AB & C54_ST0)
2 00007a 8A06 popm st0
2 .endif
1
1 00007b EE01 frame 1 ; adjust SP because SWI_F_exec hole not needed
1
1 .if (__far_mode)
1 frete ; enable interrupts (intm = 0) and far return
1 .else
1 00007c F4EB rete ; enable interrupts (intm = 0) and return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -