halasm.src

来自「WinCE5.0BSP for Renesas SH7770」· SRC 代码 · 共 135 行

SRC
135
字号
;
;   Copyright(C) Renesas Technology Corp. 2002-2003. All rights reserved.
;
;   NK Kernel for ITS-DS7 Ver.1.0.0
;
;   FILE      : halasm.src
;   CREATED   : 2002.04.25
;   MODIFIED  : 2003.06.20
;   AUTHOR    : Renesas Technology Corp.
;   HARDWARE  : RENESAS ITS-DS7
;   HISTORY   : 
;               2003.06.20
;               - Created release code.
;                 (based on RENESAS ITS-DS4 Source Kit Ver.1.2.0 for WCE4.2)
;
;++
; THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
; ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
; PARTICULAR PURPOSE.
; Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.
; 
; Module Name:  
;    audioutil.src
; 
; Abstract:     
;    This module implements audio driver utility routines.
;
; Functions:
; 
; 
; Notes: 
;
;--

	.include "kxshx.h"
	.include "shx.inc"
	.include "sh7770.inc"
	.include "platform.inc"

	.import _ClockToUSecLow
	.import _ClockToUSecHigh
	.import _USecToClockLow
	.import _USecToClockHigh

	.section .text,code

;
; HalTimerInit:
;
;    Initializes an elapsed timer for use by the Hal. 
;
; Syntax:
;
;    void
;    HalTimerInit(
;        void
;        )
;
; Arguments:
;
;
; Return Value:
;

	LEAF_ENTRY _HalTimerInit

;; TIME00	mov.l	#SH7770_TMU012_REGBASE,r1		
;; TIME00	mov.l	#~TMU_TSTR0_STR1, r0
;; TIME00	mov.b	r0, @(TMU_TSTR0_OFFSET,r1)	; Stop Timer 1
;; TIME00	mov.l	#TMU_TCR_TPSC_D4, r0
;; TIME00	mov.w	r0, @(TMU_TCR1_OFFSET, r1) 	; Use peripheral clock / 4
;; TIME00	mov.l	#h'ffffffff, r0
;; TIME00	mov.l	r0, @(TMU_TCNT1_OFFSET, r1)	; Set initial count
;; TIME00	mov.l	r0, @(TMU_TCOR1_OFFSET, r1)	; Set reload value
;; TIME00	mov.l	#TMU_TSTR0_STR1, r2
;; TIME00	mov.b	@(TMU_TSTR0_OFFSET,r1), r0
;; TIME00	or		r2, r0
;; TIME00	mov.b	r0, @(TMU_TSTR0_OFFSET,r1)	; Start Timer 1
	rts
	nop

	ENTRY_END  _HalTimerInit

;
; HalSleep:
;
;    This routine waits for a desired number of microseconds, to the resolution
;    of the CPU's TMU timer and computational overhead.  Wrap-around is not
;    handled.
;
; Syntax:
;
;    void
;    HalSleep(
;        DWORD nUSec
;        )
;
; Arguments:
;
;    nUSec (r4) - Provides the number of microseconds to wait.
;
; Return Value:
;
;    None.
;
;

	LEAF_ENTRY _HalSleep

	mov		#_USecToClockLow, r0			; Convert desired usecs to clocks
	mov.l		@r0, r5					;	..
	dmulu.l		r4, r5					;   ..
	sts		mach, r5				;   ..
	mov		#_USecToClockHigh, r0			;   (Get rest of partial product)
	mov.l		@r0, r3					;	..
	mulu		r3, r4					;   ..
	sts		macl, r3				;   ..
	add		r3, r5					;   (Add partial products)

	mov.l		#SH7770_TMU012_REGBASE, r0		; Get desired end time
	mov.l		@(TMU_TCNT1_OFFSET, r0), r1		;   ..
	sub		r5, r1					;   ..
Loop:
	mov.l		@(TMU_TCNT1_OFFSET, r0), r2		; Passed end time yet?

	cmp/hi		r2, r1					;   ..
	bf		Loop					;   ..
	rts							; Yes; done
	nop

	ENTRY_END _HalSleep

	.end

⌨️ 快捷键说明

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