About the accuracy of delay loop
Jisheng Zhang
jszhang at marvell.com
Wed Aug 10 00:34:29 PDT 2016
Hi,
On Wed, 10 Aug 2016 15:24:56 +0800 Jamie Huang wrote:
> Hi, all.
> I have a question about the commit
> d0a533b18235d36206b9b422efadb7cee444dfdb ARM: 7452/1: delay:
> allow timer-based delay implementation to be selected.
>
> Recently, I found the BogoMIPS info of kernel start-up log is
> not correct.The correct info is as follows:
>
> Calibrating delay loop... 719.25 BogoMIPS (lpj=3596288)
>
> But, after the patch above, the info changed as follows:
>
> Calibrating delay loop... 478.41 BogoMIPS (lpj=2392064)
>
> I find the difference from assembly code.
> Before the patch:
> __delay(loops_per_jiffy);
> c002bcf0: e50b3034 str r3, [fp, #-52] ; 0x34
> c002bcf4: e50b2030 str r2, [fp, #-48] ; 0x30
> c002bcf8: eb06ddd8 bl c01e3460 <__delay>
>
> After the patch:
> __delay(loops_per_jiffy);
> c04add08: e5932000 ldr r2, [r3]
> c04add0c: e50b105c str r1, [fp, #-92] ; 0x5c
> c04add10: e50b3060 str r3, [fp, #-96] ; 0x60
> c04add14: e50bc064 str ip, [fp, #-100] ; 0x64
> c04add18: e12fff32 blx r2
>
> There are two additional instructions, and these will
> influence calibration of delay loop. I also worry that this
> new implementation will influence the accuracy of udelay. Does
Per my understanding, udelay is never ensured "accurate", it only ensures
that it at least delays as required.
If udelay is timer-based, then it could gives more accuracy.
Thanks,
Jisheng
> any one know this problem?
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list