1. asm volatile("mov r5, #0\n"
  2. "0:\n\t"
  3. "add r5, r5, #1\n\t"
  4. "cmp %0, r5\n\t"
  5. "bne 0b"
  6. : : "r"(FREQ >> 22) : "r5");