blob: bb848ef3b671429b101c247cf28d898b58cd66eb [file] [log] [blame]
.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-.)