diff --git a/asm/inline.rs b/asm/inline.rs index a7898c57..5887bafb 100644 --- a/asm/inline.rs +++ b/asm/inline.rs @@ -55,6 +55,7 @@ pub unsafe fn __delay(cyc: u32) { // The loop will normally take 3 to 4 CPU cycles per iteration, but superscalar cores // (eg. Cortex-M7) can potentially do it in 2, so we use that as the lower bound, since delaying // for more cycles is okay. + // Add 1 to prevent an integer underflow which would cause a long freeze let real_cyc = 1 + cyc / 2; asm!( // Use local labels to avoid R_ARM_THM_JUMP8 relocations which fail on thumbv6m.