github.com/afumu/libc@v0.0.6/musl/src/thread/sh/syscall_cp.s (about)

     1  .text
     2  .global __cp_begin
     3  .hidden __cp_begin
     4  .global __cp_end
     5  .hidden __cp_end
     6  .global __cp_cancel
     7  .hidden __cp_cancel
     8  .hidden __cancel
     9  .global __syscall_cp_asm
    10  .hidden __syscall_cp_asm
    11  .type   __syscall_cp_asm, @function
    12  __syscall_cp_asm:
    13  
    14  __cp_begin:
    15  	mov.l @r4, r4
    16  	tst   r4, r4
    17  	bf    __cp_cancel
    18  	mov   r5, r3
    19  	mov   r6, r4
    20  	mov   r7, r5
    21  	mov.l @r15, r6
    22  	mov.l @(4,r15), r7
    23  	mov.l @(8,r15), r0
    24  	mov.l @(12,r15), r1
    25  	trapa #31
    26  
    27  __cp_end:
    28  	! work around hardware bug
    29  	or   r0, r0
    30  	or   r0, r0
    31  	or   r0, r0
    32  	or   r0, r0
    33  	or   r0, r0
    34  
    35  	rts
    36  	 nop
    37  
    38  __cp_cancel:
    39  	mov.l 2f, r0
    40  	braf  r0
    41  	 nop
    42  1:
    43  
    44  .align 2
    45  2:	.long __cancel@PCREL-(1b-.)