pvmfw: jump_to_payload: De-dup CMP in asm!()
No functional change intended.
Test: m pvmfw
Change-Id: Ie88ca486c9f5f0656206a4c2b863bdf348b515fd
diff --git a/guest/pvmfw/src/arch/aarch64/payload.rs b/guest/pvmfw/src/arch/aarch64/payload.rs
index 3f3ee33..efa1709 100644
--- a/guest/pvmfw/src/arch/aarch64/payload.rs
+++ b/guest/pvmfw/src/arch/aarch64/payload.rs
@@ -73,26 +73,21 @@
// SAFETY: We're exiting pvmfw by passing the register values we need to a noreturn asm!().
unsafe {
asm!(
- "cmp {scratch}, {dice_handover}",
- "b.hs 1f",
-
// Zero .data & .bss until DICE handover.
+ "b 1f",
"0: stp xzr, xzr, [{scratch}], 16",
- "cmp {scratch}, {dice_handover}",
+ "1: cmp {scratch}, {dice_handover}",
"b.lo 0b",
- "1:",
// Skip DICE handover.
"mov {scratch}, {dice_handover_end}",
- "cmp {scratch}, {scratch_end}",
- "b.hs 1f",
// Keep zeroing .data & .bss.
+ "b 1f",
"0: stp xzr, xzr, [{scratch}], 16",
- "cmp {scratch}, {scratch_end}",
+ "1: cmp {scratch}, {scratch_end}",
"b.lo 0b",
- "1:",
// Flush d-cache over .data & .bss (including DICE handover).
"0: dc cvau, {cache_line}",
"add {cache_line}, {cache_line}, {dcache_line_size}",