diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2014-04-17 07:43:26 -0400 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2014-06-26 00:44:05 -0400 |
commit | bef444a33004f4062930df1fc703a25dd6d7b460 (patch) | |
tree | ed7f20642c6319ca0d8c1841d97ad10fa1ba2f01 /arch/arc | |
parent | ba25915fb2cd18152cb14b144dbe8bf2f2bd8e45 (diff) |
ARC: optimize kernel bss clearing in early boot code
using ARC ZOL which reduces tot num of instructions by half
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc')
-rw-r--r-- | arch/arc/kernel/head.S | 7 | ||||
-rw-r--r-- | arch/arc/kernel/vmlinux.lds.S | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/arch/arc/kernel/head.S b/arch/arc/kernel/head.S index 07a58f2d3077..4d2481bd8b98 100644 --- a/arch/arc/kernel/head.S +++ b/arch/arc/kernel/head.S | |||
@@ -77,10 +77,11 @@ stext: | |||
77 | ; Clear BSS before updating any globals | 77 | ; Clear BSS before updating any globals |
78 | ; XXX: use ZOL here | 78 | ; XXX: use ZOL here |
79 | mov r5, __bss_start | 79 | mov r5, __bss_start |
80 | mov r6, __bss_stop | 80 | sub r6, __bss_stop, r5 |
81 | lsr.f lp_count, r6, 2 | ||
82 | lpnz 1f | ||
83 | st.ab 0, [r5, 4] | ||
81 | 1: | 84 | 1: |
82 | st.ab 0, [r5,4] | ||
83 | brlt r5, r6, 1b | ||
84 | 85 | ||
85 | ; Uboot - kernel ABI | 86 | ; Uboot - kernel ABI |
86 | ; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2 | 87 | ; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2 |
diff --git a/arch/arc/kernel/vmlinux.lds.S b/arch/arc/kernel/vmlinux.lds.S index 2555f5886af6..dd35bde39f69 100644 --- a/arch/arc/kernel/vmlinux.lds.S +++ b/arch/arc/kernel/vmlinux.lds.S | |||
@@ -116,7 +116,7 @@ SECTIONS | |||
116 | 116 | ||
117 | _edata = .; | 117 | _edata = .; |
118 | 118 | ||
119 | BSS_SECTION(0, 0, 0) | 119 | BSS_SECTION(4, 4, 4) |
120 | 120 | ||
121 | #ifdef CONFIG_ARC_DW2_UNWIND | 121 | #ifdef CONFIG_ARC_DW2_UNWIND |
122 | . = ALIGN(PAGE_SIZE); | 122 | . = ALIGN(PAGE_SIZE); |