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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

3-Arm CPU Specific Build Macros

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

引流關鍵詞: 中斷、同步異常、異步異常、irq、fiq、BL1,BL2,BL3,BL31,BL32,BL33,AP_BL1,AP_BL2,AP_BL3,AP_BL31,AP_BL32,AP_BL33,SCP_BL1,SCP_BL2,BL0,BL30, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、內存管理、頁表…

快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈


[專欄目錄]-ATF/FF-A/specification學習

3. Arm CPU 特定的構建宏

本文檔描述了 CPU 特定操作框架中存在的各種構建選項,以啟用勘誤表解決方法并啟用平臺上特定 CPU 的優化。

3.1。安全漏洞變通辦法

TF-A 導出一系列構建標志,這些標志控制應在運行時應用哪些安全漏洞變通辦法。

  • WORKAROUND_CVE_2017_5715:啟用 CVE-2017-5715的安全解決方法。如果系統中的所有 PE 都不需要變通方法,則平臺可以將此標志設置為 0。將此標志設置為 0 不會為未受影響的平臺提供性能優勢,它只是有助于遵守規范中有關變通方法發現的建議。默認為 1。

  • WORKAROUND_CVE_2018_3639:啟用 CVE-2018-3639的安全解決方法。默認為 1。TF-A 項目建議即使在不受 CVE-2018-3639 影響的平臺上也保持默認值 1,以符合規范中關于變通方法發現的建議。

  • DYNAMIC_WORKAROUND_CVE_2018_3639:啟用 CVE-2018-3639 的動態緩解。如果目標平臺包含至少 1 個需要動態緩解的 CPU,則此構建選項應設置為 1。默認為 0。

3.2. CPU 勘誤表解決方法

TF-A 導出一系列構建標志,這些標志控制由重置處理程序應用于每個 CPU 的勘誤解決方法??闭`表的詳細信息可以在 Arm 發布的 CPU 特定勘誤表文檔中找到:

  • Cortex-A53 MPCore 軟件開發人員勘誤通知

  • Cortex-A57 MPCore 軟件開發人員勘誤通知

  • Cortex-A72 MPCore 軟件開發人員勘誤通知

勘誤表變通辦法是針對特定修訂版或一組處理器修訂版實施的。這在運行時由重置處理程序檢查。每個勘誤表解決方法都由其ID在處理器的勘誤表通知文檔中指定。用于啟用/禁用勘誤解決方法的定義格式為,其中 為例如CPU 。ERRATA__Processor nameA57Cortex_A57

有關如何編寫勘誤解決方法函數的信息,請參閱CPU 勘誤狀態報告。

默認情況下禁用所有解決方法。平臺負責根據其要求通過在平臺特定的 makefile 中定義勘誤解決方法構建標志來啟用這些解決方法。如果為錯誤的 CPU 版本啟用了這些變通方法,則不會應用勘誤表變通方法。在 DEBUG 構建中,這是通過向崩潰控制臺打印警告來指示的。

在當前實現中,具有多個不同版本的處理器變體的平臺沒有可用的運行時機制來指定應啟用或不啟用哪些勘誤表解決方法。

build flags 的值默認為 0,即禁用。值為 1 將啟用它。

對于 Cortex-A9,定義了以下勘誤構建標志:

  • ERRATA_A9_794073:這會將勘誤表 794073 解決方法應用于 Cortex-A9 CPU。這需要為 CPU 的所有版本啟用。

對于 Cortex-A15,定義了以下勘誤構建標志:

  • ERRATA_A15_816470:這會將勘誤表 816470 解決方法應用于 Cortex-A15 CPU。這只需要為 CPU 的版本 >= r3p0 啟用。

  • ERRATA_A15_827671:這會將勘誤表 827671 解決方法應用于 Cortex-A15 CPU。這只需要為 CPU 的版本 >= r3p0 啟用。

對于 Cortex-A17,定義了以下勘誤表構建標志:

  • ERRATA_A17_852421:這會將勘誤表 852421 解決方法應用于 Cortex-A17 CPU。僅需要為 CPU 的修訂版 <= r1p2 啟用此功能。

  • ERRATA_A17_852423:這會將勘誤表 852423 解決方法應用于 Cortex-A17 CPU。僅需要為 CPU 的修訂版 <= r1p2 啟用此功能。

對于 Cortex-A35,定義了以下勘誤表構建標志:

  • ERRATA_A35_855472:這會將勘誤表 855472 解決方法應用于 Cortex-A35 CPU。這只需要為 Cortex-A35 的 r0p0 版本啟用。

對于 Cortex-A53,定義了以下勘誤表構建標志:

  • ERRATA_A53_819472:這會將勘誤表 819472 解決方法應用于所有 CPU。僅需要為 Cortex-A53 的修訂版 <= r0p1 啟用此功能。

  • ERRATA_A53_824069:這會將勘誤表 824069 解決方法應用于所有 CPU。僅需要為 Cortex-A53 的修訂版 <= r0p2 啟用此功能。

  • ERRATA_A53_826319:這會將勘誤表 826319 解決方法應用于 Cortex-A53 CPU。這僅需要為 CPU 的修訂版 <= r0p2 啟用。

  • ERRATA_A53_827319:這會將勘誤表 827319 解決方法應用于所有 CPU。僅需要為 Cortex-A53 的修訂版 <= r0p2 啟用此功能。

    • ERRATA_A53_835769:這將在編譯和鏈接時將勘誤表 835769 解決方法應用于 Cortex-A53 CPU。這需要為版本 <= r0p4 的某些變體啟用。此解決方法可以導致鏈接器創建*.stub 節。

ERRATA_A53_836870:這會將勘誤表 836870 解決方法應用于 Cortex-A53 CPU。僅需要為 CPU 的修訂版 <= r0p3 啟用此功能。從 r0p4 起,此勘誤表在硬件中默認啟用。

  • ERRATA_A53_843419:這將在鏈接時將勘誤表 843419 解決方法應用于 Cortex-A53 CPU。這需要為版本 <= r0p4 的某些變體啟用。這種解決方法可以導致鏈接器發出*.stub4kB 對齊的部分。

  • ERRATA_A53_855873:這會將勘誤表 855873 解決方法應用于 Cortex-A53 CPU。盡管錯誤出現在 CPU 的每個修訂版中,但此解決方法僅適用于從 r0p3 開始的 CPU,它在 CPUACTLR_EL1 中有一個小雞位以啟用硬件解決方法。CPU 的早期版本還有其他勘誤表,需要在軟件中使用相同的解決方法,因此無論如何都應該涵蓋它們。

  • ERRATA_A53_1530924:這會將勘誤表 1530924 解決方法應用于 Cortex-A53 CPU 的所有版本。

對于 Cortex-A55,定義了以下勘誤構建標志:

  • ERRATA_A55_768277:這會將勘誤表 768277 解決方法應用于 Cortex-A55 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A55_778703:這會將勘誤表 778703 解決方法應用于 Cortex-A55 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A55_798797:這會將勘誤表 798797 解決方法應用于 Cortex-A55 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A55_846532:這會將勘誤表 846532 解決方法應用于 Cortex-A55 CPU。這僅需要為 CPU 的修訂版 <= r0p1 啟用。

  • ERRATA_A55_903758:這會將勘誤表 903758 解決方法應用于 Cortex-A55 CPU。這僅需要為 CPU 的修訂版 <= r0p1 啟用。

  • ERRATA_A55_1221012:這會將勘誤表 1221012 解決方法應用于 Cortex-A55 CPU。這僅需要為 CPU 的修訂版 <= r1p0 啟用。

  • ERRATA_A55_1530923:這會將勘誤表 1530923 解決方法應用于 Cortex-A55 CPU 的所有版本。

對于 Cortex-A57,定義了以下勘誤表構建標志:

  • ERRATA_A57_806969:這會將勘誤表 806969 解決方法應用于 Cortex-A57 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A57_813419:這會將勘誤表 813419 解決方法應用于 Cortex-A57 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A57_813420:這會將勘誤表 813420 解決方法應用于 Cortex-A57 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A57_814670:這會將勘誤表 814670 解決方法應用于 Cortex-A57 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A57_817169:這會將勘誤表 817169 解決方法應用于 Cortex-A57 CPU。這僅需要為 CPU 的修訂版 <= r0p1 啟用。

  • ERRATA_A57_826974:這會將勘誤表 826974 解決方法應用于 Cortex-A57 CPU。這僅需要為 CPU 的修訂版 <= r1p1 啟用。

  • ERRATA_A57_826977:這會將勘誤表 826977 解決方法應用于 Cortex-A57 CPU。這僅需要為 CPU 的修訂版 <= r1p1 啟用。

  • ERRATA_A57_828024:這會將勘誤表 828024 解決方法應用于 Cortex-A57 CPU。這僅需要為 CPU 的修訂版 <= r1p1 啟用。

  • ERRATA_A57_829520:這會將勘誤表 829520 解決方法應用于 Cortex-A57 CPU。僅需要為 CPU 的修訂版 <= r1p2 啟用此功能。

  • ERRATA_A57_833471:這會將勘誤表 833471 解決方法應用于 Cortex-A57 CPU。僅需要為 CPU 的修訂版 <= r1p2 啟用此功能。

  • ERRATA_A57_859972:這會將勘誤表 859972 解決方法應用于 Cortex-A57 CPU。僅需要為 CPU 的修訂版 <= r1p3 啟用此功能。

  • ERRATA_A57_1319537:這會將勘誤表 1319537 解決方法應用于 Cortex-A57 CPU 的所有版本。

對于 Cortex-A72,定義了以下勘誤構建標志:

  • ERRATA_A72_859971:這會將勘誤表 859971 解決方法應用于 Cortex-A72 CPU。僅需要為 CPU 的修訂版 <= r0p3 啟用此功能。

  • ERRATA_A72_1319367:這會將勘誤表 1319367 解決方法應用于 Cortex-A72 CPU 的所有版本。

對于 Cortex-A73,定義了以下勘誤表構建標志:

  • ERRATA_A73_852427:這會將勘誤表 852427 解決方法應用于 Cortex-A73 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A73_855423:這會將勘誤表 855423 解決方法應用于 Cortex-A73 CPU。這僅需要為 CPU 的修訂版 <= r0p1 啟用。

對于 Cortex-A75,定義了以下勘誤表構建標志:

  • ERRATA_A75_764081:這會將勘誤表 764081 解決方法應用于 Cortex-A75 CPU。這只需要為 CPU 的版本 r0p0 啟用。

  • ERRATA_A75_790748:這將勘誤表 790748 解決方法應用于 Cortex-A75
    中央處理器。這只需要為 CPU 的版本 r0p0 啟用。

對于 Cortex-A76,定義了以下勘誤表構建標志:

  • ERRATA_A76_1073348:這會將勘誤表 1073348 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r1p0 啟用。

  • ERRATA_A76_1130799:這會將勘誤表 1130799 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r2p0 啟用。

  • ERRATA_A76_1220197:這會將勘誤表 1220197 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r2p0 啟用。

  • ERRATA_A76_1257314:這會將勘誤表 1257314 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_A76_1262606:這會將勘誤表 1262606 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_A76_1262888:這會將勘誤表 1262888 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_A76_1275112:這會將勘誤表 1275112 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_A76_1791580:這會將勘誤表 1791580 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r4p0 啟用。

  • ERRATA_A76_1165522:這會將勘誤表 1165522 解決方法應用于 Cortex-A76 CPU 的所有版本。此勘誤表在 r3p0 中已修復,但由于勘誤表框架的限制,此勘誤表適用于 Cortex-A76 CPU 的所有版本。

  • ERRATA_A76_1868343:這會將勘誤表 1868343 解決方法應用于 Cortex-A76 CPU。這僅需要為 CPU 的修訂版 <= r4p0 啟用。

  • ERRATA_A76_1946160:這會將勘誤表 1946160 解決方法應用于 Cortex-A76 CPU。這只需要為 CPU 的 r3p0 - r4p1 版本啟用。

對于 Cortex-A77,定義了以下勘誤表構建標志:

  • ERRATA_A77_1508412:這會將勘誤表 1508412 解決方法應用于 Cortex-A77 CPU。這僅需要為 CPU 的修訂版 <= r1p0 啟用。

  • ERRATA_A77_1925769:這將勘誤表 1925769 解決方法應用于 Cortex-A77 CPU。這僅需要為 CPU 的修訂版 <= r1p1 啟用。

  • ERRATA_A77_1946167:這會將勘誤表 1946167 解決方法應用于 Cortex-A77 CPU。這僅需要為 CPU 的修訂版 <= r1p1 啟用。

  • ERRATA_A77_1791578:這會將勘誤表 1791578 解決方法應用于 Cortex-A77 CPU。這需要為 r0p0、r1p0 和 r1p1 啟用,它仍然是打開的。

對于 Cortex-A78,定義了以下勘誤表構建標志:

  • ERRATA_A78_1688305:這會將勘誤表 1688305 解決方法應用于 Cortex-A78 CPU。這只需要為 CPU 的版本 r0p0 - r1p0 啟用。

  • ERRATA_A78_1941498:這會將勘誤表 1941498 解決方法應用于 Cortex-A78 CPU。這需要為 CPU 的 r0p0、r1p0 和 r1p1 版本啟用。

  • ERRATA_A78_1951500:這會將勘誤表 1951500 解決方法應用于 Cortex-A78 CPU。這需要為修訂版 r1p0 和 r1p1 啟用,r0p0 有相同的問題,但該修訂版沒有解決方法。

  • ERRATA_A78_1821534:這會將勘誤表 1821534 解決方法應用于 Cortex-A78 CPU。這需要為修訂版 r0p0 和 r1p0 啟用。

  • ERRATA_A78_1952683:這會將勘誤表 1952683 解決方法應用于 Cortex-A78 CPU。這需要為版本 r0p0 啟用,它在 r1p0 中是固定的。

  • ERRATA_A78_2132060:這會將勘誤表 2132060 解決方法應用于 Cortex-A78 CPU。這需要為版本 r0p0、r1p0、r1p1 和 r1p2 啟用。它仍然是開放的。

  • ERRATA_A78_2242635:這會將勘誤表 2242635 解決方法應用于 Cortex-A78 CPU。這需要為版本 r1p0、r1p1 和 r1p2 啟用。該問題存在于 r0p0 中,但沒有解決方法。它仍然是開放的。

對于 Cortex-A78 AE,定義了以下勘誤構建標志:

  • ERRATA_A78_AE_1941500這將勘誤表 1941500 解決方法應用于 Cortex-A78
    AE CPU。這需要為修訂版 r0p0 和 r0p1 啟用。此勘誤表仍處于打開狀態。

  • ERRATA_A78_AE_1951502:這會將勘誤表 1951502 解決方法應用于 Cortex-A78 AE CPU。這需要為修訂版 r0p0 和 r0p1 啟用。此勘誤表仍處于打開狀態。

對于 Neoverse N1,定義了以下勘誤構建標志:

  • ERRATA_N1_1073348:這會將勘誤表 1073348 解決方法應用于 Neoverse-N1 CPU。這只需要為 CPU 的 r0p0 和 r1p0 版本啟用。

  • ERRATA_N1_1130799:這會將勘誤表 1130799 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r2p0 啟用。

  • ERRATA_N1_1165347:這會將勘誤表 1165347 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r2p0 啟用。

  • ERRATA_N1_1207823:這會將勘誤表 1207823 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r2p0 啟用。

  • ERRATA_N1_1220197:這會將勘誤表 1220197 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r2p0 啟用。

  • ERRATA_N1_1257314:這會將勘誤表 1257314 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_N1_1262606:這會將勘誤表 1262606 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_N1_1262888:這會將勘誤表 1262888 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_N1_1275112:這會將勘誤表 1275112 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_N1_1315703:這會將勘誤表 1315703 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r3p0 啟用。

  • ERRATA_N1_1542419:這會將勘誤表 1542419 解決方法應用于 Neoverse-N1 CPU。這只需要為 CPU 的 r3p0 - r4p0 版本啟用。

  • ERRATA_N1_1868343:這會將勘誤表 1868343 解決方法應用于 Neoverse-N1 CPU。這僅需要為 CPU 的修訂版 <= r4p0 啟用。

  • ERRATA_N1_1946160:這會將勘誤表 1946160 解決方法應用于 Neoverse-N1 CPU。這需要為修訂版 r3p0、r3p1、r4p0 和 r4p1 啟用,對于修訂版 r0p0、r1p0 和 r2p0,沒有解決方法。

對于 Neoverse V1,定義了以下勘誤構建標志:

  • ERRATA_V1_1774420:這會將勘誤表 1774420 解決方法應用于 Neoverse-V1 CPU。這只需要為版本 r0p0 和 r1p0 啟用,它在 r1p1 中是固定的。

  • ERRATA_V1_1791573:這會將勘誤表 1791573 解決方法應用于 Neoverse-V1 CPU。這只需要為版本 r0p0 和 r1p0 啟用,它在 r1p1 中是固定的。

  • ERRATA_V1_1852267:這會將勘誤表 1852267 解決方法應用于 Neoverse-V1 CPU。這只需要為版本 r0p0 和 r1p0 啟用,它在 r1p1 中是固定的。

  • ERRATA_V1_1925756:這會將勘誤表 1925756 解決方法應用于 Neoverse-V1 CPU。這需要為 r0p0、r1p0 和 r1p1 啟用,它仍然是打開的。

  • ERRATA_V1_1940577:這會將勘誤表 1940577 解決方法應用于 Neoverse-V1 CPU。這只需要為 CPU 的 r1p0 和 r1p1 版本啟用。

  • ERRATA_V1_1966096:這會將勘誤表 1966096 解決方法應用于 Neoverse-V1 CPU。這需要為 CPU 的 r1p0 和 r1p1 版本啟用,該問題也存在于 r0p0 中,但該版本沒有解決方法。它仍然是開放的。

  • ERRATA_V1_2139242:這會將勘誤表 2139242 解決方法應用于 Neoverse-V1 CPU。這需要為 CPU 的 r0p0、r1p0 和 r1p1 版本啟用。它仍然是開放的。

  • ERRATA_V1_2108267:這會將勘誤表 2108267 解決方法應用于 Neoverse-V1 CPU。這需要為 CPU 的 r0p0、r1p0 和 r1p1 版本啟用。它仍然是開放的。

  • ERRATA_V1_2216392:這會將勘誤表 2216392 解決方法應用于 Neoverse-V1 CPU。這需要為 CPU 的 r1p0 和 r1p1 版本啟用,該問題也存在于 r0p0 中,但該版本沒有解決方法。它仍然是開放的。

對于 Cortex-A710,定義了以下勘誤表構建標志:

  • ERRATA_A710_1987031:這會將勘誤表 1987031 解決方法應用于 Cortex-A710 CPU。這只需要為 CPU 的 r0p0、r1p0 和 r2p0 版本啟用。它仍然是開放的。

  • ERRATA_A710_2081180:這會將勘誤表 2081180 解決方法應用于 Cortex-A710 CPU。這只需要為 CPU 的 r0p0、r1p0 和 r2p0 版本啟用。它仍然是開放的。

  • ERRATA_A710_2055002:這會將勘誤表 2055002 解決方法應用于 Cortex-A710 CPU。這需要為 CPU 的 r1p0、r2p0 版本啟用,并且仍然處于打開狀態。

  • ERRATA_A710_2017096:這會將勘誤表 2017096 解決方法應用于 Cortex-A710 CPU。這需要為 CPU 的修訂版 r0p0、r1p0 和 r2p0 啟用,并且仍然處于打開狀態。

  • ERRATA_A710_2083908:這會將勘誤表 2083908 解決方法應用于 Cortex-A710 CPU。這需要為 CPU 的 r2p0 版本啟用,并且仍然處于打開狀態。

  • ERRATA_A710_2058056:這會將勘誤表 2058056 解決方法應用于 Cortex-A710 CPU。這需要為 CPU 的修訂版 r0p0、r1p0 和 r2p0 啟用,并且仍然處于打開狀態。

對于 Neoverse N2,定義了以下勘誤構建標志:

  • ERRATA_N2_2002655:這會將勘誤表 2002655 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的 r0p0 版本啟用,它仍然是打開的。

  • ERRATA_N2_2067956:這會將勘誤表 2067956 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2025414:這會將勘誤表 2025414 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2189731:這會將勘誤表 2189731 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2138956:這會將勘誤表 2138956 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2138953:這會將勘誤表 2138953 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2242415:這會將勘誤表 2242415 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2138958:這會將勘誤表 2138958 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2242400:這會將勘誤表 2242400 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

  • ERRATA_N2_2280757:這會將勘誤表 2280757 解決方法應用于 Neoverse-N2 CPU。這需要為 CPU 的修訂版 r0p0 啟用,并且仍然處于打開狀態。

對于 Cortex-X2,定義了以下勘誤構建標志:

  • ERRATA_X2_2002765:這會將勘誤表 2002765 解決方法應用于 Cortex-X2 CPU。這需要為 CPU 的 r0p0、r1p0 和 r2p0 版本啟用,它仍然是打開的。

  • ERRATA_X2_2058056:這會將勘誤表 2058056 解決方法應用于 Cortex-X2 CPU。這需要為 CPU 的 r0p0、r1p0 和 r2p0 版本啟用,它仍然是打開的。

  • ERRATA_X2_2083908:這會將勘誤表 2083908 解決方法應用于 Cortex-X2 CPU。這需要為 CPU 的 r2p0 版本啟用,它仍然是打開的。

3.3. DSU 勘誤表解決方法

與 CPU 勘誤表類似,TF-A 也實現了 DSU(DynamIQ 共享單元)勘誤表的解決方法。DSU 勘誤表詳細信息可在相應的 Arm 文檔中找到:

Arm DSU 軟件開發人員勘誤通知

每個勘誤都由IDDSU 勘誤通知文檔中定義的 標識。因此,啟用/禁用勘誤解決方法的構建標志具有格式ERRATA_DSU_. DSU 勘誤表變通辦法的實現和應用邏輯類似于CPU 勘誤表變通辦法。

對于 DSU 勘誤表,定義了以下構建標志:

  • ERRATA_DSU_798953:這適用于受影響的 DSU 配置的勘誤表 798953 解決方法。此勘誤表僅適用于修訂版為 r0p0(在 r0p1 上已修復)的 DSU。但是,請注意,此解決方法會導致空閑時 DSU 功耗增加。

  • ERRATA_DSU_936184:這適用于受影響的 DSU 配置的勘誤表 936184 解決方法。此勘誤表僅適用于包含 ACP 接口且DSU 版本早于 r2p0 的 DSU(在 r2p0 上已修復)。但是,請注意,此解決方法會導致空閑時 DSU 功耗增加。

3.4. CPU 特定優化

本節介紹了 CPU 微架構允許的一些優化,平臺可以根據需要啟用這些優化。

  • SKIP_A57_L1_FLUSH_PWR_DWN:此標志通過不刷新 1 級數據緩存來優化 Cortex-A57 集群斷電序列。L1 數據緩存和 L2 統一緩存包含在內。通過 set/way 刷新 L2 也會刷新來自 L1 的任何臟行。這是與 Cortex-A57 TRM 定義的斷電序列的已知安全偏差。每個基于 Cortex-A57 的平臺都必須自行決定是否使用優化。

  • A53_DISABLE_NON_TEMPORAL_HINT:此標志禁用緩存非臨時提示。在 Cortex-A53 上實現的 LDNP/STNP 指令的行為方式與大多數程序員所期望的不同,并且很可能會導致使用它們的任何代碼的速度顯著下降。Armv8-A 架構(參見 Arm DDI 0487A.h,第 D3.4.3 節)允許內核忽略非時間提示,并將 LDNP/STNP 視為 LDP/STP。啟用此標志會強制執行此行為。這僅需要為 CPU 的版本 <= r0p3 啟用,并且默認啟用。

  • A57_DISABLE_NON_TEMPORAL_HINT:此標志與 Cortex-A57 具有相同的行為 A53_DISABLE_NON_TEMPORAL_HINT。這需要僅針對 CPU 的修訂版本 <= r1p2 啟用,并且默認啟用,如Cortex-A57 軟件優化指南的“4.7 非臨時加載/存儲”部分中所建議的那樣 。

  • ‘‘A57_ENABLE_NON_CACHEABLE_LOAD_FWD’’:此標志啟用不可緩存
    Cortex-A57 CPU 的流增強功能。只有當他們的內存系統滿足來自 Cortex-A57 處理器的高速緩存線填充請求是原子的要求時,平臺才能設置該位。每個基于 Cortex-A57 的平臺都必須自行決定是否使用優化。默認情況下禁用此標志。

  • NEOVERSE_Nx_EXTERNAL_LLC:此標志表示系統中存在外部最后一級緩存(LLC),并且主 CHI 接口上的 DataSource 字段指示何時從 LLC 返回數據。這用于控制 LL_CACHE* PMU 事件的計數方式。默認值為 0(禁用)。

總結

以上是生活随笔為你收集整理的3-Arm CPU Specific Build Macros的全部內容,希望文章能夠幫你解決所遇到的問題。

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