From: festevam@gmail.com (Fabio Estevam)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC] ARM: lib: delay-loop: Add align directive to fix BogoMIPS calculation
Date: Fri, 29 Nov 2013 09:02:05 -0200 [thread overview]
Message-ID: <CAOMZO5AyjD4f2o2c-QbK13Pb5cZCWEV4f5dc38MspDBY6_OjDg@mail.gmail.com> (raw)
In-Reply-To: <1385121212-30182-1-git-send-email-festevam@gmail.com>
Hi Russell,
On Fri, Nov 22, 2013 at 9:53 AM, Fabio Estevam <festevam@gmail.com> wrote:
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> Currently mx53 (CortexA8) running at 1GHz reports:
> Calibrating delay loop... 663.55 BogoMIPS (lpj=3317760)
>
> Tom Evans verified that alignments of 0x0 and 0x8 run the two instructions of
> __loop_delay in one clock cycle (1 clock/loop), while alignments of 0x4 and
> 0xc take 3 clocks to run the loop twice. (1.5 clock/loop)
>
> The original object code looks like this:
>
> 00000010 <__loop_const_udelay>:
> 10: e3e01000 mvn r1, #0
> 14: e51f201c ldr r2, [pc, #-28] ; 0 <__loop_udelay-0x8>
> 18: e5922000 ldr r2, [r2]
> 1c: e0800921 add r0, r0, r1, lsr #18
> 20: e1a00720 lsr r0, r0, #14
> 24: e0822b21 add r2, r2, r1, lsr #22
> 28: e1a02522 lsr r2, r2, #10
> 2c: e0000092 mul r0, r2, r0
> 30: e0800d21 add r0, r0, r1, lsr #26
> 34: e1b00320 lsrs r0, r0, #6
> 38: 01a0f00e moveq pc, lr
>
> 0000003c <__loop_delay>:
> 3c: e2500001 subs r0, r0, #1
> 40: 8afffffe bhi 3c <__loop_delay>
> 44: e1a0f00e mov pc, lr
>
> After adding the 'align 3' directive to __loop_delay (align to 8 bytes):
>
> 00000010 <__loop_const_udelay>:
> 10: e3e01000 mvn r1, #0
> 14: e51f201c ldr r2, [pc, #-28] ; 0 <__loop_udelay-0x8>
> 18: e5922000 ldr r2, [r2]
> 1c: e0800921 add r0, r0, r1, lsr #18
> 20: e1a00720 lsr r0, r0, #14
> 24: e0822b21 add r2, r2, r1, lsr #22
> 28: e1a02522 lsr r2, r2, #10
> 2c: e0000092 mul r0, r2, r0
> 30: e0800d21 add r0, r0, r1, lsr #26
> 34: e1b00320 lsrs r0, r0, #6
> 38: 01a0f00e moveq pc, lr
> 3c: e320f000 nop {0}
>
> 00000040 <__loop_delay>:
> 40: e2500001 subs r0, r0, #1
> 44: 8afffffe bhi 40 <__loop_delay>
> 48: e1a0f00e mov pc, lr
> 4c: e320f000 nop {0}
>
> , which now reports:
> Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
>
> Some more test results:
>
> On mx31 (ARM1136) running at 532 MHz, before the patch:
> Calibrating delay loop... 351.43 BogoMIPS (lpj=1757184)
>
> On mx31 (ARM1136) running at 532 MHz after the patch:
> Calibrating delay loop... 528.79 BogoMIPS (lpj=2643968)
>
> Also tested on mx6 (CortexA9) and on mx27 (ARM926), which shows the same
> BogoMIPS value before and after this patch.
>
> Reported-by: Tom Evans <tom_usenet@optusnet.com.au>
> Suggested-by: Tom Evans <tom_usenet@optusnet.com.au>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Any comments on this, please?
Regards,
Fabio Estevam
next prev parent reply other threads:[~2013-11-29 11:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-22 11:53 [RFC] ARM: lib: delay-loop: Add align directive to fix BogoMIPS calculation Fabio Estevam
2013-11-29 11:02 ` Fabio Estevam [this message]
2013-11-30 11:49 ` Russell King - ARM Linux
2013-11-30 14:31 ` Fabio Estevam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAOMZO5AyjD4f2o2c-QbK13Pb5cZCWEV4f5dc38MspDBY6_OjDg@mail.gmail.com \
--to=festevam@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).