revert between 56095 -> 55830 in arch
[AROS.git] / arch / m68k-mac / include / aros / core.h
blobdb1836a3efe96a47ed96bca6db40223c085dfa94
1 #ifndef AROS_CORE_H
2 #define AROS_CORE_H
4 /*
5 Copyright © 2000, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: Interrupt core, part of kernel.resource
9 Lang: english
12 #include <exec/types.h>
13 #include <exec/execbase.h>
14 #include <asm/irq.h>
15 #include <asm/linkage.h>
17 /* Here are some macros used to build interrupt table in core file. */
19 #define IRQ_NAME2(nr) nr##_interrupt(void)
20 #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)
22 #define BUILD_IRQ(nr) \
23 /*asmlinkage*/ void IRQ_NAME(nr); \
24 __asm__( \
25 "\n\t"__ALIGN_STR"\n" \
26 SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
27 "/* move.b #0x61,0xdddddebc*/\n\t" \
28 "movem.l %d0-%d7/%a0-%a6,-(%ssp)\n\t"\
29 "move.l %usp,%a0\n\t" \
30 "move.l %a0,-(%ssp)\n\t" \
31 "move.l %ssp,%a0\n\t" \
32 "pea "#nr"\n\t" \
33 "move.l %a0,-(%ssp)\n\t" \
34 "bsr "SYMBOL_NAME_STR(do_IRQ)"\n\t" \
35 "add.l #8,%ssp\n\t" \
36 "move.l (%ssp)+,%a0\n\t" \
37 "move.l %a0,%usp\n\t" \
38 "movem.l (%ssp)+,%d0-%d7/%a0-%a6\n\t"\
39 "/*move.b #0x41,0xdddddebc*/\n\t" \
40 "rte\n\t");
43 struct PlatformData
45 struct irqDescriptor irq_desc[NR_IRQS];
48 #define PLATFORMDATA(x) ((struct PlatformData *)(x)->PlatformData)
50 BOOL init_core(struct ExecBase *);
51 BOOL irqSet(int, struct irqServer *, void *, struct ExecBase *);
53 void disable_irq(unsigned int virq);
54 void enable_irq(unsigned int virq);
56 #endif