Linux-libre 5.4-rc7-gnu
[librecmc/linux-libre.git] / arch / sparc / kernel / getsetcc.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2         .globl          getcc
3         .type           getcc,#function
4 getcc:
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
14 setcc:
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