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) |
47 | |