原创 达盛2410SLIB.s

2009-9-17 11:25 2283 7 7 分类: MCU/ 嵌入式

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
;/*
;*************************************************************************************************************
;*-                                结束文件                 -*
;*************************************************************************************************************
;*/


 


 


 



 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /1 下一条