hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* 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)