aarch64: refactor register initialization

Use single purpose, immutable variables with meaningful names.

BUG=b:163789172
TEST=cargo test

Change-Id: Icc90918f6154bef8ab93358ba0651fb0ed7b041a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2843604
Reviewed-by: Andrew Walbran <qwandor@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Auto-Submit: Andrew Scull <ascull@google.com>
Commit-Queue: Dylan Reid <dgreid@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Andrew Scull 2021-04-21 10:02:48 +00:00 committed by Commit Bot
parent 6d6efb20c0
commit 0131dd3579

View file

@ -497,31 +497,27 @@ impl AArch64 {
} }
vcpu.init(&features).map_err(Error::VcpuInit)?; vcpu.init(&features).map_err(Error::VcpuInit)?;
// set up registers
let mut data: u64;
let mut reg_id: u64;
// All interrupts masked // All interrupts masked
data = PSR_D_BIT | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT | PSR_MODE_EL1H; let pstate = PSR_D_BIT | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT | PSR_MODE_EL1H;
reg_id = arm64_core_reg!(pstate); vcpu.set_one_reg(arm64_core_reg!(pstate), pstate)
vcpu.set_one_reg(reg_id, data).map_err(Error::SetReg)?; .map_err(Error::SetReg)?;
// Other cpus are powered off initially // Other cpus are powered off initially
if vcpu_id == 0 { if vcpu_id == 0 {
if has_bios { let entry_addr = if has_bios {
data = AARCH64_PHYS_MEM_START + AARCH64_BIOS_OFFSET; AARCH64_PHYS_MEM_START + AARCH64_BIOS_OFFSET
} else { } else {
data = AARCH64_PHYS_MEM_START + AARCH64_KERNEL_OFFSET; AARCH64_PHYS_MEM_START + AARCH64_KERNEL_OFFSET
} };
reg_id = arm64_core_reg!(pc); vcpu.set_one_reg(arm64_core_reg!(pc), entry_addr)
vcpu.set_one_reg(reg_id, data).map_err(Error::SetReg)?; .map_err(Error::SetReg)?;
/* X0 -- fdt address */ /* X0 -- fdt address */
let mem_size = guest_mem.memory_size(); let mem_size = guest_mem.memory_size();
data = (AARCH64_PHYS_MEM_START + fdt_offset(mem_size, has_bios)) as u64; let fdt_addr = (AARCH64_PHYS_MEM_START + fdt_offset(mem_size, has_bios)) as u64;
// hack -- can't get this to do offsetof(regs[0]) but luckily it's at offset 0 // hack -- can't get this to do offsetof(regs[0]) but luckily it's at offset 0
reg_id = arm64_core_reg!(regs); vcpu.set_one_reg(arm64_core_reg!(regs), fdt_addr)
vcpu.set_one_reg(reg_id, data).map_err(Error::SetReg)?; .map_err(Error::SetReg)?;
} }
Ok(()) Ok(())