26、(5)Linux内核启动引导阶段之 __arm920_steup函数分析
来源:互联网 发布:编程教学网站 编辑:程序博客网 时间:2024/04/28 07:25
此函数的功能主要是:禁止ICache、DCache、数据Cache、指令Cache
在 arch/arm/kernel/head.S 中:
363 .type __arm920_setup, #function //函数
364 __arm920_setup: 声明//
365 mov r0, #0 //r0清零
366 mcr p15, 0, r0, c7, c7 //使无整个数据cache和指令cache
367 mcr p15, 0, r0, c7, c10, 4 //清空写缓冲 366、367两行,查看C7,<ARM体系结构与编程> P205
368 #ifdef CONFIG_MMU
369 mcr p15, 0, r0, c8, c7 //如果有配置了MMU,则需要清除(invalidate)Instruction TLB 和Data TLB
370 #endif
371 adr r5, arm920_crval //取arm920_crval的地址到r5中,arm920_crval 在第386行,宏crval在“arch/arm/mm/proc- macro.S”中定义,如下所示:
.macro crval, clear, mmuset, ucset
#ifdef CONFIG_MMU
.word \clear
.word \mmuset
#else
.word \clear
.word \ucset
#endif
.endm
由上可知,首先在arm926_crval的地址处存放了clear的值,然后接下来的地址存放了mmuset的值(对于配置了MMU的情况)
372 ldmia r5, {r5, r6} //将clear、mmuset的值作别存入r5、r6
373 mrc p15, 0, r0, c1, c0 //将寄存器C1中的值读到ARM寄存器R0中
C1寄存器,请看<ARM体系结构与编程> P174
374 bic r0, r0, r5 //由第387行知,r5=0x00003f3f (清除位)
375 orr r0, r0, r6 r6=0x00003135(置位) ,r0就是c1寄存器
376 mov pc, lr
377 .size __arm920_setup, . - __arm920_setup
385 .type arm920_crval, #object
386 arm920_crval:
387 crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130
389 __INITDATA
- 26、(5)Linux内核启动引导阶段之 __arm920_steup函数分析
- 25、(4)Linux内核启动引导阶段之 __create_page_table函数分析
- 27、(6)Linux内核启动引导阶段之 __enable_mmu函数分析
- linux内核启动过程分析之内核启动——阶段1
- 28、(7)Linux内核引导阶段之 __switch_data(切换数据)
- Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7)
- 探讨Linux内核启动之BIOS启动阶段
- 内核启动汇编阶段分析
- 23、(2)Linux内核启动分析之 __lookup_processor_type函数
- 29、(8)Linux内核启动第二阶段之 setup_arch函数分析
- linux内核启动第二阶段之setup_arch()函数分析-2.6.36
- Linux内核启动代码之__create_page_tables函数分析
- linux内核启动第二阶段之setup_arch()函数分析-2.6.36
- linux内核启动第二阶段之setup_arch()函数分析-2.6.36
- linux内核启动第二阶段之setup_arch()函数分析-2.6.36
- linux内核启动第二阶段之setup_arch()函数分析-2.6.36
- Linux内核启动代码之__create_page_tables函数分析
- linux-2.6.25启动分析(引导+内核初始化)
- 打开网页没有地址栏窗口
- char型数组转换到int型数组
- Android中保存数据常用的方法
- hadoop经典书籍
- Linux操作系统内核启动参数详细解析
- 26、(5)Linux内核启动引导阶段之 __arm920_steup函数分析
- java实训笔记(十一)之静态网页技术
- framebuffer以及简单用法
- 如何做一个好的技术型领导
- 获取网卡信息
- 在ADO.NET中使用参数化SQL语句的大同小异
- C++模板元编程
- Bloom Filter 数据结构的应用
- 简单QT编程的示例