CACHE Functions
[CACHE]

Functions

CSL_IDEF_INLINE void CACHE_enableCaching (Uint8 mar)
CSL_IDEF_INLINE void CACHE_disableCaching (Uint8 mar)
CSL_IDEF_INLINE void CACHE_getMemRegionInfo (Uint8 mar, Uint8 *pcx, Uint8 *pfx)
CSL_IDEF_INLINE void CACHE_setMemRegionInfo (Uint8 mar, Uint8 pcx, Uint8 pfx)
CSL_IDEF_INLINE void CACHE_setL1DSize (CACHE_L1Size newSize)
CSL_IDEF_INLINE CACHE_L1Size CACHE_getL1DSize (void)
CSL_IDEF_INLINE void CACHE_freezeL1D (void)
CSL_IDEF_INLINE void CACHE_unfreezeL1D (void)
CSL_IDEF_INLINE Uint32 CACHE_getPrevL1DMode (void)
CSL_IDEF_INLINE void CACHE_invAllL1dWait (void)
CSL_IDEF_INLINE void CACHE_invAllL1d (CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbAllL1dWait (void)
CSL_IDEF_INLINE void CACHE_wbAllL1d (CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbInvAllL1dWait (void)
CSL_IDEF_INLINE void CACHE_wbInvAllL1d (CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_invL1dWait (void)
CSL_IDEF_INLINE void CACHE_invL1d (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbL1dWait (void)
CSL_IDEF_INLINE void CACHE_wbL1d (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbInvL1dWait (void)
CSL_IDEF_INLINE void CACHE_wbInvL1d (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_setL1PSize (CACHE_L1Size newSize)
CSL_IDEF_INLINE CACHE_L1Size CACHE_getL1PSize (void)
CSL_IDEF_INLINE void CACHE_freezeL1P (void)
CSL_IDEF_INLINE void CACHE_unfreezeL1P (void)
CSL_IDEF_INLINE Uint32 CACHE_getPrevL1PMode (void)
CSL_IDEF_INLINE void CACHE_invL1pWait (void)
CSL_IDEF_INLINE void CACHE_invL1p (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_invAllL1pWait (void)
CSL_IDEF_INLINE void CACHE_invAllL1p (CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_setL2Size (CACHE_L2Size newSize)
CSL_IDEF_INLINE CACHE_L2Size CACHE_getL2Size (void)
CSL_IDEF_INLINE void CACHE_freezeL2 (void)
CSL_IDEF_INLINE void CACHE_unfreezeL2 (void)
CSL_IDEF_INLINE void CACHE_wbL2Wait (void)
CSL_IDEF_INLINE void CACHE_wbL2 (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_invL2Wait (void)
CSL_IDEF_INLINE void CACHE_invL2 (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbInvL2Wait (void)
CSL_IDEF_INLINE void CACHE_wbInvL2 (void *blockPtr, Uint32 byteCnt, CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbAllL2Wait (void)
CSL_IDEF_INLINE void CACHE_wbAllL2 (CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_invAllL2Wait (void)
CSL_IDEF_INLINE void CACHE_invAllL2 (CACHE_Wait wait)
CSL_IDEF_INLINE void CACHE_wbInvAllL2Wait (void)
CSL_IDEF_INLINE void CACHE_wbInvAllL2 (CACHE_Wait wait)

Function Documentation

CSL_IDEF_INLINE void CACHE_disableCaching ( Uint8  mar  ) 

============================================================================
CACHE_disableCaching

Description
This function disables caching for a specific memory region.

Arguments

          mar      Memory region for which cache is to be disabled.
     

Return Value
None

Pre Condition
None

Post Condition
Memory region is now *not* cacheable.

Writes
CGEM_MAR0_PC=0

Example

        CACHE_disableCaching (20);

     

=============================================================================

CSL_IDEF_INLINE void CACHE_enableCaching ( Uint8  mar  ) 

============================================================================
CACHE_enableCaching

Description
This function enables caching for a specific memory region.

Arguments

          mar      Memory region for which cache is to be enabled.
     

Return Value
None

Pre Condition
None

Post Condition
Memory region is now cacheable.

Writes
CGEM_MAR0_PC=1

Example

        CACHE_enableCaching (20);

     

=============================================================================

CSL_IDEF_INLINE void CACHE_freezeL1D ( void   ) 

============================================================================
CACHE_freezeL1D

Description
This function is used to freeze the L1D cache.

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_L1DCC_OPER=1

Example

        
        CACHE_freezeL1D();

     

=============================================================================

CSL_IDEF_INLINE void CACHE_freezeL1P ( void   ) 

============================================================================
CACHE_freezeL1P

Description
This function is used to freeze the L1P cache.

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_L1PCC_OPER=1

Example

        
        CACHE_freezeL1P();

     

=============================================================================

CSL_IDEF_INLINE void CACHE_freezeL2 ( void   ) 

============================================================================
CACHE_freezeL2

Description
This function is used to freeze the L2 Cache

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
The L2 Cache is frozen.

Example

         
        CACHE_freezeL2(); 

     

=============================================================================

CSL_IDEF_INLINE CACHE_L1Size CACHE_getL1DSize ( void   ) 

============================================================================
CACHE_getL1DSize

Description
This function is used to get the L1 Data Cache Size.

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Reads
CGEM_L1DCFG_L1DMODE

Example

        CACHE_L1Size cacheSize;
        
        cacheSize = CACHE_getL1DSize();

     

=============================================================================

CSL_IDEF_INLINE CACHE_L1Size CACHE_getL1PSize ( void   ) 

============================================================================
CACHE_getL1PSize

Description
This function is used to get the L1P Cache Size.

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Reads
CGEM_L1PCFG_L1PMODE

Example

        CACHE_L1Size cacheSize;
        
        cacheSize = CACHE_getL1PSize();

     

=============================================================================

CSL_IDEF_INLINE CACHE_L2Size CACHE_getL2Size ( void   ) 

============================================================================
CACHE_getL2Size

Description
This function is used to get the L2 cache size.

Arguments
None

Return Value
CACHE_L2Size

Pre Condition
None

Post Condition
None

Reads
CGEM_L2CFG_L2MODE

Example

        CACHE_L2Size size;
        
        size = CACHE_getL2Size(); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_getMemRegionInfo ( Uint8  mar,
Uint8 *  pcx,
Uint8 *  pfx 
)

============================================================================
CACHE_getMemRegionInfo

Description
This function is used to get memory region information.

Arguments

          mar      Memory region for which the information is required.
          pcx      Is address cacheable in external cache (MSMC)
          pfx      Is address prefetchable 
     

Return Value
None

Pre Condition
None

Post Condition
None

Reads
CGEM_MAR0_PCX, CGEM_MAR0_PFX

Example

        
        Uint8 pcx;
        Uint8 pfx;

        // Get the memory region information for 20
        CACHE_getMemRegionInfo (20, &pcx, &pfx);

     

=============================================================================

CSL_IDEF_INLINE Uint32 CACHE_getPrevL1DMode ( void   ) 

============================================================================
CACHE_getPrevL1DMode

Description
This function is used get the previous operating state of the L1D cache

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Reads
CGEM_L1DCC_POPER

Example

        Uint32 prev;
        
        prev = CACHE_getPrevL1DMode();

     

=============================================================================

CSL_IDEF_INLINE Uint32 CACHE_getPrevL1PMode ( void   ) 

============================================================================
CACHE_getPrevL1PMode

Description
This function is used get the previous operating state of the L1P cache

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Reads
CGEM_L1PCC_POPER

Example

        Uint32  prev;
        
        prev = CACHE_getPrevL1PMode();

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invAllL1d ( CACHE_Wait  wait  ) 

============================================================================
CACHE_invAllL1d

Description
This function is used to globally invalidate the L1D cache.

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The L1D Cache is being invalidated.

Writes
CGEM_L1DINV_I=1

Example

        
        CACHE_invAllL1d(CACHE_WAIT); // Invalidate the L1D cache 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invAllL1dWait ( void   ) 

============================================================================
CACHE_invAllL1dWait

Description
This function is used to wait for the L1D global invalidate operation to complete. This API should be used only if the CACHE_invAllL1d was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_invAllL1d(wait=CACHE_NOWAIT) must be called.

Post Condition
None

Reads
CGEM_L1DINV_I=0

Example

                
        CACHE_invAllL1d(CACHE_NOWAIT); // Invalidate the L1D cache
        ...        
        CACHE_invAllL1dWait();        // Wait for the invalidate operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invAllL1p ( CACHE_Wait  wait  ) 

============================================================================
CACHE_invAllL1p

Description
This function is used to invalidate the entire L1P Cache

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The entire L1P cache is being invalidated.

Writes
CGEM_L1PINV_I=1

Example

         
        CACHE_invAllL1p(CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invAllL1pWait ( void   ) 

============================================================================
CACHE_invAllL1pWait

Description
This function is used to wait for the L1P invalidate operation to complete. This API should be used only if the CACHE_invAllL1p was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_invAllL1p(wait=CACHE_NOWAIT) must be called.

Post Condition
The L1P Cache is invalidated.

Reads
CGEM_L1PINV_I=0

Example

                
        CACHE_invAllL1p(CACHE_NOWAIT);
        ...        
        CACHE_invAllL1pWait();        // Wait for the Invalidate operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invAllL2 ( CACHE_Wait  wait  ) 

============================================================================
CACHE_invAllL2

Description
This function is used to invalidate all the contents of the L2 Cache.

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the L2 Cache are being invalidated.

Writes
CGEM_L2INV_I=1

Example

        
        // Invalidate the contents of the L2 Cache. 
        CACHE_invAllL2(CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invAllL2Wait ( void   ) 

============================================================================
CACHE_invAllL2Wait

Description
This function is used to wait for the L2 Invalidate operation to complete. This API should be used only if the CACHE_invAllL2 was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_invAllL2(wait=CACHE_NOWAIT) must be called.

Post Condition
The contents of the L2 Cache have been invalidated

Reads
CGEM_L2INV_I=0

Example

        
        // Invalidate the contents of the L2 Cache.
        CACHE_invAllL2(CACHE_NOWAIT);
        
        // Wait for the operation to complete. 
        CACHE_invAllL2Wait(); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invL1d ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_invL1d

Description
This function is used to invalidate a block in the L1D Cache. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be invalidated
          byteCnt       Size of the block to be invalidated.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the blockPtr are being invalidated

Writes
CGEM_L1DIBAR_ADDR,CGEM_L1DIWC_WC

Example

        
        Uint8* ptr_buffer;
                
        // Invalidate 128 bytes of the buffer.
        CACHE_invL1d((void *)ptr_buffer, 128, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invL1dWait ( void   ) 

============================================================================
CACHE_invL1dWait

Description
This function is used to wait for the L1D invalidate block operation to complete. This API should be used only if the CACHE_invL1d was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_invL1d(wait=CACHE_NOWAIT) must be called.

Post Condition
The L1D Block Cache is invalidated.

Reads
CGEM_L1DIWC_WC=0

Example

                
        CACHE_invL1d((void *)ptr_buffer, 128, CACHE_NOWAIT);
        ...        
        CACHE_invL1dWait();        // Wait for the Invalidate/Writeback operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invL1p ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_invL1p

Description
This function is used to invalidate the L1P Cache pointed by the block address. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be invalidated
          byteCnt       Size of the block to be invalidated.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the blockPtr are being invalidated

Writes
CGEM_L1PIBAR_ADDR,CGEM_L1PIWC_WC

Example

 
        // Invalidate the 128 bytes of the function 'foo'
        CACHE_invL1p((void *)&foo, 128, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invL1pWait ( void   ) 

============================================================================
CACHE_invL1pWait

Description
This function is used to wait for the L1D invalidate block operation to complete. This API should be used only if the CACHE_invL1p was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_invL1p(wait=CACHE_NOWAIT) must be called.

Post Condition
The L1D Block Cache is invalidated.

Reads
CGEM_L1PIWC_WC=0

Example

                
        CACHE_invL1p((void *)&foo, 128, CACHE_NOWAIT);
        ...        
        CACHE_invL1pWait();        // Wait for the Invalidate operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invL2 ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_invL2

Description
This function is used to invalidate the contents of the L2 Cache. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be invalidated
          byteCnt       Size of the block to be invalidated.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the L2 Cache are being invalidated.

Writes
CGEM_L2IBAR_ADDR,CGEM_L2IWC_WC

Example

        Uint8* ptr_buffer;
        
        // Invalidate the contents of the buffer. 
        CACHE_invL2(ptr_buffer, 100, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_invL2Wait ( void   ) 

============================================================================
CACHE_invL2Wait

Description
This function is used to wait for the L2 invalidate block operation to complete. This API should be used only if the CACHE_invL2 was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_invL2(wait=CACHE_NOWAIT) must be called.

Post Condition
Invalidate the contents of the L2 Cache.

Reads
CGEM_L2IWC_WC=0

Example

                
        CACHE_invL2((void *)ptr_buffer, 128, CACHE_NOWAIT);
        ...        
        CACHE_invL2Wait();        // Wait for the Invalidate operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_setL1DSize ( CACHE_L1Size  newSize  ) 

============================================================================
CACHE_setL1DSize

Description
This function is used to set the L1 Data Cache Size.

Arguments

          newSize      Cache Size to be configured.
     

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_L1DCFG_L1DMODE

Example

        
        CACHE_setL1DSize(1); // Configure 4K Cache Size

     

=============================================================================

CSL_IDEF_INLINE void CACHE_setL1PSize ( CACHE_L1Size  newSize  ) 

============================================================================
CACHE_setL1PSize

Description
This function is used to set the L1P Cache Size.

Arguments

          newSize      Cache Size to be configured.
     

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_L1PCFG_L1PMODE

Example

        
        CACHE_setL1PSize(1); // Configure 4K Cache Size

     

=============================================================================

CSL_IDEF_INLINE void CACHE_setL2Size ( CACHE_L2Size  newSize  ) 

============================================================================
CACHE_setL2Size

Description
This function is used to set the new size of the L2 Cache.

Arguments

          newSize   New Size of the L2 Cache to be set.
     

Return Value
None

Pre Condition
None

Post Condition
The L2 Cache is configured to use the new size.

Writes
CGEM_L2CFG_L2MODE

Example

         
        CACHE_setL2Size(CACHE_32KCACHE); // Use 32K L2 Cache. 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_setMemRegionInfo ( Uint8  mar,
Uint8  pcx,
Uint8  pfx 
)

============================================================================
CACHE_setMemRegionInfo

Description
This function is used to set memory region information.

Arguments

          mar      Memory region for which the information is required.
          pcx      Is address cacheable in external cache (MSMC)
          pfx      Is address prefetchable 
     

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_MAR0_PCX, CGEM_MAR0_PFX

Example

        
        Uint8 pcx;
        Uint8 pfx;

        // Get the memory region information for 20
        CACHE_getMemRegionInfo (20, &pcx, &pfx);
        ...
        // Ensure Memory Region 20 is not prefetchable.
        CACHE_setMemRegionInfo(20, pcx, 0);
     

=============================================================================

CSL_IDEF_INLINE void CACHE_unfreezeL1D ( void   ) 

============================================================================
CACHE_unfreezeL1D

Description
This function is used to unfreeze the L1D cache.

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_L1DCC_OPER=0

Example

        
        CACHE_unfreezeL1D();

     

=============================================================================

CSL_IDEF_INLINE void CACHE_unfreezeL1P ( void   ) 

============================================================================
CACHE_unfreezeL1P

Description
This function is used to unfreeze the L1D cache.

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
None

Writes
CGEM_L1PCC_OPER=0

Example

        
        CACHE_unfreezeL1D();

     

=============================================================================

CSL_IDEF_INLINE void CACHE_unfreezeL2 ( void   ) 

============================================================================
CACHE_unfreezeL2

Description
This function is used to unfreeze the L2 Cache

Arguments
None

Return Value
None

Pre Condition
None

Post Condition
The L2 Cache is unfrozen

Example

         
        CACHE_unfreezeL2(); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbAllL1d ( CACHE_Wait  wait  ) 

============================================================================
CACHE_wbAllL1d

Description
This function is used to writeback the dirty lines of the L1D Cache

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The dirty lines of the L1D Cache are being written back

Writes
CGEM_L1DWB_C=1

Example

        
        CACHE_wbAllL1d(CACHE_WAIT); // Writeback the Dirty Lines of the L1D cache 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbAllL1dWait ( void   ) 

============================================================================
CACHE_wbAllL1dWait

Description
This function is used to wait for the L1D writeback operation to complete. This API should be used only if the CACHE_wbAllL1d was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbAllL1d(wait=CACHE_NOWAIT) must be called.

Post Condition
The L1D Dirty lines are written back

Reads
CGEM_L1DWB_C=0

Example

                
        CACHE_wbAllL1d(CACHE_NOWAIT); // Writeback the L1D cache
        ...        
        CACHE_wbAllL1dWait();        // Wait for the writeback operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbAllL2 ( CACHE_Wait  wait  ) 

============================================================================
CACHE_wbAllL2

Description
This function is used to write back all the contents of the L2 Cache.

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the L2 Cache are being written back.

Writes
CGEM_L2WB_C=1

Example

        
        // Writeback the contents of the L2 Cache. 
        CACHE_wbAllL2(CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbAllL2Wait ( void   ) 

============================================================================
CACHE_wbAllL2Wait

Description
This function is used to wait for the L2 Writeback & invalidate operation to complete. This API should be used only if the CACHE_wbAllL2 was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbAllL2(wait=CACHE_NOWAIT) must be called.

Post Condition
The contents of the L2 Cache have been written back

Reads
CGEM_L2WB_C=0

Example

        
        // Writeback the contents of the L2 Cache.
        CACHE_wbAllL2(CACHE_NOWAIT);
        
        // Wait for the operation to complete. 
        CACHE_wbAllL2Wait(); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvAllL1d ( CACHE_Wait  wait  ) 

============================================================================
CACHE_wbInvAllL1d

Description
This function is used to invalidate and writeback the dirty lines of the L1D Cache

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
Invalidates and Writebacks the dirty lines of the L1D Cache

Writes
CGEM_L1DWBINV_C=1

Example

        
        CACHE_wbInvAllL1d(CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvAllL1dWait ( void   ) 

============================================================================
CACHE_wbInvAllL1dWait

Description
This function is used to wait for the L1D writeback invalidate operation to complete. This API should be used only if the CACHE_wbInvAllL1d was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbInvAllL1d(wait=CACHE_NOWAIT) must be called.

Post Condition
The L1D Dirty lines are written back

Reads
CGEM_L1DWBINV_C=0

Example

                
        CACHE_wbInvAllL1d(CACHE_NOWAIT); // Invalidate/Writeback the L1D cache
        ...        
        CACHE_wbInvAllL1dWait();        // Wait for the Invalidate/Writeback operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvAllL2 ( CACHE_Wait  wait  ) 

============================================================================
CACHE_wbInvAllL2

Description
This function is used to writeback and invalidate all the contents of the L2 Cache.

Arguments

          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the L2 Cache are being written back & invalidated.

Writes
CGEM_L2WBINV_C=1

Example

        
        // Invalidate the contents of the L2 Cache. 
        CACHE_wbInvAllL2(CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvAllL2Wait ( void   ) 

============================================================================
CACHE_wbInvAllL2Wait

Description
This function is used to wait for the L2 Writeback and Invalidate operation to complete. This API should be used only if the CACHE_wbInvAllL2 was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbInvAllL2(wait=CACHE_NOWAIT) must be called.

Post Condition
The contents of the L2 Cache have been invalidated and written back

Reads
CGEM_L2WBINV_C=0

Example

        
        // Writeback & Invalidate the contents of the L2 Cache.
        CACHE_wbInvAllL2(CACHE_NOWAIT);
        
        // Wait for the operation to complete. 
        CACHE_wbInvAllL2Wait(); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvL1d ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_wbInvL1d

Description
This function is used to invalidate and writeback the dirty lines of the block address. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be invalidated/written back
          byteCnt       Size of the block to be invalidated/written back.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the blockPtr are being invalidated and the dirty lines are written back

Writes
CGEM_L1DWIBAR_ADDR,CGEM_L1DWIWC_WC

Example

        
        Uint8* ptr_buffer;
                
        // Writeback/Invalidate 128 bytes of the buffer.
        CACHE_wbInvL1d((void *)ptr_buffer, 128, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvL1dWait ( void   ) 

============================================================================
CACHE_wbInvL1dWait

Description
This function is used to wait for the L1D invalidate/writeback block operation to complete. This API should be used only if the CACHE_wbInvL1d was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbInvL1d(wait=CACHE_NOWAIT) must be called.

Post Condition
The dirty lines of the L1D Block Cache have been written back and the cache contents pointed to by the block address are also invalidated.

Reads
CGEM_L1DWIWC_WC=0

Example

                
        CACHE_wbInvL1d((void *)ptr_buffer, 128, CACHE_NOWAIT);
        ...        
        CACHE_wbInvL1dWait();        // Wait for the operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvL2 ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_wbInvL2

Description
This function is used to write back and invalidate the contents of the L2 Cache. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be written back & invalidated
          byteCnt       Size of the block to be written back & invalidated.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the L2 Cache are being written back & invalidated.

Writes
CGEM_L2WIBAR_ADDR,CGEM_L2WIWC_WC

Example

        Uint8* ptr_buffer;
        
        // Invalidate the contents of the buffer. 
        CACHE_wbInvL2(ptr_buffer, 100, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbInvL2Wait ( void   ) 

============================================================================
CACHE_wbInvL2Wait

Description
This function is used to wait for the L2 Writeback & invalidate block operation to complete. This API should be used only if the CACHE_wbInvL2 was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbInvL2(wait=CACHE_NOWAIT) must be called.

Post Condition
Invalidate the contents of the L2 Cache.

Reads
CGEM_L2WIWC_WC=0

Example

                
        CACHE_wbInvL2((void *)ptr_buffer, 128, CACHE_NOWAIT);
        ...        
        CACHE_wbInvL2Wait();  // Wait for the Writeback-Invalidate operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbL1d ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_wbL1d

Description
This function is used to writeback the dirty lines of the block address. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be written back
          byteCnt       Size of the block to be written back.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The contents of the blockPtr are being written back

Writes
CGEM_L1DWBAR_ADDR,CGEM_L1DWWC_WC

Example

        
        Uint8* ptr_buffer;
                
        // Writeback 128 bytes of the buffer.
        CACHE_wbL1d((void *)ptr_buffer, 128, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbL1dWait ( void   ) 

============================================================================
CACHE_wbL1dWait

Description
This function is used to wait for the L1D writeback block operation to complete. This API should be used only if the CACHE_wbL1d was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbL1d(wait=CACHE_NOWAIT) must be called.

Post Condition
The dirty lines of the L1D Block Cache have been written back.

Reads
CGEM_L1DWWC_WC=0

Example

                
        CACHE_wbL1d((void *)ptr_buffer, 128, CACHE_NOWAIT);
        ...        
        CACHE_wbL1dWait();        // Wait for the writeback operation to complete.

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbL2 ( void *  blockPtr,
Uint32  byteCnt,
CACHE_Wait  wait 
)

============================================================================
CACHE_wbL2

Description
This function is used to writeback the contents of the L2 Cache. Although the block size can be specified in the number of bytes, the cache controller operates on whole cache lines. To prevent unintended behavior "blockPtr" should be aligned on the cache line size and "byteCnt" should be a multiple of the cache line size.

Arguments

          blockPtr      Address of the block which is to be written back
          byteCnt       Size of the block to be written block.
          wait          Indicates if the call should block or not.
     

Return Value
None

Pre Condition
None

Post Condition
The dirty lines of the L2 Cache are being written back.

Writes
CGEM_L2WBAR_ADDR,CGEM_L2WWC_WC

Example

        Uint8* ptr_buffer;
        
        // Writeback the contents of the buffer. 
        CACHE_wbL2(ptr_buffer, 100, CACHE_WAIT); 

     

=============================================================================

CSL_IDEF_INLINE void CACHE_wbL2Wait ( void   ) 

============================================================================
CACHE_wbL2Wait

Description
This function is used to wait for the L2 writeback block operation to complete. This API should be used only if the CACHE_wbL2 was called with the CACHE_NOWAIT argument.

Arguments
None

Return Value
None

Pre Condition
CACHE_wbL2(wait=CACHE_NOWAIT) must be called.

Post Condition
The dirty lines of the L1D Block Cache have been written back.

Reads
CGEM_L2WWC_WC=0

Example

                
        CACHE_wbL2((void *)ptr_buffer, 128, CACHE_NOWAIT);
        ...        
        CACHE_wbL2Wait();        // Wait for the writeback operation to complete.

     

=============================================================================


Copyright 2012, Texas Instruments Incorporated