From 2dedcf9a80516b8983594cfe5467e03036d07362 Mon Sep 17 00:00:00 2001 From: Mao Minkai Date: Tue, 6 Sep 2022 16:39:04 +0800 Subject: [PATCH] sw64: clear .bss section using memset() Sunway inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I5XTGY -------------------------------- Signed-off-by: Mao Minkai Reviewed-by: He Sheng Signed-off-by: Gu Zitao --- arch/sw_64/kernel/head.S | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/arch/sw_64/kernel/head.S b/arch/sw_64/kernel/head.S index 3dfb95c91d70..7cce2a8859e5 100644 --- a/arch/sw_64/kernel/head.S +++ b/arch/sw_64/kernel/head.S @@ -26,23 +26,11 @@ __start: /* ... and find our stack ... */ ldi $30, ASM_THREAD_SIZE($8) /* ... and then we can clear bss data. */ - ldi $2, __bss_start - ldi $3, __bss_stop - /* 8 bytes alignment */ -1: and $2, 0x7, $1 # align check - bne $1, 3f -2: subl $3, $2, $1 # align clear - ble $1, 4f - subl $1, 0x8, $1 - ble $1, 3f - stl $31, 0($2) - addl $2, 8, $2 - br $31, 2b -3: stb $31, 0($2) # non align clear - addl $2, 1, $2 - subl $3, $2, $1 - bgt $1, 1b -4:# finish clear + ldi $16, __bss_start + ldi $18, __bss_stop + subl $18, $16, $18 + mov $31, $17 + call $26, __constant_c_memset #ifdef CONFIG_RELOCATABLE ldi $30, -8($30) stl $29, 0($30) -- GitLab