Patchwork SPARC/LEON: FPU-FSR only available when FPU present

login
register
mail settings
Submitter Daniel Hellstrom
Date Jan. 26, 2011, 4:37 p.m.
Message ID <1296059825-22822-1-git-send-email-daniel@gaisler.com>
Download mbox | patch
Permalink /patch/80523/
State Accepted
Delegated to: David Miller
Headers show

Comments

Daniel Hellstrom - Jan. 26, 2011, 4:37 p.m.
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
---
 arch/sparc/kernel/cpu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Sam Ravnborg - Jan. 26, 2011, 8:36 p.m.
On Wed, Jan 26, 2011 at 05:37:05PM +0100, Daniel Hellstrom wrote:
> Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
> ---
>  arch/sparc/kernel/cpu.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
> index 0dc714f..7925c54 100644
> --- a/arch/sparc/kernel/cpu.c
> +++ b/arch/sparc/kernel/cpu.c
> @@ -324,7 +324,7 @@ void __cpuinit cpu_probe(void)
>  	psr = get_psr();
>  	put_psr(psr | PSR_EF);
>  #ifdef CONFIG_SPARC_LEON
> -	fpu_vers = 7;
> +	fpu_vers = get_psr() & PSR_EF ? ((get_fsr() >> 17) & 0x7) : 7;
>  #else
>  	fpu_vers = ((get_fsr() >> 17) & 0x7);
>  #endif

This file is full of numbers.
But for new stuff it would be great with symbolic constants.

I also do wonder if your new version could be
used for non-leon?
PSR_EF say if the FPU is enabled or not.
If it is disabled can we then trust the FSR.ver field?

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Daniel Hellstrom - Jan. 27, 2011, 11:06 a.m.
Sam Ravnborg wrote:

>On Wed, Jan 26, 2011 at 05:37:05PM +0100, Daniel Hellstrom wrote:
>  
>
>>Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
>>---
>> arch/sparc/kernel/cpu.c |    2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>>diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
>>index 0dc714f..7925c54 100644
>>--- a/arch/sparc/kernel/cpu.c
>>+++ b/arch/sparc/kernel/cpu.c
>>@@ -324,7 +324,7 @@ void __cpuinit cpu_probe(void)
>> 	psr = get_psr();
>> 	put_psr(psr | PSR_EF);
>> #ifdef CONFIG_SPARC_LEON
>>-	fpu_vers = 7;
>>+	fpu_vers = get_psr() & PSR_EF ? ((get_fsr() >> 17) & 0x7) : 7;
>> #else
>> 	fpu_vers = ((get_fsr() >> 17) & 0x7);
>> #endif
>>    
>>
>
>This file is full of numbers.
>But for new stuff it would be great with symbolic constants.
>  
>
Please ack this patch, and see the follow up patch doing some cleaning 
of PSR/FSR code.

>I also do wonder if your new version could be
>used for non-leon?
>PSR_EF say if the FPU is enabled or not.
>If it is disabled can we then trust the FSR.ver field?
>  
>
see discussion in other email.

Daniel
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg - Jan. 27, 2011, 5:29 p.m.
On Thu, Jan 27, 2011 at 12:06:27PM +0100, Daniel Hellstrom wrote:
> Sam Ravnborg wrote:
>
>> On Wed, Jan 26, 2011 at 05:37:05PM +0100, Daniel Hellstrom wrote:
>>  
>>
>>> Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
>>> ---
>>> arch/sparc/kernel/cpu.c |    2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
>>> index 0dc714f..7925c54 100644
>>> --- a/arch/sparc/kernel/cpu.c
>>> +++ b/arch/sparc/kernel/cpu.c
>>> @@ -324,7 +324,7 @@ void __cpuinit cpu_probe(void)
>>> 	psr = get_psr();
>>> 	put_psr(psr | PSR_EF);
>>> #ifdef CONFIG_SPARC_LEON
>>> -	fpu_vers = 7;
>>> +	fpu_vers = get_psr() & PSR_EF ? ((get_fsr() >> 17) & 0x7) : 7;
>>> #else
>>> 	fpu_vers = ((get_fsr() >> 17) & 0x7);
>>> #endif
>>>    
>>>
>>
>> This file is full of numbers.
>> But for new stuff it would be great with symbolic constants.
>>  
>>
> Please ack this patch, and see the follow up patch doing some cleaning  
> of PSR/FSR code.
I have no problem with the patch per see. I was just
looking for a possibility to get rid of an ifdef.

Acked-by: Sam Ravnborg <sam@ravnborg.org>

Btw. my ack is not a precondition for David to merge your
patches - but it may help a little :-)

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Jan. 28, 2011, 11:07 p.m.
From: Sam Ravnborg <sam@ravnborg.org>
Date: Thu, 27 Jan 2011 18:29:16 +0100

> On Thu, Jan 27, 2011 at 12:06:27PM +0100, Daniel Hellstrom wrote:
>> Sam Ravnborg wrote:
>>
>>> On Wed, Jan 26, 2011 at 05:37:05PM +0100, Daniel Hellstrom wrote:
>>>  
>>>
>>>> Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
...
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> 
> Btw. my ack is not a precondition for David to merge your
> patches - but it may help a little :-)

:-)  Applied to sparc-next-2.6, thanks guys.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index 0dc714f..7925c54 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -324,7 +324,7 @@  void __cpuinit cpu_probe(void)
 	psr = get_psr();
 	put_psr(psr | PSR_EF);
 #ifdef CONFIG_SPARC_LEON
-	fpu_vers = 7;
+	fpu_vers = get_psr() & PSR_EF ? ((get_fsr() >> 17) & 0x7) : 7;
 #else
 	fpu_vers = ((get_fsr() >> 17) & 0x7);
 #endif