📄 src_isr_asm.src
字号:
;
; Copyright(C) Renesas Technology Corp. 2003. All rights reserved.
;
; NK Kernel for ITS-DS7 Ver.1.0.0
;
; FILE : src_isr_asm.src
; CREATED : 2003.06.20
; MODIFIED :
; AUTHOR : Renesas Technology Corp.
; HARDWARE : RENESAS ITS-DS7
; HISTORY :
; 2003.06.20
; - Created release code.
.include "kxshx.h"
.include "sh4a.inc"
.include "oalintr.inc"
.include "platform.inc"
.include "sh7770.inc"
.import _wNumInterrupts
.import _dwSPC
.import _dwIsrTime1
.import _fIntrTime
.import _src_isr0
.import _src_isr1
.import _src_isr2
LEAF_ENTRY _SRC_ISR0
;-------------------------------------------------------
; DEBUG LED
;
; mov.l #h'47, r2 ; 'G'
; mov.l #LED_ALPHA, r3
; mov.b r2, @r3
; add #LED_ALPHA_STRIDE, r3
; mov.b r2, @r3
; add #LED_ALPHA_STRIDE, r3
; mov.b r2, @r3
; add #LED_ALPHA_STRIDE, r3
; mov.b r2, @r3
;-------------------------------------------------------
;-------------------------------------------------------
; Check for IntrTime measurements (COMMON)
;
mov #_fIntrTime, r1 ; (r1) = ptr to fIntrTime gate
mov @r1, r6 ; (r6) = fIntrTime
tst r6, r6
bt skip_isrtime1_0
;-------------------------------------------------------
; Get ISR latency and saved program counter (INTRTIME)
;
mov #SH7770_TMU012_REGBASE, r2
mov.l @(TMU_TCOR0_OFFSET, r2), r0 ; (r0) = Timer 0 constant
mov.l @(TMU_TCNT0_OFFSET, r2), r2 ; (r2) = Timer 0 count
sub r2, r0 ; (r0) = Constant - count (ticks elapsed)
mov #_dwIsrTime1, r1
mov r0, @r1 ; dwIsrTime1 = (r0)
stc spc, r0
mov #_dwSPC, r1
mov.l r0, @r1 ; Save Program Counter
mov #_wNumInterrupts, r0 ; (r0) = addr of interrupt counter
mov @r0, r1 ; (r1) = interrupt counter
add #1, r1 ; Increment counter
mov r1, @r0 ; Save interrupt counter
skip_isrtime1_0:
stc.l gbr, @-r15
sts.l macl, @-r15
sts.l mach, @-r15
sts.l pr, @-r15
mov.l r4, @-r15
mov.l r5, @-r15
mov.l r7, @-r15
mov #_src_isr0, r1
jsr @r1
nop
mov.l @r15+, r7
mov.l @r15+, r5
mov.l @r15+, r4
lds.l @r15+, pr
lds.l @r15+, mach
lds.l @r15+, macl
ldc.l @r15+, gbr
rts
mov r0, r0
ENTRY_END
LEAF_ENTRY _SRC_ISR1
;-------------------------------------------------------
; Check for IntrTime measurements (COMMON)
;
mov #_fIntrTime, r1 ; (r1) = ptr to fIntrTime gate
mov @r1, r6 ; (r6) = fIntrTime
tst r6, r6
bt skip_isrtime1_1
;-------------------------------------------------------
; Get ISR latency and saved program counter (INTRTIME)
;
mov #SH7770_TMU012_REGBASE, r2
mov.l @(TMU_TCOR0_OFFSET, r2), r0 ; (r0) = Timer 0 constant
mov.l @(TMU_TCNT0_OFFSET, r2), r2 ; (r2) = Timer 0 count
sub r2, r0 ; (r0) = Constant - count (ticks elapsed)
mov #_dwIsrTime1, r1
mov r0, @r1 ; dwIsrTime1 = (r0)
stc spc, r0
mov #_dwSPC, r1
mov.l r0, @r1 ; Save Program Counter
mov #_wNumInterrupts, r0 ; (r0) = addr of interrupt counter
mov @r0, r1 ; (r1) = interrupt counter
add #1, r1 ; Increment counter
mov r1, @r0 ; Save interrupt counter
skip_isrtime1_1:
stc.l gbr, @-r15
sts.l macl, @-r15
sts.l mach, @-r15
sts.l pr, @-r15
mov.l r4, @-r15
mov.l r5, @-r15
mov.l r7, @-r15
mov #_src_isr1, r1
jsr @r1
nop
mov.l @r15+, r7
mov.l @r15+, r5
mov.l @r15+, r4
lds.l @r15+, pr
lds.l @r15+, mach
lds.l @r15+, macl
ldc.l @r15+, gbr
rts
mov r0, r0
ENTRY_END
LEAF_ENTRY _SRC_ISR2
;-------------------------------------------------------
; Check for IntrTime measurements (COMMON)
;
mov #_fIntrTime, r1 ; (r1) = ptr to fIntrTime gate
mov @r1, r6 ; (r6) = fIntrTime
tst r6, r6
bt skip_isrtime1_2
;-------------------------------------------------------
; Get ISR latency and saved program counter (INTRTIME)
;
mov #SH7770_TMU012_REGBASE, r2
mov.l @(TMU_TCOR0_OFFSET, r2), r0 ; (r0) = Timer 0 constant
mov.l @(TMU_TCNT0_OFFSET, r2), r2 ; (r2) = Timer 0 count
sub r2, r0 ; (r0) = Constant - count (ticks elapsed)
mov #_dwIsrTime1, r1
mov r0, @r1 ; dwIsrTime1 = (r0)
stc spc, r0
mov #_dwSPC, r1
mov.l r0, @r1 ; Save Program Counter
mov #_wNumInterrupts, r0 ; (r0) = addr of interrupt counter
mov @r0, r1 ; (r1) = interrupt counter
add #1, r1 ; Increment counter
mov r1, @r0 ; Save interrupt counter
skip_isrtime1_2:
stc.l gbr, @-r15
sts.l macl, @-r15
sts.l mach, @-r15
sts.l pr, @-r15
mov.l r4, @-r15
mov.l r5, @-r15
mov.l r7, @-r15
mov #_src_isr2, r1
jsr @r1
nop
mov.l @r15+, r7
mov.l @r15+, r5
mov.l @r15+, r4
lds.l @r15+, pr
lds.l @r15+, mach
lds.l @r15+, macl
ldc.l @r15+, gbr
rts
mov r0, r0
ENTRY_END
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -