码迷,mamicode.com
首页 > 其他好文 > 详细

invlpg 指令简介

时间:2014-10-11 18:13:55      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:嵌入式   汇编   

invlpg 指令简介


                  

void
tlb_invalidate(pde_t *pgdir, void *va)
{
	// Flush the entry only if we're modifying the current address space.
	// For now, there is only one address space, so always invalidate.
	invlpg(va);
}
遇到这样一段code...然后invlpg是个什么东东

这是个C的嵌入汇编

bubuko.com,布布扣


内嵌汇编语法如下:

__asm__(
汇编语句模板:
输出部分:
输入部分:
破坏描述部分);
即格式为 asm ( "statements" : output_regs : input_regs : clobbered_regs);


共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,
也需要用“:”格开,相应部分内容为空。


这段嵌入式汇编是没有输出的.把addr读入到寄存器中去(这里r指定任意常用寄存器),%0则指向addr所在的寄存器

bubuko.com,布布扣


处理器使用TLBTranslation Lookaside Buffer)来缓存线性地址到物理地址的映射关系。实际的地址转换过程中,处理器首先根据线性地址查找TLB,如果未发现该线性地址到物理地址的映射关系(TLB miss),将根据页表中的映射关系填充TLBTLB fill),然后再进行地址转换。

bubuko.com,布布扣


tlb_invalidate(pde_t *pgdir, void *va)
这里函数的目的就是取消va对应物理页之间的关联,相当于刷新TLB,每次我们调整虚拟页和物理页之间的映射关系的时候,我们都要刷新TLB,调用这个函数或invlpg汇编指令

程序的注释也讲了

// Flush the entry only if we‘re modifying the current address space.
// For now, there is only one address space, so always invalidate.








invlpg 指令简介

标签:嵌入式   汇编   

原文地址:http://blog.csdn.net/cinmyheart/article/details/39994769

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!