On 2/7/25 03:02, Cornelia Huck wrote:
+/* read a 32b sysreg value and store it in the idregs */
+static int get_host_cpu_reg32(int fd, ARMHostCPUFeatures *ahcf, ARMSysRegs
sysreg)
+{
+ int index = get_sysreg_idx(sysreg);
+ uint64_t *reg;
+ int ret;
+
+ if (index < 0) {
+ return -ERANGE;
+ }
+ reg = &ahcf->isar.idregs[index];
+ ret = read_sys_reg32(fd, (uint32_t *)reg,
idregs_sysreg_to_kvm_reg(sysreg));
+ return ret;
+}
I'm not keen on the casting.
If we want to retain read_sys_reg32 at all, then
uint32_t tmp;
ret = read_sys_reg32(fd, &tmp, idregs_sysreg_to_kvm_reg(sysreg));
if (ret == 0) {
ahcf->isar.idregs[index] = tmp;
}
return ret;
That said, read_sys_reg32 does exactly the opposite, using a uint64_t temporary.
Therefore I would say that we should simply use read_sys_reg64.
r~