From mboxrd@z Thu Jan 1 00:00:00 1970 From: Troy Kisky Date: Tue, 07 Feb 2012 19:46:55 -0700 Subject: [U-Boot] [PATCH v2 1/2] RFC: create u-boot-common.lds In-Reply-To: References: <1328660414-7551-1-git-send-email-troy.kisky@boundarydevices.com> <4F31C68D.5020400@boundarydevices.com> <4F31D637.2070008@boundarydevices.com> Message-ID: <4F31E21F.6060009@boundarydevices.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 2/7/2012 7:24 PM, Graeme Russ wrote: > Hi Troy, > > On Wed, Feb 8, 2012 at 12:56 PM, Troy Kisky > wrote: >> On 2/7/2012 6:21 PM, Graeme Russ wrote: >>> Hi Tony, >>> >>> On Wed, Feb 8, 2012 at 11:49 AM, Troy Kisky >>> 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 >> >> at the start of each lds file, >> >> and >> >> #include >> >> >> 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," 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 #include #include #include @@ -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