[U-Boot] [PATCH 3/6] mpc83xx: Add link vs. load address calculation

Scott Wood scottwood at freescale.com
Tue Nov 23 21:17:12 CET 2010


On Tue, 23 Nov 2010 21:08:37 +0100
Joakim Tjernlund <joakim.tjernlund at transmode.se> wrote:

> Scott Wood <scottwood at freescale.com> wrote on 2010/11/23 20:32:32:
> > On Tue, 23 Nov 2010 19:48:48 +0100
> > Joakim Tjernlund <Joakim.Tjernlund at transmode.se> wrote:
> >
> > > diff --git a/include/common.h b/include/common.h
> > > index 8bca04f..f257ea4 100644
> > > --- a/include/common.h
> > > +++ b/include/common.h
> > > @@ -94,6 +94,9 @@ typedef volatile unsigned char   vu_char;
> > >  #ifdef CONFIG_MPC83xx
> > >  #include <mpc83xx.h>
> > >  #include <asm/immap_83xx.h>
> > > +const void * link_off(const void *);
> > > +#else
> > > +#define link_off(x) ((const void *)(x))
> > >  #endif
> >
> > What is special about 83xx?
> 
> Nothing, just it is the first one.
> >
> > If it's just that 83xx is the only one that this type of relocation has
> > been enabled on so far, define a symbol for that.
> 
> there is a
> #define LINK_OFF(x) ((__typeof__(x))link_off(x))
> already but I am guessing you mean something else.
> Perhaps a dummy link_off for other targets? Don't think
> that is any better.

I mean instead of this:

#ifdef CONFIG_MPC83xx
...unrelated stuff...
const void *link_off(const void *ptr);
#else
#define link_off(x) ((const void *)(x));
#endif

do something like this:

#ifdef CONFIG_RELOC_PIC
const void *link_off(const void *ptr);
#else
#define link_off(x) ((const void *)(x));
#endif

...with CONFIG_RELOC_PIC defined in a board config file and also
controlling whether this mechanism is enabled at all.  Boards could
enable it as they verify that they have the proper manual relocations
(or just leave it off, if they don't think it's worth it) -- including
non-83xx targets if they provide link_off() and do whatever else is
required.

-Scott



More information about the U-Boot mailing list