📄 isrtramp.lst
字号:
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR6)
2 popm ar6
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR5)
2 0000c3 8A15 popm ar5
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR4)
2 0000c4 8A14 popm ar4
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR3)
2 0000c5 8A13 popm ar3
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_AR2)
2 0000c6 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 0000c7 8A10 popm ar0
TMS320C54x COFF Assembler Version 3.50 Sun Apr 02 13:46:35 2000
Copyright (c) 1996-1999 Texas Instruments Incorporated
isrtramp.asm PAGE 13
2 .endif
2 .if (C54_CNOTPRESERVED & ~(C54_ST01AB) & C54_TTRN)
2 0000c8 8A0F popm trn
2 0000c9 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 0000ca FD00 xc 1, unc
1 0000cb 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 0000cc F120 ld #0ffffh, b
0000cd FFFF
1 0000ce F280 and b, a
1 0000cf 4900 ldm imr, b
1 0000d0 F1A0 or a, b
1 0000d1 8900 stlm b, imr ; restore imr bits based on the old imr value
1 ; and the IMRRESTOREMASK mask
1 0000d2 F495 nop ; for pipline latency
1 0000d3 F495 nop
1 0000d4 F495 nop
1
1 0000d5 6B00! addm #-1, SWI_D_lock ; SWI_D_lock--
0000d6 FFFF
1 0000d7 6100! bitf SWI_D_lock, #8000h
0000d8 8000
1 0000d9 F820 bc end?, NTC ; if (SWI_D_lock >= 0) goto end?
0000da 00F0'
1 0000db 1200! ldu SWI_D_curmask, a
1 0000dc 0A00! subs SWI_D_curset, a ;
1 0000dd F846 bc end?, agt ; if (SWI_D_curmask > SWI_D_curset) goto end?
0000de 00F0'
1 ; else need to go to SWI scheduler
1 ; {
1 0000df 7600! st #0, SWI_D_lock ; SWI_D_lock = 0 (SWI locked)
0000e0 0000
1
TMS320C54x COFF Assembler Version 3.50 Sun Apr 02 13:46:35 2000
Copyright (c) 1996-1999 Texas Instruments Incorporated
isrtramp.asm PAGE 14
1 0000e1 1000! ld SWI_D_execaddr, a ; get exec fxn address
1 0000e2 F7BE ssbx cpl ; set cpl for upcoming stack access
1 0000e3 F495 nop
1 0000e4 F495 nop
1 0000e5 F495 nop
1 0000e6 8008 stl a, HWI_O_EXECFXN ; write exec fxn address to hole in stack
1
1 0000e7 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
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 0000e7 8A0D popm bg
2 0000e8 8A0C popm bh
2 0000e9 8A0B popm bl
2 .endif
2 .if (C54_ST01AB & C54_A)
2 0000ea 8A0A popm ag
2 0000eb 8A09 popm ah
2 0000ec 8A08 popm al
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 15
2 .if (C54_ST01AB & C54_ST1)
2 0000ed 8A07 popm st1
2 .endif
2 .if (C54_ST01AB & C54_ST0)
2 0000ee 8A06 popm st0
2 .endif
1 0000ef 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 0000f0 end?:
1 0000f0 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
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 0000f0 8A0D popm bg
2 0000f1 8A0C popm bh
2 0000f2 8A0B popm bl
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 16
2 .if (C54_ST01AB & C54_A)
2 0000f3 8A0A popm ag
2 0000f4 8A09 popm ah
2 0000f5 8A08 popm al
2 .endif
2 .if (C54_ST01AB & C54_ST1)
2 0000f6 8A07 popm st1
2 .endif
2 .if (C54_ST01AB & C54_ST0)
2 0000f7 8A06 popm st0
2 .endif
1
1 0000f8 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 0000f9 F4EB rete ; enable interrupts (intm = 0) and return
1 .endif
1
56
57
58 .end
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -