The effect of pointer aliasing on writes is that any data on CPU registers that has been resolved from (non-const and non-volatile) memory objects has to be discarded and resolved. In other words, the compiler assumes that a pointer that does not have an absolute value at build-time, and is of type 'void *' or 'char *', may write over any memory object. Using a unique datatype for MMIO writes makes the pointer to _not_ qualify for pointer aliasing with any other objects in memory. This avoid constantly resolving the PCI MMCONF address, which is a derived value from a 'struct device *'. Change-Id: Id112aa5e729ffd8015bb806786bdee38783b7ea9 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/31752 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
56 lines
1.5 KiB
Makefile
56 lines
1.5 KiB
Makefile
ramstage-y += device.c
|
|
ramstage-y += root_device.c
|
|
ramstage-y += cpu_device.c
|
|
ramstage-y += device_util.c
|
|
ramstage-$(CONFIG_AZALIA_PLUGIN_SUPPORT) += azalia_device.c
|
|
ramstage-$(CONFIG_ARCH_RAMSTAGE_X86_32) += pnp_device.c
|
|
ramstage-$(CONFIG_ARCH_RAMSTAGE_X86_64) += pnp_device.c
|
|
ramstage-y += smbus_ops.c
|
|
|
|
ifeq ($(CONFIG_AZALIA_PLUGIN_SUPPORT),y)
|
|
ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
|
|
endif
|
|
|
|
bootblock-y += device_const.c
|
|
postcar-y += device_const.c
|
|
smm-y += device_const.c
|
|
verstage-y += device_const.c
|
|
romstage-y += device_const.c
|
|
ramstage-y += device_const.c
|
|
|
|
ifeq ($(CONFIG_PCI),y)
|
|
bootblock-y += pci_early.c
|
|
verstage-y += pci_early.c
|
|
romstage-y += pci_early.c
|
|
postcar-y += pci_early.c
|
|
|
|
ramstage-y += pci_class.c
|
|
ramstage-y += pci_device.c
|
|
ramstage-y += pci_rom.c
|
|
|
|
bootblock-y += pci_ops.c
|
|
verstage-y += pci_ops.c
|
|
romstage-y += pci_ops.c
|
|
postcar-y += pci_ops.c
|
|
ramstage-y += pci_ops.c
|
|
smm-y += pci_ops.c
|
|
|
|
ramstage-$(CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT) += hypertransport.c
|
|
ramstage-$(CONFIG_PCIX_PLUGIN_SUPPORT) += pcix_device.c
|
|
ramstage-$(CONFIG_PCIEXP_PLUGIN_SUPPORT) += pciexp_device.c
|
|
ramstage-$(CONFIG_CARDBUS_PLUGIN_SUPPORT) += cardbus_device.c
|
|
endif
|
|
|
|
subdirs-y += oprom dram
|
|
|
|
bootblock-$(CONFIG_SOFTWARE_I2C) += software_i2c.c
|
|
verstage-$(CONFIG_SOFTWARE_I2C) += software_i2c.c
|
|
romstage-$(CONFIG_SOFTWARE_I2C) += software_i2c.c
|
|
ramstage-$(CONFIG_SOFTWARE_I2C) += software_i2c.c
|
|
|
|
bootblock-y += i2c.c
|
|
verstage-y += i2c.c
|
|
romstage-y += i2c.c
|
|
ramstage-y += i2c.c
|
|
ramstage-y += i2c_bus.c
|