profisr.src

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· SRC 代码 · 共 134 行

SRC
134
字号
;
;  Copyright(c) 1998,1999 SIC/Hitachi,Ltd.
;
;	Module Name:
;
;		profisr.src
;
;	Revision History:
;
;		26th April 1999		Released
;		24th May   1999		Modified (Profile buffer address)
;

	.list OFF
	.include "kxshx.h"
	.list ON

    .include "shx.inc"

	.import _ProfilerHit
	
	.section .KDATA,stack
	.import _KData

	.section .data,data
	.align	4

SaveR1:		.data.l 0
SaveR2:		.data.l 0
SaveR3:		.data.l 0
SaveR4:		.data.l 0
SaveR5:		.data.l 0
SaveR6:		.data.l 0
SaveR7:		.data.l 0
SaveR8:		.data.l 0
SaveR9:		.data.l 0
SaveR10:	.data.l 0
SaveR11:	.data.l 0
SaveR12:	.data.l 0
SaveR13:	.data.l 0
SaveR14:	.data.l 0
SavePR:		.data.l 0

	.section .text,code

	LEAF_ENTRY _OEMProfilerISR
	mov		#SavePR, r0						; save all used regs
	mov		r14, @-r0
	mov		r13, @-r0
	mov		r12, @-r0
	mov		r11, @-r0
	mov		r10, @-r0
	mov		r9, @-r0
	mov		r8, @-r0
	mov		r7, @-r0
	mov		r6, @-r0
	mov		r5, @-r0
	mov		r4, @-r0
	mov		r3, @-r0
	mov		r2, @-r0
	mov		r1, @-r0
	sts		pr, r1
	mov		#SavePR, r0						; save return address
	mov		r1, @r0

  	stc		SPC, r4							; r4= saved program counter
	mov		#_ProfilerHit, r0
	jsr		@r0
	nop

	mov	    #TMU_TCR2, r1		; (r1) = ptr to timer unit registers
	mov.w  	@r1, r0
	nop
	and	    #h'ff, r0
	mov.w  	r0, @r1

	mov		#SaveR1, r0						; restore registers
	mov		@r0+, r1
	mov		@r0+, r2
	mov		@r0+, r3
	mov		@r0+, r4
	mov		@r0+, r5
	mov		@r0+, r6
	mov		@r0+, r7
	mov		@r0+, r8
	mov		@r0+, r9
	mov		@r0+, r10
	mov		@r0+, r11
	mov		@r0+, r12
	mov		@r0+, r13
	mov		@r0+, r14
	mov		@r0, r0
	lds		r0, pr

	mov	    #0, r0
	rts
	nop
	.endf

	LEAF_ENTRY _OEMProfilerBufferISR
	mov		#0xae000000, r0					; r0= profile buffer address
	mov		@r0, r1							; r1= lpdwProfileBufNext
	mov		@(4,r0), r2						; r2= lpdwProfileBufEnd
	cmp/eq	r1, r2							; if at end of buffer
	bt		pend							;   exit
  	stc		SPC, r2							; r2= saved program counter
	mov		#_KData+144, r3					; r3= _KDATA.pCurPrc
	mov.l	r2, @r1							; save EPC
	mov.l	@r3, r3							; r3= KData.pCurPrc
	mov.b	#72, r0
	mov.l	@(r0, r3), r3					; r3= pCurProc->oe.tocptr
	mov.l	r3,@(4, r1)						; save pCurProc->oe.tocptr
	add		#8, r1							; lpdwProfileBufNext+=2
	mov		#0xae000000, r0					; r0= profile buffer address
	mov		r1,@r0							; save lpdwProfileBufNext
pend:
	mov	    #TMU_TCR2, r1		; (r1) = ptr to timer unit registers
;tisr10:
	mov.w  	@r1, r0
	nop
	and	    #h'ff, r0
	mov.w  	r0, @r1

;	mov.w	@r1, r0
;	shlr8	r0
;	tst		#1, r0
;	bf	tisr10

	rts
	mov	    #0, r0
	.endf
	.end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?