Message ID | 1460413859-30790-1-git-send-email-angelo@sysam.it |
---|---|
State | Accepted |
Commit | 55ac54c4a0acbdc786b16dc1b12a661f9dbdb305 |
Delegated to: | Tom Rini |
Headers | show |
On 04/12/2016 12:30 AM, Angelo Dureghello wrote: > fix 19/48 broken board compilations, due to a now too smal 16-bit > relative jump Won't it make sense to tweak the linker script to put those functions closer together instead ? > Signed-off-by: Angelo Dureghello <angelo@sysam.it> > --- > arch/m68k/cpu/mcf523x/start.S | 8 ++++++-- > arch/m68k/cpu/mcf52x2/start.S | 8 ++++++-- > arch/m68k/cpu/mcf532x/start.S | 8 ++++++-- > arch/m68k/cpu/mcf5445x/start.S | 8 ++++++-- > 4 files changed, 24 insertions(+), 8 deletions(-) > > diff --git a/arch/m68k/cpu/mcf523x/start.S b/arch/m68k/cpu/mcf523x/start.S > index 8a23e72..1702f98 100644 > --- a/arch/m68k/cpu/mcf523x/start.S > +++ b/arch/m68k/cpu/mcf523x/start.S > @@ -141,8 +141,12 @@ _start: > > move.l #__got_start, %a5 /* put relocation table address to a5 */ > > - bsr cpu_init_f /* run low-level CPU init code (from flash) */ > - bsr board_init_f /* run low-level board init code (from flash) */ > + /* run low-level CPU init code (from flash) */ > + move.l #cpu_init_f, %a1 > + jsr (%a1) > + /* run low-level board init code (from flash) */ > + move.l #board_init_f, %a1 > + jsr (%a1) > > /* board_init_f() does not return */ > > diff --git a/arch/m68k/cpu/mcf52x2/start.S b/arch/m68k/cpu/mcf52x2/start.S > index 8a59496..4af691f 100644 > --- a/arch/m68k/cpu/mcf52x2/start.S > +++ b/arch/m68k/cpu/mcf52x2/start.S > @@ -198,8 +198,12 @@ _after_flashbar_copy: > > move.l #__got_start, %a5 /* put relocation table address to a5 */ > > - bsr cpu_init_f /* run low-level CPU init code (from flash) */ > - bsr board_init_f /* run low-level board init code (from flash) */ > + /* run low-level CPU init code (from flash) */ > + move.l #cpu_init_f, %a1 > + jsr (%a1) > + /* run low-level board init code (from flash) */ > + move.l #board_init_f, %a1 > + jsr (%a1) > > /* board_init_f() does not return */ > > diff --git a/arch/m68k/cpu/mcf532x/start.S b/arch/m68k/cpu/mcf532x/start.S > index 3b9ede0..131ad6e 100644 > --- a/arch/m68k/cpu/mcf532x/start.S > +++ b/arch/m68k/cpu/mcf532x/start.S > @@ -155,8 +155,12 @@ _start: > > move.l #__got_start, %a5 /* put relocation table address to a5 */ > > - bsr cpu_init_f /* run low-level CPU init code (from flash) */ > - bsr board_init_f /* run low-level board init code (from flash) */ > + /* run low-level CPU init code (from flash) */ > + move.l #cpu_init_f, %a1 > + jsr (%a1) > + /* run low-level board init code (from flash) */ > + move.l #board_init_f, %a1 > + jsr (%a1) > > /* board_init_f() does not return */ > > diff --git a/arch/m68k/cpu/mcf5445x/start.S b/arch/m68k/cpu/mcf5445x/start.S > index ae261b1..f50f147 100644 > --- a/arch/m68k/cpu/mcf5445x/start.S > +++ b/arch/m68k/cpu/mcf5445x/start.S > @@ -664,8 +664,12 @@ _start: > > move.l #__got_start, %a5 /* put relocation table address to a5 */ > > - bsr cpu_init_f /* run low-level CPU init code (from flash) */ > - bsr board_init_f /* run low-level board init code (from flash) */ > + /* run low-level CPU init code (from flash) */ > + move.l #cpu_init_f, %a1 > + jsr (%a1) > + /* run low-level board init code (from flash) */ > + move.l #board_init_f, %a1 > + jsr (%a1) > > /* board_init_f() does not return */ > >
Hi, On 12/04/2016 00:52, Marek Vasut wrote: > On 04/12/2016 12:30 AM, Angelo Dureghello wrote: >> fix 19/48 broken board compilations, due to a now too smal 16-bit >> relative jump > > Won't it make sense to tweak the linker script to put those functions > closer together instead ? > Sure, good idea. Will follow v.2. Best regards Angelo Dureghello
Hi, On 12/04/2016 00:52, Marek Vasut wrote: > On 04/12/2016 12:30 AM, Angelo Dureghello wrote: >> fix 19/48 broken board compilations, due to a now too smal 16-bit >> relative jump > > Won't it make sense to tweak the linker script to put those functions > closer together instead ? > tried hardly with linker script, keeping the functions near, but "relocation truncated to fit: R_68K_PC16 .." error moves to other jumps now. The fix in this way seems a bit too complex so i suggest to maintain the jumps as in the patch below. Best regards, Angelo Dureghello >> Signed-off-by: Angelo Dureghello <angelo@sysam.it> >> --- >> arch/m68k/cpu/mcf523x/start.S | 8 ++++++-- >> arch/m68k/cpu/mcf52x2/start.S | 8 ++++++-- >> arch/m68k/cpu/mcf532x/start.S | 8 ++++++-- >> arch/m68k/cpu/mcf5445x/start.S | 8 ++++++-- >> 4 files changed, 24 insertions(+), 8 deletions(-) >> >> diff --git a/arch/m68k/cpu/mcf523x/start.S b/arch/m68k/cpu/mcf523x/start.S >> index 8a23e72..1702f98 100644 >> --- a/arch/m68k/cpu/mcf523x/start.S >> +++ b/arch/m68k/cpu/mcf523x/start.S >> @@ -141,8 +141,12 @@ _start: >> >> move.l #__got_start, %a5 /* put relocation table address to a5 */ >> >> - bsr cpu_init_f /* run low-level CPU init code (from flash) */ >> - bsr board_init_f /* run low-level board init code (from flash) */ >> + /* run low-level CPU init code (from flash) */ >> + move.l #cpu_init_f, %a1 >> + jsr (%a1) >> + /* run low-level board init code (from flash) */ >> + move.l #board_init_f, %a1 >> + jsr (%a1) >> >> /* board_init_f() does not return */ >> >> diff --git a/arch/m68k/cpu/mcf52x2/start.S b/arch/m68k/cpu/mcf52x2/start.S >> index 8a59496..4af691f 100644 >> --- a/arch/m68k/cpu/mcf52x2/start.S >> +++ b/arch/m68k/cpu/mcf52x2/start.S >> @@ -198,8 +198,12 @@ _after_flashbar_copy: >> >> move.l #__got_start, %a5 /* put relocation table address to a5 */ >> >> - bsr cpu_init_f /* run low-level CPU init code (from flash) */ >> - bsr board_init_f /* run low-level board init code (from flash) */ >> + /* run low-level CPU init code (from flash) */ >> + move.l #cpu_init_f, %a1 >> + jsr (%a1) >> + /* run low-level board init code (from flash) */ >> + move.l #board_init_f, %a1 >> + jsr (%a1) >> >> /* board_init_f() does not return */ >> >> diff --git a/arch/m68k/cpu/mcf532x/start.S b/arch/m68k/cpu/mcf532x/start.S >> index 3b9ede0..131ad6e 100644 >> --- a/arch/m68k/cpu/mcf532x/start.S >> +++ b/arch/m68k/cpu/mcf532x/start.S >> @@ -155,8 +155,12 @@ _start: >> >> move.l #__got_start, %a5 /* put relocation table address to a5 */ >> >> - bsr cpu_init_f /* run low-level CPU init code (from flash) */ >> - bsr board_init_f /* run low-level board init code (from flash) */ >> + /* run low-level CPU init code (from flash) */ >> + move.l #cpu_init_f, %a1 >> + jsr (%a1) >> + /* run low-level board init code (from flash) */ >> + move.l #board_init_f, %a1 >> + jsr (%a1) >> >> /* board_init_f() does not return */ >> >> diff --git a/arch/m68k/cpu/mcf5445x/start.S b/arch/m68k/cpu/mcf5445x/start.S >> index ae261b1..f50f147 100644 >> --- a/arch/m68k/cpu/mcf5445x/start.S >> +++ b/arch/m68k/cpu/mcf5445x/start.S >> @@ -664,8 +664,12 @@ _start: >> >> move.l #__got_start, %a5 /* put relocation table address to a5 */ >> >> - bsr cpu_init_f /* run low-level CPU init code (from flash) */ >> - bsr board_init_f /* run low-level board init code (from flash) */ >> + /* run low-level CPU init code (from flash) */ >> + move.l #cpu_init_f, %a1 >> + jsr (%a1) >> + /* run low-level board init code (from flash) */ >> + move.l #board_init_f, %a1 >> + jsr (%a1) >> >> /* board_init_f() does not return */ >> >> > >
On 04/12/2016 11:41 PM, Angelo Dureghello wrote: > Hi, > > > On 12/04/2016 00:52, Marek Vasut wrote: >> On 04/12/2016 12:30 AM, Angelo Dureghello wrote: >>> fix 19/48 broken board compilations, due to a now too smal 16-bit >>> relative jump >> >> Won't it make sense to tweak the linker script to put those functions >> closer together instead ? >> > > tried hardly with linker script You hardly tried or did you try hard ? :b , keeping the functions near, > but "relocation truncated to fit: R_68K_PC16 .." error moves to other > jumps now. The fix in this way seems a bit too complex so i suggest to > maintain the jumps as in the patch below. I agree and thanks for clarifying on IRC too. Acked-by: Marek Vasut <marex@denx.de> > Best regards, > Angelo Dureghello > >>> Signed-off-by: Angelo Dureghello <angelo@sysam.it> >>> --- >>> arch/m68k/cpu/mcf523x/start.S | 8 ++++++-- >>> arch/m68k/cpu/mcf52x2/start.S | 8 ++++++-- >>> arch/m68k/cpu/mcf532x/start.S | 8 ++++++-- >>> arch/m68k/cpu/mcf5445x/start.S | 8 ++++++-- >>> 4 files changed, 24 insertions(+), 8 deletions(-) >>> >>> diff --git a/arch/m68k/cpu/mcf523x/start.S >>> b/arch/m68k/cpu/mcf523x/start.S >>> index 8a23e72..1702f98 100644 >>> --- a/arch/m68k/cpu/mcf523x/start.S >>> +++ b/arch/m68k/cpu/mcf523x/start.S >>> @@ -141,8 +141,12 @@ _start: >>> >>> move.l #__got_start, %a5 /* put relocation table address to >>> a5 */ >>> >>> - bsr cpu_init_f /* run low-level CPU init code (from >>> flash) */ >>> - bsr board_init_f /* run low-level board init code (from >>> flash) */ >>> + /* run low-level CPU init code (from flash) */ >>> + move.l #cpu_init_f, %a1 >>> + jsr (%a1) >>> + /* run low-level board init code (from flash) */ >>> + move.l #board_init_f, %a1 >>> + jsr (%a1) >>> >>> /* board_init_f() does not return */ >>> >>> diff --git a/arch/m68k/cpu/mcf52x2/start.S >>> b/arch/m68k/cpu/mcf52x2/start.S >>> index 8a59496..4af691f 100644 >>> --- a/arch/m68k/cpu/mcf52x2/start.S >>> +++ b/arch/m68k/cpu/mcf52x2/start.S >>> @@ -198,8 +198,12 @@ _after_flashbar_copy: >>> >>> move.l #__got_start, %a5 /* put relocation table address >>> to a5 */ >>> >>> - bsr cpu_init_f /* run low-level CPU init code >>> (from flash) */ >>> - bsr board_init_f /* run low-level board init code >>> (from flash) */ >>> + /* run low-level CPU init code (from flash) */ >>> + move.l #cpu_init_f, %a1 >>> + jsr (%a1) >>> + /* run low-level board init code (from flash) */ >>> + move.l #board_init_f, %a1 >>> + jsr (%a1) >>> >>> /* board_init_f() does not return */ >>> >>> diff --git a/arch/m68k/cpu/mcf532x/start.S >>> b/arch/m68k/cpu/mcf532x/start.S >>> index 3b9ede0..131ad6e 100644 >>> --- a/arch/m68k/cpu/mcf532x/start.S >>> +++ b/arch/m68k/cpu/mcf532x/start.S >>> @@ -155,8 +155,12 @@ _start: >>> >>> move.l #__got_start, %a5 /* put relocation table address to >>> a5 */ >>> >>> - bsr cpu_init_f /* run low-level CPU init code (from >>> flash) */ >>> - bsr board_init_f /* run low-level board init code (from >>> flash) */ >>> + /* run low-level CPU init code (from flash) */ >>> + move.l #cpu_init_f, %a1 >>> + jsr (%a1) >>> + /* run low-level board init code (from flash) */ >>> + move.l #board_init_f, %a1 >>> + jsr (%a1) >>> >>> /* board_init_f() does not return */ >>> >>> diff --git a/arch/m68k/cpu/mcf5445x/start.S >>> b/arch/m68k/cpu/mcf5445x/start.S >>> index ae261b1..f50f147 100644 >>> --- a/arch/m68k/cpu/mcf5445x/start.S >>> +++ b/arch/m68k/cpu/mcf5445x/start.S >>> @@ -664,8 +664,12 @@ _start: >>> >>> move.l #__got_start, %a5 /* put relocation table address to >>> a5 */ >>> >>> - bsr cpu_init_f /* run low-level CPU init code (from >>> flash) */ >>> - bsr board_init_f /* run low-level board init code (from >>> flash) */ >>> + /* run low-level CPU init code (from flash) */ >>> + move.l #cpu_init_f, %a1 >>> + jsr (%a1) >>> + /* run low-level board init code (from flash) */ >>> + move.l #board_init_f, %a1 >>> + jsr (%a1) >>> >>> /* board_init_f() does not return */ >>> >>> >> >>
Hello Angelo, Am 12.04.2016 um 00:30 schrieb Angelo Dureghello: > fix 19/48 broken board compilations, due to a now too smal 16-bit > relative jump > > Signed-off-by: Angelo Dureghello <angelo@sysam.it> > --- > arch/m68k/cpu/mcf523x/start.S | 8 ++++++-- > arch/m68k/cpu/mcf52x2/start.S | 8 ++++++-- > arch/m68k/cpu/mcf532x/start.S | 8 ++++++-- > arch/m68k/cpu/mcf5445x/start.S | 8 ++++++-- > 4 files changed, 24 insertions(+), 8 deletions(-) Acked-by: Heiko Schocher <hs@denx.de> bye, Heiko
On Tue, Apr 12, 2016 at 12:30:59AM +0200, angelo@sysam.it wrote: > fix 19/48 broken board compilations, due to a now too smal 16-bit > relative jump > > Signed-off-by: Angelo Dureghello <angelo@sysam.it> > Acked-by: Marek Vasut <marex@denx.de> > Acked-by: Heiko Schocher <hs@denx.de> Applied to u-boot/master, thanks!
diff --git a/arch/m68k/cpu/mcf523x/start.S b/arch/m68k/cpu/mcf523x/start.S index 8a23e72..1702f98 100644 --- a/arch/m68k/cpu/mcf523x/start.S +++ b/arch/m68k/cpu/mcf523x/start.S @@ -141,8 +141,12 @@ _start: move.l #__got_start, %a5 /* put relocation table address to a5 */ - bsr cpu_init_f /* run low-level CPU init code (from flash) */ - bsr board_init_f /* run low-level board init code (from flash) */ + /* run low-level CPU init code (from flash) */ + move.l #cpu_init_f, %a1 + jsr (%a1) + /* run low-level board init code (from flash) */ + move.l #board_init_f, %a1 + jsr (%a1) /* board_init_f() does not return */ diff --git a/arch/m68k/cpu/mcf52x2/start.S b/arch/m68k/cpu/mcf52x2/start.S index 8a59496..4af691f 100644 --- a/arch/m68k/cpu/mcf52x2/start.S +++ b/arch/m68k/cpu/mcf52x2/start.S @@ -198,8 +198,12 @@ _after_flashbar_copy: move.l #__got_start, %a5 /* put relocation table address to a5 */ - bsr cpu_init_f /* run low-level CPU init code (from flash) */ - bsr board_init_f /* run low-level board init code (from flash) */ + /* run low-level CPU init code (from flash) */ + move.l #cpu_init_f, %a1 + jsr (%a1) + /* run low-level board init code (from flash) */ + move.l #board_init_f, %a1 + jsr (%a1) /* board_init_f() does not return */ diff --git a/arch/m68k/cpu/mcf532x/start.S b/arch/m68k/cpu/mcf532x/start.S index 3b9ede0..131ad6e 100644 --- a/arch/m68k/cpu/mcf532x/start.S +++ b/arch/m68k/cpu/mcf532x/start.S @@ -155,8 +155,12 @@ _start: move.l #__got_start, %a5 /* put relocation table address to a5 */ - bsr cpu_init_f /* run low-level CPU init code (from flash) */ - bsr board_init_f /* run low-level board init code (from flash) */ + /* run low-level CPU init code (from flash) */ + move.l #cpu_init_f, %a1 + jsr (%a1) + /* run low-level board init code (from flash) */ + move.l #board_init_f, %a1 + jsr (%a1) /* board_init_f() does not return */ diff --git a/arch/m68k/cpu/mcf5445x/start.S b/arch/m68k/cpu/mcf5445x/start.S index ae261b1..f50f147 100644 --- a/arch/m68k/cpu/mcf5445x/start.S +++ b/arch/m68k/cpu/mcf5445x/start.S @@ -664,8 +664,12 @@ _start: move.l #__got_start, %a5 /* put relocation table address to a5 */ - bsr cpu_init_f /* run low-level CPU init code (from flash) */ - bsr board_init_f /* run low-level board init code (from flash) */ + /* run low-level CPU init code (from flash) */ + move.l #cpu_init_f, %a1 + jsr (%a1) + /* run low-level board init code (from flash) */ + move.l #board_init_f, %a1 + jsr (%a1) /* board_init_f() does not return */
fix 19/48 broken board compilations, due to a now too smal 16-bit relative jump Signed-off-by: Angelo Dureghello <angelo@sysam.it> --- arch/m68k/cpu/mcf523x/start.S | 8 ++++++-- arch/m68k/cpu/mcf52x2/start.S | 8 ++++++-- arch/m68k/cpu/mcf532x/start.S | 8 ++++++-- arch/m68k/cpu/mcf5445x/start.S | 8 ++++++-- 4 files changed, 24 insertions(+), 8 deletions(-)