36 lines
616 B
ArmAsm
36 lines
616 B
ArmAsm
.global _vbr_get
|
|
.global _vbr_set
|
|
|
|
.type _vbr_set, @function
|
|
.type _vbr_get, @function
|
|
|
|
.text
|
|
.align 2
|
|
_vbr_get:
|
|
stc vbr, r0 ! Get VBR register.
|
|
rts ! Exit
|
|
nop ! (db) nop
|
|
|
|
_vbr_set:
|
|
! Block interrupt
|
|
stc sr, r1 ! Get SR register.
|
|
mov r1, r3 ! Save current SR data.
|
|
mov.l .bl_mask, r2 ! Get SR.BL mask.
|
|
or r2, r1 ! Set SR.BL to 1.
|
|
ldc r1, sr ! Update SR register.
|
|
|
|
! Get / Changle VBR
|
|
stc vbr, r0 ! Get VBR register.
|
|
ldc r4, vbr ! Update VBR register.
|
|
|
|
! Unblock interrupt.
|
|
ldc r3, sr ! Restore SR register.
|
|
|
|
! Exit
|
|
rts ! Exit
|
|
nop ! (db) nop
|
|
|
|
.align 4
|
|
.bl_mask: .long (1 << 28)
|
|
.end
|