logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux内核及ARM的内存管理(不厌其烦续)

一个人勃一次不难,难的是勃一辈子……最近分心的事很多,勃得越来越少了!  打开mmu是一件神圣的工作,需要仔细、再仔细…… 从__v7_setup函数返回来,进入到__enable_mmu过程,做起飞前的最后确认: __enable_mmu:#ifdef CONFIG_ALIGNMENT_TRAPorr r0, r0, #CR_A#elsebic r

Linux内核及ARM的内存管理(前续)

Linux内核的ARM内存管理是一个难啃的骨头,之所以要开始啃它,是因为我所能见到的文章,无不是为X86体系所写,与其等待关于ARM的文章出炉,不如自己动手,看能否丰衣足食。 这个骨头是如此的难啃,以至于我只是将这块骨头捡起来翻看了一下,就发现无从下嘴,而必须要首先研究透彻DDI0304和DDI0406这两篇文档中关于MMU的内容,才能知道这块骨头上,肉在哪里…… 这个骨头是如此的

#x86
Linux内核及ARM的内存管理

arch/arm/kernel/head.S该文件末尾包含了语句:#include "head-common.S",__lookup_processor_type函数在arch/arm/kernel/head-common.S中定义。关键数据结构:struct proc_info_list,在arch/arm/include/asm/procinfo.h文件中定义,Cortex对此数据结构

#数据结构#list
Linux内核及ARM的内存管理(再续)

 有许多事,需要回到u-boot才能说清楚…… include/configs/XXXX.h中(XXXX视具体平台而定),一般会作类似如下定义: #define CONFIG_BOOTCOMMAND "mmcinit; fatload mmc 0 0x81c00000 uImage; bootm 0x81c00000" 编译时该宏CONFIG_BOOTCOMMAND传递

#数据结构#linux
Linux内核及ARM的内存管理(续)

 __lookup_processor_type函数: __lookup_processor_type: ARM( adr r3, 3f ) ARM( ldmda r3, {r5 - r7} ) THUMB( adr r3, 3f+4 ) THUMB( ldmdb r3, {r5 - r7} ) THUMB( sub r3, r3, #4 )sub r3, r3

#数据结构
Linux内核及ARM的内存管理(再三续)

欢迎回到Kernel中……(看了2.6.29内核,做了些修订,关于it指令的) 继续说__vet_atags函数,这个函数仍旧定义在arch/arm/kernel/head-common.s文件中:  /* Determine validity of the r2 atags pointer.  The heuristic requires * that the point

#数据结构#list
到底了