?? zimage.patch
字號:
diff -Naur --exclude=CVS linux-2.6-orig/arch/mips/boot/compressed/au1xxx/head.S linux-2.6-dev/arch/mips/boot/compressed/au1xxx/head.S--- linux-2.6-orig/arch/mips/boot/compressed/au1xxx/head.S 1969-12-31 16:00:00.000000000 -0800+++ linux-2.6-dev/arch/mips/boot/compressed/au1xxx/head.S 2005-01-08 02:28:46.000000000 -0800@@ -0,0 +1,119 @@+/*+ * arch/mips/kernel/head.S+ *+ * 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) 1994, 1995 Waldorf Electronics+ * Written by Ralf Baechle and Andreas Busse+ * Copyright (C) 1995 - 1999 Ralf Baechle+ * Copyright (C) 1996 Paul M. Antoine+ * Modified for DECStation and hence R3000 support by Paul M. Antoine+ * Further modifications by David S. Miller and Harald Koerfgen+ * Copyright (C) 1999 Silicon Graphics, Inc.+ *+ * Head.S contains the MIPS exception handler and startup code.+ *+ **************************************************************************+ * 9 Nov, 2000.+ * Added Cache Error exception handler and SBDDP EJTAG debug exception.+ *+ * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com+ * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.+ **************************************************************************+ */+#include <linux/config.h>+#include <linux/threads.h>++#include <asm/asm.h>+#include <asm/cacheops.h>+#include <asm/mipsregs.h>+#include <asm/cachectl.h>+#include <asm/regdef.h>++#define IndexInvalidate_I 0x00+#define IndexWriteBack_D 0x01++ .set noreorder+ .cprestore+ LEAF(start)+start:+ bal locate+ nop+locate:+ subu s8, ra, 8 /* Where we were loaded */+ la sp, (.stack + 8192)++ move s0, a0 /* Save boot rom start args */+ move s1, a1+ move s2, a2+ move s3, a3++ la a0, start /* Where we were linked to run */++ move a1, s8+ la a2, _edata+ subu t1, a2, a0+ srl t1, t1, 2++ /* copy text section */+ li t0, 0+1: lw v0, 0(a1)+ nop+ sw v0, 0(a0)+ xor t0, t0, v0+ addu a0, 4+ bne a2, a0, 1b+ addu a1, 4++ /* Clear BSS */+ la a0, _edata+ la a2, _end+2: sw zero, 0(a0)+ bne a2, a0, 2b+ addu a0, 4++ /* push the D-Cache and invalidate I-Cache */+ li k0, 0x80000000 # start address+ li k1, 0x80004000 # end address (16KB I-Cache)+ subu k1, 128++1:+ .set mips3+ cache IndexWriteBack_D, 0(k0)+ cache IndexWriteBack_D, 32(k0)+ cache IndexWriteBack_D, 64(k0)+ cache IndexWriteBack_D, 96(k0)+ cache IndexInvalidate_I, 0(k0)+ cache IndexInvalidate_I, 32(k0)+ cache IndexInvalidate_I, 64(k0)+ cache IndexInvalidate_I, 96(k0)+ .set mips0++ bne k0, k1, 1b+ addu k0, k0, 128+ /* done */++ move a0, s8 /* load address */+ move a1, t1 /* length in words */+ move a2, t0 /* checksum */+ move a3, sp++ la ra, 1f+ la k0, decompress_kernel+ jr k0+ nop+1:++ move a0, s0+ move a1, s1+ move a2, s2+ move a3, s3+ li k0, KERNEL_ENTRY+ jr k0+ nop+3:+ b 3b+ END(start)+ .comm .stack,4096*2,4diff -Naur --exclude=CVS linux-2.6-orig/arch/mips/boot/compressed/au1xxx/Makefile linux-2.6-dev/arch/mips/boot/compressed/au1xxx/Makefile--- linux-2.6-orig/arch/mips/boot/compressed/au1xxx/Makefile 1969-12-31 16:00:00.000000000 -0800+++ linux-2.6-dev/arch/mips/boot/compressed/au1xxx/Makefile 2005-01-08 02:28:03.000000000 -0800@@ -0,0 +1,110 @@+# arch/mips/boot/compressed/au1xxx/Makefile+# +# Makefile for AMD Alchemy Semiconductor Au1x based boards.+# All of the boot loader code was derived from the ppc+# boot code.+#+# Copyright 2001,2002 MontaVista Software Inc.+#+# Author: Mark A. Greer+# mgreer@mvista.com+#+# Copyright 2004 Embedded Alley Solutions, Inc+# Ported and modified for mips 2.6 support by +# Pete Popov <ppopov@embeddedalley.com>+#+# This program is free software; you can redistribute it and/or modify it+# under the terms of the GNU General Public License as published by the+# Free Software Foundation; either version 2 of the License, or (at your+# option) any later version.++boot := arch/mips/boot+compressed := $(boot)/compressed+utils := $(compressed)/utils+lib := $(compressed)/lib+images := $(compressed)/images+common := $(compressed)/common++#########################################################################+# START BOARD SPECIFIC VARIABLES++# These two variables control where the zImage is stored+# in flash and loaded in memory. It only controls how the srec+# file is generated, the code is the same.+RAM_RUN_ADDR = 0x81000000++ifdef CONFIG_MIPS_XXS1500+FLASH_LOAD_ADDR = 0xBF000000+else+FLASH_LOAD_ADDR = 0xBFD00000+endif++# These two variables specify the free ram region+# that can be used for temporary malloc area+AVAIL_RAM_START=0x80500000+AVAIL_RAM_END=0x80900000++# This one must match the LOADADDR in arch/mips/Makefile!+LOADADDR=0x80100000++# WARNING WARNING WARNING+# Note that with a LOADADDR of 0x80100000 and AVAIL_RAM_START of+# 0x80500000, the max decompressed kernel size can be 4MB. Else we+# start overwriting ourselve. You can change these vars as needed;+# it would be much better if we just figured everything out on the fly.++# END BOARD SPECIFIC VARIABLES+#########################################################################++OBJECTS := $(obj)/head.o $(common)/misc-common.o $(common)/misc-simple.o \+ $(common)/au1k_uart.o+LIBS := $(lib)/lib.a++ENTRY := $(utils)/entry+OFFSET := $(utils)/offset+SIZE := $(utils)/size++LD_ARGS := -T $(compressed)/ld.script -Ttext $(RAM_RUN_ADDR) -Bstatic++ifdef CONFIG_CPU_LITTLE_ENDIAN+OBJCOPY_ARGS = -O elf32-tradlittlemips+else+OBJCOPY_ARGS = -O elf32-tradbigmips+endif++$(obj)/head.o: $(obj)/head.S $(TOPDIR)/vmlinux+ $(CC) $(AFLAGS) \+ -DKERNEL_ENTRY=$(shell sh $(ENTRY) $(NM) $(TOPDIR)/vmlinux ) \+ -c -o $*.o $<++$(common)/misc-simple.o:+ $(CC) $(CFLAGS) -DINITRD_OFFSET=0 -DINITRD_SIZE=0 -DZIMAGE_OFFSET=0 \+ -DAVAIL_RAM_START=$(AVAIL_RAM_START) \+ -DAVAIL_RAM_END=$(AVAIL_RAM_END) \+ -DLOADADDR=$(LOADADDR) \+ -DZIMAGE_SIZE=0 -c -o $@ $*.c++$(obj)/zvmlinux: $(OBJECTS) $(LIBS) $(srctree)/$(compressed)/ld.script $(images)/vmlinux.gz $(common)/dummy.o+ $(OBJCOPY) \+ --add-section=.image=$(images)/vmlinux.gz \+ --set-section-flags=.image=contents,alloc,load,readonly,data \+ $(common)/dummy.o $(common)/image.o+ $(LD) $(LD_ARGS) -o $@ $(OBJECTS) $(common)/image.o $(LIBS)+ $(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R __kcrctab -R __ksymtab_strings \+ -R .comment -R .stab -R .stabstr -R .initrd -R .sysmap++# Here we manipulate the image in order to get it the necessary+# srecord file we need.+zImage: $(obj)/zvmlinux+ mv $(obj)/zvmlinux $(images)/zImage+ $(OBJCOPY) -O srec $(images)/zImage $(images)/zImage.srec+ $(OBJCOPY) -O binary $(images)/zImage $(images)/zImage.bin++zImage.flash: zImage+ ( \+ flash=${FLASH_LOAD_ADDR} ; \+ ram=${RAM_RUN_ADDR} ; \+ adjust=$$[ $$flash - $$ram ] ; \+ $(OBJCOPY) -O srec --adjust-vma `printf '0x%08x' $$adjust` \+ $(images)/zImage $(images)/zImage.flash.srec ; \+ )diff -Naur --exclude=CVS linux-2.6-orig/arch/mips/boot/compressed/common/au1k_uart.c linux-2.6-dev/arch/mips/boot/compressed/common/au1k_uart.c--- linux-2.6-orig/arch/mips/boot/compressed/common/au1k_uart.c 1969-12-31 16:00:00.000000000 -0800+++ linux-2.6-dev/arch/mips/boot/compressed/common/au1k_uart.c 2004-12-12 22:42:29.000000000 -0800@@ -0,0 +1,103 @@+/*+ * BRIEF MODULE DESCRIPTION+ * Simple Au1000 uart routines.+ *+ * Copyright 2001 MontaVista Software Inc.+ * Author: MontaVista Software, Inc.+ * ppopov@mvista.com or source@mvista.com+ *+ * This program is free software; you can redistribute it and/or modify it+ * under the terms of the GNU General Public License as published by the+ * Free Software Foundation; either version 2 of the License, or (at your+ * option) any later version.+ *+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ *+ * You should have received a copy of the GNU General Public License along+ * with this program; if not, write to the Free Software Foundation, Inc.,+ * 675 Mass Ave, Cambridge, MA 02139, USA.+ */+#include <linux/config.h>+#include <asm/io.h>+#include <asm/mach-au1x00/au1000.h>+#include "ns16550.h"++typedef unsigned char uint8;+typedef unsigned int uint32;++#define UART16550_BAUD_2400 2400+#define UART16550_BAUD_4800 4800+#define UART16550_BAUD_9600 9600+#define UART16550_BAUD_19200 19200+#define UART16550_BAUD_38400 38400+#define UART16550_BAUD_57600 57600+#define UART16550_BAUD_115200 115200++#define UART16550_PARITY_NONE 0+#define UART16550_PARITY_ODD 0x08+#define UART16550_PARITY_EVEN 0x18+#define UART16550_PARITY_MARK 0x28+#define UART16550_PARITY_SPACE 0x38++#define UART16550_DATA_5BIT 0x0+#define UART16550_DATA_6BIT 0x1+#define UART16550_DATA_7BIT 0x2+#define UART16550_DATA_8BIT 0x3++#define UART16550_STOP_1BIT 0x0+#define UART16550_STOP_2BIT 0x4++/* It would be nice if we had a better way to do this.+ * It could be a variable defined in one of the board specific files.+ */+#undef UART_BASE+#ifdef CONFIG_COGENT_CSB250+#define UART_BASE UART3_ADDR+#else+#define UART_BASE UART0_ADDR+#endif++/* memory-mapped read/write of the port */+#define UART16550_READ(y) (au_readl(UART_BASE + y) & 0xff)+#define UART16550_WRITE(y,z) (au_writel(z&0xff, UART_BASE + y))++/*+ * We use uart 0, which is already initialized by+ * yamon. + */+volatile struct NS16550 *+serial_init(int chan)+{+ volatile struct NS16550 *com_port;+ com_port = (struct NS16550 *) UART_BASE;+ return (com_port);+}++void+serial_putc(volatile struct NS16550 *com_port, unsigned char c)+{+ while ((UART16550_READ(UART_LSR)&0x40) == 0);+ UART16550_WRITE(UART_TX, c);+}++unsigned char+serial_getc(volatile struct NS16550 *com_port)+{+ while((UART16550_READ(UART_LSR) & 0x1) == 0);+ return UART16550_READ(UART_RX);+}++int+serial_tstc(volatile struct NS16550 *com_port)+{+ return((UART16550_READ(UART_LSR) & LSR_DR) != 0);+}diff -Naur --exclude=CVS linux-2.6-orig/arch/mips/boot/compressed/common/dummy.c linux-2.6-dev/arch/mips/boot/compressed/common/dummy.c--- linux-2.6-orig/arch/mips/boot/compressed/common/dummy.c 1969-12-31 16:00:00.000000000 -0800+++ linux-2.6-dev/arch/mips/boot/compressed/common/dummy.c 2004-12-12 22:42:29.000000000 -0800@@ -0,0 +1,4 @@+int main(void)+{+ return 0;+}diff -Naur --exclude=CVS linux-2.6-orig/arch/mips/boot/compressed/common/Makefile linux-2.6-dev/arch/mips/boot/compressed/common/Makefile--- linux-2.6-orig/arch/mips/boot/compressed/common/Makefile 1969-12-31 16:00:00.000000000 -0800+++ linux-2.6-dev/arch/mips/boot/compressed/common/Makefile 2004-12-12 23:43:43.000000000 -0800@@ -0,0 +1,14 @@+#+# arch/mips/boot/compressed/common/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.+#+# Tom Rini January 2001+#+# Pete Popov, 2004+#++lib-y := misc-common.o no_initrd.o dummy.o+lib-$(CONFIG_SOC_AU1X00) += au1k_uart.odiff -Naur --exclude=CVS linux-2.6-orig/arch/mips/boot/compressed/common/misc-common.c linux-2.6-dev/arch/mips/boot/compressed/common/misc-common.c--- linux-2.6-orig/arch/mips/boot/compressed/common/misc-common.c 1969-12-31 16:00:00.000000000 -0800+++ linux-2.6-dev/arch/mips/boot/compressed/common/misc-common.c 2004-12-15 01:00:03.000000000 -0800@@ -0,0 +1,434 @@+/*+ * arch/mips/boot/compressed/common/misc-common.c+ * + * Misc. bootloader code (almost) all platforms can use+ *+ * Author: Johnnie Peters <jpeters@mvista.com>+ * Editor: Tom Rini <trini@mvista.com>+ *+ * Derived from arch/ppc/boot/prep/misc.c+ *+ * Ported by Pete Popov <ppopov@mvista.com> to+ * support mips board(s). I also got rid of the vga console+ * code.+ *+ * Copyright 2000-2001 MontaVista Software Inc.+ *+ * Ported to MIPS 2.6 by Pete Popov, <ppopov@embeddedalley.com>+ *+ * This program is free software; you can redistribute it and/or modify it+ * under the terms of the GNU General Public License as published by the+ * Free Software Foundation; either version 2 of the License, or (at your+ * option) any later version.+ *+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ *+ * You should have received a copy of the GNU General Public License along+ * with this program; if not, write to the Free Software Foundation, Inc.,+ * 675 Mass Ave, Cambridge, MA 02139, USA.+ */++#include <stdarg.h> /* for va_ bits */+#include <linux/config.h>+#include <linux/string.h>+#include <linux/zlib.h>++extern char *avail_ram;+extern char *end_avail;+extern char _end[];++void puts(const char *);+void putc(const char c);+void puthex(unsigned long val);+void _bcopy(char *src, char *dst, int len);+void gunzip(void *, int, unsigned char *, int *);+static int _cvt(unsigned long val, char *buf, long radix, char *digits);++void _vprintk(void(*)(const char), const char *, va_list ap);++struct NS16550 *com_port;++int serial_tstc(volatile struct NS16550 *);+unsigned char serial_getc(volatile struct NS16550 *);+void serial_putc(volatile struct NS16550 *, unsigned char);++void pause(void)+{+ puts("pause\n");+}++void exit(void)+{+ puts("exit\n");+ while(1); +}++int tstc(void)+{+ return (serial_tstc(com_port));
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -