Message ID | 1421710147-5550-4-git-send-email-andreas.devel@googlemail.com |
---|---|
State | RFC, archived |
Delegated to: | Andreas Bießmann |
Headers | show |
Hi Andreas, On 19 January 2015 at 16:29, Andreas Bießmann <andreas.devel@googlemail.com> wrote: > This is required for architectures still need manual relocation like avr32, mk68 > and others. > > Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> > --- > > common/board_r.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/common/board_r.c b/common/board_r.c > index a301cc2..e712902 100644 > --- a/common/board_r.c > +++ b/common/board_r.c > @@ -294,6 +294,15 @@ static int initr_announce(void) > return 0; > } > > +#ifdef CONFIG_NEEDS_MANUAL_RELOC > +static int initr_manual_reloc_cmdtable(void) > +{ > + fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), > + ll_entry_count(cmd_tbl_t, cmd)); > + return 0; > +} > +#endif > + > #if !defined(CONFIG_SYS_NO_FLASH) > static int initr_flash(void) > { > @@ -718,6 +727,9 @@ init_fnc_t init_sequence_r[] = { > initr_serial, > initr_announce, > INIT_FUNC_WATCHDOG_RESET > +#ifdef CONFIG_NEEDS_MANUAL_RELOC > + initr_manual_reloc_cmdtable, > +#endif > #ifdef CONFIG_PPC > initr_trap, > #endif > -- Reviewed-by: Simon Glass <sjg@chromium.org> Why do you need manual reloc? Is this a toolchain bug? Regards, Simon
Hi Simon, On 20.01.15 00:34, Simon Glass wrote: > Hi Andreas, > > On 19 January 2015 at 16:29, Andreas Bießmann > <andreas.devel@googlemail.com> wrote: >> This is required for architectures still need manual relocation like avr32, mk68 >> and others. >> >> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> >> --- >> >> common/board_r.c | 12 ++++++++++++ >> 1 file changed, 12 insertions(+) >> >> diff --git a/common/board_r.c b/common/board_r.c >> index a301cc2..e712902 100644 >> --- a/common/board_r.c >> +++ b/common/board_r.c >> @@ -294,6 +294,15 @@ static int initr_announce(void) >> return 0; >> } >> >> +#ifdef CONFIG_NEEDS_MANUAL_RELOC >> +static int initr_manual_reloc_cmdtable(void) >> +{ >> + fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), >> + ll_entry_count(cmd_tbl_t, cmd)); >> + return 0; >> +} >> +#endif >> + >> #if !defined(CONFIG_SYS_NO_FLASH) >> static int initr_flash(void) >> { >> @@ -718,6 +727,9 @@ init_fnc_t init_sequence_r[] = { >> initr_serial, >> initr_announce, >> INIT_FUNC_WATCHDOG_RESET >> +#ifdef CONFIG_NEEDS_MANUAL_RELOC >> + initr_manual_reloc_cmdtable, >> +#endif >> #ifdef CONFIG_PPC >> initr_trap, >> #endif >> -- > > Reviewed-by: Simon Glass <sjg@chromium.org> > > Why do you need manual reloc? Is this a toolchain bug? Just not implemented yet for avr32. It is on my list, but avr32 has not my highest priority ;) As long as there are other arches which need this also I think it is some more time to shift ... the generic board deadline end of 2014 was a bit stricter, I don't want to kick avr32 out of u-boot now. So let's get generic board working for avr32 in the next release ;) Best regards Andreas Bießmann
Hi Andreas, On 19 January 2015 at 16:41, Andreas Bießmann <andreas.devel@googlemail.com> wrote: > Hi Simon, > > On 20.01.15 00:34, Simon Glass wrote: >> Hi Andreas, >> >> On 19 January 2015 at 16:29, Andreas Bießmann >> <andreas.devel@googlemail.com> wrote: >>> This is required for architectures still need manual relocation like avr32, mk68 >>> and others. >>> >>> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> >>> --- >>> >>> common/board_r.c | 12 ++++++++++++ >>> 1 file changed, 12 insertions(+) >>> >>> diff --git a/common/board_r.c b/common/board_r.c >>> index a301cc2..e712902 100644 >>> --- a/common/board_r.c >>> +++ b/common/board_r.c >>> @@ -294,6 +294,15 @@ static int initr_announce(void) >>> return 0; >>> } >>> >>> +#ifdef CONFIG_NEEDS_MANUAL_RELOC >>> +static int initr_manual_reloc_cmdtable(void) >>> +{ >>> + fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), >>> + ll_entry_count(cmd_tbl_t, cmd)); >>> + return 0; >>> +} >>> +#endif >>> + >>> #if !defined(CONFIG_SYS_NO_FLASH) >>> static int initr_flash(void) >>> { >>> @@ -718,6 +727,9 @@ init_fnc_t init_sequence_r[] = { >>> initr_serial, >>> initr_announce, >>> INIT_FUNC_WATCHDOG_RESET >>> +#ifdef CONFIG_NEEDS_MANUAL_RELOC >>> + initr_manual_reloc_cmdtable, >>> +#endif >>> #ifdef CONFIG_PPC >>> initr_trap, >>> #endif >>> -- >> >> Reviewed-by: Simon Glass <sjg@chromium.org> >> >> Why do you need manual reloc? Is this a toolchain bug? > > Just not implemented yet for avr32. It is on my list, but avr32 has not > my highest priority ;) > As long as there are other arches which need this also I think it is > some more time to shift ... the generic board deadline end of 2014 was a > bit stricter, I don't want to kick avr32 out of u-boot now. So let's get > generic board working for avr32 in the next release ;) OK - it would be good to tidy this up. Regards, Simon
Hi Simon, On Mon, 2015-01-19 at 16:34 -0700, Simon Glass wrote: > Hi Andreas, > Why do you need manual reloc? Is this a toolchain bug? From my experience the only way to escape manual relocation is to use PIE (Position Independent Executable), but this might not be supported in a toolchain for AVR (or it doesn't actually work good enough - this I understood from this message https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=574716) -Alexey
2015-01-20 0:34 GMT+01:00 Simon Glass <sjg@chromium.org>: > Hi Andreas, > > On 19 January 2015 at 16:29, Andreas Bießmann > <andreas.devel@googlemail.com> wrote: > > This is required for architectures still need manual relocation like > avr32, mk68 > > and others. > > > > Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> > > --- > > > > common/board_r.c | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/common/board_r.c b/common/board_r.c > > index a301cc2..e712902 100644 > > --- a/common/board_r.c > > +++ b/common/board_r.c > > @@ -294,6 +294,15 @@ static int initr_announce(void) > > return 0; > > } > > > > +#ifdef CONFIG_NEEDS_MANUAL_RELOC > > +static int initr_manual_reloc_cmdtable(void) > > +{ > > + fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), > > + ll_entry_count(cmd_tbl_t, cmd)); > > + return 0; > > +} > > +#endif > > + > > #if !defined(CONFIG_SYS_NO_FLASH) > > static int initr_flash(void) > > { > > @@ -718,6 +727,9 @@ init_fnc_t init_sequence_r[] = { > > initr_serial, > > initr_announce, > > INIT_FUNC_WATCHDOG_RESET > > +#ifdef CONFIG_NEEDS_MANUAL_RELOC > > + initr_manual_reloc_cmdtable, > > +#endif > > #ifdef CONFIG_PPC > > initr_trap, > > #endif > > -- > > Reviewed-by: Simon Glass <sjg@chromium.org> > Tested-by: Michal Simek <michal.simek@xilinx.com> I need this patch for microblaze generic-board support. Thanks, Michal
diff --git a/common/board_r.c b/common/board_r.c index a301cc2..e712902 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -294,6 +294,15 @@ static int initr_announce(void) return 0; } +#ifdef CONFIG_NEEDS_MANUAL_RELOC +static int initr_manual_reloc_cmdtable(void) +{ + fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), + ll_entry_count(cmd_tbl_t, cmd)); + return 0; +} +#endif + #if !defined(CONFIG_SYS_NO_FLASH) static int initr_flash(void) { @@ -718,6 +727,9 @@ init_fnc_t init_sequence_r[] = { initr_serial, initr_announce, INIT_FUNC_WATCHDOG_RESET +#ifdef CONFIG_NEEDS_MANUAL_RELOC + initr_manual_reloc_cmdtable, +#endif #ifdef CONFIG_PPC initr_trap, #endif
This is required for architectures still need manual relocation like avr32, mk68 and others. Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> --- common/board_r.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)