?? halasm.src
字號:
;
; 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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -