mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-06 02:25:23 +00:00
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:
parent
6d6efb20c0
commit
0131dd3579
1 changed files with 12 additions and 16 deletions
|
@ -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(())
|
||||||
|
|
Loading…
Reference in a new issue