summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/arm/kvm/armv8_cpu.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/arch/arm/kvm/armv8_cpu.cc b/src/arch/arm/kvm/armv8_cpu.cc
index 5a843fcd5..2ac97441d 100644
--- a/src/arch/arm/kvm/armv8_cpu.cc
+++ b/src/arch/arm/kvm/armv8_cpu.cc
@@ -249,10 +249,10 @@ ArmV8KvmCPU::updateKvmState()
}
for (int i = 0; i < NUM_QREGS; ++i) {
- const RegIndex reg_base(i * FP_REGS_PER_VFP_REG);
KvmFPReg reg;
+ auto v = tc->readVecReg(RegId(VecRegClass, i)).as<VecElem>();
for (int j = 0; j < FP_REGS_PER_VFP_REG; j++)
- reg.s[j].i = tc->readFloatReg(reg_base + j);
+ reg.s[j].i = v[j];
setOneReg(kvmFPReg(i), reg.data);
DPRINTF(KvmContext, " Q%i: %s\n", i, getAndFormatOneReg(kvmFPReg(i)));
@@ -321,12 +321,12 @@ ArmV8KvmCPU::updateThreadContext()
}
for (int i = 0; i < NUM_QREGS; ++i) {
- const RegIndex reg_base(i * FP_REGS_PER_VFP_REG);
KvmFPReg reg;
DPRINTF(KvmContext, " Q%i: %s\n", i, getAndFormatOneReg(kvmFPReg(i)));
getOneReg(kvmFPReg(i), reg.data);
+ auto v = tc->getWritableVecReg(RegId(VecRegClass, i)).as<VecElem>();
for (int j = 0; j < FP_REGS_PER_VFP_REG; j++)
- tc->setFloatReg(reg_base + j, reg.s[j].i);
+ v[j] = reg.s[j].i;
}
for (const auto &ri : getSysRegMap()) {