S3C2440学习笔记五(2440slib.s源程序的分析)
dateICache
MMU_InvalidateICache
mcr p15,0,r0,c7,c5,0
MOV_PC_LR
;void MMU_InvalidateICacheMVA(U32 mva) ;使无效指令cache的某块mva,并把数据(虚拟地址)写到C7
EXPORT MMU_InvalidateICacheMVA
MMU_InvalidateICacheMVA
;r0=mva
mcr p15,0,r0,c7,c5,1
MOV_PC_LR
;void MMU_PrefetchICacheMVA(U32 mva) ;预取指令cache中的某块mva,并把数据(虚拟地址)写到C7
EXPORT MMU_PrefetchICacheMVA
MMU_PrefetchICacheMVA
;r0=mva
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的某块mva,并把数据(虚拟地址)写到C7
EXPORT MMU_InvalidateDCacheMVA
MMU_InvalidateDCacheMVA
;r0=mva
mcr p15,0,r0,c7,c6,1
MOV_PC_LR
;void MMU_CleanDCacheMVA(U32 mva) ; 清空数据cache中的某块mva,并把数据(虚拟地址)写到C7
EXPORT MMU_CleanDCacheMVA
MMU_CleanDCacheMVA
;r0=mva
mcr p15,0,r0,c7,c10,1
MOV_PC_LR
;void MMU_CleanInvalidateDCacheMVA(U32 mva) ; 清空无效数据cache中的某块mva,并把数据(虚拟地址)写到C7
EXPORT MMU_CleanInvalidateDCacheMVA
MMU_CleanInvalidateDCacheMVA
;r0=mva
mcr p15,0,r0,c7,c14,1
MOV_PC_LR
;void MMU_CleanDCacheIndex(U32 index) ; 清空数据cache中的某块Index,并把组号 组内序号写到C7中
EXPORT MMU_CleanDCacheIndex
MMU_CleanDCacheIndex
;r0=index
mcr p15,0,r0,c7,c10,2
MOV_PC_LR
;void MMU_CleanInvalidateDCacheIndex(U32 index) ; 清空将无效数据cache中的某块Index,并把组号 组内序号写到C7中
EXPORT MMU_CleanInvalidateDCacheIndex
MMU_CleanInvalidateDCacheIndex
;r0=index
mcr p15,0,r0,c7,c14,2
MOV_PC_LR
;void MMU_WaitForInterrupt(void) ; 等待中断激活,使ARM进入节能状态,停止执行等待中断激活。
;当异常中断IRQ或FIQ发生后,该MCR指令进入IRQ或FIQ中断处理程序执行。
EXPORT MMU_WaitForInterrupt
MMU_WaitForInterrupt
mcr p15,0,r0,c7,c0,4
MOV_PC_LR
;===============
; TLB functions 快表TLB功能(C8)
; C8控制控制清楚TLB的相关操作。它是一个只写的寄存器。使用MRC指令读取该寄存器,将产生不可预知的效果。
;指令具体格式如下:
;MCR P15,0,
;
;===============
;使无效整个统一的cache;或者使无效整个数据cache和指令cache
;voic MMU_InvalidateTLB(void)
EXPORT MMU_InvalidateTLB
MMU_InvalidateTLB
mcr p15,0,r0,c8,c7,0
MOV_PC_LR
;void MMU_InvalidateITLB(void) ;使无效整个指令cache
EXPORT MMU_InvalidateITLB ;供外部使用(*个人理解*)
MMU_InvalidateITLB ;调用标记
mcr p15,0,r0,c8,c5,0
MOV_PC_LR ;调用返回
;void MMU_InvalidateITLBMVA(U32 mva) ; 使无效指令cache的单个地址变换条目mva,并把虚拟地址返回到C8
EXPORT MMU_InvalidateITLBMVA
MMU_InvalidateITLBMVA
;ro=mva
mcr p15,0,r0,c8,c5,1
MOV_PC_LR
;void MMU_InvalidateDTLB(void) ; 使无效整个数据cache
EXPORT MMU_InvalidateDTLB
MMU_InvalidateDTLB
mcr p15,0,r0,c8,c6,0
MOV_PC_LR
;void MMU_InvalidateDTLBMVA(U32 mva) ; 使无效数据cache的单个地址变换条目mva,并把虚拟地址返回到C8
EXPORT MMU_InvalidateDTLBMVA
MMU_InvalidateDTLBMVA
;r0=mva
mcr p15,0,r0,c8,c6,1
MOV_PC_LR
;=================
; Cache lock down 缓存内容锁定(C9)
; Cache内容锁定,就是将一些关键代码和数据预取到cache后,设置一定的属性,使发生cache块替换时,
;这些关键代码和数据所在的块不会被替换。指令具体格式如下:
;MCR P15,0,
;MCR P15, 0,
;当系统中包含独立的数据cache和指令cache时,对应于数据cache和指令cache分别有一个独立的cache内容锁定寄存器。
;
;
;当系统中使用统一的数据cache和指令cache时,操作数
;=================锁数据cache
;void MMU_SetDCacheLockdownBase(U32 base)
EXPORT MMU_SetDCacheLockdownBase
MMU_SetDCacheLockdownBase
;r0= victim & lockdown base
mcr p15,0,r0,c9,c0,0
MOV_PC_LR
;void MMU_SetICacheLockdownBase(U32 base) ; 锁指令cache
EXPORT MMU_SetICacheLockdownBase
MMU_SetICacheLockdownBase
;r0
S3C2440源程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)