use USER_CPPFLAGS
[AROS.git] / arch / m68k-all / exec / obtainquickvector.S
blobd380f2003ae175690b0cbe5b31283e7b23c24543
1 /*
2     Copyright © 1995-2011, The AROS Development Team. All rights reserved.
3     $Id$
5     Desc: Obtain and install a Quick Interrupt vector
6     Lang: english
7 */
10 /*****************************************************************************
12     NAME
14         AROS_LH1(ULONG, ObtainQuickVector,
16     SYNOPSIS
17         AROS_LHA(APTR, interruptCode, A0),
19     LOCATION
20         struct ExecBase *, SysBase, 131, Exec)
22     FUNCTION
24     INPUTS
26     RESULT
28     NOTES
30     EXAMPLE
32     BUGS
34     SEE ALSO
36     INTERNALS
38 *****************************************************************************/
40         #include "aros/m68k/asm.h"
43         .text
44         .balign 4
45         .globl AROS_SLIB_ENTRY(ObtainQuickVector,Exec,131)
46         .type   AROS_SLIB_ENTRY(ObtainQuickVector,Exec,131),@function
47 AROS_SLIB_ENTRY(ObtainQuickVector,Exec,131):
49         move.l  %a5,%a1
50         lea             .super(%pc),%a5
51         jmp             Supervisor(%a6)
52 .super:
53         or.w    #0x0700,%sr
54         move.l  %a1,%a5
55         sub.l   %a1,%a1
56         btst    #0,%a6@(AttnFlags+1)
57         beq.s   3f
58         movec   %vbr,%a1
59         /* start from 0x200 downwards because we may
60          * have arosbootstrap fake exec above 0x200 */
61 3:      move.l  #0x200,%d0
62 2:      subq.l  #4,%d0
63         cmp.w   #0x100,%d0
64         beq.s   0f
65         move.l  0(%a1,%d0.w),%d1
66         bne.s   2b
67         move.l  %a0,(%a1,%d0.w)
68         lsr.l   #2,%d0
69 1:      rte
70 0:      moveq   #0,%d0
71         bra.s   1b
72