arm linux 从入口到start_kernel 代码详细分析7 6. 切换数据 在 arch/arm/kernel/head-common.S 中: 00014: .type __switch_data, %object 00015: __switch_data: 00016: .long __mmap_switched 00017: .long __data_loc @ r4 00018: .long __data_start @ r5 00019: .long __bss_start @ r6 00020: .long ...
5. 开启mmu 开启mmu是又函数 __enable_mmu 实现的. 在进入 __enable_mmu 的时候, r0中已经存放了控制寄存器c1的一些配置(在上一步中进行的设置), 但是并没有真正的打开mmu, &n ...
4. 调用平台特定的 __cpu_flush 函数 当 __create_page_tables 返回之后 此时,一些特定寄存器的值如下所示: r4 = pgtbl (page table 的物理基地址) r8 = machine info (struct machine_desc的基地址) r9 = cpu id (通过cp15协处理器获得的cpu id) r10 = procinfo (struct proc_info_list的基地址) 在我们 ...
3. 创建页表 通过前面的两步,我们已经确定了processor type 和 machine type. 此时,一些特定寄存器的值如下所示: r8 = machine info (struct machine_desc的基地址) r9 = cpu id (通过cp15协处理器获得 ...
1. 确定 processor type arch/arm/kernel/head.S中: 00075: mrc p15, 0, r9, c0, c0 @ get processor id 00076: bl __lookup_processor_type @ r5=procinfo r9=cpuid 00077: movs r10, r5  ...
arm linux 从入口到start_kernel 代码详细分析针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数. 我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照. 例: 在文件init/main.c中: 00478: asmlinkage void __init start_kernel(void) 前面 ...
2. 确定 machine type arch/arm/kernel/head.S中: 00079: bl __lookup_machine_type @ r5=machinfo 00080: movs r8, r5 @ invalid machine (r5=0)? 00081: beq __error_a @ yes, error 'a' 79行: 跳转到__lookup_machine_type函数,在__lookup_machine_type中,会把struct machine_desc的基地址(machine type)存 ...
文件: ds100.pdf
Riching
PinkBear
seawang
limubai
无量寿佛
京存高性能存储
toradex
cj_181888888
李童鞋
Iamliutt
杭州加速科技
jason.aliang
hirain123
模拟后端的小白
小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )
GMT+8, 2024-5-5 08:22 , Processed in 0.151290 second(s), 2 queries , Gzip On, Redis On.