linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
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

  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).