xref: /openbmc/linux/arch/sparc/kernel/getsetcc.S (revision bbecb07f)
1/* SPDX-License-Identifier: GPL-2.0 */
2	.globl		getcc
3	.type		getcc,#function
4getcc:
5	ldx		[%o0 + PT_V9_TSTATE], %o1
6	srlx		%o1, 32, %o1
7	and		%o1, 0xf, %o1
8	retl
9	 stx		%o1, [%o0 + PT_V9_G1]
10	.size		getcc,.-getcc
11
12	.globl		setcc
13	.type		setcc,#function
14setcc:
15	ldx		[%o0 + PT_V9_TSTATE], %o1
16	ldx		[%o0 + PT_V9_G1], %o2
17	or		%g0, %ulo(TSTATE_ICC), %o3
18	sllx		%o3, 32, %o3
19	andn		%o1, %o3, %o1
20	sllx		%o2, 32, %o2
21	and		%o2, %o3, %o2
22	or		%o1, %o2, %o1
23	retl
24	 stx		%o1, [%o0 + PT_V9_TSTATE]
25	.size		setcc,.-setcc
26