47 lines
		
	
	
		
			973 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			973 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-or-later */
 | |
| /*
 | |
|  * Copyright 2015, Cyril Bur, IBM Corp.
 | |
|  */
 | |
| 
 | |
| #include "basic_asm.h"
 | |
| 
 | |
| /* long signal_self(pid_t pid, int sig); */
 | |
| FUNC_START(signal_self)
 | |
| 	li	r0,37 /* sys_kill */
 | |
| 	/* r3 already has our pid in it */
 | |
| 	/* r4 already has signal type in it */
 | |
| 	sc
 | |
| 	bc	4,3,1f
 | |
| 	subfze	r3,r3
 | |
| 1:	blr
 | |
| FUNC_END(signal_self)
 | |
| 
 | |
| /* long tm_signal_self(pid_t pid, int sig, int *ret); */
 | |
| FUNC_START(tm_signal_self)
 | |
| 	PUSH_BASIC_STACK(8)
 | |
| 	std	r5,STACK_FRAME_PARAM(0)(sp) /* ret */
 | |
| 	tbegin.
 | |
| 	beq	1f
 | |
| 	tsuspend.
 | |
| 	li	r0,37 /* sys_kill */
 | |
| 	/* r3 already has our pid in it */
 | |
| 	/* r4 already has signal type in it */
 | |
| 	sc
 | |
| 	ld	r5,STACK_FRAME_PARAM(0)(sp) /* ret */
 | |
| 	bc	4,3,2f
 | |
| 	subfze	r3,r3
 | |
| 2:	std	r3,0(r5)
 | |
| 	tabort. 0
 | |
| 	tresume. /* Be nice to some cleanup, jumps back to tbegin then to 1: */
 | |
| 	/*
 | |
| 	 * Transaction should be proper doomed and we should never get
 | |
| 	 * here
 | |
| 	 */
 | |
| 	li	r3,1
 | |
| 	POP_BASIC_STACK(8)
 | |
| 	blr
 | |
| 1:	li	r3,0
 | |
| 	POP_BASIC_STACK(8)
 | |
| 	blr
 | |
| FUNC_END(tm_signal_self)
 |