can/should we use gcc 3.1 to compile kernels
Kevin B. Hendricks
kevin.hendricks at sympatico.ca
Sat Jun 8 06:44:08 EST 2002
Hi,
#define CNTRL_REG(INFO,REG) (&(((INFO)->control_regs-> ## REG).r))
Invoked via something like:
out_le32(CNTRL_REG(p,start_addr),
par->yoffset * par->pitch + (par->xoffset << par->cmode));
But control_regs looks like:
struct control_regs {
...
struct preg start_addr; /* start address: 5 lsbs zero */
...
}
and preg looks like:
struct preg { /* padded register */
unsigned r;
char pad[12];
};
struct fb_info_control {
...
struct control_regs *control_regs;
...
}
So assuming p is a pointer to a fb_info_control_structure
then CNTL_REG(p,start_addr) must turn out to be:
(&((p->control_regs-> start_addr).r))
Is that correct?
It seems to need parentheses to me to help see what goes with what...
It is funny to have a stucture given the exact same name as a field of
another structure, perhaps that is what is confusing gcc 3.1? (and ME!)
Thanks,
Kevin
On June 7, 2002 04:19, Tom Rini wrote:
> On Fri, Jun 07, 2002 at 03:44:56PM -0400, Kevin B. Hendricks wrote:
> > Not too bad warnings-wize excpet for the controlfb.c where it
> > constanly gave a funny warning about "pasting ->".
>
> Sounds right. I think there was a few other things too..
>
> > It did this for every occurence of the macro CNTRL_REG which I must
> > admit has two ## which I think gcc was misinterpreting somehow.
>
> Well, isn't:
> #define x(foo) a_## foo ##_b
> A semi-common thing, like we do in indirect_pci.c ? Or was it something
> different?
>
> > Other than that just the occaissioanal wanring about unused variables
> > and things like that.
>
> Lots of the USB stuff uses __FUNCTION__ which gcc-3.1 isn't happy
> about.
>
> > I should have saved the build.log
>
> S'alright.
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list