root/tools/testing/selftests/powerpc/signal/signal.S

/* [<][>][^][v][top][bottom][index][help] */
   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)

/* [<][>][^][v][top][bottom][index][help] */