syscall_cp.s raw

   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-.)
  46