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