📄 arm926ej_cp15_drv.c
字号:
/*************************************************************************
*
* Used with ICCARM and AARM.
*
* (c) Copyright IAR Systems 2006
*
* File name : arm926ej_cp15_drv.c
* Description : Driver for the ARM926EJ's CP15
*
* History :
* 1. Date : September, 8 2006
* Author : Stanimir Bonev
* Description : Create
*
* $Revision: 1.1.2.4 $
**************************************************************************/
#include "arm926ej_cp15_drv.h"
/*************************************************************************
* Function Name: CP15_GetID
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the ID register
*
*************************************************************************/
__arm Int32U CP15_GetID (void)
{
return(__MRC(15,0,CP15_ID,0,0));
}
/*************************************************************************
* Function Name: CP15_GetCacheType
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the Cache type
*
*************************************************************************/
__arm Int32U CP15_GetCacheType (void)
{
return(__MRC(15,0,CP15_ID,0,1));
}
/*************************************************************************
* Function Name: CP15_GetTCM_Status
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the TCM status
*
*************************************************************************/
__arm Int32U CP15_GetTCM_Status (void)
{
return(__MRC(15,0,CP15_ID,0,2));
}
/*************************************************************************
* Function Name: CP15_GetTtb
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the TTB register
*
*************************************************************************/
__arm Int32U CP15_GetTtb (void)
{
return(__MRC(15,0,CP15_TTB_ADDR,0,0));
}
/*************************************************************************
* Function Name: CP15_GetStatus
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the MMU control register
*
*************************************************************************/
__arm Int32U CP15_GetStatus (void)
{
return(__MRC(15,0,CP15_CTRL,0,0));
}
/*************************************************************************
* Function Name: CP15_GetDomain
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the MMU domain access register
*
*************************************************************************/
__arm Int32U CP15_GetDomain (void)
{
return(__MRC(15,0,CP15_DA_CTRL,0,0));
}
/*************************************************************************
* Function Name: CP15_SetDomain
* Parameters: Int32U DomainAccess
*
* Return: Int32U
*
* Description: Function set the MMU domain access register
*
*************************************************************************/
__arm void CP15_SetDomain (Int32U DomainAccess)
{
register Int32U Val = DomainAccess;
__MCR(15,0,Val,CP15_DA_CTRL,0,0);
}
/*************************************************************************
* Function Name: CP15_InvalAllCache
* Parameters: none
*
* Return: none
*
* Description: Invalidate entire cache
*
*************************************************************************/
__arm void CP15_InvalAllCache (void)
{
register volatile Int32U Dummy;
__MCR(15,0,Dummy,CP15_CACHE_OPR,7,0);
}
/*************************************************************************
* Function Name: CP15_InvalAllTbl
* Parameters: none
*
* Return: none
*
* Description: Invalidate TLB
*
*************************************************************************/
__arm void CP15_InvalAllTbl (void)
{
register volatile Int32U Dummy;
__MCR(15,0,Dummy,CP15_TBL_OPR,7,0);
}
/*************************************************************************
* Function Name: CP15_SetMmu
* Parameters: Int32U Ctrl
*
* Return: none
*
* Description: Set CP15 control register
*
*************************************************************************/
__arm void CP15_SetMmu (Int32U Ctrl)
{
register volatile Int32U Val = Ctrl;
__MCR(15,0,Val,CP15_CTRL,0,0);
}
/*************************************************************************
* Function Name: CP15_SetTtb
* Parameters: pInt32U pTtb
*
* Return: none
*
* Description: Set CP15 TTB base address register
*
*************************************************************************/
__arm void CP15_SetTtb (pInt32U pTtb)
{
register volatile Int32U Val = (Int32U)pTtb;
__MCR(15,0,Val,CP15_TTB_ADDR,0,0);
}
/*************************************************************************
* Function Name: CP15_SetDac
* Parameters: Int32U da
*
* Return: none
*
* Description: Set CP15 domain access register
*
*************************************************************************/
__arm void CP15_SetDac (Int32U da)
{
register volatile Int32U Val = da;
__MCR(15,0,Val,CP15_DA_CTRL,0,0);
}
/*************************************************************************
* Function Name: CP15_WriteBuffFlush
* Parameters: none
*
* Return: none
*
* Description: Flush the write buffer and wait for completion
* of the flush.
*
*************************************************************************/
__arm void CP15_WriteBuffFlush (void)
{
register volatile Int32U Val;
__MCR(15,0,Val,CP15_CACHE_OPR,10,4);
}
/*************************************************************************
* Function Name: CP15_GetFaultStat
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the MMU fault status register
*
*************************************************************************/
__arm Int32U CP15_GetFaultStat (void)
{
return(__MRC(15,0,CP15_FAULT_STAT,0,0));
}
/*************************************************************************
* Function Name: CP15_GetFaultAddr
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the MMU fault address register
*
*************************************************************************/
__arm Int32U CP15_GetFaultAddr (void)
{
return(__MRC(15,0,CP15_FAULT_ADDR,0,0));
}
/*************************************************************************
* Function Name: CP15_GetFcsePid
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the MMU Process identifier
* FCSE PID register
*
*************************************************************************/
__arm Int32U CP15_GetFcsePid (void)
{
return(__MRC(15,0,CP15_PROCESS_IDNF,0,0));
}
/*************************************************************************
* Function Name: CP15_GetPraceProcId
* Parameters: none
*
* Return: Int32U
*
* Description: Function returns the MMU Trace Process identifier
* register
*
*************************************************************************/
__arm Int32U CP15_GetPraceProcId (void)
{
return(__MRC(15,0,CP15_PROCESS_IDNF,0,1));
}
/*************************************************************************
* Function Name: CP15_SetFcsePid
* Parameters: Int32U FcsePid
*
* Return: none
*
* Description: Function set the MMU Process identifier
* FCSE PID register
*
*************************************************************************/
__arm void CP15_SetFcsePid (Int32U FcsePid)
{
register Int32U Val = FcsePid;
__MCR(15,0,Val,CP15_PROCESS_IDNF,0,0);
}
/*************************************************************************
* Function Name: CP15_GetPraceProcId
* Parameters: Int32U
*
* Return: none
*
* Description: Function set the MMU Trace Process identifier
* register
*
*************************************************************************/
__arm void CP15_SetPraceProcId (Int32U Trace)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -