Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b0cbe97 authored by Olaf Hering's avatar Olaf Hering Committed by Paul Mackerras
Browse files

[PATCH] ppc64 boot: use memset to clear bss



Use memset to clear bss, instead of own version.

Signed-off-by: default avatarOlaf Hering <olh@suse.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Anton Blanchard <anton@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 06cf26be
Loading
Loading
Loading
Loading
+0 −19
Original line number Diff line number Diff line
@@ -25,24 +25,5 @@ _start:
	sync
	isync

	## Clear out the BSS as per ANSI C requirements

	lis	r7,_end@ha
	addi    r7,r7,_end@l		# r7 = &_end 
	lis	r8,__bss_start@ha	# 
	addi    r8,r8,__bss_start@l	# r8 = &_bss_start

	## Determine how large an area, in number of words, to clear

	subf	r7,r8,r7		# r7 = &_end - &_bss_start + 1 
	addi	r7,r7,3			# r7 += 3 
	srwi.	r7,r7,2			# r7 = size in words.
	beq	3f			# If the size is zero, don't bother
	addi	r8,r8,-4		# r8 -= 4 
	mtctr	r7			# SPRN_CTR = number of words to clear
	li	r0,0			# r0 = 0
2:	stwu	r0,4(r8)		# Clear out a word
	bdnz	2b			# Keep clearing until done
3:
	b	start
+3 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ extern void flush_cache(void *, unsigned long);
#define	ONE_MB		0x100000

extern char _start[];
extern char __bss_start[];
extern char _end[];
extern char _vmlinux_start[];
extern char _vmlinux_end[];
@@ -138,6 +139,8 @@ void start(unsigned long a1, unsigned long a2, void *promptr)
	Elf64_Ehdr *elf64;
	Elf64_Phdr *elf64ph;

	memset(__bss_start, 0, _end - __bss_start);

	prom = (int (*)(void *)) promptr;
	chosen_handle = finddevice("/chosen");
	if (chosen_handle == (void *) -1)