2 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
9 #include <asm/cachectl.h>
10 /* GNU libc 2 has this included in <sys/syscall.h>, but libc5 doesn't :-( */
11 #include <asm/unistd.h>
12 static inline _syscall4(int,cacheflush
,unsigned long,addr
,int,scope
,int,cache
,unsigned long,len
)
14 /******************************************************************************
17 #include <proto/exec.h>
18 #include <exec/execbase.h>
20 AROS_LH3(void, CacheClearE
,
23 AROS_LHA(APTR
, address
, A0
),
24 AROS_LHA(ULONG
, length
, D0
),
25 AROS_LHA(ULONG
, caches
, D1
),
28 struct ExecBase
*, SysBase
, 107, Exec
)
48 ******************************************************************************/
50 int scope
, cpucache
= 0;
52 if (caches
& CACRF_ClearD
)
53 cpucache
|= FLUSH_CACHE_DATA
;
55 if (caches
& CACRF_ClearI
)
56 cpucache
|= FLUSH_CACHE_INSN
;
58 if (length
== (ULONG
)-1)
59 scope
= FLUSH_SCOPE_ALL
;
61 scope
= FLUSH_SCOPE_LINE
;
63 (void) cacheflush((unsigned long)address
, scope
, cpucache
, length
);
66 /******************************************************************************
69 #include <proto/exec.h>
71 AROS_LH0(void, CacheClearU
,
74 struct ExecBase
*, SysBase
, 106, Exec
)
94 ******************************************************************************/
96 (void) cacheflush(0, FLUSH_SCOPE_ALL
, FLUSH_CACHE_BOTH
, 0);