1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <basic_asm.h>
3 #include <asm/unistd.h>
4 
5 	.text
6 FUNC_START(getppid_tm_active)
7 	tbegin.
8 	beq 1f
9 	li	r0, __NR_getppid
10 	sc
11 	tend.
12 	blr
13 1:
14 	li	r3, -1
15 	blr
16 
17 FUNC_START(getppid_tm_suspended)
18 	tbegin.
19 	beq 1f
20 	li	r0, __NR_getppid
21 	tsuspend.
22 	sc
23 	tresume.
24 	tend.
25 	blr
26 1:
27 	li	r3, -1
28 	blr
29 
30 
31 .macro scv level
32 	.long (0x44000001 | (\level) << 5)
33 .endm
34 
35 FUNC_START(getppid_scv_tm_active)
36 	PUSH_BASIC_STACK(0)
37 	tbegin.
38 	beq 1f
39 	li	r0, __NR_getppid
40 	scv	0
41 	tend.
42 	POP_BASIC_STACK(0)
43 	blr
44 1:
45 	li	r3, -1
46 	POP_BASIC_STACK(0)
47 	blr
48 
49 FUNC_START(getppid_scv_tm_suspended)
50 	PUSH_BASIC_STACK(0)
51 	tbegin.
52 	beq 1f
53 	li	r0, __NR_getppid
54 	tsuspend.
55 	scv	0
56 	tresume.
57 	tend.
58 	POP_BASIC_STACK(0)
59 	blr
60 1:
61 	li	r3, -1
62 	POP_BASIC_STACK(0)
63 	blr
64