47 lines · plain
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); */9FUNC_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 sc14 bc 4,3,1f15 subfze r3,r3161: blr17FUNC_END(signal_self)18 19/* long tm_signal_self(pid_t pid, int sig, int *ret); */20FUNC_START(tm_signal_self)21 PUSH_BASIC_STACK(8)22 std r5,STACK_FRAME_PARAM(0)(sp) /* ret */23 tbegin.24 beq 1f25 tsuspend.26 li r0,37 /* sys_kill */27 /* r3 already has our pid in it */28 /* r4 already has signal type in it */29 sc30 ld r5,STACK_FRAME_PARAM(0)(sp) /* ret */31 bc 4,3,2f32 subfze r3,r3332: std r3,0(r5)34 tabort. 035 tresume. /* Be nice to some cleanup, jumps back to tbegin then to 1: */36 /*37 * Transaction should be proper doomed and we should never get38 * here39 */40 li r3,141 POP_BASIC_STACK(8)42 blr431: li r3,044 POP_BASIC_STACK(8)45 blr46FUNC_END(tm_signal_self)47