Messages in this thread |  | | Date | Sat, 2 Dec 2000 05:20:29 -0600 (CST) | From | Jeff Garzik <> | Subject | Re: why volatile on vgacon.c? |
| |
On Wed, 29 Nov 2000, Andries Brouwer wrote: > On Wed, Nov 29, 2000 at 05:24:15PM +0100, Santiago Garcia Mantinan wrote: > > That was on 2.2 series, but since I moved it to 2.4 series I don't have that > > cga card found anymore. I have looked on the kernel code and followed it to > > the __init function in vgacon.c, more concretely this piece of code...
> > scr_writew(0xAA55, p); > > scr_writew(0x55AA, p + 1); > > if (scr_readw(p) != 0xAA55 || scr_readw(p + 1) != 0x55AA) {
> > Well, the thing is that this code and the code in this function is almost > > the same in 2.4 as in 2.2, however reading returns the written values on 2.2 > > and different ones (0xffff) on 2.4
> Probably without the volatile the compiler optimizes the entire > if statement away because it very well knows that it just wrote > these values there. With the volatile it has to check, and finds > that there is nothing there.
hmmm. That's why barriers exist, right?
Jeff
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |