微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C2440学习笔记五(2440slib.s源程序的分析)

S3C2440学习笔记五(2440slib.s源程序的分析)

时间:11-11 来源:互联网 点击:

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,,,,

;,的不同的组合决定指令执行的不同操作。完成操作将产生的数据写到Rd,然后写到C8

;===============

;使无效整个统一的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内容锁定寄存器。

;=1 选择指令cache的内容锁定寄存器

;=0 选择数据cache的内容锁定寄存器

;当系统中使用统一的数据cache和指令cache时,操作数应为0

;=================锁数据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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top