* [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.