| Index: fusl/src/thread/sh/syscall_cp.s
|
| diff --git a/fusl/src/thread/sh/syscall_cp.s b/fusl/src/thread/sh/syscall_cp.s
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bb848ef3b671429b101c247cf28d898b58cd66eb
|
| --- /dev/null
|
| +++ b/fusl/src/thread/sh/syscall_cp.s
|
| @@ -0,0 +1,45 @@
|
| +.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-.)
|
|
|