revert between 56095 -> 55830 in arch
[AROS.git] / arch / m68k-all / exec / dispatch.S
blobc33929839cf1336d7b543e193a7e31d93c1bb5f8
1 /*
2     Copyright © 2012, The AROS Development Team. All rights reserved.
3     $Id$
5     Desc: Dispatch()
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(Dispatch,Exec,10)
16         .globl  __Dispatch_this
18         .func AROS_SLIB_ENTRY(Dispatch,Exec,10)
19 AROS_SLIB_ENTRY(Dispatch,Exec,10):
20         lea.l   %sp@(-4*(8+8)),%sp      /* %sp = regs_t */
21         move.l  %sp,%sp@-               /* Push regs_t * onto stack */
22 __Dispatch_this:
23         jsr     cpu_Dispatch            /* Call cpu_Dispatch */
24         addq.l  #4,%sp
25         movem.l %sp@+,%d0-%d7/%a0-%a5   /* Load task state */
26         move.l  %sp@(4),%a6
27         move.l  %a6,%usp                /* Restore user stack pointer */
28         move.l  %sp@,%a6                /* Restore A6 */
29         addq.l  #8,%sp
30         rte                             /* SR, PC, etc are on the stack */  
31         .endfunc