2 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
11 #include <asm/cachectl.h>
12 /* GNU libc 2 has this included in <sys/syscall.h>, but libc5 doesn't :-( */
13 #include <asm/unistd.h>
14 static inline _syscall4(int,cacheflush
,unsigned long,addr
,int,scope
,int,cache
,unsigned long,len
)
17 /******************************************************************************
20 #include <proto/exec.h>
21 #include <exec/execbase.h>
23 AROS_LH3(void, CacheClearE
,
26 AROS_LHA(APTR
, address
, A0
),
27 AROS_LHA(ULONG
, length
, D0
),
28 AROS_LHA(ULONG
, caches
, D1
),
31 struct ExecBase
*, SysBase
, 107, Exec
)
51 ******************************************************************************/
55 ULONG scope
, cpucache
= 0;
57 if (caches
& CACRF_ClearD
)
58 cpucache
|= FLUSH_CACHE_DATA
;
60 if (caches
& CACRF_ClearI
)
61 cpucache
|= FLUSH_CACHE_INSN
;
63 if (length
== (ULONG
)-1)
64 scope
= FLUSH_SCOPE_ALL
;
66 scope
= FLUSH_SCOPE_LINE
;
68 (void) cacheflush((unsigned long)address
, scope
, cpucache
, length
);
73 /******************************************************************************
76 #include <proto/exec.h>
78 AROS_LH0(void, CacheClearU
,
81 struct ExecBase
*, SysBase
, 106, Exec
)
101 ******************************************************************************/
105 (void) cacheflush(0, FLUSH_SCOPE_ALL
, FLUSH_CACHE_BOTH
, 0);