tools/adflib: build only host variant which is used by Sam440 target
[AROS.git] / arch / m68k-all / exec / exitintr.S
blobeaa2ba8f689ce3e9d5c5d20a31b94c901fa33d13
1 /*
2     Copyright © 2012, The AROS Development Team. All rights reserved.
3     $Id$
5     Desc: ExitIntr()
6     Lang: english
8     These routines are the core of the m68k scheduling system
9 */
11 #include "aros/m68k/asm.h"
13         .text
14         .balign 4
15         .globl  AROS_SLIB_ENTRY(ExitIntr,Exec,6)
17         .func AROS_SLIB_ENTRY(ExitIntr,Exec,6)
18 AROS_SLIB_ENTRY(ExitIntr,Exec,6):
19         /* At this point, %d0-%d1/%a0-%a1/%a5-%a6 are on
20          * the stack, followed by SR, PC, and an exception frame
21          */
23         /* If we are returning to supervisor mode, just do it.
24          * %sp@(4*6) is the SR from the RTE.
25          * We want to test bit 12 (0x2000) of the SR.
26          * But BTST only tests a byte. Therefore, we
27          * only need to test bit 5 (0x20) of the upper
28          * byte of SR, which is at %sp@(4*6)
29          */
30         btst.b  #5,%sp@(4*6)
31         bne     0f
33         /*
34          * Determine whether we need to call the Scheduler
35          */
36         jsr     core_ExitIntr
37         tst.w   %d0
38         beq     0f
39         jmp     __Schedule_this
41         movem.l %sp@+,%d0-%d1/%a0-%a1/%a5-%a6
42         rte
43         .endfunc