2016-01-07 13:07:13 +01:00
|
|
|
#pragma once
|
|
|
|
#include <wut.h>
|
|
|
|
|
2016-01-07 17:02:54 +01:00
|
|
|
/**
|
|
|
|
* \defgroup coreinit_cache Cache
|
|
|
|
* \ingroup coreinit
|
2016-01-07 20:24:54 +01:00
|
|
|
*
|
|
|
|
* Cache synchronisation functions.
|
2016-01-07 17:02:54 +01:00
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
2016-01-07 15:09:43 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbi instruction.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCInvalidateRange(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbf, sync, eieio.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCFlushRange(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbst, sync, eieio.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCStoreRange(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbf.
|
|
|
|
*
|
|
|
|
* Does not perform sync, eieio like DCFlushRange.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCFlushRangeNoSync(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbst.
|
|
|
|
*
|
|
|
|
* Does not perform sync, eieio like DCStoreRange.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCStoreRangeNoSync(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbz instruction.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCZeroRange(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Equivalent to dcbt instruction.
|
|
|
|
*/
|
2016-01-07 13:07:13 +01:00
|
|
|
void
|
2016-01-07 13:48:11 +01:00
|
|
|
DCTouchRange(void *addr,
|
|
|
|
uint32_t size);
|
2016-01-07 13:07:13 +01:00
|
|
|
|
2016-01-07 20:24:54 +01:00
|
|
|
|
2016-01-07 15:09:43 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
2016-01-07 17:02:54 +01:00
|
|
|
|
|
|
|
/** @} */
|