| 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 | 	movem.l %d2-%d5,-(%sp) |
| 14 | 	movea.l 20(%sp),%a0 |
| 15 | __cp_begin: |
| 16 | 	move.l (%a0),%d0 |
| 17 | 	bne __cp_cancel |
| 18 | 	movem.l 24(%sp),%d0-%d5/%a0 |
| 19 | 	trap #0 |
| 20 | __cp_end: |
| 21 | 	movem.l (%sp)+,%d2-%d5 |
| 22 | 	rts |
| 23 | __cp_cancel: |
| 24 | 	movem.l (%sp)+,%d2-%d5 |
| 25 | 	move.l __cancel-.-8,%a1 |
| 26 | 	jmp (%pc,%a1) |