[LinuxBIOS] string comparison with macros?
Ben Hewson
ben at hewson-venieri.com
Wed May 30 22:08:16 CEST 2007
Corey Osgood wrote:
> meh, my n00b C skills are kicking in again, I know this can be done in
> C++, but gcc doesn't like it here. I'm trying to differentiate between
> i82801 models by using a config option, in Options.lb. The config option
> is "I82801_MODEL", and it would expect some short string (AA, AB, CA,
> DBM, etc). Then, in i82801_device_ids.h, there's something like this for
> each model:
>
> #if I82801_MODEL == "AA"
> #define I82801_PCI 0x2418 /* D30:F0, PCI Interface Hub */
> #define I82801_LPC 0x2410 /* D31:F0, LPC Interface Bridge */
> #define I82801_IDE 0x2411 /* D31:F1, IDE Controller */
> #define I82801_USB1 0x2412 /* D31:F2, USB Controller */
> #define I82801_SMBUS 0x2413 /* D31:F3, SMBUS Controller */
> #define I82801_AC97 0x2415 /* D31:F5, AC'97 Audio Controller */
> #define I82801_MC97 0x2416 /* D31:F6, AC'97 Modem Controller */
> #endif
>
> But, the build error:
>
> i82801_device_ids.h:3.19: warning: Replacing undefined macro: AA with 0
> i82801_device_ids.h:4.0:
> arithmetic type expexted
>
> Is there any way to get this to work, or am I stuck defining dummy
> values for AA, AB, etc? Is there something requred beyond the quotes to
> tell the compiler that its supposed to be a string? I've thought about
> using hex strings, ie 0xAA, but it wouldn''t work for the dbm or er.
> Same is true for the ich version, i82801er = ICH5R.
>
> Thanks!
> Corey
>
>
you could do something like
#define MODEL_AA 1
#define MODEL_AB 2
#define MODEL_CA 3
#define MODEL_DBM 4
#define I82801_MODEL MODEL_AA
#if I82801_MODEL == MODEL_AA
#endif
Probably other ways to do it though.
Ben
More information about the coreboot
mailing list