URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libcpu/] [a29k/] [clock/] [clock.S] - Rev 173
Compare with Previous | Blame | View Log
;
; .include "register.ah"
.include "amd.ah"
.include "pswmacro.ah"
.text
; .equ IN,0x2000000
.reg CLOCK,gr78
.reg SECS,gr79
.equ CPUCLK,16
.equ RATE,100
.reg it0,gr64
.reg it1,gr65
.reg v0,gr96
timer_clear_sup:
const it0,IN
consth it0,IN
mfsr it1,tmr
andn it1,it1,it0
mtsr tmr,it1
const it0,RATE
cplt it0,CLOCK,it0
jmpf it0,carry
add CLOCK,CLOCK,1
iret
carry:
const CLOCK,0
add SECS,SECS,1
iret
.equ TICKS,(CPUCLK*1000000/RATE)
; .equ IE,0x1000000
timer_init_sup:
const it0,TICKS
consth it0,TICKS
mtsr tmc,it0
const it0,(IE|TICKS)
consth it0,(IE|TICKS)
mtsr tmr,it0
const SECS,0
const CLOCK,0
iret
timer_get_sup:
add gr96,SECS,0
iret
timer_disable_sup:
mfsr it0,ops
const it1,TD
consth it1,TD
andn it0,it1,it0
mtsr ops,it0
iret
.global _a29k_init_timer
_a29k_init_timer:
push msp,lr0
const lr2,INIT_TIMER
consth lr2,INIT_TIMER
const lr3,timer_init_sup
consth lr3,timer_init_sup
const v0,__settrap
consth v0,__settrap
calli lr0,v0
nop
const lr2,CLEAR_TIMER
consth lr2,CLEAR_TIMER
const lr3,timer_clear_sup
consth lr3,timer_clear_sup
const v0,__settrap
consth v0,__settrap
calli lr0,v0
nop
const lr2,DISABLE_TIMER
consth lr2,DISABLE_TIMER
const lr3,timer_disable_sup
consth lr3,timer_disable_sup
const v0,__settrap
consth v0,__settrap
calli lr0,v0
nop
const lr2,GET_TIMER
consth lr2,GET_TIMER
const lr3,timer_get_sup
consth lr3,timer_get_sup
const v0,__settrap
consth v0,__settrap
calli lr0,v0
nop
asneq INIT_TIMER,gr1,gr1
pop lr0,msp
jmpi lr0
nop
.global _a29k_clear_timer
_a29k_clear_timer:
; asneq CLEAR_TIMER,gr1,gr1
jmpi lr0
nop
.global _a29k_disable_timer
_a29k_disable_timer:
asneq DISABLE_TIMER,gr1,gr1
jmpi lr0
nop
.global _a29k_get_timer
_a29k_get_timer:
asneq GET_TIMER,gr1,gr1
jmpi lr0
nop