#include <nitro/os.h>
void DC_FlushRange(
void* startAddr ,
u32 nBytes );
void DC_CleanAndInvalidateRange(
void* startAddr ,
u32 nBytes );
Flushes the data cache in the specified region
Specifically, this function performs a cache writeback in a dirty state (state when a write to data cache corresponding to the specified memory region is not reflected in main memory), discards data in that cache region, and places it in an invalid state.
Call this function when completing data transmission data blocks that use the main memory of other devices, such as when performing DMA transfers or creating graphics commands.
startAddr is rounded down to the closest 32-byte boundary. startAddr + nBytes, is rounded up to the closest 32-byte boundary.
DC_CleanAndInvalidateRange() is another name for DC_FlushRange() and operates exactly the same.
DC_Clean*/DC_CleanAndInvalidate* were prepared for porting from the prototype SDK version. Normally, DC_Store*/DC_Flush* should be used.
The official documentation for the ARM processor sometimes describes Flush as the operation that invalidates the data cache, Clean as the operation that writes back the data cache and puts it into a clean state, and Clean and Flush as the operation that writes back and then invalidates. However, this SDK follows the conventions of the Nintendo GameCube and Nintendo64 by using Invalidate for invalidation, Store for writeback, and Flush for writeback and invalidate operations.
Operates register 7 of the system control coprocessor.
startAddr |
Lowest address in the region to be cleaned |
nBytes |
Number of bytes of the region to be cleaned |
None.
IC_InvalidateAll, IC_InvalidateRange, DC_InvalidateAll, DC_InvalidateRange, DC_StoreAll, DC_StoreRange, DC_FlushAll
12/22/2003 Initial Version