# Cache: Overview

ARM9 has a cache mechanism that can be used to boost the efficiency of local memory access. The ARM9 cache is comprised of 8 KB of instruction cache and 4 KB of data cache.

These functions belong to the OS category of functions but they have special applications. Accordingly, the data cache-related function names do not begin with `OS_` but with `DC_`, and the instruction cache-related functions are named beginning with `IC_`.

## Settings to Enable/Disable Data Cache

`DC_Enable()` enables data cache.

`DC_Disable()` disables data cache.

`DC_Restore()` sets the state to either enable or disable, as specified.

Even if these instructions are set to enable data cache, the switch from the disabled state to the enabled state will not occur if the Protection Unit has been configured to disable data cache.

## Data Cache Operations

`DC_InvalidateAll()` destroys all data in data cache.
`DC_InvalidRange()` destroys data in a specified region of data cache.

`DC_StoreAll()` writes back all data in data cache.
`DC_StoreRange()` writes back data in a specified region of data cache.

`DC_FlushAll()` writes back and destroys all data in data cache.
`DC_FlushRange()` writes back and destroys data in a specified region of data cache.

`DC_TouchRange()` preloads a specified region of data into data cache.

`DC_LockdownRange()` locks the data in a specified region of data cache so it cannot be replaced with other cache.

`DC_WaitWriteBufferEmpty()` checks whether the write buffer is empty after writing back cache.

## Settings to Enable/Disable Instruction Cache

`IC_Enable()` enables instruction cache.

`IC_Disable()` disables instruction cache.

`IC_Restore()` sets the state to either enable or disable, as specified.

Even if these instructions are set to enable instruction cache, the switch from the disabled state to the enabled state will not occur if the Protection Region has been configured to disable instruction cache.

## Instruction Cache Operations

`IC_InvalidateAll()` destroys all data in instruction cache.

`IC_InvalidateRange()` destroys data in a specified region of instruction cache.

`IC_PrefetchRange()` preloads a specified region of instruction code into instruction cache.

`IC_LockdownRange()` locks the data in a specified region of instruction cache so it cannot be replaced with other cache.

## See Also

`OS Function List (Cache)
`

## Revision History

2004/12/16 Initial version.

CONFIDENTIAL