The recent e1000 bug made the important of using symbolic macros for pci config access clear for me. So I started going over drivers and converting to symbolic constants instead of hard-coded ones. I did a large part until I run out of steam. Maybe some brave soul will take up converting the rest of them, or maybe I will: note that when converting bridges one should be careful to use bridge macros where appropriate.
Instead of testing a huge number of configurations, I compared binaries before and after conversion. Almost all of them generate exact same stripped binary before and after the change. The only object changed was eepro100, objdump showed that the change was because gcc for some reason decides to use a bit more stack for init function after comments are added there. This methodology was the reason that I added TODOs where I saw deviations from spec or other code ugliness, will have to be fixed separately. I also verified separately that eepro100 still works and survives light usage. This patcheset applies on top of e1000 bugfix I have posted previously. Michael S. Tsirkin (17): e1000: switch to symbolic names for pci registers ne2000: switch to symbolic names for pci registers rtl: switch to symbolic names for pci registers pcnet: switch to symbolic names for pci registers pci: add more status bits eepro100: symbolic names for pci registers piix: symbolic constants cmd646: symbolic names for pci registers vmware_vga: symbolic names for pci registers lsi: symbolic names for pci registers pci: add another devsel macro es1370: symbolic names for pci registers wdt_i6300esb: symbolic names for pci registers ac97: symbolic names for pci registers usb-uhci: symbolic names for pci registers usb-uhci: symbolic names for pci registers pci: remove unused macro hw/ac97.c | 57 ++++++++++++++++++++++++++++------------------------ hw/e1000.c | 11 ++++++--- hw/eepro100.c | 49 +++++++++++++++++++++++++++++--------------- hw/es1370.c | 29 ++++++++++++++------------- hw/ide/cmd646.c | 7 +++-- hw/ide/piix.c | 13 +++++++---- hw/lsi53c895a.c | 10 +++++--- hw/ne2000.c | 3 +- hw/pci.h | 5 +++- hw/pcnet.c | 26 +++++++++++++++-------- hw/rtl8139.c | 16 +++++++++----- hw/usb-ohci.c | 6 +++- hw/usb-uhci.c | 7 +++-- hw/vmware_vga.c | 20 ++++++++++-------- hw/wdt_i6300esb.c | 2 +- 15 files changed, 156 insertions(+), 105 deletions(-)