Author: hailfinger Date: 2008-08-28 00:29:38 +0200 (Thu, 28 Aug 2008) New Revision: 827
Modified: coreboot-v3/include/device/device.h coreboot-v3/include/device/pci_ops.h coreboot-v3/lib/stage2.c Log: gcc -fwhole-program needs to mark any function which is used outside the current compilation unit to be marked as externally_visible. We have EXPORT_SYMBOL exactly for that purpose.
This applies to the following symbols used by x86emu and/or vm86: - pci_read_config8 - pci_read_config16 - pci_read_config32 - pci_write_config8 - pci_write_config16 - pci_write_config32 - dev_find_pci_device - dev_find_slot It also applies to the main entry point of stage2: - stage2
With this patch, I can use -fwhole-program for stage2 without any problems. For standard compilation, this is a noop.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net Acked-by: Ronald G. Minnich rminnich@gmail.com
Modified: coreboot-v3/include/device/device.h =================================================================== --- coreboot-v3/include/device/device.h 2008-08-27 05:30:50 UTC (rev 826) +++ coreboot-v3/include/device/device.h 2008-08-27 22:29:38 UTC (rev 827) @@ -24,6 +24,7 @@ #include <types.h> #include <device/resource.h> #include <device/path.h> +#include <shared.h>
/** * Create a 32-bit value from four characters. This is better @@ -268,8 +269,10 @@ struct device * alloc_find_dev(struct bus *parent, struct device_path *path, struct device_id *id); struct device * dev_find_device (struct device_id *devid, struct device * from); struct device *dev_find_pci_device(u16 vendor, u16 device, struct device *from); +EXPORT_SYMBOL(dev_find_pci_device); struct device * dev_find_class (unsigned int class, struct device * from); struct device * dev_find_slot (unsigned int bus, unsigned int devfn); +EXPORT_SYMBOL(dev_find_slot); struct device * dev_find_slot_on_smbus (unsigned int bus, unsigned int addr); void default_device_constructor(struct device *dev, struct device_operations *constructor);
Modified: coreboot-v3/include/device/pci_ops.h =================================================================== --- coreboot-v3/include/device/pci_ops.h 2008-08-27 05:30:50 UTC (rev 826) +++ coreboot-v3/include/device/pci_ops.h 2008-08-27 22:29:38 UTC (rev 827) @@ -24,11 +24,17 @@ #include <shared.h>
u8 pci_read_config8(struct device * dev, unsigned where); +EXPORT_SYMBOL(pci_read_config8); u16 pci_read_config16(struct device * dev, unsigned where); +EXPORT_SYMBOL(pci_read_config16); u32 pci_read_config32(struct device * dev, unsigned where); +EXPORT_SYMBOL(pci_read_config32); void pci_write_config8(struct device * dev, unsigned where, u8 val); +EXPORT_SYMBOL(pci_write_config8); void pci_write_config16(struct device * dev, unsigned where, u16 val); +EXPORT_SYMBOL(pci_write_config16); void pci_write_config32(struct device * dev, unsigned where, u32 val); +EXPORT_SYMBOL(pci_write_config32);
u8 pci_conf1_read_config8(u32 bdf, int where); EXPORT_SYMBOL(pci_conf1_read_config8);
Modified: coreboot-v3/lib/stage2.c =================================================================== --- coreboot-v3/lib/stage2.c 2008-08-27 05:30:50 UTC (rev 826) +++ coreboot-v3/lib/stage2.c 2008-08-27 22:29:38 UTC (rev 827) @@ -93,3 +93,4 @@
return 0; } +EXPORT_SYMBOL(stage2);