[U-Boot] [PATCH] nds32: Enable FPU if the version of CPU supported

2013-07-17 Thread Kuan-Yu Kuo
Some version of Andes core support FPU coprocessor, if this is the case,
we should enable it at low level initialization time.

Signed-off-by: Kuan-Yu Kuo 
Cc: Macpaul Lin 
---
 arch/nds32/cpu/n1213/ag101/lowlevel_init.S |   22 ++
 arch/nds32/cpu/n1213/ag102/lowlevel_init.S |   22 ++
 2 files changed, 44 insertions(+)

diff --git a/arch/nds32/cpu/n1213/ag101/lowlevel_init.S 
b/arch/nds32/cpu/n1213/ag101/lowlevel_init.S
index 55985cf..b4c2b0f 100644
--- a/arch/nds32/cpu/n1213/ag101/lowlevel_init.S
+++ b/arch/nds32/cpu/n1213/ag101/lowlevel_init.S
@@ -98,6 +98,9 @@ lowlevel_init:
led 0x10
jal remap
 
+   led 0x1f
+   jal enable_fpu
+
led 0x20
ret $r10
 
@@ -234,6 +237,25 @@ relo_base:
 2:
ret
 
+   /*
+* enable_fpu:
+*  Some of Andes CPU version support FPU coprocessor, if so,
+*  we should enable it.
+*/
+enable_fpu:
+   mfsr$r0, $CPU_VER   /* enable FPU if it exists */
+   srli$r0, $r0, 3
+   andi$r0, $r0, 1
+   beqz$r0, 1f /* skip if no 
COP */
+   mfsr$r0, $FUCOP_EXIST
+   srli$r0, $r0, 31
+   beqz$r0, 1f /* skip if no 
FPU */
+   mfsr$r0, $FUCOP_CTL
+   ori $r0, $r0, 1
+   mtsr$r0, $FUCOP_CTL
+1:
+   ret
+
 .globl show_led
 show_led:
 li  $r8, (CONFIG_DEBUG_LED)
diff --git a/arch/nds32/cpu/n1213/ag102/lowlevel_init.S 
b/arch/nds32/cpu/n1213/ag102/lowlevel_init.S
index d842afa..345f316 100644
--- a/arch/nds32/cpu/n1213/ag102/lowlevel_init.S
+++ b/arch/nds32/cpu/n1213/ag102/lowlevel_init.S
@@ -114,6 +114,9 @@ lowlevel_init:
led 0x20
jal remap
 
+   led 0x2f
+   jal enable_fpu
+
led 0x30
ret $r10
 
@@ -289,6 +292,25 @@ relo_base:
 2:
ret
 
+   /*
+* enable_fpu:
+*  Some of Andes CPU version support FPU coprocessor, if so,
+*  we should enable it.
+*/
+enable_fpu:
+   mfsr$r0, $CPU_VER   /* enable FPU if it exists */
+   srli$r0, $r0, 3
+   andi$r0, $r0, 1
+   beqz$r0, 1f /* skip if no 
COP */
+   mfsr$r0, $FUCOP_EXIST
+   srli$r0, $r0, 31
+   beqz$r0, 1f /* skip if no 
FPU */
+   mfsr$r0, $FUCOP_CTL
+   ori $r0, $r0, 1
+   mtsr$r0, $FUCOP_CTL
+1:
+   ret
+
 .globl show_led
 show_led:
 li  $r8, (CONFIG_DEBUG_LED)
-- 
1.7.9.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] nds32: Enable FPU if the version of CPU supported

2013-07-18 Thread uboot
Hi Kuan-Yu Kuo,

2013/7/18 Kuan-Yu Kuo :
> +   /*
> +* enable_fpu:
> +*  Some of Andes CPU version support FPU coprocessor, if so,
> +*  we should enable it.
> +*/
> +enable_fpu:
> +   mfsr$r0, $CPU_VER   /* enable FPU if it exists */
> +   srli$r0, $r0, 3
> +   andi$r0, $r0, 1
> +   beqz$r0, 1f /* skip if no 
> COP */
> +   mfsr$r0, $FUCOP_EXIST
> +   srli$r0, $r0, 31
> +   beqz$r0, 1f /* skip if no 
> FPU */
> +   mfsr$r0, $FUCOP_CTL
> +   ori $r0, $r0, 1
> +   mtsr$r0, $FUCOP_CTL

There are two kinds of toolchain in Andes architecture, one is FPU supported 
and the other is not, for the latter one, there is no need to enable FPU even 
if the processor supports it.
This code snippet only useful for the toolchain that will generate FPU 
instructions, so add compile option to determine Andes predefined macros would 
be better.
For example:
#if defined(NDS32_EXT_FPU_DP) || defined(NDS32_EXT_FPU_SP)

Andes Technology Corporation
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] nds32: Enable FPU if the version of CPU supported

2013-07-23 Thread Macpaul Lin
Hi Kuan-Yu,

2013/7/18  :
> Hi Kuan-Yu Kuo,
>
...
>> +enable_fpu:
>> +   mfsr$r0, $CPU_VER   /* enable FPU if it exists */
>> +   srli$r0, $r0, 3
>> +   andi$r0, $r0, 1
>> +   beqz$r0, 1f /* skip if 
>> no COP */
>> +   mfsr$r0, $FUCOP_EXIST
>> +   srli$r0, $r0, 31
>> +   beqz$r0, 1f /* skip if 
>> no FPU */
>> +   mfsr$r0, $FUCOP_CTL
>> +   ori $r0, $r0, 1
>> +   mtsr$r0, $FUCOP_CTL

WARNING: line over 80 characters
#53: FILE: arch/nds32/cpu/n1213/ag101/lowlevel_init.S:249:
+   beqz$r0, 1f /*
skip if no COP */

WARNING: line over 80 characters
#56: FILE: arch/nds32/cpu/n1213/ag101/lowlevel_init.S:252:
+   beqz$r0, 1f /*
skip if no FPU */

WARNING: line over 80 characters
#93: FILE: arch/nds32/cpu/n1213/ag102/lowlevel_init.S:304:
+   beqz$r0, 1f /*
skip if no COP */

WARNING: line over 80 characters
#96: FILE: arch/nds32/cpu/n1213/ag102/lowlevel_init.S:307:
+   beqz$r0, 1f /*
skip if no FPU */

1. Please clean up this patch and check with checkpatch.pl then resend it.

>
> There are two kinds of toolchain in Andes architecture, one is FPU supported 
> and the other is not, for the latter one, there is no need to enable FPU even 
> if the processor supports it.
> This code snippet only useful for the toolchain that will generate FPU 
> instructions, so add compile option to determine Andes predefined macros 
> would be better.
> For example:
> #if defined(NDS32_EXT_FPU_DP) || defined(NDS32_EXT_FPU_SP)
>
> Andes Technology Corporation

2. According to the official suggestion from Andes Technology
Corporation, your patch will be better to reorganized with these macro
definitions to help the toolchain to distinguish the differences.
But! The most users cannot distinguish the differences of  these
toolchain-with-SoC combination, hence I think to keep the most
Error-Proof protection will be better.

Thanks.

-- 
Best regards,
Macpaul Lin
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot