[U-Boot] [PATCH] m68k: fix broken buildman m68k

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(-)
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 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!
participants (4)
-
Angelo Dureghello
-
Heiko Schocher
-
Marek Vasut
-
Tom Rini