Skip to contentSkip to conversation

m68k: fix broken buildman m68k

PATCH In review Angelo Dureghello 4 participants 7 messages Apr 11, 2016 – Apr 21, 2016 m68k architecture

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 m68k: fix broken buildman m68k

fix 19/48 broken board compilations, due to a now too smal 16-bit relative jump

---
 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(-)
arch/m68k/cpu/mcf523x/start.S +6 -2
index 8a23e72..1702f98 100644
@@ -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 */
 
arch/m68k/cpu/mcf52x2/start.S +6 -2
index 8a59496..4af691f 100644
@@ -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 */
 
arch/m68k/cpu/mcf532x/start.S +6 -2
index 3b9ede0..131ad6e 100644
@@ -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 */
 
arch/m68k/cpu/mcf5445x/start.S +6 -2
index ae261b1..f50f147 100644
@@ -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 */
 
Signature · 1 line
2.7.0
#1 lore raw

PATCH 1/1 m68k: fix broken buildman m68k

Quoted 2 lines · Angelo Dureghello

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 ?

Quoted 85 lines
---
 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(-)
arch/m68k/cpu/mcf523x/start.S +6 -2
index 8a23e72..1702f98 100644
@@ -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 */
 
arch/m68k/cpu/mcf52x2/start.S +6 -2
index 8a59496..4af691f 100644
@@ -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 */
 
arch/m68k/cpu/mcf532x/start.S +6 -2
index 3b9ede0..131ad6e 100644
@@ -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 */
 
arch/m68k/cpu/mcf5445x/start.S +6 -2
index ae261b1..f50f147 100644
@@ -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 */
 
Signature · 2 lines
Best regards,
Marek Vasut
#2 lore raw

PATCH 1/1 m68k: fix broken buildman m68k

Hi,

Quoted 7 lines · Marek Vasut
Quoted 2 lines · Angelo Dureghello

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

#3 lore raw

PATCH 1/1 m68k: fix broken buildman m68k

In reply to Marek Vasut

Hi,

Quoted 7 lines · Marek Vasut
Quoted 2 lines · Angelo Dureghello

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

Quoted 87 lines
Quoted 85 lines
---
  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(-)
arch/m68k/cpu/mcf523x/start.S +6 -2
index 8a23e72..1702f98 100644
@@ -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 */
 
arch/m68k/cpu/mcf52x2/start.S +6 -2
index 8a59496..4af691f 100644
@@ -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 */
 
arch/m68k/cpu/mcf532x/start.S +6 -2
index 3b9ede0..131ad6e 100644
@@ -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 */
 
arch/m68k/cpu/mcf5445x/start.S +6 -2
index ae261b1..f50f147 100644
@@ -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 */
 
#4 lore raw

PATCH 1/1 m68k: fix broken buildman m68k

Quoted 5 lines · Angelo Dureghello

Hi,

Quoted 1 line · Marek Vasut

On 04/12/2016 12:30 AM, Angelo Dureghello wrote:

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

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,

Quoted 3 lines

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.

Quoted 106 lines

Best regards,
Angelo Dureghello

Quoted 103 lines
Quoted 101 lines
---
  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(-)
arch/m68k/cpu/mcf523x/start.S +0 -0
index 8a23e72..1702f98 100644
@@ -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) */

arch/m68k/cpu/mcf523x/start.S +6 -0
+    /* 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 */
arch/m68k/cpu/mcf52x2/start.S +0 -0
index 8a59496..4af691f 100644
@@ -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) */

arch/m68k/cpu/mcf52x2/start.S +6 -0
+    /* 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 */
arch/m68k/cpu/mcf532x/start.S +0 -0
index 3b9ede0..131ad6e 100644
@@ -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) */

arch/m68k/cpu/mcf532x/start.S +6 -0
+    /* 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 */
arch/m68k/cpu/mcf5445x/start.S +0 -0
index ae261b1..f50f147 100644
@@ -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) */

arch/m68k/cpu/mcf5445x/start.S +6 -0
+    /* 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 */
Signature · 2 lines
Best regards,
Marek Vasut
#5 lore raw

PATCH 1/1 m68k: fix broken buildman m68k

In reply to Angelo Dureghello

Hello Angelo,

Am 12.04.2016 um 00:30 schrieb Angelo Dureghello:

Quoted 10 lines

fix 19/48 broken board compilations, due to a now too smal 16-bit relative jump

---
  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(-)

bye,
Heiko

Signature · 2 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
#6 lore raw
In reply to Angelo Dureghello
Quoted 6 lines · angelo at sysam.it

fix 19/48 broken board compilations, due to a now too smal 16-bit relative jump

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160421/e95c11f0/attachment.sig>