halasm.src
来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· SRC 代码 · 共 112 行
SRC
112 行
;
; Copyright(c) 1998,1999 SIC/Hitachi,Ltd.
;
; Module Name:
;
; halasm.src
;
; Revision History:
;
; 26th April 1999 Released
; 5th July 1999 Fixed minor bug
;
.include "kxshx.h"
.include "shx.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
mov.l #TMU_REGBASE,r1
mov.l #~TMU_TSTR_STR1, r0
mov.b r0, @(TMU_TSTR_OFFSET,r1) ; Stop Timer 1
mov.l #TMU_TCR_D4, r0
mov.w r0, @(TMU_TCR1_OFFSET, r1) ; Use peripheral clock / 16
mov.l #h'ffffffff, r0
mov.l r0, @(TMU_TCNT1_OFFSET, r1) ; Set initial count
mov.l r0, @(TMU_TCOR1_OFFSET, r1) ; Set reload value
mov.l #TMU_TSTR_STR1, r2
mov.b @(TMU_TSTR_OFFSET,r1), r0
or r2, r0
mov.b r0, @(TMU_TSTR_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 #TMU_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 + -
显示快捷键?