ARM Linux (S3C6410架構(gòu)/2.6.35內(nèi)核)的內(nèi)存映射(四)
對(duì)于s3c6410,set_pte_ext()函數(shù)由匯編宏armv6_set_pte_ext來(lái)實(shí)現(xiàn),定義在proc-macros.S文件中。
本文引用地址:http://www.ex-cimer.com/article/201611/317855.htm進(jìn)入函數(shù)時(shí),參數(shù)分別為:
r0: pte的地址,這里的pte是二級(jí)頁(yè)表Linux版本中對(duì)應(yīng)的頁(yè)表項(xiàng)。
r1: Linux版二級(jí)頁(yè)表項(xiàng)的內(nèi)容。
r2: 0。
[c].macro armv6_set_pte_ext pfxstr r1, [r0], #-2048 @ linux versionbic r3, r1, #0x000003fcbic r3, r3, #PTE_TYPE_MASKorr r3, r3, r2orr r3, r3, #PTE_EXT_AP0 | 2adr ip, pfx()_mt_tableand r2, r1, #L_PTE_MT_MASKldr r2, [ip, r2]tst r1, #L_PTE_WRITEtstne r1, #L_PTE_DIRTYorreq r3, r3, #PTE_EXT_APXtst r1, #L_PTE_USERorrne r3, r3, #PTE_EXT_AP1tstne r3, #PTE_EXT_APXbicne r3, r3, #PTE_EXT_APX | PTE_EXT_AP0tst r1, #L_PTE_EXECorreq r3, r3, #PTE_EXT_XNorr r3, r3, r2tst r1, #L_PTE_YOUNGtstne r1, #L_PTE_PRESENTmoveq r3, #0str r3, [r0]mcr p15, 0, r0, c7, c10, 1 @ flush_pte.endm[/c]
評(píng)論