1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright 2015, Cyril Bur, IBM Corp. 4 */ 5 6 #include "basic_asm.h" 7 8 /* long signal_self(pid_t pid, int sig); */ 9 FUNC_START(signal_self) 10 li r0,37 /* sys_kill */ 11 /* r3 already has our pid in it */ 12 /* r4 already has signal type in it */ 13 sc 14 bc 4,3,1f 15 subfze r3,r3 16 1: blr 17 FUNC_END(signal_self) 18 19 /* long tm_signal_self(pid_t pid, int sig, int *ret); */ 20 FUNC_START(tm_signal_self) 21 PUSH_BASIC_STACK(8) 22 std r5,STACK_FRAME_PARAM(0)(sp) /* ret */ 23 tbegin. 24 beq 1f 25 tsuspend. 26 li r0,37 /* sys_kill */ 27 /* r3 already has our pid in it */ 28 /* r4 already has signal type in it */ 29 sc 30 ld r5,STACK_FRAME_PARAM(0)(sp) /* ret */ 31 bc 4,3,2f 32 subfze r3,r3 33 2: std r3,0(r5) 34 tabort. 0 35 tresume. /* Be nice to some cleanup, jumps back to tbegin then to 1: */ 36 /* 37 * Transaction should be proper doomed and we should never get 38 * here 39 */ 40 li r3,1 41 POP_BASIC_STACK(8) 42 blr 43 1: li r3,0 44 POP_BASIC_STACK(8) 45 blr 46 FUNC_END(tm_signal_self)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.