日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

armv8/armv7中SCTLR的区别

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 armv8/armv7中SCTLR的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

★★★ 友情鏈接 : 個人博客導讀首頁—點擊此處 ★★★

以SCTLR寄存器來闡述在armv7、armv8-arch64、armv8-arch64的使用方式
(其實大多數的系統寄存器,都是這種處理方式)

SCTLR是系統控制寄存器(SCTLR : system control registers)

在ARMV8上有如下sctlr寄存器
(aarch64)
SCTLR_EL1
SCTLR_EL2
SCTLR_EL3

(aarch32)
SCTLR (NS) – banked
HSCTLR
SCTLR (S) – banked

在ARMV8上有如下sctlr寄存器

SCTLR寄存器的位定義

SCTLR的使用方式

SCTLR是system control register,系統控制寄存器。如果跑了雙系統(linux,tee),那么在兩份系統中對于該寄存器會產生不同的配置的,如linux中enable mmu,tee中disable mmu, 這樣就導致在兩份系統中的SCTLR值不同.
那么我們看看ARM的設計

(1)、在armv7中,這些通用的系統寄存器是有兩組的,即根據SCR.NS比特位的不同,會自動訪問相應的那一組寄存器。也就是說,你在linux中和在tee中讀寫的SCTLR是兩個不同的寄存器;
(2)、在armv8-arch64中,有SCTLR_EL1、SCTLR_EL2、SCTLR_EL3三個系統控制寄存器,這里我們只看SCTLR_EL1. 該寄存器只有一組,在雙系統切換時(linux,tee),會在ATF代碼中save/restore 該寄存器. 其實對于大多數通用的系統寄存器都是如此.
(3)、在armv8-arch32中,SCTLR_EL1的低32位map成了SCTLR,該寄存器也是只有一組,在雙系統切換時(linux,tee),也需在ATF代碼中save/restore 該寄存器

在armv8-arch64中,是以MRS/MSR來訪問SCR寄存器的,而在armv7/armv8-arch32中是以操作協處理器cp15來訪問的

例如:
(1)、armv8-arch64 enable MMU

__enable_mmu:mrs x18, sctlr_el1 // preserve old SCTLR_EL1 valuemrs x1, ID_AA64MMFR0_EL1ubfx x2, x1, #ID_AA64MMFR0_TGRAN_SHIFT, 4cmp x2, #ID_AA64MMFR0_TGRAN_SUPPORTEDb.ne __no_granule_supportmsr ttbr0_el1, x25 // load TTBR0msr ttbr1_el1, x26 // load TTBR1isbmsr sctlr_el1, x0 //將x0寫入到sctlr_el1isb/** Invalidate the local I-cache so that any instructions fetched* speculatively from the PoC are discarded, since they may have* been dynamically patched at the PoU.*/ic ialludsb nshisb

(2)、armv8-arch32或armv7 enable MMU

ENTRY(__turn_mmu_on)mov r0, r0instr_syncmcr p15, 0, r0, c1, c0, 0 @ write control reg //操作協處理器,將r0寫入到sctlrmrc p15, 0, r3, c0, c0, 0 @ read id reginstr_syncmov r3, r3mov r3, r13ret r3 __turn_mmu_on_end: ENDPROC(__turn_mmu_on)

總結

以上是生活随笔為你收集整理的armv8/armv7中SCTLR的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。