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~

Reply via email to