mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-29 23:28:52 +01:00 
			
		
		
		
	Fixed MTP to work with TWRP
This commit is contained in:
		
						commit
						f6dfaef42e
					
				
					 50820 changed files with 20846062 additions and 0 deletions
				
			
		
							
								
								
									
										44
									
								
								arch/xtensa/boot/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								arch/xtensa/boot/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| #
 | ||||
| # arch/xtensa/boot/Makefile
 | ||||
| #
 | ||||
| # This file is subject to the terms and conditions of the GNU General Public
 | ||||
| # License.  See the file "COPYING" in the main directory of this archive
 | ||||
| # for more details.
 | ||||
| #
 | ||||
| #
 | ||||
| 
 | ||||
| 
 | ||||
| # KBUILD_CFLAGS used when building rest of boot (takes effect recursively)
 | ||||
| KBUILD_CFLAGS	+= -fno-builtin -Iarch/$(ARCH)/boot/include | ||||
| HOSTFLAGS	+= -Iarch/$(ARCH)/boot/include | ||||
| 
 | ||||
| BIG_ENDIAN	:= $(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#") | ||||
| 
 | ||||
| export ccflags-y | ||||
| export BIG_ENDIAN | ||||
| 
 | ||||
| subdir-y	:= lib | ||||
| 
 | ||||
| # Subdirs for the boot loader(s)
 | ||||
| 
 | ||||
| bootdir-$(CONFIG_XTENSA_PLATFORM_ISS)	 += boot-elf | ||||
| bootdir-$(CONFIG_XTENSA_PLATFORM_XT2000) += boot-redboot boot-elf boot-uboot | ||||
| bootdir-$(CONFIG_XTENSA_PLATFORM_XTFPGA) += boot-redboot boot-elf boot-uboot | ||||
| 
 | ||||
| zImage Image: $(bootdir-y) | ||||
| 
 | ||||
| $(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \ | ||||
| 	      $(addprefix $(obj)/,$(host-progs)) | ||||
| 	$(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS) | ||||
| 
 | ||||
| OBJCOPYFLAGS = --strip-all -R .comment -R .note.gnu.build-id -O binary | ||||
| 
 | ||||
| vmlinux.bin: vmlinux FORCE | ||||
| 	$(call if_changed,objcopy) | ||||
| 
 | ||||
| vmlinux.bin.gz: vmlinux.bin FORCE | ||||
| 	$(call if_changed,gzip) | ||||
| 
 | ||||
| boot-elf: vmlinux.bin | ||||
| boot-redboot: vmlinux.bin.gz | ||||
| boot-uboot: vmlinux.bin.gz | ||||
							
								
								
									
										34
									
								
								arch/xtensa/boot/boot-elf/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								arch/xtensa/boot/boot-elf/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| #
 | ||||
| # This file is subject to the terms and conditions of the GNU General Public
 | ||||
| # License.  See the file "COPYING" in the main directory of this archive
 | ||||
| # for more details.
 | ||||
| #
 | ||||
| 
 | ||||
| ifeq ($(BIG_ENDIAN),1) | ||||
| OBJCOPY_ARGS    := -O elf32-xtensa-be | ||||
| else | ||||
| OBJCOPY_ARGS    := -O elf32-xtensa-le | ||||
| endif | ||||
| 
 | ||||
| export OBJCOPY_ARGS | ||||
| export CPPFLAGS_boot.lds += -P -C | ||||
| export KBUILD_AFLAGS += -mtext-section-literals | ||||
| 
 | ||||
| boot-y		:= bootstrap.o | ||||
| 
 | ||||
| OBJS		:= $(addprefix $(obj)/,$(boot-y)) | ||||
| 
 | ||||
| $(obj)/Image.o: vmlinux.bin $(OBJS) | ||||
| 	$(Q)$(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \
 | ||||
| 		--add-section image=vmlinux.bin \
 | ||||
| 		--set-section-flags image=contents,alloc,load,load,data \
 | ||||
| 		$(OBJS) $@ | ||||
| 
 | ||||
| $(obj)/../Image.elf: $(obj)/Image.o $(obj)/boot.lds | ||||
| 	$(Q)$(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) \
 | ||||
| 		-T $(obj)/boot.lds \
 | ||||
| 		--build-id=none \
 | ||||
| 		-o $@ $(obj)/Image.o | ||||
| 	$(Q)$(kecho) '  Kernel: $@ is ready' | ||||
| 
 | ||||
| zImage:	$(obj)/../Image.elf | ||||
							
								
								
									
										54
									
								
								arch/xtensa/boot/boot-elf/boot.lds.S
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								arch/xtensa/boot/boot-elf/boot.lds.S
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | |||
| /* | ||||
|  *  linux/arch/xtensa/boot/boot-elf/boot.lds.S | ||||
|  * | ||||
|  *  Copyright (C) 2008 - 2013 by Tensilica Inc. | ||||
|  * | ||||
|  *  Chris Zankel <chris@zankel.net>
 | ||||
|  *  Marc Gauthier <marc@tensilica.com
 | ||||
|  *  Pete Delaney <piet@tensilica.com>
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify
 | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/vectors.h> | ||||
| OUTPUT_ARCH(xtensa) | ||||
| ENTRY(_ResetVector) | ||||
| 
 | ||||
| SECTIONS | ||||
| { | ||||
| 	.ResetVector.text XCHAL_RESET_VECTOR_VADDR : | ||||
| 	{ | ||||
| 		*(.ResetVector.text) | ||||
| 	} | ||||
| 
 | ||||
| 	.image KERNELOFFSET: AT (LOAD_MEMORY_ADDRESS) | ||||
| 	{ | ||||
| 		_image_start = .;
 | ||||
| 		*(image) | ||||
| 		. = (. + 3) & ~ 3;
 | ||||
| 		_image_end = .	;
 | ||||
| 	} | ||||
| 
 | ||||
| 	.bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3): | ||||
| 	{ | ||||
| 		__bss_start = .;
 | ||||
| 		*(.sbss) | ||||
| 		*(.scommon) | ||||
| 		*(.dynbss) | ||||
| 		*(.bss) | ||||
| 		__bss_end = .;
 | ||||
| 	} | ||||
| 
 | ||||
| 	/* | ||||
| 	 * This is a remapped copy of the Reset Vector Code. | ||||
| 	 * It keeps gdb in sync with the PC after switching | ||||
| 	 * to the temporary mapping used while setting up | ||||
| 	 * the V2 MMU mappings for Linux. | ||||
| 	 */ | ||||
| 	.ResetVector.remapped_text 0x46000000 (INFO): | ||||
| 	{ | ||||
| 		*(.ResetVector.remapped_text) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										104
									
								
								arch/xtensa/boot/boot-elf/bootstrap.S
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								arch/xtensa/boot/boot-elf/bootstrap.S
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,104 @@ | |||
| /* | ||||
|  * arch/xtensa/boot/boot-elf/bootstrap.S | ||||
|  * | ||||
|  * Low-level exception handling | ||||
|  * | ||||
|  * This file is subject to the terms and conditions of the GNU General Public | ||||
|  * License.  See the file "COPYING" in the main directory of this archive | ||||
|  * for more details. | ||||
|  * | ||||
|  * Copyright (C) 2004 - 2013 by Tensilica Inc. | ||||
|  * | ||||
|  * Chris Zankel <chris@zankel.net>
 | ||||
|  * Marc Gauthier <marc@tensilica.com>
 | ||||
|  * Piet Delaney <piet@tensilica.com>
 | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/bootparam.h> | ||||
| #include <asm/processor.h> | ||||
| #include <asm/pgtable.h> | ||||
| #include <asm/page.h> | ||||
| #include <asm/cacheasm.h> | ||||
| #include <asm/initialize_mmu.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| 	.section	.ResetVector.text, "ax" | ||||
| 	.global         _ResetVector
 | ||||
| 	.global         reset
 | ||||
| 
 | ||||
| _ResetVector: | ||||
| 	_j _SetupMMU | ||||
| 
 | ||||
| 	.begin  no-absolute-literals | ||||
| 	.literal_position | ||||
| 
 | ||||
| 	.align 4
 | ||||
| RomInitAddr: | ||||
| #if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \ | ||||
| 	XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY | ||||
| 	.word 0x00003000
 | ||||
| #else | ||||
| 	.word 0xd0003000
 | ||||
| #endif | ||||
| RomBootParam: | ||||
| 	.word _bootparam
 | ||||
| _bootparam: | ||||
| 	.short	BP_TAG_FIRST
 | ||||
| 	.short	4
 | ||||
| 	.long	BP_VERSION
 | ||||
| 	.short	BP_TAG_LAST
 | ||||
| 	.short	0
 | ||||
| 	.long	0
 | ||||
| 
 | ||||
| 	.align  4
 | ||||
| _SetupMMU: | ||||
| 	movi	a0, 0 | ||||
| 	wsr	a0, windowbase | ||||
| 	rsync | ||||
| 	movi	a0, 1 | ||||
| 	wsr	a0, windowstart | ||||
| 	rsync | ||||
| 	movi	a0, 0x1F | ||||
| 	wsr	a0, ps | ||||
| 	rsync | ||||
| 
 | ||||
| 	Offset = _SetupMMU - _ResetVector | ||||
| 
 | ||||
| #ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX | ||||
| 	initialize_mmu | ||||
| #endif | ||||
| 
 | ||||
| 	.end    no-absolute-literals | ||||
| 
 | ||||
| 	rsil    a0, XCHAL_DEBUGLEVEL-1 | ||||
| 	rsync | ||||
| reset: | ||||
| 	l32r    a0, RomInitAddr | ||||
| 	l32r	a2, RomBootParam | ||||
| 	movi	a3, 0 | ||||
| 	movi	a4, 0 | ||||
| 	jx      a0 | ||||
| 
 | ||||
| 	.align 4
 | ||||
| 
 | ||||
| 	.section	.ResetVector.remapped_text, "x" | ||||
| 	.global         _RemappedResetVector
 | ||||
| 
 | ||||
| 	/* Do org before literals */ | ||||
| 	.org 0
 | ||||
| 
 | ||||
| _RemappedResetVector: | ||||
| 	.begin  no-absolute-literals | ||||
| 	.literal_position | ||||
| 
 | ||||
| 	_j	_RemappedSetupMMU | ||||
| 
 | ||||
| 	/* Position Remapped code at the same location as the original code */ | ||||
| 	. = _RemappedResetVector + Offset | ||||
| 
 | ||||
| _RemappedSetupMMU: | ||||
| #ifndef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX | ||||
| 	initialize_mmu | ||||
| #endif | ||||
| 
 | ||||
| 	.end    no-absolute-literals | ||||
							
								
								
									
										35
									
								
								arch/xtensa/boot/boot-redboot/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								arch/xtensa/boot/boot-redboot/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,35 @@ | |||
| #
 | ||||
| # This file is subject to the terms and conditions of the GNU General Public
 | ||||
| # License.  See the file "COPYING" in the main directory of this archive
 | ||||
| # for more details.
 | ||||
| #
 | ||||
| 
 | ||||
| ifeq ($(BIG_ENDIAN),1) | ||||
| OBJCOPY_ARGS 	:= -O elf32-xtensa-be | ||||
| else | ||||
| OBJCOPY_ARGS 	:= -O elf32-xtensa-le | ||||
| endif | ||||
| 
 | ||||
| LD_ARGS	= -T $(srctree)/$(obj)/boot.ld | ||||
| 
 | ||||
| boot-y	:= bootstrap.o | ||||
| 
 | ||||
| OBJS	:= $(addprefix $(obj)/,$(boot-y)) | ||||
| LIBS	:= arch/xtensa/boot/lib/lib.a arch/xtensa/lib/lib.a | ||||
| 
 | ||||
| LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | ||||
| 
 | ||||
| $(obj)/zImage.o: vmlinux.bin.gz $(OBJS) | ||||
| 	$(Q)$(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \
 | ||||
| 		--add-section image=vmlinux.bin.gz \
 | ||||
| 		--set-section-flags image=contents,alloc,load,load,data \
 | ||||
| 		$(OBJS) $@ | ||||
| 
 | ||||
| $(obj)/zImage.elf: $(obj)/zImage.o $(LIBS) | ||||
| 	$(Q)$(LD) $(LD_ARGS) -o $@ $^ -L/xtensa-elf/lib $(LIBGCC) | ||||
| 
 | ||||
| $(obj)/../zImage.redboot: $(obj)/zImage.elf | ||||
| 	$(Q)$(OBJCOPY) -S -O binary $< $@ | ||||
| 	$(Q)$(kecho) '  Kernel: $@ is ready' | ||||
| 
 | ||||
| zImage: $(obj)/../zImage.redboot | ||||
							
								
								
									
										59
									
								
								arch/xtensa/boot/boot-redboot/boot.ld
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								arch/xtensa/boot/boot-redboot/boot.ld
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| OUTPUT_ARCH(xtensa) | ||||
| 
 | ||||
| SECTIONS | ||||
| { | ||||
| 	.start 0xD1000000 : { *(.start) } | ||||
| 
 | ||||
| 	.text : | ||||
| 	{ | ||||
| 		__reloc_start = . ; | ||||
| 		_text_start = . ; | ||||
| 		*(.literal .text.literal .text) | ||||
| 		_text_end = . ; | ||||
| 	} | ||||
| 
 | ||||
| 	.rodata ALIGN(0x04): | ||||
| 	{ | ||||
| 		*(.rodata) | ||||
| 		*(.rodata1) | ||||
| 	} | ||||
| 
 | ||||
| 	.data ALIGN(0x04): | ||||
| 	{ | ||||
| 		*(.data) | ||||
| 		*(.data1) | ||||
| 		*(.sdata) | ||||
| 		*(.sdata2) | ||||
| 		*(.got.plt) | ||||
| 		*(.got) | ||||
| 		*(.dynamic) | ||||
| 	} | ||||
| 
 | ||||
| 	__reloc_end = . ; | ||||
| 
 | ||||
| 	. = ALIGN(0x10); | ||||
| 	__image_load = . ; | ||||
| 	.image 0xd0003000: AT(__image_load) | ||||
| 	{ | ||||
| 		_image_start = .; | ||||
| 		*(image) | ||||
| 		. = (. + 3) & ~ 3; | ||||
| 		_image_end = .	; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	.bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3): | ||||
| 	{ | ||||
| 		__bss_start = .; | ||||
| 		*(.sbss) | ||||
| 		*(.scommon) | ||||
| 		*(.dynbss) | ||||
| 		*(.bss) | ||||
| 		__bss_end = .; | ||||
| 	} | ||||
| 	_end = .; | ||||
| 	_param_start = .; | ||||
| 
 | ||||
| 
 | ||||
| 	PROVIDE (end = .); | ||||
| } | ||||
							
								
								
									
										249
									
								
								arch/xtensa/boot/boot-redboot/bootstrap.S
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										249
									
								
								arch/xtensa/boot/boot-redboot/bootstrap.S
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,249 @@ | |||
| #include <variant/core.h> | ||||
| #include <asm/regs.h> | ||||
| #include <asm/asmmacro.h> | ||||
| #include <asm/cacheasm.h> | ||||
| 	/* | ||||
| 	 * RB-Data: RedBoot data/bss | ||||
| 	 * P:	    Boot-Parameters | ||||
| 	 * L:	    Kernel-Loader | ||||
| 	 * | ||||
| 	 * The Linux-Kernel image including the loader must be loaded | ||||
| 	 * to a position so that the kernel and the boot parameters | ||||
| 	 * can fit in the space before the load address. | ||||
| 	 *  ______________________________________________________ | ||||
| 	 * |_RB-Data_|_P_|__________|_L_|___Linux-Kernel___|______| | ||||
| 	 *                          ^ | ||||
| 	 *                          ^ Load address | ||||
| 	 *  ______________________________________________________ | ||||
| 	 * |___Linux-Kernel___|_P_|_L_|___________________________| | ||||
| 	 * | ||||
| 	 * The loader copies the parameter to the position that will | ||||
| 	 * be the end of the kernel and itself to the end of the | ||||
| 	 * parameter list. | ||||
| 	 */ | ||||
| 
 | ||||
| /* Make sure we have enough space for the 'uncompressor' */ | ||||
| 
 | ||||
| #define STACK_SIZE 32768 | ||||
| #define HEAP_SIZE (131072*4) | ||||
| 
 | ||||
| 	# a2: Parameter list | ||||
| 	# a3: Size of parameter list | ||||
| 
 | ||||
| 	.section .start, "ax" | ||||
| 
 | ||||
| 	.globl __start
 | ||||
| 	/* this must be the first byte of the loader! */ | ||||
| __start: | ||||
| 	entry	sp, 32		# we do not intend to return | ||||
| 	_call0	_start | ||||
| __start_a0: | ||||
| 	.align 4
 | ||||
| 
 | ||||
| 	.section .text, "ax" | ||||
| 	.begin literal_prefix .text | ||||
| 
 | ||||
| 	/* put literals in here! */ | ||||
| 
 | ||||
| 	.globl _start
 | ||||
| _start: | ||||
| 
 | ||||
| 	/* 'reset' window registers */ | ||||
| 
 | ||||
| 	movi	a4, 1 | ||||
| 	wsr	a4, ps | ||||
| 	rsync | ||||
| 
 | ||||
| 	rsr	a5, windowbase | ||||
| 	ssl	a5 | ||||
| 	sll	a4, a4 | ||||
| 	wsr	a4, windowstart | ||||
| 	rsync | ||||
| 
 | ||||
| 	movi	a4, 0x00040000 | ||||
| 	wsr	a4, ps | ||||
| 	rsync | ||||
| 
 | ||||
| 	/* copy the loader to its address | ||||
| 	 * Note: The loader itself is a very small piece, so we assume we | ||||
| 	 *       don't partially overlap. We also assume (even more important) | ||||
| 	 *	 that the kernel image is out of the way. Usually, when the | ||||
| 	 *	 load address of this image is not at an arbitrary address, | ||||
| 	 *	 but aligned to some 10K's we shouldn't overlap. | ||||
| 	 */ | ||||
| 
 | ||||
| 	/* Note: The assembler cannot relax "addi a0, a0, ..." to an | ||||
| 	   l32r, so we load to a4 first. */ | ||||
| 
 | ||||
| 	# addi	a4, a0, __start - __start_a0 | ||||
| 	# mov	a0, a4 | ||||
| 
 | ||||
| 	movi	a4, __start | ||||
| 	movi	a5, __start_a0 | ||||
| 	add	a4, a0, a4 | ||||
| 	sub	a0, a4, a5 | ||||
| 
 | ||||
| 	movi	a4, __start | ||||
| 	movi	a5, __reloc_end | ||||
| 
 | ||||
| 	# a0: address where this code has been loaded | ||||
| 	# a4: compiled address of __start | ||||
| 	# a5: compiled end address | ||||
| 
 | ||||
| 	mov.n	a7, a0 | ||||
| 	mov.n	a8, a4 | ||||
| 
 | ||||
| 1: | ||||
| 	l32i	a10, a7, 0 | ||||
| 	l32i	a11, a7, 4 | ||||
| 	s32i	a10, a8, 0 | ||||
| 	s32i	a11, a8, 4 | ||||
| 	l32i	a10, a7, 8 | ||||
| 	l32i	a11, a7, 12 | ||||
| 	s32i	a10, a8, 8 | ||||
| 	s32i	a11, a8, 12 | ||||
| 	addi	a8, a8, 16 | ||||
| 	addi	a7, a7, 16 | ||||
| 	blt	a8, a5, 1b | ||||
| 
 | ||||
| 
 | ||||
| 	/* We have to flush and invalidate the caches here before we jump. */ | ||||
| 
 | ||||
| #if XCHAL_DCACHE_IS_WRITEBACK | ||||
| 
 | ||||
| 	___flush_dcache_all a5 a6 | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| 	___invalidate_icache_all a5 a6 | ||||
| 	isync | ||||
| 
 | ||||
| 	movi	a11, _reloc | ||||
| 	jx	a11 | ||||
| 
 | ||||
| 	.globl _reloc
 | ||||
| _reloc: | ||||
| 
 | ||||
| 	/* RedBoot is now at the end of the memory, so we don't have | ||||
| 	 * to copy the parameter list. Keep the code around; in case
 | ||||
| 	 * we need it again. */ | ||||
| #if 0 | ||||
| 	# a0: load address | ||||
| 	# a2: start address of parameter list | ||||
| 	# a3: length of parameter list | ||||
| 	# a4: __start | ||||
| 
 | ||||
| 	/* copy the parameter list out of the way */ | ||||
| 
 | ||||
| 	movi	a6, _param_start | ||||
| 	add	a3, a2, a3 | ||||
| 2: | ||||
| 	l32i	a8, a2, 0 | ||||
| 	s32i	a8, a6, 0 | ||||
| 	addi	a2, a2, 4 | ||||
| 	addi	a6, a6, 4 | ||||
| 	blt	a2, a3, 2b | ||||
| #endif | ||||
| 
 | ||||
| 	/* clear BSS section */ | ||||
| 	movi	a6, __bss_start | ||||
| 	movi	a7, __bss_end | ||||
| 	movi.n	a5, 0 | ||||
| 3: | ||||
| 	s32i	a5, a6, 0 | ||||
| 	addi	a6, a6, 4 | ||||
| 	blt	a6, a7, 3b | ||||
| 
 | ||||
| 	movi	a5, -16 | ||||
| 	movi	a1, _stack + STACK_SIZE | ||||
| 	and	a1, a1, a5 | ||||
| 
 | ||||
| 	/* Uncompress the kernel */ | ||||
| 
 | ||||
| 	# a0: load address | ||||
| 	# a2: boot parameter | ||||
| 	# a4: __start | ||||
| 
 | ||||
| 	movi	a3, __image_load | ||||
| 	sub	a4, a3, a4 | ||||
| 	add	a8, a0, a4 | ||||
| 
 | ||||
| 	# a1  Stack | ||||
| 	# a8(a4)  Load address of the image | ||||
| 
 | ||||
| 	movi	a6, _image_start | ||||
| 	movi	a10, _image_end | ||||
| 	movi	a7, 0x1000000 | ||||
| 	sub	a11, a10, a6 | ||||
| 	movi	a9, complen | ||||
| 	s32i	a11, a9, 0 | ||||
| 
 | ||||
| 	movi	a0, 0 | ||||
| 
 | ||||
| 	# a6 destination | ||||
| 	# a7 maximum size of destination | ||||
| 	# a8 source | ||||
| 	# a9 ptr to length | ||||
| 
 | ||||
| 	.extern gunzip
 | ||||
| 	movi	a4, gunzip | ||||
| 	beqz	a4, 1f | ||||
| 
 | ||||
| 	callx4	a4 | ||||
| 
 | ||||
| 	j	2f | ||||
| 
 | ||||
| 
 | ||||
| 	# a6 destination start | ||||
| 	# a7 maximum size of destination | ||||
| 	# a8 source start | ||||
| 	# a9 ptr to length | ||||
| 	# a10 destination end | ||||
| 
 | ||||
| 1: | ||||
|         l32i    a9, a8, 0 | ||||
|         l32i    a11, a8, 4 | ||||
|         s32i    a9, a6, 0 | ||||
|         s32i    a11, a6, 4 | ||||
|         l32i    a9, a8, 8 | ||||
|         l32i    a11, a8, 12 | ||||
|         s32i    a9, a6, 8 | ||||
|         s32i    a11, a6, 12 | ||||
|         addi    a6, a6, 16 | ||||
|         addi    a8, a8, 16 | ||||
|         blt     a6, a10, 1b | ||||
| 
 | ||||
| 
 | ||||
| 	/* jump to the kernel */ | ||||
| 2: | ||||
| #if XCHAL_DCACHE_IS_WRITEBACK | ||||
| 
 | ||||
| 	___flush_dcache_all a5 a6 | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| 	___invalidate_icache_all a5 a6 | ||||
| 
 | ||||
| 	isync | ||||
| 
 | ||||
| 	# a2  Boot parameter list | ||||
| 
 | ||||
| 	movi	a0, _image_start | ||||
| 	jx	a0 | ||||
| 
 | ||||
| 	.align 16
 | ||||
| 	.data | ||||
| 	.globl avail_ram
 | ||||
| avail_ram: | ||||
| 	.long	_heap
 | ||||
| 	.globl end_avail
 | ||||
| end_avail: | ||||
| 	.long	_heap + HEAP_SIZE | ||||
| 
 | ||||
| 	.comm _stack, STACK_SIZE | ||||
| 	.comm _heap, HEAP_SIZE | ||||
| 
 | ||||
| 	.globl end_avail
 | ||||
| 	.comm complen, 4 | ||||
| 
 | ||||
| 	.end	literal_prefix
 | ||||
							
								
								
									
										18
									
								
								arch/xtensa/boot/boot-uboot/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								arch/xtensa/boot/boot-uboot/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| #
 | ||||
| # This file is subject to the terms and conditions of the GNU General Public
 | ||||
| # License.  See the file "COPYING" in the main directory of this archive
 | ||||
| # for more details.
 | ||||
| #
 | ||||
| 
 | ||||
| ifdef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX | ||||
| UIMAGE_LOADADDR = 0x00003000 | ||||
| else | ||||
| UIMAGE_LOADADDR = 0xd0003000 | ||||
| endif | ||||
| UIMAGE_COMPRESSION = gzip | ||||
| 
 | ||||
| $(obj)/../uImage: vmlinux.bin.gz FORCE | ||||
| 	$(call if_changed,uimage) | ||||
| 	$(Q)$(kecho) '  Kernel: $@ is ready' | ||||
| 
 | ||||
| zImage: $(obj)/../uImage | ||||
							
								
								
									
										15
									
								
								arch/xtensa/boot/dts/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								arch/xtensa/boot/dts/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| #
 | ||||
| # arch/xtensa/boot/dts/Makefile
 | ||||
| #
 | ||||
| # This file is subject to the terms and conditions of the GNU General Public
 | ||||
| # License.  See the file "COPYING" in the main directory of this archive
 | ||||
| # for more details.
 | ||||
| #
 | ||||
| #
 | ||||
| 
 | ||||
| BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB)).dtb.o | ||||
| ifneq ($(CONFIG_BUILTIN_DTB),"") | ||||
| obj-$(CONFIG_OF) += $(BUILTIN_DTB) | ||||
| endif | ||||
| 
 | ||||
| clean-files := *.dtb.S | ||||
							
								
								
									
										14
									
								
								arch/xtensa/boot/dts/kc705.dts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								arch/xtensa/boot/dts/kc705.dts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| /dts-v1/; | ||||
| /include/ "xtfpga.dtsi" | ||||
| /include/ "xtfpga-flash-128m.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "cdns,xtensa-kc705"; | ||||
| 	chosen { | ||||
| 		bootargs = "earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug memmap=0x38000000"; | ||||
| 	}; | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x00000000 0x38000000>; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										16
									
								
								arch/xtensa/boot/dts/lx200mx.dts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								arch/xtensa/boot/dts/lx200mx.dts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| /dts-v1/; | ||||
| /include/ "xtfpga.dtsi" | ||||
| /include/ "xtfpga-flash-16m.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "cdns,xtensa-lx200"; | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x00000000 0x06000000>; | ||||
| 	}; | ||||
| 	pic: pic { | ||||
| 		compatible = "cdns,xtensa-mx"; | ||||
| 		#interrupt-cells = <2>; | ||||
| 		interrupt-controller; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										11
									
								
								arch/xtensa/boot/dts/lx60.dts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								arch/xtensa/boot/dts/lx60.dts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| /dts-v1/; | ||||
| /include/ "xtfpga.dtsi" | ||||
| /include/ "xtfpga-flash-4m.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "cdns,xtensa-lx60"; | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x00000000 0x04000000>; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										11
									
								
								arch/xtensa/boot/dts/ml605.dts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								arch/xtensa/boot/dts/ml605.dts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| /dts-v1/; | ||||
| /include/ "xtfpga.dtsi" | ||||
| /include/ "xtfpga-flash-16m.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "cdns,xtensa-ml605"; | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x00000000 0x08000000>; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										28
									
								
								arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| / { | ||||
| 	soc { | ||||
| 		flash: flash@00000000 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <1>; | ||||
| 			compatible = "cfi-flash"; | ||||
| 			reg = <0x00000000 0x08000000>; | ||||
| 			bank-width = <2>; | ||||
| 			device-width = <2>; | ||||
| 			partition@0x0 { | ||||
| 				label = "data"; | ||||
| 				reg = <0x00000000 0x06000000>; | ||||
| 			}; | ||||
| 			partition@0x6000000 { | ||||
| 				label = "boot loader area"; | ||||
| 				reg = <0x06000000 0x00800000>; | ||||
| 			}; | ||||
| 			partition@0x6800000 { | ||||
| 				label = "kernel image"; | ||||
| 				reg = <0x06800000 0x017e0000>; | ||||
| 			}; | ||||
| 			partition@0x7fe0000 { | ||||
| 				label = "boot environment"; | ||||
| 				reg = <0x07fe0000 0x00020000>; | ||||
| 			}; | ||||
| 		}; | ||||
|         }; | ||||
| }; | ||||
							
								
								
									
										28
									
								
								arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| / { | ||||
| 	soc { | ||||
| 		flash: flash@08000000 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <1>; | ||||
| 			compatible = "cfi-flash"; | ||||
| 			reg = <0x08000000 0x01000000>; | ||||
| 			bank-width = <2>; | ||||
| 			device-width = <2>; | ||||
| 			partition@0x0 { | ||||
| 				label = "boot loader area"; | ||||
| 				reg = <0x00000000 0x00400000>; | ||||
| 			}; | ||||
| 			partition@0x400000 { | ||||
| 				label = "kernel image"; | ||||
| 				reg = <0x00400000 0x00600000>; | ||||
| 			}; | ||||
| 			partition@0xa00000 { | ||||
| 				label = "data"; | ||||
| 				reg = <0x00a00000 0x005e0000>; | ||||
| 			}; | ||||
| 			partition@0xfe0000 { | ||||
| 				label = "boot environment"; | ||||
| 				reg = <0x00fe0000 0x00020000>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										20
									
								
								arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| / { | ||||
| 	soc { | ||||
| 		flash: flash@08000000 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <1>; | ||||
| 			compatible = "cfi-flash"; | ||||
| 			reg = <0x08000000 0x00400000>; | ||||
| 			bank-width = <2>; | ||||
| 			device-width = <2>; | ||||
| 			partition@0x0 { | ||||
| 				label = "boot loader area"; | ||||
| 				reg = <0x00000000 0x003f0000>; | ||||
| 			}; | ||||
| 			partition@0x3f0000 { | ||||
| 				label = "boot environment"; | ||||
| 				reg = <0x003f0000 0x00010000>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										69
									
								
								arch/xtensa/boot/dts/xtfpga.dtsi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								arch/xtensa/boot/dts/xtfpga.dtsi
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,69 @@ | |||
| / { | ||||
| 	compatible = "cdns,xtensa-xtfpga"; | ||||
| 	#address-cells = <1>; | ||||
| 	#size-cells = <1>; | ||||
| 	interrupt-parent = <&pic>; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		bootargs = "earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug"; | ||||
| 	}; | ||||
| 
 | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x00000000 0x06000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	cpus { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		cpu@0 { | ||||
| 			compatible = "cdns,xtensa-cpu"; | ||||
| 			reg = <0>; | ||||
| 			/* Filled in by platform_setup from FPGA register | ||||
| 			 * clock-frequency = <100000000>; | ||||
| 			 */ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pic: pic { | ||||
| 		compatible = "cdns,xtensa-pic"; | ||||
| 		/* one cell: internal irq number, | ||||
| 		 * two cells: second cell == 0: internal irq number | ||||
| 		 *            second cell == 1: external irq number | ||||
| 		 */ | ||||
| 		#interrupt-cells = <2>; | ||||
| 		interrupt-controller; | ||||
| 	}; | ||||
| 
 | ||||
| 	clocks { | ||||
| 		osc: main-oscillator { | ||||
| 			#clock-cells = <0>; | ||||
| 			compatible = "fixed-clock"; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	soc { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		compatible = "simple-bus"; | ||||
| 		ranges = <0x00000000 0xf0000000 0x10000000>; | ||||
| 
 | ||||
| 		serial0: serial@0d050020 { | ||||
| 			device_type = "serial"; | ||||
| 			compatible = "ns16550a"; | ||||
| 			no-loopback-test; | ||||
| 			reg = <0x0d050020 0x20>; | ||||
| 			reg-shift = <2>; | ||||
| 			interrupts = <0 1>; /* external irq 0 */ | ||||
| 			clocks = <&osc>; | ||||
| 		}; | ||||
| 
 | ||||
| 		enet0: ethoc@0d030000 { | ||||
| 			compatible = "opencores,ethoc"; | ||||
| 			reg = <0x0d030000 0x4000 0x0d800000 0x4000>; | ||||
| 			interrupts = <1 1>; /* external irq 1 */ | ||||
| 			local-mac-address = [00 50 c2 13 6f 00]; | ||||
| 			clocks = <&osc>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
							
								
								
									
										24
									
								
								arch/xtensa/boot/lib/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								arch/xtensa/boot/lib/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| #
 | ||||
| # Makefile for some libs needed by zImage.
 | ||||
| #
 | ||||
| 
 | ||||
| zlib	:= inffast.c inflate.c inftrees.c | ||||
| 
 | ||||
| lib-y	+= $(zlib:.c=.o) zmem.o | ||||
| 
 | ||||
| ccflags-y	:= -Ilib/zlib_inflate | ||||
| ifdef CONFIG_FUNCTION_TRACER | ||||
| CFLAGS_REMOVE_inflate.o = -pg | ||||
| CFLAGS_REMOVE_zmem.o = -pg | ||||
| CFLAGS_REMOVE_inftrees.o = -pg | ||||
| CFLAGS_REMOVE_inffast.o = -pg | ||||
| endif | ||||
| 
 | ||||
| 
 | ||||
| quiet_cmd_copy_zlib = COPY    $@ | ||||
|       cmd_copy_zlib = cat $< > $@ | ||||
| 
 | ||||
| $(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/% | ||||
| 	$(call cmd,copy_zlib) | ||||
| 
 | ||||
| clean-files	:= $(zlib) | ||||
							
								
								
									
										79
									
								
								arch/xtensa/boot/lib/zmem.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								arch/xtensa/boot/lib/zmem.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,79 @@ | |||
| #include <linux/zlib.h> | ||||
| 
 | ||||
| /* bits taken from ppc */ | ||||
| 
 | ||||
| extern void *avail_ram, *end_avail; | ||||
| 
 | ||||
| void exit (void) | ||||
| { | ||||
|   for (;;); | ||||
| } | ||||
| 
 | ||||
| void *zalloc(unsigned size) | ||||
| { | ||||
|         void *p = avail_ram; | ||||
| 
 | ||||
|         size = (size + 7) & -8; | ||||
|         avail_ram += size; | ||||
|         if (avail_ram > end_avail) { | ||||
|                 //puts("oops... out of memory\n");
 | ||||
|                 //pause();
 | ||||
|                 exit (); | ||||
|         } | ||||
|         return p; | ||||
| } | ||||
| 
 | ||||
| #define HEAD_CRC        2 | ||||
| #define EXTRA_FIELD     4 | ||||
| #define ORIG_NAME       8 | ||||
| #define COMMENT         0x10 | ||||
| #define RESERVED        0xe0 | ||||
| 
 | ||||
| #define DEFLATED        8 | ||||
| 
 | ||||
| void gunzip (void *dst, int dstlen, unsigned char *src, int *lenp) | ||||
| { | ||||
| 	z_stream s; | ||||
| 	int r, i, flags; | ||||
| 
 | ||||
|         /* skip header */ | ||||
|         i = 10; | ||||
|         flags = src[3]; | ||||
|         if (src[2] != DEFLATED || (flags & RESERVED) != 0) { | ||||
|                 //puts("bad gzipped data\n");
 | ||||
|                 exit(); | ||||
|         } | ||||
|         if ((flags & EXTRA_FIELD) != 0) | ||||
|                 i = 12 + src[10] + (src[11] << 8); | ||||
|         if ((flags & ORIG_NAME) != 0) | ||||
|                 while (src[i++] != 0) | ||||
|                         ; | ||||
|         if ((flags & COMMENT) != 0) | ||||
|                 while (src[i++] != 0) | ||||
|                         ; | ||||
|         if ((flags & HEAD_CRC) != 0) | ||||
|                 i += 2; | ||||
|         if (i >= *lenp) { | ||||
|                 //puts("gunzip: ran out of data in header\n");
 | ||||
|                 exit(); | ||||
|         } | ||||
| 
 | ||||
| 	s.workspace = zalloc(zlib_inflate_workspacesize()); | ||||
|         r = zlib_inflateInit2(&s, -MAX_WBITS); | ||||
|         if (r != Z_OK) { | ||||
|                 //puts("inflateInit2 returned "); puthex(r); puts("\n");
 | ||||
|                 exit(); | ||||
|         } | ||||
|         s.next_in = src + i; | ||||
|         s.avail_in = *lenp - i; | ||||
|         s.next_out = dst; | ||||
|         s.avail_out = dstlen; | ||||
|         r = zlib_inflate(&s, Z_FINISH); | ||||
|         if (r != Z_OK && r != Z_STREAM_END) { | ||||
|                 //puts("inflate returned "); puthex(r); puts("\n");
 | ||||
|                 exit(); | ||||
|         } | ||||
|         *lenp = s.next_out - (unsigned char *) dst; | ||||
|         zlib_inflateEnd(&s); | ||||
| } | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 awab228
						awab228