46 lines
634 B
ArmAsm
46 lines
634 B
ArmAsm
.text
|
|
.global __cp_begin
|
|
.hidden __cp_begin
|
|
.global __cp_end
|
|
.hidden __cp_end
|
|
.global __cp_cancel
|
|
.hidden __cp_cancel
|
|
.hidden __cancel
|
|
.global __syscall_cp_asm
|
|
.hidden __syscall_cp_asm
|
|
.type __syscall_cp_asm, @function
|
|
__syscall_cp_asm:
|
|
|
|
__cp_begin:
|
|
mov.l @r4, r4
|
|
tst r4, r4
|
|
bf __cp_cancel
|
|
mov r5, r3
|
|
mov r6, r4
|
|
mov r7, r5
|
|
mov.l @r15, r6
|
|
mov.l @(4,r15), r7
|
|
mov.l @(8,r15), r0
|
|
mov.l @(12,r15), r1
|
|
trapa #31
|
|
|
|
__cp_end:
|
|
! work around hardware bug
|
|
or r0, r0
|
|
or r0, r0
|
|
or r0, r0
|
|
or r0, r0
|
|
or r0, r0
|
|
|
|
rts
|
|
nop
|
|
|
|
__cp_cancel:
|
|
mov.l 2f, r0
|
|
braf r0
|
|
nop
|
|
1:
|
|
|
|
.align 2
|
|
2: .long __cancel@PCREL-(1b-.)
|