ARM Linux (S3C6410架构…
2013-08-27 11:59
274 查看
set_pte_ext()的作用是根据Linux给出的Linux版本页表项来填充Arm硬件版本的页表项。
对于s3c6410,set_pte_ext()函数由汇编宏armv6_set_pte_ext来实现,定义在proc-macros.S文件中。
进入函数时,参数分别为:
r0: pte的地址,这里的pte是二级页表Linux版本中对应的页表项。
r1: Linux版二级页表项的内容。
r2: 0。
对于s3c6410,set_pte_ext()函数由汇编宏armv6_set_pte_ext来实现,定义在proc-macros.S文件中。
进入函数时,参数分别为:
r0: pte的地址,这里的pte是二级页表Linux版本中对应的页表项。
r1: Linux版二级页表项的内容。
r2: 0。
[c] .macro armv6_set_pte_ext pfx str r1, [r0], #-2048 @ linux version bic r3, r1, #0x000003fc bic r3, r3, #PTE_TYPE_MASK orr r3, r3, r2 orr r3, r3, #PTE_EXT_AP0 | 2 adr ip, \pfx\()_mt_table and r2, r1, #L_PTE_MT_MASK ldr r2, [ip, r2] tst r1, #L_PTE_WRITE tstne r1, #L_PTE_DIRTY orreq r3, r3, #PTE_EXT_APX tst r1, #L_PTE_USER orrne r3, r3, #PTE_EXT_AP1 tstne r3, #PTE_EXT_APX bicne r3, r3, #PTE_EXT_APX | PTE_EXT_AP0 tst r1, #L_PTE_EXEC orreq r3, r3, #PTE_EXT_XN orr r3, r3, r2 tst r1, #L_PTE_YOUNG tstne r1, #L_PTE_PRESENT moveq r3, #0 str r3, [r0] mcr p15, 0, r0, c7, c10, 1 @ flush_pte .endm [/c]
相关文章推荐
- ARM Linux (S3C6410架构…
- ARM Linux (S3C6410架构…
- ARM Linux (S3C6410架构…
- ARM Linux (S3C6410架构/2.6.35内核)的内存映射(五)
- Arm linux 启动流程
- Arm linux启动分析(4)
- arm-linux-gcc 常用参数讲解 gcc编…
- arm-linux head.S 源代码分析
- Arm linux启动分析(5)
- arm-linux-gcc 常用参数讲解 gcc编…
- arm-linux head.S 源代码分析
- Arm linux启动分析(5)
- arm linux中一些重要的宏及地…
- arm-linux-ranlib:command no…
- arm linux中一些重要的宏及地…
- linux 安装ARM-LINUX-GCC
- ARM Linux系统中的用户栈与内核栈
- ARM Linux中断机制之中断的初始化
- ARM-Linux自动获取IP地址 (配置DHC…
- ARM Linux (S3C6410架构/2.6.35内核)的内存映射(二)