Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / arch / metag / kernel / tbiunexp.S
blob2664808086c7377ddb641a4b962ae82d0cd9624f
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Pass a breakpoint through to Codescape */
4 #include <asm/tbx.h>
6         .text
7         .global ___TBIUnExpXXX
8         .type   ___TBIUnExpXXX,function
9 ___TBIUnExpXXX:
10         TSTT    D0Ar2,#TBICTX_CRIT_BIT  ! Result of nestable int call?
11         BZ      $LTBINormCase           ! UnExpXXX at background level
12         MOV     D0Re0,TXMASKI           ! Read TXMASKI
13         XOR     TXMASKI,D1Re0,D1Re0     ! Turn off BGNDHALT handling!
14         OR      D0Ar2,D0Ar2,D0Re0       ! Preserve bits cleared
15 $LTBINormCase:
16         MSETL   [A0StP],D0Ar6,D0Ar4,D0Ar2       ! Save args on stack
17         SETL    [A0StP++],D0Ar2,D1Ar1   ! Init area for returned values
18         SWITCH  #0xC20208               ! Total stack frame size 8 Dwords
19                                         !            write back size 2 Dwords
20         GETL    D0Re0,D1Re0,[--A0StP]   ! Get result
21         SUB     A0StP,A0StP,#(8*3)      ! Recover stack frame
22         MOV     PC,D1RtP
23         .size           ___TBIUnExpXXX,.-___TBIUnExpXXX