当前位置: 技术问答>linux和unix
请教内核代码中的几个问题?
来源: 互联网 发布时间:2015-11-19
本文导语: 本人刚开始学习内核代码,求教大侠帮忙解决几个问题: 1:在struct cpuinfo_mips结构中定义的 asid_cache是什么cache? 2:例外处理的代码是不是都放置在KSEG0区域呢,因为看见很多memcpy函数都是把&except_vecn_generic的处理代码拷贝到...
本人刚开始学习内核代码,求教大侠帮忙解决几个问题:
1:在struct cpuinfo_mips结构中定义的 asid_cache是什么cache?
2:例外处理的代码是不是都放置在KSEG0区域呢,因为看见很多memcpy函数都是把&except_vecn_generic的处理代码拷贝到KSEG0中.
3:想请教几个例外的意思:例如EJTAG debug exception, dedicated * interrupt vector?
4:flush_icache_range(KSEG0, KSEG0 + 0x400);这个函数的意思是清空指令缓存,那么icache是分配在KSEG0区域的么,那么dcache分配在哪里呢?
希望得到大家的帮助,感激不尽!!!
1:在struct cpuinfo_mips结构中定义的 asid_cache是什么cache?
2:例外处理的代码是不是都放置在KSEG0区域呢,因为看见很多memcpy函数都是把&except_vecn_generic的处理代码拷贝到KSEG0中.
3:想请教几个例外的意思:例如EJTAG debug exception, dedicated * interrupt vector?
4:flush_icache_range(KSEG0, KSEG0 + 0x400);这个函数的意思是清空指令缓存,那么icache是分配在KSEG0区域的么,那么dcache分配在哪里呢?
希望得到大家的帮助,感激不尽!!!
|
好像从X86入手理解linux还是要容易点哈。:-)俺对mips不懂,乱说以下
1:在struct cpuinfo_mips结构中定义的 asid_cache是什么cache?
cache总是一样的,高速缓存,存放最近访问过得内存中的数据,容量小,速度快,通常L1只需几个指令周期
4:flush_icache_range(KSEG0, KSEG0 + 0x400);这个函数的意思是清空指令缓存,那么icache是分配在KSEG0区域的么,那么dcache分配在哪里呢?
我想,KSEG0这里只是一个提示吧,表示从哪里开始(KSEG0),一直flush到哪里(KSEG0+0X400),icache是存取指令的cache,dcache存取数据,他们不是分配出来的,在cpu里面,这个flush_icache_range只是一个接口,一般用于同步icache合dcache得
1:在struct cpuinfo_mips结构中定义的 asid_cache是什么cache?
cache总是一样的,高速缓存,存放最近访问过得内存中的数据,容量小,速度快,通常L1只需几个指令周期
4:flush_icache_range(KSEG0, KSEG0 + 0x400);这个函数的意思是清空指令缓存,那么icache是分配在KSEG0区域的么,那么dcache分配在哪里呢?
我想,KSEG0这里只是一个提示吧,表示从哪里开始(KSEG0),一直flush到哪里(KSEG0+0X400),icache是存取指令的cache,dcache存取数据,他们不是分配出来的,在cpu里面,这个flush_icache_range只是一个接口,一般用于同步icache合dcache得
|
你要移植到MIPS的板子上去,你有搭建好环境吗.可能还是要从toolchain,bootloader开始吧,我是指实际操作上,这样再来促进理解代码.