Linux 5.8-rc4
[linux/fpc-iii.git] / arch / sparc / kernel / getsetcc.S
blob181e09fd1c55c6a74c672e2d8670ed51033c0522
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
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