Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/identcpu.c
| Show First 20 Lines • Show All 2,188 Lines • ▼ Show 20 Lines | MRS_FIELD(MVFR1, FPFtZ, false, MRS_LOWER, MRS_USERSPACE, | ||||
| mvfr1_fpftz), | mvfr1_fpftz), | ||||
| MRS_FIELD_END, | MRS_FIELD_END, | ||||
| }; | }; | ||||
| #endif /* COMPAT_FREEBSD32 */ | #endif /* COMPAT_FREEBSD32 */ | ||||
| struct mrs_user_reg { | struct mrs_user_reg { | ||||
| u_int reg; | u_int reg; | ||||
| u_int iss; | u_int iss; | ||||
| u_int CRm; | |||||
| u_int Op2; | |||||
| bool is64bit; | bool is64bit; | ||||
| size_t offset; | size_t offset; | ||||
| const struct mrs_field *fields; | const struct mrs_field *fields; | ||||
| }; | }; | ||||
| #define USER_REG(name, field_name, _is64bit) \ | #define USER_REG(name, field_name, _is64bit) \ | ||||
| { \ | { \ | ||||
| .reg = name, \ | .reg = name, \ | ||||
| .iss = name##_ISS, \ | .iss = name##_ISS, \ | ||||
| .CRm = name##_CRm, \ | |||||
| .Op2 = name##_op2, \ | |||||
| .offset = __offsetof(struct cpu_desc, field_name), \ | .offset = __offsetof(struct cpu_desc, field_name), \ | ||||
| .fields = field_name##_fields, \ | .fields = field_name##_fields, \ | ||||
| .is64bit = _is64bit, \ | .is64bit = _is64bit, \ | ||||
| } | } | ||||
| static const struct mrs_user_reg user_regs[] = { | static const struct mrs_user_reg user_regs[] = { | ||||
| USER_REG(ID_AA64AFR0_EL1, id_aa64afr0, true), | USER_REG(ID_AA64AFR0_EL1, id_aa64afr0, true), | ||||
| USER_REG(ID_AA64AFR1_EL1, id_aa64afr1, true), | USER_REG(ID_AA64AFR1_EL1, id_aa64afr1, true), | ||||
| ▲ Show 20 Lines • Show All 1,128 Lines • Show Last 20 Lines | |||||