Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Bill Fink <hidden>
Date: 2007-08-16 03:46:30
Also in:
linux-arch, lkml
From: Bill Fink <hidden>
Date: 2007-08-16 03:46:30
Also in:
linux-arch, lkml
On Wed, 15 Aug 2007, Satyam Sharma wrote:
(C)
$ cat tp3.c
int a;
void func(void)
{
*(volatile int *)&a = 10;
*(volatile int *)&a = 20;
}
$ gcc -Os -S tp3.c
$ cat tp3.s
...
movl $10, a
movl $20, a
...I'm curious about one minor tangential point. Why, instead of: b = *(volatile int *)&a; why can't this just be expressed as: b = (volatile int)a; Isn't it the contents of a that's volatile, i.e. it's value can change invisibly to the compiler, and that's why you want to force a read from memory? Why do you need the "*(volatile int *)&" construct? -Bill