From: moreau francis <francis_moreau2000@yahoo.fr>
To: Andy Isaacson <adi@hexapodia.org>
Cc: "linux-os \(Dick Johnson\)" <linux-os@analogic.com>,
linux-kernel@vger.kernel.org, alan@lxorguk.ukuu.org.uk
Subject: Re: question on memory barrier
Date: Thu, 25 Aug 2005 11:14:03 +0200 (CEST) [thread overview]
Message-ID: <20050825091403.6380.qmail@web25805.mail.ukl.yahoo.com> (raw)
In-Reply-To: <20050824194836.GA26526@hexapodia.org>
--- Andy Isaacson <adi@hexapodia.org> a écrit :
>
> The first register write will be completed before the second register
> write because you use writel, which is defined to have the semantics you
> want. (It uses a platform-specific method to guarantee this, possibly
> "volatile" or "asm("eieio")" or whatever method your platform requires.)
I'm compiling Linux kernel for a MIPS32 cpu. On my platform, writel seems
expand to:
static inline writel(u32 val, volatile void __iomem *mem)
{
volatile u32 *__mem;
u32 __val;
__mem = (void *)((unsigned long)(mem));
__val = val;
*__mem = __val;
}
I don't see the magic in it since "volatile" keyword do not handle memory
ordering constraints...Linus wrote on volatile keyword, see
http://www.ussg.iu.edu/hypermail/linux/kernel/0401.0/1387.html
>
> The sequence points, by themselves, do not make any requirements on the
> externally visible behavior of the program. Nor does the fact that
> there's an inline function involved. It's just the writel() that
> contains the magic to force in-order execution.
>
> You might benefit by running your source code through gcc -E and seeing
> what the writel() expands to. (I do something like "rm drivers/mydev.o;
> make V=1" and then copy-n-paste the gcc line, replacing the "-c -o mydev.o"
> options with -E.)
make drivers/mydev.i should do the job but preprocessor doesn't expand inline
functions. So I won't be able to see the expanded writel function.
>
> The sequence point argument is obviously wrong, BTW - if it were the
> case that a mere sequence point required the compiler to have completed
> all externally-visible side effects, then almost every optimization that
> gcc does with -O2 would be impossible. CSE, loop splitting, etc.
>
> -andy
>
___________________________________________________________________________
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger
Téléchargez cette version sur http://fr.messenger.yahoo.com
next prev parent reply other threads:[~2005-08-25 9:14 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-24 12:43 moreau francis
2005-08-24 13:04 ` linux-os (Dick Johnson)
2005-08-24 17:31 ` moreau francis
2005-08-24 18:22 ` linux-os (Dick Johnson)
2005-08-24 19:32 ` Oliver Neukum
2005-08-24 19:47 ` linux-os (Dick Johnson)
2005-08-24 19:55 ` Oliver Neukum
2005-08-24 19:48 ` Andy Isaacson
2005-08-24 19:53 ` Jesse Barnes
2005-08-24 21:45 ` Alan Cox
2005-08-24 21:22 ` Jesse Barnes
2005-08-24 20:03 ` linux-os (Dick Johnson)
2005-08-24 20:21 ` Oliver Neukum
2005-08-25 2:25 ` David Schwartz
2005-08-25 8:49 ` Denis Vlasenko
2005-08-25 9:14 ` moreau francis [this message]
2005-08-25 10:07 ` Alan Cox
2005-08-25 14:54 ` Andy Isaacson
2005-08-26 7:21 ` moreau francis
2005-08-26 10:37 ` Maciej W. Rozycki
2005-08-25 10:32 ` Maciej W. Rozycki
2005-08-24 21:57 ` Alan Cox
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=20050825091403.6380.qmail@web25805.mail.ukl.yahoo.com \
--to=francis_moreau2000@yahoo.fr \
--cc=adi@hexapodia.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-os@analogic.com \
/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
all inboxes | Powered by JetHome®