All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers
@ 2021-08-07 15:52 Jan Kiszka
  2021-08-09 14:55 ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kiszka @ 2021-08-07 15:52 UTC (permalink / raw)
  To: Xenomai

From: Jan Kiszka <jan.kiszka@siemens.com>

Since gcc-9, direct usage of r7 is in conflict with compiler
allocations. Skip it.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 .../arch/arm/include/asm/xenomai/uapi/arith.h      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
index cf897b44fa..4d3ae65411 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
@@ -79,9 +79,9 @@ mach_arm_nodiv_ullimd(const unsigned long long op,
 	register unsigned frach __asm__ ("r3");
 	register unsigned integ __asm__("r4") = rhs_integ;
 	register unsigned opl __asm__ ("r6");
-	register unsigned oph __asm__ ("r7");
-	register unsigned tl __asm__("r8");
-	register unsigned th __asm__("r9");
+	register unsigned oph __asm__ ("r8");
+	register unsigned tl __asm__("r9");
+	register unsigned th __asm__("r10");
 
 	xnarch_u64tou32(op, oph, opl);
 	xnarch_u64tou32(frac, frach, fracl);
@@ -109,10 +109,10 @@ mach_arm_nodiv_llimd(const long long op,
 	register unsigned frach __asm__ ("r3");
 	register unsigned integ __asm__("r4") = rhs_integ;
 	register unsigned opl __asm__ ("r6");
-	register unsigned oph __asm__ ("r7");
-	register unsigned tl __asm__("r8");
-	register unsigned th __asm__("r9");
-	register unsigned s __asm__("r10");
+	register unsigned oph __asm__ ("r8");
+	register unsigned tl __asm__("r9");
+	register unsigned th __asm__("r10");
+	register unsigned s __asm__("r11");
 
 	xnarch_u64tou32(op, oph, opl);
 	xnarch_u64tou32(frac, frach, fracl);
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers
  2021-08-07 15:52 [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers Jan Kiszka
@ 2021-08-09 14:55 ` Jan Kiszka
  2021-08-09 15:09   ` Philippe Gerum
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kiszka @ 2021-08-09 14:55 UTC (permalink / raw)
  To: Xenomai, Philippe Gerum

On 07.08.21 17:52, Jan Kiszka via Xenomai wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>
> 
> Since gcc-9, direct usage of r7 is in conflict with compiler
> allocations. Skip it.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
>  .../arch/arm/include/asm/xenomai/uapi/arith.h      | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
> index cf897b44fa..4d3ae65411 100644
> --- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
> +++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
> @@ -79,9 +79,9 @@ mach_arm_nodiv_ullimd(const unsigned long long op,
>  	register unsigned frach __asm__ ("r3");
>  	register unsigned integ __asm__("r4") = rhs_integ;
>  	register unsigned opl __asm__ ("r6");
> -	register unsigned oph __asm__ ("r7");
> -	register unsigned tl __asm__("r8");
> -	register unsigned th __asm__("r9");
> +	register unsigned oph __asm__ ("r8");
> +	register unsigned tl __asm__("r9");
> +	register unsigned th __asm__("r10");
>  
>  	xnarch_u64tou32(op, oph, opl);
>  	xnarch_u64tou32(frac, frach, fracl);
> @@ -109,10 +109,10 @@ mach_arm_nodiv_llimd(const long long op,
>  	register unsigned frach __asm__ ("r3");
>  	register unsigned integ __asm__("r4") = rhs_integ;
>  	register unsigned opl __asm__ ("r6");
> -	register unsigned oph __asm__ ("r7");
> -	register unsigned tl __asm__("r8");
> -	register unsigned th __asm__("r9");
> -	register unsigned s __asm__("r10");
> +	register unsigned oph __asm__ ("r8");
> +	register unsigned tl __asm__("r9");
> +	register unsigned th __asm__("r10");
> +	register unsigned s __asm__("r11");

Florian just pointed out that r11 is the frame pointer. Not many options
remaining - ideas?

Jan

>  
>  	xnarch_u64tou32(op, oph, opl);
>  	xnarch_u64tou32(frac, frach, fracl);
> 

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers
  2021-08-09 14:55 ` Jan Kiszka
@ 2021-08-09 15:09   ` Philippe Gerum
  2021-08-09 15:11     ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Philippe Gerum @ 2021-08-09 15:09 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: Xenomai, Bezdeka, Florian (T RDA IOT SES-DE)


Jan Kiszka <jan.kiszka@siemens.com> writes:

> On 07.08.21 17:52, Jan Kiszka via Xenomai wrote:
>> From: Jan Kiszka <jan.kiszka@siemens.com>
>> 
>> Since gcc-9, direct usage of r7 is in conflict with compiler
>> allocations. Skip it.
>> 
>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>> ---
>>  .../arch/arm/include/asm/xenomai/uapi/arith.h      | 14 +++++++-------
>>  1 file changed, 7 insertions(+), 7 deletions(-)
>> 
>> diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>> index cf897b44fa..4d3ae65411 100644
>> --- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>> +++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>> @@ -79,9 +79,9 @@ mach_arm_nodiv_ullimd(const unsigned long long op,
>>  	register unsigned frach __asm__ ("r3");
>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>  	register unsigned opl __asm__ ("r6");
>> -	register unsigned oph __asm__ ("r7");
>> -	register unsigned tl __asm__("r8");
>> -	register unsigned th __asm__("r9");
>> +	register unsigned oph __asm__ ("r8");
>> +	register unsigned tl __asm__("r9");
>> +	register unsigned th __asm__("r10");
>>  
>>  	xnarch_u64tou32(op, oph, opl);
>>  	xnarch_u64tou32(frac, frach, fracl);
>> @@ -109,10 +109,10 @@ mach_arm_nodiv_llimd(const long long op,
>>  	register unsigned frach __asm__ ("r3");
>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>  	register unsigned opl __asm__ ("r6");
>> -	register unsigned oph __asm__ ("r7");
>> -	register unsigned tl __asm__("r8");
>> -	register unsigned th __asm__("r9");
>> -	register unsigned s __asm__("r10");
>> +	register unsigned oph __asm__ ("r8");
>> +	register unsigned tl __asm__("r9");
>> +	register unsigned th __asm__("r10");
>> +	register unsigned s __asm__("r11");
>
> Florian just pointed out that r11 is the frame pointer. Not many options
> remaining - ideas?

Try r12(ip) adding it to the clobber list.

-- 
Philippe.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers
  2021-08-09 15:09   ` Philippe Gerum
@ 2021-08-09 15:11     ` Jan Kiszka
  2021-08-09 15:17       ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kiszka @ 2021-08-09 15:11 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: Xenomai, Bezdeka, Florian (T RDA IOT SES-DE)

On 09.08.21 17:09, Philippe Gerum wrote:
> 
> Jan Kiszka <jan.kiszka@siemens.com> writes:
> 
>> On 07.08.21 17:52, Jan Kiszka via Xenomai wrote:
>>> From: Jan Kiszka <jan.kiszka@siemens.com>
>>>
>>> Since gcc-9, direct usage of r7 is in conflict with compiler
>>> allocations. Skip it.
>>>
>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>> ---
>>>  .../arch/arm/include/asm/xenomai/uapi/arith.h      | 14 +++++++-------
>>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>> index cf897b44fa..4d3ae65411 100644
>>> --- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>> +++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>> @@ -79,9 +79,9 @@ mach_arm_nodiv_ullimd(const unsigned long long op,
>>>  	register unsigned frach __asm__ ("r3");
>>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>>  	register unsigned opl __asm__ ("r6");
>>> -	register unsigned oph __asm__ ("r7");
>>> -	register unsigned tl __asm__("r8");
>>> -	register unsigned th __asm__("r9");
>>> +	register unsigned oph __asm__ ("r8");
>>> +	register unsigned tl __asm__("r9");
>>> +	register unsigned th __asm__("r10");
>>>  
>>>  	xnarch_u64tou32(op, oph, opl);
>>>  	xnarch_u64tou32(frac, frach, fracl);
>>> @@ -109,10 +109,10 @@ mach_arm_nodiv_llimd(const long long op,
>>>  	register unsigned frach __asm__ ("r3");
>>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>>  	register unsigned opl __asm__ ("r6");
>>> -	register unsigned oph __asm__ ("r7");
>>> -	register unsigned tl __asm__("r8");
>>> -	register unsigned th __asm__("r9");
>>> -	register unsigned s __asm__("r10");
>>> +	register unsigned oph __asm__ ("r8");
>>> +	register unsigned tl __asm__("r9");
>>> +	register unsigned th __asm__("r10");
>>> +	register unsigned s __asm__("r11");
>>
>> Florian just pointed out that r11 is the frame pointer. Not many options
>> remaining - ideas?
> 
> Try r12(ip) adding it to the clobber list.
> 

Yeah, just had the same idea while browsing the ABI...

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers
  2021-08-09 15:11     ` Jan Kiszka
@ 2021-08-09 15:17       ` Jan Kiszka
  2021-08-09 16:58         ` Philippe Gerum
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kiszka @ 2021-08-09 15:17 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: Xenomai

On 09.08.21 17:11, Jan Kiszka via Xenomai wrote:
> On 09.08.21 17:09, Philippe Gerum wrote:
>>
>> Jan Kiszka <jan.kiszka@siemens.com> writes:
>>
>>> On 07.08.21 17:52, Jan Kiszka via Xenomai wrote:
>>>> From: Jan Kiszka <jan.kiszka@siemens.com>
>>>>
>>>> Since gcc-9, direct usage of r7 is in conflict with compiler
>>>> allocations. Skip it.
>>>>
>>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>>> ---
>>>>  .../arch/arm/include/asm/xenomai/uapi/arith.h      | 14 +++++++-------
>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>>>
>>>> diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>>> index cf897b44fa..4d3ae65411 100644
>>>> --- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>>> +++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>>> @@ -79,9 +79,9 @@ mach_arm_nodiv_ullimd(const unsigned long long op,
>>>>  	register unsigned frach __asm__ ("r3");
>>>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>>>  	register unsigned opl __asm__ ("r6");
>>>> -	register unsigned oph __asm__ ("r7");
>>>> -	register unsigned tl __asm__("r8");
>>>> -	register unsigned th __asm__("r9");
>>>> +	register unsigned oph __asm__ ("r8");
>>>> +	register unsigned tl __asm__("r9");
>>>> +	register unsigned th __asm__("r10");
>>>>  
>>>>  	xnarch_u64tou32(op, oph, opl);
>>>>  	xnarch_u64tou32(frac, frach, fracl);
>>>> @@ -109,10 +109,10 @@ mach_arm_nodiv_llimd(const long long op,
>>>>  	register unsigned frach __asm__ ("r3");
>>>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>>>  	register unsigned opl __asm__ ("r6");
>>>> -	register unsigned oph __asm__ ("r7");
>>>> -	register unsigned tl __asm__("r8");
>>>> -	register unsigned th __asm__("r9");
>>>> -	register unsigned s __asm__("r10");
>>>> +	register unsigned oph __asm__ ("r8");
>>>> +	register unsigned tl __asm__("r9");
>>>> +	register unsigned th __asm__("r10");
>>>> +	register unsigned s __asm__("r11");
>>>
>>> Florian just pointed out that r11 is the frame pointer. Not many options
>>> remaining - ideas?
>>
>> Try r12(ip) adding it to the clobber list.
>>
> 
> Yeah, just had the same idea while browsing the ABI...
> 

...but clobbering doesn't work and should not be needed - s is already
specified as output.

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers
  2021-08-09 15:17       ` Jan Kiszka
@ 2021-08-09 16:58         ` Philippe Gerum
  0 siblings, 0 replies; 6+ messages in thread
From: Philippe Gerum @ 2021-08-09 16:58 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: Xenomai


Jan Kiszka <jan.kiszka@siemens.com> writes:

> On 09.08.21 17:11, Jan Kiszka via Xenomai wrote:
>> On 09.08.21 17:09, Philippe Gerum wrote:
>>>
>>> Jan Kiszka <jan.kiszka@siemens.com> writes:
>>>
>>>> On 07.08.21 17:52, Jan Kiszka via Xenomai wrote:
>>>>> From: Jan Kiszka <jan.kiszka@siemens.com>
>>>>>
>>>>> Since gcc-9, direct usage of r7 is in conflict with compiler
>>>>> allocations. Skip it.
>>>>>
>>>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>>>> ---
>>>>>  .../arch/arm/include/asm/xenomai/uapi/arith.h      | 14 +++++++-------
>>>>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>>>>
>>>>> diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>>>> index cf897b44fa..4d3ae65411 100644
>>>>> --- a/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>>>> +++ b/kernel/cobalt/arch/arm/include/asm/xenomai/uapi/arith.h
>>>>> @@ -79,9 +79,9 @@ mach_arm_nodiv_ullimd(const unsigned long long op,
>>>>>  	register unsigned frach __asm__ ("r3");
>>>>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>>>>  	register unsigned opl __asm__ ("r6");
>>>>> -	register unsigned oph __asm__ ("r7");
>>>>> -	register unsigned tl __asm__("r8");
>>>>> -	register unsigned th __asm__("r9");
>>>>> +	register unsigned oph __asm__ ("r8");
>>>>> +	register unsigned tl __asm__("r9");
>>>>> +	register unsigned th __asm__("r10");
>>>>>  
>>>>>  	xnarch_u64tou32(op, oph, opl);
>>>>>  	xnarch_u64tou32(frac, frach, fracl);
>>>>> @@ -109,10 +109,10 @@ mach_arm_nodiv_llimd(const long long op,
>>>>>  	register unsigned frach __asm__ ("r3");
>>>>>  	register unsigned integ __asm__("r4") = rhs_integ;
>>>>>  	register unsigned opl __asm__ ("r6");
>>>>> -	register unsigned oph __asm__ ("r7");
>>>>> -	register unsigned tl __asm__("r8");
>>>>> -	register unsigned th __asm__("r9");
>>>>> -	register unsigned s __asm__("r10");
>>>>> +	register unsigned oph __asm__ ("r8");
>>>>> +	register unsigned tl __asm__("r9");
>>>>> +	register unsigned th __asm__("r10");
>>>>> +	register unsigned s __asm__("r11");
>>>>
>>>> Florian just pointed out that r11 is the frame pointer. Not many options
>>>> remaining - ideas?
>>>
>>> Try r12(ip) adding it to the clobber list.
>>>
>> 
>> Yeah, just had the same idea while browsing the ABI...
>> 
>
> ...but clobbering doesn't work and should not be needed - s is already
> specified as output.

Makes sense.

-- 
Philippe.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-08-09 16:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-07 15:52 [PATCH] cobalt/arch/arm: arith: Avoid r7 usage in helpers Jan Kiszka
2021-08-09 14:55 ` Jan Kiszka
2021-08-09 15:09   ` Philippe Gerum
2021-08-09 15:11     ` Jan Kiszka
2021-08-09 15:17       ` Jan Kiszka
2021-08-09 16:58         ` Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.