# DC_InvalidateRange

## C Specification

      #include <nitro/os.h>

      void DC_InvalidateRange( void* startAddr, u32 nBytes );

## Arguments

startAddr | Lowest address in the region to be invalidated
nBytes | Number of bytes of the region to be invalidated

## Return Values

None.

## Description

Invalidates the data in the specified data cache region.

`startAddr` is rounded down to the closest 32-byte boundary. `startAddr` + `nBytes`, is rounded up to the closest 32-byte boundary.

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.

## Internal Operation

Operates register 7 of the system control coprocessor. This function divides the specified range into cache-line units and repeats its operation. Thus the amount of time it takes is proportional to the size of the range.

## See Also

`IC_InvalidateAll`, `IC_InvalidateRange`, `DC_InvalidateAll`, `DC_StoreAll`, `DC_StoreRange`, `DC_FlushAll`, `DC_FlushRange`

## Revision History

04/19/2005 Added note explaining that processing time is proportional to the size of the range.
12/22/2003 Initial version.