ARMv8 A架構基礎之系統暫存器

2021-08-30 15:55:28 字數 3156 閱讀 3939

原文:

在aarch64中,系統配置是通過使用msr和mrs指令來控制的(通過msr和mrs指令訪問系統暫存器)。 這與armv7-a不同,在armv7-a中通常通過協處理器15(cp15)作業系統暫存器。

暫存器的名稱通常暗示著它能被訪問的最低的異常級別。 例如:

具有字尾_eln的暫存器在一些或所有級別上都有單獨的儲存副本,el0除外。 只有很少的系統暫存器可以從el0訪問,比如快取型別暫存器(ctr_el0)就可以。

訪問系統暫存器的**採用以下形式:

mrs x0,ttbr0_el1 //將ttbr0_el1移入x0

msr ttbr0_el1,x0 //將x0移入ttbr0_el1

arm架構的之前版本使用協處理器來進行系統配置。 但是,aarch64不支援協處理器。

下表顯示了異常級別,這些異常級別具有每個暫存器的單獨副本。 例如,單獨的輔助控制暫存器(actlr)以actlr_el1,actlr_el2和actlr_el3的形式存在。

名稱暫存器

說明n的允許值

actlr_eln

輔助控制暫存器

控制處理器特定的功能。

1,2,3

ccsidr_eln

當前快取大小id暫存器

提供有關當前所選快取的體系結構的資訊。

1clidr_eln

快取級別id暫存器

在每個級別上實現的單個或多個快取記憶體的型別

快取層次結構的一致性級別和統一級別。

1,2,3

cntfrq_eln

計數器頻率暫存器

報告系統計時器的頻率。

0cntpct_eln

計數器物理計數暫存器

保持64位的當前計數值。

0cntkctl_eln

計數器核心控制暫存器

控制從虛擬計數器生成事件流。還控制從el0訪問物理計數器,虛擬計數器,el1物理計時器和虛擬計時器。

1cntp_cval_eln

計數器物理計時器比較值暫存器

儲存el1物理計時器的比較值。

0cpacr_eln

協處理器訪問控制暫存器

控制對跟蹤,浮點和simd功能的訪問。

1csselr_eln

快取大小選擇暫存器

通過指定所需的快取級別和快取型別(指令或資料快取),選擇當前的快取大小id暫存器ccsidr_el1。

1cntp_ctl_eln

計數器物理控制暫存器

控制el1物理計時器的暫存器。

0ctr_eln

快取型別暫存器

有關整合快取體系結構的資訊。

0dczid_eln

資料快取零id暫存器

指示資料快取零根據虛擬位址(dczva)系統指令寫入位元組值為0的塊大小。

0elr_eln

異常鏈結暫存器

儲存導致異常的指令的位址。

1,2,3

esr_eln

異常綜合特徵暫存器

包括有關異常原因的資訊。

1,2,3

far_eln

故障位址暫存器

儲存虛擬錯誤位址。

1,2,3

fpcr

浮點控制暫存器

控制浮點擴充套件行為。該暫存器中的字段對映到aarch32 fpscr中的等效字段。

.fpsr

浮點狀態暫存器

提供浮點系統狀態資訊。該暫存器中的字段對映到aarch32 fpscr中的等效字段。

.hcr_eln

hypervisor 配置暫存器

控制虛擬化設定,並將異常情況捕獲到el2。

2mair_eln

儲存器屬性間接暫存器

在eln的階段1翻譯的long-descriptor格式轉換表項中,提供對應於可能值的儲存器屬性編碼。

1,2,3

midr_eln

主id暫存器

**執行的處理器型別(部件號和版本)。

1mpidr_eln

多處理器密切關係的暫存器

處理器和群集id,在多核或群集系統中。

1rvbar_eln

基於位址暫存器的重置向量

儲存重置向量的基位址,以便傳送給eln的任何異常。

1,2,3

scr_eln

安全配置暫存器

控制安全狀態和el3的異常情況。

3sctlr_eln

系統控制暫存器

控制架構功能,例如mmu,快取和對齊檢查。

0,1,2,3

spsr_eln

儲存的程式狀態暫存器

當發生異常時,保持已儲存的處理器狀態。

abt,fiq,irq,und,1,2,3

tcr_eln

轉換控制暫存器

確定哪個轉換表基地暫存器定義了轉換表行走(translation table walk)的基位址,該基位址是eln中,記憶體訪問階段1轉換所需要的。

還控制轉換**式並儲存可快取和可共享的資訊。

1,2,3

tpidr_eln

使用者讀/寫執行緒id暫存器

為了作業系統管理的目的,提供乙個在eln上執行的軟體可以儲存執行緒標識資訊的位置。

0,1,2,3

tpidrro_eln

使用者唯讀執行緒id暫存器

提供在el1或更高版本上執行的軟體可以儲存執行緒標識資訊的位置。為了作業系統管理的目的,在el0上執行的軟體可以看到這些資訊。

0ttbr0_eln

轉換表基址暫存器0

儲存轉換表0的基位址,以及它占用的記憶體的資訊。這是eln內,記憶體訪問階段1轉換的轉換表之一。

1,2,3

ttbr1_eln

轉換表基址暫存器1

儲存轉換表1的基位址,以及它佔據的儲存器的資訊。

這是在el0和el1內,記憶體訪問階段1轉換的轉換表之一

1vbar_eln

基於向量的位址暫存器

儲存異常基位址,以便傳送到eln的任何異常。

1,2,3

vtcr_eln

虛擬化轉換控制暫存器

控制來自非安全el0和el1的記憶體訪問階段2轉換所需的轉換表步行。還儲存訪問的可快取和可共享資訊。

2vttbr_eln

虛擬化轉換表基址暫存器

儲存來自非安全el0和el1的記憶體訪問階段2轉換的轉換表的基位址。2原文

ARMv8 A系列學習筆記 9 GIC

在學習mindshare armv8 a的時候,碰到幾個要點 第一 synchronous v asynchronous 所謂的sync exception的特點是 1.是在執行一條具體的指令的時候產生的 如執行 load store指令的時候,對應的虛擬位址無效,則產生異常 2.異常處理結束,返回...

ARMv8百日談(記憶體管理系統)

1 mmu的作用是啥 進行位址轉換,位址許可權控制,位址屬性定義,以及對pe發起的訪問進行check 2 在不同的el下以及不同的安全狀態下,va到pa的過程是不一樣的,經過的stage轉換階段,如下 a 在轉換系統使能以後,判斷位址會不會因為超出範圍而導致 translation fault b ...

基礎架構之Gitlab Runner

基礎架構之gitlab runner也是常用的基礎設施,我們接著gitlab操作,具體使用gitlabrunner,如果不熟悉可以見官方詳細介紹這篇文章主要介紹安裝及專案使用。一 環境要求 centos 7.5.1804 docker 18.06.1 ce gitlab gitlab ce gitl...