Re: [patch 1/6] x86: apicdef unification: some constants made unsigned

Robert Richter
2007-11-12T15:59:50Z

On 12.11.07 12:31:44, Maciej W. Rozycki wrote:
> > -#define GET_APIC_VERSION(x) ((x)&0xFF)
> > -#define GET_APIC_MAXLVT(x) (((x)>>16)&0xFF)
> > -#define APIC_INTEGRATED(x) ((x)&0xF0)
> > +#define GET_APIC_VERSION(x) ((x)&0xFFu)
> > +#define GET_APIC_MAXLVT(x) (((x)>>16)&0xFFu)
> > +#define APIC_INTEGRATED(x) ((x)&0xF0u)
>
> No point in doing this -- hexadecimal literals are unsigned by
> definition. File a compiler bug if you see them interpreted otherwise.

My understanding from the c90/c99 standards is that hexadecimal
constants may result in signed or unsigned types. Contrarily, decimal
constants always result in integer types, if no signed suffix is
given.

However, I made this change only to unify 32 and 64 bit implementation
and took already existing code from the 64 bit version.

-Robert