use USER_CPPFLAGS
[AROS.git] / arch / m68k-all / exec / cachepredma.c
blob338bf4b7d042aa2458ce39e5b027d402486e9435
1 /*
2 Copyright © 1995-2013, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: CachePreDMA() - Do what is necessary for DMA.
6 Lang: english
7 */
9 #define DEBUG 0
11 #include <aros/debug.h>
12 #include <exec/types.h>
13 #include <aros/libcall.h>
15 extern void AROS_SLIB_ENTRY(CachePreDMA_00,Exec,127)(void);
16 extern void AROS_SLIB_ENTRY(CachePreDMA_40,Exec,127)(void);
18 #include <proto/exec.h>
20 /* See rom/exec/cachepredma.c for documentation */
22 AROS_LH3(APTR, CachePreDMA,
23 AROS_LHA(APTR, address, A0),
24 AROS_LHA(ULONG *, length, A1),
25 AROS_LHA(ULONG, flags, D0),
26 struct ExecBase *, SysBase, 127, Exec)
28 AROS_LIBFUNC_INIT
29 void (*func)(void);
31 /* When called the first time, this patches up the
32 * Exec syscall table to directly point to the right routine.
34 Disable();
35 if (SysBase->AttnFlags & AFF_68040) {
36 /* 68040 support */
37 func = AROS_SLIB_ENTRY(CachePreDMA_40, Exec, 127);
38 } else {
39 /* Everybody else (68000, 68010) */
40 func = AROS_SLIB_ENTRY(CachePreDMA_00, Exec, 127);
43 SetFunction((struct Library *)SysBase, -LIB_VECTSIZE * 127, func);
44 Enable();
46 /* Call 'myself', which is now pointing to the correct routine */
47 return CachePreDMA(address, length, flags);
49 AROS_LIBFUNC_EXIT
50 } /* CachePreDMA() */