Mail Archives: djgpp/1996/01/26/03:19:40
On Thu, 25 Jan 1996, Eli Zaretskii wrote:
> > Eventually I figured out what was wrong, after making a couple of
> > really stupid mistakes (I tried a whole bunch of times, it stands to
> > reason that some of the attempts will be really messed up.. :) The
> > problem was that I was using -O3. Evidently, GCC took this to mean that
> > I didn't expect the values of any hardware ports to change ever, and it
> > was okay if it would cache them. Is this a problem with GCC in general,
> > or the port to the Intel chips? (Can't it be told that some stuff, like
> > hardware status, will change, without GCC changing it?)
> The PC motherboard chipset is built in a way that prevents the CPU from
> caching memory-mapped peripheral devices and I/O ports, so it cannot be a
> caching problem. It might be that GCC has optimized out your code where
> you read the ports. Usually, the way to tell it not to do this is to
> declare the variable `volatile'. You didn't tell enough details to help
> you more. For instance, what version of DJGPP are you using? did you use
> inport/outport library functions? can you post some code fragments where
> this happens?
>
The basic code was while((inportb(0x3DA)&8)!=1);
I also tried:
int temp = 0;
while(temp & 8 != 1) temp = inportb(0x3DA);
So, how come Csaba Beigl uses his own inport_b(port)? Does that
have anything to do with this?
Oh, I am using DJGPP v2.0b3, with (I think) beta 8 of CWSDPMI.
> One thing that you should know is that -O3 inlines functions which were
> declared inline. So if you, for example, are using inport/outport
> function, it might be a problem with the way they are written or with the
> way you use them (depends on your version of DJGPP and the actual code of
> your program).
>
I have a near-satisfactory workaround - I isolated that function
in a separate C file, which I can then compile on it's own. So all of my
code except for the waiting gets optimized, which is really fine.
/***********************************************************************
* Jesse Morris * cuth AT gryphon DOT ccs DOT brandeis DOT edu * jrmorris AT macalstr DOT edu *
**************** Cuthalion / Sliced Bread *************************
\*********************************/
- Raw text -