Cache Operations

Defines

#define os_flush_cache_all()   v6_flush_kern_cache_all_L2()
#define os_cache_clean_range(start, len)
#define os_cache_inv_range(start, len)
#define os_cache_flush_range(start, len)

Functions

void v6_flush_kern_cache_all_L2 (void)

Detailed Description

These functions are for synchronizing processor cache with RAM.


Define Documentation

#define os_cache_clean_range ( start,
len   ) 
Value:
{                                                                         \
    void *s = (void*)start;                                               \
    void *e = s + len;                                                    \
    dmac_map_area(s, len, DMA_TO_DEVICE);                   \
    outer_clean_range(__pa(s), __pa(e));                                  \
}

Clean a range of addresses from the cache. That is, write updates back to (RAM, next layer).

Parameters:
start Starting virtual address
len Number of bytes to flush
Returns:
void

Referenced by sah_HW_Reset(), sah_Make_Links(), and sah_Physicalise_Links().

#define os_cache_flush_range ( start,
len   ) 
Value:
{                                                                         \
    void *s = (void*)start;                                               \
    void *e = s + len;                                                    \
    dmac_flush_range(s, e);                                               \
    outer_flush_range(__pa(s), __pa(e));                                  \
}

Flush a range of addresses from the cache. That is, perform clean and invalidate

Parameters:
start Starting virtual address
len Number of bytes to flush
Returns:
void

Referenced by do_scc_decrypt_region(), do_scc_encrypt_region(), sah_Make_Links(), and sah_Physicalise_Links().

#define os_cache_inv_range ( start,
len   ) 
Value:
{                                                                         \
    void *s = (void*)start;                                               \
    void *e = s + len;                                                    \
    dmac_unmap_area(s, len, DMA_FROM_DEVICE);            \
    outer_inv_range(__pa(s), __pa(e));                                    \
}

Invalidate a range of addresses in the cache

Parameters:
start Starting virtual address
len Number of bytes to flush
Returns:
void

Referenced by do_scc_encrypt_region(), sah_DePhysicalise_Links(), and sah_HW_Reset().

#define os_flush_cache_all ( void   )     v6_flush_kern_cache_all_L2()

Flush and invalidate all cache lines.

Referenced by sah_Copy_Descriptors(), and sah_Destroy_Descriptors().


Function Documentation

void v6_flush_kern_cache_all_L2 ( void   ) 

ARM-routine to flush all cache. Defined here, because it exists in no easy-access header file. ARM-11 with L210 cache only!

footer
©  Freescale Semiconductor, Inc., 2007.  All rights reserved.
Freescale Confidential Proprietary
NDA Required
doxygen