www.pudn.com > Lcd_UCOSII.rar > 2410SLIB.S
;/*
;************************************************************************************************************
;* 北京精仪达盛科技有限公司
;* 研 发 部
;*
;* http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------
;*
;* 文件名称 : 2410slib.s
;* 文件功能 : 该文件为2410的CPSR、MMU等的配置(Assembly)
;* 补充说明 :
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM开发小组
;* 修改日期 : 2005/08/03
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : Shin, On Pil (SOP)(samsung)
;* 创建日期 : 2002/05/20
;* 版本声明 : v0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
;//Interrupt, FIQ/IRQ disable
NOINT EQU 0xc0 ;//1100 0000
;//Check if tasm.exe(armasm -16 ...@ADS 1.0) is used.
GBLL THUMBCODE
[ {CONFIG} = 16
THUMBCODE SETL {TRUE}
CODE32
|
THUMBCODE SETL {FALSE}
]
MACRO
MOV_PC_LR
[ THUMBCODE
bx lr
|
mov pc,lr
]
MEND
AREA |C$$code|, CODE, READONLY
;/*
;*************************************************************************************************************
;- 函数名称 : int SET_IF(void)
;- 函数说明 : 设定I、F位,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 改变的CPSR
;*************************************************************************************************************
;*/
EXPORT SET_IF
SET_IF
mrs r0,cpsr
mov r1,r0
orr r1,r1,#NOINT
msr cpsr_cxsf,r1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void WR_IF(int cpsrValue)
;- 函数说明 : 设定CPSR的值,该函数仅在特权模式下起作用
;- 输入参数 : cpsrValue
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT WR_IF
WR_IF
msr cpsr_cxsf,r0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void CLR_IF(void)
;- 函数说明 : 清除CPSR的值,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT CLR_IF
CLR_IF
mrs r0,cpsr
bic r0,r0,#NOINT
msr cpsr_cxsf,r0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : XXX
;- 函数说明 : MMU 相关功能的使能、禁止函数
;*************************************************************************************************************
;*/
R1_I EQU (1<<12)
R1_C EQU (1<<2)
R1_A EQU (1<<1)
R1_M EQU (1)
R1_iA EQU (1<<31)
R1_nF EQU (1<<30)
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_EnableICache(void)
;- 函数说明 : 使能指令cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_EnableICache
MMU_EnableICache
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_I
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_DisableICache(void)
;- 函数说明 : 禁止指令cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_DisableICache
MMU_DisableICache
mrc p15,0,r0,c1,c0,0
bic r0,r0,#R1_I
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_EnableDCache(void)
;- 函数说明 : 使能数据cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_EnableDCache
MMU_EnableDCache
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_C
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_DisableDCache(void)
;- 函数说明 : 禁止数据cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_DisableDCache
MMU_DisableDCache
mrc p15,0,r0,c1,c0,0
bic r0,r0,#R1_C
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_EnableAlignFault(void)
;- 函数说明 : 使能对齐故障检测,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_EnableAlignFault
MMU_EnableAlignFault
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_A
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_DisableAlignFault(void)
;- 函数说明 : 禁止对齐故障检测,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_DisableAlignFault
MMU_DisableAlignFault
mrc p15,0,r0,c1,c0,0
bic r0,r0,#R1_A
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_EnableMMU(void)
;- 函数说明 : 使能MMU,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_EnableMMU
MMU_EnableMMU
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_M
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_DisableMMU(void)
;- 函数说明 : 关闭MMU,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_DisableMMU
MMU_DisableMMU
mrc p15,0,r0,c1,c0,0
bic r0,r0,#R1_M
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetFastBusMode(void)
;- 函数说明 : 设定快总线模式,FCLK:HCLK= 1:1,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetFastBusMode
MMU_SetFastBusMode
mrc p15,0,r0,c1,c0,0
bic r0,r0,#R1_iA:OR:R1_nF
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetAsyncBusMode(void)
;- 函数说明 : 设定异步总线模式,FCLK:HCLK= 1:2,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetAsyncBusMode
MMU_SetAsyncBusMode
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetTTBase(int base)
;- 函数说明 : 设定TTB的基址,r0=TTBase,FCLK:HCLK= 1:2,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetTTBase
MMU_SetTTBase
mcr p15,0,r0,c2,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetDomain(int domain)
;- 函数说明 : 设定域,r0=domain,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetDomain
MMU_SetDomain
mcr p15,0,r0,c3,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : XXX
;- 函数说明 : ICache/DCache 相关功能的函数
;*************************************************************************************************************
;*/
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateIDCache(void)
;- 函数说明 : 无效指令、数据cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateIDCache
MMU_InvalidateIDCache
mcr p15,0,r0,c7,c7,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateICache(void)
;- 函数说明 : 无效指令cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateICache
MMU_InvalidateICache
mcr p15,0,r0,c7,c5,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateICacheMVA(U32 mva)
;- 函数说明 : 无效指令cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateICacheMVA
MMU_InvalidateICacheMVA
mcr p15,0,r0,c7,c5,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_PrefetchICacheMVA(U32 mva)
;- 函数说明 : 有效预取指指令cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_PrefetchICacheMVA
MMU_PrefetchICacheMVA
mcr p15,0,r0,c7,c13,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateDCache(void)
;- 函数说明 : 无效数据cache,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateDCache
MMU_InvalidateDCache
mcr p15,0,r0,c7,c6,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateDCacheMVA(U32 mva)
;- 函数说明 : 无效的数据cache内的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateDCacheMVA
MMU_InvalidateDCacheMVA
mcr p15,0,r0,c7,c6,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_CleanDCacheMVA(U32 mva)
;- 函数说明 : 清除数据cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_CleanDCacheMVA
MMU_CleanDCacheMVA
mcr p15,0,r0,c7,c10,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_CleanInvalidateDCacheMVA(U32 mva)
;- 函数说明 : 清除无效的数据cache的被改过的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_CleanInvalidateDCacheMVA
MMU_CleanInvalidateDCacheMVA
mcr p15,0,r0,c7,c14,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_CleanDCacheIndex(U32 index)
;- 函数说明 : 清除数据cache内的列表,r0=index,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_CleanDCacheIndex
MMU_CleanDCacheIndex
mcr p15,0,r0,c7,c10,2
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_CleanInvalidateDCacheIndex(U32 index)
;- 函数说明 : 清除无效的数据cache内的列表,r0=index,该函数仅在特权模式下起作用
;- 输入参数 : U32 mva
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_CleanInvalidateDCacheIndex
MMU_CleanInvalidateDCacheIndex
mcr p15,0,r0,c7,c14,2
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_WaitForInterrupt(void)
;- 函数说明 : 等待中断状态,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_WaitForInterrupt
MMU_WaitForInterrupt
mcr p15,0,r0,c7,c0,4
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : XXX
;- 函数说明 : TLB 相关功能的函数
;*************************************************************************************************************
;*/
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateTLB(void)
;- 函数说明 : 无效整个TLB,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateTLB
MMU_InvalidateTLB
mcr p15,0,r0,c8,c7,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateITLB(void)
;- 函数说明 : 无效指令TLB,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateITLB
MMU_InvalidateITLB
mcr p15,0,r0,c8,c5,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateITLBMVA(U32 mva)
;- 函数说明 : 无效指令TLB内的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateITLBMVA
MMU_InvalidateITLBMVA
mcr p15,0,r0,c8,c5,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateDTLB(void)
;- 函数说明 : 无效数据TLB,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateDTLB
MMU_InvalidateDTLB
mcr p15,0,r0,c8,c6,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_InvalidateDTLBMVA(U32 mva)
;- 函数说明 : 无效数据TLB内的虚拟地址,r0=mva,该函数仅在特权模式下起作用
;- 输入参数 : 无
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_InvalidateDTLBMVA
MMU_InvalidateDTLBMVA
mcr p15,0,r0,c8,c6,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : XXX
;- 函数说明 : cache锁定相关功能的函数
;*************************************************************************************************************
;*/
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetDCacheLockdownBase(U32 base)
;- 函数说明 : 设定数据cache的锁定开始数值,r0= victim & lockdown base,该函数仅在特权模式下起作用
;- 输入参数 : U32 base
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetDCacheLockdownBase
MMU_SetDCacheLockdownBase
mcr p15,0,r0,c9,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetICacheLockdownBase(U32 base)
;- 函数说明 : 设定指令cache的锁定开始数值,r0= victim & lockdown base,该函数仅在特权模式下起作用
;- 输入参数 : U32 base
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetICacheLockdownBase
MMU_SetICacheLockdownBase
mcr p15,0,r0,c9,c0,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : XXX
;- 函数说明 : TLB 锁定相关功能的函数
;*************************************************************************************************************
;*/
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetDTLBLockdownBase(U32 baseVictim)
;- 函数说明 : 设定数据TLB的锁定开始数值,r0= baseVictim,该函数仅在特权模式下起作用
;- 输入参数 : U32 baseVictim
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetDTLBLockdown
MMU_SetDTLBLockdown
mcr p15,0,r0,c10,c0,0
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetITLBLockdownBase(U32 baseVictim)
;- 函数说明 : 设定指令TLB的锁定开始数值,r0= baseVictim,该函数仅在特权模式下起作用
;- 输入参数 : U32 baseVictim
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetITLBLockdown
MMU_SetITLBLockdown
mcr p15,0,r0,c10,c0,1
MOV_PC_LR
;/*
;*************************************************************************************************************
;- 函数名称 : XXX
;- 函数说明 : PID 相关功能的函数
;*************************************************************************************************************
;*/
;/*
;*************************************************************************************************************
;- 函数名称 : void MMU_SetProcessId(U32 pid)
;- 函数说明 : 设定PID,r0= pid,该函数仅在特权模式下起作用
;- 输入参数 : U32 baseVictim
;- 输出参数 : 无
;*************************************************************************************************************
;*/
EXPORT MMU_SetProcessId
MMU_SetProcessId
mcr p15,0,r0,c13,c0,0
MOV_PC_LR
END
;/*
;*************************************************************************************************************
;*- 结束文件 -*
;*************************************************************************************************************
;*/
文章评论(0条评论)
登录后参与讨论