From: Alexander Holler <holler@ahsoftware.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] oamp3: bug in clock.c with gcc 4.5.1?
Date: Fri, 17 Dec 2010 21:33:08 +0100 [thread overview]
Message-ID: <4D0BC904.3050009@ahsoftware.de> (raw)
In-Reply-To: <20101217142055.35FE0D31260@gemini.denx.de>
Hello,
Am 17.12.2010 15:20, schrieb Wolfgang Denk:
>> I think I've nailed down, why an u-boot compiled with gcc 4.5.1 fails
>> here. Compiling arch/arm/cpu/armv7/omap3/clock.c with
>> ...
>> That means get_sys_clk_speed() will allways return S12M, at least that
>> is what I'm reading here. And I don't see why gcc should be allowed to
>> optimize that cdiff to a fixed value and therefor returning only S12M.
>
> Well, if you look at the code after preprocessing it looks like this:
>
> struct gptimer *gpt1_base = (struct gptimer *)0x48318000;
> ...
> cstart = (*(volatile unsigned int *)(&gpt1_base->tcrr));
> ...
> cend = (*(volatile unsigned int *)(&gpt1_base->tcrr));
> cdiff = cend - cstart;
>
>
> Eventually that simple definition of readl() is no longer good enough
> for recent compilers. There is probably a very good reason that Linux
> uses a "__iormb();" memory barrier in the definition of readl() and
> similar macros.
>
> We should probably update "arch/arm/include/asm/io.h" ...
I was unsure if that volatile is enough, therefor I've asked here.
Looking at the kernel would have been my next step, but I thought it
would be good to inform other ARM-users here early. In things belonging
to lowlevel ARM I'm no expert too.
Anyway a memory barrier seems to be a very good idea in readl, even when
ignoring the volatile should be considered as a bug of gcc.
Linux has a paper on that topic in
Documentation/volatile-considered-harmful.txt.
I will modify readl here, check what happens, and will post a patch if
that fixes the problem.
Regards,
Alexander
prev parent reply other threads:[~2010-12-17 20:33 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-17 14:01 [U-Boot] oamp3: bug in clock.c with gcc 4.5.1? Alexander Holler
2010-12-17 14:20 ` Wolfgang Denk
2010-12-17 20:33 ` Alexander Holler [this message]
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=4D0BC904.3050009@ahsoftware.de \
--to=holler@ahsoftware.de \
--cc=u-boot@lists.denx.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.