On 2/7/2012 7:24 PM, Graeme Russ wrote:
Hi Troy,
On Wed, Feb 8, 2012 at 12:56 PM, Troy Kisky
<troy.ki...@boundarydevices.com> wrote:
On 2/7/2012 6:21 PM, Graeme Russ wrote:
Hi Tony,
On Wed, Feb 8, 2012 at 11:49 AM, Troy Kisky
<troy.ki...@boundarydevices.com> wrote:
That works fine for existing sections.. i.e
U_BOOT_LDS_SECTION(u_boot_cmd, 4)
but what about the next patch in the series?
Do you want me to change all lds files again?
Ah, and therein lies the rub...
By adding 'phy_entry' into the common lds file, you have inflicted it on
everyone, and forced it to be after u_boot_cmd. What if I don't need the
phy_entry section (no network support) or don't want it hard-placed after
u_boot_cmd?
Inflicted? I doubt that I added any bytes at all to boards that don't use
phylib.
You are correct, it will not add anything, but we tend to have an aversion
to dead code :)
I hope you have a better idea for how to handle patch 2/2.
Add U_BOOT_LDS_SECTION(phy_entry, 4) to all the linker scripts
The entire reason for me for patch 1/2 was to support 2/2.
What about #include<u-boot-comon.lds.h>
at the start of each lds file,
and
#include<u-boot-common.lds>
in the middle?
If people really want to control the relative ordering of u_boot_cmd, and
phy_entry,
they are not forced to include u-boot-common.lds here.
I can even throw in an unnecessary ifdef in u-boot-common.lds
#ifdef CONFIG_PHYLIB
U_BOOT_LDS_SECTION(phy_entry, 4)
#endif
This will make it easier for developers to add a table without having
to change 192 lds files. If a few boards opt not to use
"#include<u-boot-common.lds>," that still means far fewer files
to change and less risk of typos.
That looks like a good compromise to me
As I mentioned, the U_BOOT_LDS_SECTION macro will be very useful for me
later on
The next biggie is where to define all the externs exported from the
linker script as a result of using the U_BOOT_LDS_SECTION macro. I'm half
tempted to think we could collect all the usages of U_BOOT_LDS_SECTION
in a header (for the common case, that is essentially u-boot-common.lds)
and by setting a #define you switch between full macro expansion (for
the linker) and 'extern generation' for including in C files. That way,
when you add a new section, everything happen automagically :)
Regards,
Graeme
So do you think this is wrong in patch 2/2?
diff --git a/include/phy.h b/include/phy.h
index bc522d5..f0eb502 100644
--- a/include/phy.h
+++ b/include/phy.h
@@ -23,6 +23,7 @@
#ifndef _PHY_H
#define _PHY_H
+#include <linux/compiler.h>
#include <linux/list.h>
#include <linux/mii.h>
#include <linux/ethtool.h>
@@ -231,4 +232,7 @@ int phy_vitesse_init(void);
/* PHY UIDs for various PHYs that are referenced in external code */
#define PHY_UID_TN2020 0x00a19410
+#define __phy_entry __attribute__((section(".phy_entry"))) __used
__aligned(4)
+extern struct phy_driver __phy_entry_start, __phy_entry_end;
+
#endif
I don't see how this can be automatically generated.
Troy
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot