Files
m241Neelima/vxworks-6.9/target/h/arch/arm/cacheArmLib.h
T
2026-07-30 11:19:44 +05:30

152 lines
4.7 KiB
C

/* cacheArmLib.h - ARM cache library header file */
/*
* Copyright (c) 1996-2008, 2010-2012, 2014 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
06jan14,c_l Improve cache operation. (VXW6-27040)
01w,17jul12,j_b Add Cortex-A15 cache support
01v,07feb12,c_l Fix compiling error. (WIND00294062)
01u,13jan11,m_h moving cacheArchAlignSize to arm.h
01t,29apr10,pad Moved extern C statement after include statements.
01s,02jul07,m_h Adding support for MPCore
01r,12jun08,j_b add Cortex-A/-R cache support
01q,22may06,m_h 946 Support
01p,22feb06,m_h Manzano Support
01o,28mar05,jb Adding 1136jfs Support
01n,25jan05,jb Removing in-advertant addition of 1136
01m,07dec04,jb Restructure for Base6
01l,01dec03,scm modify for AIM support...
01k,17dec02,jb Adding ARM10 and 926E support
01k,24jan03,jb Resolve SPR 81285 and 82533
01j,02oct01,jpd added definitions to support simplifications in source.
01i,12nov01,to added cacheArchIntMask (merged from AE)
01h,23jul01,scm change XScale name to conform to coding standards...
01g,11dec00,scm replace references to ARMSA2 with XScale
01f,01sep00,scm add sa2 support...
01e,07sep99,jpd added ARM920T support.
01d,24nov98,jpd added ARM940T, ARMSA1100, ARMSA1500 support;
cdp restructured for multiple cache/MMU libraries.
01c,09mar98,jpd tidied.
01b,16sep97,jpd added cacheIMBRange(), 810 definitions for cacheDClear() and
cacheArchIntLock().
01a,09may96,cdp created
*/
/*
* N.B. although this library contains code written for the ARM810
* CPU, at the time of writing, this code has not been fully tested on
* that CPU. YOU HAVE BEEN WARNED.
*/
#ifndef __INCcacheArmLibh
#define __INCcacheArmLibh
#ifndef _ASMLANGUAGE
/*
* Variable used to hold the interrupt mask used when disabling
* interrupts for lengthy cache operations such as cache flushing. This
* is preinitialised to a mask that disables IRQs and FIQs. The BSP may
* change this. Do not do so unless you are sure that you understand the
* consequences. In particular, if interrupts are allowed to occur
* during these operations, the state of the cache afterwards may be
* indeterminate.
*/
IMPORT UINT32 cacheArchIntMask;
/* routine that locks interrupts according to the mask above */
IMPORT UINT32 cacheArchIntLock (void);
#endif /* _ASMLANGUAGE */
/*
* Arm Arch HW specific bits used by cache routines...
*/
#define CACHE_MM_ENABLE (1<<0) /* MMU enable */
#define CACHE_DC_ENABLE (1<<2) /* (data) cache enable */
#define CACHE_WB_ENABLE (1<<3) /* write buffer enable */
#define CACHE_IC_ENABLE (1<<12) /* Instruction cache enable */
#define LoC_MASK 0x07000000 /* level of coherency mask of CLIDR */
#define LoC_SHIFT 23 /* level of coherency shift of CLIDR */
#define LoUU_MASK 0x38000000 /* level of coherency mask of CLIDR */
#define LoUU_SHIFT 26 /* level of coherency shift of CLIDR */
/*
* Reset Architecture specific cache behavior.
* It is set with the cpu include file.
*/
#undef ARMCACHE_NOT_COHERENT
#undef ARMCACHE_HAS_WRITETHROUGH
#undef ARMCACHE_HAS_MINICACHE
#undef ARMCACHE_NEEDS_IMB
#if (ARMCACHE == ARMCACHE_926E)
#include "cacheArm926eLib.h"
#elif (ARMCACHE == ARMCACHE_946E)
#include "cacheArm946eLib.h"
#elif (ARMCACHE == ARMCACHE_920T)
#include "cacheArm920tLib.h"
#elif (ARMCACHE == ARMCACHE_940T)
#include "cacheArm940tLib.h"
#elif (ARMCACHE == ARMCACHE_1022E)
#include "cacheArm1022eLib.h"
#elif (ARMCACHE == ARMCACHE_1136JF)
#include "cacheArm1136jfLib.h"
#elif (ARMCACHE == ARMCACHE_XSCALE)
#include "cacheArmXSCALELib.h"
#elif (ARMCACHE == ARMCACHE_MANZANO)
#include "cacheArmManzanoLib.h"
#elif (ARMCACHE == ARMCACHE_CORTEXA8)
#include "cacheCortexA8Lib.h"
#elif (ARMCACHE == ARMCACHE_11MPCORE)
#include "cacheArm11MPCoreLib.h"
#elif (ARMCACHE == ARMCACHE_CORTEXA15)
#include "cacheCortexA15Lib.h"
#endif /* ARMCACHE == ARMCACHE_926E */
#ifdef __cplusplus
extern "C" {
#endif
#if (ARMCACHE != ARMCACHE_NONE)
/*
* Verify the cpu has established some special attributes
*/
#ifndef ARMCACHE_NOT_COHERENT
#error ARMCACHE value not supported in definition of ARMCACHE_NOT_COHERENT
#endif
#ifndef ARMCACHE_HAS_WRITETHROUGH
#error ARMCACHE value not supported in definition of ARMCACHE_HAS_WRITETHROUGH
#endif
#ifndef ARMCACHE_HAS_MINICACHE
#define ARMCACHE_HAS_MINICACHE FALSE
#endif
#ifndef ARMCACHE_NEEDS_IMB
#error ARMCACHE value not supported in definition of ARMCACHE_NEEDS_IMB
#endif
#endif /* ARMCACHE_NONE */
#ifdef __cplusplus
}
#endif
#endif /* __INCcacheArmLibh */