arm: Fix to mistake clean the memory space
PATCH v4 1/1 arm: Fix to mistake clean the memory space
From: Zhong Hongbo <[email protected]>
In currently, when __bss_start is equal to __bss_end__, The bss loop will clear all the things in memory space.
But just only when __bss_end__ greater than __bss_start__, we do the clear bss section operation.
---
Change for V1
- Fixed bss clear operation, no just skip it.
- Adjust the commit information
Change for V2
- Modify all the bss clean operation for arm platform
- Adjust the title
Change for V3
- Modify the history information and the tag ot the patch
--- arch/arm/cpu/arm1136/start.S | 8 +++++--- arch/arm/cpu/arm1176/start.S | 9 +++++---- arch/arm/cpu/arm720t/start.S | 8 +++++--- arch/arm/cpu/arm920t/start.S | 8 +++++--- arch/arm/cpu/arm925t/start.S | 8 +++++--- arch/arm/cpu/arm946es/start.S | 8 +++++--- arch/arm/cpu/arm_intcm/start.S | 8 +++++--- arch/arm/cpu/armv7/start.S | 8 +++++--- arch/arm/cpu/ixp/start.S | 8 +++++--- arch/arm/cpu/lh7a40x/start.S | 8 +++++--- arch/arm/cpu/pxa/start.S | 8 +++++--- arch/arm/cpu/s3c44b0/start.S | 8 +++++--- arch/arm/cpu/sa1100/start.S | 8 +++++--- 13 files changed, 65 insertions(+), 40 deletions(-)
arch/arm/cpu/arm1136/start.S +5 -3
@@ -251,10 +251,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /* #ifndef CONFIG_SPL_BUILD */ /*
arch/arm/cpu/arm1176/start.S +5 -4
@@ -351,11 +351,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l - + b clbss_l +clbss_e: #ifndef CONFIG_NAND_SPL bl coloured_LED_init bl red_led_on
arch/arm/cpu/arm720t/start.S +5 -3
@@ -228,10 +228,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on
arch/arm/cpu/arm920t/start.S +5 -3
@@ -271,10 +271,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on
arch/arm/cpu/arm925t/start.S +5 -3
@@ -265,10 +265,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on
arch/arm/cpu/arm946es/start.S +5 -3
@@ -236,10 +236,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - blo clbss_l + b clbss_l +clbss_e: #endif /*
arch/arm/cpu/arm_intcm/start.S +5 -3
@@ -232,10 +232,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on
arch/arm/cpu/armv7/start.S +5 -3
@@ -259,10 +259,12 @@ clear_bss: #endif mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: /* * We are done. Do not return, instead branch to second part of board
arch/arm/cpu/ixp/start.S +5 -3
@@ -334,10 +334,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on
arch/arm/cpu/lh7a40x/start.S +5 -3
@@ -245,10 +245,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /*
arch/arm/cpu/pxa/start.S +5 -3
@@ -258,10 +258,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /* #ifndef CONFIG_SPL_BUILD */ /*
arch/arm/cpu/s3c44b0/start.S +5 -3
@@ -217,10 +217,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on
arch/arm/cpu/sa1100/start.S +5 -3
@@ -221,10 +221,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /*
Signature · 1 line
1.7.5.4
PATCH v4 1/1 arm: Fix to mistake clean the memory space
Quoted 9 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In currently, when
__bss_startis equal to__bss_end__, The bss loop will clear all the things in memory space.But just only when
__bss_end__greater than__bss_start__, we do the clear bss section operation.Signed-off-by Zhong Hongbo <[email protected]>
Quoted 24 lines
---
Change for V1
- Fixed bss clear operation, no just skip it.
- Adjust the commit information
Change for V2
- Modify all the bss clean operation for arm platform
- Adjust the title
Change for V3
- Modify the history information and the tag ot the patch--- arch/arm/cpu/arm1136/start.S | 8 +++++--- arch/arm/cpu/arm1176/start.S | 9 +++++---- arch/arm/cpu/arm720t/start.S | 8 +++++--- arch/arm/cpu/arm920t/start.S | 8 +++++--- arch/arm/cpu/arm925t/start.S | 8 +++++--- arch/arm/cpu/arm946es/start.S | 8 +++++--- arch/arm/cpu/arm_intcm/start.S | 8 +++++--- arch/arm/cpu/armv7/start.S | 8 +++++--- arch/arm/cpu/ixp/start.S | 8 +++++--- arch/arm/cpu/lh7a40x/start.S | 8 +++++--- arch/arm/cpu/pxa/start.S | 8 +++++--- arch/arm/cpu/s3c44b0/start.S | 8 +++++--- arch/arm/cpu/sa1100/start.S | 8 +++++--- 13 files changed, 65 insertions(+), 40 deletions(-)
PATCH v4 1/1 arm: Fix to mistake clean the memory space
In reply to Zhong HongboHi Zhong Hongbo,
Quoted 9 lines · Zhong Hongbo
From: Zhong Hongbo <[email protected]>
In currently, when
__bss_startis equal to__bss_end__, The bss loop will clear all the things in memory space.But just only when
__bss_end__greater than__bss_start__, we do the clear bss section operation.Signed-off-by Zhong Hongbo <[email protected]>
Quoted 10 lines
---
Change for V1
- Fixed bss clear operation, no just skip it.
- Adjust the commit information
Change for V2
- Modify all the bss clean operation for arm platform
- Adjust the title
Change for V3
- Modify the history information and the tag ot the patch
---
Applied to u-boot-arm/master, thanks.
Amicalement,
Signature · 1 line
Albert.