⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2410slib.s

📁 基于S3C2410内核的串口实验程序
💻 S
📖 第 1 页 / 共 2 页
字号:
;/*
;************************************************************************************************************
;*									    北京精仪达盛科技有限公司
;*                                     	      研    发    部
;*
;*                                 	    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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -