diff options
Diffstat (limited to 'arch/mips/boot/compressed')
| -rw-r--r-- | arch/mips/boot/compressed/Makefile | 10 | ||||
| -rw-r--r-- | arch/mips/boot/compressed/dbg.c | 1 | ||||
| -rw-r--r-- | arch/mips/boot/compressed/decompress.c | 27 | ||||
| -rw-r--r-- | arch/mips/boot/compressed/ld.script | 5 | ||||
| -rw-r--r-- | arch/mips/boot/compressed/string.c | 28 | ||||
| -rw-r--r-- | arch/mips/boot/compressed/uart-16550.c | 5 | 
6 files changed, 50 insertions, 26 deletions
diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile index 0048c089789..61af6b6ab13 100644 --- a/arch/mips/boot/compressed/Makefile +++ b/arch/mips/boot/compressed/Makefile @@ -27,16 +27,20 @@ KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \  	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \  	-DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS) -targets := head.o decompress.o dbg.o uart-16550.o uart-alchemy.o +targets := head.o decompress.o string.o dbg.o uart-16550.o uart-alchemy.o  # decompressor objects (linked with vmlinuz) -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/dbg.o  ifdef CONFIG_DEBUG_ZBOOT  vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o  vmlinuzobjs-$(CONFIG_MIPS_ALCHEMY)		   += $(obj)/uart-alchemy.o  endif +ifdef CONFIG_KERNEL_XZ +vmlinuzobjs-y += $(obj)/../../lib/ashldi3.o +endif +  targets += vmlinux.bin  OBJCOPYFLAGS_vmlinux.bin := $(OBJCOPYFLAGS) -O binary -R .comment -S  $(obj)/vmlinux.bin: $(KBUILD_IMAGE) FORCE @@ -44,8 +48,10 @@ $(obj)/vmlinux.bin: $(KBUILD_IMAGE) FORCE  tool_$(CONFIG_KERNEL_GZIP)    = gzip  tool_$(CONFIG_KERNEL_BZIP2)   = bzip2 +tool_$(CONFIG_KERNEL_LZ4)     = lz4  tool_$(CONFIG_KERNEL_LZMA)    = lzma  tool_$(CONFIG_KERNEL_LZO)     = lzo +tool_$(CONFIG_KERNEL_XZ)      = xzkern  targets += vmlinux.bin.z  $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE diff --git a/arch/mips/boot/compressed/dbg.c b/arch/mips/boot/compressed/dbg.c index 134a6162e39..06c6a5bd175 100644 --- a/arch/mips/boot/compressed/dbg.c +++ b/arch/mips/boot/compressed/dbg.c @@ -6,7 +6,6 @@   * need to implement your own putc().   */  #include <linux/compiler.h> -#include <linux/init.h>  #include <linux/types.h>  void __weak putc(char c) diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c index 2c9573098c0..c00c4ddf451 100644 --- a/arch/mips/boot/compressed/decompress.c +++ b/arch/mips/boot/compressed/decompress.c @@ -44,32 +44,17 @@ void error(char *x)  #define STATIC static  #ifdef CONFIG_KERNEL_GZIP -void *memcpy(void *dest, const void *src, size_t n) -{ -	int i; -	const char *s = src; -	char *d = dest; - -	for (i = 0; i < n; i++) -		d[i] = s[i]; -	return dest; -}  #include "../../../../lib/decompress_inflate.c"  #endif  #ifdef CONFIG_KERNEL_BZIP2 -void *memset(void *s, int c, size_t n) -{ -	int i; -	char *ss = s; - -	for (i = 0; i < n; i++) -		ss[i] = c; -	return s; -}  #include "../../../../lib/decompress_bunzip2.c"  #endif +#ifdef CONFIG_KERNEL_LZ4 +#include "../../../../lib/decompress_unlz4.c" +#endif +  #ifdef CONFIG_KERNEL_LZMA  #include "../../../../lib/decompress_unlzma.c"  #endif @@ -78,6 +63,10 @@ void *memset(void *s, int c, size_t n)  #include "../../../../lib/decompress_unlzo.c"  #endif +#ifdef CONFIG_KERNEL_XZ +#include "../../../../lib/decompress_unxz.c" +#endif +  void decompress_kernel(unsigned long boot_heap_start)  {  	unsigned long zimage_start, zimage_size; diff --git a/arch/mips/boot/compressed/ld.script b/arch/mips/boot/compressed/ld.script index 8e6b07ca2f5..5a33409c7f6 100644 --- a/arch/mips/boot/compressed/ld.script +++ b/arch/mips/boot/compressed/ld.script @@ -8,6 +8,9 @@  OUTPUT_ARCH(mips)  ENTRY(start) +PHDRS { +	text PT_LOAD FLAGS(7); /* RWX */ +}  SECTIONS  {  	/* Text and read-only data */ @@ -15,7 +18,7 @@ SECTIONS  	.text : {  		*(.text)  		*(.rodata) -	} +	}: text  	/* End of text section */  	/* Writable data */ diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c new file mode 100644 index 00000000000..9de9885acd0 --- /dev/null +++ b/arch/mips/boot/compressed/string.c @@ -0,0 +1,28 @@ +/* + * arch/mips/boot/compressed/string.c + * + * Very small subset of simple string routines + */ + +#include <linux/types.h> + +void *memcpy(void *dest, const void *src, size_t n) +{ +	int i; +	const char *s = src; +	char *d = dest; + +	for (i = 0; i < n; i++) +		d[i] = s[i]; +	return dest; +} + +void *memset(void *s, int c, size_t n) +{ +	int i; +	char *ss = s; + +	for (i = 0; i < n; i++) +		ss[i] = c; +	return s; +} diff --git a/arch/mips/boot/compressed/uart-16550.c b/arch/mips/boot/compressed/uart-16550.c index c01d343ce6a..237494b7a21 100644 --- a/arch/mips/boot/compressed/uart-16550.c +++ b/arch/mips/boot/compressed/uart-16550.c @@ -4,7 +4,6 @@  #include <linux/types.h>  #include <linux/serial_reg.h> -#include <linux/init.h>  #include <asm/addrspace.h> @@ -19,8 +18,8 @@  #endif  #ifdef CONFIG_MACH_JZ4740 -#define UART0_BASE  0xB0030000 -#define PORT(offset) (UART0_BASE + (4 * offset)) +#include <asm/mach-jz4740/base.h> +#define PORT(offset) (CKSEG1ADDR(JZ4740_UART0_BASE_ADDR) + (4 * offset))  #endif  #ifdef CONFIG_CPU_XLR  | 
