diff mbox

arm: mm: Fix infinite looping issue

Message ID 1317724684-29115-1-git-send-email-girish.shivananjappa@linaro.org
State New
Headers show

Commit Message

Girish K S Oct. 4, 2011, 10:38 a.m. UTC
This patch fixes the problem of infinite looping while booting.

The bne instruction expects the z flag to be set to break the loop.
The (mov r1, r1, lsr #1) doesn't behave in the expected way. If
replaced with the movs instruction then the execution will exit
the loop.

Signed-off-by: Girish K S <girish.shivananjappa@linaro.org>
---
 arch/arm/mm/proc-arm740.S |    4 ++--
 arch/arm/mm/proc-arm940.S |    4 ++--
 arch/arm/mm/proc-arm946.S |    4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

Comments

Girish KS Oct. 8, 2011, 5:19 a.m. UTC | #1
Hello Mr choi,
If there is no issue with this patch can you apply to your for-next tree

regards
Girish K S

On Tue, Oct 4, 2011 at 4:08 PM, Girish K S
<girish.shivananjappa@linaro.org> wrote:
>
> This patch fixes the problem of infinite looping while booting.
>
> The bne instruction expects the z flag to be set to break the loop.
> The (mov r1, r1, lsr #1) doesn't behave in the expected way. If
> replaced with the movs instruction then the execution will exit
> the loop.
>
> Signed-off-by: Girish K S <girish.shivananjappa@linaro.org>
> ---
>  arch/arm/mm/proc-arm740.S |    4 ++--
>  arch/arm/mm/proc-arm940.S |    4 ++--
>  arch/arm/mm/proc-arm946.S |    4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S
> index 4506be3..9284f10 100644
> --- a/arch/arm/mm/proc-arm740.S
> +++ b/arch/arm/mm/proc-arm740.S
> @@ -77,7 +77,7 @@ __arm740_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> @@ -87,7 +87,7 @@ __arm740_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S
> index ac750d5..e639034 100644
> --- a/arch/arm/mm/proc-arm940.S
> +++ b/arch/arm/mm/proc-arm940.S
> @@ -296,7 +296,7 @@ __arm940_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> @@ -307,7 +307,7 @@ __arm940_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S
> index 683af3a..731388a 100644
> --- a/arch/arm/mm/proc-arm946.S
> +++ b/arch/arm/mm/proc-arm946.S
> @@ -341,7 +341,7 @@ __arm946_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the region register value
>        orr     r0, r0, #1                      @ set enable bit
> @@ -351,7 +351,7 @@ __arm946_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the region register value
>        orr     r0, r0, #1                      @ set enable bit
> --
> 1.7.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Girish KS Oct. 8, 2011, 5:24 a.m. UTC | #2
On Tue, Oct 4, 2011 at 4:08 PM, Girish K S
<girish.shivananjappa@linaro.org> wrote:
> This patch fixes the problem of infinite looping while booting.
>
> The bne instruction expects the z flag to be set to break the loop.
> The (mov r1, r1, lsr #1) doesn't behave in the expected way. If
> replaced with the movs instruction then the execution will exit
> the loop.
>
> Signed-off-by: Girish K S <girish.shivananjappa@linaro.org>
> ---
>  arch/arm/mm/proc-arm740.S |    4 ++--
>  arch/arm/mm/proc-arm940.S |    4 ++--
>  arch/arm/mm/proc-arm946.S |    4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S
> index 4506be3..9284f10 100644
> --- a/arch/arm/mm/proc-arm740.S
> +++ b/arch/arm/mm/proc-arm740.S
> @@ -77,7 +77,7 @@ __arm740_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> @@ -87,7 +87,7 @@ __arm740_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S
> index ac750d5..e639034 100644
> --- a/arch/arm/mm/proc-arm940.S
> +++ b/arch/arm/mm/proc-arm940.S
> @@ -296,7 +296,7 @@ __arm940_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> @@ -307,7 +307,7 @@ __arm940_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register value
>        orr     r0, r0, #1                      @ set enable bit
> diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S
> index 683af3a..731388a 100644
> --- a/arch/arm/mm/proc-arm946.S
> +++ b/arch/arm/mm/proc-arm946.S
> @@ -341,7 +341,7 @@ __arm946_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the region register value
>        orr     r0, r0, #1                      @ set enable bit
> @@ -351,7 +351,7 @@ __arm946_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero r-shift
>        orr     r0, r0, r2, lsl #1              @ the region register value
>        orr     r0, r0, #1                      @ set enable bit
> --
> 1.7.1
>
>Hello Mr choi,
 Sorry for my previous top posting.
If there is no issue with this patch can you apply to your for-next tree
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
Hyok S. Choi Oct. 10, 2011, 12:31 a.m. UTC | #3
Seems to be okay.

Thanks,
Hyok

-----Original Message-----
From: Girish KS [mailto:girishks2000@gmail.com] 
Sent: Saturday, October 08, 2011 2:25 PM
To: Girish K S
Cc: linux-arm-kernel@lists.infradead.org; rmk+kernel@arm.linux.org.uk;
linux-samsung-soc@vger.kernel.org; hyok.choi@samsung.com; patches@linaro.org
Subject: Re: [PATCH] arm: mm: Fix infinite looping issue

On Tue, Oct 4, 2011 at 4:08 PM, Girish K S <girish.shivananjappa@linaro.org>
wrote:
> This patch fixes the problem of infinite looping while booting.
>
> The bne instruction expects the z flag to be set to break the loop.
> The (mov r1, r1, lsr #1) doesn't behave in the expected way. If 
> replaced with the movs instruction then the execution will exit the 
> loop.
>
> Signed-off-by: Girish K S <girish.shivananjappa@linaro.org>
> ---
>  arch/arm/mm/proc-arm740.S |    4 ++--
>  arch/arm/mm/proc-arm940.S |    4 ++--
>  arch/arm/mm/proc-arm946.S |    4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S 
> index 4506be3..9284f10 100644
> --- a/arch/arm/mm/proc-arm740.S
> +++ b/arch/arm/mm/proc-arm740.S
> @@ -77,7 +77,7 @@ __arm740_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be 
> >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum 
> (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero 
> r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register 
> value
>        orr     r0, r0, #1                      @ set enable bit @@ 
> -87,7 +87,7 @@ __arm740_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must 
> be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum 
> (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero 
> r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register 
> value
>        orr     r0, r0, #1                      @ set enable bit diff 
> --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S index 
> ac750d5..e639034 100644
> --- a/arch/arm/mm/proc-arm940.S
> +++ b/arch/arm/mm/proc-arm940.S
> @@ -296,7 +296,7 @@ __arm940_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be 
> >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum 
> (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero 
> r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register 
> value
>        orr     r0, r0, #1                      @ set enable bit @@ 
> -307,7 +307,7 @@ __arm940_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must 
> be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum 
> (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero 
> r-shift
>        orr     r0, r0, r2, lsl #1              @ the area register 
> value
>        orr     r0, r0, #1                      @ set enable bit diff 
> --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S index 
> 683af3a..731388a 100644
> --- a/arch/arm/mm/proc-arm946.S
> +++ b/arch/arm/mm/proc-arm946.S
> @@ -341,7 +341,7 @@ __arm946_setup:
>        ldr     r1, =(CONFIG_DRAM_SIZE >> 12)   @ size of RAM (must be 
> >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum 
> (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero 
> r-shift
>        orr     r0, r0, r2, lsl #1              @ the region register 
> value
>        orr     r0, r0, #1                      @ set enable bit @@ 
> -351,7 +351,7 @@ __arm946_setup:
>        ldr     r1, =(CONFIG_FLASH_SIZE >> 12)  @ size of FLASH (must 
> be >= 4KB)
>        mov     r2, #10                         @ 11 is the minimum 
> (4KB)
>  1:     add     r2, r2, #1                      @ area size *= 2
> -       mov     r1, r1, lsr #1
> +       movs    r1, r1, lsr #1                  @ set zero bit if r1=0
>        bne     1b                              @ count not zero 
> r-shift
>        orr     r0, r0, r2, lsl #1              @ the region register 
> value
>        orr     r0, r0, #1                      @ set enable bit
> --
> 1.7.1
>
>Hello Mr choi,
 Sorry for my previous top posting.
If there is no issue with this patch can you apply to your for-next tree

> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
diff mbox

Patch

diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S
index 4506be3..9284f10 100644
--- a/arch/arm/mm/proc-arm740.S
+++ b/arch/arm/mm/proc-arm740.S
@@ -77,7 +77,7 @@  __arm740_setup:
 	ldr	r1, =(CONFIG_DRAM_SIZE >> 12)	@ size of RAM (must be >= 4KB)
 	mov	r2, #10				@ 11 is the minimum (4KB)
 1:	add	r2, r2, #1			@ area size *= 2
-	mov	r1, r1, lsr #1
+	movs	r1, r1, lsr #1			@ set zero bit if r1=0
 	bne	1b				@ count not zero r-shift
 	orr	r0, r0, r2, lsl #1		@ the area register value
 	orr	r0, r0, #1			@ set enable bit
@@ -87,7 +87,7 @@  __arm740_setup:
 	ldr	r1, =(CONFIG_FLASH_SIZE >> 12)	@ size of FLASH (must be >= 4KB)
 	mov	r2, #10				@ 11 is the minimum (4KB)
 1:	add	r2, r2, #1			@ area size *= 2
-	mov	r1, r1, lsr #1
+	movs	r1, r1, lsr #1			@ set zero bit if r1=0
 	bne	1b				@ count not zero r-shift
 	orr	r0, r0, r2, lsl #1		@ the area register value
 	orr	r0, r0, #1			@ set enable bit
diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S
index ac750d5..e639034 100644
--- a/arch/arm/mm/proc-arm940.S
+++ b/arch/arm/mm/proc-arm940.S
@@ -296,7 +296,7 @@  __arm940_setup:
 	ldr	r1, =(CONFIG_DRAM_SIZE >> 12)	@ size of RAM (must be >= 4KB)
 	mov	r2, #10				@ 11 is the minimum (4KB)
 1:	add	r2, r2, #1			@ area size *= 2
-	mov	r1, r1, lsr #1
+	movs	r1, r1, lsr #1			@ set zero bit if r1=0
 	bne	1b				@ count not zero r-shift
 	orr	r0, r0, r2, lsl #1		@ the area register value
 	orr	r0, r0, #1			@ set enable bit
@@ -307,7 +307,7 @@  __arm940_setup:
 	ldr	r1, =(CONFIG_FLASH_SIZE >> 12)	@ size of FLASH (must be >= 4KB)
 	mov	r2, #10				@ 11 is the minimum (4KB)
 1:	add	r2, r2, #1			@ area size *= 2
-	mov	r1, r1, lsr #1
+	movs	r1, r1, lsr #1			@ set zero bit if r1=0
 	bne	1b				@ count not zero r-shift
 	orr	r0, r0, r2, lsl #1		@ the area register value
 	orr	r0, r0, #1			@ set enable bit
diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S
index 683af3a..731388a 100644
--- a/arch/arm/mm/proc-arm946.S
+++ b/arch/arm/mm/proc-arm946.S
@@ -341,7 +341,7 @@  __arm946_setup:
 	ldr	r1, =(CONFIG_DRAM_SIZE >> 12)	@ size of RAM (must be >= 4KB)
 	mov	r2, #10				@ 11 is the minimum (4KB)
 1:	add	r2, r2, #1			@ area size *= 2
-	mov	r1, r1, lsr #1
+	movs	r1, r1, lsr #1			@ set zero bit if r1=0
 	bne	1b				@ count not zero r-shift
 	orr	r0, r0, r2, lsl #1		@ the region register value
 	orr	r0, r0, #1			@ set enable bit
@@ -351,7 +351,7 @@  __arm946_setup:
 	ldr	r1, =(CONFIG_FLASH_SIZE >> 12)	@ size of FLASH (must be >= 4KB)
 	mov	r2, #10				@ 11 is the minimum (4KB)
 1:	add	r2, r2, #1			@ area size *= 2
-	mov	r1, r1, lsr #1
+	movs	r1, r1, lsr #1			@ set zero bit if r1=0
 	bne	1b				@ count not zero r-shift
 	orr	r0, r0, r2, lsl #1		@ the region register value
 	orr	r0, r0, #1			@ set enable bit