diff options
Diffstat (limited to 'arch/arm/boot/compressed')
| -rw-r--r-- | arch/arm/boot/compressed/Makefile | 13 | ||||
| -rw-r--r-- | arch/arm/boot/compressed/head.S | 20 | 
2 files changed, 17 insertions, 16 deletions
| diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 45a6b9b7af2a..1f5a5ffe7fcf 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -25,6 +25,9 @@ endif  GCOV_PROFILE		:= n +# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in. +KCOV_INSTRUMENT		:= n +  #  # Architecture dependencies  # @@ -113,15 +116,13 @@ CFLAGS_fdt_ro.o := $(nossp_flags)  CFLAGS_fdt_rw.o := $(nossp_flags)  CFLAGS_fdt_wip.o := $(nossp_flags) -ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj) +ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin -I$(obj)  asflags-y := -DZIMAGE  # Supply kernel BSS size to the decompressor via a linker symbol. -KBSS_SZ = $(shell $(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \ -		perl -e 'while (<>) { \ -			$$bss_start=hex($$1) if /^([[:xdigit:]]+) B __bss_start$$/; \ -			$$bss_end=hex($$1) if /^([[:xdigit:]]+) B __bss_stop$$/; \ -		}; printf "%d\n", $$bss_end - $$bss_start;') +KBSS_SZ = $(shell echo $$(($$($(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \ +		sed -n -e 's/^\([^ ]*\) [AB] __bss_start$$/-0x\1/p' \ +		       -e 's/^\([^ ]*\) [AB] __bss_stop$$/+0x\1/p') )) )  LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)  # Supply ZRELADDR to the decompressor via a linker symbol.  ifneq ($(CONFIG_AUTO_ZRELADDR),y) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 45c8823c3750..517e0e18f0b8 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -29,19 +29,19 @@  #if defined(CONFIG_DEBUG_ICEDCC)  #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) || defined(CONFIG_CPU_V7) -		.macro	loadsp, rb, tmp +		.macro	loadsp, rb, tmp1, tmp2  		.endm  		.macro	writeb, ch, rb  		mcr	p14, 0, \ch, c0, c5, 0  		.endm  #elif defined(CONFIG_CPU_XSCALE) -		.macro	loadsp, rb, tmp +		.macro	loadsp, rb, tmp1, tmp2  		.endm  		.macro	writeb, ch, rb  		mcr	p14, 0, \ch, c8, c0, 0  		.endm  #else -		.macro	loadsp, rb, tmp +		.macro	loadsp, rb, tmp1, tmp2  		.endm  		.macro	writeb, ch, rb  		mcr	p14, 0, \ch, c1, c0, 0 @@ -57,7 +57,7 @@  		.endm  #if defined(CONFIG_ARCH_SA1100) -		.macro	loadsp, rb, tmp +		.macro	loadsp, rb, tmp1, tmp2  		mov	\rb, #0x80000000	@ physical base address  #ifdef CONFIG_DEBUG_LL_SER3  		add	\rb, \rb, #0x00050000	@ Ser3 @@ -66,8 +66,8 @@  #endif  		.endm  #else -		.macro	loadsp,	rb, tmp -		addruart \rb, \tmp +		.macro	loadsp,	rb, tmp1, tmp2 +		addruart \rb, \tmp1, \tmp2  		.endm  #endif  #endif @@ -561,8 +561,6 @@ not_relocated:	mov	r0, #0  		bl	decompress_kernel  		bl	cache_clean_flush  		bl	cache_off -		mov	r1, r7			@ restore architecture number -		mov	r2, r8			@ restore atags pointer  #ifdef CONFIG_ARM_VIRT_EXT  		mrs	r0, spsr		@ Get saved CPU boot mode @@ -1297,7 +1295,7 @@ phex:		adr	r3, phexbuf  		b	1b  @ puts corrupts {r0, r1, r2, r3} -puts:		loadsp	r3, r1 +puts:		loadsp	r3, r2, r1  1:		ldrb	r2, [r0], #1  		teq	r2, #0  		moveq	pc, lr @@ -1314,8 +1312,8 @@ puts:		loadsp	r3, r1  @ putc corrupts {r0, r1, r2, r3}  putc:  		mov	r2, r0 +		loadsp	r3, r1, r0  		mov	r0, #0 -		loadsp	r3, r1  		b	2b  @ memdump corrupts {r0, r1, r2, r3, r10, r11, r12, lr} @@ -1365,6 +1363,8 @@ __hyp_reentry_vectors:  __enter_kernel:  		mov	r0, #0			@ must be 0 +		mov	r1, r7			@ restore architecture number +		mov	r2, r8			@ restore atags pointer   ARM(		mov	pc, r4		)	@ call kernel   M_CLASS(	add	r4, r4, #1	)	@ enter in Thumb mode for M class   THUMB(		bx	r4		)	@ entry point is always ARM for A/R classes |