📄 lib_arm920t.h
字号:
// ****************************************************************************
// CP15 Register 0
// Read: ID code | cache type
// Write: Unpredictable
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadIDCode
//* \brief Read ID code register
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadIDCode()
{
register unsigned int id;
__asm("MRC p15, 0, id, c0, c0, 0");
return id;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadCacheType
//* \brief Read cache type
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadCacheType()
{
register unsigned int type;
__asm("MRC p15, 0, type, c0, c0, 1");
return type;
}
// ****************************************************************************
// CP15 Register 1
// Read: Control
// Write: Control
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadControl
//* \brief Read Control register
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadControl()
{
register unsigned int ctl;
__asm("MRC p15, 0, ctl, c1, c0, 0");
return ctl;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_WriteControl
//* \brief Write Control register
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_WriteControl(unsigned int ctl)
{
__asm("MCR p15, 0, ctl, c1, c0, 0");
}
// ****************************************************************************
// CP15 Register 2
// Read: Translation table Base
// Write: Translation table Base
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadTTB
//* \brief Read Translation table base register
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadTTB()
{
register unsigned int ttb;
__asm("MRC p15, 0, ttb, c2, c0, 0");
return ttb;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_WriteTTB
//* \brief Write Translation table base register
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_WriteTTB(unsigned int ttb)
{
__asm("MCR p15, 0, (ttb & 0xFFFFC000), c2, c0, 0");
}
// ****************************************************************************
// CP15 Register 3
// Read: Read domain access control
// Write: Write domain access control
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadDomain
//* \brief Read domain access control
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadDomain()
{
register unsigned int domain;
__asm("MRC p15, 0, domain, c3, c0, 0");
return domain;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_WriteDomain
//* \brief Write domain access control
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_WriteDomain(unsigned int domain)
{
__asm("MCR p15, 0, domain, c3, c0, 0");
}
// ****************************************************************************
// CP15 Register 5
// Read: Read Fault Status
// Write: Write Fault Status
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadDataFSR
//* \brief Read data FSR value
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadDataFSR()
{
register unsigned int dataFSR;
__asm("MRC p15, 0, dataFSR, c5, c0, 0");
return dataFSR;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_WriteDataFSR
//* \brief Write data FSR value
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_WriteDataFSR(unsigned int dataFSR)
{
__asm("MCR p15, 0, dataFSR, c5, c0, 0");
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadPrefetchFSR
//* \brief Read prefetch FSR value
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadPrefetchFSR()
{
register unsigned int prefetchFSR;
__asm("MRC p15, 0, prefetchFSR, c5, c0, 1");
return prefetchFSR;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_WritePrefetchFSR
//* \brief Write prefetch FSR value
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_WritePrefetchFSR(unsigned int prefetchFSR)
{
__asm("MCR p15, 0, prefetchFSR, c5, c0, 1");
}
// ****************************************************************************
// CP15 Register 6
// Read: Read Fault Address
// Write: Write Fault Address
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_ReadFAR
//* \brief Read FAR data
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_ARM_ReadFAR()
{
register unsigned int dataFAR;
__asm("MRC p15, 0, dataFAR, c6, c0, 0");
return dataFAR;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_WriteFAR
//* \brief Write FAR data
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_WriteFAR(unsigned int dataFAR)
{
__asm("MCR p15, 0, dataFAR, c6, c0, 0");
}
// ****************************************************************************
// CP15 Register 7
// Read: Unpredictable
// Write: Cache operations
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_InvalidateIDCache
//* \brief Invalidate ICache and DCache
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_InvalidateIDCache()
{
register unsigned int sbz = 0;
__asm("MCR p15, 0, sbz, c7, c7, 0");
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_InvalidateICache
//* \brief Invalidate ICache
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_InvalidateICache()
{
register unsigned int sbz = 0;
__asm("MCR p15, 0, sbz, c7, c5, 0");
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_InvalidateICacheMVA
//* \brief Invalidate ICache single entry (using MVA)
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_InvalidateICacheMVA(unsigned int mva)
{
__asm("MCR p15, 0, (mva & 0xFFFFFFE0), c7, c5, 1");
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_PrefetchICacheLine
//* \brief Prefetch ICache line (using MVA)
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_PrefetchICacheLine(unsigned int mva)
{
__asm("MCR p15, 0, (mva & 0xFFFFFFE0), c7, c13, 1");
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_InvalidateDCache
//* \brief Invalidate DCache
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_InvalidateDCache()
{
register unsigned int sbz = 0;
__asm("MCR p15, 0, sbz, c7, c6, 0");
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ARM_InvalidateDCacheMVA
//* \brief Invalidate DCache single entry (using MVA)
//*----------------------------------------------------------------------------
__inline void AT91F_ARM_InvalidateDCacheMVA(unsigned int mva)
{
__asm("MCR p15, 0, (mva & 0xFFFFFFE0), c7, c6, 1");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -