diff mbox

[U-Boot] m68k: fix broken buildman m68k

Message ID 1460413859-30790-1-git-send-email-angelo@sysam.it
State Accepted
Commit 55ac54c4a0acbdc786b16dc1b12a661f9dbdb305
Delegated to: Tom Rini
Headers show

Commit Message

Angelo Dureghello April 11, 2016, 10:30 p.m. UTC
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(-)

Comments

Marek Vasut April 11, 2016, 10:52 p.m. UTC | #1
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 */
>  
>
Angelo Dureghello April 12, 2016, 5:12 a.m. UTC | #2
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
Angelo Dureghello April 12, 2016, 9:41 p.m. UTC | #3
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 */
>>
>>
>
>
Marek Vasut April 12, 2016, 10:09 p.m. UTC | #4
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 */
>>>
>>>
>>
>>
Heiko Schocher April 18, 2016, 5:05 a.m. UTC | #5
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
Tom Rini April 21, 2016, 11:23 a.m. UTC | #6
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 mbox

Patch

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 */