提交 c8e1b4e4 编写于 作者: P Peng Liang 提交者: Yang Yingliang

arm64: add a helper function to traverse arm64_ftr_regs

hulk inclusion
category: feature
bugzilla: NA
CVE: NA

If we want to emulate ID registers, we need to initialize ID registers
firstly.  This commit is to add a helper function to traverse
arm64_ftr_regs so that we can initialize ID registers from
arm64_ftr_regs.
Signed-off-by: Nzhanghailiang <zhang.zhanghailiang@huawei.com>
Signed-off-by: NPeng Liang <liangpeng10@huawei.com>
Acked-by: NHanjun Guo <guohanjun@huawei.com>
Reviewed-by: NXiangyou Xie <xiexiangyou@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 92fb9647
...@@ -89,6 +89,8 @@ struct arm64_ftr_reg { ...@@ -89,6 +89,8 @@ struct arm64_ftr_reg {
extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0; extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0;
int arm64_cpu_ftr_regs_traverse(int (*op)(u32, u64, void *), void *argp);
/* /*
* CPU capabilities: * CPU capabilities:
* *
......
...@@ -763,6 +763,19 @@ u64 read_sanitised_ftr_reg(u32 id) ...@@ -763,6 +763,19 @@ u64 read_sanitised_ftr_reg(u32 id)
return regp->sys_val; return regp->sys_val;
} }
int arm64_cpu_ftr_regs_traverse(int (*op)(u32, u64, void *), void *argp)
{
int i, ret;
for (i = 0; i < ARRAY_SIZE(arm64_ftr_regs); i++) {
ret = (*op)(arm64_ftr_regs[i].sys_id,
arm64_ftr_regs[i].reg->sys_val, argp);
if (ret < 0)
return ret;
}
return 0;
}
#define read_sysreg_case(r) \ #define read_sysreg_case(r) \
case r: return read_sysreg_s(r) case r: return read_sysreg_s(r)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册