Vietnamese (machine translation)

Lưu ý

Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.

Bản gốc:

ARM64 ELF hwcaps

Người dịch:

Google Translate (machine translation)

Phiên bản gốc:

8541d8f725c6

Cảnh báo

Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.

ARM64 ELF hwcaps

Tài liệu này mô tả cách sử dụng và ngữ nghĩa của hwcaps arm64 ELF.

1. Giới thiệu

Một số tính năng phần cứng hoặc phần mềm chỉ có trên một số CPU triển khai và/hoặc với các cấu hình kernel nhất định, nhưng không có cơ chế khám phá được kiến trúc sẵn có cho mã không gian người dùng tại EL0. các kernel hiển thị sự hiện diện của các tính năng này cho không gian người dùng thông qua một tập hợp của các cờ được gọi là hwcaps, hiển thị trong vectơ phụ trợ.

Phần mềm không gian người dùng có thể kiểm tra các tính năng bằng cách mua AT_HWCAP, Mục nhập AT_HWCAP2 hoặc AT_HWCAP3 của vectơ phụ và thử nghiệm liệu các cờ liên quan có được đặt hay không, ví dụ:

bool float_point_is_hiện tại (void)
{

hwcaps dài không dấu = getauxval(AT_HWCAP); nếu (hwcaps & HWCAP_FP)

trả về đúng sự thật;

trả về sai;

}

Khi phần mềm dựa vào một tính năng được mô tả bởi hwcap, phần mềm đó phải kiểm tra cờ hwcap có liên quan để xác minh rằng tính năng này có mặt trước đó đang cố gắng sử dụng tính năng này.

Các tính năng không thể được thăm dò một cách đáng tin cậy thông qua các phương tiện khác. Khi một tính năng không có sẵn, cố gắng sử dụng nó có thể dẫn đến kết quả không thể đoán trước hành vi và không được đảm bảo sẽ dẫn đến bất kỳ dấu hiệu đáng tin cậy nào rằng tính năng này không khả dụng, chẳng hạn như SIGILL.

2. Giải thích hwcaps

Phần lớn các hwcap nhằm mục đích chỉ ra sự hiện diện của các tính năng được mô tả bởi các thanh ghi ID được thiết kế không thể truy cập được mã không gian người dùng tại EL0. Những hwcap này được xác định theo thanh ghi ID các trường và nên được giải thích bằng cách tham chiếu đến định nghĩa của các trường này trong Sách hướng dẫn tham khảo kiến trúc ARM (ARM ARM).

Những hwcap như vậy được mô tả bên dưới dưới dạng:

Chức năng được ngụ ý bởi idreg.field == val.

Những hwcap như vậy cho biết tính khả dụng của chức năng mà ARM ARM định nghĩa là hiện diện khi idreg.field có giá trị val, nhưng không chỉ ra rằng idreg.field chính xác bằng val, chúng cũng không chỉ ra sự vắng mặt của chức năng ngụ ý bởi các giá trị khác của idreg.field.

Các hwcap khác có thể chỉ ra sự hiện diện của các tính năng không thể được mô tả chỉ bởi các thanh ghi ID. Những điều này có thể được mô tả mà không cần tham chiếu đến sổ đăng ký ID và có thể tham khảo các tài liệu khác.

3. Các hwcap được hiển thị trong AT_HWCAP

HWCAP_FP

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.FP == 0b0000.

HWCAP_ASIMD

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.AdvSIMD == 0b0000.

HWCAP_EVTSTRM

Bộ hẹn giờ chung được cấu hình để tạo ra các sự kiện với tần suất khoảng 10KHz.

HWCAP_AES

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.AES == 0b0001.

HWCAP_PMULL

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.AES == 0b0010.

HWCAP_SHA1

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.SHA1 == 0b0001.

HWCAP_SHA2

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.SHA2 == 0b0001.

HWCAP_CRC32

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.CRC32 == 0b0001.

HWCAP_ATOMICS

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.Atomic == 0b0010.

HWCAP_FPHP

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.FP == 0b0001.

HWCAP_ASIMDHP

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.AdvSIMD == 0b0001.

HWCAP_CPUID

Có sẵn quyền truy cập EL0 vào một số thanh ghi ID nhất định, trong phạm vi được mô tả bởi ARM64 CPU Feature Registers.

Các thanh ghi ID này có thể ngụ ý tính khả dụng của các tính năng.

HWCAP_ASIMDRDM

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.RDM == 0b0001.

HWCAP_JSCVT

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.JSCVT == 0b0001.

HWCAP_FCMA

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.FCMA == 0b0001.

HWCAP_LRCPC

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.LRCPC == 0b0001.

HWCAP_DCPOP

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.DPB == 0b0001.

HWCAP_SHA3

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.SHA3 == 0b0001.

HWCAP_SM3

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.SM3 == 0b0001.

HWCAP_SM4

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.SM4 == 0b0001.

HWCAP_ASIMDDP

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.DP == 0b0001.

HWCAP_SHA512

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.SHA2 == 0b0010.

HWCAP_SVE

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001.

HWCAP_ASIMDFHM

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.FHM == 0b0001.

HWCAP_DIT

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.DIT == 0b0001.

HWCAP_USCAT

Chức năng được ngụ ý bởi ID_AA64MMFR2_EL1.AT == 0b0001.

HWCAP_ILRCPC

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.LRCPC == 0b0010.

HWCAP_FLAGM

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.TS == 0b0001.

HWCAP_SSBS

Chức năng được ngụ ý bởi ID_AA64PFR1_EL1.SSBS == 0b0010.

HWCAP_SB

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.SB == 0b0001.

HWCAP_PACA

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.APA == 0b0001 hoặc ID_AA64ISAR1_EL1.API == 0b0001, như được mô tả bởi Tài liệu/arch/arm64/pointer-authentication.rst.

HWCAP_PACG

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.GPA == 0b0001 hoặc ID_AA64ISAR1_EL1.GPI == 0b0001, như được mô tả bởi Tài liệu/arch/arm64/pointer-authentication.rst.

HWCAP_GCS

Chức năng được ngụ ý bởi ID_AA64PFR1_EL1.GCS == 0b1, như được mô tả bởi Guarded Control Stack support for AArch64 Linux.

HWCAP_CMPBR

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.CSSC == 0b0010.

HWCAP_FPRCVT

Chức năng được ngụ ý bởi ID_AA64ISAR3_EL1.FPRCVT == 0b0001.

HWCAP_F8MM8

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8MM8 == 0b0001.

HWCAP_F8MM4

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8MM4 == 0b0001.

HWCAP_SVE_F16MM

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.F16MM == 0b0001.

HWCAP_SVE_ELTPERM

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.ELTPERM == 0b0001.

HWCAP_SVE_AES2

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.AES == 0b0011.

HWCAP_SVE_BFSCALE

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.B16B16 == 0b0010.

HWCAP_SVE2P2

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.SVEver == 0b0011.

HWCAP_SME2P2

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SMever == 0b0011.

HWCAP_SME_SBITPERM

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SBitPerm == 0b1.

HWCAP_SME_AES

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.AES == 0b1.

HWCAP_SME_SFEXPA

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SFEXPA == 0b1.

HWCAP_SME_STMOP

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.STMOP == 0b1.

HWCAP_SME_SMOP4

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SMOP4 == 0b1.

HWCAP2_DCPODP

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.DPB == 0b0010.

HWCAP2_SVE2

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.SVEver == 0b0001.

HWCAP2_SVEAES

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.AES == 0b0001.

HWCAP2_SVEPMULL

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.AES == 0b0010.

HWCAP2_SVEBITPERM

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.BitPerm == 0b0001.

HWCAP2_SVESHA3

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.SHA3 == 0b0001.

HWCAP2_SVESM4

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.SM4 == 0b0001.

HWCAP2_FLAGM2

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.TS == 0b0010.

HWCAP2_FRINT

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.FRINTTS == 0b0001.

HWCAP2_SVEI8MM

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.I8MM == 0b0001.

HWCAP2_SVEF32MM

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.F32MM == 0b0001.

HWCAP2_SVEF64MM

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.F64MM == 0b0001.

HWCAP2_SVEBF16

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.BF16 == 0b0001.

HWCAP2_I8MM

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.I8MM == 0b0001.

HWCAP2_BF16

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.BF16 == 0b0001.

HWCAP2_DGH

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.DGH == 0b0001.

HWCAP2_RNG

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.RNDR == 0b0001.

HWCAP2_BTI

Chức năng được ngụ ý bởi ID_AA64PFR1_EL1.BT == 0b0001.

HWCAP2_MTE

Chức năng được ngụ ý bởi ID_AA64PFR1_EL1.MTE == 0b0010, như được mô tả bởi Memory Tagging Extension (MTE) in AArch64 Linux.

HWCAP2_ECV

Chức năng được ngụ ý bởi ID_AA64MMFR0_EL1.ECV == 0b0001.

HWCAP2_AFP

Chức năng được ngụ ý bởi ID_AA64MMFR1_EL1.AFP == 0b0001.

HWCAP2_RPRES

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.RPRES == 0b0001.

HWCAP2_MTE3

Chức năng được ngụ ý bởi ID_AA64PFR1_EL1.MTE == 0b0011, như được mô tả bởi Memory Tagging Extension (MTE) in AArch64 Linux.

HWCAP2_SME

Chức năng được ngụ ý bởi ID_AA64PFR1_EL1.SME == 0b0001, như được mô tả bởi Scalable Matrix Extension support for AArch64 Linux.

HWCAP2_SME_I16I64

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.I16I64 == 0b1111.

HWCAP2_SME_F64F64

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.F64F64 == 0b1.

HWCAP2_SME_I8I32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.I8I32 == 0b1111.

HWCAP2_SME_F16F32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.F16F32 == 0b1.

HWCAP2_SME_B16F32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.B16F32 == 0b1.

HWCAP2_SME_F32F32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.F32F32 == 0b1.

HWCAP2_SME_FA64

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.FA64 == 0b1.

HWCAP2_WFXT

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.WFXT == 0b0010.

HWCAP2_EBF16

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.BF16 == 0b0010.

HWCAP2_SVE_EBF16

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.BF16 == 0b0010.

HWCAP2_CSSC

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.CSSC == 0b0001.

HWCAP2_RPRFM

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.RPRFM == 0b0001.

HWCAP2_SVE2P1

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.SVEver == 0b0010.

HWCAP2_SME2

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SMever == 0b0001.

HWCAP2_SME2P1

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SMever == 0b0010.

HWCAP2_SMEI16I32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.I16I32 == 0b0101

HWCAP2_SMEBI32I32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.BI32I32 == 0b1

HWCAP2_SMEB16B16

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.B16B16 == 0b1

HWCAP2_SMEF16F16

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.F16F16 == 0b1

HWCAP2_MOPS

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.MOPS == 0b0001.

HWCAP2_HBC

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.BC == 0b0001.

HWCAP2_SVE_B16B16

Chức năng được ngụ ý bởi ID_AA64PFR0_EL1.SVE == 0b0001 và ID_AA64ZFR0_EL1.B16B16 == 0b0001.

HWCAP2_LRCPC3

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.LRCPC == 0b0011.

HWCAP2_LSE128

Chức năng được ngụ ý bởi ID_AA64ISAR0_EL1.Atomic == 0b0011.

HWCAP2_FPMR

Chức năng được ngụ ý bởi ID_AA64PFR2_EL1.FMR == 0b0001.

HWCAP2_LUT

Chức năng được ngụ ý bởi ID_AA64ISAR2_EL1.LUT == 0b0001.

HWCAP2_FAMINMAX

Chức năng được ngụ ý bởi ID_AA64ISAR3_EL1.FAMINMAX == 0b0001.

HWCAP2_F8CVT

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8CVT == 0b1.

HWCAP2_F8FMA

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8FMA == 0b1.

HWCAP2_F8DP4

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8DP4 == 0b1.

HWCAP2_F8DP2

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8DP2 == 0b1.

HWCAP2_F8E4M3

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8E4M3 == 0b1.

HWCAP2_F8E5M2

Chức năng được ngụ ý bởi ID_AA64FPFR0_EL1.F8E5M2 == 0b1.

HWCAP2_SME_LUTV2

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.LUTv2 == 0b1.

HWCAP2_SME_F8F16

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.F8F16 == 0b1.

HWCAP2_SME_F8F32

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.F8F32 == 0b1.

HWCAP2_SME_SF8FMA

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SF8FMA == 0b1.

HWCAP2_SME_SF8DP4

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SF8DP4 == 0b1.

HWCAP2_SME_SF8DP2

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SF8DP2 == 0b1.

HWCAP2_SME_SF8DP4

Chức năng được ngụ ý bởi ID_AA64SMFR0_EL1.SF8DP4 == 0b1.

HWCAP2_POE

Chức năng được ngụ ý bởi ID_AA64MMFR3_EL1.S1POE == 0b0001.

HWCAP3_MTE_FAR

Chức năng được ngụ ý bởi ID_AA64PFR2_EL1.MTEFAR == 0b0001.

HWCAP3_MTE_STORE_ONLY

Chức năng được ngụ ý bởi ID_AA64PFR2_EL1.MTESTOREONLY == 0b0001.

HWCAP3_LSFE

Chức năng được ngụ ý bởi ID_AA64ISAR3_EL1.LSFE == 0b0001

HWCAP3_LS64

Chức năng được ngụ ý bởi ID_AA64ISAR1_EL1.LS64 == 0b0001. Lưu ý rằng chức năng của lệnh ld64b/st64b yêu cầu sự hỗ trợ của CPU, hệ thống và vị trí bộ nhớ đích (thiết bị) và HWCAP3_LS64 ngụ ý sự hỗ trợ của CPU. Người dùng chỉ nên sử dụng ld64b/st64b trên mục tiêu (thiết bị) được hỗ trợ vị trí bộ nhớ, nếu không thì dự phòng cho các lựa chọn thay thế phi nguyên tử.

4. Các bit AT_HWCAP chưa sử dụng

Để tương tác với không gian người dùng, kernel đảm bảo rằng các bit 62 và 63 của AT_HWCAP sẽ luôn được trả về là 0.