]> git.neil.brown.name Git - history.git/commitdiff
Import 2.2.11pre3 2.2.11pre3
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 23 Nov 2007 20:19:14 +0000 (15:19 -0500)
committerAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 23 Nov 2007 20:19:14 +0000 (15:19 -0500)
114 files changed:
Documentation/Configure.help
Documentation/mkdev.ida [new file with mode: 0644]
Documentation/networking/soundmodem.txt
Documentation/networking/wavelan.txt
Documentation/powerpc/sound.txt
Documentation/sound/AWE32
MAINTAINERS
arch/alpha/Makefile
arch/alpha/kernel/core_cia.c
arch/alpha/kernel/entry.S
arch/alpha/kernel/fpreg.c
arch/alpha/kernel/osf_sys.c
arch/alpha/math-emu/Makefile
arch/alpha/math-emu/cmptxx.c [new file with mode: 0644]
arch/alpha/math-emu/div128.c [new file with mode: 0644]
arch/alpha/math-emu/fp-emul.c
arch/alpha/math-emu/fxtod.c [new file with mode: 0644]
arch/alpha/math-emu/fxtos.c [new file with mode: 0644]
arch/alpha/math-emu/ieee-math.c [deleted file]
arch/alpha/math-emu/ieee-math.h [deleted file]
arch/alpha/math-emu/sfp-machine.h [new file with mode: 0644]
arch/ppc/Makefile
arch/ppc/chrpboot/main.c
arch/ppc/common_defconfig
arch/ppc/config.in
arch/ppc/defconfig
arch/ppc/kernel/chrp_pci.c
arch/ppc/kernel/chrp_setup.c
arch/ppc/kernel/head.S
arch/ppc/kernel/idle.c
arch/ppc/kernel/irq.c
arch/ppc/kernel/misc.S
arch/ppc/kernel/mk_defs.c
arch/ppc/kernel/pmac_setup.c
arch/ppc/kernel/ppc_htab.c
arch/ppc/kernel/ppc_ksyms.c
arch/ppc/kernel/prom.c
arch/ppc/kernel/signal.c
arch/ppc/kernel/smp.c
arch/ppc/mm/init.c
arch/ppc/pmac_defconfig
arch/sparc/math-emu/sfp-machine.h
arch/sparc64/math-emu/fdtoi.c
arch/sparc64/math-emu/fdtox.c
arch/sparc64/math-emu/fstoi.c
arch/sparc64/math-emu/fstox.c
arch/sparc64/math-emu/op-common.h
arch/sparc64/math-emu/sfp-machine.h
drivers/block/ide-pmac.c
drivers/char/bttv.c
drivers/char/mem.c
drivers/macintosh/mediabay.c
drivers/macintosh/via-pmu.c
drivers/net/acenic.c
drivers/net/acenic_firmware.h
drivers/net/bmac.c
drivers/net/cosa.c
drivers/net/mace.c
drivers/net/sk_mca.c
drivers/net/via-rhine.c
drivers/net/wavelan.c
drivers/net/wavelan.h
drivers/net/wavelan.p.h
drivers/scsi/ChangeLog.ncr53c8xx
drivers/scsi/ChangeLog.sym53c8xx
drivers/scsi/README.ncr53c8xx
drivers/scsi/eata.c
drivers/scsi/eata.h
drivers/scsi/i91uscsi.c
drivers/scsi/ide-scsi.c
drivers/scsi/ini9100u.c
drivers/scsi/ini9100u.h
drivers/scsi/ncr53c8xx.c
drivers/scsi/sym53c8xx.c
drivers/scsi/sym53c8xx_defs.h
drivers/sound/dmasound.c
drivers/sound/es1371.c
drivers/video/atyfb.c
drivers/video/controlfb.c
drivers/video/imsttfb.c
drivers/video/platinumfb.c
fs/ext2/inode.c
fs/fat/inode.c
fs/ncpfs/dir.c
fs/nfs/dir.c
fs/nfs/inode.c
include/asm-alpha/core_cia.h
include/asm-alpha/core_pyxis.h
include/asm-alpha/fpu.h
include/asm-alpha/io.h
include/asm-alpha/pgtable.h
include/asm-alpha/processor.h
include/asm-alpha/smplock.h
include/asm-alpha/sysinfo.h
include/asm-i386/bugs.h
include/asm-i386/ptrace.h [deleted file]
include/asm-i386/semaphore.h
include/asm-i386/socket.h
include/asm-ppc/ide.h
include/asm-ppc/io.h
include/asm-ppc/irq.h
include/asm-ppc/processor.h
include/asm-ppc/shmparam.h
include/asm-ppc/spinlock.h
include/asm-ppc/unistd.h
include/linux/arcdevice.h
include/linux/socket.h
include/linux/wireless.h
include/linux/yam.h [new file with mode: 0644]
include/net/br.h
net/ipv4/af_inet.c
net/ipv4/ip_fw.c
net/ipv4/route.c
scripts/ksymoops/ksymoops.c

index 689ccf5d6e709f42175f20d4d0e440f9768fb574..999e9a3621d203546900cfe09b12fdf6f55fbaa6 100644 (file)
@@ -4037,7 +4037,13 @@ CONFIG_SCSI_NCR53C8XX
   MB/s with wide FAST-40 LVD devices and controllers.
 
   Recent versions of the 53C8XX chips are better supported by the
-  option "SYM53C8XX SCSI support", below.
+  option "SYM53C8XX SCSI support", below. This option will configure 
+  a different driver.
+
+  If you want the kernel to select the recommended driver for each of 
+  of your NCR/SYM53C8XX controllers you may just configure both the 
+  NCR53C8XX and the SYM53C8XX options to Y, or if modules are preferred, 
+  load first the sym53c8xx.o module and then the ncr53c8xx.o module.
 
   Note: there is yet another driver for the 53c8xx family of controllers
   ("NCR53c7,8xx SCSI support" above). If you want to use them both,
diff --git a/Documentation/mkdev.ida b/Documentation/mkdev.ida
new file mode 100644 (file)
index 0000000..d276489
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Script to create device nodes for SMART array controllers
+# Usage:
+#      mkdev.ida [num controllers] [num log volumes] [num partitions]
+#
+# With no arguments, the script assumes 1 controller, 16 logical volumes,
+# and 16 partitions/volume, which is adequate for most configurations.
+#
+# If you had 5 controllers and were planning on no more than 4 logical volumes
+# each, using a maximum of 8 partitions per volume, you could say:
+#
+# mkdev.ida 5 4 8
+#
+# Of course, this has no real benefit over "mkdev.ida 5" except that it
+# doesn't create so many device nodes in /dev/ida.
+
+NR_CTLR=${1-1}
+NR_VOL=${2-16}
+NR_PART=${3-16}
+
+if [ ! -d /dev/ida ]; then
+       mkdir -p /dev/ida
+fi
+
+C=0; while [ $C -lt $NR_CTLR ]; do
+       MAJ=`expr $C + 72`
+       D=0; while [ $D -lt $NR_VOL ]; do
+               P=0; while [ $P -lt $NR_PART ]; do
+                       MIN=`expr $D \* 16 + $P`
+                       if [ $P -eq 0 ]; then
+                               mknod /dev/ida/c${C}d${D} b $MAJ $MIN
+                       else
+                               mknod /dev/ida/c${C}d${D}p${P} b $MAJ $MIN
+                       fi
+                       P=`expr $P + 1`
+               done
+               D=`expr $D + 1`
+       done
+       C=`expr $C + 1`
+done
index 47d1dfc3c564a2ed625ae38379f44c16954335d2..202101d186e20ee315ca3725d243b4f9bcba198e 100644 (file)
@@ -42,8 +42,8 @@ driver from the insmod command line (or by means of an option line in
 /etc/conf.modules).
 
 Examples:
-  insmod soundmodem hw=0 mode=0 iobase=0x220 irq=5 dma=1
-  sethdlc -i sm0 -p hw sbc type afsk1200 io 0x220 irq 5 dma 1
+  insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1
+  sethdlc -i sm0 -p mode "sbc:afsk1200" io 0x220 irq 5 dma 1
 
 Both lines configure the first port to drive a soundblaster card
 in 1200 baud AFSK mode.
index 77351b4e77f45a2272fe57ef472edf3396c26d23..a4a1f7921b3f2b29e385176cedc9e59dfedbdf80 100644 (file)
@@ -1,7 +1,11 @@
 Sun Jul  2 01:38:33 EST 1995
 
-See also: http://www-uk.hpl.hp.com/people/jt/Linux/Wavelan.html
+       As the date above certify, this ``readme'' is mostly
+obsolete. Please read release notes and change list in
+driver/net/wavelan.p.h, and consult my web page at :
+       http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wavelan.html
 
+       Jean <jt@hpl.hp.com>
 
 1. At present the driver autoprobes for a WaveLAN card only at I/O address 
    0x390. The version of the card that I use (NCR) supports four I/O addresses
index c028e35f1f6cb7f1052c4989a8a175dfc4fa070c..86411d3a2c71ef2b17e5d9a5006de6f305365a9b 100644 (file)
@@ -4,7 +4,7 @@
 Please mail me (Cort Dougan, cort@cs.nmt.edu) if you have questions,
 comments or corrections.
 
-Last Change: 3.24.98
+Last Change: 6.16.99
 
 This just covers sound on the PReP and CHRP systems for now and later
 will contain information on the PowerMac's.
@@ -51,7 +51,7 @@ set automatically on boot.
 
   Midi is not supported since the cs4232 driver doesn't support midi yet.
 
-2. IBM PowerPersonal PReP machines and IBM LongTrail CHRP
+2. IBM PowerPersonal PReP machines
 
   I've only tested sound on the Power Personal Series of IBM workstations
   so if you try it on others please let me know the result.  I'm especially
@@ -74,3 +74,8 @@ set automatically on boot.
   This setup does _NOT_ allow for recording yet.
 
   Midi is not supported since the cs4232 driver doesn't support midi yet.
+
+2. IBM CHRP
+
+  I have only tested this on the 43P-150.  Build the kernel with the cs4232
+  set as a module and load the module with irq=9 dma=1 dma2=2 io=0x550
index 40d65575595960114d2c407faf7e5cfd8a969a8a..edc0b880e309dfa156672d4bbf59bb39c8b1b315 100644 (file)
@@ -85,7 +85,6 @@ http://members.xoom.com/yar/synthgm.sbk.gz. Copy it to /usr and gunzip it there.
 
 7) Edit /etc/conf.modules, inserting at the end of the file:
 
-alias sound sb
 alias midi awe_wave
 post-install awe_wave /usr/bin/sfxload /usr/synthfm.sbk
 options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
index 75159bbe10dbda407f3a33c728ccd750f6559fd0..643f0c0bc23df625988baea71bb8d262f435fb85 100644 (file)
@@ -847,7 +847,8 @@ S:     Supported
 
 WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS
 P:     Jean Tourrilhes
-M:     jt@hplb.hpl.hp.com
+M:     jt@hpl.hp.com
+W:     http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
 S:     Maintained
 
 WD7000 SCSI DRIVER
index d48c8e09f916dfb434f4d1a44388471c3bfd48bf..7ae00a21122e2e7c07d40e5eb820163ccc1277d3 100644 (file)
@@ -116,9 +116,11 @@ archclean:
        @$(MAKEBOOT) clean
 
 archmrproper:
+       -$(MAKE) -C arch/alpha/math-emu cleansymlinks
 
 archdep:
        @$(MAKEBOOT) dep
+       -$(MAKE) -C arch/alpha/math-emu symlinks
 
 bootpfile:
        @$(MAKEBOOT) bootpfile
index ba457b1b356223ce6be0a9934cf31e6e861b7ba8..eef31582638cb92256115682739ebe75bf166b52 100644 (file)
@@ -535,6 +535,8 @@ cia_init_arch(unsigned long *mem_start, unsigned long *mem_end)
                 * Set up the PCI->physical memory translation windows.
                 * For now, windows 1,2 and 3 are disabled.  In the future,
                 * we may want to use them to do scatter/gather DMA. 
+                *
+                * Window 0 goes at 1 GB and is 1 GB large.
                 */
 
                *(vuip)CIA_IOC_PCI_W0_BASE = 1U | (CIA_DMA_WIN_BASE_DEFAULT & 0xfff00000U);
index 9f587c31cea085f7343e70da342aef3aeb5f28c3..b4e71bf56cd6d16b36f694219de398f51a83f0ca 100644 (file)
@@ -527,8 +527,6 @@ alpha_switch_to:
        call_pal PAL_swpctx
        unop
        bsr     $1,undo_switch_stack
-       lda     $8,0x3fff
-       bic     $30,$8,$8
        mov     $17,$0
        ret     $31,($26),1
 .end alpha_switch_to
index 0bd8b9f67dfca6c87d326a8c7824c3b1f0f83bc8..4d40f9ec6583843754da62608022c4de87860398 100644 (file)
@@ -96,3 +96,96 @@ alpha_write_fp_reg (unsigned long reg, unsigned long val)
              case 31: LDT(31, val); break;
        }
 }
+
+#if defined(__alpha_cix__) || defined(__alpha_fix__)
+#define STS(reg,val)  asm volatile ("ftois $f"#reg",%0" : "=r"(val));
+#else
+#define STS(reg,val)  asm volatile ("sts $f"#reg",%0" : "=m"(val));
+#endif
+
+unsigned long
+alpha_read_fp_reg_s (unsigned long reg)
+{
+       unsigned long val;
+
+       switch (reg) {
+             case  0: STS( 0, val); break;
+             case  1: STS( 1, val); break;
+             case  2: STS( 2, val); break;
+             case  3: STS( 3, val); break;
+             case  4: STS( 4, val); break;
+             case  5: STS( 5, val); break;
+             case  6: STS( 6, val); break;
+             case  7: STS( 7, val); break;
+             case  8: STS( 8, val); break;
+             case  9: STS( 9, val); break;
+             case 10: STS(10, val); break;
+             case 11: STS(11, val); break;
+             case 12: STS(12, val); break;
+             case 13: STS(13, val); break;
+             case 14: STS(14, val); break;
+             case 15: STS(15, val); break;
+             case 16: STS(16, val); break;
+             case 17: STS(17, val); break;
+             case 18: STS(18, val); break;
+             case 19: STS(19, val); break;
+             case 20: STS(20, val); break;
+             case 21: STS(21, val); break;
+             case 22: STS(22, val); break;
+             case 23: STS(23, val); break;
+             case 24: STS(24, val); break;
+             case 25: STS(25, val); break;
+             case 26: STS(26, val); break;
+             case 27: STS(27, val); break;
+             case 28: STS(28, val); break;
+             case 29: STS(29, val); break;
+             case 30: STS(30, val); break;
+             case 31: STS(31, val); break;
+       }
+       return val;
+}
+
+#if defined(__alpha_cix__) || defined(__alpha_fix__)
+#define LDS(reg,val)  asm volatile ("itofs %0,$f"#reg : : "r"(val));
+#else
+#define LDS(reg,val)  asm volatile ("lds $f"#reg",%0" : : "m"(val));
+#endif
+
+void
+alpha_write_fp_reg_s (unsigned long reg, unsigned long val)
+{
+       switch (reg) {
+             case  0: LDS( 0, val); break;
+             case  1: LDS( 1, val); break;
+             case  2: LDS( 2, val); break;
+             case  3: LDS( 3, val); break;
+             case  4: LDS( 4, val); break;
+             case  5: LDS( 5, val); break;
+             case  6: LDS( 6, val); break;
+             case  7: LDS( 7, val); break;
+             case  8: LDS( 8, val); break;
+             case  9: LDS( 9, val); break;
+             case 10: LDS(10, val); break;
+             case 11: LDS(11, val); break;
+             case 12: LDS(12, val); break;
+             case 13: LDS(13, val); break;
+             case 14: LDS(14, val); break;
+             case 15: LDS(15, val); break;
+             case 16: LDS(16, val); break;
+             case 17: LDS(17, val); break;
+             case 18: LDS(18, val); break;
+             case 19: LDS(19, val); break;
+             case 20: LDS(20, val); break;
+             case 21: LDS(21, val); break;
+             case 22: LDS(22, val); break;
+             case 23: LDS(23, val); break;
+             case 24: LDS(24, val); break;
+             case 25: LDS(25, val); break;
+             case 26: LDS(26, val); break;
+             case 27: LDS(27, val); break;
+             case 28: LDS(28, val); break;
+             case 29: LDS(29, val); break;
+             case 30: LDS(30, val); break;
+             case 31: LDS(31, val); break;
+       }
+}
index 5498160879b82b3caaefd7a6bf724f122671921b..6281cfbc08f1b8ed9aad443d6cf85e82dbde5c95 100644 (file)
@@ -950,7 +950,7 @@ asmlinkage unsigned long osf_setsysinfo(unsigned long op, void *buffer,
 {
        switch (op) {
        case SSI_IEEE_FP_CONTROL: {
-               unsigned long swcr, fpcr, undz;
+               unsigned long swcr, fpcr, undz, ev6;
 
                /* 
                 * Alpha Architecture Handbook 4.7.7.3:
@@ -959,6 +959,8 @@ asmlinkage unsigned long osf_setsysinfo(unsigned long op, void *buffer,
                 * set in the trap shadow of a software-complete insn.
                 */
 
+               ev6 = (implver() == IMPLVER_EV6);
+
                /* Update softare trap enable bits.  */
                if (get_user(swcr, (unsigned long *)buffer))
                        return -EFAULT;
@@ -967,10 +969,17 @@ asmlinkage unsigned long osf_setsysinfo(unsigned long op, void *buffer,
 
                /* Update the real fpcr.  Keep UNFD off if not UNDZ.  */
                fpcr = rdfpcr();
-               undz = (fpcr & FPCR_UNDZ);
-               fpcr &= ~(FPCR_MASK | FPCR_DYN_MASK | FPCR_UNDZ);
+               if(ev6) {
+                   undz = (fpcr & FPCR_UNDZ);
+                   fpcr &= (~(FPCR_MASK | FPCR_UNDZ)) | FPCR_DYN_MASK;
+               }
+               else {
+                   fpcr &= (~FPCR_MASK) | FPCR_DYN_MASK;
+               }
                fpcr |= ieee_swcr_to_fpcr(swcr);
-               fpcr &= ~(undz << 1);
+               if(ev6 && !undz) {
+                   fpcr &= ~FPCR_UNFD;
+               }
                wrfpcr(fpcr);
                   
                return 0;
index 6ea85465ffdac763a330c270916cea7e6137a5ac..b1812b9923bee3a5b2371f1913857dfdc6d09cc7 100644 (file)
@@ -3,10 +3,27 @@
 #
 
 O_TARGET := math-emu.o
-O_OBJS   := fp-emul.o ieee-math.o
+O_OBJS   := fp-emul.o faddd.o fadds.o fdivd.o fdivs.o fdtoi.o \
+               fdtos.o fdtox.o fmuld.o fmuls.o fsmuld.o fsqrtd.o \
+               fsqrts.o fstod.o fstoi.o fstox.o fsubd.o fsubs.o \
+               cmptxx.o fxtos.o fxtod.o udivmodti4.o div128.o
+
+LINKS  :=      double.h faddd.c fadds.c fdivd.c fdivs.c fdtoi.c \
+               fdtos.c fdtox.c fmuld.c fmuls.c fsmuld.c fsqrtd.c \
+               fsqrts.c fstod.c fstoi.c fstox.c fsubd.c fsubs.c \
+               op-common.h op-1.h op-2.h op-4.h single.h soft-fp.h \
+               udivmodti4.c
+
+
 
 ifeq ($(CONFIG_MATHEMU),m)
 M_OBJS   := $(O_TARGET)
 endif
 
 include $(TOPDIR)/Rules.make
+
+symlinks:
+       ln -sf $(patsubst %,../../sparc64/math-emu/%,$(LINKS)) .
+
+cleansymlinks:
+       rm -f $(LINKS)
diff --git a/arch/alpha/math-emu/cmptxx.c b/arch/alpha/math-emu/cmptxx.c
new file mode 100644 (file)
index 0000000..eae156f
--- /dev/null
@@ -0,0 +1,23 @@
+#include "soft-fp.h"
+#include "double.h"
+
+int CMPTXX(void *rc, void *rb, void *ra, int type)
+{
+       FP_DECL_D(A); FP_DECL_D(B);
+       long ret;
+       
+       __FP_UNPACK_D(A, ra);
+       __FP_UNPACK_D(B, rb);
+       FP_CMP_D(ret, A, B, 3);
+       if(ret == type) {
+           *(unsigned long *)rc = 0x4000000000000000;
+       }
+       else if((type == CMPTXX_LE) && 
+               ((ret == CMPTXX_LT) || (ret == CMPTXX_EQ))) {
+           *(unsigned long *)rc = 0x4000000000000000;
+       }
+       else {
+           *(unsigned long *)rc = 0;
+       }
+       return 0;
+}
diff --git a/arch/alpha/math-emu/div128.c b/arch/alpha/math-emu/div128.c
new file mode 100644 (file)
index 0000000..39829cf
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+   Copyright stuff
+
+   Use of this program, for any purpose, is granted the author,
+   Ian Kaplan, as long as this copyright notice is included in
+   the source code or any source code derived from this program.
+   The user assumes all responsibility for using this code.
+
+   Ian Kaplan, October 1996
+
+*/
+
+#define HI 0
+#define LO 1
+
+void set128(unsigned long *n, unsigned long hi, unsigned long lo)
+{
+    n[HI] = hi;
+    n[LO] = lo;
+}
+
+int eq128(unsigned long *n1, unsigned long *n2)
+{
+    return((n1[HI] == n2[HI]) && (n1[LO] == n2[LO]));
+}
+
+int gt128(unsigned long *n1, unsigned long *n2)
+{
+    return((n1[HI] > n2[HI]) || 
+       ((n1[HI] == n2[HI]) && (n1[LO] > n2[LO])));
+}
+
+int lt128(unsigned long *n1, unsigned long *n2)
+{
+    return((n1[HI] < n2[HI]) || 
+       ((n1[HI] == n2[HI]) && (n1[LO] < n2[LO])));
+}
+
+
+void copy128(unsigned long *dest, unsigned long *src)
+{
+    dest[HI] = src[HI];
+    dest[LO] = src[LO];
+}
+
+/* Shift the given bit into the octaword from the right
+ * (i.e. left-shift-1, or in low bit).  If "bit" is zero,
+ * then this is a simple left shift.
+ */
+void shiftin128(unsigned long *n, unsigned long bit)
+{
+    n[HI] <<= 1;
+    if(n[LO] & 0x8000000000000000) {
+       n[HI] |= 1;
+    }
+    n[LO] = (n[LO] << 1) | bit;
+}
+
+void sub128(unsigned long *n1, unsigned long *n2, unsigned long *result)
+{
+    if(n1[LO] < n2[LO]) {
+        result[LO] = n1[LO] - n2[LO];
+       result[HI] = n1[HI] - n2[HI] - 1;
+    }
+    else {
+        result[LO] = n1[LO] - n2[LO];
+       result[HI] = n1[HI] - n2[HI];
+    }
+}
+       
+
+void udiv128(unsigned long *dividend,
+                     unsigned long *divisor,
+                     unsigned long *quotient,
+                     unsigned long *remainder )
+{
+  unsigned long zero[2];
+  unsigned long t[2], num_bits;
+  unsigned long q, bit;
+  unsigned long rem[2];
+  int i;
+
+  set128(remainder, 0, 0);
+  set128(quotient, 0, 0);
+  set128(zero, 0, 0);
+
+  if (eq128(divisor, zero)) {
+    return;
+  }
+
+  if(gt128(divisor, dividend)) {
+    copy128(remainder, dividend);
+    return;
+  }
+
+  if (eq128(divisor, dividend)) {
+    set128(quotient, 0, 1);
+    return;
+  }
+
+  num_bits = 128;
+
+  while(1) {
+    bit = (dividend[HI] & 0x8000000000000000) >> 63;
+    copy128(rem, remainder);
+    shiftin128(rem, bit);
+    if(lt128(rem, divisor)) break;
+    copy128(remainder, rem);
+    shiftin128(dividend, 0);
+    num_bits--;
+  }
+
+  for (i = 0; i < num_bits; i++) {
+    bit = (dividend[HI] & 0x8000000000000000) >> 63;
+    shiftin128(remainder, bit);
+    sub128(remainder, divisor, t);
+    q = !((t[HI] & 0x8000000000000000) >> 63);
+    shiftin128(dividend, 0);
+    shiftin128(quotient, q);
+    if (q) {
+       copy128(remainder, t);
+     }
+  }
+}  /* unsigned_divide128 */
+
index 122ec85ac8cce87814dc5de7e9e5aa4031693301..2ded8192a2fc4082a7570bfec2aa0d61388db60d 100644 (file)
@@ -5,7 +5,24 @@
 
 #include <asm/uaccess.h>
 
-#include "ieee-math.h"
+#include "soft-fp.h"
+
+extern int CMPTXX(void *, void *, void *, int);
+extern int FXTOS(void *, void *);
+extern int FXTOD(void *, void *);
+extern int FDTOS(void *, void *);
+extern int FSTOD(void *, void *);
+extern int FDIVS(void *, void *, void *);
+extern int FDIVD(void *, void *, void *);
+extern int FMULS(void *, void *, void *);
+extern int FMULD(void *, void *, void *);
+extern int FSUBS(void *, void *, void *);
+extern int FSUBD(void *, void *, void *);
+extern int FADDS(void *, void *, void *);
+extern int FADDD(void *, void *, void *);
+extern int FDTOX(void *, void *);
+extern int FSQRTS(void *, void *);
+extern int FSQRTD(void *, void *);
 
 #define        OPC_PAL         0x00
 
@@ -59,6 +76,8 @@
 
 extern unsigned long alpha_read_fp_reg (unsigned long reg);
 extern void alpha_write_fp_reg (unsigned long reg, unsigned long val);
+extern unsigned long alpha_read_fp_reg_s (unsigned long reg);
+extern void alpha_write_fp_reg_s (unsigned long reg, unsigned long val);
 
 
 #ifdef MODULE
@@ -118,43 +137,58 @@ alpha_fp_emul (unsigned long pc)
        fb     = (insn >> 16) &  0x1f;
        fa     = (insn >> 21) &  0x1f;
        func   = (insn >>  5) & 0x7ff;
-       mode   = (insn >>  5) & 0xc0;
+       mode   = (insn >>  11) & 0x3;
        op_fun = insn & OP_FUN(0x3f, 0x3f);
        
-       va = alpha_read_fp_reg(fa);
-       vb = alpha_read_fp_reg(fb);
        fpcr = rdfpcr();
 
        /*
         * Try the operation in software.  First, obtain the rounding
-        * mode...
+        * mode and set it in the task struct
         */
-       if (mode == 0xc0) {
+       current->tss.flags &= ~IEEE_CURRENT_RM_MASK;
+       if (mode == 3) {
            /* dynamic---get rounding mode from fpcr: */
-           mode = ((fpcr & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT) << ROUND_SHIFT;
+           current->tss.flags |= 
+               (((fpcr&FPCR_DYN_MASK)>>FPCR_DYN_SHIFT)<<IEEE_CURRENT_RM_SHIFT);
+       }
+       else {
+           current->tss.flags |= (mode << IEEE_CURRENT_RM_SHIFT);
        }
-       mode |= (fpcw & IEEE_TRAP_ENABLE_MASK);
 
-       if ((IEEE_TRAP_ENABLE_MASK & 0xc0)) {
+       /* JRP - What is this test supposed to check for? */
+       if ((IEEE_TRAP_ENABLE_MASK & 0x80 /* was 0xc0 */)) {
                extern int something_is_wrong (void);
                something_is_wrong();
        }
 
        switch (op_fun) {
              case FLTI_FUNC_CMPTEQ:
-               res = ieee_CMPTEQ(va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = CMPTXX(&vc, &vb, &va, CMPTXX_EQ);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_CMPTLT:
-               res = ieee_CMPTLT(va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = CMPTXX(&vc, &vb, &va, CMPTXX_LT);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_CMPTLE:
-               res = ieee_CMPTLE(va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = CMPTXX(&vc, &vb, &va, CMPTXX_LE);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_CMPTUN:
-               res = ieee_CMPTUN(va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = CMPTXX(&vc, &vb, &va, CMPTXX_UN);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTL_FUNC_CVTQL:
@@ -164,17 +198,23 @@ alpha_fp_emul (unsigned long pc)
                 * ops.  We return the result the hw would have
                 * computed.
                 */
+               vb = alpha_read_fp_reg(fb);
                vc = ((vb & 0xc0000000) << 32 | /* sign and msb */
                      (vb & 0x3fffffff) << 29); /* rest of the integer */
-               res = FPCR_INV;
+               res = EFLAG_INVALID;
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_CVTQS:
-               res = ieee_CVTQS(mode, vb, &vc);
+               vb = alpha_read_fp_reg(fb);
+               res = FXTOS(&vc, &vb);
+               alpha_write_fp_reg_s(fc, vc);
                break;
 
              case FLTI_FUNC_CVTQT:
-               res = ieee_CVTQT(mode, vb, &vc);
+               vb = alpha_read_fp_reg(fb);
+               res = FXTOD(&vc, &vb);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_CVTTS_or_CVTST:
@@ -184,54 +224,88 @@ alpha_fp_emul (unsigned long pc)
                         * qualifier isn't set, we wouldn't be here in
                         * the first place...
                         */
-                       res = ieee_CVTST(mode, vb, &vc);
+                       vb = alpha_read_fp_reg_s(fb);
+                       res = FSTOD(&vc, &vb);
+                       alpha_write_fp_reg(fc, vc);
                } else {
-                       res = ieee_CVTTS(mode, vb, &vc);
+                       vb = alpha_read_fp_reg(fb);
+                       res = FDTOS(&vc, &vb);
+                       alpha_write_fp_reg_s(fc, vc);
                }
                break; 
 
              case FLTI_FUNC_DIVS:
-               res = ieee_DIVS(mode, va, vb, &vc);
+               va = alpha_read_fp_reg_s(fa);
+               vb = alpha_read_fp_reg_s(fb);
+               res = FDIVS(&vc, &vb, &va);
+               alpha_write_fp_reg_s(fc, vc);
                break;
 
              case FLTI_FUNC_DIVT:
-               res = ieee_DIVT(mode, va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = FDIVD(&vc, &vb, &va);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_MULS:
-               res = ieee_MULS(mode, va, vb, &vc);
+               va = alpha_read_fp_reg_s(fa);
+               vb = alpha_read_fp_reg_s(fb);
+               res = FMULS(&vc, &vb, &va);
+               alpha_write_fp_reg_s(fc, vc);
                break;
 
              case FLTI_FUNC_MULT:
-               res = ieee_MULT(mode, va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = FMULD(&vc, &vb, &va);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_SUBS:
-               res = ieee_SUBS(mode, va, vb, &vc);
+               va = alpha_read_fp_reg_s(fa);
+               vb = alpha_read_fp_reg_s(fb);
+               res = FSUBS(&vc, &vb, &va);
+               alpha_write_fp_reg_s(fc, vc);
                break;
 
              case FLTI_FUNC_SUBT:
-               res = ieee_SUBT(mode, va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = FSUBD(&vc, &vb, &va);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_ADDS:
-               res = ieee_ADDS(mode, va, vb, &vc);
+               va = alpha_read_fp_reg_s(fa);
+               vb = alpha_read_fp_reg_s(fb);
+               res = FADDS(&vc, &vb, &va);
+               alpha_write_fp_reg_s(fc, vc);
                break;
 
              case FLTI_FUNC_ADDT:
-               res = ieee_ADDT(mode, va, vb, &vc);
+               va = alpha_read_fp_reg(fa);
+               vb = alpha_read_fp_reg(fb);
+               res = FADDD(&vc, &vb, &va);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTI_FUNC_CVTTQ:
-               res = ieee_CVTTQ(mode, vb, &vc);
+               vb = alpha_read_fp_reg(fb);
+               res = FDTOX(&vc, &vb);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              case FLTC_FUNC_SQRTS:
-               res = ieee_SQRTS(mode, vb, &vc);
+               vb = alpha_read_fp_reg_s(fb);
+               res = FSQRTS(&vc, &vb);
+               alpha_write_fp_reg_s(fc, vc);
                break;
 
              case FLTC_FUNC_SQRTT:
-               res = ieee_SQRTT(mode, vb, &vc);
+               vb = alpha_read_fp_reg(fb);
+               res = FSQRTD(&vc, &vb);
+               alpha_write_fp_reg(fc, vc);
                break;
 
              default:
@@ -255,7 +329,7 @@ alpha_fp_emul (unsigned long pc)
         */
        if (res) {
                /* Record exceptions in software control word.  */
-               current->tss.flags = fpcw |= res >> 35;
+               current->tss.flags = fpcw |= (res << IEEE_STATUS_TO_EXCSUM_SHIFT);
 
                /* Update hardware control register */
                fpcr &= (~FPCR_MASK | FPCR_DYN_MASK);
@@ -263,18 +337,17 @@ alpha_fp_emul (unsigned long pc)
                wrfpcr(fpcr);
 
                /* Do we generate a signal?  */
-               if (res >> 51 & fpcw & IEEE_TRAP_ENABLE_MASK) {
+               if (res & fpcw & IEEE_TRAP_ENABLE_MASK) {
                        MOD_DEC_USE_COUNT;
                        return 0;
                }
        }
 
-       /*
-        * Whoo-kay... we got this far, and we're not generating a signal
-        * to the translated program.  All that remains is to write the
-        * result:
+       /* We used to write the destination register here, but
+        * DEC FORTRAN requires that the result *always* be
+        * written... so we do the write immediately after
+        * the operations above.
         */
-       alpha_write_fp_reg(fc, vc);
 
        MOD_DEC_USE_COUNT;
        return 1;
diff --git a/arch/alpha/math-emu/fxtod.c b/arch/alpha/math-emu/fxtod.c
new file mode 100644 (file)
index 0000000..b006323
--- /dev/null
@@ -0,0 +1,11 @@
+#include "soft-fp.h"
+#include "double.h"
+
+int FXTOD(void *rd, void *rs2)
+{
+       FP_DECL_D(R);
+       long a = *(long *)rs2;
+
+       FP_FROM_INT_D(R, a, 64, long);
+       return __FP_PACK_D(rd, R);
+}
diff --git a/arch/alpha/math-emu/fxtos.c b/arch/alpha/math-emu/fxtos.c
new file mode 100644 (file)
index 0000000..2d9bc46
--- /dev/null
@@ -0,0 +1,11 @@
+#include "soft-fp.h"
+#include "single.h"
+
+int FXTOS(void *rd, void *rs2)
+{
+       FP_DECL_S(R);
+       long a = *(long *)rs2;
+
+       FP_FROM_INT_S(R, a, 64, long);
+       return __FP_PACK_S(rd, R);
+}
diff --git a/arch/alpha/math-emu/ieee-math.c b/arch/alpha/math-emu/ieee-math.c
deleted file mode 100644 (file)
index 9a86b10..0000000
+++ /dev/null
@@ -1,1382 +0,0 @@
-/*
- * ieee-math.c - IEEE floating point emulation code
- * Copyright (C) 1989,1990,1991,1995 by
- * Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * Heavily modified for Linux/Alpha.  Changes are Copyright (c) 1995
- * by David Mosberger (davidm@azstarnet.com).
- *
- * This file may be redistributed according to the terms of the
- * GNU General Public License.
- */
-/*
- * The original code did not have any comments. I have created many
- * comments as I fix the bugs in the code.  My comments are based on
- * my observation and interpretation of the code.  If the original
- * author would have spend a few minutes to comment the code, we would
- * never had a problem of misinterpretation.  -HA
- *
- * This code could probably be a lot more optimized (especially the
- * division routine).  However, my foremost concern was to get the
- * IEEE behavior right.  Performance is less critical as these
- * functions are used on exceptional numbers only (well, assuming you
- * don't turn on the "trap on inexact"...).
- */
-#include <linux/sched.h>
-#include "ieee-math.h"
-
-#define STICKY_S       0x20000000      /* both in longword 0 of fraction */
-#define STICKY_T       1
-
-/*
- * Careful: order matters here!
- */
-enum {
-       NaN, QNaN, INFTY, ZERO, DENORM, NORMAL
-};
-
-enum {
-       SINGLE, DOUBLE
-};
-
-typedef unsigned long fpclass_t;
-
-#define IEEE_TMAX      0x7fefffffffffffff
-#define IEEE_SMAX      0x47efffffe0000000
-#define IEEE_SNaN      0xfff00000000f0000
-#define IEEE_QNaN      0xfff8000000000000
-#define IEEE_PINF      0x7ff0000000000000
-#define IEEE_NINF      0xfff0000000000000
-
-
-/*
- * The memory format of S floating point numbers differs from the
- * register format.  In the following, the bitnumbers above the
- * diagram below give the memory format while the numbers below give
- * the register format.
- *
- *       31 30      23 22                              0
- *     +-----------------------------------------------+
- * S   | s |   exp    |       fraction                 |
- *     +-----------------------------------------------+
- *       63 62      52 51                            29
- *     
- * For T floating point numbers, the register and memory formats
- * match:
- *
- *     +-------------------------------------------------------------------+
- * T   | s |        exp        |           frac | tion                     |
- *     +-------------------------------------------------------------------+
- *       63 62               52 51            32 31                       0
- */
-typedef struct {
-       unsigned long   f[2];   /* bit 55 in f[0] is the factor of 2^0*/
-       int             s;      /* 1 bit sign (0 for +, 1 for -) */
-       int             e;      /* 16 bit signed exponent */
-} EXTENDED;
-
-
-/*
- * Return the sign of a Q integer, S or T fp number in the register
- * format.
- */
-static inline int
-sign (unsigned long a)
-{
-       if ((long) a < 0)
-               return -1;
-       else
-               return 1;
-}
-
-
-static inline long
-cmp128 (const long a[2], const long b[2])
-{
-       if (a[1] < b[1]) return -1;
-       if (a[1] > b[1]) return  1;
-       return a[0] - b[0];
-}
-
-
-static inline void
-sll128 (unsigned long a[2])
-{
-       a[1] = (a[1] << 1) | (a[0] >> 63);
-       a[0] <<= 1;
-}
-
-
-static inline void
-srl128 (unsigned long a[2])
-{
-       a[0] = (a[0] >> 1) | (a[1] << 63);
-       a[1] >>= 1;
-}
-
-
-static inline void
-add128 (const unsigned long a[2], const unsigned long b[2], unsigned long c[2])
-{
-       unsigned long carry = a[0] > (0xffffffffffffffff - b[0]);
-
-       c[0] = a[0] + b[0];
-       c[1] = a[1] + b[1] + carry;
-}
-
-
-static inline void
-sub128 (const unsigned long a[2], const unsigned long b[2], unsigned long c[2])
-{
-       unsigned long borrow = a[0] < b[0];
-
-       c[0] = a[0] - b[0];
-       c[1] = a[1] - b[1] - borrow;
-}
-
-
-static inline void
-mul64 (const unsigned long a, const unsigned long b, unsigned long c[2])
-{
-       c[0] = a * b;
-       asm ("umulh %1,%2,%0" : "=r"(c[1]) : "r"(a), "r"(b));
-}
-
-
-static void
-div128 (unsigned long a[2], unsigned long b[2], unsigned long c[2])
-{
-       unsigned long mask[2] = {1, 0};
-
-       /*
-        * Shift b until either the sign bit is set or until it is at
-        * least as big as the dividend:
-        */
-       while (cmp128(b, a) < 0 && sign(b[1]) >= 0) {
-               sll128(b);
-               sll128(mask);
-       }
-       c[0] = c[1] = 0;
-       do {
-               if (cmp128(a, b) >= 0) {
-                       sub128(a, b, a);
-                       add128(mask, c, c);
-               }
-               srl128(mask);
-               srl128(b);
-       } while (mask[0] || mask[1]);
-}
-
-
-static void
-normalize (EXTENDED *a)
-{
-       if (!a->f[0] && !a->f[1])
-               return;         /* zero fraction, unnormalizable... */
-       /*
-        * In "extended" format, the "1" in "1.f" is explicit; it is
-        * in bit 55 of f[0], and the decimal point is understood to
-        * be between bit 55 and bit 54.  To normalize, shift the
-        * fraction until we have a "1" in bit 55.
-        */
-       if ((a->f[0] & 0xff00000000000000) != 0 || a->f[1] != 0) {
-               /*
-                * Mantissa is greater than 1.0:
-                */
-               while ((a->f[0] & 0xff80000000000000) != 0x0080000000000000 ||
-                      a->f[1] != 0)
-               {
-                       unsigned long sticky;
-
-                       ++a->e;
-                       sticky = a->f[0] & 1;
-                       srl128(a->f);
-                       a->f[0] |= sticky;
-               }
-               return;
-       }
-
-       if (!(a->f[0] & 0x0080000000000000)) {
-               /*
-                * Mantissa is less than 1.0:
-                */
-               while (!(a->f[0] & 0x0080000000000000)) {
-                       --a->e;
-                       a->f[0] <<= 1;
-               }
-               return;
-       }
-}
-
-
-static inline fpclass_t
-ieee_fpclass (unsigned long a)
-{
-       unsigned long exp, fract;
-
-       exp   = (a >> 52) & 0x7ff;      /* 11 bits of exponent */
-       fract = a & 0x000fffffffffffff; /* 52 bits of fraction */
-       if (exp == 0) {
-               if (fract == 0)
-                       return ZERO;
-               return DENORM;
-       }
-       if (exp == 0x7ff) {
-               if (fract == 0)
-                       return INFTY;
-               if (((fract >> 51) & 1) != 0)
-                       return QNaN;
-               return NaN;
-       }
-       return NORMAL;
-}
-
-
-/*
- * Translate S/T fp number in register format into extended format.
- */
-static fpclass_t
-extend_ieee (unsigned long a, EXTENDED *b, int prec)
-{
-       fpclass_t result_kind;
-
-       b->s = a >> 63;
-       b->e = ((a >> 52) & 0x7ff) - 0x3ff;     /* remove bias */
-       b->f[1] = 0;
-       /*
-        * We shift f[1] left three bits so that the higher order bits
-        * of the fraction will reside in bits 55 through 0 of f[0].
-        */
-       b->f[0] = (a & 0x000fffffffffffff) << 3;
-       result_kind = ieee_fpclass(a);
-       if (result_kind == NORMAL) {
-               /* set implied 1. bit: */
-               b->f[0] |= 1UL << 55;
-       } else if (result_kind == DENORM) {
-               if (prec == SINGLE)
-                       b->e = -126;
-               else
-                       b->e = -1022;
-       }
-       return result_kind;
-}
-
-
-/*
- * INPUT PARAMETERS:
- *       a           a number in EXTENDED format to be converted to
- *                   s-floating format.
- *      f           rounding mode and exception enable bits.
- * OUTPUT PARAMETERS:
- *       b          will contain the s-floating number that "a" was
- *                  converted to (in register format).
- */
-static unsigned long
-make_s_ieee (long f, EXTENDED *a, unsigned long *b)
-{
-       unsigned long res, sticky;
-
-       if (!a->e && !a->f[0] && !a->f[1]) {
-               *b = (unsigned long) a->s << 63;        /* return +/-0 */
-               return 0;
-       }
-
-       normalize(a);
-       res = 0;
-
-       if (a->e < -0x7e) {
-               res = FPCR_INE;
-               if (f & IEEE_TRAP_ENABLE_UNF) {
-                       res |= FPCR_UNF;
-                       a->e += 0xc0;   /* scale up result by 2^alpha */
-               } else {
-                       /* try making denormalized number: */
-                       while (a->e < -0x7e) {
-                               ++a->e;
-                               sticky = a->f[0] & 1;
-                               srl128(a->f);
-                               if (!a->f[0] && !a->f[0]) {
-                                       /* underflow: replace with exact 0 */
-                                       res |= FPCR_UNF;
-                                       break;
-                               }
-                               a->f[0] |= sticky;
-                       }
-                       a->e = -0x3ff;
-               }
-       }
-       if (a->e >= 0x80) {
-               res = FPCR_OVF | FPCR_INE;
-               if (f & IEEE_TRAP_ENABLE_OVF) {
-                       a->e -= 0xc0;   /* scale down result by 2^alpha */
-               } else {
-                       /*
-                        * Overflow without trap enabled, substitute
-                        * result according to rounding mode:
-                        */
-                       switch (RM(f)) {
-                             case ROUND_NEAR:
-                               *b = IEEE_PINF;
-                               break;
-
-                             case ROUND_CHOP:
-                               *b = IEEE_SMAX;
-                               break;
-
-                             case ROUND_NINF:
-                               if (a->s) {
-                                       *b = IEEE_PINF;
-                               } else {
-                                       *b = IEEE_SMAX;
-                               }
-                               break;
-
-                             case ROUND_PINF: 
-                               if (a->s) {
-                                       *b = IEEE_SMAX;
-                               } else {
-                                       *b = IEEE_PINF;
-                               }
-                               break;
-                       }
-                       *b |= ((unsigned long) a->s << 63);
-                       return res;
-               }
-       }
-
-       *b = (((unsigned long) a->s << 63) |
-             (((unsigned long) a->e + 0x3ff) << 52) |
-             ((a->f[0] >> 3) & 0x000fffffe0000000));
-       return res;
-}
-
-
-static unsigned long
-make_t_ieee (long f, EXTENDED *a, unsigned long *b)
-{
-       unsigned long res, sticky;
-
-       if (!a->e && !a->f[0] && !a->f[1]) {
-               *b = (unsigned long) a->s << 63;        /* return +/-0 */
-               return 0;
-       }
-
-       normalize(a);
-       res = 0;
-       if (a->e < -0x3fe) {
-               res = FPCR_INE;
-               if (f & IEEE_TRAP_ENABLE_UNF) {
-                       res |= FPCR_UNF;
-                       a->e += 0x600;
-               } else {
-                       /* try making denormalized number: */
-                       while (a->e < -0x3fe) {
-                               ++a->e;
-                               sticky = a->f[0] & 1;
-                               srl128(a->f);
-                               if (!a->f[0] && !a->f[0]) {
-                                       /* underflow: replace with exact 0 */
-                                       res |= FPCR_UNF;
-                                       break;
-                               }
-                               a->f[0] |= sticky;
-                       }
-                       a->e = -0x3ff;
-               }
-       }
-       if (a->e >= 0x3ff) {
-               res = FPCR_OVF | FPCR_INE;
-               if (f & IEEE_TRAP_ENABLE_OVF) {
-                       a->e -= 0x600;  /* scale down result by 2^alpha */
-               } else {
-                       /*
-                        * Overflow without trap enabled, substitute
-                        * result according to rounding mode:
-                        */
-                       switch (RM(f)) {
-                             case ROUND_NEAR:
-                               *b = IEEE_PINF;
-                               break;
-
-                             case ROUND_CHOP:
-                               *b = IEEE_TMAX;
-                               break;
-
-                             case ROUND_NINF:
-                               if (a->s) {
-                                       *b = IEEE_PINF;
-                               } else {
-                                       *b = IEEE_TMAX;
-                               }
-                               break;
-
-                             case ROUND_PINF: 
-                               if (a->s) {
-                                       *b = IEEE_TMAX;
-                               } else {
-                                       *b = IEEE_PINF;
-                               }
-                               break;
-                       }
-                       *b |= ((unsigned long) a->s << 63);
-                       return res;
-               }
-       }
-       *b = (((unsigned long) a->s << 63) |
-             (((unsigned long) a->e + 0x3ff) << 52) |
-             ((a->f[0] >> 3) & 0x000fffffffffffff));
-       return res;
-}
-
-
-/*
- * INPUT PARAMETERS:
- *       a          EXTENDED format number to be rounded.
- *       rm        integer with value ROUND_NEAR, ROUND_CHOP, etc.
- *                  indicates how "a" should be rounded to produce "b".
- * OUTPUT PARAMETERS:
- *       b          s-floating number produced by rounding "a".
- * RETURN VALUE:
- *       if no errors occurred, will be zero.  Else will contain flags
- *       like FPCR_INE_OP, etc.
- */
-static unsigned long
-round_s_ieee (int f, EXTENDED *a, unsigned long *b)
-{
-       unsigned long diff1, diff2, res = 0;
-       EXTENDED z1, z2;
-
-       if (!(a->f[0] & 0xffffffff)) {
-               return make_s_ieee(f, a, b);    /* no rounding error */
-       }
-
-       /*
-        * z1 and z2 are the S-floating numbers with the next smaller/greater
-        * magnitude than a, respectively.
-        */
-       z1.s = z2.s = a->s;
-       z1.e = z2.e = a->e;
-       z1.f[0] = z2.f[0] = a->f[0] & 0xffffffff00000000;
-       z1.f[1] = z2.f[1] = 0;
-       z2.f[0] += 0x100000000; /* next bigger S float number */
-
-       switch (RM(f)) {
-             case ROUND_NEAR:
-               diff1 = a->f[0] - z1.f[0];
-               diff2 = z2.f[0] - a->f[0];
-               if (diff1 > diff2)
-                       res = make_s_ieee(f, &z2, b);
-               else if (diff2 > diff1)
-                       res = make_s_ieee(f, &z1, b);
-               else
-                       /* equal distance: round towards even */
-                       if (z1.f[0] & 0x100000000)
-                               res = make_s_ieee(f, &z2, b);
-                       else
-                               res = make_s_ieee(f, &z1, b);
-               break;
-
-             case ROUND_CHOP:
-               res = make_s_ieee(f, &z1, b);
-               break;
-
-             case ROUND_PINF:
-               if (a->s) {
-                       res = make_s_ieee(f, &z1, b);
-               } else {
-                       res = make_s_ieee(f, &z2, b);
-               }
-               break;
-
-             case ROUND_NINF:
-               if (a->s) {
-                       res = make_s_ieee(f, &z2, b);
-               } else {
-                       res = make_s_ieee(f, &z1, b);
-               }
-               break;
-       }
-       return FPCR_INE | res;
-}
-
-
-static unsigned long
-round_t_ieee (int f, EXTENDED *a, unsigned long *b)
-{
-       unsigned long diff1, diff2, res;
-       EXTENDED z1, z2;
-
-       if (!(a->f[0] & 0x7)) {
-               /* no rounding error */
-               return make_t_ieee(f, a, b);
-       }
-
-       z1.s = z2.s = a->s;
-       z1.e = z2.e = a->e;
-       z1.f[0] = z2.f[0] = a->f[0] & ~0x7;
-       z1.f[1] = z2.f[1] = 0;
-       z2.f[0] += (1 << 3);
-
-       res = 0;
-       switch (RM(f)) {
-             case ROUND_NEAR:
-               diff1 = a->f[0] - z1.f[0];
-               diff2 = z2.f[0] - a->f[0];
-               if (diff1 > diff2)
-                       res = make_t_ieee(f, &z2, b);
-               else if (diff2 > diff1)
-                       res = make_t_ieee(f, &z1, b);
-               else
-                       /* equal distance: round towards even */
-                       if (z1.f[0] & (1 << 3))
-                               res = make_t_ieee(f, &z2, b);
-                       else
-                               res = make_t_ieee(f, &z1, b);
-               break;
-
-             case ROUND_CHOP:
-               res = make_t_ieee(f, &z1, b);
-               break;
-
-             case ROUND_PINF:
-               if (a->s) {
-                       res = make_t_ieee(f, &z1, b);
-               } else {
-                       res = make_t_ieee(f, &z2, b);
-               }
-               break;
-
-             case ROUND_NINF:
-               if (a->s) {
-                       res = make_t_ieee(f, &z2, b);
-               } else {
-                       res = make_t_ieee(f, &z1, b);
-               }
-               break;
-       }
-       return FPCR_INE | res;
-}
-
-
-static fpclass_t
-add_kernel_ieee (EXTENDED *op_a, EXTENDED *op_b, EXTENDED *op_c)
-{
-       unsigned long mask, fa, fb, fc;
-       int diff;
-
-       diff = op_a->e - op_b->e;
-       fa = op_a->f[0];
-       fb = op_b->f[0];
-       if (diff < 0) {
-               diff = -diff;
-               op_c->e = op_b->e;
-               mask = (1UL << diff) - 1;
-               fa >>= diff;
-               if (op_a->f[0] & mask) {
-                       fa |= 1;                /* set sticky bit */
-               }
-       } else {
-               op_c->e = op_a->e;
-               mask = (1UL << diff) - 1;
-               fb >>= diff;
-               if (op_b->f[0] & mask) {
-                       fb |= 1;                /* set sticky bit */
-               }
-       }
-       if (op_a->s)
-               fa = -fa;
-       if (op_b->s)
-               fb = -fb;
-       fc = fa + fb;
-       op_c->f[1] = 0;
-       op_c->s = fc >> 63;
-       if (op_c->s) {
-               fc = -fc;
-       }
-       op_c->f[0] = fc;
-       normalize(op_c);
-       return 0;
-}
-
-
-/*
- * converts s-floating "a" to t-floating "b".
- *
- * INPUT PARAMETERS:
- *       a           a s-floating number to be converted
- *       f           the rounding mode (ROUND_NEAR, etc. )
- * OUTPUT PARAMETERS:
- *       b           the t-floating number that "a" is converted to.
- * RETURN VALUE:
- *       error flags - i.e., zero if no errors occurred,
- *       FPCR_INV if invalid operation occurred, etc.
- */
-unsigned long
-ieee_CVTST (int f, unsigned long a, unsigned long *b)
-{
-       EXTENDED temp;
-       fpclass_t a_type;
-
-       a_type = extend_ieee(a, &temp, SINGLE);
-       if (a_type >= NaN && a_type <= INFTY) {
-               *b = a;
-               if (a_type == NaN) {
-                       *b |= (1UL << 51);      /* turn SNaN into QNaN */
-                       return FPCR_INV;
-               }
-               return 0;
-       }
-       return round_t_ieee(f, &temp, b);
-}
-
-
-/*
- * converts t-floating "a" to s-floating "b".
- *
- * INPUT PARAMETERS:
- *       a           a t-floating number to be converted
- *       f           the rounding mode (ROUND_NEAR, etc. )
- * OUTPUT PARAMETERS:
- *       b           the s-floating number that "a" is converted to.
- * RETURN VALUE:
- *       error flags - i.e., zero if no errors occurred,
- *       FPCR_INV if invalid operation occurred, etc.
- */
-unsigned long
-ieee_CVTTS (int f, unsigned long a, unsigned long *b)
-{
-       EXTENDED temp;
-       fpclass_t a_type;
-
-       a_type = extend_ieee(a, &temp, DOUBLE);
-       if (a_type >= NaN && a_type <= INFTY) {
-               *b = a;
-               if (a_type == NaN) {
-                       *b |= (1UL << 51);      /* turn SNaN into QNaN */
-                       return FPCR_INV;
-               }
-               return 0;
-       }
-       return round_s_ieee(f, &temp, b);
-}
-
-
-/*
- * converts q-format (64-bit integer) "a" to s-floating "b".
- *
- * INPUT PARAMETERS:
- *       a           an 64-bit integer to be converted.
- *       f           the rounding mode (ROUND_NEAR, etc. )
- * OUTPUT PARAMETERS:
- *       b           the s-floating number "a" is converted to.
- * RETURN VALUE:
- *       error flags - i.e., zero if no errors occurred,
- *       FPCR_INV if invalid operation occurred, etc.
- */
-unsigned long
-ieee_CVTQS (int f, unsigned long a, unsigned long *b)
-{
-       EXTENDED op_b;
-
-       op_b.s    = 0;
-       op_b.f[0] = a;
-       op_b.f[1] = 0;
-       if (sign(a) < 0) {
-               op_b.s = 1;
-               op_b.f[0] = -a;
-       }
-       op_b.e = 55;
-       normalize(&op_b);
-       return round_s_ieee(f, &op_b, b);
-}
-
-
-/*
- * converts 64-bit integer "a" to t-floating "b".
- *
- * INPUT PARAMETERS:
- *       a           a 64-bit integer to be converted.
- *       f           the rounding mode (ROUND_NEAR, etc.)
- * OUTPUT PARAMETERS:
- *       b           the t-floating number "a" is converted to.
- * RETURN VALUE:
- *       error flags - i.e., zero if no errors occurred,
- *       FPCR_INV if invalid operation occurred, etc.
- */
-unsigned long
-ieee_CVTQT (int f, long a, unsigned long *b)
-{
-       EXTENDED op_b;
-
-       if (a != 0) {
-               op_b.s = (a < 0 ? 1 : 0);
-               op_b.f[0] = (a < 0 ? -a : a);
-               op_b.f[1] = 0;
-               op_b.e = 55;
-               normalize(&op_b);
-               return round_t_ieee(f, &op_b, b);
-       } else {
-               *b = 0;
-               return 0;
-       }
-}
-
-
-/*
- * converts t-floating "a" to 64-bit integer (q-format) "b".
- *
- * INPUT PARAMETERS:
- *       a           a t-floating number to be converted.
- *       f           the rounding mode (ROUND_NEAR, etc. )
- * OUTPUT PARAMETERS:
- *       b           the 64-bit integer "a" is converted to.
- * RETURN VALUE:
- *       error flags - i.e., zero if no errors occurred,
- *       FPCR_INV if invalid operation occurred, etc.
- */
-unsigned long
-ieee_CVTTQ (int f, unsigned long a, unsigned long *pb)
-{
-       unsigned int midway;
-       unsigned long ov, uv, res, b;
-       fpclass_t a_type;
-       EXTENDED temp;
-
-       a_type = extend_ieee(a, &temp, DOUBLE);
-
-       b = 0x7fffffffffffffff;
-       res = FPCR_INV;
-       if (a_type == NaN || a_type == INFTY)
-               goto out;
-
-       res = 0;
-       if (a_type == QNaN)
-               goto out;
-
-       if (temp.e > 0) {
-               ov = 0;
-               while (temp.e > 0) {
-                       --temp.e;
-                       ov |= temp.f[1] >> 63;
-                       sll128(temp.f);
-               }
-               if (ov || (temp.f[1] & 0xffc0000000000000))
-                       res |= FPCR_IOV | FPCR_INE;
-       }
-       else if (temp.e < 0) {
-               while (temp.e < 0) {
-                       ++temp.e;
-                       uv = temp.f[0] & 1;             /* save sticky bit */
-                       srl128(temp.f);
-                       temp.f[0] |= uv;
-               }
-       }
-       b = (temp.f[1] << 9) | (temp.f[0] >> 55);
-
-       /*
-        * Notice: the fraction is only 52 bits long.  Thus, rounding
-        * cannot possibly result in an integer overflow.
-        */
-       switch (RM(f)) {
-             case ROUND_NEAR:
-               if (temp.f[0] & 0x0040000000000000) {
-                       midway = (temp.f[0] & 0x003fffffffffffff) == 0;
-                       if ((midway && (temp.f[0] & 0x0080000000000000)) ||
-                           !midway)
-                               ++b;
-               }
-               break;
-
-             case ROUND_PINF:
-               b += ((temp.f[0] & 0x007fffffffffffff) != 0 && !temp.s);
-               break;
-
-             case ROUND_NINF:
-               b += ((temp.f[0] & 0x007fffffffffffff) != 0 && temp.s);
-               break;
-
-             case ROUND_CHOP:
-               /* no action needed */
-               break;
-       }
-       if ((temp.f[0] & 0x007fffffffffffff) != 0)
-               res |= FPCR_INE;
-
-       if (temp.s) {
-               b = -b;
-       }
-
-out:
-       *pb = b;
-       return res;
-}
-
-
-unsigned long
-ieee_CMPTEQ (unsigned long a, unsigned long b, unsigned long *c)
-{
-       EXTENDED op_a, op_b;
-       fpclass_t a_type, b_type;
-
-       *c = 0;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if (a_type == NaN || b_type == NaN)
-               return FPCR_INV;
-       if (a_type == QNaN || b_type == QNaN)
-               return 0;
-
-       if ((op_a.e == op_b.e && op_a.s == op_b.s &&
-            op_a.f[0] == op_b.f[0] && op_a.f[1] == op_b.f[1]) ||
-           (a_type == ZERO && b_type == ZERO))
-               *c = 0x4000000000000000;
-       return 0;
-}
-
-
-unsigned long
-ieee_CMPTLT (unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b;
-
-       *c = 0;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if (a_type == NaN || b_type == NaN)
-               return FPCR_INV;
-       if (a_type == QNaN || b_type == QNaN)
-               return 0;
-
-       if ((op_a.s == 1 && op_b.s == 0 &&
-            (a_type != ZERO || b_type != ZERO)) ||
-           (op_a.s == 1 && op_b.s == 1 &&
-            (op_a.e > op_b.e || (op_a.e == op_b.e &&
-                                 cmp128(op_a.f, op_b.f) > 0))) ||
-           (op_a.s == 0 && op_b.s == 0 &&
-            (op_a.e < op_b.e || (op_a.e == op_b.e &&
-                                 cmp128(op_a.f,op_b.f) < 0))))
-               *c = 0x4000000000000000;
-       return 0;
-}
-
-
-unsigned long
-ieee_CMPTLE (unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b;
-
-       *c = 0;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if (a_type == NaN || b_type == NaN)
-               return FPCR_INV;
-       if (a_type == QNaN || b_type == QNaN)
-               return 0;
-
-       if ((a_type == ZERO && b_type == ZERO) ||
-           (op_a.s == 1 && op_b.s == 0) ||
-           (op_a.s == 1 && op_b.s == 1 &&
-            (op_a.e > op_b.e || (op_a.e == op_b.e &&
-                                 cmp128(op_a.f,op_b.f) >= 0))) ||
-           (op_a.s == 0 && op_b.s == 0 &&
-            (op_a.e < op_b.e || (op_a.e == op_b.e &&
-                                 cmp128(op_a.f,op_b.f) <= 0))))
-               *c = 0x4000000000000000;
-       return 0;
-}
-
-
-unsigned long
-ieee_CMPTUN (unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b;
-
-       *c = 0x4000000000000000;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if (a_type == NaN || b_type == NaN)
-               return FPCR_INV;
-       if (a_type == QNaN || b_type == QNaN)
-               return 0;
-       *c = 0;
-       return 0;
-}
-
-
-/*
- * Add a + b = c, where a, b, and c are ieee s-floating numbers.  "f"
- * contains the rounding mode etc.
- */
-unsigned long
-ieee_ADDS (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       a_type = extend_ieee(a, &op_a, SINGLE);
-       b_type = extend_ieee(b, &op_b, SINGLE);
-       if ((a_type >= NaN && a_type <= INFTY) ||
-           (b_type >= NaN && b_type <= INFTY))
-       {
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               if (a_type == INFTY && b_type == INFTY && sign(a) != sign(b)) {
-                       *c = IEEE_QNaN;
-                       return FPCR_INV;
-               }
-               if (a_type == INFTY)
-                       *c = a;
-               else
-                       *c = b;
-               return 0;
-       }
-
-       add_kernel_ieee(&op_a, &op_b, &op_c);
-       /* special case for -0 + -0 ==> -0 */
-       if (a_type == ZERO && b_type == ZERO)
-               op_c.s = op_a.s && op_b.s;
-       return round_s_ieee(f, &op_c, c);
-}
-
-
-/*
- * Add a + b = c, where a, b, and c are ieee t-floating numbers.  "f"
- * contains the rounding mode etc.
- */
-unsigned long
-ieee_ADDT (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if ((a_type >= NaN && a_type <= INFTY) ||
-           (b_type >= NaN && b_type <= INFTY))
-       {
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               if (a_type == INFTY && b_type == INFTY && sign(a) != sign(b)) {
-                       *c = IEEE_QNaN;
-                       return FPCR_INV;
-               }
-               if (a_type == INFTY)
-                       *c = a;
-               else
-                       *c = b;
-               return 0;
-       }
-       add_kernel_ieee(&op_a, &op_b, &op_c);
-       /* special case for -0 + -0 ==> -0 */
-       if (a_type == ZERO && b_type == ZERO)
-               op_c.s = op_a.s && op_b.s;
-
-       return round_t_ieee(f, &op_c, c);
-}
-
-
-/*
- * Subtract a - b = c, where a, b, and c are ieee s-floating numbers.
- * "f" contains the rounding mode etc.
- */
-unsigned long
-ieee_SUBS (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       a_type = extend_ieee(a, &op_a, SINGLE);
-       b_type = extend_ieee(b, &op_b, SINGLE);
-       if ((a_type >= NaN && a_type <= INFTY) ||
-           (b_type >= NaN && b_type <= INFTY))
-       {
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               if (a_type == INFTY && b_type == INFTY && sign(a) == sign(b)) {
-                       *c = IEEE_QNaN;
-                       return FPCR_INV;
-               }
-               if (a_type == INFTY)
-                       *c = a;
-               else
-                       *c = b ^ (1UL << 63);
-               return 0;
-       }
-       op_b.s = !op_b.s;
-       add_kernel_ieee(&op_a, &op_b, &op_c);
-       /* special case for -0 - +0 ==> -0 */
-       if (a_type == ZERO && b_type == ZERO)
-               op_c.s = op_a.s && op_b.s;
-
-       return round_s_ieee(f, &op_c, c);
-}
-
-
-/*
- * Subtract a - b = c, where a, b, and c are ieee t-floating numbers.
- * "f" contains the rounding mode etc.
- */
-unsigned long
-ieee_SUBT (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if ((a_type >= NaN && a_type <= INFTY) ||
-           (b_type >= NaN && b_type <= INFTY))
-       {
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               if (a_type == INFTY && b_type == INFTY && sign(a) == sign(b)) {
-                       *c = IEEE_QNaN;
-                       return FPCR_INV;
-               }
-               if (a_type == INFTY)
-                       *c = a;
-               else
-                       *c = b ^ (1UL << 63);
-               return 0;
-       }
-       op_b.s = !op_b.s;
-       add_kernel_ieee(&op_a, &op_b, &op_c);
-       /* special case for -0 - +0 ==> -0 */
-       if (a_type == ZERO && b_type == ZERO)
-               op_c.s = op_a.s && op_b.s;
-
-       return round_t_ieee(f, &op_c, c);
-}
-
-
-/*
- * Multiply a x b = c, where a, b, and c are ieee s-floating numbers.
- * "f" contains the rounding mode.
- */
-unsigned long
-ieee_MULS (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       a_type = extend_ieee(a, &op_a, SINGLE);
-       b_type = extend_ieee(b, &op_b, SINGLE);
-       if ((a_type >= NaN && a_type <= INFTY) ||
-           (b_type >= NaN && b_type <= INFTY))
-       {
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               if ((a_type == INFTY && b_type == ZERO) ||
-                   (b_type == INFTY && a_type == ZERO))
-               {
-                       *c = IEEE_QNaN;         /* return canonical QNaN */
-                       return FPCR_INV;
-               }
-               if (a_type == INFTY)
-                       *c = a ^ ((b >> 63) << 63);
-               else if (b_type == INFTY)
-                       *c = b ^ ((a >> 63) << 63);
-               else
-                       /* either of a and b are +/-0 */
-                       *c = ((unsigned long) op_a.s ^ op_b.s) << 63;
-               return 0;
-       }
-       op_c.s = op_a.s ^ op_b.s;
-       op_c.e = op_a.e + op_b.e - 55;
-       mul64(op_a.f[0], op_b.f[0], op_c.f);
-
-       return round_s_ieee(f, &op_c, c);
-}
-
-
-/*
- * Multiply a x b = c, where a, b, and c are ieee t-floating numbers.
- * "f" contains the rounding mode.
- */
-unsigned long
-ieee_MULT (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       *c = IEEE_QNaN;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if ((a_type >= NaN && a_type <= ZERO) ||
-           (b_type >= NaN && b_type <= ZERO))
-       {
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               if ((a_type == INFTY && b_type == ZERO) ||
-                   (b_type == INFTY && a_type == ZERO))
-               {
-                       *c = IEEE_QNaN;         /* return canonical QNaN */
-                       return FPCR_INV;
-               }
-               if (a_type == INFTY)
-                       *c = a ^ ((b >> 63) << 63);
-               else if (b_type == INFTY)
-                       *c = b ^ ((a >> 63) << 63);
-               else
-                       /* either of a and b are +/-0 */
-                       *c = ((unsigned long) op_a.s ^ op_b.s) << 63;
-               return 0;
-       }
-       op_c.s = op_a.s ^ op_b.s;
-       op_c.e = op_a.e + op_b.e - 55;
-       mul64(op_a.f[0], op_b.f[0], op_c.f);
-
-       return round_t_ieee(f, &op_c, c);
-}
-
-
-/*
- * Divide a / b = c, where a, b, and c are ieee s-floating numbers.
- * "f" contains the rounding mode etc.
- */
-unsigned long
-ieee_DIVS (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       a_type = extend_ieee(a, &op_a, SINGLE);
-       b_type = extend_ieee(b, &op_b, SINGLE);
-       if ((a_type >= NaN && a_type <= ZERO) ||
-           (b_type >= NaN && b_type <= ZERO))
-       {
-               unsigned long res;
-
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               res = 0;
-               *c = IEEE_PINF;
-               if (a_type == INFTY) {
-                       if (b_type == INFTY) {
-                               *c = IEEE_QNaN;
-                               return FPCR_INV;
-                       }
-               } else if (b_type == ZERO) {
-                       if (a_type == ZERO) {
-                               *c = IEEE_QNaN;
-                               return FPCR_INV;
-                       }
-                       res = FPCR_DZE;
-               } else
-                       /* a_type == ZERO || b_type == INFTY */
-                       *c = 0;
-               *c |= (unsigned long) (op_a.s ^ op_b.s) << 63;
-               return res;
-       }
-       op_c.s = op_a.s ^ op_b.s;
-       op_c.e = op_a.e - op_b.e;
-
-       op_a.f[1] = op_a.f[0];
-       op_a.f[0] = 0;
-       div128(op_a.f, op_b.f, op_c.f);
-       if (a_type != ZERO)
-               /* force a sticky bit because DIVs never hit exact .5: */
-               op_c.f[0] |= STICKY_S;
-       normalize(&op_c);
-       op_c.e -= 9;            /* remove excess exp from original shift */
-       return round_s_ieee(f, &op_c, c);
-}
-
-
-/*
- * Divide a/b = c, where a, b, and c are ieee t-floating numbers.  "f"
- * contains the rounding mode etc.
- */
-unsigned long
-ieee_DIVT (int f, unsigned long a, unsigned long b, unsigned long *c)
-{
-       fpclass_t a_type, b_type;
-       EXTENDED op_a, op_b, op_c;
-
-       *c = IEEE_QNaN;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       b_type = extend_ieee(b, &op_b, DOUBLE);
-       if ((a_type >= NaN && a_type <= ZERO) ||
-           (b_type >= NaN && b_type <= ZERO))
-       {
-               unsigned long res;
-
-               /* propagate NaNs according to arch. ref. handbook: */
-               if (b_type == QNaN)
-                       *c = b;
-               else if (b_type == NaN)
-                       *c = b | (1UL << 51);
-               else if (a_type == QNaN)
-                       *c = a;
-               else if (a_type == NaN)
-                       *c = a | (1UL << 51);
-
-               if (a_type == NaN || b_type == NaN)
-                       return FPCR_INV;
-               if (a_type == QNaN || b_type == QNaN)
-                       return 0;
-
-               res = 0;
-               *c = IEEE_PINF;
-               if (a_type == INFTY) {
-                       if (b_type == INFTY) {
-                               *c = IEEE_QNaN;
-                               return FPCR_INV;
-                       }
-               } else if (b_type == ZERO) {
-                       if (a_type == ZERO) {
-                               *c = IEEE_QNaN;
-                               return FPCR_INV;
-                       }
-                       res = FPCR_DZE;
-               } else
-                       /* a_type == ZERO || b_type == INFTY */
-                       *c = 0;
-               *c |= (unsigned long) (op_a.s ^ op_b.s) << 63;
-               return res;
-       }
-       op_c.s = op_a.s ^ op_b.s;
-       op_c.e = op_a.e - op_b.e;
-
-       op_a.f[1] = op_a.f[0];
-       op_a.f[0] = 0;
-       div128(op_a.f, op_b.f, op_c.f);
-       if (a_type != ZERO)
-               /* force a sticky bit because DIVs never hit exact .5 */
-               op_c.f[0] |= STICKY_T;
-       normalize(&op_c);
-       op_c.e -= 9;            /* remove excess exp from original shift */
-       return round_t_ieee(f, &op_c, c);
-}
-
-/*
- * Sqrt a = b, where a and b are ieee s-floating numbers.  "f"
- * contains the rounding mode etc.
- */
-unsigned long
-ieee_SQRTS (int f, unsigned long a, unsigned long *b)
-{
-       fpclass_t a_type;
-       EXTENDED op_a, op_b;
-
-       *b = IEEE_QNaN;
-       a_type = extend_ieee(a, &op_a, SINGLE);
-       if (op_a.s == 0) {
-               /* FIXME -- handle positive denormals.  */
-               send_sig(SIGFPE, current, 1);
-       }
-       return FPCR_INV;
-}
-
-/*
- * Sqrt a = b, where a and b are ieee t-floating numbers.  "f"
- * contains the rounding mode etc.
- */
-unsigned long
-ieee_SQRTT (int f, unsigned long a, unsigned long *b)
-{
-       fpclass_t a_type;
-       EXTENDED op_a, op_b;
-
-       *b = IEEE_QNaN;
-       a_type = extend_ieee(a, &op_a, DOUBLE);
-       if (op_a.s == 0) {
-               /* FIXME -- handle positive denormals.  */
-               send_sig(SIGFPE, current, 1);
-       }
-       return FPCR_INV;
-}
diff --git a/arch/alpha/math-emu/ieee-math.h b/arch/alpha/math-emu/ieee-math.h
deleted file mode 100644 (file)
index 076a6d1..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 1992,1995 by
- * Digital Equipment Corporation, Maynard, Massachusetts.
- * This file may be redistributed according to the terms of the
- * GNU General Public License.
- */
-#ifndef __ieee_math_h__
-#define __ieee_math_h__
-
-#include <asm/fpu.h>
-
-#define ROUND_SHIFT    6               /* make space for trap-enable bits */
-#define RM(f)          (((f) >> ROUND_SHIFT) & 0x3)
-
-#define ROUND_CHOP     (FPCR_DYN_CHOPPED >> FPCR_DYN_SHIFT)
-#define ROUND_NINF     (FPCR_DYN_MINUS   >> FPCR_DYN_SHIFT)
-#define ROUND_NEAR     (FPCR_DYN_NORMAL  >> FPCR_DYN_SHIFT)
-#define ROUND_PINF     (FPCR_DYN_PLUS    >> FPCR_DYN_SHIFT)
-
-extern unsigned long ieee_CVTST (int rm, unsigned long a, unsigned long *b);
-extern unsigned long ieee_CVTTS (int rm, unsigned long a, unsigned long *b);
-extern unsigned long ieee_CVTQS (int rm, unsigned long a, unsigned long *b);
-extern unsigned long ieee_CVTQT (int rm, long a, unsigned long *b);
-extern unsigned long ieee_CVTTQ (int rm, unsigned long a, unsigned long *b);
-
-extern unsigned long ieee_CMPTEQ (unsigned long a, unsigned long b,
-                                 unsigned long *c);
-extern unsigned long ieee_CMPTLT (unsigned long a, unsigned long b,
-                                 unsigned long *c);
-extern unsigned long ieee_CMPTLE (unsigned long a, unsigned long b,
-                                 unsigned long *c);
-extern unsigned long ieee_CMPTUN (unsigned long a, unsigned long b,
-                                 unsigned long *c);
-
-extern unsigned long ieee_ADDS (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_ADDT (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_SUBS (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_SUBT (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_MULS (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_MULT (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_DIVS (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_DIVT (int rm, unsigned long a, unsigned long b,
-                               unsigned long *c);
-extern unsigned long ieee_SQRTS (int rm, unsigned long a, unsigned long *b);
-extern unsigned long ieee_SQRTT (int rm, unsigned long a, unsigned long *b);
-
-#endif /* __ieee_math_h__ */
diff --git a/arch/alpha/math-emu/sfp-machine.h b/arch/alpha/math-emu/sfp-machine.h
new file mode 100644 (file)
index 0000000..14650cb
--- /dev/null
@@ -0,0 +1,625 @@
+/* Machine-dependent software floating-point definitions.  Sparc64 version.
+   Copyright (C) 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If
+   not, write to the Free Software Foundation, Inc.,
+   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#include <linux/sched.h>
+#include <asm/fpu.h>
+
+#define _FP_W_TYPE_SIZE                64
+#define _FP_W_TYPE             unsigned long
+#define _FP_WS_TYPE            signed long
+#define _FP_I_TYPE             long
+
+#define _FP_MUL_MEAT_S(R,X,Y)  _FP_MUL_MEAT_1_imm(S,R,X,Y)
+#define _FP_MUL_MEAT_D(R,X,Y)  _FP_MUL_MEAT_1_wide(D,R,X,Y,umul_ppmm)
+#define _FP_MUL_MEAT_Q(R,X,Y)  _FP_MUL_MEAT_2_wide(Q,R,X,Y,umul_ppmm)
+
+#define _FP_DIV_MEAT_S(R,X,Y)  _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm)
+#define _FP_DIV_MEAT_D(R,X,Y)  _FP_DIV_MEAT_1_udiv(D,R,X,Y)
+#define _FP_DIV_MEAT_Q(R,X,Y)  _FP_DIV_MEAT_2_udiv_64(Q,R,X,Y)
+
+#define _FP_NANFRAC_S          _FP_QNANBIT_S
+#define _FP_NANFRAC_D          _FP_QNANBIT_D
+#define _FP_NANFRAC_Q          _FP_QNANBIT_Q, 0
+
+/* On some architectures float-to-int conversions return a result
+ * code.  On others (e.g. Sparc) they return 0
+ */
+#define _FTOI_RESULT           A_r
+
+#define _FP_KEEPNANFRACP 1
+
+/* Alpha Architecture Manual Section 4.7.10.4: Propagating NaN Values,
+ * summary:
+ *
+ * The first of the following rules that is applicable governs the
+ * value returned:
+ *     1: If X is a quiet NaN, copy X to the result.
+ *     2: If X is a signaling NaN, the result is the canonical quiet NaN
+ *        with the same sign as X
+ *     3: If Y is a quiet NaN, copy Y to the result.
+ *     4: If Y is a signaling NaN, the result is the canonical quiet NaN
+ *        with the same sign as Y
+ *     5: The result is the canonical quiet NaN with a sign bit of 1
+ *
+ * In addition, in cases (2) and (4) above we set EFLAG_INVALID.
+ */
+
+#define _FP_IS_NAN(fs, Z)      (Z##_c == FP_CLS_NAN)
+#define _FP_IS_QNAN(fs, Z)     (Z##_f & _FP_QNANBIT_##fs)
+
+#define _FP_CHOOSENAN(fs, wc, R, X, Y)                         \
+  do {                                                         \
+    R##_r |= (X##_r | Y##_r);                                  \
+    if(_FP_IS_NAN(fs, Y)) {                                    \
+       R##_s = Y##_s;                                          \
+       R##_c = FP_CLS_NAN;                                     \
+       if(_FP_IS_QNAN(fs, Y)) {        /* Rule 1 */            \
+           _FP_FRAC_COPY_##wc(R,Y);                            \
+       }                                                       \
+       else {                          /* Rule 2 */            \
+           _FP_FRAC_SET_##wc(R,Y##_f | _FP_QNANBIT_##fs);      \
+           R##_r = EFLAG_INVALID;                              \
+       }                                                       \
+    }                                                          \
+    else if(_FP_IS_NAN(fs, X)) {                               \
+       R##_s = X##_s;                                          \
+       R##_c = FP_CLS_NAN;                                     \
+       if(_FP_IS_QNAN(fs, X)) {        /* Rule 3 */            \
+           _FP_FRAC_COPY_##wc(R,X);                            \
+       }                                                       \
+       else {                          /* Rule 4 */            \
+           _FP_FRAC_SET_##wc(R,X##_f | _FP_QNANBIT_##fs);      \
+           R##_r |= EFLAG_INVALID;                             \
+       }                                                       \
+    }                                                          \
+    else {                             /* Rule 5 */            \
+       R##_s = 1;                                              \
+       R##_c = FP_CLS_NAN;                                     \
+       _FP_FRAC_SET_##wc(R,_FP_QNANBIT_##fs | EFLAG_MASK);     \
+    }                                                          \
+  } while(0)
+
+/* Rules 3 and 4 don't apply to functions of only one argument */
+#define _FP_CHOOSENAN_1(fs, wc, R, X)                          \
+  do {                                                         \
+    if(_FP_IS_NAN(fs, X)) {                                    \
+       R##_s = X##_s;                                          \
+       R##_c = FP_CLS_NAN;                                     \
+       if(_FP_IS_QNAN(fs, X)) {        /* Rule 1 */            \
+           _FP_FRAC_COPY_##wc(R,X);                            \
+       }                                                       \
+       else {                          /* Rule 2 */            \
+           _FP_FRAC_SET_##wc(R,X##_f | _FP_QNANBIT_##fs);      \
+           R##_r |= EFLAG_INVALID;                             \
+       }                                                       \
+    }                                                          \
+    else {                             /* Rule 5 */            \
+       R##_s = 1;                                              \
+       R##_c = FP_CLS_NAN;                                     \
+       _FP_FRAC_SET_##wc(R,_FP_QNANBIT_##fs | EFLAG_MASK);     \
+    }                                                          \
+  } while(0)
+
+#define _FP_CHOOSENAN_SQRT     _FP_CHOOSENAN_1
+
+
+#define __FP_UNPACK_DENORM(fs, wc, X)                          \
+    {                                                                  \
+       _FP_I_TYPE _shift;                                              \
+       X##_r |= EFLAG_DENORM;                                          \
+       if(_FP_DENORM_TO_ZERO) {                                        \
+           /* Crunching a nonzero denorm to zero necessarily makes */  \
+           /* the result inexact */                                    \
+           X##_r |= EFLAG_INEXACT;                                     \
+           _FP_FRAC_SET_##wc(X, 0);                                    \
+           X##_c = FP_CLS_ZERO;                                        \
+       }                                                               \
+       else {                                                          \
+           _FP_FRAC_CLZ_##wc(_shift, X);                               \
+           _shift -= _FP_FRACXBITS_##fs;                               \
+           _FP_FRAC_SLL_##wc(X, (_shift+_FP_WORKBITS));                \
+           X##_e -= _FP_EXPBIAS_##fs - 1 + _shift;                     \
+           X##_c = FP_CLS_NORMAL;                                      \
+       }                                                               \
+    }
+
+#define __FP_UNPACK_RAW_1(fs, X, val)                          \
+  do {                                                         \
+    union _FP_UNION_##fs *_flo =                               \
+       (union _FP_UNION_##fs *)val;                            \
+                                                               \
+    X##_f = _flo->bits.frac;                                   \
+    X##_e = _flo->bits.exp;                                    \
+    X##_s = _flo->bits.sign;                                   \
+  } while (0)
+
+#define __FP_UNPACK_RAW_2(fs, X, val)                  \
+  do {                                                 \
+    union _FP_UNION_##fs *_flo =                       \
+       (union _FP_UNION_##fs *)val;                    \
+                                                       \
+    X##_f0 = _flo->bits.frac0;                         \
+    X##_f1 = _flo->bits.frac1;                         \
+    X##_e  = _flo->bits.exp;                           \
+    X##_s  = _flo->bits.sign;                          \
+  } while (0)
+
+#define __FP_UNPACK_S(X,val)           \
+  do {                                 \
+    __FP_UNPACK_RAW_1(S,X,val);                \
+    _FP_UNPACK_CANONICAL(S,1,X);       \
+  } while (0)
+
+#define __FP_UNPACK_D(X,val)           \
+  do {                                 \
+    __FP_UNPACK_RAW_1(D,X,val);                \
+    _FP_UNPACK_CANONICAL(D,1,X);       \
+  } while (0)
+
+#define __FP_UNPACK_Q(X,val)           \
+  do {                                 \
+    __FP_UNPACK_RAW_2(Q,X,val);                \
+    _FP_UNPACK_CANONICAL(Q,2,X);       \
+  } while (0)
+
+#define __FP_PACK_RAW_1(fs, val, X)                            \
+  do {                                                         \
+    union _FP_UNION_##fs *_flo =                               \
+       (union _FP_UNION_##fs *)val;                            \
+                                                               \
+    _flo->bits.frac = X##_f;                                   \
+    _flo->bits.exp  = X##_e;                                   \
+    _flo->bits.sign = X##_s;                                   \
+  } while (0)
+  
+#define __FP_PACK_RAW_2(fs, val, X)                    \
+  do {                                                 \
+    union _FP_UNION_##fs *_flo =                       \
+       (union _FP_UNION_##fs *)val;                    \
+                                                       \
+    _flo->bits.frac0 = X##_f0;                         \
+    _flo->bits.frac1 = X##_f1;                         \
+    _flo->bits.exp   = X##_e;                          \
+    _flo->bits.sign  = X##_s;                          \
+  } while (0)
+
+
+/* Alpha rules for handling certain exceptional cases are different
+ * enough that we simply define our own versions here to override
+ * the ones in op-common.h
+ */
+
+#define _FP_ADD(fs, wc, R, X, Y)                                            \
+do {                                                                        \
+  /* Propagate any flags that may have been set during unpacking */         \
+  R##_r |= (X##_r | Y##_r);                                                 \
+  switch (_FP_CLS_COMBINE(X##_c, Y##_c))                                    \
+  {                                                                         \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL):                        \
+    {                                                                       \
+      /* shift the smaller number so that its exponent matches the larger */ \
+      _FP_I_TYPE diff = X##_e - Y##_e;                                      \
+                                                                            \
+      if (diff < 0)                                                         \
+       {                                                                    \
+         diff = -diff;                                                      \
+         if (diff <= _FP_WFRACBITS_##fs)                                    \
+           _FP_FRAC_SRS_##wc(X, diff, _FP_WFRACBITS_##fs);                  \
+         else if (!_FP_FRAC_ZEROP_##wc(X)) {                                \
+           _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc);                          \
+           R_r |= EFLAG_INEXACT;                                            \
+         }                                                                  \
+         else                                                               \
+           _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);                         \
+         R##_e = Y##_e;                                                     \
+       }                                                                    \
+      else                                                                  \
+       {                                                                    \
+         if (diff > 0)                                                      \
+           {                                                                \
+             if (diff <= _FP_WFRACBITS_##fs)                                \
+               _FP_FRAC_SRS_##wc(Y, diff, _FP_WFRACBITS_##fs);              \
+             else if (!_FP_FRAC_ZEROP_##wc(Y)) {                            \
+               _FP_FRAC_SET_##wc(Y, _FP_MINFRAC_##wc);                      \
+                R_r |= EFLAG_INEXACT;                                       \
+             }                                                              \
+             else                                                           \
+               _FP_FRAC_SET_##wc(Y, _FP_ZEROFRAC_##wc);                     \
+           }                                                                \
+         R##_e = X##_e;                                                     \
+       }                                                                    \
+                                                                            \
+      R##_c = FP_CLS_NORMAL;                                                \
+                                                                            \
+      if (X##_s == Y##_s)                                                   \
+       {                                                                    \
+         R##_s = X##_s;                                                     \
+         _FP_FRAC_ADD_##wc(R, X, Y);                                        \
+         if (_FP_FRAC_OVERP_##wc(fs, R))                                    \
+           {                                                                \
+             _FP_FRAC_SRS_##wc(R, 1, _FP_WFRACBITS_##fs);                   \
+             R##_e++;                                                       \
+           }                                                                \
+       }                                                                    \
+      else                                                                  \
+       {                                                                    \
+         R##_s = X##_s;                                                     \
+         _FP_FRAC_SUB_##wc(R, X, Y);                                        \
+         if (_FP_FRAC_ZEROP_##wc(R))                                        \
+           {                                                                \
+             /* return an exact zero */                                     \
+             if (FP_ROUNDMODE == FP_RND_MINF)                               \
+               R##_s |= Y##_s;                                              \
+             else                                                           \
+               R##_s &= Y##_s;                                              \
+             R##_c = FP_CLS_ZERO;                                           \
+           }                                                                \
+         else                                                               \
+           {                                                                \
+             if (_FP_FRAC_NEGP_##wc(R))                                     \
+               {                                                            \
+                 _FP_FRAC_SUB_##wc(R, Y, X);                                \
+                 R##_s = Y##_s;                                             \
+               }                                                            \
+                                                                            \
+             /* renormalize after subtraction */                            \
+             _FP_FRAC_CLZ_##wc(diff, R);                                    \
+             diff -= _FP_WFRACXBITS_##fs;                                   \
+             if (diff)                                                      \
+               {                                                            \
+                 R##_e -= diff;                                             \
+                 _FP_FRAC_SLL_##wc(R, diff);                                \
+               }                                                            \
+           }                                                                \
+       }                                                                    \
+      break;                                                                \
+    }                                                                       \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NAN):                              \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NORMAL):                           \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_INF):                              \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_ZERO):                                     \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NAN):                           \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NAN):                              \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NAN):                                     \
+    _FP_CHOOSENAN(fs, wc, R, X, Y);                                         \
+    break;                                                                  \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_ZERO):                          \
+    R##_e = X##_e;                                                          \
+    _FP_FRAC_COPY_##wc(R, X);                                               \
+    R##_s = X##_s;                                                          \
+    R##_c = X##_c;                                                          \
+    break;                                                                  \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NORMAL):                          \
+    R##_e = Y##_e;                                                          \
+    _FP_FRAC_COPY_##wc(R, Y);                                               \
+    R##_s = Y##_s;                                                          \
+    R##_c = Y##_c;                                                          \
+    break;                                                                  \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_INF):                              \
+    if (X##_s != Y##_s)                                                             \
+      {                                                                             \
+       /* +INF + -INF => NAN */                                             \
+       _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs);                              \
+       R##_s = X##_s ^ Y##_s;                                               \
+       R##_c = FP_CLS_NAN;                                                  \
+       R##_r |= EFLAG_INVALID;                                              \
+       break;                                                               \
+      }                                                                             \
+    /* FALLTHRU */                                                          \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NORMAL):                           \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_ZERO):                                     \
+    R##_s = X##_s;                                                          \
+    R##_c = FP_CLS_INF;                                                             \
+    break;                                                                  \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_INF):                           \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_INF):                                     \
+    R##_s = Y##_s;                                                          \
+    R##_c = FP_CLS_INF;                                                             \
+    break;                                                                  \
+                                                                            \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_ZERO):                            \
+    /* make sure the sign is correct */                                             \
+    if (FP_ROUNDMODE == FP_RND_MINF)                                        \
+      R##_s = X##_s | Y##_s;                                                \
+    else                                                                    \
+      R##_s = X##_s & Y##_s;                                                \
+    R##_c = FP_CLS_ZERO;                                                    \
+    break;                                                                  \
+                                                                            \
+  default:                                                                  \
+    abort();                                                                \
+  }                                                                         \
+} while (0)
+
+
+#define _FP_MUL(fs, wc, R, X, Y)                       \
+do {                                                   \
+  /* Propagate any flags that may have been set during unpacking */         \
+  R##_r |= (X##_r | Y##_r);                                                 \
+  R##_s = X##_s ^ Y##_s;                               \
+  switch (_FP_CLS_COMBINE(X##_c, Y##_c))               \
+  {                                                    \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL):   \
+    R##_c = FP_CLS_NORMAL;                             \
+    R##_e = X##_e + Y##_e + 1;                         \
+                                                       \
+    _FP_MUL_MEAT_##fs(R,X,Y);                          \
+                                                       \
+    if (_FP_FRAC_OVERP_##wc(fs, R))                    \
+      _FP_FRAC_SRS_##wc(R, 1, _FP_WFRACBITS_##fs);     \
+    else                                               \
+      R##_e--;                                         \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NORMAL):      \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_INF):         \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_ZERO):                \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NAN):         \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NAN):      \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NAN):         \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NAN):                \
+    _FP_CHOOSENAN(fs, wc, R, X, Y);                    \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_INF):         \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NORMAL):      \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NORMAL):     \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_ZERO):       \
+    _FP_FRAC_COPY_##wc(R, X);                          \
+    R##_c = X##_c;                                     \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_INF):      \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_ZERO):     \
+    _FP_FRAC_COPY_##wc(R, Y);                          \
+    R##_c = Y##_c;                                     \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_ZERO):                \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_INF):                \
+    R##_c = FP_CLS_NAN;                                        \
+    _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs);            \
+    R##_s = 1; /* Alpha SRM rule */                    \
+    break;                                             \
+                                                       \
+  default:                                             \
+    abort();                                           \
+  }                                                    \
+} while (0)
+
+
+#define _FP_DIV(fs, wc, R, X, Y)                       \
+do {                                                   \
+  /* Propagate any flags that may have been set during unpacking */         \
+  R##_r |= (X##_r | Y##_r);                                                 \
+  R##_s = X##_s ^ Y##_s;                               \
+  switch (_FP_CLS_COMBINE(X##_c, Y##_c))               \
+  {                                                    \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL):   \
+    R##_c = FP_CLS_NORMAL;                             \
+    R##_e = X##_e - Y##_e;                             \
+                                                       \
+    _FP_DIV_MEAT_##fs(R,X,Y);                          \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NORMAL):      \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_INF):         \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_ZERO):                \
+  case _FP_CLS_COMBINE(FP_CLS_NAN,FP_CLS_NAN):         \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NAN):      \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NAN):         \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NAN):                \
+    _FP_CHOOSENAN(fs, wc, R, X, Y);                    \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_INF):      \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_INF):                \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_NORMAL):     \
+    R##_c = FP_CLS_ZERO;                               \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_ZERO):     \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_ZERO):                \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NORMAL):      \
+    R##_c = FP_CLS_INF;                                        \
+    break;                                             \
+                                                       \
+  case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_INF):         \
+  case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_ZERO):       \
+    R##_c = FP_CLS_NAN;                                        \
+    _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs);            \
+    R##_s = 1; /* Alpha SRM rule */                    \
+    break;                                             \
+                                                       \
+  default:                                             \
+    abort();                                           \
+  }                                                    \
+} while (0)
+
+
+#define _FP_TO_INT(fs, wc, r, X, rsize, rsigned)                       \
+  ({                                                                   \
+    switch (X##_c)                                                     \
+      {                                                                        \
+      case FP_CLS_ZERO:                                                        \
+       r = 0;                                                          \
+       break;                                                          \
+      case FP_CLS_NAN:                                                 \
+       r = 0;                                                          \
+       X##_r |= EFLAG_INVALID;                                         \
+       break;                                                          \
+      case FP_CLS_INF:                                                 \
+       r = 0;                                                          \
+       X##_r |= (EFLAG_INVALID | EFLAG_INEXACT);                       \
+       break;                                                          \
+      case FP_CLS_NORMAL:                                              \
+       if (X##_e < 0)                                                  \
+         {                                                             \
+           r = 0;                                                      \
+           X##_r |= EFLAG_INEXACT;                                     \
+         }                                                             \
+       else                                                            \
+         {                                                             \
+           if (X##_e >= rsize - (rsigned != 0)) {                      \
+               /* Overflow.  On alpha, set the INV bit and proceed */  \
+               /* JRP - I *believe* the proper behavior is to set */   \
+               /*       INV and write a true zero... need to check */  \
+               X##_r |= EFLAG_INVALID;                                 \
+               r = 0;                                                  \
+               break;                                                  \
+           }                                                           \
+           if (_FP_W_TYPE_SIZE*wc < rsize)                             \
+             {                                                         \
+               _FP_FRAC_ASSEMBLE_##wc(r, X, rsize);                    \
+               r <<= X##_e - _FP_WFRACBITS_##fs;                       \
+             }                                                         \
+           else                                                        \
+             {                                                         \
+               if (X##_e >= _FP_WFRACBITS_##fs)                        \
+                 _FP_FRAC_SLL_##wc(X, (X##_e - _FP_WFRACBITS_##fs + 1)); \
+               else                                                    \
+                 _FP_FRAC_SRL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
+               _FP_FRAC_ASSEMBLE_##wc(r, X, rsize);                    \
+             }                                                         \
+           if (rsigned && X##_s)                                       \
+             r = -r;                                                   \
+         }                                                             \
+       break;                                                          \
+      }                                                                        \
+      X##_r;                                                           \
+  })
+
+
+/* We only actually write to the destination register
+ * if exceptions signalled (if any) will not trap.
+ */
+#define __FPU_TEM ((current->tss.flags)& IEEE_TRAP_ENABLE_MASK)
+
+#define __FPU_TRAP_P(bits) \
+       ((__FPU_TEM & (bits)) != 0)
+
+#define __FP_PACK_S(val,X)                     \
+({  int __exc = _FP_PACK_CANONICAL(S,1,X);     \
+    if(!__exc || !__FPU_TRAP_P(__exc))         \
+        __FP_PACK_RAW_1(S,val,X);              \
+    __exc;                                     \
+})
+
+#define __FP_PACK_D(val,X)                     \
+({  int __exc = _FP_PACK_CANONICAL(D,1,X);     \
+    if(!__exc || !__FPU_TRAP_P(__exc))         \
+        __FP_PACK_RAW_1(D,val,X);              \
+    __exc;                                     \
+})
+
+#define __FP_PACK_Q(val,X)                     \
+({  int __exc = _FP_PACK_CANONICAL(Q,2,X);     \
+    if(!__exc || !__FPU_TRAP_P(__exc))         \
+        __FP_PACK_RAW_2(Q,val,X);              \
+    __exc;                                     \
+})
+
+/* Obtain the current rounding mode. */
+#define FP_ROUNDMODE   \
+    (((current->tss.flags)&IEEE_CURRENT_RM_MASK)>>IEEE_CURRENT_RM_SHIFT)
+
+#define FP_RND_NEAREST         (FPCR_DYN_NORMAL >> FPCR_DYN_SHIFT)
+#define FP_RND_ZERO            (FPCR_DYN_CHOPPED >> FPCR_DYN_SHIFT)
+#define FP_RND_PINF            (FPCR_DYN_PLUS >> FPCR_DYN_SHIFT)
+#define FP_RND_MINF            (FPCR_DYN_MINUS >> FPCR_DYN_SHIFT)
+
+
+#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+  __asm__ ("addq %4,%5,%1; cmpult %1,%4,$28; addq %2,%3,%0; addq %0,$28,%0" \
+          : "=r" ((UDItype)(sh)), \
+            "=r" ((UDItype)(sl)) \
+          : "r" ((UDItype)(ah)), \
+            "r" ((UDItype)(bh)), \
+            "r" ((UDItype)(al)), \
+            "r" ((UDItype)(bl)))
+          
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+  __asm__ ("subq %4,%5,%1; cmpult %4,%5,$28; subq %2,%3,%0; subq %0,$28,%0"\
+          : "=r" ((UDItype)(sh)), \
+            "=&r" ((UDItype)(sl)) \
+          : "r" ((UDItype)(ah)), \
+            "r" ((UDItype)(bh)), \
+            "r" ((UDItype)(al)), \
+            "r" ((UDItype)(bl)))
+          
+#define umul_ppmm(wh, wl, u, v) \
+  do { \
+         __asm__ ("mulq %2,%3,%1; umulh %2,%3,%0" \
+          : "=r" ((UDItype)(wh)), \
+            "=&r" ((UDItype)(wl)) \
+          : "r" ((UDItype)(u)), \
+            "r" ((UDItype)(v))); \
+  } while (0)
+
+
+#define udiv_qrnnd(q, r, n1, n0, d)                            \
+  do {                                                          \
+    unsigned long __n[2];                                      \
+    unsigned long __d[2];                                      \
+    unsigned long __q[2];                                      \
+    unsigned long __r[2];                                      \
+    __n[0]=n1; __n[1]=n0; __d[0]=0; __d[1]=d;                  \
+    udiv128(__n, __d, __q, __r);                               \
+    q=__q[1]; r=__r[1];                                                \
+  } while (0)
+
+#define UDIV_NEEDS_NORMALIZATION 1  
+
+#define abort()                                                                                \
+       return 0
+
+#ifndef __LITTLE_ENDIAN
+#define __LITTLE_ENDIAN -1
+#endif
+#define __BYTE_ORDER __LITTLE_ENDIAN
+
+/* Exception flags. */
+#define EFLAG_INVALID          IEEE_TRAP_ENABLE_INV
+#define EFLAG_OVERFLOW         IEEE_TRAP_ENABLE_OVF
+#define EFLAG_UNDERFLOW                IEEE_TRAP_ENABLE_UNF
+#define EFLAG_DIVZERO          IEEE_TRAP_ENABLE_DZE
+#define EFLAG_INEXACT          IEEE_TRAP_ENABLE_INE
+#define EFLAG_DENORM           IEEE_TRAP_ENABLE_DNO
+#define EFLAG_MASK             IEEE_TRAP_ENABLE_MASK
+
+#ifdef FP_TEST_XXX
+#define _FP_DENORM_TO_ZERO \
+    (tss_flags&IEEE_MAP_DMZ)
+#else
+#define _FP_DENORM_TO_ZERO \
+    ((current->tss.flags)&IEEE_MAP_DMZ)
+#endif
+
+/* Comparison operations */
+#define CMPTXX_EQ              0
+#define CMPTXX_LT              -1
+#define CMPTXX_GT              1
+#define CMPTXX_LE              2
+#define CMPTXX_UN              3
index e150d9325ff1b93f35889d62fc8b507df1393d5e..47dce28afc075c7252953ec3aaa4f7b6c3cd73f0 100644 (file)
@@ -65,8 +65,7 @@ endif
 checks:
        @$(MAKE) -C arch/$(ARCH)/kernel checks
 
-BOOT_TARGETS = netboot znetboot zImage floppy install \
-       vmlinux.coff znetboot.initrd zImage.initrd vmlinux.coff.initrd
+BOOT_TARGETS = zImage znetboot.initrd zImage.initrd
 
 ifdef CONFIG_MBX
 $(BOOT_TARGETS): $(CHECKS) vmlinux
@@ -77,6 +76,16 @@ $(BOOT_TARGETS): $(CHECKS) vmlinux
        @$(MAKECOFFBOOT) $@
        @$(MAKEBOOT) $@
        @$(MAKECHRPBOOT) $@
+
+znetboot: $(CHECKS) vmlinux
+ifdef CONFIG_SMP
+       cp -f vmlinux /tftpboot/vmlinux.smp
+else
+       cp -f vmlinux /tftpboot/vmlinux
+endif
+       @$(MAKECOFFBOOT) $@
+       @$(MAKEBOOT) $@
+       @$(MAKECHRPBOOT) $@
 endif
 
 pmac_config:
index 7d141d5c3b0d597003b3d95af7ba8f79f8a0a459..3b42ed1e7e379874dbddb5891e21dd11c2739608 100644 (file)
@@ -19,12 +19,13 @@ void gunzip(void *, int, unsigned char *, int *);
 #define RAM_START      0x00000000
 #define RAM_END                (8<<20)
 
-#define RAM_FREE       (6<<20)         /* after image of chrpboot */
+#define RAM_FREE       ((unsigned long)(_end+0x1000)&~0xFFF)
 #define PROG_START     0x00010000
 
 char *avail_ram;
 char *end_avail;
 
+extern char _end[];
 extern char image_data[];
 extern int image_len;
 extern char initrd_data[];
@@ -47,8 +48,8 @@ chrpboot(int a1, int a2, void *prom)
        initrd_start = (RAM_END - initrd_size) & ~0xFFF;
        a1 = initrd_start;
        a2 = initrd_size;
-       printf("initial ramdisk at 0x%x (%u bytes)\n\r", initrd_start,
-              initrd_size);
+       printf("initial ramdisk moving 0x%x <- 0x%x (%x bytes)\n\r", initrd_start,
+              initrd_data,initrd_size);
        memcpy((char *)initrd_start, initrd_data, initrd_size);
        end_avail = (char *)initrd_start;
     } else
@@ -56,7 +57,6 @@ chrpboot(int a1, int a2, void *prom)
     im = image_data;
     len = image_len;
     dst = (void *) PROG_START;
-
     if (im[0] == 0x1f && im[1] == 0x8b) {
        avail_ram = (char *)RAM_FREE;
        printf("gunzipping (0x%x <- 0x%x:0x%0x)...", dst, im, im+len);
@@ -71,7 +71,7 @@ chrpboot(int a1, int a2, void *prom)
     sa = *(unsigned long *)PROG_START+PROG_START;
     printf("start address = 0x%x\n\r", sa);
 
-    (*(void (*)())sa)(a1, a2, prom, 0, 0);
+    (*(void (*)())sa)(0, 0, prom, a1, a2);
 
     printf("returned?\n\r");
 
index 6641175aa944dcd6f54c3c52b6806b839b3bed00..f0ae093fa61a6ba9c49de96e161e5cbfd4786f6f 100644 (file)
@@ -85,7 +85,7 @@ CONFIG_PMAC_IDEDMA_AUTO=y
 #
 # Additional Block Devices
 #
-# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_MD is not set
 CONFIG_BLK_DEV_RAM=y
@@ -173,7 +173,8 @@ CONFIG_SCSI_CONSTANTS=y
 # CONFIG_SCSI_AHA1542 is not set
 # CONFIG_SCSI_AHA1740 is not set
 CONFIG_SCSI_AIC7XXX=y
-# CONFIG_OVERRIDE_CMDS is not set
+# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
 CONFIG_AIC7XXX_PROC_STATS=y
 CONFIG_AIC7XXX_RESET_DELAY=15
 # CONFIG_SCSI_ADVANSYS is not set
@@ -308,7 +309,7 @@ CONFIG_FB_CT65550=y
 CONFIG_FB_MATROX=y
 # CONFIG_FB_MATROX_MILLENIUM is not set
 CONFIG_FB_MATROX_MYSTIQUE=y
-# CONFIG_FB_MATROX_G100 is not set
+CONFIG_FB_MATROX_G100=y
 # CONFIG_FB_MATROX_MULTIHEAD is not set
 # CONFIG_FB_ATY is not set
 # CONFIG_FB_VIRTUAL is not set
@@ -377,6 +378,11 @@ CONFIG_NVRAM=y
 # CONFIG_FT_PROBE_FC10 is not set
 # CONFIG_FT_ALT_FDC is not set
 
+#
+# USB drivers - not for the faint of heart
+#
+# CONFIG_USB is not set
+
 #
 # Filesystems
 #
@@ -497,6 +503,6 @@ CONFIG_SOUND_CS4232=m
 #
 # Kernel hacking
 #
-CONFIG_MAGIC_SYSRQ=y
+# CONFIG_MAGIC_SYSRQ is not set
 # CONFIG_KGDB is not set
 # CONFIG_XMON is not set
index c5bf522e7305ed54e3ec52c7a43a4feab2bc1972..8108b6571421e3ec9004e6c75675d78ffa1b8276 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: config.in,v 1.92.2.1 1999/05/29 19:09:16 cort Exp $
+# $Id: config.in,v 1.92.2.2 1999/06/17 01:19:06 paulus Exp $
 # For a description of the syntax of this configuration file,
 # see the Configure script.
 #
@@ -176,6 +176,7 @@ source drivers/video/Config.in
 endmenu
 
 source drivers/char/Config.in
+source drivers/usb/Config.in
 source fs/Config.in
 
 mainmenu_option next_comment
index 274f6c679acd02f564ba8b4b5307a21e41b184ff..9324eb6690d0ddd6544d0223765559f65021b92a 100644 (file)
@@ -7,6 +7,7 @@
 #
 CONFIG_PPC=y
 CONFIG_6xx=y
+# CONFIG_PPC64 is not set
 # CONFIG_8xx is not set
 CONFIG_PMAC=y
 # CONFIG_PREP is not set
@@ -14,8 +15,9 @@ CONFIG_PMAC=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_APUS is not set
 # CONFIG_MBX is not set
-CONFIG_MACH_SPECIFIC=y
 # CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+CONFIG_6xx=y
 
 #
 # General setup
@@ -35,7 +37,8 @@ CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
 # CONFIG_BINFMT_JAVA is not set
-# CONFIG_PARPORT is not set
+CONFIG_PARPORT=m
+# CONFIG_PARPORT_PC is not set
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FB=y
 CONFIG_FB_COMPAT_XPMAC=y
@@ -43,13 +46,12 @@ CONFIG_PMAC_PBOOK=y
 CONFIG_MAC_KEYBOARD=y
 CONFIG_MAC_FLOPPY=y
 CONFIG_MAC_SERIAL=y
+# CONFIG_SERIAL_CONSOLE is not set
 CONFIG_ADBMOUSE=y
-CONFIG_BLK_DEV_IDE_PMAC=y
 CONFIG_PROC_DEVICETREE=y
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
 # CONFIG_TOTALMP is not set
 CONFIG_BOOTX_TEXT=y
+# CONFIG_MOTOROLA_HOTSWAP is not set
 
 #
 # Plug and Play support
@@ -73,7 +75,15 @@ CONFIG_BLK_DEV_IDEFLOPPY=y
 # CONFIG_BLK_DEV_IDESCSI is not set
 # CONFIG_BLK_DEV_CMD640 is not set
 # CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_VIA82C586 is not set
+CONFIG_BLK_DEV_CMD646=y
 # CONFIG_BLK_DEV_SL82C105 is not set
 CONFIG_BLK_DEV_IDE_PMAC=y
 CONFIG_BLK_DEV_IDEDMA_PMAC=y
@@ -84,14 +94,16 @@ CONFIG_PMAC_IDEDMA_AUTO=y
 #
 # Additional Block Devices
 #
-# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_MD is not set
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_PARIDE_PARPORT=m
 # CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
 # CONFIG_BLK_DEV_HD is not set
 
 #
@@ -119,7 +131,6 @@ CONFIG_IP_ALIAS=y
 # (it is safe to leave these untouched)
 #
 CONFIG_INET_RARP=y
-CONFIG_IP_NOSR=y
 CONFIG_SKB_LARGE=y
 # CONFIG_IPV6 is not set
 
@@ -173,7 +184,8 @@ CONFIG_SCSI_CONSTANTS=y
 # CONFIG_SCSI_AHA1542 is not set
 # CONFIG_SCSI_AHA1740 is not set
 CONFIG_SCSI_AIC7XXX=y
-# CONFIG_OVERRIDE_CMDS is not set
+# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
 CONFIG_AIC7XXX_PROC_STATS=y
 CONFIG_AIC7XXX_RESET_DELAY=15
 # CONFIG_SCSI_ADVANSYS is not set
@@ -189,15 +201,28 @@ CONFIG_AIC7XXX_RESET_DELAY=15
 # CONFIG_SCSI_GDTH is not set
 # CONFIG_SCSI_GENERIC_NCR5380 is not set
 # CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
 # CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C416 is not set
 # CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_NCR53C8XX=y
+CONFIG_SCSI_SYM53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT=y
 # CONFIG_SCSI_PAS16 is not set
 # CONFIG_SCSI_PCI2000 is not set
 # CONFIG_SCSI_PCI2220I is not set
 # CONFIG_SCSI_PSI240I is not set
 # CONFIG_SCSI_QLOGIC_FAS is not set
 # CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
 # CONFIG_SCSI_SEAGATE is not set
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_T128 is not set
@@ -212,10 +237,18 @@ CONFIG_SCSI_MAC53C94=y
 # Network device support
 #
 CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
 # CONFIG_ARCNET is not set
 # CONFIG_DUMMY is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
 CONFIG_NET_ETHERNET=y
 CONFIG_MACE=y
 CONFIG_BMAC=y
@@ -225,10 +258,10 @@ CONFIG_BMAC=y
 # CONFIG_NET_VENDOR_RACAL is not set
 # CONFIG_RTL8139 is not set
 # CONFIG_YELLOWFIN is not set
-# CONFIG_ACENIC is not set
 # CONFIG_NET_ISA is not set
 CONFIG_NET_EISA=y
 # CONFIG_PCNET32 is not set
+# CONFIG_ACENIC is not set
 # CONFIG_AC3200 is not set
 # CONFIG_APRICOT is not set
 # CONFIG_CS89x0 is not set
@@ -247,22 +280,36 @@ CONFIG_DE4X5=y
 # CONFIG_NET_POCKET is not set
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
-# CONFIG_DLCI is not set
+
+#
+# Appletalk devices
+#
 # CONFIG_LTPC is not set
 # CONFIG_COPS is not set
 # CONFIG_IPDDP is not set
-CONFIG_PPP=y
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
 
 #
 # CCP compressors for PPP are only built as modules.
 #
 # CONFIG_SLIP is not set
 # CONFIG_NET_RADIO is not set
+
+#
+# Token ring devices
+#
 # CONFIG_TR is not set
+# CONFIG_RCPCI is not set
 # CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
 # CONFIG_HOSTESS_SV11 is not set
 # CONFIG_COSA is not set
-# CONFIG_RCPCI is not set
+# CONFIG_SEALEVEL_4021 is not set
+# CONFIG_DLCI is not set
 
 #
 # Amateur Radio support
@@ -275,7 +322,7 @@ CONFIG_PPP=y
 # CONFIG_ISDN is not set
 
 #
-# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
+# Old CD-ROM drivers (not SCSI, not IDE)
 #
 # CONFIG_CD_NO_IDESCSI is not set
 
@@ -283,6 +330,7 @@ CONFIG_PPP=y
 # Console drivers
 #
 CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_PM2 is not set
 CONFIG_FB_OF=y
 CONFIG_FB_CONTROL=y
 CONFIG_FB_PLATINUM=y
@@ -319,6 +367,7 @@ CONFIG_VT_CONSOLE=y
 # CONFIG_SERIAL_NONSTANDARD is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_PRINTER is not set
 # CONFIG_MOUSE is not set
 # CONFIG_QIC02_TAPE is not set
 # CONFIG_WATCHDOG is not set
@@ -334,12 +383,18 @@ CONFIG_NVRAM=y
 # Joystick support
 #
 # CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
 
 #
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
 
+#
+# USB drivers - not for the faint of heart
+#
+# CONFIG_USB is not set
+
 #
 # Filesystems
 #
@@ -364,6 +419,7 @@ CONFIG_DEVPTS_FS=y
 CONFIG_EXT2_FS=y
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
+# CONFIG_EFS_FS is not set
 
 #
 # Network File Systems
@@ -415,7 +471,7 @@ CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_ISO8859_7 is not set
 # CONFIG_NLS_ISO8859_8 is not set
 # CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_15 is not set
+CONFIG_NLS_ISO8859_15=y
 # CONFIG_NLS_KOI8_R is not set
 
 #
@@ -429,3 +485,10 @@ CONFIG_DMASOUND=y
 # CONFIG_SOUND_MSNDCLAS is not set
 # CONFIG_SOUND_MSNDPIN is not set
 # CONFIG_SOUND_OSS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
index 6919dd0a110f547351d5f03060148fb489c459b7..ac3453a0eb7c191e48193521032a3b7c7e45c5be 100644 (file)
@@ -96,7 +96,7 @@ int gg2_pcibios_write_config_dword(unsigned char bus, unsigned char dev_fn,
 #define python_config_data(bus) ((0xfef00000+0xf8010)-(bus*0x100000))
 #define PYTHON_CFA(b, d, o)    (0x80 | ((b<<6) << 8) | ((d) << 16) \
                                 | (((o) & ~3) << 24))
-unsigned int python_busnr = 1;
+unsigned int python_busnr = 0;
 
 int python_pcibios_read_config_byte(unsigned char bus, unsigned char dev_fn,
                                    unsigned char offset, unsigned char *val)
@@ -353,7 +353,8 @@ chrp_setup_pci_ptrs(void)
                 }
                 else
                 {
-                       if ( !strncmp("IBM,7043-150", get_property(find_path_device("/"), "name", NULL),12) )
+                       if ( !strncmp("IBM,7043-150", get_property(find_path_device("/"), "name", NULL),12) ||
+                            !strncmp("IBM,7046-155", get_property(find_path_device("/"), "name", NULL),12) )
                        {
                                pci_dram_offset = 0;
                                isa_mem_base = 0x80000000;
index 0c480773a4c00864c62c7235c5ca8ba5dbbb2df6..134c2c4dbd69ca3dd8986f7b7c176e60ba9ffc5a 100644 (file)
@@ -295,7 +295,7 @@ __initfunc(void
                struct property *p;
                device = find_devices("rtas");
                for ( p = device->properties;
-                     strncmp(p->name, "rtas-event-scan-rate", 20) && p ;
+                     p && strncmp(p->name, "rtas-event-scan-rate", 20);
                      p = p->next )
                        /* nothing */ ;
                if ( p && *(unsigned long *)p->value )
@@ -331,12 +331,8 @@ void
 chrp_power_off(void)
 {
        /* allow power on only with power button press */
-#define        PWR_FIELD(x) (0x8000000000000000 >> ((x)-96))
        printk("RTAS power-off returned %d\n",
-              call_rtas("power-off", 2, 1, NULL,
-                        ((PWR_FIELD(96)|PWR_FIELD(97))>>32)&0xffffffff,
-                        (PWR_FIELD(96)|PWR_FIELD(97))&0xffffffff));
-#undef PWR_FIELD       
+              call_rtas("power-off", 2, 1, NULL,0xffffffff,0xffffffff));
        for (;;);
 }
 
@@ -475,6 +471,45 @@ __initfunc(void
 
        /* Should this be here? - Corey */
        pmac_nvram_init();
+
+#ifdef CONFIG_VT
+#ifdef CONFIG_MAC_KEYBOARD
+       if ( adb_hardware == ADB_NONE )
+       {
+               ppc_md.kbd_setkeycode    = pckbd_setkeycode;
+               ppc_md.kbd_getkeycode    = pckbd_getkeycode;
+               ppc_md.kbd_translate     = pckbd_translate;
+               ppc_md.kbd_unexpected_up = pckbd_unexpected_up;
+               ppc_md.kbd_leds          = pckbd_leds;
+               ppc_md.kbd_init_hw       = pckbd_init_hw;
+#ifdef CONFIG_MAGIC_SYSRQ
+               ppc_md.kbd_sysrq_xlate   = pckbd_sysrq_xlate;
+#endif         
+       }
+       else
+       {
+               ppc_md.kbd_setkeycode    = mackbd_setkeycode;
+               ppc_md.kbd_getkeycode    = mackbd_getkeycode;
+               ppc_md.kbd_translate     = mackbd_translate;
+               ppc_md.kbd_unexpected_up = mackbd_unexpected_up;
+               ppc_md.kbd_leds          = mackbd_leds;
+               ppc_md.kbd_init_hw       = mackbd_init_hw;
+#ifdef CONFIG_MAGIC_SYSRQ
+               ppc_md.kbd_sysrq_xlate   = mackbd_sysrq_xlate;
+#endif         
+       }
+#else
+       ppc_md.kbd_setkeycode    = pckbd_setkeycode;
+       ppc_md.kbd_getkeycode    = pckbd_getkeycode;
+       ppc_md.kbd_translate     = pckbd_translate;
+       ppc_md.kbd_unexpected_up = pckbd_unexpected_up;
+       ppc_md.kbd_leds          = pckbd_leds;
+       ppc_md.kbd_init_hw       = pckbd_init_hw;
+#ifdef CONFIG_MAGIC_SYSRQ
+       ppc_md.kbd_sysrq_xlate   = pckbd_sysrq_xlate;
+#endif
+#endif
+#endif
 }
 
 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
@@ -584,10 +619,10 @@ __initfunc(void
        chrp_setup_pci_ptrs();
 #ifdef CONFIG_BLK_DEV_INITRD
        /* take care of initrd if we have one */
-       if ( r3 )
+       if ( r6 )
        {
-               initrd_start = r3 + KERNELBASE;
-               initrd_end = r3 + r4 + KERNELBASE;
+               initrd_start = r6 + KERNELBASE;
+               initrd_end = r6 + r7 + KERNELBASE;
        }
 #endif /* CONFIG_BLK_DEV_INITRD */
 
@@ -614,44 +649,6 @@ __initfunc(void
        ppc_md.get_rtc_time   = chrp_get_rtc_time;
        ppc_md.calibrate_decr = chrp_calibrate_decr;
 
-#ifdef CONFIG_VT
-#ifdef CONFIG_MAC_KEYBOAD
-       if ( adb_hardware == ADB_NONE )
-       {
-               ppc_md.kbd_setkeycode    = pckbd_setkeycode;
-               ppc_md.kbd_getkeycode    = pckbd_getkeycode;
-               ppc_md.kbd_translate     = pckbd_translate;
-               ppc_md.kbd_unexpected_up = pckbd_unexpected_up;
-               ppc_md.kbd_leds          = pckbd_leds;
-               ppc_md.kbd_init_hw       = pckbd_init_hw;
-#ifdef CONFIG_MAGIC_SYSRQ
-               ppc_md.kbd_sysrq_xlate   = pckbd_sysrq_xlate;
-#endif         
-       }
-       else
-       {
-               ppc_md.kbd_setkeycode    = mackbd_setkeycode;
-               ppc_md.kbd_getkeycode    = mackbd_getkeycode;
-               ppc_md.kbd_translate     = mackbd_translate;
-               ppc_md.kbd_unexpected_up = mackbd_unexpected_up;
-               ppc_md.kbd_leds          = mackbd_leds;
-               ppc_md.kbd_init_hw       = mackbd_init_hw;
-#ifdef CONFIG_MAGIC_SYSRQ
-               ppc_md.kbd_sysrq_xlate   = mackbd_sysrq_xlate;
-#endif         
-       }
-#else
-       ppc_md.kbd_setkeycode    = pckbd_setkeycode;
-       ppc_md.kbd_getkeycode    = pckbd_getkeycode;
-       ppc_md.kbd_translate     = pckbd_translate;
-       ppc_md.kbd_unexpected_up = pckbd_unexpected_up;
-       ppc_md.kbd_leds          = pckbd_leds;
-       ppc_md.kbd_init_hw       = pckbd_init_hw;
-#ifdef CONFIG_MAGIC_SYSRQ
-       ppc_md.kbd_sysrq_xlate   = pckbd_sysrq_xlate;
-#endif
-#endif
-#endif
 
 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
         ppc_ide_md.insw = chrp_ide_insw;
@@ -675,8 +672,6 @@ __initfunc(void
 
 void chrp_progress(char *s)
 {
-       extern unsigned int rtas_data;
-       
        if ( (_machine != _MACH_chrp) || !rtas_data )
                return;
        call_rtas( "display-character", 1, 1, NULL, '\r' );
index b6f10a9394d6616d432ce234e78ccfbf5fe55c52..2dd18ea29d29d9131daff74e4c08a3c6c6954318 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  arch/ppc/kernel/head.S
  *
- *  $Id: head.S,v 1.130.2.1 1999/05/29 19:09:59 cort Exp $
+ *  $Id: head.S,v 1.130.2.2 1999/06/30 04:53:21 paulus Exp $
  *
  *  PowerPC version 
  *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
@@ -300,7 +300,7 @@ __secondary_start:
        oris    r21,r11,(KERNELBASE+0x20000000)@h
        mtspr   DBAT2L,r18              /* N.B. 6xx (not 601) have valid */
        mtspr   DBAT2U,r21              /* bit in upper BAT register */
-       mtspr   IBAT2L,r28
+       mtspr   IBAT2L,r18
        mtspr   IBAT2U,r21
 #endif /* CONFIG_PPC64 */
 #endif
index 41f0c7f205afc6dc794079d200981f48ef30980f..573810ca39def0c12911d4e954e9e56cfb5d6042 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: idle.c,v 1.61.2.1 1999/05/29 19:10:02 cort Exp $
+ * $Id: idle.c,v 1.61.2.2 1999/06/15 16:54:14 cort Exp $
  *
  * Idle daemon for PowerPC.  Idle daemon will handle any action
  * that needs to be taken when the system becomes idle.
@@ -298,7 +298,7 @@ void power_save(void)
        case 7:                 /* 603ev */
        case 8:                 /* 750 */
                save_flags(msr);
-               cli();
+               __cli();
                if (!current->need_resched) {
                        asm("mfspr %0,1008" : "=r" (hid0) :);
                        hid0 &= ~(HID0_NAP | HID0_SLEEP | HID0_DOZE);
index 0d1f4c6d46011e0d424278b015f60a48429236c8..bd175ba501974b2503daf16c44c287241b901216 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: irq.c,v 1.105.2.1 1999/05/29 19:10:05 cort Exp $
+ * $Id: irq.c,v 1.105.2.2 1999/06/17 01:16:10 paulus Exp $
  *
  *  arch/ppc/kernel/irq.c
  *
@@ -50,6 +50,7 @@
 #include <asm/io.h>
 #include <asm/pgtable.h>
 #include <asm/irq.h>
+#include <asm/bitops.h>
 #include <asm/gg2.h>
 #include <asm/cache.h>
 #include <asm/prom.h>
@@ -188,6 +189,12 @@ void free_irq(unsigned int irq, void *dev_id)
        request_irq(irq, NULL, 0, NULL, dev_id);
 }
 
+/* XXX should implement irq disable depth like on intel */
+void disable_irq_nosync(unsigned int irq_nr)
+{
+       mask_irq(irq_nr);
+}
+
 void disable_irq(unsigned int irq_nr)
 {
        mask_irq(irq_nr);
index 7e2db084310f3849dfca0360e24b823c306272da..4c6486232dbaac5df2ff4db73644f49209ceba20 100644 (file)
@@ -650,17 +650,19 @@ __clear_msr_me:
 
 /*
  * Create a kernel thread
- *   __kernel_thread(flags, fn, arg)
+ *   kernel_thread(fn, arg, flags)
  */
-_GLOBAL(__kernel_thread)
+_GLOBAL(kernel_thread)
+       mr      r6,r3           /* function */
+       ori     r3,r5,CLONE_VM  /* flags */
        li      r0,__NR_clone
        sc
        cmpi    0,r3,0          /* parent or child? */
        bnelr                   /* return if parent */
        li      r0,0            /* clear out p->tss.regs */
        stw     r0,TSS+PT_REGS(r2)      /* since we don't have user ctx */
-       mtlr    r4              /* fn addr in lr */
-       mr      r3,r5           /* load arg and call fn */
+       mtlr    r6              /* fn addr in lr */
+       mr      r3,r4           /* load arg and call fn */
        blrl
        li      r0,__NR_exit    /* exit after child exits */
         li     r3,0
@@ -866,7 +868,7 @@ sys_call_table:
        .long sys_getresuid     /* 165 */
        .long sys_query_module
        .long sys_poll
-#ifdef CONFIG_NFS      
+#ifdef CONFIG_NFSD
        .long sys_nfsservctl
 #else
        .long sys_ni_syscall
index b66ccffa8b5d0939ec70a457885e32d531538a76..a3977193a3fe26ba525fb847f41b6abde914eddc 100644 (file)
@@ -97,5 +97,6 @@ main(void)
        DEFINE(ORIG_GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, orig_gpr3));
        DEFINE(RESULT, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, result));
        DEFINE(TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap));
+       DEFINE(CLONE_VM, CLONE_VM);
        return 0;
 }
index 57e4afce9268f1b4d4f30f5751100a219118aff2..ca09d8852d3b554bf5d293c4883506df3fbfd522 100644 (file)
@@ -41,6 +41,7 @@
 #include <linux/blk.h>
 #include <linux/vt_kern.h>
 #include <linux/console.h>
+#include <linux/pci.h>
 #include <asm/prom.h>
 #include <asm/system.h>
 #include <asm/pgtable.h>
@@ -48,7 +49,6 @@
 #include <asm/io.h>
 #include <asm/pci-bridge.h>
 #include <asm/adb.h>
-#include <asm/dma.h>
 #include <asm/cuda.h>
 #include <asm/pmu.h>
 #include <asm/ohare.h>
@@ -98,6 +98,7 @@ extern char saved_command_line[];
 
 extern void zs_kgdb_hook(int tty_num);
 static void ohare_init(void);
+static void init_p2pbridge(void);
 
 __pmac
 int
@@ -255,6 +256,7 @@ pmac_setup_arch(unsigned long *memory_start_p, unsigned long *memory_end_p))
        ohare_init();
 
        *memory_start_p = pmac_find_bridges(*memory_start_p, *memory_end_p);
+       init_p2pbridge();
 
        /* Checks "l2cr-value" property in the registry */
        if ( (_get_PVR() >> 16) == 8) {
@@ -299,6 +301,31 @@ pmac_setup_arch(unsigned long *memory_start_p, unsigned long *memory_end_p))
                ROOT_DEV = to_kdev_t(DEFAULT_ROOT_DEVICE);
 }
 
+/*
+ * Tweak the PCI-PCI bridge chip on the blue & white G3s.
+ */
+__initfunc(static void init_p2pbridge(void))
+{
+       struct device_node *p2pbridge;
+       unsigned char bus, devfn;
+       unsigned short val;
+
+       /* XXX it would be better here to identify the specific
+          PCI-PCI bridge chip we have. */
+       if ((p2pbridge = find_devices("pci-bridge")) == 0
+           || p2pbridge->parent == NULL
+           || strcmp(p2pbridge->parent->name, "pci") != 0)
+               return;
+
+       if (pci_device_loc(p2pbridge, &bus, &devfn) < 0)
+               return;
+
+       pcibios_read_config_word(bus, devfn, PCI_BRIDGE_CONTROL, &val);
+       val &= ~PCI_BRIDGE_CTL_MASTER_ABORT;
+       pcibios_write_config_word(bus, devfn, PCI_BRIDGE_CONTROL, val);
+       pcibios_read_config_word(bus, devfn, PCI_BRIDGE_CONTROL, &val);
+}
+
 __initfunc(static void ohare_init(void))
 {
        /*
@@ -488,13 +515,13 @@ pmac_halt(void)
 void
 pmac_ide_insw(ide_ioreg_t port, void *buf, int ns)
 {
-       ide_insw(port, buf, ns);
+       ide_insw(port+_IO_BASE, buf, ns);
 }
 
 void
 pmac_ide_outsw(ide_ioreg_t port, void *buf, int ns)
 {
-       ide_outsw(port, buf, ns);
+       ide_outsw(port+_IO_BASE, buf, ns);
 }
 
 int
@@ -601,7 +628,9 @@ pmac_init(unsigned long r3, unsigned long r4, unsigned long r5,
         ppc_ide_md.fix_driveid = pmac_ide_fix_driveid;
         ppc_ide_md.ide_init_hwif = pmac_ide_init_hwif_ports;
 
-        ppc_ide_md.io_base = 0;
+       /* _IO_BASE isn't set yet, so it's just as well that
+          ppc_ide_md.io_base isn't used any more. :-) */
+        ppc_ide_md.io_base = _IO_BASE;
 #endif         
 }
 
index 30123c07653c77b24aa24b4c17640566a88581b9..8cf1cf998c442dfe74e8f14daa358b6e5214b2e8 100644 (file)
@@ -253,6 +253,8 @@ return_string:
                return 0;
        if (n > strlen(buffer) - *ppos)
                n = strlen(buffer) - *ppos;
+       if (n > count)
+               n = count;
        copy_to_user(buf, buffer + *ppos, n);
        *ppos += n;
        return n;
index 834bdf1025951368829aece653ea7178ac1d1d07..21d250266ae9779687c4508313bce493d78d7eea 100644 (file)
@@ -30,8 +30,8 @@
 #include <asm/dma.h>
 #include <asm/machdep.h>
 
-#define __KERNEL_SYSCALLS__
-#include <linux/unistd.h>
+/* Tell string.h we don't want memcpy etc. as cpp defines */
+#define EXPORT_SYMTAB_STROPS
 
 extern void transfer_to_handler(void);
 extern void int_return(void);
@@ -55,7 +55,6 @@ EXPORT_SYMBOL(syscall_trace);
 EXPORT_SYMBOL(transfer_to_handler);
 EXPORT_SYMBOL(int_return);
 EXPORT_SYMBOL(do_IRQ);
-EXPORT_SYMBOL(init_task_union);
 EXPORT_SYMBOL(MachineCheckException);
 EXPORT_SYMBOL(AlignmentException);
 EXPORT_SYMBOL(ProgramCheckException);
@@ -65,6 +64,7 @@ EXPORT_SYMBOL(ppc_n_lost_interrupts);
 EXPORT_SYMBOL(do_lost_interrupts);
 EXPORT_SYMBOL(enable_irq);
 EXPORT_SYMBOL(disable_irq);
+EXPORT_SYMBOL(disable_irq_nosync);
 EXPORT_SYMBOL(ppc_local_irq_count);
 EXPORT_SYMBOL(ppc_local_bh_count);
 
@@ -111,11 +111,6 @@ EXPORT_SYMBOL(strnlen);
 EXPORT_SYMBOL(strspn);
 EXPORT_SYMBOL(strcmp);
 EXPORT_SYMBOL(strncmp);
-EXPORT_SYMBOL(memset);
-EXPORT_SYMBOL(memcpy);
-EXPORT_SYMBOL(memmove);
-EXPORT_SYMBOL(memscan);
-EXPORT_SYMBOL(memcmp);
 
 /* EXPORT_SYMBOL(csum_partial); already in net/netsyms.c */
 EXPORT_SYMBOL(csum_partial_copy_generic);
@@ -152,9 +147,10 @@ EXPORT_SYMBOL(iounmap);
 
 EXPORT_SYMBOL(ide_insw);
 EXPORT_SYMBOL(ide_outsw);
+EXPORT_SYMBOL(ppc_ide_md);
 
 EXPORT_SYMBOL(start_thread);
-EXPORT_SYMBOL(__kernel_thread);
+EXPORT_SYMBOL(kernel_thread);
 
 EXPORT_SYMBOL(__cli);
 EXPORT_SYMBOL(__sti);
@@ -217,8 +213,9 @@ EXPORT_SYMBOL(nvram_write_byte);
 EXPORT_SYMBOL(abs);
 EXPORT_SYMBOL(device_is_compatible);
 
-/* The following are special because they're not called
-   explicitly (the C compiler generates them).  Fortunately,
-   their interface isn't gonna change any time soon now, so
-   it's OK to leave it out of version control.  */
 EXPORT_SYMBOL_NOVERS(__ashrdi3);
+EXPORT_SYMBOL_NOVERS(memcpy);
+EXPORT_SYMBOL_NOVERS(memset);
+EXPORT_SYMBOL_NOVERS(memmove);
+EXPORT_SYMBOL_NOVERS(memscan);
+EXPORT_SYMBOL_NOVERS(memcmp);
index 72475e346dfb836da99cc526a962e4cbb9c664fe..c82c00b714a5282e493e18b7941f721986b21d2b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: prom.c,v 1.54.2.1 1999/05/29 19:10:12 cort Exp $
+ * $Id: prom.c,v 1.54.2.3 1999/07/02 19:58:27 cort Exp $
  *
  * Procedures for interfacing to the Open Firmware PROM on
  * Power Macintosh computers.
@@ -338,7 +338,9 @@ prom_init(int r3, int r4, prom_entry pp)
                         */
                        model = (char *) early_get_property
                                (r4 + bi->deviceTreeOffset, 4, RELOC("model"));
-                       if (model && strcmp(model, RELOC("iMac,1")) == 0) {
+                       if (model
+                           && (strcmp(model, RELOC("iMac,1")) == 0
+                               || strcmp(model, RELOC("PowerMac1,1")) == 0)) {
                                out_le32((unsigned *)0x80880008, 1);    /* XXX */
                        }
                }
@@ -500,8 +502,8 @@ prom_init(int r3, int r4, prom_entry pp)
                        return;
                
                /* copy the holding pattern code to someplace safe (8M) */
-               memcpy( (void *)(8<<20), RELOC(__secondary_hold), 0x10000 );
-               for (i = 8<<20; i < ((8<<20)+0x10000); i += 32)
+               memcpy( (void *)(8<<20), RELOC(__secondary_hold), 0x100 );
+               for (i = 8<<20; i < ((8<<20)+0x100); i += 32)
                {
                        asm volatile("dcbf 0,%0" : : "r" (i) : "memory");
                        asm volatile("icbi 0,%0" : : "r" (i) : "memory");
@@ -887,11 +889,11 @@ interpret_pci_props(struct device_node *np, unsigned long mem_start)
            && (imp = (struct pci_intr_map *)
                get_property(np->parent, "interrupt-map", &ml)) != 0
            && (ip = (int *) get_property(np, "interrupts", &l)) != 0) {
-               unsigned int busdevfn = pci_addrs[0].addr.a_hi & 0xffff00;
+               unsigned int devfn = pci_addrs[0].addr.a_hi & 0xff00;
                np->n_intrs = 0;
                np->intrs = (struct interrupt_info *) mem_start;
                for (i = 0; (ml -= sizeof(struct pci_intr_map)) >= 0; ++i) {
-                       if (imp[i].addr.a_hi == busdevfn) {
+                       if (imp[i].addr.a_hi == devfn) {
                                np->intrs[np->n_intrs].line = imp[i].intr;
                                np->intrs[np->n_intrs].sense = 0;
                                ++np->n_intrs;
index 17c0f55d11893bf81b56ee689ff51c0ffe122158..7aaa37b393858949cd77ca6c5ff712238282e891 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  linux/arch/ppc/kernel/signal.c
  *
- *  $Id: signal.c,v 1.24 1999/04/03 11:25:16 paulus Exp $
+ *  $Id: signal.c,v 1.24.2.1 1999/06/17 01:18:22 paulus Exp $
  *
  *  PowerPC version 
  *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
@@ -455,6 +455,7 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
                        default:
                                lock_kernel();
                                sigaddset(&current->signal, signr);
+                               recalc_sigpending(current);
                                current->flags |= PF_SIGNALED;
                                do_exit(exit_code);
                                /* NOTREACHED */
index 0e9a4bd148c99a96c94a1150d12f87565a1198c9..9e1c3803c73e8c9e7e66aa5c740c96c52097de9a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: smp.c,v 1.49.2.1 1999/05/29 19:10:20 cort Exp $
+ * $Id: smp.c,v 1.49.2.3 1999/06/24 17:12:55 cort Exp $
  *
  * Smp support for ppc.
  *
@@ -243,20 +243,21 @@ void __init smp_boot_cpus(void)
 {
        extern struct task_struct *current_set[NR_CPUS];
        extern void __secondary_start_psurge(void);
-       int i;
+       extern void __secondary_start_chrp(void);
+       int i, cpu_nr;
        struct task_struct *p;
        unsigned long a;
 
         printk("Entering SMP Mode...\n");
        /* let other processors know to not do certain initialization */
        first_cpu_booted = 1;
+       smp_num_cpus = 1;
        
        /*
         * assume for now that the first cpu booted is
         * cpu 0, the master -- Cort
         */
        cpu_callin_map[0] = 1;
-       cpu_callin_map[1] = 0;
         smp_store_cpu_info(0);
         active_kernel_processor = 0;
        current->processor = 0;
@@ -282,16 +283,12 @@ void __init smp_boot_cpus(void)
        {
        case _MACH_Pmac:
                /* assume powersurge board - 2 processors -- Cort */
-               smp_num_cpus = 2; 
+               cpu_nr = 2; 
                break;
        case _MACH_chrp:
-               smp_num_cpus = ((openpic_read(&OpenPIC->Global.Feature_Reporting0)
+               cpu_nr = ((openpic_read(&OpenPIC->Global.Feature_Reporting0)
                                 & OPENPIC_FEATURE_LAST_PROCESSOR_MASK) >>
                                OPENPIC_FEATURE_LAST_PROCESSOR_SHIFT)+1;
-               /* get our processor # - we may not be cpu 0 */
-               printk("SMP %d processors, boot CPU is %d (should be 0)\n",
-                      smp_num_cpus,
-                      10/*openpic_read(&OpenPIC->Processor[0]._Who_Am_I)*/);
                break;
        }
 
@@ -299,7 +296,7 @@ void __init smp_boot_cpus(void)
         * only check for cpus we know exist.  We keep the callin map
         * with cpus at the bottom -- Cort
         */
-       for ( i = 1 ; i < smp_num_cpus; i++ )
+       for ( i = 1 ; i < cpu_nr; i++ )
        {
                int c;
                
@@ -332,6 +329,19 @@ void __init smp_boot_cpus(void)
                case _MACH_chrp:
                        *(unsigned long *)KERNELBASE = i;
                        asm volatile("dcbf 0,%0"::"r"(KERNELBASE):"memory");
+#if 0
+                       device = find_type_devices("cpu");
+                       /* assume cpu device list is in order, find the ith cpu */
+                       for ( a = i; device && a; device = device->next, a-- )
+                               ;
+                       if ( !device )
+                               break;
+                       printk( "Starting %s (%lu): ", device->full_name,
+                               *(ulong *)get_property(device, "reg", NULL) );
+                       call_rtas( "start-cpu", 3, 1, NULL,
+                                  *(ulong *)get_property(device, "reg", NULL),
+                                  __pa(__secondary_start_chrp), i);
+#endif                 
                        break;
                }
                
@@ -349,6 +359,7 @@ void __init smp_boot_cpus(void)
                        /* this sync's the decr's -- Cort */
                        if ( _machine == _MACH_Pmac )
                                set_dec(decrementer_count);
+                       smp_num_cpus++;
                } else {
                        printk("Processor %d is stuck.\n", i);
                }
@@ -366,7 +377,6 @@ void __init smp_boot_cpus(void)
 
 void __init smp_commence(void)
 {
-       printk("SMP %d: smp_commence()\n",current->processor);
        /*
         *      Lets the callin's below out of their loop.
         */
@@ -381,16 +391,12 @@ void __init initialize_secondary(void)
 /* Activate a secondary processor. */
 asmlinkage int __init start_secondary(void *unused)
 {
-       printk("SMP %d: start_secondary()\n",current->processor);
        smp_callin();
        return cpu_idle(NULL);
 }
 
 void __init smp_callin(void)
 {
-       int i;
-       
-       printk("SMP %d: smp_callin()\n",current->processor);
         smp_store_cpu_info(current->processor);
        set_dec(decrementer_count);
        
@@ -407,7 +413,6 @@ void __init smp_callin(void)
 
 void __init smp_setup(char *str, int *ints)
 {
-       printk("SMP %d: smp_setup()\n",current->processor);
 }
 
 int __init setup_profiling_timer(unsigned int multiplier)
index 491a380a80f74937445c8784ef3714f47b89b8c2..dd6d6219ee5af55773973f67a8baf2cf3c07d815 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  $Id: init.c,v 1.164.2.2 1999/06/03 03:03:53 paulus Exp $
+ *  $Id: init.c,v 1.164.2.4 1999/06/17 19:05:21 cort Exp $
  *
  *  PowerPC version 
  *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
@@ -268,9 +268,12 @@ void show_mem(void)
        {       
                printk("%-8.8s %3d %3d %8ld %8ld %8ld %c%08lx %08lx ",
                       p->comm,p->pid,
-                      atomic_read(&p->mm->count),p->mm->context,
-                      p->mm->context<<4, p->tss.last_syscall,
-                      user_mode(p->tss.regs) ? 'u' : 'k', p->tss.regs->nip,
+                      (p->mm)?atomic_read(&p->mm->count):0,
+                      (p->mm)?p->mm->context:0,
+                      (p->mm)?(p->mm->context<<4):0,
+                      p->tss.last_syscall,
+                      (p->tss.regs)?user_mode(p->tss.regs) ? 'u' : 'k' : '?',
+                      (p->tss.regs)?p->tss.regs->nip:0,
                       (ulong)p);
                {
                        int iscur = 0;
@@ -1301,7 +1304,7 @@ __initfunc(unsigned long *pmac_find_end_of_memory(void))
        int i;
        
        /* max amount of RAM we allow -- Cort */
-#define RAM_LIMIT (768<<20)
+#define RAM_LIMIT (256<<20)
 
        memory_node = find_devices("memory");
        if (memory_node == NULL) {
index 274f6c679acd02f564ba8b4b5307a21e41b184ff..9324eb6690d0ddd6544d0223765559f65021b92a 100644 (file)
@@ -7,6 +7,7 @@
 #
 CONFIG_PPC=y
 CONFIG_6xx=y
+# CONFIG_PPC64 is not set
 # CONFIG_8xx is not set
 CONFIG_PMAC=y
 # CONFIG_PREP is not set
@@ -14,8 +15,9 @@ CONFIG_PMAC=y
 # CONFIG_ALL_PPC is not set
 # CONFIG_APUS is not set
 # CONFIG_MBX is not set
-CONFIG_MACH_SPECIFIC=y
 # CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+CONFIG_6xx=y
 
 #
 # General setup
@@ -35,7 +37,8 @@ CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
 # CONFIG_BINFMT_JAVA is not set
-# CONFIG_PARPORT is not set
+CONFIG_PARPORT=m
+# CONFIG_PARPORT_PC is not set
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FB=y
 CONFIG_FB_COMPAT_XPMAC=y
@@ -43,13 +46,12 @@ CONFIG_PMAC_PBOOK=y
 CONFIG_MAC_KEYBOARD=y
 CONFIG_MAC_FLOPPY=y
 CONFIG_MAC_SERIAL=y
+# CONFIG_SERIAL_CONSOLE is not set
 CONFIG_ADBMOUSE=y
-CONFIG_BLK_DEV_IDE_PMAC=y
 CONFIG_PROC_DEVICETREE=y
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
 # CONFIG_TOTALMP is not set
 CONFIG_BOOTX_TEXT=y
+# CONFIG_MOTOROLA_HOTSWAP is not set
 
 #
 # Plug and Play support
@@ -73,7 +75,15 @@ CONFIG_BLK_DEV_IDEFLOPPY=y
 # CONFIG_BLK_DEV_IDESCSI is not set
 # CONFIG_BLK_DEV_CMD640 is not set
 # CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_VIA82C586 is not set
+CONFIG_BLK_DEV_CMD646=y
 # CONFIG_BLK_DEV_SL82C105 is not set
 CONFIG_BLK_DEV_IDE_PMAC=y
 CONFIG_BLK_DEV_IDEDMA_PMAC=y
@@ -84,14 +94,16 @@ CONFIG_PMAC_IDEDMA_AUTO=y
 #
 # Additional Block Devices
 #
-# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_MD is not set
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_PARIDE_PARPORT=m
 # CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
 # CONFIG_BLK_DEV_HD is not set
 
 #
@@ -119,7 +131,6 @@ CONFIG_IP_ALIAS=y
 # (it is safe to leave these untouched)
 #
 CONFIG_INET_RARP=y
-CONFIG_IP_NOSR=y
 CONFIG_SKB_LARGE=y
 # CONFIG_IPV6 is not set
 
@@ -173,7 +184,8 @@ CONFIG_SCSI_CONSTANTS=y
 # CONFIG_SCSI_AHA1542 is not set
 # CONFIG_SCSI_AHA1740 is not set
 CONFIG_SCSI_AIC7XXX=y
-# CONFIG_OVERRIDE_CMDS is not set
+# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
 CONFIG_AIC7XXX_PROC_STATS=y
 CONFIG_AIC7XXX_RESET_DELAY=15
 # CONFIG_SCSI_ADVANSYS is not set
@@ -189,15 +201,28 @@ CONFIG_AIC7XXX_RESET_DELAY=15
 # CONFIG_SCSI_GDTH is not set
 # CONFIG_SCSI_GENERIC_NCR5380 is not set
 # CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
 # CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C416 is not set
 # CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_NCR53C8XX=y
+CONFIG_SCSI_SYM53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT=y
 # CONFIG_SCSI_PAS16 is not set
 # CONFIG_SCSI_PCI2000 is not set
 # CONFIG_SCSI_PCI2220I is not set
 # CONFIG_SCSI_PSI240I is not set
 # CONFIG_SCSI_QLOGIC_FAS is not set
 # CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
 # CONFIG_SCSI_SEAGATE is not set
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_T128 is not set
@@ -212,10 +237,18 @@ CONFIG_SCSI_MAC53C94=y
 # Network device support
 #
 CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
 # CONFIG_ARCNET is not set
 # CONFIG_DUMMY is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
 CONFIG_NET_ETHERNET=y
 CONFIG_MACE=y
 CONFIG_BMAC=y
@@ -225,10 +258,10 @@ CONFIG_BMAC=y
 # CONFIG_NET_VENDOR_RACAL is not set
 # CONFIG_RTL8139 is not set
 # CONFIG_YELLOWFIN is not set
-# CONFIG_ACENIC is not set
 # CONFIG_NET_ISA is not set
 CONFIG_NET_EISA=y
 # CONFIG_PCNET32 is not set
+# CONFIG_ACENIC is not set
 # CONFIG_AC3200 is not set
 # CONFIG_APRICOT is not set
 # CONFIG_CS89x0 is not set
@@ -247,22 +280,36 @@ CONFIG_DE4X5=y
 # CONFIG_NET_POCKET is not set
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
-# CONFIG_DLCI is not set
+
+#
+# Appletalk devices
+#
 # CONFIG_LTPC is not set
 # CONFIG_COPS is not set
 # CONFIG_IPDDP is not set
-CONFIG_PPP=y
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
 
 #
 # CCP compressors for PPP are only built as modules.
 #
 # CONFIG_SLIP is not set
 # CONFIG_NET_RADIO is not set
+
+#
+# Token ring devices
+#
 # CONFIG_TR is not set
+# CONFIG_RCPCI is not set
 # CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
 # CONFIG_HOSTESS_SV11 is not set
 # CONFIG_COSA is not set
-# CONFIG_RCPCI is not set
+# CONFIG_SEALEVEL_4021 is not set
+# CONFIG_DLCI is not set
 
 #
 # Amateur Radio support
@@ -275,7 +322,7 @@ CONFIG_PPP=y
 # CONFIG_ISDN is not set
 
 #
-# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
+# Old CD-ROM drivers (not SCSI, not IDE)
 #
 # CONFIG_CD_NO_IDESCSI is not set
 
@@ -283,6 +330,7 @@ CONFIG_PPP=y
 # Console drivers
 #
 CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_PM2 is not set
 CONFIG_FB_OF=y
 CONFIG_FB_CONTROL=y
 CONFIG_FB_PLATINUM=y
@@ -319,6 +367,7 @@ CONFIG_VT_CONSOLE=y
 # CONFIG_SERIAL_NONSTANDARD is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_PRINTER is not set
 # CONFIG_MOUSE is not set
 # CONFIG_QIC02_TAPE is not set
 # CONFIG_WATCHDOG is not set
@@ -334,12 +383,18 @@ CONFIG_NVRAM=y
 # Joystick support
 #
 # CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
 
 #
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
 
+#
+# USB drivers - not for the faint of heart
+#
+# CONFIG_USB is not set
+
 #
 # Filesystems
 #
@@ -364,6 +419,7 @@ CONFIG_DEVPTS_FS=y
 CONFIG_EXT2_FS=y
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
+# CONFIG_EFS_FS is not set
 
 #
 # Network File Systems
@@ -415,7 +471,7 @@ CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_ISO8859_7 is not set
 # CONFIG_NLS_ISO8859_8 is not set
 # CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_15 is not set
+CONFIG_NLS_ISO8859_15=y
 # CONFIG_NLS_KOI8_R is not set
 
 #
@@ -429,3 +485,10 @@ CONFIG_DMASOUND=y
 # CONFIG_SOUND_MSNDCLAS is not set
 # CONFIG_SOUND_MSNDPIN is not set
 # CONFIG_SOUND_OSS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
index 67a74580cf1a54439b9e42de4091478dcd2a28e3..0248acd0afe07fdf17ce78f8b48b194413be334e 100644 (file)
 #define _FP_NANFRAC_D          _FP_QNANBIT_D, 0
 #define _FP_NANFRAC_Q           _FP_QNANBIT_Q, 0, 0, 0
 
+/* On some architectures float-to-int conversions return a result
+ * code.  On others (e.g. Sparc) they return 0
+ */
+#define _FTOI_RESULT           0
+
 #define _FP_KEEPNANFRACP 1
 
 /* This macro appears to be called when both X and Y are NaNs, and 
     _FP_FRAC_COPY_##wc(R,Y);                                   \
     R##_c = FP_CLS_NAN;                                                \
   } while (0)
+
+#define _FP_CHOOSENAN_SQRT(fs, wc, R, X)                       \
+  do {                                                         \
+       R##_s = 0;                                              \
+       R##_c = FP_CLS_NAN;                                     \
+       _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);                \
+  } while (0)
+
   
+#define __FP_UNPACK_DENORM(fs, wc, X)                          \
+    {                                                          \
+       _FP_I_TYPE _shift;                                      \
+       _FP_FRAC_CLZ_##wc(_shift, X);                           \
+       _shift -= _FP_FRACXBITS_##fs;                           \
+       _FP_FRAC_SLL_##wc(X, (_shift+_FP_WORKBITS));            \
+       X##_e -= _FP_EXPBIAS_##fs - 1 + _shift;                 \
+       X##_c = FP_CLS_NORMAL;                                  \
+    }
+
 #define __FP_UNPACK_RAW_1(fs, X, val)                          \
   do {                                                         \
     union _FP_UNION_##fs *_flo =                               \
index 1b12a6395a283ee9a34dfc9f6f074e6054f58641..0658bff18c79875b845ed7e23da5b677081e1ae4 100644 (file)
@@ -9,5 +9,5 @@ int FDTOI(unsigned *rd, void *rs2)
        __FP_UNPACK_D(A, rs2);
        FP_TO_INT_D(r, A, 32, 1);
        *rd = r;
-       return 0;
+       return _FTOI_RESULT;
 }
index 062651a478eeae4878ef40af308ec1888ab8b507..7a7bc3f065ab9c0b4d48ee9972326a115b7e1a04 100644 (file)
@@ -9,5 +9,5 @@ int FDTOX(unsigned long *rd, void *rs2)
        __FP_UNPACK_D(A, rs2);
        FP_TO_INT_D(r, A, 64, 1);
        *rd = r;
-       return 0;
+       return _FTOI_RESULT;
 }
index 5ff3854cc3d949edd2833a93e499477e8070275c..10da9efb732b005e51a3cf9dff07ad4f01d9f03b 100644 (file)
@@ -9,5 +9,5 @@ int FSTOI(unsigned *rd, void *rs2)
        __FP_UNPACK_S(A, rs2);
        FP_TO_INT_S(r, A, 32, 1);
        *rd = r;
-       return 0;
+       return _FTOI_RESULT;
 }
index fa2135f8b2a4e2c5969c0d27e2ed2bf861c2059b..51a11e3ac277b27c4b4309aa568599a8eefb1148 100644 (file)
@@ -9,5 +9,5 @@ int FSTOX(unsigned long *rd, void *rs2)
        __FP_UNPACK_S(A, rs2);
        FP_TO_INT_S(r, A, 64, 1);
        *rd = r;
-       return 0;
+       return _FTOI_RESULT;
 }
index 6090e0213755fcdeb88b0fc733bfde77e6f122ba..017bed7e5769f412cec573b416701bbe7d019181 100644 (file)
@@ -1,6 +1,5 @@
-
 #define _FP_DECL(wc, X)                        \
-  _FP_I_TYPE X##_c, X##_s, X##_e     \
+  _FP_I_TYPE X##_c, X##_s, X##_e, X##_r=0;     \
   _FP_FRAC_DECL_##wc(X)
 
 /*
@@ -8,6 +7,7 @@
  * of fp value and normalizing both the exponent and the fraction.
  */
 
+#ifndef _FP_UNPACK_CANONICAL
 #define _FP_UNPACK_CANONICAL(fs, wc, X)                                        \
 do {                                                                   \
   switch (X##_e)                                                       \
@@ -23,15 +23,8 @@ do {                                                                 \
     if (_FP_FRAC_ZEROP_##wc(X))                                                \
       X##_c = FP_CLS_ZERO;                                             \
     else                                                               \
-      {                                                                        \
-       /* a denormalized number */                                     \
-       _FP_I_TYPE _shift;                                              \
-       _FP_FRAC_CLZ_##wc(_shift, X);                                   \
-       _shift -= _FP_FRACXBITS_##fs;                                   \
-       _FP_FRAC_SLL_##wc(X, (_shift+_FP_WORKBITS));                    \
-       X##_e -= _FP_EXPBIAS_##fs - 1 + _shift;                         \
-       X##_c = FP_CLS_NORMAL;                                          \
-      }                                                                        \
+      /* a denormalized number */                                      \
+      __FP_UNPACK_DENORM(fs, wc, X)                                    \
     break;                                                             \
                                                                        \
   case _FP_EXPMAX_##fs:                                                        \
@@ -43,6 +36,7 @@ do {                                                                  \
     break;                                                             \
   }                                                                    \
 } while (0)
+#endif /* _FP_UNPACK_CANONICAL */
 
 
 /*
@@ -52,15 +46,16 @@ do {                                                                        \
  * extracted -- but that is ok, we can regenerate them now.
  */
 
+#ifndef _FP_PACK_CANONICAL
 #define _FP_PACK_CANONICAL(fs, wc, X)                          \
-({int __ret = 0;                                               \
+({int __pk__ret = X##_r;                                       \
   switch (X##_c)                                               \
   {                                                            \
   case FP_CLS_NORMAL:                                          \
     X##_e += _FP_EXPBIAS_##fs;                                 \
     if (X##_e > 0)                                             \
       {                                                                \
-       __ret |= _FP_ROUND(wc, X);                              \
+       __pk__ret |= _FP_ROUND(wc, X);                          \
        if (_FP_FRAC_OVERP_##wc(fs, X))                         \
          {                                                     \
            _FP_FRAC_SRL_##wc(X, (_FP_WORKBITS+1));             \
@@ -73,7 +68,7 @@ do {                                                                  \
            /* overflow to infinity */                          \
            X##_e = _FP_EXPMAX_##fs;                            \
            _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);            \
-            __ret |= EFLAG_OVERFLOW;                           \
+            __pk__ret |= EFLAG_OVERFLOW;                       \
          }                                                     \
       }                                                                \
     else                                                       \
@@ -83,7 +78,7 @@ do {                                                                  \
        if (X##_e <= _FP_WFRACBITS_##fs)                        \
          {                                                     \
            _FP_FRAC_SRS_##wc(X, X##_e, _FP_WFRACBITS_##fs);    \
-           __ret |= _FP_ROUND(wc, X);                          \
+           __pk__ret |= _FP_ROUND(wc, X);                      \
            _FP_FRAC_SLL_##wc(X, 1);                            \
            if (_FP_FRAC_OVERP_##wc(fs, X))                     \
              {                                                 \
@@ -94,7 +89,7 @@ do {                                                                  \
              {                                                 \
                X##_e = 0;                                      \
                _FP_FRAC_SRL_##wc(X, _FP_WORKBITS+1);           \
-                __ret |= EFLAG_UNDERFLOW;                      \
+                __pk__ret |= EFLAG_UNDERFLOW;                  \
              }                                                 \
          }                                                     \
        else                                                    \
@@ -102,7 +97,7 @@ do {                                                                 \
            /* underflow to zero */                             \
            X##_e = 0;                                          \
            _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);            \
-            __ret |= EFLAG_UNDERFLOW;                          \
+            __pk__ret |= EFLAG_UNDERFLOW;                      \
          }                                                     \
       }                                                                \
     break;                                                     \
@@ -128,16 +123,18 @@ do {                                                                      \
       _FP_FRAC_HIGH_##wc(X) |= _FP_QNANBIT_##fs;               \
     break;                                                     \
   }                                                            \
-  __ret;                                                       \
+  __pk__ret;                                                   \
 })
-
+#endif /* _FP_PACK_CANONICAL */
 
 /*
  * Main addition routine.  The input values should be cooked.
  */
-
+#ifndef _FP_ADD
 #define _FP_ADD(fs, wc, R, X, Y)                                            \
 do {                                                                        \
+  /* Propagate any flags that may have been set during unpacking */         \
+  R##_r |= (X##_r | Y##_r);                                                 \
   switch (_FP_CLS_COMBINE(X##_c, Y##_c))                                    \
   {                                                                         \
   case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL):                        \
@@ -150,8 +147,10 @@ do {                                                                            \
          diff = -diff;                                                      \
          if (diff <= _FP_WFRACBITS_##fs)                                    \
            _FP_FRAC_SRS_##wc(X, diff, _FP_WFRACBITS_##fs);                  \
-         else if (!_FP_FRAC_ZEROP_##wc(X))                                  \
+         else if (!_FP_FRAC_ZEROP_##wc(X)) {                                \
            _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc);                          \
+           R_r |= EFLAG_INEXACT;                                            \
+         }                                                                  \
          else                                                               \
            _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);                         \
          R##_e = Y##_e;                                                     \
@@ -162,8 +161,10 @@ do {                                                                            \
            {                                                                \
              if (diff <= _FP_WFRACBITS_##fs)                                \
                _FP_FRAC_SRS_##wc(Y, diff, _FP_WFRACBITS_##fs);              \
-             else if (!_FP_FRAC_ZEROP_##wc(Y))                              \
+             else if (!_FP_FRAC_ZEROP_##wc(Y)) {                            \
                _FP_FRAC_SET_##wc(Y, _FP_MINFRAC_##wc);                      \
+                R_r |= EFLAG_INEXACT;                                       \
+             }                                                              \
              else                                                           \
                _FP_FRAC_SET_##wc(Y, _FP_ZEROFRAC_##wc);                     \
            }                                                                \
@@ -247,6 +248,7 @@ do {                                                                             \
        _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs);                              \
        R##_s = X##_s ^ Y##_s;                                               \
        R##_c = FP_CLS_NAN;                                                  \
+       R##_r |= EFLAG_INVALID;
        break;                                                               \
       }                                                                             \
     /* FALLTHRU */                                                          \
@@ -276,28 +278,33 @@ do {                                                                           \
     abort();                                                                \
   }                                                                         \
 } while (0)
+#endif /* _FP_ADD */
 
 
 /*
  * Main negation routine.  FIXME -- when we care about setting exception
  * bits reliably, this will not do.  We should examine all of the fp classes.
  */
-
+#ifndef _FP_NEG
 #define _FP_NEG(fs, wc, R, X)          \
   do {                                 \
+    R##_r |= X##_r;                    \
     _FP_FRAC_COPY_##wc(R, X);          \
     R##_c = X##_c;                     \
     R##_e = X##_e;                     \
     R##_s = 1 ^ X##_s;                 \
   } while (0)
+#endif /* _FP_NEG */
 
 
 /*
  * Main multiplication routine.  The input values should be cooked.
  */
-
+#ifndef _FP_MUL
 #define _FP_MUL(fs, wc, R, X, Y)                       \
 do {                                                   \
+  /* Propagate any flags that may have been set during unpacking */         \
+  R##_r |= (X##_r | Y##_r);                                                 \
   R##_s = X##_s ^ Y##_s;                               \
   switch (_FP_CLS_COMBINE(X##_c, Y##_c))               \
   {                                                    \
@@ -351,14 +358,17 @@ do {                                                      \
     abort();                                           \
   }                                                    \
 } while (0)
+#endif /* _FP_MUL */
 
 
 /*
  * Main division routine.  The input values should be cooked.
  */
-
+#ifndef _FP_DIV
 #define _FP_DIV(fs, wc, R, X, Y)                       \
 do {                                                   \
+  /* Propagate any flags that may have been set during unpacking */         \
+  R##_r |= (X##_r | Y##_r);                                                 \
   R##_s = X##_s ^ Y##_s;                               \
   switch (_FP_CLS_COMBINE(X##_c, Y##_c))               \
   {                                                    \
@@ -411,13 +421,14 @@ do {                                                      \
     abort();                                           \
   }                                                    \
 } while (0)
+#endif _FP_DIV
 
 
 /*
  * Main differential comparison routine.  The inputs should be raw not
  * cooked.  The return is -1,0,1 for normal values, 2 otherwise.
  */
-
+#ifndef _FP_CMP
 #define _FP_CMP(fs, wc, ret, X, Y, un)                                 \
   do {                                                                 \
     /* NANs are unordered */                                           \
@@ -426,6 +437,18 @@ do {                                                       \
       {                                                                        \
        ret = un;                                                       \
       }                                                                        \
+    /* Deal with infinities */                                         \
+    else if (X##_c == FP_CLS_INF) {                                    \
+       if(Y##_c == FP_CLS_INF) {                                       \
+           ret = Y##_s - X##_s;                                        \
+       }                                                               \
+       else {                                                          \
+           ret = X##_s ? -1 : 1;                                       \
+       }                                                               \
+    }                                                                  \
+    else if(Y##_c == FP_CLS_INF) {                                     \
+       ret = Y##_s ? 1 : -1;                                           \
+    }                                                                  \
     else                                                               \
       {                                                                        \
        int __is_zero_x;                                                \
@@ -454,10 +477,12 @@ do {                                                      \
          ret = 0;                                                      \
       }                                                                        \
   } while (0)
+#endif /* _FP_CMP */
 
 
 /* Simplification for strict equality.  */
 
+#ifndef _FP_CMP_EQ
 #define _FP_CMP_EQ(fs, wc, ret, X, Y)                                    \
   do {                                                                   \
     /* NANs are unordered */                                             \
@@ -473,21 +498,21 @@ do {                                                      \
                && (X##_s == Y##_s || !X##_e && _FP_FRAC_ZEROP_##wc(X))); \
       }                                                                          \
   } while (0)
+#endif /* _FP_CMP_EQ */
 
 /*
  * Main square root routine.  The input value should be cooked.
  */
-
+#ifndef _FP_SQRT
 #define _FP_SQRT(fs, wc, R, X)                                         \
 do {                                                                   \
     _FP_FRAC_DECL_##wc(T); _FP_FRAC_DECL_##wc(S);                      \
     _FP_W_TYPE q;                                                      \
+    R##_r |= X##_r;                                                    \
     switch (X##_c)                                                     \
     {                                                                  \
     case FP_CLS_NAN:                                                   \
-       R##_s = 0;                                                      \
-       R##_c = FP_CLS_NAN;                                             \
-       _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);                        \
+        _FP_CHOOSENAN_SQRT(fs, wc, R, X);                              \
        break;                                                          \
     case FP_CLS_INF:                                                   \
        if (X##_s)                                                      \
@@ -524,6 +549,7 @@ do {                                                                        \
         _FP_FRAC_SRL_##wc(R, 1);                                       \
     }                                                                  \
   } while (0)
+#endif /* FP_SQRT */
 
 /*
  * Convert from FP to integer
@@ -552,56 +578,60 @@ do {                                                                      \
  * in r be signed or unsigned?'. r is always(?) declared unsigned.
  * Comments below are mine, BTW -- PMM 
  */
-#define _FP_TO_INT(fs, wc, r, X, rsize, rsigned)                               \
-  do {                                                                         \
-    switch (X##_c)                                                             \
-      {                                                                                \
-      case FP_CLS_NORMAL:                                                      \
-       if (X##_e < 0)                                                          \
-         {                                                                     \
-         /* case FP_CLS_NAN: see above! */                                     \
-         case FP_CLS_ZERO:                                                     \
-           r = 0;                                                              \
-         }                                                                     \
-       else if (X##_e >= rsize - (rsigned != 0))                               \
-         {     /* overflow */                                                  \
-         case FP_CLS_NAN:                                                      \
-          case FP_CLS_INF:                                                     \
-           if (rsigned)                                                        \
-             {                                                                 \
-               r = 1;                                                          \
-               r <<= rsize - 1;                                                \
-               r -= 1 - X##_s;                                                 \
-             }                                                                 \
-           else                                                                \
-             {                                                                 \
-               r = 0;                                                          \
-               if (!X##_s)                                                     \
-                 r = ~r;                                                       \
-             }                                                                 \
-         }                                                                     \
-       else                                                                    \
-         {                                                                     \
-           if (_FP_W_TYPE_SIZE*wc < rsize)                                     \
-             {                                                                 \
-               _FP_FRAC_ASSEMBLE_##wc(r, X, rsize);                            \
-               r <<= X##_e - _FP_WFRACBITS_##fs;                               \
-             }                                                                 \
-           else                                                                \
-             {                                                                 \
-               if (X##_e >= _FP_WFRACBITS_##fs)                                \
-                 _FP_FRAC_SLL_##wc(X, (X##_e - _FP_WFRACBITS_##fs + 1));       \
-               else                                                            \
-                 _FP_FRAC_SRL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1));       \
-               _FP_FRAC_ASSEMBLE_##wc(r, X, rsize);                            \
-             }                                                                 \
-           if (rsigned && X##_s)                                               \
-             r = -r;                                                           \
-         }                                                                     \
-       break;                                                                  \
-      }                                                                                \
+#ifndef _FP_TO_INT
+#define _FP_TO_INT(fs, wc, r, X, rsize, rsigned)               \
+  do {                                                         \
+    switch (X##_c)                                             \
+      {                                                                \
+      case FP_CLS_NORMAL:                                      \
+       if (X##_e < 0)                                          \
+         {                                                     \
+         /* case FP_CLS_NAN: see above! */                     \
+         case FP_CLS_ZERO:                                     \
+           r = 0;                                              \
+         }                                                     \
+       else if (X##_e >= rsize - (rsigned != 0))               \
+         {     /* overflow */                                  \
+         case FP_CLS_NAN:                                      \
+          case FP_CLS_INF:                                     \
+           if (rsigned)                                        \
+             {                                                 \
+               r = 1;                                          \
+               r <<= rsize - 1;                                \
+               r -= 1 - X##_s;                                 \
+             }                                                 \
+           else                                                \
+             {                                                 \
+               r = 0;                                          \
+               if (!X##_s)                                     \
+                 r = ~r;                                       \
+             }                                                 \
+         }                                                     \
+       else                                                    \
+         {                                                     \
+           if (_FP_W_TYPE_SIZE*wc < rsize)                     \
+             {                                                 \
+               _FP_FRAC_ASSEMBLE_##wc(r, X, rsize);            \
+               r <<= X##_e - _FP_WFRACBITS_##fs;               \
+             }                                                 \
+           else                                                \
+             {                                                 \
+               if (X##_e >= _FP_WFRACBITS_##fs)                \
+                 _FP_FRAC_SLL_##wc(X, (X##_e - _FP_WFRACBITS_##fs + 1)); \
+               else                                            \
+                 _FP_FRAC_SRL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
+               _FP_FRAC_ASSEMBLE_##wc(r, X, rsize);            \
+             }                                                 \
+           if (rsigned && X##_s)                               \
+             r = -r;                                           \
+         }                                                     \
+       break;                                                  \
+      }                                                                \
   } while (0)
 
+#endif /* _FP_TO_INT */
+
+#ifndef _FP_FROM_INT
 #define _FP_FROM_INT(fs, wc, X, r, rsize, rtype)                       \
   do {                                                                 \
     if (r)                                                             \
@@ -633,15 +663,18 @@ do {                                                                      \
        X##_c = FP_CLS_ZERO, X##_s = 0;                                 \
       }                                                                        \
   } while (0)
+#endif /* FP_FROM_INT */
 
-
+#ifndef FP_CONV
 #define FP_CONV(dfs,sfs,dwc,swc,D,S)                   \
   do {                                                 \
     _FP_FRAC_CONV_##dwc##_##swc(dfs, sfs, D, S);       \
     D##_e = S##_e;                                     \
     D##_c = S##_c;                                     \
     D##_s = S##_s;                                     \
+    D##_r |= S##_r;                                    \
   } while (0)
+#endif FP_CONV
 
 /*
  * Helper primitives.
index 3846ac4f9c6183a24503b176e585873c54eeee09..c2b2553ff756c71bb201d44a334837853163559e 100644 (file)
 #define _FP_NANFRAC_D          _FP_QNANBIT_D
 #define _FP_NANFRAC_Q          _FP_QNANBIT_Q, 0
 
+/* On some architectures float-to-int conversions return a result
+ * code.  On others (e.g. Sparc) they return 0
+ */
+#define _FTOI_RESULT           0
+
 #define _FP_KEEPNANFRACP 1
 #define _FP_CHOOSENAN(fs, wc, R, X, Y)                         \
   do {                                                         \
     R##_c = FP_CLS_NAN;                                                \
   } while (0)
 
+#define _FP_CHOOSENAN_SQRT(fs, wc, R, X)                       \
+  do {                                                         \
+       R##_s = 0;                                              \
+       R##_c = FP_CLS_NAN;                                     \
+       _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);                \
+  } while (0)
+
+
+#define __FP_UNPACK_DENORM(fs, wc, X)                          \
+    {                                                          \
+       _FP_I_TYPE _shift;                                      \
+       _FP_FRAC_CLZ_##wc(_shift, X);                           \
+       _shift -= _FP_FRACXBITS_##fs;                           \
+       _FP_FRAC_SLL_##wc(X, (_shift+_FP_WORKBITS));            \
+       X##_e -= _FP_EXPBIAS_##fs - 1 + _shift;                 \
+       X##_c = FP_CLS_NORMAL;                                  \
+    }
+
+
 #define __FP_UNPACK_RAW_1(fs, X, val)                          \
   do {                                                         \
     union _FP_UNION_##fs *_flo =                               \
index d8d353d876c1c9a88125724e8fbf745725178452..53f9d20c434271486a63dcacc0b0aed0c97ed908 100644 (file)
@@ -61,30 +61,39 @@ struct notifier_block idepmac_sleep_notifier = {
 void
 pmac_ide_init_hwif_ports(ide_ioreg_t *p, ide_ioreg_t base, int *irq)
 {
-       int i, r;
+       int i, ix;
 
        *p = 0;
        if (base == 0)
                return;
+
+       for (ix = 0; ix < MAX_HWIFS; ++ix)
+               if (base == pmac_ide_regbase[ix])
+                       break;
+
+       if (ix >= MAX_HWIFS) {
+               /* Probably a PCI interface... */
+               for (i = 0; i < 8; ++i)
+                       *p++ = base + i;
+               /* XXX is this right? */
+               *p = 0;
+               if (irq != 0)
+                       *irq = 0;
+               return;
+       }
+
        /* we check only for -EINVAL meaning that we have found a matching
           bay but with the wrong device type */ 
 
-       r = check_media_bay_by_base(base, MB_CD);
-       if (r == -EINVAL)
+       i = check_media_bay_by_base(base, MB_CD);
+       if (i == -EINVAL)
                return;
                
        for (i = 0; i < 8; ++i)
                *p++ = base + i * 0x10;
        *p = base + 0x160;
-       if (irq != NULL) {
-               *irq = 0;
-               for (i = 0; i < MAX_HWIFS; ++i) {
-                       if (base == pmac_ide_regbase[i]) {
-                               *irq = pmac_ide_irq[i];
-                               break;
-                       }
-               }
-       }
+       if (irq != NULL)
+               *irq = pmac_ide_irq[ix];
 }
 
 void pmac_ide_tuneproc(ide_drive_t *drive, byte pio)
@@ -96,10 +105,10 @@ void pmac_ide_tuneproc(ide_drive_t *drive, byte pio)
        pio = ide_get_best_pio_mode(drive, pio, 4, &d);
        switch (pio) {
        case 4:
-               out_le32((unsigned *)(IDE_DATA_REG + 0x200), 0x211025);
+               out_le32((unsigned *)(IDE_DATA_REG + 0x200 + _IO_BASE), 0x211025);
                break;
        default:
-               out_le32((unsigned *)(IDE_DATA_REG + 0x200), 0x2f8526);
+               out_le32((unsigned *)(IDE_DATA_REG + 0x200 + _IO_BASE), 0x2f8526);
                break;
        }
 }
@@ -142,14 +151,36 @@ pmac_ide_probe(void))
        *pp = removables;
 
        for (i = 0, np = atas; i < MAX_HWIFS && np != NULL; np = np->next) {
+               struct device_node *tp;
+
+               /*
+                * If this node is not under a mac-io or dbdma node,
+                * leave it to the generic PCI driver.
+                */
+               for (tp = np->parent; tp != 0; tp = tp->parent)
+                       if (tp->type && (strcmp(tp->type, "mac-io") == 0
+                                        || strcmp(tp->type, "dbdma") == 0))
+                               break;
+               if (tp == 0)
+                       continue;
+
                if (np->n_addrs == 0) {
                        printk(KERN_WARNING "ide: no address for device %s\n",
                               np->full_name);
                        continue;
                }
-               
-               base = (unsigned long) ioremap(np->addrs[0].address, 0x200);
-               
+
+               /*
+                * If this slot is taken (e.g. by ide-pci.c) try the next one.
+                */
+               while (i < MAX_HWIFS
+                      && ide_hwifs[i].io_ports[IDE_DATA_OFFSET] != 0)
+                       ++i;
+               if (i >= MAX_HWIFS)
+                       break;
+
+               base = (unsigned long) ioremap(np->addrs[0].address, 0x200) - _IO_BASE;
+
                /* XXX This is bogus. Should be fixed in the registry by checking
                   the kind of host interrupt controller, a bit like gatwick
                   fixes in irq.c
index 9a48375563d4728991409a750ce00baac299529a..7d8fdb2429e9983e7b486e4990fac7672e5eb38a 100644 (file)
@@ -563,7 +563,7 @@ static struct tvcard tvcards[] =
         /* MIRO PCTV pro */
         { 3, 1, 0, 2, 65551, { 2, 3, 1, 1}, {1,65537, 0, 0,10}},
        /* ADS Technologies Channel Surfer TV (and maybe TV+FM) */
-       { 3, 4, 0, 2, 15, { 2, 3, 1, 1}, { 13, 14, 11, 7, 0, 0}, 0},
+       { 3, 4, 2, 2, 15, { 2, 3, 1, 1}, { 13, 14, 11, 7, 0, 0}, 0},
         /* AVerMedia TVCapture 98 */
        { 3, 4, 0, 2, 15, { 2, 3, 1, 1}, { 13, 14, 11, 7, 0, 0}, 0},
         /* Aimslab VHX */
@@ -577,7 +577,7 @@ static struct tvcard tvcards[] =
         /* AVEC Intercapture */
         { 3, 1, 9, 2, 0, { 2, 3, 1, 1}, { 0, 0, 0, 0, 0}},
        /* LifeView FlyKit w/o Tuner */
-       { 3, 1, -1, 2, 0xc00, { 0, 3, 1, 1}}
+       { 3, 1, -1, -1, 0x8dff00, { 2, 3, 1, 1}}
 };
 #define TVCARDS (sizeof(tvcards)/sizeof(tvcard))
 
@@ -3148,7 +3148,7 @@ static void idcard(int i)
                         break;
        }
        printk("%s\n",btv->video_dev.name);
-       audio(btv, AUDIO_MUTE);
+       audio(btv, AUDIO_INTERN);
 }
 
 
index 47ae0706f6aa64324f14746a0edb252c9844a470..9cee14e44bdaff3796e8db576e533e37d3434f1d 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/init.h>
 #include <linux/joystick.h>
 #include <linux/i2c.h>
+#include <linux/capability.h>
 
 #include <asm/uaccess.h>
 #include <asm/io.h>
@@ -464,11 +465,19 @@ static loff_t memory_lseek(struct file * file, loff_t offset, int orig)
        }
 }
 
+static int open_port(struct inode * inode, struct file * filp)
+{
+       return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
+}
+
+
 #define mmap_kmem      mmap_mem
 #define zero_lseek     null_lseek
 #define full_lseek      null_lseek
 #define write_zero     write_null
 #define read_full       read_zero
+#define open_mem       open_port       /* different capability? */
+#define open_kmem      open_mem
 
 static struct file_operations mem_fops = {
        memory_lseek,
@@ -478,7 +487,7 @@ static struct file_operations mem_fops = {
        NULL,           /* mem_poll */
        NULL,           /* mem_ioctl */
        mmap_mem,
-       NULL,           /* no special open code */
+       open_mem,
        NULL,           /* flush */
        NULL,           /* no special release code */
        NULL            /* fsync */
@@ -492,7 +501,7 @@ static struct file_operations kmem_fops = {
        NULL,           /* kmem_poll */
        NULL,           /* kmem_ioctl */
        mmap_kmem,
-       NULL,           /* no special open code */
+       open_kmem,
        NULL,           /* flush */
        NULL,           /* no special release code */
        NULL            /* fsync */
@@ -520,7 +529,7 @@ static struct file_operations port_fops = {
        NULL,           /* port_poll */
        NULL,           /* port_ioctl */
        NULL,           /* port_mmap */
-       NULL,           /* no special open code */
+       open_port,
        NULL,           /* flush */
        NULL,           /* no special release code */
        NULL            /* fsync */
index 30ecbd4e0b0f1fd14f3ad79f8635217be39a9296..1ad27358c90fc5637c6ca005a0dc5e7c2c7063f7 100644 (file)
@@ -64,8 +64,7 @@ int media_bay_count = 0;
 #ifdef CONFIG_BLK_DEV_IDE
 /* check the busy bit in the media-bay ide interface
    (assumes the media-bay contains an ide device) */
-#define MB_IDE_READY(i)        ((in_8((volatile unsigned char *) \
-                              (media_bays[i].cd_base + 0x70)) & 0x80) == 0)
+#define MB_IDE_READY(i)        ((inb(media_bays[i].cd_base + 0x70) & 0x80) == 0)
 #endif
 
 /*
index 8ca2f31d9ec352052babde0d000faa32d9b54bb5..e5a424fe0db92a3e0311ed073c3aaca8093866ea 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/blkdev.h>
 #include <linux/pci.h>
 #include <linux/malloc.h>
+#include <linux/poll.h>
 #include <asm/prom.h>
 #include <asm/adb.h>
 #include <asm/pmu.h>
@@ -112,6 +113,9 @@ static void pmu_done(struct adb_request *req);
 static void pmu_handle_data(unsigned char *data, int len,
                            struct pt_regs *regs);
 static void set_volume(int level);
+#ifdef CONFIG_PMAC_PBOOK
+static void pmu_pass_intr(unsigned char *data, int len);
+#endif
 
 static struct adb_controller   pmu_controller = {
        ADB_VIAPMU,
@@ -729,21 +733,32 @@ pmu_handle_data(unsigned char *data, int len, struct pt_regs *regs)
                        }
                        pmu_done(req);
                } else {
-                       adb_input(data+1, len-1, regs, 1);
+                       /*
+                        * XXX the PMU gives us an up event for keycodes
+                        * 0x74 or 0x75 when the PC card eject buttons
+                        * are released, so we ignore those events.
+                        */
+                       if (!(len == 4 && data[1] == 0x2c && data[3] == 0xff
+                             && (data[2] & ~1) == 0xf4))
+                               adb_input(data+1, len-1, regs, 1);
                }
+       } else if (data[0] == 0x08 && len == 3) {
+               /* sound/brightness buttons pressed */
+               pmu_set_brightness(data[1] >> 3);
+               set_volume(data[2]);
        } else {
-               if (data[0] == 0x08 && len == 3) {
-                       /* sound/brightness buttons pressed */
-                       pmu_set_brightness(data[1] >> 3);
-                       set_volume(data[2]);
-               } else if (show_pmu_ints
-                          && !(data[0] == PMU_INT_TICK && len == 1)) {
+#ifdef CONFIG_PMAC_PBOOK
+               pmu_pass_intr(data, len);
+#else
+               if (show_pmu_ints
+                   && !(data[0] == PMU_INT_TICK && len == 1)) {
                        int i;
                        printk(KERN_DEBUG "pmu intr");
                        for (i = 0; i < len; ++i)
                                printk(" %.2x", data[i]);
                        printk("\n");
                }
+#endif
        }
 }
 
@@ -1064,15 +1079,112 @@ int __openfirmware powerbook_sleep(void)
 /*
  * Support for /dev/pmu device
  */
+#define RB_SIZE                10
+struct pmu_private {
+       struct list_head list;
+       int     rb_get;
+       int     rb_put;
+       struct rb_entry {
+               unsigned short len;
+               unsigned char data[16];
+       }       rb_buf[RB_SIZE];
+       struct wait_queue *wait;
+       spinlock_t lock;
+};
+
+static LIST_HEAD(all_pmu_pvt);
+static spinlock_t all_pvt_lock = SPIN_LOCK_UNLOCKED;
+
+static void pmu_pass_intr(unsigned char *data, int len)
+{
+       struct pmu_private *pp;
+       struct list_head *list;
+       int i;
+       unsigned long flags;
+
+       if (len > sizeof(pp->rb_buf[0].data))
+               len = sizeof(pp->rb_buf[0].data);
+       spin_lock_irqsave(&all_pvt_lock, flags);
+       for (list = &all_pmu_pvt; (list = list->next) != &all_pmu_pvt; ) {
+               pp = list_entry(list, struct pmu_private, list);
+               i = pp->rb_put + 1;
+               if (i >= RB_SIZE)
+                       i = 0;
+               if (i != pp->rb_get) {
+                       struct rb_entry *rp = &pp->rb_buf[pp->rb_put];
+                       rp->len = len;
+                       memcpy(rp->data, data, len);
+                       pp->rb_put = i;
+                       wake_up_interruptible(&pp->wait);
+               }
+       }
+       spin_unlock_irqrestore(&all_pvt_lock, flags);
+}
+
 static int __openfirmware pmu_open(struct inode *inode, struct file *file)
 {
+       struct pmu_private *pp;
+       unsigned long flags;
+
+       pp = kmalloc(sizeof(struct pmu_private), GFP_KERNEL);
+       if (pp == 0)
+               return -ENOMEM;
+       pp->rb_get = pp->rb_put = 0;
+       spin_lock_init(&pp->lock);
+       pp->wait = 0;
+       spin_lock_irqsave(&all_pvt_lock, flags);
+       list_add(&pp->list, &all_pmu_pvt);
+       spin_unlock_irqrestore(&all_pvt_lock, flags);
+       file->private_data = pp;
        return 0;
 }
 
 static ssize_t __openfirmware pmu_read(struct file *file, char *buf,
                        size_t count, loff_t *ppos)
 {
-       return 0;
+       struct pmu_private *pp = file->private_data;
+       struct wait_queue wait = { current, NULL };
+       int ret;
+
+       if (count < 1 || pp == 0)
+               return -EINVAL;
+       ret = verify_area(VERIFY_WRITE, buf, count);
+       if (ret)
+               return ret;
+
+       add_wait_queue(&pp->wait, &wait);
+       current->state = TASK_INTERRUPTIBLE;
+
+       for (;;) {
+               ret = -EAGAIN;
+               spin_lock(&pp->lock);
+               if (pp->rb_get != pp->rb_put) {
+                       int i = pp->rb_get;
+                       struct rb_entry *rp = &pp->rb_buf[i];
+                       ret = rp->len;
+                       if (ret > count)
+                               ret = count;
+                       if (ret > 0 && copy_to_user(buf, rp->data, ret))
+                               ret = -EFAULT;
+                       if (++i >= RB_SIZE)
+                               i = 0;
+                       pp->rb_get = i;
+               }
+               spin_unlock(&pp->lock);
+               if (ret >= 0)
+                       break;
+
+               if (file->f_flags & O_NONBLOCK)
+                       break;
+               ret = -ERESTARTSYS;
+               if (signal_pending(current))
+                       break;
+               schedule();
+       }
+       current->state = TASK_RUNNING;
+       remove_wait_queue(&pp->wait, &wait);
+
+       return ret;
 }
 
 static ssize_t __openfirmware pmu_write(struct file *file, const char *buf,
@@ -1081,6 +1193,36 @@ static ssize_t __openfirmware pmu_write(struct file *file, const char *buf,
        return 0;
 }
 
+static unsigned int pmu_fpoll(struct file *filp, poll_table *wait)
+{
+       struct pmu_private *pp = filp->private_data;
+       unsigned int mask = 0;
+
+       if (pp == 0)
+               return 0;
+       poll_wait(filp, &pp->wait, wait);
+       spin_lock(&pp->lock);
+       if (pp->rb_get != pp->rb_put)
+               mask |= POLLIN;
+       spin_unlock(&pp->lock);
+       return mask;
+}
+
+static int pmu_release(struct inode *inode, struct file *file)
+{
+       struct pmu_private *pp = file->private_data;
+       unsigned long flags;
+
+       if (pp != 0) {
+               file->private_data = 0;
+               spin_lock_irqsave(&all_pvt_lock, flags);
+               list_del(&pp->list);
+               spin_unlock_irqrestore(&all_pvt_lock, flags);
+               kfree(pp);
+       }
+       return 0;
+}
+
 /* Note: removed __openfirmware here since it causes link errors */
 static int /*__openfirmware*/ pmu_ioctl(struct inode * inode, struct file *filp,
                     u_int cmd, u_long arg)
@@ -1089,18 +1231,18 @@ static int /*__openfirmware*/ pmu_ioctl(struct inode * inode, struct file *filp,
        __u32 value;
 
        switch (cmd) {
-           case PMU_IOC_SLEEP:
+       case PMU_IOC_SLEEP:
                if (pmu_kind != PMU_OHARE_BASED)
                        return -ENOSYS;
                return powerbook_sleep();
-           case PMU_IOC_GET_BACKLIGHT:
+       case PMU_IOC_GET_BACKLIGHT:
                return put_user(backlight_level, (__u32 *)arg);
-           case PMU_IOC_SET_BACKLIGHT:
+       case PMU_IOC_SET_BACKLIGHT:
                error = get_user(value, (__u32 *)arg);
                if (!error)
                        pmu_set_brightness(value);
                return error;
-           case PMU_IOC_GET_MODEL:
+       case PMU_IOC_GET_MODEL:
                return put_user(pmu_kind, (__u32 *)arg);
        }
        return -EINVAL;
@@ -1111,12 +1253,12 @@ static struct file_operations pmu_device_fops = {
        pmu_read,
        pmu_write,
        NULL,           /* no readdir */
-       NULL,           /* no poll yet */
+       pmu_fpoll,
        pmu_ioctl,
        NULL,           /* no mmap */
        pmu_open,
        NULL,           /* flush */
-       NULL            /* no release */
+       pmu_release,
 };
 
 static struct miscdevice pmu_device = {
index 3cdc89475237f7735d406d7f5363862f52a6f89c..6a24fdcc824ede6b544ea3470134168c438d1a13 100644 (file)
@@ -2,7 +2,7 @@
  * acenic.c: Linux driver for the Alteon AceNIC Gigabit Ethernet card
  *           and other Tigon based cards.
  *
- * Copyright 1998 by Jes Sorensen, <Jes.Sorensen@cern.ch>.
+ * Copyright 1998, 1999 by Jes Sorensen, <Jes.Sorensen@cern.ch>.
  *
  * Thanks to Alteon and 3Com for providing hardware and documentation
  * enabling me to write this driver.
 #define PCI_VENDOR_ID_NETGEAR          0x1385
 #define PCI_DEVICE_ID_NETGEAR_GA620    0x620a
 #endif
+/*
+ * They used the DEC vendor ID by mistake
+ */
+#ifndef PCI_DEVICE_ID_FARALLON_PN9000SX
+#define PCI_DEVICE_ID_FARALLON_PN9000SX 0x1a
+#endif
+#ifndef PCI_VENDOR_ID_SGI
+#define PCI_VENDOR_ID_SGI             0x10a9
+#define PCI_DEVICE_ID_SGI_ACENIC      0x0009
+#endif
 
 /*
  * This driver currently supports Tigon I and Tigon II based cards
@@ -171,7 +181,7 @@ static int max_tx_desc[8] = {0, };
 static int max_rx_desc[8] = {0, };
 static int tx_ratio[8] = {0, };
 
-static const char __initdata *version = "acenic.c: v0.32 03/15/99  Jes Sorensen (Jes.Sorensen@cern.ch)\n";
+static const char __initdata *version = "acenic.c: v0.33 07/20/99  Jes Sorensen (Jes.Sorensen@cern.ch)\n";
 
 static struct device *root_dev = NULL;
 
@@ -208,7 +218,15 @@ __initfunc(int acenic_probe (struct device *dev))
                    !((pdev->vendor == PCI_VENDOR_ID_3COM) &&
                      (pdev->device == PCI_DEVICE_ID_3COM_3C985)) &&
                    !((pdev->vendor == PCI_VENDOR_ID_NETGEAR) &&
-                     (pdev->device == PCI_DEVICE_ID_NETGEAR_GA620)))
+                     (pdev->device == PCI_DEVICE_ID_NETGEAR_GA620)) &&
+               /*
+                * Farallon used the DEC vendor ID on their cards by
+                * mistake for a while
+                */
+                   !((pdev->vendor == PCI_VENDOR_ID_DEC) &&
+                     (pdev->device == PCI_DEVICE_ID_FARALLON_PN9000SX)) &&
+                   !((pdev->vendor == PCI_VENDOR_ID_SGI) &&
+                     (pdev->device == PCI_DEVICE_ID_SGI_ACENIC)))
                        continue;
 
                dev = init_etherdev(dev, sizeof(struct ace_private));
@@ -282,6 +300,18 @@ __initfunc(int acenic_probe (struct device *dev))
                        sprintf(ap->name, "NetGear GA620 Gigabit Ethernet");
                        printk(KERN_INFO "%s: NetGear GA620 ", dev->name);
                        break;
+               case PCI_VENDOR_ID_DEC:
+                       if (pdev->device == PCI_DEVICE_ID_FARALLON_PN9000SX) {
+                               sprintf(ap->name, "Farallon PN9000-SX "
+                                       "Gigabit Ethernet");
+                               printk(KERN_INFO "%s: Farallon PN9000-SX ",
+                                      dev->name);
+                               break;
+                       }
+               case PCI_VENDOR_ID_SGI:
+                       sprintf(ap->name, "SGI AceNIC Gigabit Ethernet");
+                       printk(KERN_INFO "%s: SGI AceNIC ", dev->name);
+                       break;
                default:
                        sprintf(ap->name, "Unknown AceNIC based Gigabit Ethernet");
                        printk(KERN_INFO "%s: Unknown AceNIC ", dev->name);
@@ -569,7 +599,7 @@ __initfunc(static int ace_init(struct device *dev, int board_idx))
         * and the control blocks for the transmit and receive rings
         * as they need to be setup once and for all.
         */
-       if (!(info = kmalloc(sizeof(struct ace_info), GFP_KERNEL | GFP_DMA))){
+       if (!(info = kmalloc(sizeof(struct ace_info), GFP_KERNEL))){
                free_irq(dev->irq, dev);
                return -EAGAIN;
        }
@@ -1162,6 +1192,12 @@ static int ace_rx_int(struct device *dev, u32 rxretprd, u32 rxretcsm)
                skb->dev = dev;
                skb->protocol = eth_type_trans(skb, dev);
 
+#if 0
+               /*
+                * This was never actually enabled in the RX descriptors
+                * anyway - it requires a bit more testing before enabling
+                * it again.
+                */
                /*
                 * If the checksum is correct and this is not a
                 * fragment, tell the stack that the data is correct.
@@ -1172,7 +1208,7 @@ static int ace_rx_int(struct device *dev, u32 rxretprd, u32 rxretcsm)
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
                else
                        skb->ip_summed = CHECKSUM_NONE;
-
+#endif
                netif_rx(skb);          /* send it up */
 
                ap->stats.rx_packets++;
index b4e81b7e6a67d6b1c2bd2432c1a9c42b5aa5df59..190f4e742799120edbeb72a3bfac240cccabd10c 100644 (file)
@@ -1,31 +1,31 @@
 /* Generated by genfw.c */
 int tigonFwReleaseMajor = 0xc;
 int tigonFwReleaseMinor = 0x3;
-int tigonFwReleaseFix = 0x5;
+int tigonFwReleaseFix = 0xa;
 u32 tigonFwStartAddr = 0x00004000;
 u32 tigonFwTextAddr = 0x00004000;
-int tigonFwTextLen = 0x10910;
-u32 tigonFwRodataAddr = 0x00014910;
+int tigonFwTextLen = 0x10920;
+u32 tigonFwRodataAddr = 0x00014920;
 int tigonFwRodataLen = 0xaa0;
-u32 tigonFwDataAddr = 0x000153d0;
+u32 tigonFwDataAddr = 0x000153e0;
 int tigonFwDataLen = 0x150;
-u32 tigonFwSbssAddr = 0x00015520;
+u32 tigonFwSbssAddr = 0x00015530;
 int tigonFwSbssLen = 0x2c;
-u32 tigonFwBssAddr = 0x00015550;
+u32 tigonFwBssAddr = 0x00015560;
 int tigonFwBssLen = 0x2080;
 u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10000003, 
 0x0, 0xd, 0xd, 0x3c1d0001, 
-0x8fbd5404, 0x3a0f021, 0x3c100000, 0x26104000, 
+0x8fbd5414, 0x3a0f021, 0x3c100000, 0x26104000, 
 0xc00100c, 0x0, 0xd, 0x27bdffd8, 
 0x3c1cc000, 0x3c1b0013, 0x377bd800, 0xd021, 
 0x3c170013, 0x36f75418, 0x2e02021, 0x340583e8, 
 0xafbf0024, 0xc00248c, 0xafb00020, 0xc0023ec, 
-0x0, 0x3c040001, 0x24844970, 0x24050001, 
-0x2e03021, 0x3821, 0x3c100001, 0x261075d0, 
+0x0, 0x3c040001, 0x24844984, 0x24050001, 
+0x2e03021, 0x3821, 0x3c100001, 0x261075e0, 
 0xafb00010, 0xc002407, 0xafbb0014, 0x3c02000f, 
 0x3442ffff, 0x2021024, 0x362102b, 0x10400009, 
-0x24050003, 0x3c040001, 0x2484497c, 0x2003021, 
+0x24050003, 0x3c040001, 0x24844990, 0x2003021, 
 0x3603821, 0x3c020010, 0xafa20010, 0xc002407, 
 0xafa00014, 0x2021, 0x3405c000, 0x3c010001, 
 0x370821, 0xa02083b0, 0x3c010001, 0x370821, 
@@ -63,7 +63,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x8ee20450, 0x8ee30454, 0xaee304fc, 
 0x8ee204fc, 0x2442e000, 0x2c422001, 0x1440000d, 
 0x26e40030, 0x8ee20450, 0x8ee30454, 0x3c040001, 
-0x24844988, 0x3c050001, 0xafa00010, 0xafa00014, 
+0x2484499c, 0x3c050001, 0xafa00010, 0xafa00014, 
 0x8ee704fc, 0x34a5f000, 0xc002407, 0x603021, 
 0x26e40030, 0xc00248c, 0x24050400, 0x27440080, 
 0xc00248c, 0x24050080, 0x26e4777c, 0xc00248c, 
@@ -73,7 +73,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x3442ca00, 0x2021, 0x24030002, 0xaee30074, 
 0xaee30070, 0xaee2006c, 0x240203e8, 0xaee20104, 
 0x24020001, 0xaee30100, 0xaee2010c, 0x3c030001, 
-0x641821, 0x906353d0, 0x2e41021, 0x24840001, 
+0x641821, 0x906353e0, 0x2e41021, 0x24840001, 
 0xa043009c, 0x2c82000f, 0x1440fff8, 0x0, 
 0x8f820040, 0x2e41821, 0x24840001, 0x21702, 
 0x24420030, 0xa062009c, 0x2e41021, 0xa040009c, 
@@ -119,7 +119,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8ee24e30, 0x24420001, 0xaee24e30, 0x8ee24e30, 
 0x210c0, 0x24425038, 0x2e22021, 0x24020007, 
 0xac820000, 0x24020001, 0xac820004, 0x54c0000c, 
-0xaee90608, 0x3c040001, 0x24844994, 0xafa00010, 
+0xaee90608, 0x3c040001, 0x248449a8, 0xafa00010, 
 0xafa00014, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0xc002407, 0x34a5f000, 0x8001223, 0x0, 
 0x8f830120, 0x27623800, 0x24660020, 0xc2102b, 
@@ -145,21 +145,21 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020012, 0xac820000, 
 0x24020001, 0xac820004, 0x14c0001b, 0x0, 
-0x3c040001, 0x2484499c, 0xafa00010, 0xafa00014, 
+0x3c040001, 0x248449b0, 0xafa00010, 0xafa00014, 
 0x8ee60608, 0x8f470228, 0x3c050009, 0xc002407, 
 0x34a5f001, 0x8ee201b0, 0x24420001, 0xaee201b0, 
-0x8001223, 0x8ee201b0, 0x3c040001, 0x248449a8
+0x8001223, 0x8ee201b0, 0x3c040001, 0x248449bc
 0xafa00014, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0xc002407, 0x34a5f005, 0x8ee201ac, 0x24420001, 
 0xaee201ac, 0x8ee201ac, 0x8ee20160, 0x3c040001, 
-0x248449b4, 0x3405f001, 0x24420001, 0xaee20160, 
+0x248449c8, 0x3405f001, 0x24420001, 0xaee20160, 
 0x8ee20160, 0x3021, 0x3821, 0xafa00010, 
 0xc002407, 0xafa00014, 0x8001238, 0x0, 
 0x3c020001, 0x2442f5b8, 0x21100, 0x21182, 
 0x431025, 0x3c010001, 0xac221278, 0x96e2045a, 
 0x30420003, 0x10400025, 0x3c050fff, 0x8ee204c8, 
 0x34a5ffff, 0x34420a00, 0xaee204c8, 0x8ee304c8, 
-0x3c040001, 0x248449c0, 0x24020001, 0xa2e204ec, 
+0x3c040001, 0x248449d4, 0x24020001, 0xa2e204ec, 
 0xa2e204ed, 0x3c020002, 0x621825, 0x3c020001, 
 0x2442a3a0, 0x451024, 0x21082, 0xaee304c8, 
 0x3c030800, 0x431025, 0x3c010001, 0xac221220, 
@@ -202,7 +202,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e30, 0x8ee24e30, 0x210c0, 0x24425038, 
 0x2e22021, 0x24020007, 0xac820000, 0x24020001, 
 0xac820004, 0x54c0000c, 0xaee90608, 0x3c040001, 
-0x24844994, 0xafa00010, 0xafa00014, 0x8ee60608, 
+0x248449a8, 0xafa00010, 0xafa00014, 0x8ee60608, 
 0x8f470228, 0x3c050009, 0xc002407, 0x34a5f000, 
 0x800136d, 0x0, 0x8f830120, 0x27623800, 
 0x24660020, 0xc2102b, 0x50400001, 0x27663000, 
@@ -227,17 +227,17 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1021, 0x8ee24e30, 0x24420001, 0xaee24e30, 
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0x24020012, 0xac820000, 0x24020001, 0xac820004, 
-0x14c0001b, 0x0, 0x3c040001, 0x2484499c
+0x14c0001b, 0x0, 0x3c040001, 0x248449b0
 0xafa00010, 0xafa00014, 0x8ee60608, 0x8f470228, 
 0x3c050009, 0xc002407, 0x34a5f001, 0x8ee201b0, 
 0x24420001, 0xaee201b0, 0x800136d, 0x8ee201b0, 
-0x3c040001, 0x248449a8, 0xafa00014, 0x8ee60608, 
+0x3c040001, 0x248449bc, 0xafa00014, 0x8ee60608, 
 0x8f470228, 0x3c050009, 0xc002407, 0x34a5f005, 
 0x8ee201ac, 0x24420001, 0xaee201ac, 0x8ee201ac, 
-0x8ee20160, 0x3c040001, 0x248449b4, 0x3405f002, 
+0x8ee20160, 0x3c040001, 0x248449c8, 0x3405f002, 
 0x24420001, 0xaee20160, 0x8ee20160, 0x3021, 
 0x3821, 0xafa00010, 0xc002407, 0xafa00014, 
-0x96e6047a, 0x96e7046a, 0x3c040001, 0x248449cc
+0x96e6047a, 0x96e7046a, 0x3c040001, 0x248449e0
 0x24050012, 0xafa00010, 0xc002407, 0xafa00014, 
 0xc004500, 0x0, 0xc002318, 0x0, 
 0x3c060001, 0x34c63800, 0xaee00608, 0xaf400228, 
@@ -280,7 +280,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e30, 0x8ee24e30, 0x210c0, 0x24425038, 
 0x2e22021, 0x24020007, 0xac820000, 0x24020001, 
 0xac820004, 0x54c0000c, 0xaee90608, 0x3c040001, 
-0x24844994, 0xafa00010, 0xafa00014, 0x8ee60608, 
+0x248449a8, 0xafa00010, 0xafa00014, 0x8ee60608, 
 0x8f470228, 0x3c050009, 0xc002407, 0x34a5f000, 
 0x80014a5, 0x0, 0x8f830120, 0x27623800, 
 0x24660020, 0xc2102b, 0x50400001, 0x27663000, 
@@ -305,11 +305,11 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1021, 0x8ee24e30, 0x24420001, 0xaee24e30, 
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0x24020012, 0xac820000, 0x24020001, 0xac820004, 
-0x14c0001b, 0x0, 0x3c040001, 0x2484499c
+0x14c0001b, 0x0, 0x3c040001, 0x248449b0
 0xafa00010, 0xafa00014, 0x8ee60608, 0x8f470228, 
 0x3c050009, 0xc002407, 0x34a5f001, 0x8ee201b0, 
 0x24420001, 0xaee201b0, 0x80014a5, 0x8ee201b0, 
-0x3c040001, 0x248449a8, 0xafa00014, 0x8ee60608, 
+0x3c040001, 0x248449bc, 0xafa00014, 0x8ee60608, 
 0x8f470228, 0x3c050009, 0xc002407, 0x34a5f005, 
 0x8ee201ac, 0x24420001, 0xaee201ac, 0x8ee201ac, 
 0x8ee20154, 0x24420001, 0xaee20154, 0xc0014dc, 
@@ -331,7 +331,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee07b8c, 0xaee07b84, 0x3c010001, 0x370821, 
 0xac2083bc, 0x3c010001, 0x370821, 0x3e00008, 
 0xa02083b9, 0x27bdffd8, 0xafbf0024, 0xafb00020, 
-0x8f820054, 0x3c030001, 0x8c635488, 0x24420067, 
+0x8f820054, 0x3c030001, 0x8c635498, 0x24420067, 
 0x1060000d, 0xaf820058, 0x3c020001, 0x571021, 
 0x904283b8, 0x10400005, 0x3c030200, 0x3c010001, 
 0x370821, 0x8001503, 0xa02083b8, 0x8ee20000, 
@@ -349,7 +349,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x3c030001, 0x771821, 0x8c6383d4, 
 0x8f8200b4, 0x1462007c, 0x0, 0x3c070001, 
 0xf73821, 0x8ce783d0, 0x8f8200b0, 0x3c040001, 
-0x24844a40, 0xafa00014, 0xafa20010, 0x8f8600b0, 
+0x24844a50, 0xafa00014, 0xafa20010, 0x8f8600b0, 
 0x3c050005, 0xc002407, 0x34a50900, 0x8f82011c, 
 0x34420002, 0xaf82011c, 0x8f830104, 0x8f8200b0, 
 0x34420001, 0xaf8200b0, 0xaf830104, 0x8f830120, 
@@ -377,10 +377,10 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xac820000, 0x24020001, 0xac820004, 0x8f82011c, 
 0x2403fffd, 0x431024, 0xaf82011c, 0x8ee201e4, 
 0x3c070001, 0xf73821, 0x8ce783d0, 0x24420001, 
-0xaee201e4, 0x8ee201e4, 0x3c040001, 0x24844a4c, 
+0xaee201e4, 0x8ee201e4, 0x3c040001, 0x24844a5c, 
 0x80015bd, 0xafa00010, 0x8f820104, 0x3c010001, 
 0x370821, 0xac2283d0, 0x8f8200b4, 0x3c070001, 
-0xf73821, 0x8ce783d0, 0x3c040001, 0x24844a54, 
+0xf73821, 0x8ce783d0, 0x3c040001, 0x24844a64, 
 0x3c010001, 0x370821, 0xac2283d4, 0xafa00010, 
 0xafa00014, 0x8f8600b0, 0x3c050005, 0xc002407, 
 0x34a50900, 0x80015cc, 0x0, 0x8f820104, 
@@ -413,7 +413,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020012, 0xac820000, 
 0x24020001, 0xac820004, 0x5600000b, 0x24100001, 
-0x8ee204e4, 0x3c040001, 0x24844a5c, 0xafa00014, 
+0x8ee204e4, 0x3c040001, 0x24844a6c, 0xafa00014, 
 0xafa20010, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0xc002407, 0x34a5f006, 0x16000003, 0x24020001, 
 0x8001650, 0xa2e204f4, 0x8ee20170, 0x24420001, 
@@ -443,7 +443,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0x24020012, 0xac820000, 0x24020001, 0xac820004, 
 0x5600000b, 0x24100001, 0x8ee2724c, 0x3c040001, 
-0x24844a68, 0xafa00014, 0xafa20010, 0x8ee6724c, 
+0x24844a78, 0xafa00014, 0xafa20010, 0x8ee6724c, 
 0x8f470280, 0x3c050009, 0xc002407, 0x34a5f008, 
 0x56000001, 0xaee00e1c, 0x8ee20174, 0x24420001, 
 0xaee20174, 0x8ee20174, 0x8ee24e24, 0x10400019, 
@@ -554,11 +554,11 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f820054, 0x1221023, 0x2c420033, 0x1440ffa6, 
 0x0, 0x316300ff, 0x24020001, 0x14620003, 
 0x3c050009, 0x800197c, 0x24100001, 0x3c040001, 
-0x24844a74, 0xafa00010, 0xafa00014, 0x8f860120, 
+0x24844a84, 0xafa00010, 0xafa00014, 0x8f860120, 
 0x8f870124, 0x800187b, 0x34a5f011, 0x3c040001, 
-0x24844a80, 0xafa00010, 0xafa00014, 0x8f860120, 
+0x24844a90, 0xafa00010, 0xafa00014, 0x8f860120, 
 0x8f870124, 0x34a5f010, 0xc002407, 0x8021, 
-0x800197c, 0x0, 0x3c040001, 0x24844a8c, 
+0x800197c, 0x0, 0x3c040001, 0x24844a9c, 
 0xafa00014, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0x8001975, 0x34a5f00f, 0x8ee20608, 0x8f430228, 
 0x24420001, 0x304900ff, 0x512300e2, 0xafa00010, 
@@ -589,7 +589,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020007, 0xac820000, 
 0x24020001, 0xac820004, 0x5600000c, 0xaee90608, 
-0x3c040001, 0x24844a98, 0xafa00010, 0xafa00014, 
+0x3c040001, 0x24844aa8, 0xafa00010, 0xafa00014, 
 0x8ee60608, 0x8f470228, 0x3c050009, 0xc002407, 
 0x34a5f000, 0x800197c, 0x0, 0x8f830120, 
 0x27623800, 0x24660020, 0xc2102b, 0x50400001, 
@@ -615,10 +615,10 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e30, 0x8ee24e30, 0x210c0, 0x24425038, 
 0x2e22021, 0x24020012, 0xac820000, 0x24020001, 
 0xac820004, 0x5600001d, 0x24100001, 0x3c040001, 
-0x24844aa0, 0xafa00010, 0xafa00014, 0x8ee60608, 
+0x24844ab0, 0xafa00010, 0xafa00014, 0x8ee60608, 
 0x8f470228, 0x3c050009, 0xc002407, 0x34a5f001, 
 0x8ee201b0, 0x24420001, 0xaee201b0, 0x800197c, 
-0x8ee201b0, 0x3c040001, 0x24844aac, 0xafa00014, 
+0x8ee201b0, 0x3c040001, 0x24844abc, 0xafa00014, 
 0x8ee60608, 0x8f470228, 0x3c050009, 0x34a5f005, 
 0xc002407, 0x0, 0x8ee201ac, 0x8021, 
 0x24420001, 0xaee201ac, 0x8ee201ac, 0x1200000c, 
@@ -626,7 +626,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f420238, 0x8ee30158, 0x24630001, 0xaee30158, 
 0x8ee30158, 0x800198c, 0xaee27278, 0x24020001, 
 0x3c010001, 0x370821, 0xa02283b0, 0x3c020001, 
-0x8c425488, 0x10400187, 0x0, 0x8ee27b84, 
+0x8c425498, 0x10400187, 0x0, 0x8ee27b84, 
 0x24430001, 0x284200c9, 0x144001a4, 0xaee37b84, 
 0x8ee204d4, 0x30420002, 0x14400119, 0xaee07b84, 
 0x8ee204d4, 0x3c030600, 0x34631000, 0x34420002, 
@@ -690,12 +690,12 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x56000006, 0x240b0001, 0x8f820054, 0x1221023, 
 0x2c420033, 0x1440ffa6, 0x0, 0x316300ff, 
 0x24020001, 0x10620022, 0x0, 0x3c040001, 
-0x24844a74, 0xafa00010, 0xafa00014, 0x8f860120, 
+0x24844a84, 0xafa00010, 0xafa00014, 0x8f860120, 
 0x8f870124, 0x3c050009, 0xc002407, 0x34a5f011, 
-0x8001aad, 0x0, 0x3c040001, 0x24844a80, 
+0x8001aad, 0x0, 0x3c040001, 0x24844a90, 
 0xafa00014, 0x8f860120, 0x8f870124, 0x3c050009, 
 0xc002407, 0x34a5f010, 0x8001aad, 0x0, 
-0x3c040001, 0x24844a8c, 0xafa00014, 0x8ee60608, 
+0x3c040001, 0x24844a9c, 0xafa00014, 0x8ee60608, 
 0x8f470228, 0x3c050009, 0xc002407, 0x34a5f00f, 
 0x8ee201ac, 0x24420001, 0xaee201ac, 0x8ee201ac, 
 0x8ee2015c, 0x24420001, 0xaee2015c, 0x8ee2015c, 
@@ -742,18 +742,18 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee2016c, 0x80022f4, 0x8ee2016c, 0x32c20001, 
 0x10400004, 0x24020001, 0xaf820064, 0x80022f4, 
 0x0, 0x32c20002, 0x1440000c, 0x3c050003, 
-0x3c040001, 0x24844b24, 0x34a50001, 0x2c03021, 
+0x3c040001, 0x24844b34, 0x34a50001, 0x2c03021, 
 0x3821, 0xafa00010, 0xc002407, 0xafa00014, 
 0x2402fff8, 0x80022f4, 0xaf820064, 0x8f43022c, 
 0x8f42010c, 0x5062000c, 0xafa00010, 0x8f42022c, 
 0x21080, 0x5a1021, 0x8c420300, 0xafa20020, 
 0x8f42022c, 0x24070001, 0x24420001, 0x3042003f, 
-0x8001b80, 0xaf42022c, 0x3c040001, 0x24844b30, 
+0x8001b80, 0xaf42022c, 0x3c040001, 0x24844b40, 
 0xafa00014, 0x8f46022c, 0x8f47010c, 0x3c050003, 
 0xc002407, 0x34a5f01f, 0x3821, 0x14e00003, 
 0x0, 0x80022ed, 0xaf960064, 0x93a20020, 
 0x2443ffff, 0x2c620011, 0x10400658, 0x31080, 
-0x3c010001, 0x220821, 0x8c224be8, 0x400008, 
+0x3c010001, 0x220821, 0x8c224bf8, 0x400008, 
 0x0, 0x8fa20020, 0x30420fff, 0xaee20e0c, 
 0x8f820060, 0x34420200, 0xaf820060, 0x8ee20118, 
 0x24420001, 0xaee20118, 0x80022e8, 0x8ee20118, 
@@ -769,7 +769,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f840054, 0x41442, 0x41c82, 0x431021, 
 0x41cc2, 0x431023, 0x41d02, 0x431021, 
 0x41d42, 0x431023, 0x8001bd0, 0xaee20078, 
-0x3c040001, 0x24844b3c, 0xafa00014, 0x8fa60020, 
+0x3c040001, 0x24844b4c, 0xafa00014, 0x8fa60020, 
 0x3c050003, 0xc002407, 0x34a50004, 0x8ee20110, 
 0x24420001, 0xaee20110, 0x80022e8, 0x8ee20110, 
 0x27440212, 0xc0022fe, 0x24050006, 0x3049001f, 
@@ -785,7 +785,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2c820080, 0x1440fff8, 0x410c0, 0x4c10010, 
 0x618c0, 0x610c0, 0x571821, 0x8c63737c, 
 0x571021, 0xafa30010, 0x8c427380, 0x3c040001, 
-0x24844b48, 0xafa20014, 0x8f470214, 0x3c050003, 
+0x24844b58, 0xafa20014, 0x8f470214, 0x3c050003, 
 0xc002407, 0x34a50013, 0x8001c90, 0x3c020800, 
 0x97440212, 0x771021, 0xa444737e, 0x8f440214, 
 0x771021, 0x2e31821, 0xac447380, 0x34028000, 
@@ -803,7 +803,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24840001, 0x2c820080, 0x1440fff8, 0x410c0, 
 0x4c10023, 0x618c0, 0x910c0, 0x571821, 
 0x8c63727c, 0x571021, 0xafa30010, 0x8c427280, 
-0x3c040001, 0x24844b54, 0xafa20014, 0x8f470214, 
+0x3c040001, 0x24844b64, 0xafa20014, 0x8f470214, 
 0x3c050003, 0xc002407, 0x34a5f017, 0x8001c90, 
 0x3c020800, 0x8f430210, 0xb71021, 0xac43777c, 
 0x8f430214, 0xb71021, 0xac437780, 0x3c020001, 
@@ -878,13 +878,13 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2e22021, 0xac8a0000, 0xac8c0004, 0x54e00006, 
 0x240b0001, 0x8f820054, 0x1221023, 0x2c420033, 
 0x1440ffa6, 0x0, 0x316300ff, 0x24020001, 
-0x10620022, 0x0, 0x3c040001, 0x24844b60, 
+0x10620022, 0x0, 0x3c040001, 0x24844b70, 
 0xafa00010, 0xafa00014, 0x8f860120, 0x8f870124, 
 0x3c050009, 0xc002407, 0x34a5f011, 0x8001da0, 
-0x0, 0x3c040001, 0x24844b6c, 0xafa00014, 
+0x0, 0x3c040001, 0x24844b7c, 0xafa00014, 
 0x8f860120, 0x8f870124, 0x3c050009, 0xc002407, 
 0x34a5f010, 0x8001da0, 0x0, 0x3c040001, 
-0x24844b78, 0xafa00014, 0x8ee60608, 0x8f470228, 
+0x24844b88, 0xafa00014, 0x8ee60608, 0x8f470228, 
 0x3c050009, 0xc002407, 0x34a5f00f, 0x8ee201ac, 
 0x24420001, 0xaee201ac, 0x8ee201ac, 0x8ee20124, 
 0x24420001, 0xaee20124, 0x8001f97, 0x8ee20124, 
@@ -899,7 +899,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1221004, 0x21027, 0x621824, 0xaf830228, 
 0x910c0, 0x2e21821, 0x3402c000, 0x8001e4e, 
 0xa462727c, 0x8f420214, 0xafa20010, 0x910c0, 
-0x571021, 0x8c42727c, 0x3c040001, 0x24844b84, 
+0x571021, 0x8c42727c, 0x3c040001, 0x24844b94, 
 0x3c050003, 0xafa20014, 0x8f470210, 0x34a5f01c, 
 0xc002407, 0x1203021, 0x8001e83, 0x3c020800, 
 0xb71021, 0x9443727e, 0x97420212, 0x14620019, 
@@ -927,7 +927,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x910c0, 0x2e41821, 0x3402c000, 0x15000015, 
 0xa462737c, 0x910c0, 0x2e21821, 0x34028000, 
 0x8001e4e, 0xa462727c, 0x571021, 0x8c42727c, 
-0x3c040001, 0x24844b90, 0x3c050003, 0xafa20010, 
+0x3c040001, 0x24844ba0, 0x3c050003, 0xafa20010, 
 0x710c0, 0x571021, 0x8c42737c, 0x34a5001e, 
 0x1203021, 0xc002407, 0xafa20014, 0x8001e83, 
 0x3c020800, 0x2021, 0x428c0, 0xb71021, 
@@ -1003,12 +1003,12 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xac8a0000, 0xac8c0004, 0x54e00006, 0x240b0001, 
 0x8f820054, 0x1221023, 0x2c420033, 0x1440ffa6, 
 0x0, 0x316300ff, 0x24020001, 0x10620022, 
-0x0, 0x3c040001, 0x24844b60, 0xafa00010, 
+0x0, 0x3c040001, 0x24844b70, 0xafa00010, 
 0xafa00014, 0x8f860120, 0x8f870124, 0x3c050009, 
 0xc002407, 0x34a5f011, 0x8001f93, 0x0, 
-0x3c040001, 0x24844b6c, 0xafa00014, 0x8f860120, 
+0x3c040001, 0x24844b7c, 0xafa00014, 0x8f860120, 
 0x8f870124, 0x3c050009, 0xc002407, 0x34a5f010, 
-0x8001f93, 0x0, 0x3c040001, 0x24844b78, 
+0x8001f93, 0x0, 0x3c040001, 0x24844b88, 
 0xafa00014, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0xc002407, 0x34a5f00f, 0x8ee201ac, 0x24420001, 
 0xaee201ac, 0x8ee201ac, 0x8ee20128, 0x24420001, 
@@ -1020,7 +1020,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f820228, 0xaee204dc, 0x2402ffff, 0xaf820228, 
 0x24020001, 0x8001fbe, 0xa2e204d8, 0x92e204d8, 
 0x5040000c, 0xa2e004d8, 0x8ee204dc, 0xaf820228, 
-0x8001fbe, 0xa2e004d8, 0x3c040001, 0x24844b98, 
+0x8001fbe, 0xa2e004d8, 0x3c040001, 0x24844ba8, 
 0xafa00014, 0x8fa60020, 0x3c050003, 0xc002407, 
 0x34a5f009, 0x8ee2013c, 0x24420001, 0xaee2013c, 
 0x80022e8, 0x8ee2013c, 0x8fa20020, 0x21200, 
@@ -1031,7 +1031,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x370821, 0xa02283b2, 0x8001fea, 0xaee40108, 
 0x8f820220, 0x3c0308ff, 0x3463fff7, 0x431024, 
 0xaf820220, 0x3c010001, 0x370821, 0xa02083b2, 
-0x8001fea, 0xaee40108, 0x3c040001, 0x24844ba4, 
+0x8001fea, 0xaee40108, 0x3c040001, 0x24844bb4, 
 0xafa00014, 0x8fa60020, 0x3c050003, 0xc002407, 
 0x34a5f00a, 0x8ee2012c, 0x24420001, 0xaee2012c, 
 0x80022e8, 0x8ee2012c, 0x8fa20020, 0x21200, 
@@ -1043,13 +1043,13 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x571021, 0x904283b2, 0x3c010001, 0x370821, 
 0x1440000e, 0xa02083b3, 0x8f820220, 0x3c0308ff, 
 0x3463fff7, 0x431024, 0x8002018, 0xaf820220, 
-0x3c040001, 0x24844bb0, 0xafa00014, 0x8fa60020, 
+0x3c040001, 0x24844bc0, 0xafa00014, 0x8fa60020, 
 0x3c050003, 0xc002407, 0x34a5f00b, 0x8ee20114, 
 0x24420001, 0xaee20114, 0x80022e8, 0x8ee20114, 
 0x27840208, 0x27450200, 0xc00249e, 0x24060008, 
 0x26e40094, 0x27450200, 0xc00249e, 0x24060008, 
 0x8ee20134, 0x24420001, 0xaee20134, 0x80022e8, 
-0x8ee20134, 0x8f460248, 0x2021, 0xc004fa4
+0x8ee20134, 0x8f460248, 0x2021, 0xc004fa8
 0x24050004, 0x8ee20130, 0x24420001, 0xaee20130, 
 0x80022e8, 0x8ee20130, 0x8ef301cc, 0x8ef401d0, 
 0x8ef501d8, 0x8ee20140, 0x26e40030, 0x24420001, 
@@ -1063,7 +1063,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee20104, 0xaee40100, 0xaee3010c, 0x8f820220, 
 0x30420008, 0x10400004, 0x0, 0xaee30108, 
 0x8002061, 0x2021, 0xaee40108, 0x2021, 
-0x3c030001, 0x641821, 0x906353e0, 0x2e41021, 
+0x3c030001, 0x641821, 0x906353f0, 0x2e41021, 
 0x24840001, 0xa043009c, 0x2c82000f, 0x1440fff8, 
 0x0, 0x8f820040, 0x2e41821, 0x24840001, 
 0x21702, 0x24420030, 0xa062009c, 0x2e41021, 
@@ -1143,13 +1143,13 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2e22021, 0xac8a0000, 0xac8c0004, 0x54e00006, 
 0x240b0001, 0x8f820054, 0x1221023, 0x2c420033, 
 0x1440ffa6, 0x0, 0x316300ff, 0x24020001, 
-0x10620022, 0x0, 0x3c040001, 0x24844b60, 
+0x10620022, 0x0, 0x3c040001, 0x24844b70, 
 0xafa00010, 0xafa00014, 0x8f860120, 0x8f870124, 
 0x3c050009, 0xc002407, 0x34a5f011, 0x80021c4, 
-0x0, 0x3c040001, 0x24844b6c, 0xafa00014, 
+0x0, 0x3c040001, 0x24844b7c, 0xafa00014, 
 0x8f860120, 0x8f870124, 0x3c050009, 0xc002407, 
 0x34a5f010, 0x80021c4, 0x0, 0x3c040001, 
-0x24844b78, 0xafa00014, 0x8ee60608, 0x8f470228, 
+0x24844b88, 0xafa00014, 0x8ee60608, 0x8f470228, 
 0x3c050009, 0xc002407, 0x34a5f00f, 0x8ee201ac, 
 0x24420001, 0xaee201ac, 0x8ee201ac, 0x8ee20120, 
 0x24420001, 0xaee20120, 0x8ee20120, 0x8ee20168, 
@@ -1159,7 +1159,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f820220, 0x30420008, 0x14400002, 0x24020001, 
 0x24020002, 0xaee20108, 0x8ee2011c, 0x24420001, 
 0xaee2011c, 0x80022e8, 0x8ee2011c, 0x3c040001, 
-0x24844bbc, 0xafa00010, 0xafa00014, 0x8fa60020, 
+0x24844bcc, 0xafa00010, 0xafa00014, 0x8fa60020, 
 0x3c050003, 0xc002407, 0x34a5f00f, 0x93a20020, 
 0x3c030700, 0x34631000, 0x431025, 0xafa20018, 
 0x8ee20608, 0x8f430228, 0x24420001, 0x304900ff, 
@@ -1190,7 +1190,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1021, 0x8ee24e30, 0x24420001, 0xaee24e30, 
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0x24020007, 0xac820000, 0x24020001, 0xac820004, 
-0x54e0000c, 0xaee90608, 0x3c040001, 0x24844bc4, 
+0x54e0000c, 0xaee90608, 0x3c040001, 0x24844bd4, 
 0xafa00010, 0xafa00014, 0x8ee60608, 0x8f470228, 
 0x3c050009, 0xc002407, 0x34a5f000, 0x80022e0, 
 0x0, 0x8f830120, 0x27623800, 0x24660020, 
@@ -1216,11 +1216,11 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8ee24e30, 0x24420001, 0xaee24e30, 0x8ee24e30, 
 0x210c0, 0x24425038, 0x2e22021, 0x24020012, 
 0xac820000, 0x24020001, 0xac820004, 0x14e0001b, 
-0x0, 0x3c040001, 0x24844bcc, 0xafa00010, 
+0x0, 0x3c040001, 0x24844bdc, 0xafa00010, 
 0xafa00014, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0xc002407, 0x34a5f001, 0x8ee201b0, 0x24420001, 
 0xaee201b0, 0x80022e0, 0x8ee201b0, 0x3c040001, 
-0x24844bd8, 0xafa00014, 0x8ee60608, 0x8f470228, 
+0x24844be8, 0xafa00014, 0x8ee60608, 0x8f470228, 
 0x3c050009, 0xc002407, 0x34a5f005, 0x8ee201ac, 
 0x24420001, 0xaee201ac, 0x8ee201ac, 0x8ee20150, 
 0x24420001, 0xaee20150, 0x8ee20150, 0x8ee20160, 
@@ -1247,7 +1247,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaf82011c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 
 0x27bdffe0, 0xafbf0018, 0x8f820104, 0xafa20010, 
 0x8f820100, 0x3c050002, 0xafa20014, 0x8f8600b0, 
-0x8f87011c, 0x3c040001, 0x24844c8c, 0xc002407, 
+0x8f87011c, 0x3c040001, 0x24844ca0, 0xc002407, 
 0x34a5f000, 0x8f8300b0, 0x3c027f00, 0x621824, 
 0x3c020400, 0x1062002b, 0x43102b, 0x14400008, 
 0x3c022000, 0x3c020100, 0x10620026, 0x3c020200, 
@@ -1264,7 +1264,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x27bdffe0, 
 0xafbf001c, 0xafb00018, 0x8f820120, 0xafa20010, 
 0x8f820124, 0x3c050001, 0xafa20014, 0x8f8600a0, 
-0x8f87011c, 0x3c040001, 0x24844c98, 0xc002407, 
+0x8f87011c, 0x3c040001, 0x24844cac, 0xc002407, 
 0x34a5f000, 0x8f8300a0, 0x3c027f00, 0x621824, 
 0x3c020400, 0x10620055, 0x8021, 0x43102b, 
 0x14400008, 0x3c042000, 0x3c020100, 0x1062004f, 
@@ -1290,43 +1290,43 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee2019c, 0x80023e7, 0x8ee2019c, 0x8f8200a0, 
 0x34420001, 0xaf8200a0, 0x8fbf001c, 0x8fb00018, 
 0x3e00008, 0x27bd0020, 0x0, 0x3c020001, 
-0x8c425408, 0x27bdffe8, 0xafbf0014, 0x14400012, 
-0xafb00010, 0x3c100001, 0x26105550, 0x2002021, 
+0x8c425418, 0x27bdffe8, 0xafbf0014, 0x14400012, 
+0xafb00010, 0x3c100001, 0x26105560, 0x2002021, 
 0xc00248c, 0x24052000, 0x26021fe0, 0x3c010001, 
-0xac225524, 0x3c010001, 0xac225520, 0xaf420250, 
+0xac225534, 0x3c010001, 0xac225530, 0xaf420250, 
 0x24022000, 0xaf500254, 0xaf420258, 0x24020001, 
-0x3c010001, 0xac225408, 0x8fbf0014, 0x8fb00010, 
-0x3e00008, 0x27bd0018, 0x3c030001, 0x8c635524, 
+0x3c010001, 0xac225418, 0x8fbf0014, 0x8fb00010, 
+0x3e00008, 0x27bd0018, 0x3c030001, 0x8c635534, 
 0x8c820000, 0x8fa80010, 0x8fa90014, 0xac620000, 
-0x3c020001, 0x8c425524, 0x8c830004, 0xac430004, 
+0x3c020001, 0x8c425534, 0x8c830004, 0xac430004, 
 0xac450008, 0x8f840054, 0x2443ffe0, 0xac460010, 
 0xac470014, 0xac480018, 0xac49001c, 0x3c010001, 
-0xac235524, 0xac44000c, 0x3c020001, 0x24425550, 
+0xac235534, 0xac44000c, 0x3c020001, 0x24425560, 
 0x62182b, 0x10600005, 0x0, 0x3c020001, 
-0x8c425520, 0x3c010001, 0xac225524, 0x3c030001, 
-0x8c635524, 0x3c020001, 0x8c4253f0, 0xac620000, 
-0x3c030001, 0x8c635524, 0x3c020001, 0x8c4253f0, 
+0x8c425530, 0x3c010001, 0xac225534, 0x3c030001, 
+0x8c635534, 0x3c020001, 0x8c425400, 0xac620000, 
+0x3c030001, 0x8c635534, 0x3c020001, 0x8c425400, 
 0xac620004, 0x3e00008, 0xaf430250, 0x3c030001, 
-0x8c635524, 0x3c020001, 0x8c4253f0, 0x27bdffd0, 
+0x8c635534, 0x3c020001, 0x8c425400, 0x27bdffd0, 
 0xafb40020, 0x8fb40040, 0xafb00010, 0x808021, 
 0xafb50024, 0x8fb50044, 0x8fa40048, 0xafb10014, 
 0xa08821, 0xafbf0028, 0xafb3001c, 0xafb20018, 
-0xac620000, 0x3c050001, 0x8ca55524, 0x3c020001, 
-0x8c4253f0, 0xc09021, 0xe09821, 0x10800006, 
+0xac620000, 0x3c050001, 0x8ca55534, 0x3c020001, 
+0x8c425400, 0xc09021, 0xe09821, 0x10800006, 
 0xaca20004, 0x24a50008, 0xc002494, 0x24060018, 
 0x8002452, 0x0, 0x24a40008, 0xc00248c, 
-0x24050018, 0x3c020001, 0x8c425524, 0x3c050001, 
-0x24a55550, 0x2442ffe0, 0x3c010001, 0xac225524, 
+0x24050018, 0x3c020001, 0x8c425534, 0x3c050001, 
+0x24a55560, 0x2442ffe0, 0x3c010001, 0xac225534, 
 0x45102b, 0x10400005, 0x0, 0x3c020001, 
-0x8c425520, 0x3c010001, 0xac225524, 0x3c030001, 
-0x8c635524, 0x8e020000, 0xac620000, 0x3c030001, 
-0x8c635524, 0x8e020004, 0xac620004, 0xac710008, 
-0x8f840054, 0x2462ffe0, 0x3c010001, 0xac225524, 
+0x8c425530, 0x3c010001, 0xac225534, 0x3c030001, 
+0x8c635534, 0x8e020000, 0xac620000, 0x3c030001, 
+0x8c635534, 0x8e020004, 0xac620004, 0xac710008, 
+0x8f840054, 0x2462ffe0, 0x3c010001, 0xac225534, 
 0x45102b, 0xac720010, 0xac730014, 0xac740018, 
 0xac75001c, 0x10400005, 0xac64000c, 0x3c020001, 
-0x8c425520, 0x3c010001, 0xac225524, 0x3c030001, 
-0x8c635524, 0x3c020001, 0x8c4253f0, 0xac620000, 
-0x3c030001, 0x8c635524, 0x3c020001, 0x8c4253f0, 
+0x8c425530, 0x3c010001, 0xac225534, 0x3c030001, 
+0x8c635534, 0x3c020001, 0x8c425400, 0xac620000, 
+0x3c030001, 0x8c635534, 0x3c020001, 0x8c425400, 
 0xac620004, 0xaf430250, 0x8fbf0028, 0x8fb50024, 
 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 
 0x8fb00010, 0x3e00008, 0x27bd0030, 0x10a00005, 
@@ -1372,7 +1372,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x210c0, 0x24424e38, 0x2e22021, 0x24020005, 
 0xac820000, 0x24020001, 0xac820004, 0x1520000a, 
 0x3c040001, 0xafab0010, 0x8ee27264, 0x3c040001, 
-0x24844f00, 0x3c050004, 0xafa20014, 0x8ee604e4, 
+0x24844f10, 0x3c050004, 0xafa20014, 0x8ee604e4, 
 0x80028c2, 0x34a5f114, 0x8ee27264, 0x34843800, 
 0x3641821, 0x24420010, 0x43102b, 0x14400073, 
 0x0, 0x8ee27264, 0x24480010, 0x3641021, 
@@ -1401,7 +1401,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x210c0, 0x24424e38, 0x2e22021, 0x24020005, 
 0xac820000, 0x24020001, 0xac820004, 0x1520000a, 
 0x2508fffc, 0xafab0010, 0x8ee27264, 0x3c040001, 
-0x24844f00, 0x3c050004, 0xafa20014, 0x8ee604e4, 
+0x24844f10, 0x3c050004, 0xafa20014, 0x8ee604e4, 
 0x80028c2, 0x34a5f125, 0x34028100, 0xa5020000, 
 0x9582000e, 0x8002621, 0xa5020002, 0x8f850100, 
 0x27623000, 0x24a60020, 0xc2102b, 0x50400001, 
@@ -1428,7 +1428,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8ee24e28, 0x210c0, 0x24424e38, 0x2e22021, 
 0x24020005, 0xac820000, 0x24020001, 0xac820004, 
 0x1520000a, 0x34028100, 0xafab0010, 0x8ee27264, 
-0x3c040001, 0x24844f00, 0x3c050004, 0xafa20014, 
+0x3c040001, 0x24844f10, 0x3c050004, 0xafa20014, 
 0x8ee604e4, 0x80028c2, 0x34a5f015, 0x8ee37264, 
 0xa462000c, 0x8ee37264, 0x9582000e, 0xa462000e, 
 0x8002685, 0x24e70004, 0x8f840100, 0x27623000, 
@@ -1454,7 +1454,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e28, 0x8ee24e28, 0x210c0, 
 0x24424e38, 0x2e22021, 0x24020005, 0xac820000, 
 0x24020001, 0xac820004, 0x15200009, 0x3c050004, 
-0xafab0010, 0x8ee27264, 0x3c040001, 0x24844f00, 
+0xafab0010, 0x8ee27264, 0x3c040001, 0x24844f10, 
 0xafa20014, 0x8ee604e4, 0x80028c2, 0x34a5f004, 
 0x8ee2725c, 0x30e7ffff, 0x471021, 0xaee2725c, 
 0x8ee204e4, 0x8ee304fc, 0x8ee47258, 0x21100, 
@@ -1474,7 +1474,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f8200f0, 0x24090001, 0x8fa30018, 0x8fa4001c, 
 0xac430000, 0xac440004, 0xaf8700f0, 0x15200012, 
 0xd1142, 0x8f8200f0, 0xafa20010, 0x8f8200f4, 
-0x3c040001, 0x24844f0c, 0xafa20014, 0x8fa60018, 
+0x3c040001, 0x24844f1c, 0xafa20014, 0x8fa60018, 
 0x8fa7001c, 0x3c050004, 0xc002407, 0x34a5f005, 
 0x8ee20088, 0x24420001, 0xaee20088, 0x8ee20088, 
 0x80028d7, 0xaee0725c, 0x30430003, 0x24020002, 
@@ -1516,7 +1516,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e28, 0x8ee24e28, 0x210c0, 0x24424e38, 
 0x2e22021, 0x24020005, 0xac820000, 0x24020001, 
 0xac820004, 0x1520000a, 0x3c040001, 0xafab0010, 
-0x8ee27264, 0x3c040001, 0x24844f00, 0x3c050004, 
+0x8ee27264, 0x3c040001, 0x24844f10, 0x3c050004, 
 0xafa20014, 0x8ee604e4, 0x80028c2, 0x34a5f014, 
 0x8ee27264, 0x34843800, 0x3641821, 0x24420010, 
 0x43102b, 0x14400073, 0x0, 0x8ee27264, 
@@ -1545,7 +1545,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e28, 0x8ee24e28, 0x210c0, 0x24424e38, 
 0x2e22021, 0x24020005, 0xac820000, 0x24020001, 
 0xac820004, 0x1520000a, 0x2508fffc, 0xafab0010, 
-0x8ee27264, 0x3c040001, 0x24844f00, 0x3c050004, 
+0x8ee27264, 0x3c040001, 0x24844f10, 0x3c050004, 
 0xafa20014, 0x8ee604e4, 0x80028c2, 0x34a5f015, 
 0x34028100, 0xa5020000, 0x9582000e, 0x8002863, 
 0xa5020002, 0x8f850100, 0x27623000, 0x24a60020, 
@@ -1572,7 +1572,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e28, 0x8ee24e28, 0x210c0, 
 0x24424e38, 0x2e22021, 0x24020005, 0xac820000, 
 0x24020001, 0xac820004, 0x1520000a, 0x34028100, 
-0xafab0010, 0x8ee27264, 0x3c040001, 0x24844f00, 
+0xafab0010, 0x8ee27264, 0x3c040001, 0x24844f10, 
 0x3c050004, 0xafa20014, 0x8ee604e4, 0x80028c2, 
 0x34a5f016, 0x8ee37264, 0xa462000c, 0x8ee37264, 
 0x9582000e, 0xa462000e, 0x80028c6, 0x24e70004, 
@@ -1598,7 +1598,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e28, 0x8ee24e28, 0x210c0, 0x24424e38, 
 0x2e22021, 0x24020005, 0xac820000, 0x24020001, 
 0xac820004, 0x1520000b, 0x3c050004, 0x3c040001, 
-0x24844f18, 0xafab0010, 0xafa00014, 0x8ee604e4, 
+0x24844f28, 0xafab0010, 0xafa00014, 0x8ee604e4, 
 0x34a5f017, 0xc002407, 0x30e7ffff, 0x80028e5, 
 0x0, 0x8ee27264, 0x3c050001, 0x30e4ffff, 
 0x441021, 0xaee27264, 0x8ee2725c, 0x8ee37264, 
@@ -1664,7 +1664,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e28, 0x8ee24e28, 0x210c0, 
 0x24424e38, 0x2e22021, 0x24020005, 0xac820000, 
 0x24020001, 0xac820004, 0x1540000a, 0x24020001, 
-0xafa90010, 0x8ee27264, 0x3c040001, 0x24844f00, 
+0xafa90010, 0x8ee27264, 0x3c040001, 0x24844f10, 
 0x3c050004, 0xafa20014, 0x8ee604e4, 0x8002a53, 
 0x34a5f204, 0xa2e204ed, 0x8ee204e8, 0x8ee304fc, 
 0x8ee47258, 0x3c060001, 0x34c63800, 0x3c010001, 
@@ -1698,7 +1698,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e28, 0x8ee24e28, 0x210c0, 0x24424e38, 
 0x2e22021, 0x24020005, 0xac820000, 0x24020001, 
 0xac820004, 0x1540000c, 0x30e5ffff, 0x3c040001, 
-0x24844f18, 0x3c050004, 0xafa90010, 0xafa00014, 
+0x24844f28, 0x3c050004, 0xafa90010, 0xafa00014, 
 0x8ee604e4, 0x34a5f237, 0xc002407, 0x30e7ffff, 
 0x8002a76, 0x0, 0x8ee27264, 0x451021, 
 0xaee27264, 0x8ee2726c, 0x8ee37264, 0x3c040001, 
@@ -1722,7 +1722,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f830108, 0x21140, 0x621821, 0xaf830108, 
 0xac800000, 0x8cc20018, 0x2443fffe, 0x2c620013, 
 0x104000c1, 0x31080, 0x3c010001, 0x220821, 
-0x8c224f40, 0x400008, 0x0, 0x8ee204f0, 
+0x8c224f50, 0x400008, 0x0, 0x8ee204f0, 
 0x471021, 0xaee204f0, 0x8ee204f0, 0x8f43023c, 
 0x43102b, 0x144000be, 0x0, 0x8ee304e4, 
 0x8ee204f8, 0x506200ba, 0xa2e004f4, 0x8f830120, 
@@ -1749,7 +1749,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e30, 0x8ee24e30, 0x210c0, 0x24425038, 
 0x2e22021, 0x24020012, 0xac820000, 0x24020001, 
 0xac820004, 0x5600000b, 0x24100001, 0x8ee204e4, 
-0x3c040001, 0x24844f24, 0xafa00014, 0xafa20010, 
+0x3c040001, 0x24844f34, 0xafa00014, 0xafa20010, 
 0x8ee60608, 0x8f470228, 0x3c050009, 0xc002407, 
 0x34a5f006, 0x16000003, 0x24020001, 0x8002b75, 
 0xa2e204f4, 0x8ee20170, 0x24420001, 0xaee20170, 
@@ -1770,7 +1770,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8002b75, 0xaee20000, 0x8ee2014c, 0x3c010001, 
 0x370821, 0xa02083e0, 0x24420001, 0xaee2014c, 
 0x8002b75, 0x8ee2014c, 0x94c7000e, 0x8cc2001c, 
-0x3c040001, 0x24844f30, 0xafa60014, 0xafa20010, 
+0x3c040001, 0x24844f40, 0xafa60014, 0xafa20010, 
 0x8cc60018, 0x3c050008, 0xc002407, 0x34a50910, 
 0x8fbf001c, 0x8fb00018, 0x3e00008, 0x27bd0020, 
 0x27bdff98, 0xafbf0060, 0xafbe005c, 0xafb60058, 
@@ -1779,7 +1779,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafa00024, 0x106203e7, 0xafa0002c, 0x3c1e0001, 
 0x37de3800, 0x3c0bffff, 0x8f930108, 0x8e620018, 
 0x8f830104, 0x2443fffe, 0x2c620014, 0x104003cf, 
-0x31080, 0x3c010001, 0x220821, 0x8c224f90, 
+0x31080, 0x3c010001, 0x220821, 0x8c224fa0, 
 0x400008, 0x0, 0x9663000e, 0x8ee2725c, 
 0x8ee404f0, 0x431021, 0xaee2725c, 0x8e63001c, 
 0x96e20458, 0x24840001, 0xaee404f0, 0x24630001, 
@@ -1808,7 +1808,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee24e30, 0x8ee24e30, 0x210c0, 0x24425038, 
 0x2e22021, 0x24020012, 0x240c0001, 0xac820000, 
 0xac8c0004, 0x5600000d, 0x24100001, 0x8ee204e4, 
-0x3c040001, 0x24844f24, 0xafa00014, 0xafa20010, 
+0x3c040001, 0x24844f34, 0xafa00014, 0xafa20010, 
 0x8ee60608, 0x8f470228, 0x3c050009, 0x34a5f006, 
 0xc002407, 0xafab0038, 0x8fab0038, 0x1200030a, 
 0x240c0001, 0x8002f1d, 0x0, 0x966c001c, 
@@ -2002,7 +2002,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020012, 0x240c0001, 
 0xac820000, 0xac8c0004, 0x5600000d, 0x24100001, 
-0x8ee204e4, 0x3c040001, 0x24844f24, 0xafa00014, 
+0x8ee204e4, 0x3c040001, 0x24844f34, 0xafa00014, 
 0xafa20010, 0x8ee60608, 0x8f470228, 0x3c050009, 
 0x34a5f006, 0xc002407, 0xafab0038, 0x8fab0038, 
 0x16000003, 0x240c0001, 0x8002f60, 0xa2ec04f4, 
@@ -2057,7 +2057,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8821, 0x8f8200e4, 0x24110001, 0x8c430000, 
 0x8c440004, 0xafa30018, 0xafa4001c, 0x1620000e, 
 0x3c02ffff, 0x8f8200c4, 0xafa20010, 0x8f8200c8, 
-0x3c040001, 0x24845040, 0xafa20014, 0x8f8600e0, 
+0x3c040001, 0x24845050, 0xafa20014, 0x8f8600e0, 
 0x8f8700e4, 0x3c050006, 0xc002407, 0x34a5f000, 
 0x80034d0, 0x0, 0x8fa3001c, 0x8fb20018, 
 0x3074ffff, 0x2694fffc, 0x621024, 0x10400058, 
@@ -2155,11 +2155,11 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x862021, 0xaee400c0, 0xaee500c4, 0x8ee20058, 
 0x24420001, 0xaee20058, 0x8ee20058, 0x8ee2007c, 
 0x24420001, 0xaee2007c, 0x8ee2007c, 0x8f8200e0, 
-0xafa20010, 0x8f8200e4, 0x3c040001, 0x24845048, 
+0xafa20010, 0x8f8200e4, 0x3c040001, 0x24845058, 
 0xafa20014, 0x8fa60018, 0x8fa7001c, 0x3c050006, 
 0xc002407, 0x34a5f003, 0x80034d0, 0x0, 
 0x8ee25240, 0xafa20010, 0x8ee25244, 0x3c040001, 
-0x24845054, 0xafa20014, 0x8ee60e10, 0x8ee70e18, 
+0x24845064, 0xafa20014, 0x8ee60e10, 0x8ee70e18, 
 0x3c050006, 0xc002407, 0x34a5f002, 0x8ee201c0, 
 0x24420001, 0xaee201c0, 0x8ee20000, 0x8ee301c0, 
 0x2403ffbf, 0x431024, 0x8003474, 0xaee20000, 
@@ -2211,7 +2211,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x50550003, 0x1021, 0x8ee24e30, 0x24420001, 
 0xaee24e30, 0x8ee24e30, 0x210c0, 0x24425038, 
 0x2e22021, 0xac960000, 0xac9e0004, 0x16200018, 
-0x3c050006, 0x8e020018, 0x3c040001, 0x24845060, 
+0x3c050006, 0x8e020018, 0x3c040001, 0x24845070, 
 0xafa20010, 0x8e020000, 0x8e030004, 0x34a5f009, 
 0x2003021, 0xc002407, 0xafa30014, 0x93a20037, 
 0x10400216, 0x340f8100, 0x8e420004, 0x8e430008, 
@@ -2244,7 +2244,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x210c0, 0x24425038, 0x2e22021, 0xac960000, 
 0xac9e0004, 0x1620000d, 0x0, 0xa60c000a, 
 0xa60a000e, 0x8f820100, 0xafa20010, 0x8f820104, 
-0x3c040001, 0x2484506c, 0x3c050006, 0xafa20014, 
+0x3c040001, 0x2484507c, 0x3c050006, 0xafa20014, 
 0x8ee6724c, 0x800343f, 0x34a5f00b, 0x3c010001, 
 0x370821, 0xa02083c0, 0xadab0000, 0x8ee201d8, 
 0x8ee3724c, 0x2442ffff, 0xaee201d8, 0x8ee201d8, 
@@ -2276,7 +2276,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1021, 0x8ee24e30, 0x24420001, 0xaee24e30, 
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0xac8e0000, 0xac9e0004, 0x5620000d, 0x24110001, 
-0x8ee2724c, 0x3c040001, 0x24845078, 0xafa00014, 
+0x8ee2724c, 0x3c040001, 0x24845088, 0xafa00014, 
 0xafa20010, 0x8ee6724c, 0x8f470280, 0x3c050009, 
 0x34a5f008, 0xc002407, 0xafae0048, 0x8fae0048, 
 0x56200001, 0xaee00e1c, 0x8ee20188, 0x24420001, 
@@ -2303,7 +2303,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8ee24e30, 0x24420001, 0xaee24e30, 0x8ee24e30, 
 0x210c0, 0x24425038, 0x2e22021, 0xac8e0000, 
 0xac9e0004, 0x1620000d, 0x0, 0x8ee2724c, 
-0x3c040001, 0x24845078, 0xafa00014, 0xafa20010, 
+0x3c040001, 0x24845088, 0xafa00014, 0xafa20010, 
 0x8ee6724c, 0x8f470280, 0x3c050009, 0x34a5f008, 
 0xc002407, 0xafae0048, 0x8fae0048, 0x8ee20174, 
 0x24420001, 0xaee20174, 0x8ee20174, 0x8003472, 
@@ -2333,7 +2333,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0xac960000, 0xac9e0004, 0x1620001d, 0x0, 
 0xa60c000a, 0x8f820100, 0xafa20010, 0x8f820104, 
-0x3c040001, 0x2484506c, 0x3c050006, 0xafa20014, 
+0x3c040001, 0x2484507c, 0x3c050006, 0xafa20014, 
 0x8ee6724c, 0x34a5f00d, 0xc002407, 0x2003821, 
 0x93a20037, 0x10400031, 0x340f8100, 0x8e420004, 
 0x8e430008, 0x8e44000c, 0xa64f000c, 0xae420000, 
@@ -2395,7 +2395,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10430007, 0x4821, 0x8f8200e4, 0x24090001, 
 0x8c430000, 0x8c440004, 0xafa30018, 0xafa4001c, 
 0x1520000e, 0x3c02ffff, 0x8f8200c4, 0xafa20010, 
-0x8f8200c8, 0x3c040001, 0x24845040, 0xafa20014, 
+0x8f8200c8, 0x3c040001, 0x24845050, 0xafa20014, 
 0x8f8600e0, 0x8f8700e4, 0x3c050006, 0xc002407, 
 0x34a5f000, 0x8003854, 0x0, 0x8fa3001c, 
 0x8fb20018, 0x3073ffff, 0x2673fffc, 0x621024, 
@@ -2493,15 +2493,15 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x862021, 0xaee400c0, 0xaee500c4, 0x8ee20058, 
 0x24420001, 0xaee20058, 0x8ee20058, 0x8ee2007c, 
 0x24420001, 0xaee2007c, 0x8ee2007c, 0x8f8200e0, 
-0xafa20010, 0x8f8200e4, 0x3c040001, 0x24845048, 
+0xafa20010, 0x8f8200e4, 0x3c040001, 0x24845058, 
 0xafa20014, 0x8fa60018, 0x8fa7001c, 0x3c050006, 
 0xc002407, 0x34a5f003, 0x8003854, 0x0, 
 0x8ee25240, 0xafa20010, 0x8ee25244, 0x3c040001, 
-0x24845054, 0xafa20014, 0x8ee60e10, 0x8ee70e18, 
+0x24845064, 0xafa20014, 0x8ee60e10, 0x8ee70e18, 
 0xc002407, 0x34a5f002, 0x8ee201c0, 0x24420001, 
 0xaee201c0, 0x8ee20000, 0x8ee301c0, 0x2403ffbf, 
 0x431024, 0x80037fc, 0xaee20000, 0x8ee25240, 
-0xafa20010, 0x8ee25244, 0x3c040001, 0x24845054, 
+0xafa20010, 0x8ee25244, 0x3c040001, 0x24845064, 
 0xafa20014, 0x8ee60e10, 0x8ee70e18, 0x3c050006, 
 0xc002407, 0x34a5f002, 0x8ee201c0, 0x24420001, 
 0xaee201c0, 0x80037fc, 0x8ee201c0, 0x96e20468, 
@@ -2560,7 +2560,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020007, 0xac820000, 
 0x24020001, 0xac820004, 0x15200018, 0x3c050006, 
-0x8e020018, 0x3c040001, 0x24845060, 0xafa20010, 
+0x8e020018, 0x3c040001, 0x24845070, 0xafa20010, 
 0x8e020000, 0x8e030004, 0x34a5f009, 0x2003021, 
 0xc002407, 0xafa30014, 0x32c200ff, 0x1040002b, 
 0x34028100, 0x8e430004, 0x8e440008, 0x8e45000c, 
@@ -2620,7 +2620,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10430007, 0x3821, 0x8f8200e4, 0x24070001, 
 0x8c430000, 0x8c440004, 0xafa30018, 0xafa4001c, 
 0x14e0000e, 0x3c02ffff, 0x8f8200c4, 0xafa20010, 
-0x8f8200c8, 0x3c040001, 0x24845084, 0xafa20014, 
+0x8f8200c8, 0x3c040001, 0x24845094, 0xafa20014, 
 0x8f8600e0, 0x8f8700e4, 0x3c050006, 0xc002407, 
 0x34a5f200, 0x8003c5f, 0x0, 0x8fa3001c, 
 0x8fb20018, 0x3073ffff, 0x2673fffc, 0x621024, 
@@ -2718,11 +2718,11 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x862021, 0xaee400c0, 0xaee500c4, 0x8ee20058, 
 0x24420001, 0xaee20058, 0x8ee20058, 0x8ee2007c, 
 0x24420001, 0xaee2007c, 0x8ee2007c, 0x8f8200e0, 
-0xafa20010, 0x8f8200e4, 0x3c040001, 0x24845090, 
+0xafa20010, 0x8f8200e4, 0x3c040001, 0x248450a0, 
 0xafa20014, 0x8fa60018, 0x8fa7001c, 0x3c050006, 
 0xc002407, 0x34a5f203, 0x8003c5f, 0x0, 
 0x8ee25240, 0xafa20010, 0x8ee25244, 0x3c040001, 
-0x2484509c, 0xafa20014, 0x8ee60e10, 0x8ee70e18, 
+0x248450ac, 0xafa20014, 0x8ee60e10, 0x8ee70e18, 
 0x3c050006, 0xc002407, 0x34a5f202, 0x8ee201c0, 
 0x24420001, 0xaee201c0, 0x8003c06, 0x8ee201c0, 
 0x96e20468, 0x53102b, 0x54400001, 0x3c168000, 
@@ -2818,7 +2818,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1021, 0x8ee24e30, 0x24420001, 0xaee24e30, 
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0x24020007, 0xac820000, 0x24020001, 0xac820004, 
-0x14e00019, 0x3c050006, 0x3c040001, 0x24845060, 
+0x14e00019, 0x3c050006, 0x3c040001, 0x24845070, 
 0x8e220018, 0x34a5f209, 0xafa20010, 0x8e220000, 
 0x8e230004, 0x2203021, 0x1603821, 0xc002407, 
 0xafa30014, 0x93a2002f, 0x1040002a, 0x34028100, 
@@ -2882,7 +2882,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24020001, 0xac620004, 0x1480000e, 0x24030040, 
 0x8ee20e14, 0xafa20010, 0x8ee20e18, 0x3c050007, 
 0xafa20014, 0x8ee60e0c, 0x8ee70e10, 0x3c040001, 
-0x248450a4, 0xc002407, 0x34a5f001, 0x8003ce1, 
+0x248450b4, 0xc002407, 0x34a5f001, 0x8003ce1, 
 0x0, 0x8ee20500, 0x24420001, 0x50430003, 
 0x1021, 0x8ee20500, 0x24420001, 0xaee20500, 
 0x8ee20500, 0x21080, 0x571021, 0xac490508, 
@@ -2914,7 +2914,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24020003, 0xac620000, 0x24020001, 0xac620004, 
 0x1480000e, 0x24030040, 0x8ee2523c, 0xafa20010, 
 0x8ee25244, 0x3c050007, 0xafa20014, 0x8ee65238, 
-0x8ee75240, 0x3c040001, 0x248450b0, 0xc002407, 
+0x8ee75240, 0x3c040001, 0x248450c0, 0xc002407, 
 0x34a5f010, 0x8003d63, 0x0, 0x8ee20500, 
 0x24420001, 0x50430003, 0x1021, 0x8ee20500, 
 0x24420001, 0xaee20500, 0x8ee20500, 0x21080, 
@@ -2934,7 +2934,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f830128, 0x21140, 0x621821, 0xaf830128, 
 0xaca00000, 0x8cc20018, 0x2443fffe, 0x2c620012, 
 0x10400008, 0x31080, 0x3c010001, 0x220821, 
-0x8c2250c0, 0x400008, 0x0, 0x24020001, 
+0x8c2250d0, 0x400008, 0x0, 0x24020001, 
 0xaee24e24, 0x3e00008, 0x0, 0x27bdffc8, 
 0xafbf0030, 0xafb5002c, 0xafb40028, 0xafb30024, 
 0xafb20020, 0xafb1001c, 0xafb00018, 0x8f830128, 
@@ -2943,7 +2943,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24140040, 0x8f8c0128, 0x8f820128, 0x24420020, 
 0xaf820128, 0x9182001b, 0x8f830128, 0x2443fffe, 
 0x2c620012, 0x1040029c, 0x31080, 0x3c010001, 
-0x220821, 0x8c225118, 0x400008, 0x0, 
+0x220821, 0x8c225128, 0x400008, 0x0, 
 0x8f420218, 0x30420100, 0x10400007, 0x0, 
 0x95830016, 0x95820018, 0x621823, 0x31402, 
 0x431021, 0xa5820016, 0x8d82001c, 0x3c038000, 
@@ -3044,7 +3044,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020007, 0xac820000, 
 0x24020001, 0xac820004, 0x1600000d, 0x0, 
-0x8f820120, 0x3c040001, 0x24845108, 0xafa00014, 
+0x8f820120, 0x3c040001, 0x24845118, 0xafa00014, 
 0xafa20010, 0x8d86001c, 0x8f870124, 0x3c050008, 
 0xc002407, 0x34a50001, 0x800405b, 0x0, 
 0x8ee2724c, 0x24420001, 0x304207ff, 0x11a00006, 
@@ -3079,7 +3079,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24420001, 0xaee24e30, 0x8ee24e30, 0x210c0, 
 0x24425038, 0x2e22021, 0x24020001, 0xac950000, 
 0xac820004, 0x5600000b, 0x24100001, 0x8ee2724c, 
-0x3c040001, 0x24845078, 0xafa00014, 0xafa20010, 
+0x3c040001, 0x24845088, 0xafa00014, 0xafa20010, 
 0x8ee6724c, 0x8f470280, 0x3c050009, 0xc002407, 
 0x34a5f008, 0x56000001, 0xaee00e1c, 0x8ee20188, 
 0x24420001, 0xaee20188, 0x8004054, 0x8ee20188, 
@@ -3105,7 +3105,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1021, 0x8ee24e30, 0x24420001, 0xaee24e30, 
 0x8ee24e30, 0x210c0, 0x24425038, 0x2e22021, 
 0x24020001, 0xac950000, 0xac820004, 0x1600000b, 
-0x0, 0x8ee2724c, 0x3c040001, 0x24845078, 
+0x0, 0x8ee2724c, 0x3c040001, 0x24845088, 
 0xafa00014, 0xafa20010, 0x8ee6724c, 0x8f470280, 
 0x3c050009, 0xc002407, 0x34a5f008, 0x8ee20174, 
 0x24420001, 0xaee20174, 0x800405b, 0x8ee20174, 
@@ -3117,16 +3117,16 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xc00249e, 0xafb00010, 0x2021, 0x24100001, 
 0x2402241f, 0xaf900210, 0xaf900200, 0xaf800204, 
 0xaf820214, 0x8f460248, 0x24030004, 0x3c020040, 
-0x3c010001, 0xac235474, 0x3c010001, 0xac235478, 
-0x3c010001, 0xac20552c, 0x3c010001, 0xac225470, 
-0x3c010001, 0xac235478, 0xc004fa4, 0x24050004, 
+0x3c010001, 0xac235484, 0x3c010001, 0xac235488, 
+0x3c010001, 0xac20553c, 0x3c010001, 0xac225480, 
+0x3c010001, 0xac235488, 0xc004fa8, 0x24050004, 
 0xc004784, 0x0, 0x8ee20000, 0x3c03feff, 
 0x3463fffd, 0x431024, 0xaee20000, 0x3c023c00, 
 0xaf82021c, 0x3c010001, 0x370821, 0xac3083ac, 
 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 
 0x27bdffe0, 0x3c050008, 0x34a50400, 0xafbf0018, 
 0xafa00010, 0xafa00014, 0x8f860200, 0x3c040001, 
-0x248451c0, 0xc002407, 0x3821, 0x8ee20280, 
+0x248451d0, 0xc002407, 0x3821, 0x8ee20280, 
 0x24420001, 0xaee20280, 0x8ee20280, 0x8f830200, 
 0x3c023f00, 0x621824, 0x8fbf0018, 0x3c020400, 
 0x3e00008, 0x27bd0020, 0x27bdffd8, 0xafbf0020, 
@@ -3138,16 +3138,16 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaee20218, 0x8ee20218, 0x80040ca, 0x3c03fdff, 
 0x8ee2021c, 0x24420001, 0xaee2021c, 0x8ee2021c, 
 0x3c03fdff, 0x3463ffff, 0x3c0808ff, 0x3508ffff, 
-0x8ee20000, 0x3c040001, 0x248451cc, 0x3c050008, 
+0x8ee20000, 0x3c040001, 0x248451dc, 0x3c050008, 
 0x2003021, 0x431024, 0xaee20000, 0x8f820220, 
 0x3821, 0x3c030300, 0x481024, 0x431025, 
 0xaf820220, 0xafa00010, 0xc002407, 0xafa00014, 
 0x800429a, 0x0, 0x2111024, 0x1040001f, 
 0x3c024000, 0x8f830224, 0x24021402, 0x1462000b, 
-0x3c03fdff, 0x3c040001, 0x248451d8, 0x3c050008, 
+0x3c03fdff, 0x3c040001, 0x248451e8, 0x3c050008, 
 0xafa00010, 0xafa00014, 0x8f860224, 0x34a5ffff, 
 0xc002407, 0x3821, 0x3c03fdff, 0x8ee20000, 
-0x3463ffff, 0x2002021, 0x431024, 0xc004cf0
+0x3463ffff, 0x2002021, 0x431024, 0xc004cf4
 0xaee20000, 0x8ee20220, 0x24420001, 0xaee20220, 
 0x8ee20220, 0x8f820220, 0x3c0308ff, 0x3463ffff, 
 0x431024, 0x8004299, 0x511025, 0x2021024, 
@@ -3218,7 +3218,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x431025, 0xaf820220, 0x8f8600e0, 0x8f8400e4, 
 0x10c4002a, 0x0, 0x8ee2007c, 0x24420001, 
 0xaee2007c, 0x8ee2007c, 0x24c2fff8, 0xaf8200e0, 
-0x3c020001, 0x8c4275b0, 0x3c030008, 0x8f8600e0, 
+0x3c020001, 0x8c4275c0, 0x3c030008, 0x8f8600e0, 
 0x431024, 0x1040001d, 0x0, 0x10c4001b, 
 0x240dfff8, 0x3c0a000a, 0x354af000, 0x3c0c0080, 
 0x24850008, 0x27622800, 0x50a20001, 0x27651800, 
@@ -3254,12 +3254,12 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x621023, 0x2c420002, 0x1440fffc, 0x0, 
 0x8f820220, 0x3c0308ff, 0x3463fffb, 0x431024, 
 0xaf820220, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 
-0x3e00008, 0x27bd0028, 0x3c020001, 0x8c425488, 
+0x3e00008, 0x27bd0028, 0x3c020001, 0x8c425498, 
 0x27bdffd8, 0x10400012, 0xafbf0020, 0x3c040001, 
-0x248451e4, 0x3c050008, 0x24020001, 0x3c010001, 
+0x248451f4, 0x3c050008, 0x24020001, 0x3c010001, 
 0x370821, 0xac2283ac, 0xafa00010, 0xafa00014, 
-0x8f860220, 0x34a50498, 0x3c010001, 0xac205488, 
-0x3c010001, 0xac22547c, 0xc002407, 0x3821, 
+0x8f860220, 0x34a50498, 0x3c010001, 0xac205498, 
+0x3c010001, 0xac22548c, 0xc002407, 0x3821, 
 0x8f420268, 0x3c037fff, 0x3463ffff, 0x431024, 
 0xaf420268, 0x8ee204d0, 0x8ee404d4, 0x2403fffe, 
 0x431024, 0x30840002, 0x1080011e, 0xaee204d0, 
@@ -3325,24 +3325,24 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x54a00006, 0x240b0001, 0x8f820054, 0x1221023, 
 0x2c420033, 0x1440ffa6, 0x0, 0x316300ff, 
 0x24020001, 0x54620003, 0xafa00010, 0x80043da, 
-0x0, 0x3c040001, 0x248451f0, 0xafa00014, 
+0x0, 0x3c040001, 0x24845200, 0xafa00014, 
 0x8f860120, 0x8f870124, 0x3c050009, 0xc002407, 
 0x34a5f011, 0x80043da, 0x0, 0x3c040001, 
-0x248451fc, 0xafa00014, 0x8f860120, 0x8f870124, 
+0x2484520c, 0xafa00014, 0x8f860120, 0x8f870124, 
 0x3c050009, 0xc002407, 0x34a5f010, 0x80043da, 
-0x0, 0x3c040001, 0x24845208, 0xafa00014, 
+0x0, 0x3c040001, 0x24845218, 0xafa00014, 
 0x8ee60608, 0x8f470228, 0x3c050009, 0xc002407, 
 0x34a5f00f, 0x8ee201ac, 0x24420001, 0xaee201ac, 
 0x8ee201ac, 0x8ee2015c, 0x24420001, 0xaee2015c, 
 0x8ee2015c, 0x8fbf0020, 0x3e00008, 0x27bd0028, 
-0x3c020001, 0x8c425488, 0x27bdffe0, 0x1440000d, 
-0xafbf0018, 0x3c040001, 0x24845214, 0x3c050008, 
+0x3c020001, 0x8c425498, 0x27bdffe0, 0x1440000d, 
+0xafbf0018, 0x3c040001, 0x24845224, 0x3c050008, 
 0xafa00010, 0xafa00014, 0x8f860220, 0x34a50499, 
-0x24020001, 0x3c010001, 0xac225488, 0xc002407, 
+0x24020001, 0x3c010001, 0xac225498, 0xc002407, 
 0x3821, 0x8ee204d0, 0x3c030001, 0x771821, 
 0x946383b2, 0x34420001, 0x10600007, 0xaee204d0, 
 0x8f820220, 0x3c0308ff, 0x3463ffff, 0x431024, 
-0x34420008, 0xaf820220, 0x2021, 0xc0050af
+0x34420008, 0xaf820220, 0x2021, 0xc0050b3
 0x24050004, 0xaf420268, 0x8fbf0018, 0x3e00008, 
 0x27bd0020, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x0, 
@@ -3359,7 +3359,7 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x3c120001, 
-0x26521200, 0x3c140001, 0x8e945400, 0x3c100001, 
+0x26521200, 0x3c140001, 0x8e945410, 0x3c100001, 
 0x26101120, 0x3c15c000, 0x36b50060, 0x8e8a0000, 
 0x8eb30000, 0x26a400b, 0x248000a, 0x200f821, 
 0x0, 0xd, 0x0, 0x0, 
@@ -3420,100 +3420,100 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1062000c, 0x43102b, 0x14400006, 0x3c026000, 
 0x3c024000, 0x10620008, 0x24020800, 0x8004539, 
 0x0, 0x10620004, 0x24020800, 0x8004539, 
-0x0, 0x24020700, 0x3c010001, 0xac22548c, 
+0x0, 0x24020700, 0x3c010001, 0xac22549c, 
 0x3e00008, 0x0, 0x27bdffd0, 0xafbf0028, 
-0x3c010001, 0xc004ccd, 0xac205474, 0x24040001, 
-0x2821, 0x27a60020, 0x34028000, 0xc0048ea
+0x3c010001, 0xc004cd1, 0xac205484, 0x24040001, 
+0x2821, 0x27a60020, 0x34028000, 0xc0048ee
 0xa7a20020, 0x8f830054, 0x8f820054, 0x800454b, 
 0x24630064, 0x8f820054, 0x621023, 0x2c420065, 
-0x1440fffc, 0x24040001, 0x24050001, 0xc0048a8
+0x1440fffc, 0x24040001, 0x24050001, 0xc0048ac
 0x27a60020, 0x8f830054, 0x8f820054, 0x8004557, 
 0x24630064, 0x8f820054, 0x621023, 0x2c420065, 
-0x1440fffc, 0x24040001, 0x24050001, 0xc0048a8
+0x1440fffc, 0x24040001, 0x24050001, 0xc0048ac
 0x27a60020, 0x8f830054, 0x8f820054, 0x8004563, 
 0x24630064, 0x8f820054, 0x621023, 0x2c420065, 
-0x1440fffc, 0x24040001, 0x24050002, 0xc0048a8
+0x1440fffc, 0x24040001, 0x24050002, 0xc0048ac
 0x27a60018, 0x8f830054, 0x8f820054, 0x800456f, 
 0x24630064, 0x8f820054, 0x621023, 0x2c420065, 
-0x1440fffc, 0x24040001, 0x24050003, 0xc0048a8
+0x1440fffc, 0x24040001, 0x24050003, 0xc0048ac
 0x27a6001a, 0x97a20020, 0x10400027, 0x24030001, 
-0x3c020001, 0x8c425474, 0x97a30018, 0x34420001, 
-0x3c010001, 0xac225474, 0x24020015, 0x1462000d, 
+0x3c020001, 0x8c425484, 0x97a30018, 0x34420001, 
+0x3c010001, 0xac225484, 0x24020015, 0x1462000d, 
 0x0, 0x97a2001a, 0x3843f423, 0x2c630001, 
 0x3842f430, 0x2c420001, 0x621825, 0x10600005, 
-0x24020003, 0x3c010001, 0xac225540, 0x80045a7, 
+0x24020003, 0x3c010001, 0xac225550, 0x80045a7, 
 0x3c08fff0, 0x97a30018, 0x24027810, 0x1462000a, 
 0x24020002, 0x97a3001a, 0x24020001, 0x14620006, 
-0x24020002, 0x24020004, 0x3c010001, 0xac225540, 
-0x80045a7, 0x3c08fff0, 0x3c010001, 0xac225540, 
-0x80045a7, 0x3c08fff0, 0x3c020001, 0x8c425474, 
-0x3c010001, 0xac235540, 0x34420004, 0x3c010001, 
-0xac225474, 0x3c08fff0, 0x3508bdc0, 0x8f830054, 
-0x97a60018, 0x3c070001, 0x8ce75540, 0x3c040001, 
-0x24845280, 0x24020001, 0x3c010001, 0xac22547c, 
-0xafa60010, 0x3c060001, 0x8cc65474, 0x97a2001a, 
-0x3c05000d, 0x34a50100, 0x3c010001, 0xac205478, 
-0x681821, 0x3c010001, 0xac235538, 0xc002407, 
+0x24020002, 0x24020004, 0x3c010001, 0xac225550, 
+0x80045a7, 0x3c08fff0, 0x3c010001, 0xac225550, 
+0x80045a7, 0x3c08fff0, 0x3c020001, 0x8c425484, 
+0x3c010001, 0xac235550, 0x34420004, 0x3c010001, 
+0xac225484, 0x3c08fff0, 0x3508bdc0, 0x8f830054, 
+0x97a60018, 0x3c070001, 0x8ce75550, 0x3c040001, 
+0x24845290, 0x24020001, 0x3c010001, 0xac22548c, 
+0xafa60010, 0x3c060001, 0x8cc65484, 0x97a2001a, 
+0x3c05000d, 0x34a50100, 0x3c010001, 0xac205488, 
+0x681821, 0x3c010001, 0xac235548, 0xc002407, 
 0xafa20014, 0x8fbf0028, 0x3e00008, 0x27bd0030, 
-0x27bdffe8, 0x24070004, 0x3c040001, 0x8c845478, 
+0x27bdffe8, 0x24070004, 0x3c040001, 0x8c845488, 
 0x3021, 0x24020001, 0x1482000a, 0xafbf0010, 
-0x3c020001, 0x8c4275bc, 0x3c050004, 0x30428000, 
+0x3c020001, 0x8c4275cc, 0x3c050004, 0x30428000, 
 0x1040000c, 0x34a593e0, 0x3c05000f, 0x80045da, 
-0x34a54240, 0x3c020001, 0x8c4275bc, 0x3c05000f, 
+0x34a54240, 0x3c020001, 0x8c4275cc, 0x3c05000f, 
 0x30428000, 0x10400003, 0x34a54240, 0x3c05001e, 
-0x34a58480, 0x3c020001, 0x8c425538, 0x8f830054, 
+0x34a58480, 0x3c020001, 0x8c425548, 0x8f830054, 
 0x451021, 0x431023, 0x45102b, 0x1440002e, 
-0x0, 0x3c020001, 0x8c425480, 0x1440002a, 
+0x0, 0x3c020001, 0x8c425490, 0x1440002a, 
 0x2cc20001, 0x7182b, 0x431024, 0x1040001d, 
-0x0, 0x3c090001, 0x8d295474, 0x240b0001, 
-0x3c054000, 0x3c080001, 0x250875bc, 0x250afffc, 
+0x0, 0x3c090001, 0x8d295484, 0x240b0001, 
+0x3c054000, 0x3c080001, 0x250875cc, 0x250afffc, 
 0x42042, 0x14800002, 0x24e7ffff, 0x24040008, 
 0x891024, 0x5040000b, 0x2cc20001, 0x148b0004, 
 0x0, 0x8d020000, 0x80045ff, 0x451024, 
 0x8d420000, 0x451024, 0x54400001, 0x24060001, 
 0x2cc20001, 0x7182b, 0x431024, 0x5440ffed, 
-0x42042, 0x3c010001, 0x10c00024, 0xac245478, 
-0x8f830054, 0x24020001, 0x3c010001, 0xac22547c, 
-0x3c010001, 0xac235538, 0x3c020001, 0x8c42547c, 
-0x10400006, 0x24020001, 0x3c010001, 0xac20547c, 
+0x42042, 0x3c010001, 0x10c00024, 0xac245488, 
+0x8f830054, 0x24020001, 0x3c010001, 0xac22548c, 
+0x3c010001, 0xac235548, 0x3c020001, 0x8c42548c, 
+0x10400006, 0x24020001, 0x3c010001, 0xac20548c, 
 0x3c010001, 0x370821, 0xac2283ac, 0x3c030001, 
 0x771821, 0x8c6383ac, 0x24020008, 0x10620005, 
 0x24020001, 0xc00462f, 0x0, 0x800462c, 
-0x0, 0x3c030001, 0x8c635478, 0x10620007, 
-0x2402000e, 0x3c030001, 0x8c637550, 0x10620003, 
-0x0, 0xc004cf0, 0x8f840220, 0x8fbf0010, 
+0x0, 0x3c030001, 0x8c635488, 0x10620007, 
+0x2402000e, 0x3c030001, 0x8c637560, 0x10620003, 
+0x0, 0xc004cf4, 0x8f840220, 0x8fbf0010, 
 0x3e00008, 0x27bd0018, 0x27bdffe0, 0x3c02fdff, 
-0xafbf0018, 0x8ee30000, 0x3c050001, 0x8ca55478, 
-0x3c040001, 0x8c845498, 0x3442ffff, 0x621824, 
+0xafbf0018, 0x8ee30000, 0x3c050001, 0x8ca55488, 
+0x3c040001, 0x8c8454a8, 0x3442ffff, 0x621824, 
 0x14a40008, 0xaee30000, 0x3c030001, 0x771821, 
-0x8c6383ac, 0x3c020001, 0x8c42549c, 0x10620008, 
+0x8c6383ac, 0x3c020001, 0x8c4254ac, 0x10620008, 
 0x0, 0x3c020001, 0x571021, 0x8c4283ac, 
-0x3c010001, 0xac255498, 0x3c010001, 0xac22549c, 
-0x3c030001, 0x8c635478, 0x24020002, 0x10620131, 
+0x3c010001, 0xac2554a8, 0x3c010001, 0xac2254ac, 
+0x3c030001, 0x8c635488, 0x24020002, 0x10620131, 
 0x2c620003, 0x10400005, 0x24020001, 0x10620008, 
 0x0, 0x800477e, 0x0, 0x24020004, 
 0x10620079, 0x24020001, 0x800477f, 0x0, 
 0x3c020001, 0x571021, 0x8c4283ac, 0x2443ffff, 
 0x2c620008, 0x10400122, 0x31080, 0x3c010001, 
-0x220821, 0x8c225298, 0x400008, 0x0, 
-0xc004784, 0x0, 0x3c020001, 0x8c425484, 
-0x3c010001, 0xac205410, 0x104000bd, 0x24020002, 
+0x220821, 0x8c2252a8, 0x400008, 0x0, 
+0xc004784, 0x0, 0x3c020001, 0x8c425494, 
+0x3c010001, 0xac205420, 0x104000bd, 0x24020002, 
 0x3c010001, 0x370821, 0xac2283ac, 0x3c010001, 
-0x8004781, 0xac205484, 0xc00492b, 0x0, 
-0x3c030001, 0x8c6354a0, 0x80046f0, 0x24020011, 
-0x3c050001, 0x8ca55478, 0x3c060001, 0x8cc675bc, 
-0xc004fa4, 0x2021, 0x24020005, 0x3c010001, 
-0xac205484, 0x3c010001, 0x370821, 0x8004781, 
-0xac2283ac, 0x3c040001, 0x2484528c, 0x3c05000f, 
+0x8004781, 0xac205494, 0xc00492f, 0x0, 
+0x3c030001, 0x8c6354b0, 0x80046f0, 0x24020011, 
+0x3c050001, 0x8ca55488, 0x3c060001, 0x8cc675cc, 
+0xc004fa8, 0x2021, 0x24020005, 0x3c010001, 
+0xac205494, 0x3c010001, 0x370821, 0x8004781, 
+0xac2283ac, 0x3c040001, 0x2484529c, 0x3c05000f, 
 0x34a50100, 0x3021, 0x3821, 0xafa00010, 
 0xc002407, 0xafa00014, 0x8004781, 0x0, 
 0x8f820220, 0x3c03f700, 0x431025, 0x8004719, 
 0xaf820220, 0x8f820220, 0x3c030004, 0x431024, 
 0x14400090, 0x24020007, 0x8f830054, 0x3c020001, 
-0x8c425530, 0x2463d8f0, 0x431023, 0x2c422710, 
+0x8c425540, 0x2463d8f0, 0x431023, 0x2c422710, 
 0x144000df, 0x24020001, 0x800477f, 0x0, 
-0x3c050001, 0x8ca55478, 0xc0050af, 0x2021, 
-0xc00517a, 0x2021, 0x3c030001, 0x8c6375b4, 
+0x3c050001, 0x8ca55488, 0xc0050b3, 0x2021, 
+0xc00517e, 0x2021, 0x3c030001, 0x8c6375c4, 
 0x46100d1, 0x24020001, 0x3c020008, 0x621024, 
 0x10400006, 0x0, 0x8f820214, 0x3c03ffff, 
 0x431024, 0x80046bc, 0x3442251f, 0x8f820214, 
@@ -3524,69 +3524,69 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x3c010001, 0x370821, 0xc0043e1, 0xac2283ac, 
 0x8004781, 0x0, 0x3c020001, 0x571021, 
 0x8c4283ac, 0x2443ffff, 0x2c620008, 0x104000ac, 
-0x31080, 0x3c010001, 0x220821, 0x8c2252b8, 
+0x31080, 0x3c010001, 0x220821, 0x8c2252c8, 
 0x400008, 0x0, 0xc00429f, 0x0, 
-0x3c010001, 0xac20547c, 0xaf800204, 0x3c010001, 
-0xc004784, 0xac2075a0, 0x24020001, 0x3c010001, 
-0xac225490, 0x24020002, 0x3c010001, 0x370821, 
+0x3c010001, 0xac20548c, 0xaf800204, 0x3c010001, 
+0xc004784, 0xac2075b0, 0x24020001, 0x3c010001, 
+0xac2254a0, 0x24020002, 0x3c010001, 0x370821, 
 0x8004781, 0xac2283ac, 0xc004801, 0x0, 
-0x3c030001, 0x8c635490, 0x24020009, 0x14620090, 
+0x3c030001, 0x8c6354a0, 0x24020009, 0x14620090, 
 0x24020003, 0x3c010001, 0x370821, 0x8004781, 
-0xac2283ac, 0x3c020001, 0x8c4275b8, 0x30424000, 
+0xac2283ac, 0x3c020001, 0x8c4275c8, 0x30424000, 
 0x10400005, 0x0, 0x8f820044, 0x3c03ffff, 
 0x8004701, 0x34637fff, 0x8f820044, 0x2403ff7f, 
 0x431024, 0xaf820044, 0x8f830054, 0x800471b, 
-0x24020004, 0x8f830054, 0x3c020001, 0x8c425530, 
+0x24020004, 0x8f830054, 0x3c020001, 0x8c425540, 
 0x2463d8f0, 0x431023, 0x2c422710, 0x14400074, 
 0x24020005, 0x3c010001, 0x370821, 0x8004781, 
 0xac2283ac, 0x8f820220, 0x3c03f700, 0x431025, 
-0xaf820220, 0xaf800204, 0x3c010001, 0xac2075a0, 
+0xaf820220, 0xaf800204, 0x3c010001, 0xac2075b0, 
 0x8f830054, 0x24020006, 0x3c010001, 0x370821, 
-0xac2283ac, 0x3c010001, 0x8004781, 0xac235530, 
-0x8f830054, 0x3c020001, 0x8c425530, 0x2463fff6, 
+0xac2283ac, 0x3c010001, 0x8004781, 0xac235540, 
+0x8f830054, 0x3c020001, 0x8c425540, 0x2463fff6, 
 0x431023, 0x2c42000a, 0x14400059, 0x0, 
 0x24020007, 0x3c010001, 0x370821, 0x8004781, 
 0xac2283ac, 0x8f820220, 0x3c04f700, 0x441025, 
 0xaf820220, 0x8f820220, 0x3c030300, 0x431024, 
 0x14400005, 0x1821, 0x8f820220, 0x24030001, 
 0x441025, 0xaf820220, 0x10600043, 0x24020001, 
-0x8f820214, 0x3c03ffff, 0x3c040001, 0x8c845528, 
+0x8f820214, 0x3c03ffff, 0x3c040001, 0x8c845538, 
 0x431024, 0x3442251f, 0xaf820214, 0x24020008, 
 0x3c010001, 0x370821, 0x1080000b, 0xac2283ac, 
-0x3c020001, 0x8c425504, 0x14400007, 0x24020001, 
-0x3c010001, 0xac227550, 0xc004cf0, 0x8f840220, 
+0x3c020001, 0x8c425514, 0x14400007, 0x24020001, 
+0x3c010001, 0xac227560, 0xc004cf4, 0x8f840220, 
 0x800476e, 0x0, 0x8f820220, 0x3c030008, 
 0x431024, 0x14400017, 0x2402000e, 0x3c010001, 
-0xac227550, 0x8ee20000, 0x2021, 0x3c030200, 
-0x431025, 0xc00517a, 0xaee20000, 0x8f820220, 
+0xac227560, 0x8ee20000, 0x2021, 0x3c030200, 
+0x431025, 0xc00517e, 0xaee20000, 0x8f820220, 
 0x2403fffb, 0x431024, 0xaf820220, 0x8f820220, 
 0x34420002, 0xc0043e1, 0xaf820220, 0x3c050001, 
-0x8ca55478, 0xc0050af, 0x2021, 0x8004781, 
-0x0, 0x3c020001, 0x8c425504, 0x10400010, 
-0x0, 0x3c020001, 0x8c425500, 0x2442ffff, 
-0x3c010001, 0xac225500, 0x14400009, 0x24020002, 
-0x3c010001, 0xac205504, 0x3c010001, 0x8004781, 
-0xac225500, 0x24020001, 0x3c010001, 0xac22547c, 
+0x8ca55488, 0xc0050b3, 0x2021, 0x8004781, 
+0x0, 0x3c020001, 0x8c425514, 0x10400010, 
+0x0, 0x3c020001, 0x8c425510, 0x2442ffff, 
+0x3c010001, 0xac225510, 0x14400009, 0x24020002, 
+0x3c010001, 0xac205514, 0x3c010001, 0x8004781, 
+0xac225510, 0x24020001, 0x3c010001, 0xac22548c, 
 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x8f820200, 
 0x8f820220, 0x8f820220, 0x34420004, 0xaf820220, 
-0x8f820200, 0x3c060001, 0x8cc65478, 0x34420004, 
+0x8f820200, 0x3c060001, 0x8cc65488, 0x34420004, 
 0xaf820200, 0x24020002, 0x10c2003a, 0x2cc20003, 
 0x10400005, 0x24020001, 0x10c20008, 0x0, 
 0x80047ca, 0x0, 0x24020004, 0x10c20013, 
 0x24020001, 0x80047ca, 0x0, 0x3c030001, 
-0x8c635468, 0x3c020001, 0x8c425470, 0x3c040001, 
-0x8c84548c, 0x3c050001, 0x8ca5546c, 0xaf860200, 
+0x8c635478, 0x3c020001, 0x8c425480, 0x3c040001, 
+0x8c84549c, 0x3c050001, 0x8ca5547c, 0xaf860200, 
 0xaf860220, 0x34630022, 0x441025, 0x451025, 
 0x34420002, 0x80047c9, 0xaf830200, 0x3c030001, 
-0x8c635528, 0xaf820200, 0x10600009, 0xaf820220, 
-0x3c020001, 0x8c425504, 0x14400005, 0x3c033f00, 
-0x3c020001, 0x8c425460, 0x80047bd, 0x346300e0, 
-0x3c020001, 0x8c425460, 0x3c033f00, 0x346300e2, 
-0x431025, 0xaf820200, 0x3c030001, 0x8c635464, 
-0x3c04f700, 0x3c020001, 0x8c425470, 0x3c050001, 
-0x8ca5548c, 0x641825, 0x431025, 0x451025, 
+0x8c635538, 0xaf820200, 0x10600009, 0xaf820220, 
+0x3c020001, 0x8c425514, 0x14400005, 0x3c033f00, 
+0x3c020001, 0x8c425470, 0x80047bd, 0x346300e0, 
+0x3c020001, 0x8c425470, 0x3c033f00, 0x346300e2, 
+0x431025, 0xaf820200, 0x3c030001, 0x8c635474, 
+0x3c04f700, 0x3c020001, 0x8c425480, 0x3c050001, 
+0x8ca5549c, 0x641825, 0x431025, 0x451025, 
 0xaf820220, 0x3e00008, 0x0, 0x8f820220, 
-0x3c030001, 0x8c635478, 0x34420004, 0xaf820220, 
+0x3c030001, 0x8c635488, 0x34420004, 0xaf820220, 
 0x24020001, 0x1062000f, 0x0, 0x8f830054, 
 0x8f820054, 0x24630002, 0x621023, 0x2c420003, 
 0x10400011, 0x0, 0x8f820054, 0x621023, 
@@ -3599,19 +3599,19 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2c420033, 0x10400004, 0x0, 0x8f8200e0, 
 0x1082fff9, 0x0, 0x8f820220, 0x2403fffd, 
 0x431024, 0xaf820220, 0x3e00008, 0x0, 
-0x3c030001, 0x8c635490, 0x3c020001, 0x8c425494, 
-0x50620004, 0x2463ffff, 0x3c010001, 0xac235494, 
-0x2463ffff, 0x2c620009, 0x10400099, 0x31080, 
-0x3c010001, 0x220821, 0x8c2252d8, 0x400008, 
+0x3c030001, 0x8c6354a0, 0x3c020001, 0x8c4254a4, 
+0x50620004, 0x2463ffff, 0x3c010001, 0xac2354a4, 
+0x2463ffff, 0x2c620009, 0x1040009d, 0x31080, 
+0x3c010001, 0x220821, 0x8c2252e8, 0x400008, 
 0x0, 0x8f820044, 0x34428080, 0xaf820044, 
-0x8f830054, 0x8004896, 0x24020002, 0x8f830054, 
-0x3c020001, 0x8c425534, 0x2463d8f0, 0x431023, 
-0x2c422710, 0x14400086, 0x24020003, 0x80048a3
+0x8f830054, 0x800489a, 0x24020002, 0x8f830054, 
+0x3c020001, 0x8c425544, 0x2463d8f0, 0x431023, 
+0x2c422710, 0x1440008a, 0x24020003, 0x80048a7
 0x0, 0x8f820044, 0x3c03ffff, 0x34637fff, 
-0x431024, 0xaf820044, 0x8f830054, 0x8004896
-0x24020004, 0x8f830054, 0x3c020001, 0x8c425534, 
-0x2463fff6, 0x431023, 0x2c42000a, 0x14400074
-0x24020005, 0x80048a3, 0x0, 0x8f820220, 
+0x431024, 0xaf820044, 0x8f830054, 0x800489a
+0x24020004, 0x8f830054, 0x3c020001, 0x8c425544, 
+0x2463fff6, 0x431023, 0x2c42000a, 0x14400078
+0x24020005, 0x80048a7, 0x0, 0x8f820220, 
 0x3c03f700, 0x431025, 0xaf820220, 0x8f820220, 
 0x2403fffb, 0x431024, 0xaf820220, 0x8f820220, 
 0x34420002, 0xaf820220, 0x3c023f00, 0x344200e0, 
@@ -3629,529 +3629,530 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaf820220, 0xaf830200, 0x8f8400f0, 0x276217f8, 
 0x14820002, 0x24850008, 0x27651000, 0x8f8200f4, 
 0x10a20007, 0x3c038000, 0x34630040, 0x3c020001, 
-0x24425420, 0xac820000, 0xac830004, 0xaf8500f0, 
-0x8f830054, 0x8004896, 0x24020006, 0x8f830054, 
-0x3c020001, 0x8c425534, 0x2463fff6, 0x431023, 
-0x2c42000a, 0x1440001e, 0x24020007, 0x80048a3
+0x24425430, 0xac820000, 0xac830004, 0xaf8500f0, 
+0x8f830054, 0x800489a, 0x24020006, 0x8f830054, 
+0x3c020001, 0x8c425544, 0x2463fff6, 0x431023, 
+0x2c42000a, 0x14400022, 0x24020007, 0x80048a7
 0x0, 0x8f8200e0, 0xaf8200e4, 0x8f8200e0, 
 0xaf8200e8, 0x8f820220, 0x34420004, 0xaf820220, 
+0x8f820220, 0x2403fff7, 0x431024, 0xaf820220, 
 0x8f820044, 0x34428080, 0xaf820044, 0x8f830054, 
-0x24020008, 0x3c010001, 0xac225490, 0x3c010001, 
-0x80048a5, 0xac235534, 0x8f830054, 0x3c020001, 
-0x8c425534, 0x2463d8f0, 0x431023, 0x2c422710, 
-0x14400003, 0x24020009, 0x3c010001, 0xac225490, 
+0x24020008, 0x3c010001, 0xac2254a0, 0x3c010001, 
+0x80048a9, 0xac235544, 0x8f830054, 0x3c020001, 
+0x8c425544, 0x2463d8f0, 0x431023, 0x2c422710, 
+0x14400003, 0x24020009, 0x3c010001, 0xac2254a0, 
 0x3e00008, 0x0, 0x0, 0x27bdffd8, 
 0xafb20018, 0x809021, 0xafb3001c, 0xa09821, 
 0xafb10014, 0xc08821, 0xafb00010, 0x8021, 
-0xafbf0020, 0xa6200000, 0xc004ca7, 0x24040001, 
+0xafbf0020, 0xa6200000, 0xc004cab, 0x24040001, 
 0x26100001, 0x2e020020, 0x1440fffb, 0x0, 
-0xc004ca7, 0x2021, 0xc004ca7, 0x24040001, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x2021, 0xc004cab, 0x24040001, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x24100010, 0x2501024, 0x10400002, 0x2021, 
-0x24040001, 0xc004ca7, 0x108042, 0x1600fffa, 
+0x24040001, 0xc004cab, 0x108042, 0x1600fffa, 
 0x2501024, 0x24100010, 0x2701024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fffa, 0x2701024, 0xc004ccd, 0x34108000, 
-0xc004ccd, 0x0, 0xc004c87, 0x0, 
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fffa, 0x2701024, 0xc004cd1, 0x34108000, 
+0xc004cd1, 0x0, 0xc004c8b, 0x0, 
 0x50400005, 0x108042, 0x96220000, 0x501025, 
 0xa6220000, 0x108042, 0x1600fff7, 0x0, 
-0xc004ccd, 0x0, 0x8fbf0020, 0x8fb3001c, 
+0xc004cd1, 0x0, 0x8fbf0020, 0x8fb3001c, 
 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 
 0x27bd0028, 0x27bdffd8, 0xafb10014, 0x808821, 
 0xafb20018, 0xa09021, 0xafb3001c, 0xc09821, 
-0xafb00010, 0x8021, 0xafbf0020, 0xc004ca7
+0xafb00010, 0x8021, 0xafbf0020, 0xc004cab
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc004ca7, 0x2021, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0xc004ca7
+0x0, 0xc004cab, 0x2021, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0xc004cab
 0x24040001, 0x24100010, 0x2301024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
 0x1600fffa, 0x2301024, 0x24100010, 0x2501024, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
-0x108042, 0x1600fffa, 0x2501024, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0x34108000, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
+0x108042, 0x1600fffa, 0x2501024, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0x34108000, 
 0x96620000, 0x501024, 0x10400002, 0x2021, 
-0x24040001, 0xc004ca7, 0x108042, 0x1600fff8, 
-0x0, 0xc004ccd, 0x0, 0x8fbf0020, 
+0x24040001, 0xc004cab, 0x108042, 0x1600fff8, 
+0x0, 0xc004cd1, 0x0, 0x8fbf0020, 
 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 
-0x3e00008, 0x27bd0028, 0x3c030001, 0x8c6354a0, 
-0x3c020001, 0x8c4254e4, 0x27bdffd8, 0xafbf0020, 
+0x3e00008, 0x27bd0028, 0x3c030001, 0x8c6354b0, 
+0x3c020001, 0x8c4254f4, 0x27bdffd8, 0xafbf0020, 
 0xafb1001c, 0x10620003, 0xafb00018, 0x3c010001, 
-0xac2354e4, 0x2463ffff, 0x2c620013, 0x10400349, 
-0x31080, 0x3c010001, 0x220821, 0x8c225300, 
-0x400008, 0x0, 0xc004ccd, 0x8021, 
-0x34028000, 0xa7a20010, 0x27b10010, 0xc004ca7
+0xac2354f4, 0x2463ffff, 0x2c620013, 0x10400349, 
+0x31080, 0x3c010001, 0x220821, 0x8c225310, 
+0x400008, 0x0, 0xc004cd1, 0x8021, 
+0x34028000, 0xa7a20010, 0x27b10010, 0xc004cab
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc004ca7, 0x2021, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0xc004ca7
+0x0, 0xc004cab, 0x2021, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0xc004cab
 0x24040001, 0x24100010, 0x32020001, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fffa, 0x32020001, 0x24100010, 0xc004ca7
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fffa, 0x32020001, 0x24100010, 0xc004cab
 0x2021, 0x108042, 0x1600fffc, 0x0, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fff8, 0x0, 0xc004ccd, 0x0, 
-0x8004c80, 0x24020002, 0x27b10010, 0xa7a00010, 
-0x8021, 0xc004ca7, 0x24040001, 0x26100001, 
-0x2e020020, 0x1440fffb, 0x0, 0xc004ca7
-0x2021, 0xc004ca7, 0x24040001, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0x24100010, 
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fff8, 0x0, 0xc004cd1, 0x0, 
+0x8004c84, 0x24020002, 0x27b10010, 0xa7a00010, 
+0x8021, 0xc004cab, 0x24040001, 0x26100001, 
+0x2e020020, 0x1440fffb, 0x0, 0xc004cab
+0x2021, 0xc004cab, 0x24040001, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0x24100010, 
 0x32020001, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020001, 
-0x24100010, 0xc004ca7, 0x2021, 0x108042, 
-0x1600fffc, 0x0, 0xc004ccd, 0x34108000, 
-0xc004ccd, 0x0, 0xc004c87, 0x0, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020001, 
+0x24100010, 0xc004cab, 0x2021, 0x108042, 
+0x1600fffc, 0x0, 0xc004cd1, 0x34108000, 
+0xc004cd1, 0x0, 0xc004c8b, 0x0, 
 0x50400005, 0x108042, 0x96220000, 0x501025, 
 0xa6220000, 0x108042, 0x1600fff7, 0x0, 
-0xc004ccd, 0x0, 0x97a20010, 0x30428000, 
-0x144002dc, 0x24020003, 0x8004c80, 0x0, 
+0xc004cd1, 0x0, 0x97a20010, 0x30428000, 
+0x144002dc, 0x24020003, 0x8004c84, 0x0, 
 0x24021200, 0xa7a20010, 0x27b10010, 0x8021, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
-0xc004ca7, 0x2021, 0x108042, 0x1600fffc, 
-0x0, 0xc004ca7, 0x24040001, 0xc004ca7
+0xc004cab, 0x2021, 0x108042, 0x1600fffc, 
+0x0, 0xc004cab, 0x24040001, 0xc004cab
 0x2021, 0x34108000, 0x96220000, 0x501024, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
-0x108042, 0x1600fff8, 0x0, 0xc004ccd
-0x0, 0x8f830054, 0x8004c72, 0x24020004, 
-0x8f830054, 0x3c020001, 0x8c42553c, 0x2463ff9c, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
+0x108042, 0x1600fff8, 0x0, 0xc004cd1
+0x0, 0x8f830054, 0x8004c76, 0x24020004, 
+0x8f830054, 0x3c020001, 0x8c42554c, 0x2463ff9c, 
 0x431023, 0x2c420064, 0x1440029e, 0x24020002, 
-0x3c030001, 0x8c635540, 0x10620297, 0x2c620003, 
+0x3c030001, 0x8c635550, 0x10620297, 0x2c620003, 
 0x14400296, 0x24020011, 0x24020003, 0x10620005, 
-0x24020004, 0x10620291, 0x2402000f, 0x8004c80
-0x24020011, 0x8004c80, 0x24020005, 0x24020014, 
-0xa7a20010, 0x27b10010, 0x8021, 0xc004ca7
+0x24020004, 0x10620291, 0x2402000f, 0x8004c84
+0x24020011, 0x8004c84, 0x24020005, 0x24020014, 
+0xa7a20010, 0x27b10010, 0x8021, 0xc004cab
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc004ca7, 0x2021, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0xc004ca7
+0x0, 0xc004cab, 0x2021, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0xc004cab
 0x24040001, 0x24100010, 0x32020001, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
 0x1600fffa, 0x32020001, 0x24100010, 0x32020012, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
-0x108042, 0x1600fffa, 0x32020012, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0x34108000, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
+0x108042, 0x1600fffa, 0x32020012, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0x34108000, 
 0x96220000, 0x501024, 0x10400002, 0x2021, 
-0x24040001, 0xc004ca7, 0x108042, 0x1600fff8, 
-0x0, 0xc004ccd, 0x0, 0x8f830054, 
-0x8004c72, 0x24020006, 0x8f830054, 0x3c020001, 
-0x8c42553c, 0x2463ff9c, 0x431023, 0x2c420064, 
-0x14400250, 0x24020007, 0x8004c80, 0x0, 
+0x24040001, 0xc004cab, 0x108042, 0x1600fff8, 
+0x0, 0xc004cd1, 0x0, 0x8f830054, 
+0x8004c76, 0x24020006, 0x8f830054, 0x3c020001, 
+0x8c42554c, 0x2463ff9c, 0x431023, 0x2c420064, 
+0x14400250, 0x24020007, 0x8004c84, 0x0, 
 0x24020006, 0xa7a20010, 0x27b10010, 0x8021, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020013, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020013, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020013, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fff8, 0x0, 0xc004ccd, 0x0, 
-0x8f830054, 0x8004c72, 0x24020008, 0x8f830054, 
-0x3c020001, 0x8c42553c, 0x2463ff9c, 0x431023, 
-0x2c420064, 0x1440020f, 0x24020009, 0x8004c80
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fff8, 0x0, 0xc004cd1, 0x0, 
+0x8f830054, 0x8004c76, 0x24020008, 0x8f830054, 
+0x3c020001, 0x8c42554c, 0x2463ff9c, 0x431023, 
+0x2c420064, 0x1440020f, 0x24020009, 0x8004c84
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x24040001, 
-0xc004ca7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x24040001, 
+0xc004cab, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc004ccd, 0x34108000, 0xc004ccd, 0x0, 
-0xc004c87, 0x0, 0x50400005, 0x108042, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020018, 
+0xc004cd1, 0x34108000, 0xc004cd1, 0x0, 
+0xc004c8b, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc004ccd, 0x8021, 
+0x1600fff7, 0x0, 0xc004cd1, 0x8021, 
 0x97a20010, 0x27b10010, 0x34420001, 0xa7a20010, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020018, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fff8, 0x0, 0xc004ccd, 0x0, 
-0x8f830054, 0x8004c72, 0x2402000a, 0x8f830054, 
-0x3c020001, 0x8c42553c, 0x2463ff9c, 0x431023, 
-0x2c420064, 0x1440019b, 0x2402000b, 0x8004c80
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fff8, 0x0, 0xc004cd1, 0x0, 
+0x8f830054, 0x8004c76, 0x2402000a, 0x8f830054, 
+0x3c020001, 0x8c42554c, 0x2463ff9c, 0x431023, 
+0x2c420064, 0x1440019b, 0x2402000b, 0x8004c84
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x24040001, 
-0xc004ca7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x24040001, 
+0xc004cab, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020017, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020017, 
-0xc004ccd, 0x34108000, 0xc004ccd, 0x0, 
-0xc004c87, 0x0, 0x50400005, 0x108042, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020017, 
+0xc004cd1, 0x34108000, 0xc004cd1, 0x0, 
+0xc004c8b, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc004ccd, 0x8021, 
+0x1600fff7, 0x0, 0xc004cd1, 0x8021, 
 0x97a20010, 0x27b10010, 0x34420700, 0xa7a20010, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020017, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020017, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020017, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fff8, 0x0, 0xc004ccd, 0x0, 
-0x8f830054, 0x8004c72, 0x2402000c, 0x8f830054, 
-0x3c020001, 0x8c42553c, 0x2463ff9c, 0x431023, 
-0x2c420064, 0x14400127, 0x24020012, 0x8004c80
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fff8, 0x0, 0xc004cd1, 0x0, 
+0x8f830054, 0x8004c76, 0x2402000c, 0x8f830054, 
+0x3c020001, 0x8c42554c, 0x2463ff9c, 0x431023, 
+0x2c420064, 0x14400127, 0x24020012, 0x8004c84
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x24040001, 
-0xc004ca7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x24040001, 
+0xc004cab, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020014, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020014, 
-0xc004ccd, 0x34108000, 0xc004ccd, 0x0, 
-0xc004c87, 0x0, 0x50400005, 0x108042, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020014, 
+0xc004cd1, 0x34108000, 0xc004cd1, 0x0, 
+0xc004c8b, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc004ccd, 0x8021, 
+0x1600fff7, 0x0, 0xc004cd1, 0x8021, 
 0x97a20010, 0x27b10010, 0x34420010, 0xa7a20010, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020014, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020014, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020014, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fff8, 0x0, 0xc004ccd, 0x0, 
-0x8f830054, 0x8004c72, 0x24020013, 0x8f830054, 
-0x3c020001, 0x8c42553c, 0x2463ff9c, 0x431023, 
-0x2c420064, 0x144000b3, 0x2402000d, 0x8004c80
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fff8, 0x0, 0xc004cd1, 0x0, 
+0x8f830054, 0x8004c76, 0x24020013, 0x8f830054, 
+0x3c020001, 0x8c42554c, 0x2463ff9c, 0x431023, 
+0x2c420064, 0x144000b3, 0x2402000d, 0x8004c84
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x24040001, 
-0xc004ca7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x24040001, 
+0xc004cab, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc004ccd, 0x34108000, 0xc004ccd, 0x0, 
-0xc004c87, 0x0, 0x50400005, 0x108042, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020018, 
+0xc004cd1, 0x34108000, 0xc004cd1, 0x0, 
+0xc004c8b, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc004ccd, 0x8021, 
+0x1600fff7, 0x0, 0xc004cd1, 0x8021, 
 0x97a20010, 0x27b10010, 0x3042fffe, 0xa7a20010, 
-0xc004ca7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
-0xc004ca7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
+0xc004cab, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
+0xc004cab, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc004ca7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc004ca7, 0x24040001, 0xc004ca7, 0x2021, 
+0xc004cab, 0x108042, 0x1600fffa, 0x32020018, 
+0xc004cab, 0x24040001, 0xc004cab, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
-0x1600fff8, 0x0, 0xc004ccd, 0x0, 
-0x8f830054, 0x8004c72, 0x2402000e, 0x24020840, 
-0xa7a20010, 0x27b10010, 0x8021, 0xc004ca7
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
+0x1600fff8, 0x0, 0xc004cd1, 0x0, 
+0x8f830054, 0x8004c76, 0x2402000e, 0x24020840, 
+0xa7a20010, 0x27b10010, 0x8021, 0xc004cab
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc004ca7, 0x2021, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0xc004ca7
+0x0, 0xc004cab, 0x2021, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0xc004cab
 0x24040001, 0x24100010, 0x32020001, 0x10400002, 
-0x2021, 0x24040001, 0xc004ca7, 0x108042, 
+0x2021, 0x24040001, 0xc004cab, 0x108042, 
 0x1600fffa, 0x32020001, 0x24100010, 0x32020013, 
-0x10400002, 0x2021, 0x24040001, 0xc004ca7
-0x108042, 0x1600fffa, 0x32020013, 0xc004ca7
-0x24040001, 0xc004ca7, 0x2021, 0x34108000, 
+0x10400002, 0x2021, 0x24040001, 0xc004cab
+0x108042, 0x1600fffa, 0x32020013, 0xc004cab
+0x24040001, 0xc004cab, 0x2021, 0x34108000, 
 0x96220000, 0x501024, 0x10400002, 0x2021, 
-0x24040001, 0xc004ca7, 0x108042, 0x1600fff8, 
-0x0, 0xc004ccd, 0x0, 0x8f830054, 
-0x24020010, 0x3c010001, 0xac2254a0, 0x3c010001, 
-0x8004c82, 0xac23553c, 0x8f830054, 0x3c020001, 
-0x8c42553c, 0x2463ff9c, 0x431023, 0x2c420064, 
+0x24040001, 0xc004cab, 0x108042, 0x1600fff8, 
+0x0, 0xc004cd1, 0x0, 0x8f830054, 
+0x24020010, 0x3c010001, 0xac2254b0, 0x3c010001, 
+0x8004c86, 0xac23554c, 0x8f830054, 0x3c020001, 
+0x8c42554c, 0x2463ff9c, 0x431023, 0x2c420064, 
 0x14400004, 0x0, 0x24020011, 0x3c010001, 
-0xac2254a0, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 
+0xac2254b0, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 
 0x3e00008, 0x27bd0028, 0x8f850044, 0x8f820044, 
 0x3c030001, 0x431025, 0x3c030008, 0xaf820044, 
-0x8f840054, 0x8f820054, 0xa32824, 0x8004c93
+0x8f840054, 0x8f820054, 0xa32824, 0x8004c97
 0x24840001, 0x8f820054, 0x821023, 0x2c420002, 
 0x1440fffc, 0x0, 0x8f820044, 0x3c03fffe, 
 0x3463ffff, 0x431024, 0xaf820044, 0x8f830054, 
-0x8f820054, 0x8004ca1, 0x24630001, 0x8f820054, 
+0x8f820054, 0x8004ca5, 0x24630001, 0x8f820054, 
 0x621023, 0x2c420002, 0x1440fffc, 0x0, 
 0x3e00008, 0xa01021, 0x8f830044, 0x3c02fff0, 
 0x3442ffff, 0x42480, 0x621824, 0x3c020002, 
 0x822025, 0x641825, 0xaf830044, 0x8f820044, 
 0x3c030001, 0x431025, 0xaf820044, 0x8f830054, 
-0x8f820054, 0x8004cb9, 0x24630001, 0x8f820054, 
+0x8f820054, 0x8004cbd, 0x24630001, 0x8f820054, 
 0x621023, 0x2c420002, 0x1440fffc, 0x0, 
 0x8f820044, 0x3c03fffe, 0x3463ffff, 0x431024, 
-0xaf820044, 0x8f830054, 0x8f820054, 0x8004cc7
+0xaf820044, 0x8f830054, 0x8f820054, 0x8004ccb
 0x24630001, 0x8f820054, 0x621023, 0x2c420002, 
 0x1440fffc, 0x0, 0x3e00008, 0x0, 
 0x8f820044, 0x3c03fff0, 0x3463ffff, 0x431024, 
 0xaf820044, 0x8f820044, 0x3c030001, 0x431025, 
-0xaf820044, 0x8f830054, 0x8f820054, 0x8004cdb
+0xaf820044, 0x8f830054, 0x8f820054, 0x8004cdf
 0x24630001, 0x8f820054, 0x621023, 0x2c420002, 
 0x1440fffc, 0x0, 0x8f820044, 0x3c03fffe, 
 0x3463ffff, 0x431024, 0xaf820044, 0x8f830054, 
-0x8f820054, 0x8004ce9, 0x24630001, 0x8f820054, 
+0x8f820054, 0x8004ced, 0x24630001, 0x8f820054, 
 0x621023, 0x2c420002, 0x1440fffc, 0x0, 
 0x3e00008, 0x0, 0x0, 0x27bdffe8, 
 0xafbf0010, 0x3c030001, 0x771821, 0x8c6383ac, 
 0x24020008, 0x1462022c, 0x803021, 0x3c020001, 
-0x8c425528, 0x14400033, 0x0, 0x8f850224, 
+0x8c425538, 0x14400033, 0x0, 0x8f850224, 
 0x38a30020, 0x2c630001, 0x38a20010, 0x2c420001, 
 0x621825, 0x1460000d, 0x38a30030, 0x2c630001, 
 0x38a20400, 0x2c420001, 0x621825, 0x14600007, 
 0x38a30402, 0x2c630001, 0x38a20404, 0x2c420001, 
 0x621825, 0x10600005, 0x0, 0xc00429f, 
-0x0, 0x8004d29, 0x2402000e, 0xc0043e1, 
-0x0, 0x3c050001, 0x8ca55478, 0xc0050af
-0x2021, 0x3c030001, 0x8c635478, 0x24020004, 
-0x14620005, 0x2403fffb, 0x3c020001, 0x8c425474, 
-0x8004d25, 0x2403fff7, 0x3c020001, 0x8c425474, 
-0x431024, 0x3c010001, 0xac225474, 0x2402000e, 
-0x3c010001, 0xc00429f, 0xac227550, 0x8004f23
+0x0, 0x8004d2d, 0x2402000e, 0xc0043e1, 
+0x0, 0x3c050001, 0x8ca55488, 0xc0050b3
+0x2021, 0x3c030001, 0x8c635488, 0x24020004, 
+0x14620005, 0x2403fffb, 0x3c020001, 0x8c425484, 
+0x8004d29, 0x2403fff7, 0x3c020001, 0x8c425484, 
+0x431024, 0x3c010001, 0xac225484, 0x2402000e, 
+0x3c010001, 0xc00429f, 0xac227560, 0x8004f27
 0x0, 0x8f820220, 0x3c030400, 0x431024, 
 0x10400027, 0x2403ffbf, 0x8f850224, 0x3c020001, 
-0x8c42755c, 0xa32024, 0x431024, 0x1482000c, 
-0x0, 0x3c020001, 0x8c427560, 0x24420001, 
-0x3c010001, 0xac227560, 0x2c420002, 0x14400008, 
-0x24020001, 0x3c010001, 0x8004d49, 0xac227580, 
-0x3c010001, 0xac207560, 0x3c010001, 0xac207580, 
-0x3c020001, 0x8c427580, 0x10400006, 0x30a20040, 
-0x10400004, 0x24020001, 0x3c010001, 0x8004d54
-0xac227584, 0x3c010001, 0xac207584, 0x3c010001, 
-0xac25755c, 0x3c010001, 0x8004d64, 0xac207590, 
-0x24020001, 0x3c010001, 0xac227590, 0x3c010001, 
-0xac207580, 0x3c010001, 0xac207560, 0x3c010001, 
-0xac207584, 0x3c010001, 0xac20755c, 0x3c030001, 
-0x8c637550, 0x3c020001, 0x8c427554, 0x10620003, 
-0x3c020200, 0x3c010001, 0xac237554, 0xc21024, 
+0x8c42756c, 0xa32024, 0x431024, 0x1482000c, 
+0x0, 0x3c020001, 0x8c427570, 0x24420001, 
+0x3c010001, 0xac227570, 0x2c420002, 0x14400008, 
+0x24020001, 0x3c010001, 0x8004d4d, 0xac227590, 
+0x3c010001, 0xac207570, 0x3c010001, 0xac207590, 
+0x3c020001, 0x8c427590, 0x10400006, 0x30a20040, 
+0x10400004, 0x24020001, 0x3c010001, 0x8004d58
+0xac227594, 0x3c010001, 0xac207594, 0x3c010001, 
+0xac25756c, 0x3c010001, 0x8004d68, 0xac2075a0, 
+0x24020001, 0x3c010001, 0xac2275a0, 0x3c010001, 
+0xac207590, 0x3c010001, 0xac207570, 0x3c010001, 
+0xac207594, 0x3c010001, 0xac20756c, 0x3c030001, 
+0x8c637560, 0x3c020001, 0x8c427564, 0x10620003, 
+0x3c020200, 0x3c010001, 0xac237564, 0xc21024, 
 0x10400007, 0x2463ffff, 0x8f820220, 0x24030001, 
-0x3c010001, 0xac23547c, 0x8004f21, 0x3c03f700, 
+0x3c010001, 0xac23548c, 0x8004f25, 0x3c03f700, 
 0x2c62000e, 0x104001a8, 0x31080, 0x3c010001, 
-0x220821, 0x8c225350, 0x400008, 0x0, 
-0x3c010001, 0xac207580, 0x3c010001, 0xac207560, 
-0x3c010001, 0xac20755c, 0x3c010001, 0xac207584, 
-0x3c010001, 0xac207578, 0x3c010001, 0xac207570, 
+0x220821, 0x8c225360, 0x400008, 0x0, 
+0x3c010001, 0xac207590, 0x3c010001, 0xac207570, 
+0x3c010001, 0xac20756c, 0x3c010001, 0xac207594, 
+0x3c010001, 0xac207588, 0x3c010001, 0xac207580, 
 0xc0047cc, 0xaf800224, 0x24020002, 0x3c010001, 
-0xac227550, 0x3c020001, 0x8c427590, 0x14400056, 
+0xac227560, 0x3c020001, 0x8c4275a0, 0x14400056, 
 0x3c03fdff, 0x8ee20000, 0x3463ffff, 0x431024, 
 0xc00429f, 0xaee20000, 0xaf800204, 0x8f820200, 
 0x2403fffd, 0x431024, 0xaf820200, 0x3c010001, 
-0xac2075a0, 0x8f830054, 0x3c020001, 0x8c427578, 
-0x24040001, 0x3c010001, 0xac24758c, 0x24420001, 
-0x3c010001, 0xac227578, 0x2c420004, 0x3c010001, 
-0xac237574, 0x14400006, 0x24020003, 0x3c010001, 
-0xac24547c, 0x3c010001, 0x8004f1f, 0xac207578, 
-0x3c010001, 0x8004f1f, 0xac227550, 0x8f830054, 
-0x3c020001, 0x8c427574, 0x2463d8f0, 0x431023, 
+0xac2075b0, 0x8f830054, 0x3c020001, 0x8c427588, 
+0x24040001, 0x3c010001, 0xac24759c, 0x24420001, 
+0x3c010001, 0xac227588, 0x2c420004, 0x3c010001, 
+0xac237584, 0x14400006, 0x24020003, 0x3c010001, 
+0xac24548c, 0x3c010001, 0x8004f23, 0xac207588, 
+0x3c010001, 0x8004f23, 0xac227560, 0x8f830054, 
+0x3c020001, 0x8c427584, 0x2463d8f0, 0x431023, 
 0x2c422710, 0x14400003, 0x24020004, 0x3c010001, 
-0xac227550, 0x3c020001, 0x8c427590, 0x14400026, 
+0xac227560, 0x3c020001, 0x8c4275a0, 0x14400026, 
 0x3c03fdff, 0x8ee20000, 0x3463ffff, 0x431024, 
-0x8004f1f, 0xaee20000, 0x3c040001, 0x8c84552c, 
-0x3c010001, 0xc004f26, 0xac207568, 0x3c020001, 
-0x8c42759c, 0xaf820204, 0x3c020001, 0x8c427590, 
+0x8004f23, 0xaee20000, 0x3c040001, 0x8c84553c, 
+0x3c010001, 0xc004f2a, 0xac207578, 0x3c020001, 
+0x8c4275ac, 0xaf820204, 0x3c020001, 0x8c4275a0, 
 0x14400015, 0x3c03fdff, 0x8ee20000, 0x3463ffff, 
 0x431024, 0xaee20000, 0x8f820204, 0x30420030, 
-0x1440013c, 0x24020002, 0x3c030001, 0x8c63759c, 
-0x24020005, 0x3c010001, 0xac227550, 0x3c010001, 
-0x8004f1f, 0xac2375a0, 0x3c020001, 0x8c427590, 
-0x10400010, 0x3c03fdff, 0x3c020001, 0x8c4254fc, 
-0x24420001, 0x3c010001, 0xac2254fc, 0x2c420002, 
-0x14400131, 0x24020001, 0x3c010001, 0xac225504, 
-0x3c010001, 0xac2054fc, 0x3c010001, 0x8004f1f
-0xac22547c, 0x8ee20000, 0x3463ffff, 0x431024, 
-0xaee20000, 0x3c020001, 0x8c427580, 0x10400122, 
-0x0, 0x3c020001, 0x8c42755c, 0x1040011e, 
-0x0, 0x3c010001, 0xac227588, 0x24020003, 
-0x3c010001, 0xac227560, 0x8004ec0, 0x24020006, 
-0x3c010001, 0xac207568, 0x8f820204, 0x34420040, 
-0xaf820204, 0x3c020001, 0x8c4275a0, 0x24030007, 
-0x3c010001, 0xac237550, 0x34420040, 0x3c010001, 
-0xac2275a0, 0x3c020001, 0x8c427580, 0x10400005, 
-0x0, 0x3c020001, 0x8c42755c, 0x104000f9, 
-0x24020002, 0x3c050001, 0x24a57560, 0x8ca20000, 
+0x1440013c, 0x24020002, 0x3c030001, 0x8c6375ac, 
+0x24020005, 0x3c010001, 0xac227560, 0x3c010001, 
+0x8004f23, 0xac2375b0, 0x3c020001, 0x8c4275a0, 
+0x10400010, 0x3c03fdff, 0x3c020001, 0x8c42550c, 
+0x24420001, 0x3c010001, 0xac22550c, 0x2c420002, 
+0x14400131, 0x24020001, 0x3c010001, 0xac225514, 
+0x3c010001, 0xac20550c, 0x3c010001, 0x8004f23
+0xac22548c, 0x8ee20000, 0x3463ffff, 0x431024, 
+0xaee20000, 0x3c020001, 0x8c427590, 0x10400122, 
+0x0, 0x3c020001, 0x8c42756c, 0x1040011e, 
+0x0, 0x3c010001, 0xac227598, 0x24020003, 
+0x3c010001, 0xac227570, 0x8004ec4, 0x24020006, 
+0x3c010001, 0xac207578, 0x8f820204, 0x34420040, 
+0xaf820204, 0x3c020001, 0x8c4275b0, 0x24030007, 
+0x3c010001, 0xac237560, 0x34420040, 0x3c010001, 
+0xac2275b0, 0x3c020001, 0x8c427590, 0x10400005, 
+0x0, 0x3c020001, 0x8c42756c, 0x104000f9, 
+0x24020002, 0x3c050001, 0x24a57570, 0x8ca20000, 
 0x2c424e21, 0x104000f3, 0x24020002, 0x3c020001, 
-0x8c427584, 0x104000f8, 0x2404ffbf, 0x3c020001, 
-0x8c42755c, 0x3c030001, 0x8c637588, 0x441024, 
+0x8c427594, 0x104000f8, 0x2404ffbf, 0x3c020001, 
+0x8c42756c, 0x3c030001, 0x8c637598, 0x441024, 
 0x641824, 0x10430004, 0x24020001, 0x3c010001, 
-0x8004f1f, 0xac227550, 0x24020003, 0xaca20000, 
-0x24020008, 0x3c010001, 0xac227550, 0x3c020001, 
-0x8c42758c, 0x1040000c, 0x24020001, 0x3c040001, 
-0xc004f33, 0x8c84755c, 0x3c020001, 0x8c4275a8, 
-0x14400005, 0x24020001, 0x3c020001, 0x8c4275a4, 
-0x10400006, 0x24020001, 0x3c010001, 0xac22547c, 
-0x3c010001, 0x8004f1f, 0xac207578, 0x3c020001, 
-0x8c427570, 0x3c030001, 0x8c63755c, 0x2c420001, 
-0x210c0, 0x30630008, 0x3c010001, 0xac227570, 
-0x3c010001, 0xac23756c, 0x8f830054, 0x24020009, 
-0x3c010001, 0xac227550, 0x3c010001, 0x8004f1f
-0xac237574, 0x8f830054, 0x3c020001, 0x8c427574, 
+0x8004f23, 0xac227560, 0x24020003, 0xaca20000, 
+0x24020008, 0x3c010001, 0xac227560, 0x3c020001, 
+0x8c42759c, 0x1040000c, 0x24020001, 0x3c040001, 
+0xc004f37, 0x8c84756c, 0x3c020001, 0x8c4275b8, 
+0x14400005, 0x24020001, 0x3c020001, 0x8c4275b4, 
+0x10400006, 0x24020001, 0x3c010001, 0xac22548c, 
+0x3c010001, 0x8004f23, 0xac207588, 0x3c020001, 
+0x8c427580, 0x3c030001, 0x8c63756c, 0x2c420001, 
+0x210c0, 0x30630008, 0x3c010001, 0xac227580, 
+0x3c010001, 0xac23757c, 0x8f830054, 0x24020009, 
+0x3c010001, 0xac227560, 0x3c010001, 0x8004f23
+0xac237584, 0x8f830054, 0x3c020001, 0x8c427584, 
 0x2463d8f0, 0x431023, 0x2c422710, 0x144000a8, 
-0x0, 0x3c020001, 0x8c427580, 0x10400005, 
-0x0, 0x3c020001, 0x8c42755c, 0x104000a9, 
-0x24020002, 0x3c030001, 0x24637560, 0x8c620000, 
+0x0, 0x3c020001, 0x8c427590, 0x10400005, 
+0x0, 0x3c020001, 0x8c42756c, 0x104000a9, 
+0x24020002, 0x3c030001, 0x24637570, 0x8c620000, 
 0x2c424e21, 0x104000a3, 0x24020002, 0x3c020001, 
-0x8c42758c, 0x1040000e, 0x0, 0x3c020001, 
-0x8c42755c, 0x3c010001, 0xac20758c, 0x30420080, 
+0x8c42759c, 0x1040000e, 0x0, 0x3c020001, 
+0x8c42756c, 0x3c010001, 0xac20759c, 0x30420080, 
 0x1040002f, 0x2402000c, 0x8f820204, 0x30420080, 
-0x1440000c, 0x24020003, 0x8004ead, 0x2402000c, 
-0x3c020001, 0x8c42755c, 0x30420080, 0x14400005, 
+0x1440000c, 0x24020003, 0x8004eb1, 0x2402000c, 
+0x3c020001, 0x8c42756c, 0x30420080, 0x14400005, 
 0x24020003, 0x8f820204, 0x30420080, 0x1040001f, 
 0x24020003, 0xac620000, 0x2402000a, 0x3c010001, 
-0xac227550, 0x3c040001, 0x24847598, 0x8c820000, 
-0x3c030001, 0x8c637570, 0x431025, 0xaf820204, 
-0x8c830000, 0x3c040001, 0x8c847570, 0x2402000b, 
-0x3c010001, 0xac227550, 0x641825, 0x3c010001, 
-0xac2375a0, 0x3c050001, 0x24a57560, 0x8ca20000, 
+0xac227560, 0x3c040001, 0x248475a8, 0x8c820000, 
+0x3c030001, 0x8c637580, 0x431025, 0xaf820204, 
+0x8c830000, 0x3c040001, 0x8c847580, 0x2402000b, 
+0x3c010001, 0xac227560, 0x641825, 0x3c010001, 
+0xac2375b0, 0x3c050001, 0x24a57570, 0x8ca20000, 
 0x2c424e21, 0x1040006f, 0x24020002, 0x3c020001, 
-0x8c427590, 0x10400005, 0x0, 0x2402000c, 
-0x3c010001, 0x8004f1f, 0xac227550, 0x3c020001, 
-0x8c427580, 0x1040006c, 0x0, 0x3c040001, 
-0x8c84755c, 0x1080005e, 0x30820008, 0x3c030001, 
-0x8c63756c, 0x10620064, 0x24020003, 0x3c010001, 
-0xac247588, 0xaca20000, 0x24020006, 0x3c010001, 
-0x8004f1f, 0xac227550, 0x8f820200, 0x34420002, 
+0x8c4275a0, 0x10400005, 0x0, 0x2402000c, 
+0x3c010001, 0x8004f23, 0xac227560, 0x3c020001, 
+0x8c427590, 0x1040006c, 0x0, 0x3c040001, 
+0x8c84756c, 0x1080005e, 0x30820008, 0x3c030001, 
+0x8c63757c, 0x10620064, 0x24020003, 0x3c010001, 
+0xac247598, 0xaca20000, 0x24020006, 0x3c010001, 
+0x8004f23, 0xac227560, 0x8f820200, 0x34420002, 
 0xaf820200, 0x8f830054, 0x2402000d, 0x3c010001, 
-0xac227550, 0x3c010001, 0xac237574, 0x8f830054, 
-0x3c020001, 0x8c427574, 0x2463d8f0, 0x431023, 
+0xac227560, 0x3c010001, 0xac237584, 0x8f830054, 
+0x3c020001, 0x8c427584, 0x2463d8f0, 0x431023, 
 0x2c422710, 0x1440003a, 0x0, 0x3c020001, 
-0x8c427590, 0x10400029, 0x2402000e, 0x3c030001, 
-0x8c6375a4, 0x3c010001, 0x14600015, 0xac227550, 
-0xc0043e1, 0x0, 0x3c050001, 0x8ca55478, 
-0xc0050af, 0x2021, 0x3c030001, 0x8c635478, 
+0x8c4275a0, 0x10400029, 0x2402000e, 0x3c030001, 
+0x8c6375b4, 0x3c010001, 0x14600015, 0xac227560, 
+0xc0043e1, 0x0, 0x3c050001, 0x8ca55488, 
+0xc0050b3, 0x2021, 0x3c030001, 0x8c635488, 
 0x24020004, 0x14620005, 0x2403fffb, 0x3c020001, 
-0x8c425474, 0x8004eee, 0x2403fff7, 0x3c020001, 
-0x8c425474, 0x431024, 0x3c010001, 0xac225474, 
+0x8c425484, 0x8004ef2, 0x2403fff7, 0x3c020001, 
+0x8c425484, 0x431024, 0x3c010001, 0xac225484, 
 0x8ee20000, 0x3c030200, 0x431025, 0xaee20000, 
-0x8f820224, 0x3c010001, 0xac2275ac, 0x8f820220, 
+0x8f820224, 0x3c010001, 0xac2275bc, 0x8f820220, 
 0x2403fffb, 0x431024, 0xaf820220, 0x8f820220, 
-0x34420002, 0x8004f1f, 0xaf820220, 0x3c020001, 
-0x8c427580, 0x10400005, 0x0, 0x3c020001, 
-0x8c42755c, 0x1040000f, 0x24020002, 0x3c020001, 
-0x8c427560, 0x2c424e21, 0x1040000a, 0x24020002, 
-0x3c020001, 0x8c427580, 0x1040000f, 0x0, 
-0x3c020001, 0x8c42755c, 0x1440000b, 0x0, 
-0x24020002, 0x3c010001, 0x8004f1f, 0xac227550, 
-0x3c020001, 0x8c427580, 0x10400003, 0x0, 
+0x34420002, 0x8004f23, 0xaf820220, 0x3c020001, 
+0x8c427590, 0x10400005, 0x0, 0x3c020001, 
+0x8c42756c, 0x1040000f, 0x24020002, 0x3c020001, 
+0x8c427570, 0x2c424e21, 0x1040000a, 0x24020002, 
+0x3c020001, 0x8c427590, 0x1040000f, 0x0, 
+0x3c020001, 0x8c42756c, 0x1440000b, 0x0, 
+0x24020002, 0x3c010001, 0x8004f23, 0xac227560, 
+0x3c020001, 0x8c427590, 0x10400003, 0x0, 
 0xc00429f, 0x0, 0x8f820220, 0x3c03f700, 
 0x431025, 0xaf820220, 0x8fbf0010, 0x3e00008, 
-0x27bd0018, 0x3c030001, 0x246375a8, 0x8c620000, 
-0x10400005, 0x34422000, 0x3c010001, 0xac22759c, 
-0x8004f31, 0xac600000, 0x3c010001, 0xac24759c, 
+0x27bd0018, 0x3c030001, 0x246375b8, 0x8c620000, 
+0x10400005, 0x34422000, 0x3c010001, 0xac2275ac, 
+0x8004f35, 0xac600000, 0x3c010001, 0xac2475ac, 
 0x3e00008, 0x0, 0x27bdffe0, 0x30820030, 
-0xafbf0018, 0x3c010001, 0xac2275a4, 0x14400067, 
+0xafbf0018, 0x3c010001, 0xac2275b4, 0x14400067, 
 0x3c02ffff, 0x34421f0e, 0x821024, 0x14400061, 
 0x24020030, 0x30822000, 0x1040005d, 0x30838000, 
 0x31a02, 0x30820001, 0x21200, 0x3c040001, 
-0x8c84552c, 0x621825, 0x331c2, 0x3c030001, 
-0x24635508, 0x30828000, 0x21202, 0x30840001, 
+0x8c84553c, 0x621825, 0x331c2, 0x3c030001, 
+0x24635518, 0x30828000, 0x21202, 0x30840001, 
 0x42200, 0x441025, 0x239c2, 0x61080, 
 0x431021, 0x471021, 0x90430000, 0x24020001, 
 0x10620025, 0x0, 0x10600007, 0x24020002, 
 0x10620013, 0x24020003, 0x1062002c, 0x3c05000f, 
-0x8004f95, 0x0, 0x8f820200, 0x2403feff, 
+0x8004f99, 0x0, 0x8f820200, 0x2403feff, 
 0x431024, 0xaf820200, 0x8f820220, 0x3c03fffe, 
 0x3463ffff, 0x431024, 0xaf820220, 0x3c010001, 
-0xac2075c4, 0x3c010001, 0x8004fa0, 0xac2075cc, 
+0xac2075d4, 0x3c010001, 0x8004fa4, 0xac2075dc, 
 0x8f820200, 0x34420100, 0xaf820200, 0x8f820220, 
 0x3c03fffe, 0x3463ffff, 0x431024, 0xaf820220, 
-0x24020100, 0x3c010001, 0xac2275c4, 0x3c010001, 
-0x8004fa0, 0xac2075cc, 0x8f820200, 0x2403feff, 
+0x24020100, 0x3c010001, 0xac2275d4, 0x3c010001, 
+0x8004fa4, 0xac2075dc, 0x8f820200, 0x2403feff, 
 0x431024, 0xaf820200, 0x8f820220, 0x3c030001, 
-0x431025, 0xaf820220, 0x3c010001, 0xac2075c4, 
-0x3c010001, 0x8004fa0, 0xac2375cc, 0x8f820200, 
+0x431025, 0xaf820220, 0x3c010001, 0xac2075d4, 
+0x3c010001, 0x8004fa4, 0xac2375dc, 0x8f820200, 
 0x34420100, 0xaf820200, 0x8f820220, 0x3c030001, 
 0x431025, 0xaf820220, 0x24020100, 0x3c010001, 
-0xac2275c4, 0x3c010001, 0x8004fa0, 0xac2375cc, 
-0x34a5ffff, 0x3c040001, 0x24845388, 0xafa30010, 
-0xc002407, 0xafa00014, 0x8004fa0, 0x0, 
-0x24020030, 0x3c010001, 0xac2275a8, 0x8fbf0018, 
+0xac2275d4, 0x3c010001, 0x8004fa4, 0xac2375dc, 
+0x34a5ffff, 0x3c040001, 0x24845398, 0xafa30010, 
+0xc002407, 0xafa00014, 0x8004fa4, 0x0, 
+0x24020030, 0x3c010001, 0xac2275b8, 0x8fbf0018, 
 0x3e00008, 0x27bd0020, 0x0, 0x27bdffc8, 
 0xafb10024, 0x808821, 0xafb3002c, 0xa09821, 
-0xafb00020, 0xc08021, 0x3c040001, 0x248453a0, 
-0x3c050009, 0x3c020001, 0x8c425478, 0x34a59001, 
+0xafb00020, 0xc08021, 0x3c040001, 0x248453b0, 
+0x3c050009, 0x3c020001, 0x8c425488, 0x34a59001, 
 0x2203021, 0x2603821, 0xafbf0030, 0xafb20028, 
 0xa7a0001a, 0xafb00014, 0xc002407, 0xafa20010, 
 0x24020002, 0x126200ed, 0x2e620003, 0x10400005, 
-0x24020001, 0x1262000a, 0x3c02fffb, 0x80050a8
+0x24020001, 0x1262000a, 0x3c02fffb, 0x80050ac
 0x0, 0x24020004, 0x1262006d, 0x24020008, 
-0x1262006c, 0x3c02ffec, 0x80050a8, 0x0, 
+0x1262006c, 0x3c02ffec, 0x80050ac, 0x0, 
 0x3442ffff, 0x2028024, 0x119140, 0x3c010001, 
-0x320821, 0xac3075bc, 0x3c024000, 0x2021024, 
+0x320821, 0xac3075cc, 0x3c024000, 0x2021024, 
 0x10400046, 0x1023c2, 0x30840030, 0x101382, 
-0x3042000c, 0x3c030001, 0x246354a4, 0x431021, 
+0x3042000c, 0x3c030001, 0x246354b4, 0x431021, 
 0x823821, 0x3c020020, 0x2021024, 0x10400006, 
-0x24020100, 0x3c010001, 0x320821, 0xac2275c0, 
-0x8004fe7, 0x3c020080, 0x3c010001, 0x320821, 
-0xac2075c0, 0x3c020080, 0x2021024, 0x10400006, 
+0x24020100, 0x3c010001, 0x320821, 0xac2275d0, 
+0x8004feb, 0x3c020080, 0x3c010001, 0x320821, 
+0xac2075d0, 0x3c020080, 0x2021024, 0x10400006, 
 0x111940, 0x3c020001, 0x3c010001, 0x230821, 
-0x8004ff3, 0xac2275c8, 0x111140, 0x3c010001, 
-0x220821, 0xac2075c8, 0x94e30000, 0x32024000, 
+0x8004ff7, 0xac2275d8, 0x111140, 0x3c010001, 
+0x220821, 0xac2075d8, 0x94e30000, 0x32024000, 
 0x10400003, 0xa7a30018, 0x34624000, 0xa7a20018, 
 0x24040001, 0x94e20002, 0x24050004, 0x24e60002, 
-0x34420001, 0xc0048ea, 0xa4e20002, 0x24040001, 
-0x2821, 0xc0048ea, 0x27a60018, 0x3c020001, 
-0x8c425478, 0x24110001, 0x3c010001, 0xac315484, 
+0x34420001, 0xc0048ee, 0xa4e20002, 0x24040001, 
+0x2821, 0xc0048ee, 0x27a60018, 0x3c020001, 
+0x8c425488, 0x24110001, 0x3c010001, 0xac315494, 
 0x14530004, 0x32028000, 0xc00429f, 0x0, 
 0x32028000, 0x10400099, 0x0, 0xc00429f, 
-0x0, 0x24020002, 0x3c010001, 0xac31547c, 
-0x3c010001, 0x80050a8, 0xac225478, 0x24040001, 
-0x24050004, 0x27b0001a, 0xc0048ea, 0x2003021, 
-0x24040001, 0x2821, 0xc0048ea, 0x2003021, 
-0x3c020001, 0x521021, 0x8c4275b4, 0x3c040001, 
-0x8c845478, 0x3c03bfff, 0x3463ffff, 0x3c010001, 
-0xac335484, 0x431024, 0x3c010001, 0x320821, 
-0x10930078, 0xac2275b4, 0x80050a8, 0x0, 
+0x0, 0x24020002, 0x3c010001, 0xac31548c, 
+0x3c010001, 0x80050ac, 0xac225488, 0x24040001, 
+0x24050004, 0x27b0001a, 0xc0048ee, 0x2003021, 
+0x24040001, 0x2821, 0xc0048ee, 0x2003021, 
+0x3c020001, 0x521021, 0x8c4275c4, 0x3c040001, 
+0x8c845488, 0x3c03bfff, 0x3463ffff, 0x3c010001, 
+0xac335494, 0x431024, 0x3c010001, 0x320821, 
+0x10930078, 0xac2275c4, 0x80050ac, 0x0, 
 0x3c02ffec, 0x3442ffff, 0x2028024, 0x3c020008, 
 0x2028025, 0x111140, 0x3c010001, 0x220821, 
-0xac3075b8, 0x3c022000, 0x2021024, 0x10400009, 
-0x0, 0x3c020001, 0x8c425504, 0x14400005, 
-0x24020001, 0x3c010001, 0xac225528, 0x8005049
-0x3c024000, 0x3c010001, 0xac205528, 0x3c024000, 
+0xac3075c8, 0x3c022000, 0x2021024, 0x10400009, 
+0x0, 0x3c020001, 0x8c425514, 0x14400005, 
+0x24020001, 0x3c010001, 0xac225538, 0x800504d
+0x3c024000, 0x3c010001, 0xac205538, 0x3c024000, 
 0x2021024, 0x1440001c, 0x0, 0x3c020001, 
-0x8c425528, 0x10400007, 0x24022020, 0x3c010001, 
-0xac22552c, 0x24020001, 0x3c010001, 0x370821, 
+0x8c425538, 0x10400007, 0x24022020, 0x3c010001, 
+0xac22553c, 0x24020001, 0x3c010001, 0x370821, 
 0xac2283ac, 0x3c04bfff, 0x111940, 0x3c020001, 
-0x431021, 0x8c4275b0, 0x3c050001, 0x8ca55478, 
+0x431021, 0x8c4275c0, 0x3c050001, 0x8ca55488, 
 0x3484ffff, 0x441024, 0x3c010001, 0x230821, 
-0xac2275b0, 0x24020001, 0x10a20044, 0x0, 
-0x80050a6, 0x0, 0x3c020001, 0x8c425528, 
-0x1040001c, 0x24022000, 0x3c010001, 0xac22552c, 
+0xac2275c0, 0x24020001, 0x10a20044, 0x0, 
+0x80050aa, 0x0, 0x3c020001, 0x8c425538, 
+0x1040001c, 0x24022000, 0x3c010001, 0xac22553c, 
 0x3c0300a0, 0x2031024, 0x14430005, 0x111140, 
-0x3402a000, 0x3c010001, 0x80050a1, 0xac22552c, 
-0x3c030001, 0x621821, 0x8c6375b8, 0x3c020020, 
+0x3402a000, 0x3c010001, 0x80050a5, 0xac22553c, 
+0x3c030001, 0x621821, 0x8c6375c8, 0x3c020020, 
 0x621024, 0x10400004, 0x24022001, 0x3c010001, 
-0x80050a1, 0xac22552c, 0x3c020080, 0x621024, 
-0x1040001f, 0x3402a001, 0x3c010001, 0x80050a1
-0xac22552c, 0x3c020020, 0x2021024, 0x10400007, 
+0x80050a5, 0xac22553c, 0x3c020080, 0x621024, 
+0x1040001f, 0x3402a001, 0x3c010001, 0x80050a5
+0xac22553c, 0x3c020020, 0x2021024, 0x10400007, 
 0x111940, 0x24020100, 0x3c010001, 0x230821, 
-0xac2275c4, 0x8005095, 0x3c020080, 0x111140, 
-0x3c010001, 0x220821, 0xac2075c4, 0x3c020080, 
+0xac2275d4, 0x8005099, 0x3c020080, 0x111140, 
+0x3c010001, 0x220821, 0xac2075d4, 0x3c020080, 
 0x2021024, 0x10400006, 0x111940, 0x3c020001, 
-0x3c010001, 0x230821, 0x80050a1, 0xac2275cc, 
-0x111140, 0x3c010001, 0x220821, 0xac2075cc, 
-0x3c030001, 0x8c635478, 0x24020001, 0x10620003, 
+0x3c010001, 0x230821, 0x80050a5, 0xac2275dc, 
+0x111140, 0x3c010001, 0x220821, 0xac2075dc, 
+0x3c030001, 0x8c635488, 0x24020001, 0x10620003, 
 0x0, 0xc00429f, 0x0, 0x8fbf0030, 
 0x8fb3002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 
 0x3e00008, 0x27bd0038, 0x27bdffd0, 0xafb40028, 
@@ -4159,124 +4160,124 @@ u32 tigonFwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x9821, 0xafb1001c, 0x8821, 0x24020002, 
 0xafbf002c, 0xafb00018, 0xa7a00012, 0x10a20068, 
 0xa7a00010, 0x2ca20003, 0x10400005, 0x24020001, 
-0x10a2000a, 0x148140, 0x8005172, 0x2201021, 
+0x10a2000a, 0x148140, 0x8005176, 0x2201021, 
 0x24020004, 0x10a2005e, 0x24020008, 0x10a2005d, 
-0x142940, 0x8005172, 0x2201021, 0x3c030001, 
-0x701821, 0x8c6375bc, 0x3c024000, 0x621024, 
+0x142940, 0x8005176, 0x2201021, 0x3c030001, 
+0x701821, 0x8c6375cc, 0x3c024000, 0x621024, 
 0x14400009, 0x24040001, 0x3c027fff, 0x3442ffff, 
-0x628824, 0x3c010001, 0x300821, 0xac3175b4, 
-0x8005172, 0x2201021, 0x24050001, 0xc0048a8
-0x27a60010, 0x24040001, 0x24050001, 0xc0048a8
+0x628824, 0x3c010001, 0x300821, 0xac3175c4, 
+0x8005176, 0x2201021, 0x24050001, 0xc0048ac
+0x27a60010, 0x24040001, 0x24050001, 0xc0048ac
 0x27a60010, 0x97a20010, 0x30420004, 0x10400034, 
-0x3c114000, 0x3c030001, 0x8c635540, 0x24020003, 
+0x3c114000, 0x3c030001, 0x8c635550, 0x24020003, 
 0x10620008, 0x2c620004, 0x14400029, 0x3c028000, 
-0x24020004, 0x10620014, 0x24040001, 0x8005115
+0x24020004, 0x10620014, 0x24040001, 0x8005119
 0x3c028000, 0x24040001, 0x24050011, 0x27b00012, 
-0xc0048a8, 0x2003021, 0x24040001, 0x24050011, 
-0xc0048a8, 0x2003021, 0x97a30012, 0x30624000, 
+0xc0048ac, 0x2003021, 0x24040001, 0x24050011, 
+0xc0048ac, 0x2003021, 0x97a30012, 0x30624000, 
 0x10400002, 0x3c130010, 0x3c130008, 0x3c120001, 
-0x8005112, 0x30628000, 0x24050014, 0x27b00012, 
-0xc0048a8, 0x2003021, 0x24040001, 0x24050014, 
-0xc0048a8, 0x2003021, 0x97a30012, 0x30621000, 
+0x8005116, 0x30628000, 0x24050014, 0x27b00012, 
+0xc0048ac, 0x2003021, 0x24040001, 0x24050014, 
+0xc0048ac, 0x2003021, 0x97a30012, 0x30621000, 
 0x10400002, 0x3c130010, 0x3c130008, 0x3c120001, 
 0x30620800, 0x54400001, 0x3c120002, 0x3c028000, 
-0x2221025, 0x2531825, 0x800511f, 0x438825, 
-0x3c110001, 0x2308821, 0x8e3175bc, 0x3c027fff, 
+0x2221025, 0x2531825, 0x8005123, 0x438825, 
+0x3c110001, 0x2308821, 0x8e3175cc, 0x3c027fff, 
 0x3442ffff, 0x2228824, 0x141140, 0x3c010001, 
-0x220821, 0xac3175b4, 0x8005172, 0x2201021, 
-0x142940, 0x3c030001, 0x651821, 0x8c6375b8, 
+0x220821, 0xac3175c4, 0x8005176, 0x2201021, 
+0x142940, 0x3c030001, 0x651821, 0x8c6375c8, 
 0x3c024000, 0x621024, 0x14400008, 0x3c027fff, 
 0x3442ffff, 0x628824, 0x3c010001, 0x250821, 
-0xac3175b0, 0x8005172, 0x2201021, 0x3c020001, 
-0x8c425488, 0x10400033, 0x3c11c00c, 0x3c020001, 
-0x8c425504, 0x3c04c00c, 0x34842000, 0x3c030001, 
-0x8c635528, 0x2102b, 0x21023, 0x441024, 
+0xac3175c0, 0x8005176, 0x2201021, 0x3c020001, 
+0x8c425498, 0x10400033, 0x3c11c00c, 0x3c020001, 
+0x8c425514, 0x3c04c00c, 0x34842000, 0x3c030001, 
+0x8c635538, 0x2102b, 0x21023, 0x441024, 
 0x10600003, 0x518825, 0x3c022000, 0x2228825, 
-0x3c020001, 0x451021, 0x8c4275c4, 0x10400003, 
-0x3c020020, 0x800514f, 0x2228825, 0x3c02ffdf, 
+0x3c020001, 0x451021, 0x8c4275d4, 0x10400003, 
+0x3c020020, 0x8005153, 0x2228825, 0x3c02ffdf, 
 0x3442ffff, 0x2228824, 0x141140, 0x3c010001, 
-0x220821, 0x8c2275cc, 0x10400003, 0x3c020080, 
-0x800515a, 0x2228825, 0x3c02ff7f, 0x3442ffff, 
-0x2228824, 0x3c020001, 0x8c4254f0, 0x10400002, 
-0x3c020800, 0x2228825, 0x3c020001, 0x8c4254f4, 
+0x220821, 0x8c2275dc, 0x10400003, 0x3c020080, 
+0x800515e, 0x2228825, 0x3c02ff7f, 0x3442ffff, 
+0x2228824, 0x3c020001, 0x8c425500, 0x10400002, 
+0x3c020800, 0x2228825, 0x3c020001, 0x8c425504, 
 0x10400002, 0x3c020400, 0x2228825, 0x3c020001, 
-0x8c4254f8, 0x10400006, 0x3c020100, 0x800516d
+0x8c425508, 0x10400006, 0x3c020100, 0x8005171
 0x2228825, 0x3c027fff, 0x3442ffff, 0x628824, 
-0x141140, 0x3c010001, 0x220821, 0xac3175b0, 
+0x141140, 0x3c010001, 0x220821, 0xac3175c0, 
 0x2201021, 0x8fbf002c, 0x8fb40028, 0x8fb30024, 
 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 
 0x27bd0030, 0x27bdffd8, 0xafb40020, 0x80a021, 
 0xafbf0024, 0xafb3001c, 0xafb20018, 0xafb10014, 
-0xafb00010, 0x8f900200, 0x3c030001, 0x8c635478, 
+0xafb00010, 0x8f900200, 0x3c030001, 0x8c635488, 
 0x8f930220, 0x24020002, 0x106200b4, 0x2c620003, 
 0x10400005, 0x24020001, 0x1062000a, 0x141940, 
-0x800523c, 0x0, 0x24020004, 0x1062005a, 
-0x24020008, 0x10620059, 0x149140, 0x800523c
-0x0, 0x3c040001, 0x832021, 0x8c8475bc, 
-0x3c110001, 0x2238821, 0x8e3175b4, 0x3c024000, 
+0x8005240, 0x0, 0x24020004, 0x1062005a, 
+0x24020008, 0x10620059, 0x149140, 0x8005240
+0x0, 0x3c040001, 0x832021, 0x8c8475cc, 
+0x3c110001, 0x2238821, 0x8e3175c4, 0x3c024000, 
 0x821024, 0x1040003e, 0x3c020008, 0x2221024, 
 0x10400020, 0x36100002, 0x3c020001, 0x431021, 
-0x8c4275c0, 0x10400005, 0x36100020, 0x36100100, 
-0x3c020020, 0x80051b1, 0x2228825, 0x2402feff, 
+0x8c4275d0, 0x10400005, 0x36100020, 0x36100100, 
+0x3c020020, 0x80051b5, 0x2228825, 0x2402feff, 
 0x2028024, 0x3c02ffdf, 0x3442ffff, 0x2228824, 
-0x141140, 0x3c010001, 0x220821, 0x8c2275c8, 
+0x141140, 0x3c010001, 0x220821, 0x8c2275d8, 
 0x10400005, 0x3c020001, 0x2629825, 0x3c020080, 
-0x80051d0, 0x2228825, 0x3c02fffe, 0x3442ffff, 
-0x2629824, 0x3c02ff7f, 0x3442ffff, 0x80051d0
+0x80051d4, 0x2228825, 0x3c02fffe, 0x3442ffff, 
+0x2629824, 0x3c02ff7f, 0x3442ffff, 0x80051d4
 0x2228824, 0x2402fedf, 0x2028024, 0x3c02fffe, 
 0x3442ffff, 0x2629824, 0x3c02ff5f, 0x3442ffff, 
-0x2228824, 0x3c010001, 0x230821, 0xac2075c0, 
-0x3c010001, 0x230821, 0xac2075c8, 0xc0047cc, 
+0x2228824, 0x3c010001, 0x230821, 0xac2075d0, 
+0x3c010001, 0x230821, 0xac2075d8, 0xc0047cc, 
 0x0, 0xaf900200, 0xaf930220, 0x8f820220, 
 0x2403fffb, 0x431024, 0xaf820220, 0x8f820220, 
-0x34420002, 0xaf820220, 0x80051e7, 0x141140, 
+0x34420002, 0xaf820220, 0x80051eb, 0x141140, 
 0x8f820200, 0x2403fffd, 0x431024, 0xc0047cc, 
 0xaf820200, 0x3c02bfff, 0x3442ffff, 0xc00429f, 
 0x2228824, 0x141140, 0x3c010001, 0x220821, 
-0x800523c, 0xac3175b4, 0x149140, 0x3c040001, 
-0x922021, 0x8c8475b8, 0x3c110001, 0x2328821, 
-0x8e3175b0, 0x3c024000, 0x821024, 0x14400011, 
-0x0, 0x3c020001, 0x8c425528, 0x14400006, 
+0x8005240, 0xac3175c4, 0x149140, 0x3c040001, 
+0x922021, 0x8c8475c8, 0x3c110001, 0x2328821, 
+0x8e3175c0, 0x3c024000, 0x821024, 0x14400011, 
+0x0, 0x3c020001, 0x8c425538, 0x14400006, 
 0x3c02bfff, 0x8f820200, 0x34420002, 0xc0047cc, 
 0xaf820200, 0x3c02bfff, 0x3442ffff, 0xc00429f, 
-0x2228824, 0x3c010001, 0x320821, 0x800523c
-0xac3175b0, 0x3c020001, 0x8c425528, 0x10400005, 
-0x3c020020, 0x3c020001, 0x8c425504, 0x1040002b, 
+0x2228824, 0x3c010001, 0x320821, 0x8005240
+0xac3175c0, 0x3c020001, 0x8c425538, 0x10400005, 
+0x3c020020, 0x3c020001, 0x8c425514, 0x1040002b, 
 0x3c020020, 0x821024, 0x10400007, 0x36100020, 
-0x24020100, 0x3c010001, 0x320821, 0xac2275c4, 
-0x800521c, 0x36100100, 0x3c010001, 0x320821, 
-0xac2075c4, 0x2402feff, 0x2028024, 0x3c020080, 
+0x24020100, 0x3c010001, 0x320821, 0xac2275d4, 
+0x8005220, 0x36100100, 0x3c010001, 0x320821, 
+0xac2075d4, 0x2402feff, 0x2028024, 0x3c020080, 
 0x821024, 0x10400007, 0x141940, 0x3c020001, 
-0x3c010001, 0x230821, 0xac2275cc, 0x800522d
+0x3c010001, 0x230821, 0xac2275dc, 0x8005231
 0x2629825, 0x141140, 0x3c010001, 0x220821, 
-0xac2075cc, 0x3c02fffe, 0x3442ffff, 0x2629824, 
+0xac2075dc, 0x3c02fffe, 0x3442ffff, 0x2629824, 
 0xc0047cc, 0x0, 0xaf900200, 0xaf930220, 
 0x8f820220, 0x2403fffb, 0x431024, 0xaf820220, 
 0x8f820220, 0x34420002, 0xaf820220, 0x141140, 
-0x3c010001, 0x220821, 0xac3175b0, 0x8fbf0024, 
+0x3c010001, 0x220821, 0xac3175c0, 0x8fbf0024, 
 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 
 0x8fb00010, 0x3e00008, 0x27bd0028, 0x0 };
 u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f66
-0x776d6169, 0x6e2e632c, 0x7620312e, 0x312e322e, 
-0x31312031, 0x3939382f, 0x30342f32, 0x37203232
-0x3a31333a, 0x34322073, 0x6875616e, 0x67204578
-0x70202400, 0x7468655f, 0x4441574e, 0x0
-0x53544143, 0x4b5f3120, 0x0, 0x42616453
-0x6e64526e, 0x67000000, 0x3f456e71, 0x45767400
-0x3f6e6f51, 0x64457650, 0x0, 0x6576526e
-0x6746756c, 0x6c000000, 0x496c6c43, 0x6f6e6652
-0x78000000, 0x53656e64, 0x436b5375, 0x6d000000
-0x52656376, 0x566c616e, 0x0, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f66776d, 0x61696e2e, 0x632c7620, 0x312e312e, 
+0x322e3131, 0x20313939, 0x382f3034, 0x2f323720
+0x32323a31, 0x333a3432, 0x20736875, 0x616e6720
+0x45787020, 0x24000000, 0x7468655f, 0x4441574e
+0x0, 0x53544143, 0x4b5f3120, 0x0
+0x42616453, 0x6e64526e, 0x67000000, 0x3f456e71
+0x45767400, 0x3f6e6f51, 0x64457650, 0x0
+0x6576526e, 0x6746756c, 0x6c000000, 0x496c6c43
+0x6f6e6652, 0x78000000, 0x53656e64, 0x436b5375
+0x6d000000, 0x52656376, 0x566c616e, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f74
-0x696d6572, 0x2e632c76, 0x20312e31, 0x2e322e38
-0x20313939, 0x382f3037, 0x2f333120, 0x31373a35
-0x383a3435, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x542d446d, 0x61526431, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f74696d, 0x65722e63, 0x2c762031, 0x2e312e32
+0x2e382031, 0x3939382f, 0x30372f33, 0x31203137
+0x3a35383a, 0x34352073, 0x6875616e, 0x67204578
+0x70202400, 0x542d446d, 0x61526431, 0x0, 
 0x542d446d, 0x61424200, 0x542d446d, 0x61320000, 
 0x3f6e6f51, 0x64547845, 0x0, 0x3f6e6f51, 
 0x64527845, 0x0, 0x656e714d, 0x45765046, 
@@ -4286,11 +4287,11 @@ u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x6576526e, 0x6746756c, 0x6c000000, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f63
-0x6f6d6d61, 0x6e642e63, 0x2c762031, 0x2e312e32
-0x2e313020, 0x31393938, 0x2f31312f, 0x31382031
-0x373a3131, 0x3a313820, 0x73687561, 0x6e672045
-0x78702024, 0x0, 0x3f4d626f, 0x78457674, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f636f6d, 0x6d616e64, 0x2e632c76, 0x20312e31
+0x2e322e31, 0x30203139, 0x39382f31, 0x312f3138
+0x2031373a, 0x31313a31, 0x38207368, 0x75616e67
+0x20457870, 0x20240000, 0x3f4d626f, 0x78457674, 
 0x0, 0x4e4f636f, 0x6d616e64, 0x0, 
 0x68737465, 0x5f455252, 0x0, 0x412d4572, 
 0x72427563, 0x0, 0x4552524f, 0x522d4164, 
@@ -4309,29 +4310,29 @@ u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x7e70, 0x80cc, 0x6e64, 0x81cc, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f64
-0x6d612e63, 0x2c762031, 0x2e312e32, 0x2e332031
-0x3939382f, 0x30342f32, 0x37203232, 0x3a31333a
-0x34312073, 0x6875616e, 0x67204578, 0x70202400, 
-0x646d6172, 0x6441544e, 0x0, 0x646d6177
-0x7241544e, 0x0, 0x0, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f646d61, 0x2e632c76, 0x20312e31, 0x2e322e33
+0x20313939, 0x382f3034, 0x2f323720, 0x32323a31
+0x333a3431, 0x20736875, 0x616e6720, 0x45787020, 
+0x24000000, 0x646d6172, 0x6441544e, 0x0
+0x646d6177, 0x7241544e, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f74
-0x72616365, 0x2e632c76, 0x20312e31, 0x2e322e32, 
-0x20313939, 0x382f3034, 0x2f323720, 0x32323a31
-0x333a3530, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x24486561, 0x6465723a, 0x202f7072, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f747261, 0x63652e63, 0x2c762031, 0x2e312e32, 
+0x2e322031, 0x3939382f, 0x30342f32, 0x37203232
+0x3a31333a, 0x35302073, 0x6875616e, 0x67204578
+0x70202400, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f64
-0x6174612e, 0x632c7620, 0x312e312e, 0x322e3220
-0x31393938, 0x2f30342f, 0x32372032, 0x323a3133
-0x3a343020, 0x73687561, 0x6e672045, 0x78702024
-0x0, 0x46575f56, 0x45525349, 0x4f4e3a20, 
-0x2331204d, 0x6f6e2046, 0x65622031, 0x2031363a
-0x35393a30, 0x31205053, 0x54203139, 0x39390000, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f646174, 0x612e632c, 0x7620312e, 0x312e322e
+0x32203139, 0x39382f30, 0x342f3237, 0x2032323a
+0x31333a34, 0x30207368, 0x75616e67, 0x20457870
+0x20240000, 0x46575f56, 0x45525349, 0x4f4e3a20, 
+0x23312054, 0x75652041, 0x70722032, 0x30203137
+0x3a32313a, 0x30382050, 0x44542031, 0x39393900, 
 0x46575f43, 0x4f4d5049, 0x4c455f54, 0x494d453a, 
-0x2031363a, 0x35393a30, 0x31000000, 0x46575f43, 
+0x2031373a, 0x32313a30, 0x38000000, 0x46575f43, 
 0x4f4d5049, 0x4c455f42, 0x593a2064, 0x65767263, 
 0x73000000, 0x46575f43, 0x4f4d5049, 0x4c455f48, 
 0x4f53543a, 0x20636f6d, 0x70757465, 0x0, 
@@ -4342,17 +4343,17 @@ u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x2e320000, 0x0, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f6d
-0x656d2e63, 0x2c762031, 0x2e312e32, 0x2e322031
-0x3939382f, 0x30342f32, 0x37203232, 0x3a31333a
-0x34342073, 0x6875616e, 0x67204578, 0x70202400, 
-0x0, 0x24486561, 0x6465723a, 0x202f7072, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f6d656d, 0x2e632c76, 0x20312e31, 0x2e322e32
+0x20313939, 0x382f3034, 0x2f323720, 0x32323a31
+0x333a3434, 0x20736875, 0x616e6720, 0x45787020, 
+0x24000000, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f73
-0x656e642e, 0x632c7620, 0x312e312e, 0x322e3131
-0x20313939, 0x382f3132, 0x2f323220, 0x31373a31
-0x373a3535, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x736e6464, 0x654e6f51, 0x20000000, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f73656e, 0x642e632c, 0x7620312e, 0x312e322e
+0x31312031, 0x3939382f, 0x31322f32, 0x32203137
+0x3a31373a, 0x35352073, 0x6875616e, 0x67204578
+0x70202400, 0x736e6464, 0x654e6f51, 0x20000000, 
 0x6e6f454e, 0x515f5458, 0x0, 0x736e6464, 
 0x744e6f51, 0x20000000, 0x3f6e6f51, 0x64547845, 
 0x0, 0x756e6b72, 0x64747970, 0x65000000, 
@@ -4368,11 +4369,11 @@ u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0xbd80, 0xbd80, 0xbd80, 0xbd64, 
 0xb050, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f72
-0x6563762e, 0x632c7620, 0x312e312e, 0x322e3139
-0x20313939, 0x382f3037, 0x2f323420, 0x32313a33
-0x303a3035, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x706b5278, 0x45525200, 0x66726d32, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f726563, 0x762e632c, 0x7620312e, 0x312e322e
+0x31392031, 0x3939382f, 0x30372f32, 0x34203231
+0x3a33303a, 0x30352073, 0x6875616e, 0x67204578
+0x70202400, 0x706b5278, 0x45525200, 0x66726d32, 
 0x4c617267, 0x65000000, 0x72784e6f, 0x52784264, 
 0x0, 0x72785144, 0x6d614446, 0x0, 
 0x72785144, 0x6d614246, 0x0, 0x3f6e6f51, 
@@ -4392,11 +4393,11 @@ u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x1016c, 0x1016c, 0x10164, 0x10164, 
 0x10164, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f6d
-0x61632e63, 0x2c762031, 0x2e312e32, 0x2e313220
-0x31393938, 0x2f30342f, 0x32372032, 0x323a3133
-0x3a343220, 0x73687561, 0x6e672045, 0x78702024
-0x0, 0x6d616374, 0x7841544e, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f6d6163, 0x2e632c76, 0x20312e31, 0x2e322e31
+0x32203139, 0x39382f30, 0x342f3237, 0x2032323a
+0x31333a34, 0x32207368, 0x75616e67, 0x20457870
+0x20240000, 0x6d616374, 0x7841544e, 0x0, 
 0x4e745379, 0x6e264c6b, 0x0, 0x72656d61, 
 0x73737274, 0x0, 0x6c696e6b, 0x444f574e, 
 0x0, 0x656e714d, 0x45765046, 0x61696c00, 
@@ -4404,27 +4405,27 @@ u32 tigonFwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x456e454d, 0x0, 0x6c696e6b, 0x55500000, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f66772f, 0x636f6d6d, 0x6f6e2f63
-0x6b73756d, 0x2e632c76, 0x20312e31, 0x2e322e32, 
-0x20313939, 0x382f3034, 0x2f323720, 0x32323a31
-0x333a3339, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x50726f62, 0x65506879, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x772f636f, 0x6d6d6f6e
+0x2f636b73, 0x756d2e63, 0x2c762031, 0x2e312e32, 
+0x2e322031, 0x3939382f, 0x30342f32, 0x37203232
+0x3a31333a, 0x33392073, 0x6875616e, 0x67204578
+0x70202400, 0x50726f62, 0x65506879, 0x0, 
 0x6c6e6b41, 0x53535254, 0x0, 0x11994, 
 0x119cc, 0x119e4, 0x11a18, 0x11a44, 
 0x11a58, 0x11a94, 0x11e04, 0x11b6c, 
 0x11bac, 0x11bd8, 0x11c18, 0x11c48, 
 0x11c84, 0x11cb8, 0x11e04, 0x12048, 
 0x12060, 0x12088, 0x120a8, 0x120d0, 
-0x12200, 0x12228, 0x1226c, 0x12294, 
-0x0, 0x124fc, 0x125cc, 0x126a4, 
-0x12774, 0x127d0, 0x128ac, 0x128d4, 
-0x129b0, 0x129d8, 0x12b80, 0x12ba8, 
-0x12d50, 0x12f48, 0x131dc, 0x130f0, 
-0x131dc, 0x13208, 0x12d78, 0x12f20, 
-0x0, 0x135f4, 0x13638, 0x136d0, 
-0x1371c, 0x1378c, 0x13824, 0x13858, 
-0x138e0, 0x13978, 0x13a48, 0x13a88, 
-0x13b0c, 0x13b30, 0x13c64, 0x646f4261, 
+0x12200, 0x12228, 0x1227c, 0x122a4, 
+0x0, 0x1250c, 0x125dc, 0x126b4, 
+0x12784, 0x127e0, 0x128bc, 0x128e4, 
+0x129c0, 0x129e8, 0x12b90, 0x12bb8, 
+0x12d60, 0x12f58, 0x131ec, 0x13100, 
+0x131ec, 0x13218, 0x12d88, 0x12f30, 
+0x0, 0x13604, 0x13648, 0x136e0, 
+0x1372c, 0x1379c, 0x13834, 0x13868, 
+0x138f0, 0x13988, 0x13a58, 0x13a98, 
+0x13b1c, 0x13b40, 0x13c74, 0x646f4261, 
 0x73655067, 0x0, 0x0, 0x0, 
 0x0, 0x73746d61, 0x634c4e4b, 0x0, 
 0x0, 0x0 };
@@ -4454,24 +4455,24 @@ u32 tigonFwData[(MAX_DATA_LEN/4) + 1] __initdata = {
 /* Generated by genfw.c */
 int tigon2FwReleaseMajor = 0xc;
 int tigon2FwReleaseMinor = 0x3;
-int tigon2FwReleaseFix = 0x5;
+int tigon2FwReleaseFix = 0xa;
 u32 tigon2FwStartAddr = 0x00004000;
 u32 tigon2FwTextAddr = 0x00004000;
-int tigon2FwTextLen = 0xec80;
-u32 tigon2FwRodataAddr = 0x00012c80;
-int tigon2FwRodataLen = 0xfb0;
-u32 tigon2FwDataAddr = 0x00013c50;
+int tigon2FwTextLen = 0xed40;
+u32 tigon2FwRodataAddr = 0x00012d40;
+int tigon2FwRodataLen = 0xff0;
+u32 tigon2FwDataAddr = 0x00013d60;
 int tigon2FwDataLen = 0x170;
-u32 tigon2FwSbssAddr = 0x00013dc0;
+u32 tigon2FwSbssAddr = 0x00013ed0;
 int tigon2FwSbssLen = 0xbc;
-u32 tigon2FwBssAddr = 0x00013e80;
+u32 tigon2FwBssAddr = 0x00013f90;
 int tigon2FwBssLen = 0x20c0;
 u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 
 0x10000003, 0x0, 0xd, 0xd, 
-0x3c1d0001, 0x8fbd3ca0, 0x3a0f021, 0x3c100000, 
+0x3c1d0001, 0x8fbd3db0, 0x3a0f021, 0x3c100000, 
 0x26104000, 0xc0010c0, 0x0, 0xd, 
-0x3c1d0001, 0x8fbd3ca4, 0x3a0f021, 0x3c100000, 
+0x3c1d0001, 0x8fbd3db4, 0x3a0f021, 0x3c100000, 
 0x26104000, 0xc00178d, 0x0, 0xd, 
 0x0, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x0, 
@@ -4485,19 +4486,19 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x2000008, 
 0x0, 0x80016de, 0x3c0a0001, 0x80016de, 
-0x3c0a0002, 0x80016de, 0x0, 0x8002acd, 
-0x0, 0x8002a70, 0x0, 0x80016de, 
-0x3c0a0004, 0x8003095, 0x0, 0x8001a0e, 
-0x0, 0x800373f, 0x0, 0x80036e6
-0x0, 0x80016de, 0x3c0a0006, 0x80037ad
+0x3c0a0002, 0x80016de, 0x0, 0x8002afd, 
+0x0, 0x8002aa0, 0x0, 0x80016de, 
+0x3c0a0004, 0x80030d1, 0x0, 0x8001a0e, 
+0x0, 0x8003779, 0x0, 0x8003720
+0x0, 0x80016de, 0x3c0a0006, 0x80037e7
 0x3c0a0007, 0x80016de, 0x3c0a0008, 0x80016de, 
-0x3c0a0009, 0x8003805, 0x0, 0x8002cc0
+0x3c0a0009, 0x800383f, 0x0, 0x8002cf7
 0x0, 0x80016de, 0x3c0a000b, 0x80016de, 
-0x3c0a000c, 0x80016de, 0x3c0a000d, 0x80027ac
+0x3c0a000c, 0x80016de, 0x3c0a000d, 0x80027c5
 0x0, 0x800275a, 0x0, 0x80016de, 
 0x3c0a000e, 0x8001f28, 0x0, 0x8001920, 
-0x0, 0x80019c0, 0x0, 0x8003a70
-0x0, 0x8003a5e, 0x0, 0x80016de, 
+0x0, 0x80019c0, 0x0, 0x8003aa8
+0x0, 0x8003a96, 0x0, 0x80016de, 
 0x0, 0x80018c6, 0x0, 0x80016de, 
 0x0, 0x80016de, 0x3c0a0013, 0x80016de, 
 0x3c0a0014, 0x0, 0x0, 0x0, 
@@ -4517,79 +4518,79 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x27bdffe0, 
 0x3c1cc000, 0xafbf001c, 0xafb00018, 0x8f820140, 
-0x24030003, 0xaf8300ec, 0x34420004, 0xc0029b8, 
+0x24030003, 0xaf8300ec, 0x34420004, 0xc0029e8, 
 0xaf820140, 0x3c0100c0, 0xc001712, 0xac203ffc, 
-0x403021, 0x3c020008, 0x3c010001, 0xac263dd8, 
+0x403021, 0x3c020008, 0x3c010001, 0xac263ee8, 
 0x50c2000d, 0x3c020003, 0x3c100010, 0x10d00009, 
-0x24050100, 0x3c040001, 0x24842d34, 0x3821, 
-0xafa00010, 0xc0029d3, 0xafa00014, 0x3c010001, 
-0xac303dd8, 0x3c020003, 0x34422000, 0x3c010001, 
-0xac223de8, 0x24020008, 0x3c010001, 0xac223df0, 
-0x2402001f, 0x3c010001, 0xac223e00, 0x24020016, 
-0x3c010001, 0xac223dd4, 0x3c05fffe, 0x34a56f08, 
-0x3c020001, 0x8c423dd8, 0x3c030001, 0x24635f40, 
-0x3c040001, 0x8c843c54, 0x431023, 0x14800002, 
+0x24050100, 0x3c040001, 0x24842df4, 0x3821, 
+0xafa00010, 0xc002a03, 0xafa00014, 0x3c010001, 
+0xac303ee8, 0x3c020003, 0x34422000, 0x3c010001, 
+0xac223ef8, 0x24020008, 0x3c010001, 0xac223f00, 
+0x2402001f, 0x3c010001, 0xac223f10, 0x24020016, 
+0x3c010001, 0xac223ee4, 0x3c05fffe, 0x34a56f08, 
+0x3c020001, 0x8c423ee8, 0x3c030001, 0x24636050, 
+0x3c040001, 0x8c843d64, 0x431023, 0x14800002, 
 0x458021, 0x2610fa48, 0x2402f000, 0x2028024, 
 0xc001734, 0x2002021, 0x2022823, 0x3c040020, 
 0x821823, 0x651823, 0x247bb000, 0x3c03fffe, 
 0x3463bf08, 0x363b821, 0x3c0600bf, 0x34c6f000, 
-0x3c070001, 0x8ce73c50, 0x3c0300bf, 0x3463e000, 
-0x852023, 0x3c010001, 0xac243de4, 0x822023, 
-0x3c010001, 0xac223dc0, 0x27620ffc, 0x3c010001, 
-0xac223ca0, 0x27621ffc, 0xdb3023, 0x7b1823, 
-0x3c010001, 0xac253dcc, 0x3c010001, 0xac243dc4, 
-0x3c010001, 0xac223ca4, 0xaf860150, 0x10e00011, 
-0xaf830250, 0x3c1d0001, 0x8fbd3c5c, 0x3a0f021, 
-0xc0016f8, 0x0, 0x3c020001, 0x8c423c60, 
-0x3c030001, 0x8c633c64, 0x2442fe00, 0x24630200, 
-0x3c010001, 0xac223c60, 0x3c010001, 0x10000004, 
-0xac233c64, 0x3c1d0001, 0x8fbd3ca0, 0x3a0f021, 
-0x3c020001, 0x8c423c54, 0x1040000d, 0x26fafa48, 
-0x3c020001, 0x8c423c60, 0x3c030001, 0x8c633c64, 
-0x3c1a0001, 0x8f5a3c64, 0x2442fa48, 0x246305b8, 
-0x3c010001, 0xac223c60, 0x3c010001, 0xac233c64, 
-0x3c020001, 0x8c423c58, 0x14400003, 0x0, 
-0x3c010001, 0xac203c60, 0xc00114d, 0x0, 
+0x3c070001, 0x8ce73d60, 0x3c0300bf, 0x3463e000, 
+0x852023, 0x3c010001, 0xac243ef4, 0x822023, 
+0x3c010001, 0xac223ed0, 0x27620ffc, 0x3c010001, 
+0xac223db0, 0x27621ffc, 0xdb3023, 0x7b1823, 
+0x3c010001, 0xac253edc, 0x3c010001, 0xac243ed4, 
+0x3c010001, 0xac223db4, 0xaf860150, 0x10e00011, 
+0xaf830250, 0x3c1d0001, 0x8fbd3d6c, 0x3a0f021, 
+0xc0016f8, 0x0, 0x3c020001, 0x8c423d70, 
+0x3c030001, 0x8c633d74, 0x2442fe00, 0x24630200, 
+0x3c010001, 0xac223d70, 0x3c010001, 0x10000004, 
+0xac233d74, 0x3c1d0001, 0x8fbd3db0, 0x3a0f021, 
+0x3c020001, 0x8c423d64, 0x1040000d, 0x26fafa48, 
+0x3c020001, 0x8c423d70, 0x3c030001, 0x8c633d74, 
+0x3c1a0001, 0x8f5a3d74, 0x2442fa48, 0x246305b8, 
+0x3c010001, 0xac223d70, 0x3c010001, 0xac233d74, 
+0x3c020001, 0x8c423d68, 0x14400003, 0x0, 
+0x3c010001, 0xac203d70, 0xc00114d, 0x0, 
 0x8fbf001c, 0x8fb00018, 0x3e00008, 0x27bd0020, 
-0x3c020001, 0x8c423c60, 0x3c030001, 0x8c633c64, 
-0x27bdffa0, 0xafb00040, 0x3c100001, 0x8e1036f4
-0x3c040001, 0x24842d40, 0xafbf0058, 0xafbe0054, 
+0x3c020001, 0x8c423d70, 0x3c030001, 0x8c633d74, 
+0x27bdffa0, 0xafb00040, 0x3c100001, 0x8e1037d8
+0x3c040001, 0x24842e00, 0xafbf0058, 0xafbe0054, 
 0xafb50050, 0xafb3004c, 0xafb20048, 0xafb10044, 
 0xafa20034, 0xafa30030, 0xafa00010, 0xafa00014, 
-0x8f860040, 0x24050200, 0xc0029d3, 0x2003821, 
+0x8f860040, 0x24050200, 0xc002a03, 0x2003821, 
 0x8f830040, 0x3c02f000, 0x621824, 0x3c026000, 
 0x1062000b, 0xa3a0003f, 0x240e0001, 0x3c040001, 
-0x24842d48, 0xa3ae003f, 0xafa00010, 0xafa00014, 
-0x8f860040, 0x24050300, 0xc0029d3, 0x2003821, 
+0x24842e08, 0xa3ae003f, 0xafa00010, 0xafa00014, 
+0x8f860040, 0x24050300, 0xc002a03, 0x2003821, 
 0x8f820240, 0x3c030001, 0x431025, 0xaf820240, 
 0xaf800048, 0x8f820048, 0x14400005, 0x0, 
 0xaf800048, 0x8f820048, 0x10400004, 0x0, 
 0xaf800048, 0x10000003, 0x2e02021, 0xaf80004c, 
-0x2e02021, 0x3c050001, 0xc002a40, 0x34a540f8, 
-0x3402021, 0xc002a40, 0x240505b8, 0x3c020001, 
-0x8c423de4, 0x3c0d0001, 0x8dad3dc4, 0x3c030001, 
-0x8c633dc0, 0x3c080001, 0x8d083dcc, 0x3c090001, 
-0x8d293de8, 0x3c0a0001, 0x8d4a3df0, 0x3c0b0001, 
-0x8d6b3e00, 0x3c0c0001, 0x8d8c3dd4, 0x3c040001, 
-0x24842d54, 0x24050400, 0xaf420130, 0x8f420130, 
+0x2e02021, 0x3c050001, 0xc002a70, 0x34a540f8, 
+0x3402021, 0xc002a70, 0x240505b8, 0x3c020001, 
+0x8c423ef4, 0x3c0d0001, 0x8dad3ed4, 0x3c030001, 
+0x8c633ed0, 0x3c080001, 0x8d083edc, 0x3c090001, 
+0x8d293ef8, 0x3c0a0001, 0x8d4a3f00, 0x3c0b0001, 
+0x8d6b3f10, 0x3c0c0001, 0x8d8c3ee4, 0x3c040001, 
+0x24842e14, 0x24050400, 0xaf420130, 0x8f420130, 
 0x24060001, 0x24070001, 0xaf400000, 0xaf4d012c, 
 0xaf430138, 0xaf48013c, 0xaf490140, 0xaf4a0144, 
 0xaf4b0148, 0xaf4c014c, 0x2442ff80, 0xaf420134, 
-0x24020001, 0xafa20010, 0xc0029d3, 0xafa00014, 
+0x24020001, 0xafa20010, 0xc002a03, 0xafa00014, 
 0x8f42012c, 0xafa20010, 0x8f420130, 0xafa20014, 
-0x8f460138, 0x8f47013c, 0x3c040001, 0x24842d60, 
-0xc0029d3, 0x24050500, 0xafb70010, 0xafba0014, 
-0x8f460140, 0x8f470144, 0x3c040001, 0x24842d6c, 
-0xc0029d3, 0x24050600, 0x3c020001, 0x8c423dd8, 
-0x3603821, 0x3c060001, 0x24c65f40, 0x2448ffff, 
+0x8f460138, 0x8f47013c, 0x3c040001, 0x24842e20, 
+0xc002a03, 0x24050500, 0xafb70010, 0xafba0014, 
+0x8f460140, 0x8f470144, 0x3c040001, 0x24842e2c, 
+0xc002a03, 0x24050600, 0x3c020001, 0x8c423ee8, 
+0x3603821, 0x3c060001, 0x24c66050, 0x2448ffff, 
 0x1061824, 0xe81024, 0x43102b, 0x10400006, 
-0x24050900, 0x3c040001, 0x24842d78, 0xafa80010, 
-0xc0029d3, 0xafa00014, 0x8f82000c, 0xafa20010, 
+0x24050900, 0x3c040001, 0x24842e38, 0xafa80010, 
+0xc002a03, 0xafa00014, 0x8f82000c, 0xafa20010, 
 0x8f82003c, 0xafa20014, 0x8f860000, 0x8f870004, 
-0x3c040001, 0x24842d84, 0xc0029d3, 0x24051000, 
+0x3c040001, 0x24842e44, 0xc002a03, 0x24051000, 
 0x8c020220, 0x8c030224, 0x8c060218, 0x8c07021c, 
-0x3c040001, 0x24842d8c, 0x24051100, 0xafa20010, 
-0xc0029d3, 0xafa30014, 0xaf800054, 0xaf80011c, 
+0x3c040001, 0x24842e4c, 0x24051100, 0xafa20010, 
+0xc002a03, 0xafa30014, 0xaf800054, 0xaf80011c, 
 0x8c020218, 0x30420002, 0x10400009, 0x0, 
 0x8c020220, 0x3c030002, 0x34630004, 0x431025, 
 0xaf42000c, 0x8c02021c, 0x10000008, 0x34420004, 
@@ -4611,7 +4612,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x431025, 0xaf8200b0, 0x8f8200b0, 0x30420004, 
 0x1440fffd, 0x24051200, 0x96e20472, 0x96e60452, 
 0x96e70462, 0xafa20010, 0x96e20482, 0x3c040001, 
-0x24842d94, 0xc0029d3, 0xafa20014, 0x96f00452, 
+0x24842e54, 0xc002a03, 0xafa20014, 0x96f00452, 
 0x32020001, 0x10400002, 0xb021, 0x24160001, 
 0x32020002, 0x54400001, 0x36d60002, 0x32020008, 
 0x54400001, 0x36d60004, 0x32020010, 0x54400001, 
@@ -4624,8 +4625,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x14400004, 0x3207009b, 0x30c2009b, 0x14e20007, 
 0x240e0001, 0x32c22000, 0x1440000d, 0x32020001, 
 0x3062009b, 0x10e20009, 0x240e0001, 0x3c040001, 
-0x24842da0, 0x24051300, 0x2003821, 0xa3ae003f, 
-0xafa30010, 0xc0029d3, 0xafa00014, 0x32020001, 
+0x24842e60, 0x24051300, 0x2003821, 0xa3ae003f, 
+0xafa30010, 0xc002a03, 0xafa00014, 0x32020001, 
 0x54400001, 0x36d60080, 0x32020002, 0x54400001, 
 0x36d60100, 0x32020008, 0x54400001, 0x36d60200, 
 0x32020010, 0x54400001, 0x36d60400, 0x32020080, 
@@ -4649,191 +4650,191 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaf420180, 0xaf430184, 0x8ee20478, 0x8ee3047c, 
 0xaf420188, 0xaf43018c, 0x8ee20488, 0x8ee3048c, 
 0xaf420190, 0xaf430194, 0x8ee204b0, 0x8ee304b4, 
-0x24040080, 0xaf420198, 0xaf43019c, 0xc002a40, 
+0x24040080, 0xaf420198, 0xaf43019c, 0xc002a70, 
 0x24050080, 0x8c02025c, 0x27440214, 0xaf4201e0, 
-0x8c020260, 0x24050200, 0x24060008, 0xc002a57, 
+0x8c020260, 0x24050200, 0x24060008, 0xc002a87, 
 0xaf4201e8, 0x3c043b9a, 0x3484ca00, 0x3821, 
 0x24020006, 0x24030002, 0xaf4201e4, 0x240203e8, 
 0xaf4301f4, 0xaf4301f0, 0xaf4401ec, 0xaf420284, 
 0x24020001, 0xaf430280, 0xaf42028c, 0x3c030001, 
-0x671821, 0x90633c68, 0x3471021, 0x24e70001, 
+0x671821, 0x90633d78, 0x3471021, 0x24e70001, 
 0xa043021c, 0x2ce2000f, 0x1440fff8, 0x3471821, 
 0x24e70001, 0x3c080001, 0x350840f8, 0x8f820040, 
-0x3c040001, 0x24842dac, 0x24051400, 0x21702, 
+0x3c040001, 0x24842e6c, 0x24051400, 0x21702, 
 0x24420030, 0xa062021c, 0x3471021, 0xa040021c, 
 0x8c070218, 0x2c03021, 0x240205b8, 0xafa20010, 
-0xc0029d3, 0xafa80014, 0x3c040001, 0x24842db8, 
+0xc002a03, 0xafa80014, 0x3c040001, 0x24842e78, 
 0x3c050000, 0x24a55b3c, 0x24060010, 0x27b10030, 
 0x2203821, 0x27b30034, 0xc001750, 0xafb30010, 
-0x3c030001, 0x8c633c58, 0x1060000a, 0x408021, 
+0x3c030001, 0x8c633d68, 0x1060000a, 0x408021, 
 0x8fa30030, 0x2405ff00, 0x8fa20034, 0x246400ff, 
 0x852024, 0x831823, 0x431023, 0xafa20034, 
-0xafa40030, 0xafb30010, 0x3c040001, 0x24842dc4, 
+0xafa40030, 0xafb30010, 0x3c040001, 0x24842e84, 
 0x3c050000, 0x24a54100, 0x24060108, 0xc001750, 
 0x2203821, 0x409021, 0x32c20003, 0x50400045, 
 0x2203821, 0x8f820050, 0x3c030010, 0x431024, 
 0x10400016, 0x0, 0x8c020218, 0x30420040, 
 0x1040000f, 0x24020001, 0x8f820050, 0x8c030218, 
-0x240e0001, 0x3c040001, 0x24842dd0, 0xa3ae003f, 
+0x240e0001, 0x3c040001, 0x24842e90, 0xa3ae003f, 
 0xafa20010, 0xafa30014, 0x8f870040, 0x24051500, 
-0xc0029d3, 0x2c03021, 0x10000004, 0x0, 
+0xc002a03, 0x2c03021, 0x10000004, 0x0, 
 0x3c010001, 0x370821, 0xa02240f4, 0x3c040001, 
-0x24842ddc, 0x3c050001, 0x24a59ce8, 0x3c060001, 
+0x24842e9c, 0x3c050001, 0x24a59ce8, 0x3c060001, 
 0x24c69d60, 0xc53023, 0x8f420010, 0x27b30030, 
 0x2603821, 0x27b10034, 0x34420a00, 0xaf420010, 
-0xc001750, 0xafb10010, 0x3c040001, 0x24842df0, 
-0x3c050001, 0x24a5af7c, 0x3c060001, 0x24c6b2f8
+0xc001750, 0xafb10010, 0x3c040001, 0x24842eb0, 
+0x3c050001, 0x24a5b058, 0x3c060001, 0x24c6b3d4
 0xc53023, 0x2603821, 0xaf420108, 0xc001750, 
-0xafb10010, 0x3c040001, 0x24842e0c, 0x3c050001, 
-0x24a5b714, 0x3c060001, 0x24c6c1d4, 0xc53023, 
-0x2603821, 0x3c010001, 0xac223e30, 0xc001750, 
-0xafb10010, 0x3c040001, 0x24842e24, 0x10000024, 
-0x24051600, 0x3c040001, 0x24842e2c, 0x3c050001, 
+0xafb10010, 0x3c040001, 0x24842ecc, 0x3c050001, 
+0x24a5b7e4, 0x3c060001, 0x24c6c2c8, 0xc53023, 
+0x2603821, 0x3c010001, 0xac223f40, 0xc001750, 
+0xafb10010, 0x3c040001, 0x24842ee4, 0x10000024, 
+0x24051600, 0x3c040001, 0x24842eec, 0x3c050001, 
 0x24a59bb4, 0x3c060001, 0x24c69ce0, 0xc53023, 
-0xc001750, 0xafb30010, 0x3c040001, 0x24842e3c, 
-0x3c050001, 0x24a5ab34, 0x3c060001, 0x24c6af74
+0xc001750, 0xafb30010, 0x3c040001, 0x24842efc, 
+0x3c050001, 0x24a5abf4, 0x3c060001, 0x24c6b050
 0xc53023, 0x2203821, 0xaf420108, 0xc001750, 
-0xafb30010, 0x3c040001, 0x24842e50, 0x3c050001, 
-0x24a5b300, 0x3c060001, 0x24c6b70c, 0xc53023, 
-0x2203821, 0x3c010001, 0xac223e30, 0xc001750, 
-0xafb30010, 0x3c040001, 0x24842e64, 0x24051650, 
-0x2c03021, 0x3821, 0x3c010001, 0xac223e34, 
-0xafa00010, 0xc0029d3, 0xafa00014, 0x32c20020, 
-0x10400021, 0x27a70030, 0x3c040001, 0x24842e70, 
-0x3c050001, 0x24a5a9c0, 0x3c060001, 0x24c6ab2c, 
+0xafb30010, 0x3c040001, 0x24842f10, 0x3c050001, 
+0x24a5b3dc, 0x3c060001, 0x24c6b7dc, 0xc53023, 
+0x2203821, 0x3c010001, 0xac223f40, 0xc001750, 
+0xafb30010, 0x3c040001, 0x24842f24, 0x24051650, 
+0x2c03021, 0x3821, 0x3c010001, 0xac223f44, 
+0xafa00010, 0xc002a03, 0xafa00014, 0x32c20020, 
+0x10400021, 0x27a70030, 0x3c040001, 0x24842f30, 
+0x3c050001, 0x24a5aa80, 0x3c060001, 0x24c6abec, 
 0xc53023, 0x24022000, 0xaf42001c, 0x27a20034, 
 0xc001750, 0xafa20010, 0x21900, 0x31982, 
 0x3c040800, 0x641825, 0xae430028, 0x24030010, 
 0xaf43003c, 0x96e30450, 0xaf430040, 0x8f430040, 
-0x3c040001, 0x24842e84, 0xafa00014, 0xafa30010, 
-0x8f47001c, 0x24051660, 0x3c010001, 0xac223e2c, 
+0x3c040001, 0x24842f44, 0xafa00014, 0xafa30010, 
+0x8f47001c, 0x24051660, 0x3c010001, 0xac223f3c, 
 0x10000025, 0x32c60020, 0x8ee20448, 0x8ee3044c, 
 0xaf43001c, 0x8f42001c, 0x2442e000, 0x2c422001, 
-0x1440000a, 0x240e0001, 0x3c040001, 0x24842e90, 
+0x1440000a, 0x240e0001, 0x3c040001, 0x24842f50, 
 0xa3ae003f, 0xafa00010, 0xafa00014, 0x8f46001c, 
-0x24051700, 0xc0029d3, 0x3821, 0x3c020000, 
+0x24051700, 0xc002a03, 0x3821, 0x3c020000, 
 0x24425b78, 0x21100, 0x21182, 0x3c030800, 
 0x431025, 0xae420028, 0x24020008, 0xaf42003c, 
 0x96e20450, 0xaf420040, 0x8f420040, 0x3c040001, 
-0x24842e9c, 0xafa00014, 0xafa20010, 0x8f47001c, 
-0x24051800, 0x32c60020, 0xc0029d3, 0x0, 
-0x3c030001, 0x8c633e30, 0x3c050fff, 0x34a5ffff, 
-0x3c020001, 0x8c423e34, 0x3c040800, 0x651824, 
+0x24842f5c, 0xafa00014, 0xafa20010, 0x8f47001c, 
+0x24051800, 0x32c60020, 0xc002a03, 0x0, 
+0x3c030001, 0x8c633f40, 0x3c050fff, 0x34a5ffff, 
+0x3c020001, 0x8c423f44, 0x3c040800, 0x651824, 
 0x31882, 0x641825, 0x451024, 0x21082, 
 0x441025, 0xae420080, 0x32c20180, 0x10400056, 
 0xae430020, 0x8f82005c, 0x3c030080, 0x431024, 
 0x1040000d, 0x0, 0x8f820050, 0xafa20010, 
-0x8f82005c, 0x240e0001, 0x3c040001, 0x24842ea8, 
+0x8f82005c, 0x240e0001, 0x3c040001, 0x24842f68, 
 0xa3ae003f, 0xafa20014, 0x8f870040, 0x24051900, 
-0xc0029d3, 0x2c03021, 0x8f820050, 0x3c030010, 
+0xc002a03, 0x2c03021, 0x8f820050, 0x3c030010, 
 0x431024, 0x10400016, 0x0, 0x8c020218, 
 0x30420040, 0x1040000f, 0x24020001, 0x8f820050, 
-0x8c030218, 0x240e0001, 0x3c040001, 0x24842dd0, 
+0x8c030218, 0x240e0001, 0x3c040001, 0x24842e90, 
 0xa3ae003f, 0xafa20010, 0xafa30014, 0x8f870040, 
-0x24052000, 0xc0029d3, 0x2c03021, 0x10000004, 
+0x24052000, 0xc002a03, 0x2c03021, 0x10000004, 
 0x0, 0x3c010001, 0x370821, 0xa02240f4, 
-0x3c040001, 0x24842eb4, 0x3c050001, 0x24a59b2c, 
+0x3c040001, 0x24842f74, 0x3c050001, 0x24a59b2c, 
 0x3c060001, 0x24c69bac, 0xc53023, 0x8f420008, 
 0x27b30030, 0x2603821, 0x27b10034, 0x34420e00, 
 0xaf420008, 0xc001750, 0xafb10010, 0x3c040001, 
-0x24842ecc, 0x3c050001, 0x24a5d090, 0x3c060001, 
-0x24c6db90, 0xc53023, 0x2603821, 0xaf42010c, 
-0xc001750, 0xafb10010, 0x3c040001, 0x24842ee4, 
-0x3c050001, 0x24a5e174, 0x3c060001, 0x24c6e860
-0xc53023, 0x2603821, 0x3c010001, 0xac223e40, 
-0xc001750, 0xafb10010, 0x3c040001, 0x24842efc, 
-0x10000027, 0x24052100, 0x3c040001, 0x24842f04, 
+0x24842f8c, 0x3c050001, 0x24a5d180, 0x3c060001, 
+0x24c6dc78, 0xc53023, 0x2603821, 0xaf42010c, 
+0xc001750, 0xafb10010, 0x3c040001, 0x24842fa4, 
+0x3c050001, 0x24a5e25c, 0x3c060001, 0x24c6e948
+0xc53023, 0x2603821, 0x3c010001, 0xac223f50, 
+0xc001750, 0xafb10010, 0x3c040001, 0x24842fbc, 
+0x10000027, 0x24052100, 0x3c040001, 0x24842fc4, 
 0x3c050001, 0x24a599e8, 0x3c060001, 0x24c69b24, 
 0xc53023, 0x27b10030, 0x2203821, 0x27b30034, 
-0xc001750, 0xafb30010, 0x3c040001, 0x24842f14, 
-0x3c050001, 0x24a5c300, 0x3c060001, 0x24c6d088, 
+0xc001750, 0xafb30010, 0x3c040001, 0x24842fd4, 
+0x3c050001, 0x24a5c3f0, 0x3c060001, 0x24c6d178, 
 0xc53023, 0x2203821, 0xaf42010c, 0xc001750, 
-0xafb30010, 0x3c040001, 0x24842f24, 0x3c050001, 
-0x24a5e014, 0x3c060001, 0x24c6e16c, 0xc53023, 
-0x2203821, 0x3c010001, 0xac223e40, 0xc001750, 
-0xafb30010, 0x3c040001, 0x24842f38, 0x24052150, 
-0x2c03021, 0x3821, 0x3c010001, 0xac223e4c, 
-0xafa00010, 0xc0029d3, 0xafa00014, 0x3c030001, 
-0x8c633e40, 0x3c110fff, 0x3631ffff, 0x3c020001, 
-0x8c423e4c, 0x3c1e0800, 0x711824, 0x31882, 
+0xafb30010, 0x3c040001, 0x24842fe4, 0x3c050001, 
+0x24a5e0fc, 0x3c060001, 0x24c6e254, 0xc53023, 
+0x2203821, 0x3c010001, 0xac223f50, 0xc001750, 
+0xafb30010, 0x3c040001, 0x24842ff8, 0x24052150, 
+0x2c03021, 0x3821, 0x3c010001, 0xac223f5c, 
+0xafa00010, 0xc002a03, 0xafa00014, 0x3c030001, 
+0x8c633f50, 0x3c110fff, 0x3631ffff, 0x3c020001, 
+0x8c423f5c, 0x3c1e0800, 0x711824, 0x31882, 
 0x7e1825, 0x511024, 0x21082, 0x5e1025, 
 0xae430038, 0xae420078, 0x8c020218, 0x30420040, 
 0x14400004, 0x24020001, 0x3c010001, 0x370821, 
-0xa02240f4, 0x3c040001, 0x24842f44, 0x3c050001, 
-0x24a5db98, 0x3c060001, 0x24c6dcf4, 0xc53023, 
+0xa02240f4, 0x3c040001, 0x24843004, 0x3c050001, 
+0x24a5dc80, 0x3c060001, 0x24c6dddc, 0xc53023, 
 0x27b50030, 0x2a03821, 0x27b30034, 0xc001750, 
-0xafb30010, 0x3c010001, 0xac223e38, 0x511024, 
+0xafb30010, 0x3c010001, 0xac223f48, 0x511024, 
 0x21082, 0x5e1025, 0xae420050, 0x32c22000, 
 0x10400005, 0x2a03821, 0x3c020000, 0x24425b78, 
-0x1000000d, 0x511024, 0x3c040001, 0x24842f58, 
-0x3c050001, 0x24a5dcfc, 0x3c060001, 0x24c6deac
+0x1000000d, 0x511024, 0x3c040001, 0x24843018, 
+0x3c050001, 0x24a5dde4, 0x3c060001, 0x24c6df94
 0xc53023, 0xc001750, 0xafb30010, 0x3c010001, 
-0xac223e50, 0x511024, 0x21082, 0x5e1025, 
+0xac223f60, 0x511024, 0x21082, 0x5e1025, 
 0xae420048, 0x32c24000, 0x10400005, 0x27a70030, 
 0x3c020000, 0x24425b78, 0x1000000e, 0x21100, 
-0x3c040001, 0x24842f70, 0x3c050001, 0x24a5deb4
-0x3c060001, 0x24c6e00c, 0xc53023, 0x27a20034, 
-0xc001750, 0xafa20010, 0x3c010001, 0xac223e44, 
+0x3c040001, 0x24843030, 0x3c050001, 0x24a5df9c
+0x3c060001, 0x24c6e0f4, 0xc53023, 0x27a20034, 
+0xc001750, 0xafa20010, 0x3c010001, 0xac223f54, 
 0x21100, 0x21182, 0x3c030800, 0x431025, 
-0xae420060, 0x3c040001, 0x24842f88, 0x3c050000, 
+0xae420060, 0x3c040001, 0x24843048, 0x3c050000, 
 0x24a57ca0, 0x3c060001, 0x24c680c4, 0xc53023, 
 0x27b10030, 0x2203821, 0x27b30034, 0xc001750, 
 0xafb30010, 0x3c1e0fff, 0x37deffff, 0x3c040001, 
-0x24842f94, 0x3c050000, 0x24a56318, 0x3c060000, 
+0x24843054, 0x3c050000, 0x24a56318, 0x3c060000, 
 0x24c66478, 0xc53023, 0x2203821, 0x3c010001, 
-0xac223e18, 0x5e1024, 0x21082, 0x3c150800, 
+0xac223f28, 0x5e1024, 0x21082, 0x3c150800, 
 0x551025, 0xae4200b8, 0xc001750, 0xafb30010, 
-0x3c040001, 0x24842fa0, 0x3c050000, 0x24a56480, 
+0x3c040001, 0x24843060, 0x3c050000, 0x24a56480, 
 0x3c060000, 0x24c666f8, 0xc53023, 0x2203821, 
-0x3c010001, 0xac223e0c, 0x5e1024, 0x21082, 
+0x3c010001, 0xac223f1c, 0x5e1024, 0x21082, 
 0x551025, 0xae4200e8, 0xc001750, 0xafb30010, 
-0x3c040001, 0x24842fb8, 0x3c050000, 0x24a56700, 
+0x3c040001, 0x24843078, 0x3c050000, 0x24a56700, 
 0x3c060000, 0x24c66830, 0xc53023, 0x2203821, 
-0x3c010001, 0xac223e04, 0x5e1024, 0x21082, 
+0x3c010001, 0xac223f14, 0x5e1024, 0x21082, 
 0x551025, 0xae4200c0, 0xc001750, 0xafb30010, 
-0x3c040001, 0x24842fd0, 0x3c050001, 0x24a5f240, 
-0x3c060001, 0x24c6f318, 0xc53023, 0x2203821, 
-0x3c010001, 0xac223e10, 0x5e1024, 0x21082, 
+0x3c040001, 0x24843090, 0x3c050001, 0x24a5f300, 
+0x3c060001, 0x24c6f3d8, 0xc53023, 0x2203821, 
+0x3c010001, 0xac223f20, 0x5e1024, 0x21082, 
 0x551025, 0xae4200c8, 0xc001750, 0xafb30010, 
-0x3c040001, 0x24842fdc, 0x3c050001, 0x24a5c1e0, 
-0x3c060001, 0x24c6c21c, 0xc53023, 0x2203821, 
+0x3c040001, 0x2484309c, 0x3c050001, 0x24a5c2d0, 
+0x3c060001, 0x24c6c30c, 0xc53023, 0x2203821, 
 0xaf420110, 0xc001750, 0xafb30010, 0x3c040001, 
-0x24842fec, 0x3c050001, 0x24a5c224, 0x3c060001, 
-0x24c6c24c, 0xc53023, 0x2203821, 0xaf420114, 
-0xc001750, 0xafb30010, 0x3c040001, 0x24842ff8, 
-0x3c050001, 0x24a5e9c0, 0x3c060001, 0x24c6eeac
+0x248430ac, 0x3c050001, 0x24a5c314, 0x3c060001, 
+0x24c6c33c, 0xc53023, 0x2203821, 0xaf420114, 
+0xc001750, 0xafb30010, 0x3c040001, 0x248430b8, 
+0x3c050001, 0x24a5eaa0, 0x3c060001, 0x24c6ef78
 0xc53023, 0x2203821, 0xaf420118, 0xc001750, 
-0xafb30010, 0x3c010001, 0xac223e54, 0x5e1024, 
-0x21082, 0x551025, 0xc003d9f, 0xae4200d0, 
-0xc003a1c, 0x0, 0xc002630, 0x0, 
+0xafb30010, 0x3c010001, 0xac223f64, 0x5e1024, 
+0x21082, 0x551025, 0xc003dcf, 0xae4200d0, 
+0xc003a54, 0x0, 0xc002630, 0x0, 
 0xac000228, 0xac00022c, 0x96e20450, 0x2442ffff, 
 0xaf420038, 0x96e20460, 0xaf420080, 0x32c24000, 
 0x14400003, 0x0, 0x96e20480, 0xaf420084, 
 0x96e70490, 0x50e00001, 0x24070800, 0x24e2ffff, 
 0xaf420088, 0xaf42007c, 0x24020800, 0x10e2000f, 
 0x32c24000, 0x10400003, 0x24020400, 0x10e2000b, 
-0x0, 0x240e0001, 0x3c040001, 0x24843008, 
+0x0, 0x240e0001, 0x3c040001, 0x248430c8, 
 0xa3ae003f, 0x96e60490, 0x24052170, 0x2c03821, 
-0xafa00010, 0xc0029d3, 0xafa00014, 0x8f43012c, 
+0xafa00010, 0xc002a03, 0xafa00014, 0x8f43012c, 
 0x8f44012c, 0x24020001, 0xa34205b3, 0xaf430094, 
 0xaf440098, 0xafa00010, 0xafa00014, 0x8f460080, 
-0x8f470084, 0x3c040001, 0x24843014, 0xc0029d3, 
+0x8f470084, 0x3c040001, 0x248430d4, 0xc002a03, 
 0x24052200, 0xc00232c, 0x3c110800, 0x3c1433d8, 
 0x3694cb58, 0x3c020800, 0x34420080, 0x3c040001, 
-0x24843020, 0x3c050000, 0x24a55bbc, 0x3c060000, 
+0x248430e0, 0x3c050000, 0x24a55bbc, 0x3c060000, 
 0x24c65bd8, 0xc53023, 0x27a70030, 0xaf820060, 
 0x2402ffff, 0xaf820064, 0x27a20034, 0xc001750, 
-0xafa20010, 0x3c010001, 0xac223df4, 0x21100, 
+0xafa20010, 0x3c010001, 0xac223f04, 0x21100, 
 0x21182, 0x511025, 0xc0018a8, 0xae420000, 
 0x8f820240, 0x3c030001, 0x431025, 0xaf820240, 
 0x3c020000, 0x24424034, 0xaf820244, 0xaf800240, 
 0x8f820060, 0x511024, 0x14400005, 0x3c030800, 
 0x8f820060, 0x431024, 0x1040fffd, 0x0, 
-0xc003a29, 0x8821, 0x3c020100, 0xafa20020, 
+0xc003a61, 0x8821, 0x3c020100, 0xafa20020, 
 0x8f530018, 0x240200ff, 0x56620001, 0x26710001, 
 0x8c020228, 0x1622000e, 0x1330c0, 0x8f42032c, 
 0x24420001, 0xaf42032c, 0x8f42032c, 0x8c020228, 
-0x3c040001, 0x24842ce4, 0x3c050009, 0xafa00014, 
+0x3c040001, 0x24842da4, 0x3c050009, 0xafa00014, 
 0xafa20010, 0x8fa60020, 0x1000003f, 0x34a50100, 
 0xd71021, 0x8fa30020, 0x8fa40024, 0xac4304c0, 
 0xac4404c4, 0xc01821, 0x8f440168, 0x8f45016c, 
@@ -4842,21 +4843,21 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f48010c, 0x24070008, 0xa32821, 0xa3482b, 
 0x822021, 0x100f809, 0x892021, 0x1440000b, 
 0x24070008, 0x8f820120, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x24842cec, 0x3c050009, 0xafa20014, 
+0x3c040001, 0x24842dac, 0x3c050009, 0xafa20014, 
 0x8fa60020, 0x1000001c, 0x34a50200, 0x8f440150, 
 0x8f450154, 0x8f43000c, 0xaf510018, 0x8f860120, 
 0x24020010, 0xafa20010, 0xafb10014, 0xafa30018, 
 0x8f42010c, 0x40f809, 0x24c6001c, 0x14400010, 
 0x0, 0x8f420330, 0x24420001, 0xaf420330, 
 0x8f420330, 0x8f820120, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x24842cf4, 0x3c050009, 0xafa20014, 
-0x8fa60020, 0x34a50300, 0xc0029d3, 0x2603821, 
+0x3c040001, 0x24842db4, 0x3c050009, 0xafa20014, 
+0x8fa60020, 0x34a50300, 0xc002a03, 0x2603821, 
 0x8f4202d4, 0x24420001, 0xaf4202d4, 0x8f4202d4, 
 0x93a2003f, 0x10400069, 0x3c020700, 0x34423000, 
 0xafa20028, 0x8f530018, 0x240200ff, 0x12620002, 
 0x8821, 0x26710001, 0x8c020228, 0x1622000e, 
 0x1330c0, 0x8f42032c, 0x24420001, 0xaf42032c, 
-0x8f42032c, 0x8c020228, 0x3c040001, 0x24842ce4, 
+0x8f42032c, 0x8c020228, 0x3c040001, 0x24842da4, 
 0x3c050009, 0xafa00014, 0xafa20010, 0x8fa60028, 
 0x1000003f, 0x34a50100, 0xd71021, 0x8fa30028, 
 0x8fa4002c, 0xac4304c0, 0xac4404c4, 0xc01821, 
@@ -4865,19 +4866,19 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2e63021, 0xafa80018, 0x8f48010c, 0x24070008, 
 0xa32821, 0xa3482b, 0x822021, 0x100f809, 
 0x892021, 0x1440000b, 0x24070008, 0x8f820120, 
-0xafa20010, 0x8f820124, 0x3c040001, 0x24842cec, 
+0xafa20010, 0x8f820124, 0x3c040001, 0x24842dac, 
 0x3c050009, 0xafa20014, 0x8fa60028, 0x1000001c, 
 0x34a50200, 0x8f440150, 0x8f450154, 0x8f43000c, 
 0xaf510018, 0x8f860120, 0x24020010, 0xafa20010, 
 0xafb10014, 0xafa30018, 0x8f42010c, 0x40f809, 
 0x24c6001c, 0x14400010, 0x0, 0x8f420330, 
 0x24420001, 0xaf420330, 0x8f420330, 0x8f820120, 
-0xafa20010, 0x8f820124, 0x3c040001, 0x24842cf4, 
+0xafa20010, 0x8f820124, 0x3c040001, 0x24842db4, 
 0x3c050009, 0xafa20014, 0x8fa60028, 0x34a50300, 
-0xc0029d3, 0x2603821, 0x8f4202e0, 0x24420001, 
-0xaf4202e0, 0x8f4202e0, 0x3c040001, 0x24843030, 
+0xc002a03, 0x2603821, 0x8f4202e0, 0x24420001, 
+0xaf4202e0, 0x8f4202e0, 0x3c040001, 0x248430f0, 
 0xafa00010, 0xafa00014, 0x8fa60028, 0x24052300, 
-0xc0029d3, 0x3821, 0x10000004, 0x0, 
+0xc002a03, 0x3821, 0x10000004, 0x0, 
 0x8c020264, 0x10400005, 0x0, 0x8f8200a0, 
 0x30420004, 0x1440fffa, 0x0, 0x8f820044, 
 0x34420004, 0xaf820044, 0x8f4202f8, 0x24420001, 
@@ -4887,29 +4888,29 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f430138, 0x431021, 0xaf420090, 0x24020001, 
 0xaf42008c, 0x32c20008, 0x10400006, 0x0, 
 0x8f820214, 0x3c038100, 0x3042ffff, 0x431025, 
-0xaf820214, 0x3c020001, 0x8c423d14, 0x30420001, 
-0x10400009, 0x0, 0x3c040001, 0x2484303c, 
+0xaf820214, 0x3c020001, 0x8c423e24, 0x30420001, 
+0x10400009, 0x0, 0x3c040001, 0x248430fc, 
 0x3c050000, 0x24a56c40, 0x3c060000, 0x24c670e8, 
-0x10000008, 0xc53023, 0x3c040001, 0x2484304c, 
+0x10000008, 0xc53023, 0x3c040001, 0x2484310c, 
 0x3c050000, 0x24a56838, 0x3c060000, 0x24c66c38, 
 0xc53023, 0x27a70030, 0x27a20034, 0xc001750, 
-0xafa20010, 0x3c010001, 0xac223e08, 0x3c020001, 
-0x8c423e08, 0x3c030800, 0x21100, 0x21182, 
+0xafa20010, 0x3c010001, 0xac223f18, 0x3c020001, 
+0x8c423f18, 0x3c030800, 0x21100, 0x21182, 
 0x431025, 0xae420040, 0x8f8200a0, 0xafa20010, 
 0x8f8200b0, 0xafa20014, 0x8f86005c, 0x8f87011c, 
-0x3c040001, 0x2484305c, 0x3c010001, 0xac363de0, 
-0x3c010001, 0xac203dd0, 0x3c010001, 0xac3c3dc8, 
-0x3c010001, 0xac3b3df8, 0x3c010001, 0xac373dfc, 
-0x3c010001, 0xac3a3ddc, 0xc0029d3, 0x24052400, 
+0x3c040001, 0x2484311c, 0x3c010001, 0xac363ef0, 
+0x3c010001, 0xac203ee0, 0x3c010001, 0xac3c3ed8, 
+0x3c010001, 0xac3b3f08, 0x3c010001, 0xac373f0c, 
+0x3c010001, 0xac3a3eec, 0xc002a03, 0x24052400, 
 0x8f820200, 0xafa20010, 0x8f820220, 0xafa20014, 
-0x8f860044, 0x8f870050, 0x3c040001, 0x24843068, 
-0xc0029d3, 0x24052500, 0x8f830060, 0x74100b, 
+0x8f860044, 0x8f870050, 0x3c040001, 0x24843128, 
+0xc002a03, 0x24052500, 0x8f830060, 0x74100b, 
 0x242000a, 0x200f821, 0x0, 0xd, 
 0x8fbf0058, 0x8fbe0054, 0x8fb50050, 0x8fb3004c, 
 0x8fb20048, 0x8fb10044, 0x8fb00040, 0x3e00008, 
-0x27bd0060, 0x27bdffe0, 0x3c040001, 0x24843074, 
+0x27bd0060, 0x27bdffe0, 0x3c040001, 0x24843134, 
 0x24052600, 0x3021, 0x3821, 0xafbf0018, 
-0xafa00010, 0xc0029d3, 0xafa00014, 0x8fbf0018, 
+0xafa00010, 0xc002a03, 0xafa00014, 0x8fbf0018, 
 0x3e00008, 0x27bd0020, 0x3e00008, 0x0, 
 0x3e00008, 0x0, 0x0, 0x0, 
 0x0, 0x0, 0x0, 0x3e00008, 
@@ -4918,16 +4919,16 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f820150, 0x3c03001f, 0x3463ffff, 0xafa40018, 
 0xa22823, 0xa32824, 0x8ca20000, 0x1044000a, 
 0x0, 0xafa50010, 0x8ca20000, 0xafa20014, 
-0x8f860150, 0x8f870250, 0x3c040001, 0x2484307c, 
-0xc0029d3, 0x24052700, 0x8fbf0218, 0x3e00008, 
+0x8f860150, 0x8f870250, 0x3c040001, 0x2484313c, 
+0xc002a03, 0x24052700, 0x8fbf0218, 0x3e00008, 
 0x27bd0220, 0x27bdffe0, 0x3c06abba, 0x34c6babe, 
 0xafb00018, 0x3c100004, 0x3c07007f, 0x34e7ffff, 
 0xafbf001c, 0x102840, 0x8e040000, 0x8ca30000, 
 0xaca00000, 0xae060000, 0x8ca20000, 0xaca30000, 
 0x10460005, 0xae040000, 0xa08021, 0xf0102b, 
-0x1040fff5, 0x102840, 0x3c040001, 0x24843088, 
+0x1040fff5, 0x102840, 0x3c040001, 0x24843148, 
 0x24052800, 0x2003021, 0x3821, 0xafa00010, 
-0xc0029d3, 0xafa00014, 0x2001021, 0x8fbf001c, 
+0xc002a03, 0xafa00014, 0x2001021, 0x8fbf001c, 
 0x8fb00018, 0x3e00008, 0x27bd0020, 0x8c020224, 
 0x3047003f, 0x10e00010, 0x803021, 0x2821, 
 0x24030020, 0xe31024, 0x10400002, 0x63042, 
@@ -4941,84 +4942,84 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafb00018, 0x8ea20000, 0x2403fffc, 0xc38024, 
 0x50102b, 0x1440001b, 0xe08821, 0x8e330000, 
 0xafb00010, 0x8ea20000, 0xafa20014, 0x8e270000, 
-0x24053000, 0xc0029d3, 0x2403021, 0x8e230000, 
+0x24053000, 0xc002a03, 0x2403021, 0x8e230000, 
 0x702021, 0x64102b, 0x10400007, 0x2402821, 
 0x8ca20000, 0xac620000, 0x24630004, 0x64102b, 
 0x1440fffb, 0x24a50004, 0x8ea20000, 0x501023, 
 0xaea20000, 0x8e220000, 0x501021, 0x1000000b, 
 0xae220000, 0x2402002d, 0xa0820000, 0xafb00010, 
 0x8ea20000, 0x2409821, 0xafa20014, 0x8e270000, 
-0x24053100, 0xc0029d3, 0x2603021, 0x2601021, 
+0x24053100, 0xc002a03, 0x2603021, 0x2601021, 
 0x8fbf002c, 0x8fb50028, 0x8fb30024, 0x8fb20020, 
 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0030, 
 0x27bdffe8, 0x3c1cc000, 0x3c05fffe, 0x3c030001, 
-0x8c633dc0, 0x3c040001, 0x8c843dcc, 0x34a5bf08, 
-0x24021ffc, 0x3c010001, 0xac223c60, 0x3c0200c0, 
-0x3c010001, 0xac223c64, 0x3c020020, 0xafbf0010, 
+0x8c633ed0, 0x3c040001, 0x8c843edc, 0x34a5bf08, 
+0x24021ffc, 0x3c010001, 0xac223d70, 0x3c0200c0, 
+0x3c010001, 0xac223d74, 0x3c020020, 0xafbf0010, 
 0x3c0100c0, 0xac201ffc, 0x431023, 0x441023, 
-0x245bb000, 0x365b821, 0x3c1d0001, 0x8fbd3c5c, 
+0x245bb000, 0x365b821, 0x3c1d0001, 0x8fbd3d6c, 
 0x3a0f021, 0x3c0400c0, 0x34840200, 0x3c1a00c0, 
 0x3c0300c0, 0x346307b8, 0x24021dfc, 0x3c010001, 
-0xac223c60, 0x24021844, 0x3c010001, 0xac243c64, 
-0x3c010001, 0xac223c60, 0x3c010001, 0xac233c64, 
+0xac223d70, 0x24021844, 0x3c010001, 0xac243d74, 
+0x3c010001, 0xac223d70, 0x3c010001, 0xac233d74, 
 0xc0017ba, 0x375a0200, 0x8fbf0010, 0x3e00008, 
-0x27bd0018, 0x27bdffc8, 0x3c040001, 0x24843094, 
-0x24053200, 0x3c020001, 0x8c423c60, 0x3c030001, 
-0x8c633c64, 0x3021, 0x3603821, 0xafbf0030, 
+0x27bd0018, 0x27bdffc8, 0x3c040001, 0x24843154, 
+0x24053200, 0x3c020001, 0x8c423d70, 0x3c030001, 
+0x8c633d74, 0x3021, 0x3603821, 0xafbf0030, 
 0xafb3002c, 0xafb20028, 0xafb10024, 0xafb00020, 
-0xafa2001c, 0xafa30018, 0xafb70010, 0xc0029d3, 
+0xafa2001c, 0xafa30018, 0xafb70010, 0xc002a03, 
 0xafba0014, 0xc0018c2, 0x0, 0x8f820240, 
 0x34420004, 0xaf820240, 0x24020001, 0xaf420000, 
 0x3c020001, 0x571021, 0x904240f4, 0x10400092, 
-0x2403fffc, 0x3c100001, 0x2610a6d3, 0x3c120001, 
-0x2652a2ac, 0x2121023, 0x438024, 0x8fa3001c, 
-0x3c040001, 0x248430a0, 0x70102b, 0x1440001a, 
+0x2403fffc, 0x3c100001, 0x2610a79b, 0x3c120001, 
+0x2652a374, 0x2121023, 0x438024, 0x8fa3001c, 
+0x3c040001, 0x24843160, 0x70102b, 0x1440001a, 
 0x27b30018, 0x8fb10018, 0x24053000, 0x2403021, 
-0xafb00010, 0xafa30014, 0xc0029d3, 0x2203821, 
+0xafb00010, 0xafa30014, 0xc002a03, 0x2203821, 
 0x8fa30018, 0x702021, 0x64102b, 0x10400007, 
 0x2403021, 0x8cc20000, 0xac620000, 0x24630004, 
 0x64102b, 0x1440fffb, 0x24c60004, 0x8fa2001c, 
 0x501023, 0xafa2001c, 0x8e620000, 0x501021, 
 0x1000000a, 0xae620000, 0x2408821, 0x24053100, 
 0xafb00010, 0xafa30014, 0x8fa70018, 0x2203021, 
-0x2402002d, 0xc0029d3, 0xa0820000, 0x24070020, 
-0x8fa3001c, 0x3c040001, 0x248430bc, 0x24120020, 
-0x3c010001, 0xac313dec, 0x2c620020, 0x1440001d, 
+0x2402002d, 0xc002a03, 0xa0820000, 0x24070020, 
+0x8fa3001c, 0x3c040001, 0x2484317c, 0x24120020, 
+0x3c010001, 0xac313efc, 0x2c620020, 0x1440001d, 
 0x27b10018, 0x8fb00018, 0x24053000, 0x3c060001, 
-0x24c63e80, 0xafa70010, 0xafa30014, 0xc0029d3, 
-0x2003821, 0x8fa30018, 0x3c040001, 0x24843e80, 
+0x24c63f90, 0xafa70010, 0xafa30014, 0xc002a03, 
+0x2003821, 0x8fa30018, 0x3c040001, 0x24843f90, 
 0x24650020, 0x65102b, 0x10400007, 0x0, 
 0x8c820000, 0xac620000, 0x24630004, 0x65102b, 
 0x1440fffb, 0x24840004, 0x8fa2001c, 0x521023, 
 0xafa2001c, 0x8e220000, 0x521021, 0x1000000b, 
-0xae220000, 0x3c100001, 0x26103e80, 0x24053100, 
+0xae220000, 0x3c100001, 0x26103f90, 0x24053100, 
 0xafa70010, 0xafa30014, 0x8fa70018, 0x2003021, 
-0x2402002d, 0xc0029d3, 0xa0820000, 0x24070020, 
-0x3c040001, 0x248430d0, 0x8fa3001c, 0x24120020, 
-0x3c010001, 0xac303e20, 0x2c620020, 0x1440001d, 
+0x2402002d, 0xc002a03, 0xa0820000, 0x24070020, 
+0x3c040001, 0x24843190, 0x8fa3001c, 0x24120020, 
+0x3c010001, 0xac303f30, 0x2c620020, 0x1440001d, 
 0x27b10018, 0x8fb00018, 0x24053000, 0x3c060001, 
-0x24c63ea0, 0xafa70010, 0xafa30014, 0xc0029d3, 
-0x2003821, 0x8fa30018, 0x3c040001, 0x24843ea0, 
+0x24c63fb0, 0xafa70010, 0xafa30014, 0xc002a03, 
+0x2003821, 0x8fa30018, 0x3c040001, 0x24843fb0, 
 0x24650020, 0x65102b, 0x10400007, 0x0, 
 0x8c820000, 0xac620000, 0x24630004, 0x65102b, 
 0x1440fffb, 0x24840004, 0x8fa2001c, 0x521023, 
 0xafa2001c, 0x8e220000, 0x521021, 0x1000000b, 
-0xae220000, 0x3c100001, 0x26103ea0, 0x24053100, 
+0xae220000, 0x3c100001, 0x26103fb0, 0x24053100, 
 0xafa70010, 0xafa30014, 0x8fa70018, 0x2003021, 
-0x2402002d, 0xc0029d3, 0xa0820000, 0x3c010001, 
-0x10000031, 0xac303e1c, 0x3c100000, 0x26107c8f, 
+0x2402002d, 0xc002a03, 0xa0820000, 0x3c010001, 
+0x10000031, 0xac303f2c, 0x3c100000, 0x26107c8f, 
 0x3c120000, 0x26527b0c, 0x2121023, 0x438024, 
-0x8fa3001c, 0x3c040001, 0x248430e4, 0x70102b, 
+0x8fa3001c, 0x3c040001, 0x248431a4, 0x70102b, 
 0x1440001a, 0x27b30018, 0x8fb10018, 0x24053000, 
-0x2403021, 0xafb00010, 0xafa30014, 0xc0029d3, 
+0x2403021, 0xafb00010, 0xafa30014, 0xc002a03, 
 0x2203821, 0x8fa30018, 0x702021, 0x64102b, 
 0x10400007, 0x2403021, 0x8cc20000, 0xac620000, 
 0x24630004, 0x64102b, 0x1440fffb, 0x24c60004, 
 0x8fa2001c, 0x501023, 0xafa2001c, 0x8e620000, 
 0x501021, 0x1000000a, 0xae620000, 0x2408821, 
 0x24053100, 0xafb00010, 0xafa30014, 0x8fa70018, 
-0x2203021, 0x2402002d, 0xc0029d3, 0xa0820000, 
-0x3c010001, 0xac313dec, 0x3c030001, 0x8c633dec, 
+0x2203021, 0x2402002d, 0xc002a03, 0xa0820000, 
+0x3c010001, 0xac313efc, 0x3c030001, 0x8c633efc, 
 0x24020400, 0x60f809, 0xaf820070, 0x8fbf0030, 
 0x8fb3002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 
 0x3e00008, 0x27bd0038, 0x0, 0x8f820040, 
@@ -5032,17 +5033,17 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaf820078, 0x27bdffe8, 0xafbf0010, 0x8f820054, 
 0x244203e8, 0xaf820058, 0x3c020800, 0x2c21024, 
 0x10400004, 0x3c02f7ff, 0x3442ffff, 0x2c2b024, 
-0x36940040, 0x3c020001, 0x8c423d28, 0x10400027, 
-0x0, 0x3c020001, 0x8c423d14, 0x30420001, 
-0x14400010, 0x0, 0x3c020001, 0x8c423e58, 
-0x1040000c, 0x0, 0x3c020001, 0x8c423da4, 
+0x36940040, 0x3c020001, 0x8c423e38, 0x10400027, 
+0x0, 0x3c020001, 0x8c423e24, 0x30420001, 
+0x14400010, 0x0, 0x3c020001, 0x8c423f68, 
+0x1040000c, 0x0, 0x3c020001, 0x8c423eb4, 
 0x14400008, 0x0, 0x8f830224, 0x3c020001, 
-0x8c425f1c, 0x10620003, 0x0, 0xc003bad
+0x8c42602c, 0x10620003, 0x0, 0xc003be0
 0x0, 0x934205b1, 0x10400012, 0x24020001, 
 0x934305b1, 0x14620004, 0x3c0208ff, 0x24020002, 
 0x1000000c, 0xa34205b1, 0x3442fffb, 0xa34005b1, 
 0x8f830220, 0x3c040200, 0x284a025, 0x621824, 
-0xaf830220, 0x10000004, 0x3c020200, 0xc003f27, 
+0xaf830220, 0x10000004, 0x3c020200, 0xc003f57, 
 0x0, 0x3c020200, 0x2c21024, 0x10400003, 
 0x0, 0xc001de7, 0x0, 0x8f4200d8, 
 0x8f4300dc, 0x24420001, 0xaf4200d8, 0x43102b, 
@@ -5059,8 +5060,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafa30014, 0xafa80018, 0x8f42010c, 0x40f809, 
 0x24c6001c, 0x14400011, 0x24020001, 0x3c010001, 
 0x370821, 0xa02240f0, 0x8f820124, 0xafa20010, 
-0x8f820128, 0x3c040001, 0x24843184, 0xafa20014, 
-0x8f46002c, 0x8f870120, 0x3c050009, 0xc0029d3, 
+0x8f820128, 0x3c040001, 0x24843248, 0xafa20014, 
+0x8f46002c, 0x8f870120, 0x3c050009, 0xc002a03, 
 0x34a50900, 0x1000005c, 0x0, 0x8f4202f0, 
 0x24420001, 0xaf4202f0, 0x8f4202f0, 0x8f42002c, 
 0xa34005b2, 0x10000027, 0xaf420038, 0x8f440160, 
@@ -5069,8 +5070,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f42010c, 0x40f809, 0x24c6001c, 0x14400011, 
 0x24020001, 0x3c010001, 0x370821, 0xa02240f1, 
 0x8f820124, 0xafa20010, 0x8f820128, 0x3c040001, 
-0x24843190, 0xafa20014, 0x8f46002c, 0x8f870120, 
-0x3c050009, 0xc0029d3, 0x34a51100, 0x10000036, 
+0x24843254, 0xafa20014, 0x8f46002c, 0x8f870120, 
+0x3c050009, 0xc002a03, 0x34a51100, 0x10000036, 
 0x0, 0x8f4202f0, 0x8f43002c, 0x24420001, 
 0xaf4202f0, 0x8f4202f0, 0x24020001, 0xa34205b2, 
 0xaf430038, 0x3c010001, 0x370821, 0xa02040f1, 
@@ -5098,8 +5099,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafa80018, 0x8f42010c, 0x40f809, 0x24c6001c, 
 0x14400011, 0x24020001, 0x3c010001, 0x370821, 
 0xa02240f2, 0x8f820124, 0xafa20010, 0x8f820128, 
-0x3c040001, 0x24843198, 0xafa20014, 0x8f460044, 
-0x8f870120, 0x3c050009, 0xc0029d3, 0x34a51300, 
+0x3c040001, 0x2484325c, 0xafa20014, 0x8f460044, 
+0x8f870120, 0x3c050009, 0xc002a03, 0x34a51300, 
 0x1000000f, 0x0, 0x8f4202f4, 0x24420001, 
 0xaf4202f4, 0x8f4202f4, 0x8f420044, 0xaf42007c, 
 0x3c010001, 0x370821, 0xa02040f2, 0x10000004, 
@@ -5111,20 +5112,20 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x431024, 0xaf820060, 0x8f420000, 0x10400003, 
 0x0, 0x10000002, 0xaf80004c, 0xaf800048, 
 0x8fbf0020, 0x3e00008, 0x27bd0028, 0x3e00008, 
-0x0, 0x3c020001, 0x8c423d28, 0x27bdffa8, 
+0x0, 0x3c020001, 0x8c423e38, 0x27bdffa8, 
 0xafbf0050, 0xafbe004c, 0xafb50048, 0xafb30044, 
 0xafb20040, 0xafb1003c, 0xafb00038, 0x104000d5, 
 0x8f900044, 0x8f4200d0, 0x24430001, 0x2842000b, 
 0x144000e4, 0xaf4300d0, 0x8f420004, 0x30420002, 
 0x1440009c, 0xaf4000d0, 0x8f420004, 0x3c030001, 
-0x8c633d18, 0x34420002, 0xaf420004, 0x24020001, 
+0x8c633e28, 0x34420002, 0xaf420004, 0x24020001, 
 0x14620003, 0x3c020600, 0x10000002, 0x34423000, 
 0x34421000, 0xafa20020, 0x8f4a0018, 0xafaa0034, 
 0x27aa0020, 0xafaa002c, 0x8faa0034, 0x240200ff, 
 0x11420002, 0x1821, 0x25430001, 0x8c020228, 
 0x609821, 0x1662000e, 0x3c050009, 0x8f42032c, 
 0x24420001, 0xaf42032c, 0x8f42032c, 0x8c020228, 
-0x8fa70034, 0x3c040001, 0x24843168, 0xafa00014, 
+0x8fa70034, 0x3c040001, 0x2484322c, 0xafa00014, 
 0xafa20010, 0x8fa60020, 0x10000070, 0x34a50500, 
 0x8faa0034, 0xa38c0, 0xf71021, 0x8fa30020, 
 0x8fa40024, 0xac4304c0, 0xac4404c4, 0x8f830054, 
@@ -5139,7 +5140,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x32a200ff, 0x54400018, 0xaf530018, 0x8f420368, 
 0x24420001, 0xaf420368, 0x8f420368, 0x8f820120, 
 0x8faa002c, 0x8fa70034, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x24843174, 0xafa20014, 0x8d460000, 
+0x3c040001, 0x24843238, 0xafa20014, 0x8d460000, 
 0x3c050009, 0x10000035, 0x34a50600, 0x8f4202f8, 
 0x24150001, 0x24420001, 0xaf4202f8, 0x8f4202f8, 
 0x1000001e, 0x32a200ff, 0x8f830054, 0x8f820054, 
@@ -5152,8 +5153,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1440ffee, 0x0, 0x32a200ff, 0x14400011, 
 0x3c050009, 0x8f420368, 0x24420001, 0xaf420368, 
 0x8f420368, 0x8f820120, 0x8faa002c, 0x8fa70034, 
-0xafa20010, 0x8f820124, 0x3c040001, 0x2484317c
-0xafa20014, 0x8d460000, 0x34a50700, 0xc0029d3, 
+0xafa20010, 0x8f820124, 0x3c040001, 0x24843240
+0xafa20014, 0x8d460000, 0x34a50700, 0xc002a03, 
 0x0, 0x8f4202dc, 0x24420001, 0xaf4202dc, 
 0x8f4202dc, 0x8f420004, 0x30420001, 0x50400029, 
 0x36100040, 0x3c020400, 0x2c21024, 0x10400013, 
@@ -5176,10 +5177,10 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8fbf0050, 0x8fbe004c, 0x8fb50048, 0x8fb30044, 
 0x8fb20040, 0x8fb1003c, 0x8fb00038, 0x3e00008, 
 0x27bd0058, 0x3e00008, 0x0, 0x3c020001, 
-0x8c423d28, 0x27bdffb0, 0xafbf0048, 0xafbe0044, 
+0x8c423e38, 0x27bdffb0, 0xafbf0048, 0xafbe0044, 
 0xafb50040, 0xafb3003c, 0xafb20038, 0xafb10034, 
 0x104000de, 0xafb00030, 0x8f4200d0, 0x3c040001, 
-0x8c843d18, 0x24430001, 0x2842000b, 0xaf4400e8, 
+0x8c843e28, 0x24430001, 0x2842000b, 0xaf4400e8, 
 0x144000fe, 0xaf4300d0, 0x8f420004, 0x30420002, 
 0x14400095, 0xaf4000d0, 0x8f420004, 0x34420002, 
 0xaf420004, 0x24020001, 0x14820003, 0x3c020600, 
@@ -5188,7 +5189,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x13c20002, 0xafaa002c, 0x27c30001, 0x8c020228, 
 0x609021, 0x1642000e, 0x1e38c0, 0x8f42032c, 
 0x24420001, 0xaf42032c, 0x8f42032c, 0x8c020228, 
-0x3c040001, 0x24843168, 0x3c050009, 0xafa00014, 
+0x3c040001, 0x2484322c, 0x3c050009, 0xafa00014, 
 0xafa20010, 0x8fa60020, 0x1000006d, 0x34a50500, 
 0xf71021, 0x8fa30020, 0x8fa40024, 0xac4304c0, 
 0xac4404c4, 0x8f830054, 0x8f820054, 0x247003e8, 
@@ -5202,7 +5203,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1440ffe9, 0x0, 0x326200ff, 0x54400017, 
 0xaf520018, 0x8f420368, 0x24420001, 0xaf420368, 
 0x8f420368, 0x8f820120, 0x8faa002c, 0xafa20010, 
-0x8f820124, 0x3c040001, 0x24843174, 0x3c050009, 
+0x8f820124, 0x3c040001, 0x24843238, 0x3c050009, 
 0xafa20014, 0x8d460000, 0x10000035, 0x34a50600, 
 0x8f4202f8, 0x24130001, 0x24420001, 0xaf4202f8, 
 0x8f4202f8, 0x1000001e, 0x326200ff, 0x8f830054, 
@@ -5215,9 +5216,9 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2c4203e9, 0x1440ffee, 0x0, 0x326200ff, 
 0x14400011, 0x0, 0x8f420368, 0x24420001, 
 0xaf420368, 0x8f420368, 0x8f820120, 0x8faa002c, 
-0xafa20010, 0x8f820124, 0x3c040001, 0x2484317c
+0xafa20010, 0x8f820124, 0x3c040001, 0x24843240
 0x3c050009, 0xafa20014, 0x8d460000, 0x34a50700, 
-0xc0029d3, 0x3c03821, 0x8f4202dc, 0x24420001, 
+0xc002a03, 0x3c03821, 0x8f4202dc, 0x24420001, 
 0xaf4202dc, 0x8f4202dc, 0x8f420004, 0x30420001, 
 0x10400033, 0x3c020400, 0x2c21024, 0x10400017, 
 0x0, 0x934205b0, 0x8f440240, 0x8f450244, 
@@ -5247,7 +5248,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f4300e8, 0x3042007f, 0xa34205b0, 0x24020001, 
 0x14620005, 0x0, 0x934405b0, 0x42102, 
 0x10000003, 0x348400f0, 0x934405b0, 0x3484000f, 
-0xc004b04, 0x0, 0x2402ff7f, 0x282a024, 
+0xc004b34, 0x0, 0x2402ff7f, 0x282a024, 
 0x8fbf0048, 0x8fbe0044, 0x8fb50040, 0x8fb3003c, 
 0x8fb20038, 0x8fb10034, 0x8fb00030, 0x3e00008, 
 0x27bd0050, 0x3e00008, 0x0, 0x27bdffb0, 
@@ -5300,7 +5301,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafaa002c, 0x27c30001, 0x8c020228, 0x609021, 
 0x1642000e, 0x1e38c0, 0x8f42032c, 0x24420001, 
 0xaf42032c, 0x8f42032c, 0x8c020228, 0x3c040001, 
-0x24843168, 0x3c050009, 0xafa00014, 0xafa20010, 
+0x2484322c, 0x3c050009, 0xafa00014, 0xafa20010, 
 0x8fa60020, 0x1000006b, 0x34a50500, 0xf71021, 
 0x8fa30020, 0x8fa40024, 0xac4304c0, 0xac4404c4, 
 0x8f830054, 0x8f820054, 0x247003e8, 0x2021023, 
@@ -5314,7 +5315,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x326200ff, 0x54400017, 0xaf520018, 
 0x8f420368, 0x24420001, 0xaf420368, 0x8f420368, 
 0x8f820120, 0x8faa002c, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x24843174, 0x3c050009, 0xafa20014, 
+0x3c040001, 0x24843238, 0x3c050009, 0xafa20014, 
 0x8d460000, 0x10000033, 0x34a50600, 0x8f4202f8, 
 0x24130001, 0x24420001, 0xaf4202f8, 0x8f4202f8, 
 0x1000001c, 0x326200ff, 0x8f830054, 0x8f820054, 
@@ -5327,13 +5328,13 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x326200ff, 0x54400012, 0x24020001, 0x8f420368, 
 0x24420001, 0xaf420368, 0x8f420368, 0x8f820120, 
 0x8faa002c, 0xafa20010, 0x8f820124, 0x3c040001, 
-0x2484317c, 0x3c050009, 0xafa20014, 0x8d460000, 
-0x34a50700, 0xc0029d3, 0x3c03821, 0x1021, 
+0x24843240, 0x3c050009, 0xafa20014, 0x8d460000, 
+0x34a50700, 0xc002a03, 0x3c03821, 0x1021, 
 0x1440005b, 0x24020001, 0x10000065, 0x0, 
 0x8f510018, 0x240200ff, 0x12220002, 0x8021, 
 0x26300001, 0x8c020228, 0x1602000e, 0x1130c0, 
 0x8f42032c, 0x24420001, 0xaf42032c, 0x8f42032c, 
-0x8c020228, 0x3c040001, 0x24843150, 0x3c050009, 
+0x8c020228, 0x3c040001, 0x24843214, 0x3c050009, 
 0xafa00014, 0xafa20010, 0x8fa60020, 0x1000003f, 
 0x34a50100, 0xd71021, 0x8fa30020, 0x8fa40024, 
 0xac4304c0, 0xac4404c4, 0xc01821, 0x8f440168, 
@@ -5342,15 +5343,15 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafa80018, 0x8f48010c, 0x24070008, 0xa32821, 
 0xa3482b, 0x822021, 0x100f809, 0x892021, 
 0x1440000b, 0x24070008, 0x8f820120, 0xafa20010, 
-0x8f820124, 0x3c040001, 0x24843158, 0x3c050009, 
+0x8f820124, 0x3c040001, 0x2484321c, 0x3c050009, 
 0xafa20014, 0x8fa60020, 0x1000001c, 0x34a50200, 
 0x8f440150, 0x8f450154, 0x8f43000c, 0xaf500018, 
 0x8f860120, 0x24020010, 0xafa20010, 0xafb00014, 
 0xafa30018, 0x8f42010c, 0x40f809, 0x24c6001c, 
 0x54400011, 0x24020001, 0x8f420330, 0x24420001, 
 0xaf420330, 0x8f420330, 0x8f820120, 0xafa20010, 
-0x8f820124, 0x3c040001, 0x24843160, 0x3c050009, 
-0xafa20014, 0x8fa60020, 0x34a50300, 0xc0029d3, 
+0x8f820124, 0x3c040001, 0x24843224, 0x3c050009, 
+0xafa20014, 0x8fa60020, 0x34a50300, 0xc002a03, 
 0x2203821, 0x1021, 0x1040000d, 0x24020001, 
 0x8f4202d8, 0xa34005b7, 0xaf4001a0, 0x24420001, 
 0xaf4202d8, 0x8f4202d8, 0x8ee20150, 0x24420001, 
@@ -5370,11 +5371,11 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x14620005, 0x0, 0x8f430124, 0x8f8200b4, 
 0x10620010, 0x0, 0x8f820104, 0xaf42011c, 
 0x8f8200b4, 0x8f43011c, 0xaf420124, 0xafa30010, 
-0x8f420124, 0x3c040001, 0x248431a0, 0xafa20014, 
+0x8f420124, 0x3c040001, 0x24843264, 0xafa20014, 
 0x8f86011c, 0x8f8700b0, 0x3c050005, 0x10000031, 
 0x34a50900, 0x8f42011c, 0xafa20010, 0x8f420124, 
-0x3c040001, 0x248431ac, 0xafa20014, 0x8f86011c, 
-0x8f8700b0, 0x3c050005, 0xc0029d3, 0x34a51000, 
+0x3c040001, 0x24843270, 0xafa20014, 0x8f86011c, 
+0x8f8700b0, 0x3c050005, 0xc002a03, 0x34a51000, 
 0x8f82011c, 0x34420002, 0xaf82011c, 0x8f830104, 
 0x8f8200b0, 0x34420001, 0xaf8200b0, 0x24020008, 
 0xaf830104, 0xafa20010, 0xafa00014, 0x8f42000c, 
@@ -5382,9 +5383,9 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x26e60028, 0x40f809, 0x24070400, 0x8f82011c, 
 0x2403fffd, 0x431024, 0xaf82011c, 0x8ee201dc, 
 0x24420001, 0xaee201dc, 0x8ee201dc, 0x8f42011c, 
-0xafa20010, 0x8f420124, 0x3c040001, 0x248431b8
+0xafa20010, 0x8f420124, 0x3c040001, 0x2484327c
 0xafa20014, 0x8f86011c, 0x8f8700b0, 0x3c050005, 
-0x34a51100, 0xc0029d3, 0x0, 0x8f8200a0, 
+0x34a51100, 0xc002a03, 0x0, 0x8f8200a0, 
 0x30420004, 0x10400069, 0x0, 0x8f430120, 
 0x8f820124, 0x14620005, 0x0, 0x8f430128, 
 0x8f8200a4, 0x10620006, 0x0, 0x8f820124, 
@@ -5397,21 +5398,21 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x8f430128, 0x8f8200a4, 0x10620010, 
 0x0, 0x8f820124, 0xaf420120, 0x8f8200a4, 
 0x8f430120, 0xaf420128, 0xafa30010, 0x8f420128, 
-0x3c040001, 0x248431c4, 0xafa20014, 0x8f86011c, 
+0x3c040001, 0x24843288, 0xafa20014, 0x8f86011c, 
 0x8f8700a0, 0x3c050005, 0x10000032, 0x34a51200, 
 0x8f420120, 0xafa20010, 0x8f420128, 0x3c040001, 
-0x248431d0, 0xafa20014, 0x8f86011c, 0x8f8700a0, 
-0x3c050005, 0xc0029d3, 0x34a51300, 0x8f82011c, 
+0x24843294, 0xafa20014, 0x8f86011c, 0x8f8700a0, 
+0x3c050005, 0xc002a03, 0x34a51300, 0x8f82011c, 
 0x34420002, 0xaf82011c, 0x8f830124, 0x8f8200a0, 
 0x34420001, 0xaf8200a0, 0x24020080, 0xaf830124, 
 0xafa20010, 0xafa00014, 0x8f420014, 0x8c040208, 
 0x8c05020c, 0xafa20018, 0x8f420108, 0x3c060001, 
-0x24c63e14, 0x40f809, 0x24070004, 0x8f82011c, 
+0x24c63f24, 0x40f809, 0x24070004, 0x8f82011c, 
 0x2403fffd, 0x431024, 0xaf82011c, 0x8ee201dc, 
 0x24420001, 0xaee201dc, 0x8ee201dc, 0x8f420120, 
-0xafa20010, 0x8f420128, 0x3c040001, 0x248431dc
+0xafa20010, 0x8f420128, 0x3c040001, 0x248432a0
 0xafa20014, 0x8f86011c, 0x8f8700a0, 0x3c050005, 
-0x34a51400, 0xc0029d3, 0x0, 0x8fbf0020, 
+0x34a51400, 0xc002a03, 0x0, 0x8fbf0020, 
 0x3e00008, 0x27bd0028, 0x3c081000, 0x24070001, 
 0x3c060080, 0x3c050100, 0x8f820070, 0x481024, 
 0x1040fffd, 0x0, 0x8f820054, 0x24420005, 
@@ -5479,8 +5480,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1000006b, 0xaf80004c, 0x10000069, 0xaf800048, 
 0x30c20001, 0x10400004, 0x24020001, 0xaf820064, 
 0x10000063, 0x0, 0x30c20002, 0x1440000b, 
-0x3c050003, 0x3c040001, 0x248432a4, 0x34a50500, 
-0x3821, 0xafa00010, 0xc0029d3, 0xafa00014, 
+0x3c050003, 0x3c040001, 0x24843364, 0x34a50500, 
+0x3821, 0xafa00010, 0xc002a03, 0xafa00014, 
 0x2402ffc0, 0x10000056, 0xaf820064, 0x8c10022c, 
 0x8c02010c, 0x12020047, 0x101080, 0x8c450300, 
 0x26020001, 0x3050003f, 0x24020003, 0xac10022c, 
@@ -5508,29 +5509,29 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x808021, 0x101602, 0x2442ffff, 0x304300ff, 
 0x2c620013, 0xafbf0050, 0xafbe004c, 0xafb50048, 
 0xafb30044, 0xafb20040, 0x104001e6, 0xafb1003c, 
-0x31080, 0x3c010001, 0x220821, 0x8c2232e8, 
+0x31080, 0x3c010001, 0x220821, 0x8c2233a8, 
 0x400008, 0x0, 0x101302, 0x30440fff, 
 0x24020001, 0x10820005, 0x24020002, 0x1082000a, 
 0x2402fffe, 0x10000021, 0x3c050003, 0x8f430004, 
-0x3c020001, 0x8c423e40, 0xaf4401f0, 0xaf4401f4, 
+0x3c020001, 0x8c423f50, 0xaf4401f0, 0xaf4401f4, 
 0x10000007, 0x34630001, 0x8f430004, 0xaf4401f0, 
-0xaf4401f4, 0x621824, 0x3c020001, 0x2442c254, 
+0xaf4401f4, 0x621824, 0x3c020001, 0x2442c344, 
 0x21100, 0x21182, 0xaf430004, 0x3c030800, 
 0x431025, 0x3c010000, 0xac224138, 0x8f840054, 
 0x41442, 0x41c82, 0x431021, 0x41cc2, 
 0x431023, 0x41d02, 0x431021, 0x41d42, 
 0x431023, 0x10000009, 0xaf4201f8, 0x3c040001, 
-0x248432b0, 0x34a51000, 0x2003021, 0x3821, 
-0xafa00010, 0xc0029d3, 0xafa00014, 0x8f420290, 
+0x24843370, 0x34a51000, 0x2003021, 0x3821, 
+0xafa00010, 0xc002a03, 0xafa00014, 0x8f420290, 
 0x24420001, 0xaf420290, 0x10000215, 0x8f420290, 
-0x27b00028, 0x2002021, 0x24050210, 0xc002a57, 
+0x27b00028, 0x2002021, 0x24050210, 0xc002a87, 
 0x24060008, 0xc0023a0, 0x2002021, 0x1000020c, 
 0x0, 0x8c06022c, 0x27a40028, 0x61880, 
 0x24c20001, 0x3046003f, 0x8c650300, 0x61080, 
 0x8c430300, 0x24c20001, 0x3042003f, 0xac02022c, 
 0xafa50028, 0xc0023a0, 0xafa3002c, 0x100001fc, 
 0x0, 0x27b00028, 0x2002021, 0x24050210, 
-0xc002a57, 0x24060008, 0xc0024df, 0x2002021, 
+0xc002a87, 0x24060008, 0xc0024df, 0x2002021, 
 0x100001f3, 0x0, 0x8c06022c, 0x27a40028, 
 0x61880, 0x24c20001, 0x3046003f, 0x8c650300, 
 0x61080, 0x8c430300, 0x24c20001, 0x3042003f, 
@@ -5550,8 +5551,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaf82022c, 0x3c020001, 0x571021, 0x8c4238e0, 
 0xaf820230, 0x3c020001, 0x571021, 0x8c4238e4, 
 0xaf820234, 0x3c02fffd, 0x3442ffff, 0x10000009, 
-0x2c2b024, 0x3c040001, 0x248432bc, 0x34a51100, 
-0x2003021, 0x3821, 0xafa00010, 0xc0029d3, 
+0x2c2b024, 0x3c040001, 0x2484337c, 0x34a51100, 
+0x2003021, 0x3821, 0xafa00010, 0xc002a03, 
 0xafa00014, 0x8f4202bc, 0x24420001, 0xaf4202bc, 
 0x1000019b, 0x8f4202bc, 0x101302, 0x30450fff, 
 0x24020001, 0x10a20005, 0x24020002, 0x10a2000d, 
@@ -5560,24 +5561,24 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x621824, 0x34630008, 0xaf830220, 0x10000012, 
 0xaf450288, 0x3484fff7, 0x3c03fffb, 0x8f820220, 
 0x3463ffff, 0x2c3b024, 0x441024, 0xaf820220, 
-0x10000009, 0xaf450288, 0x3c040001, 0x248432c8, 
+0x10000009, 0xaf450288, 0x3c040001, 0x24843388, 
 0x34a51200, 0x2003021, 0x3821, 0xafa00010, 
-0xc0029d3, 0xafa00014, 0x8f4202ac, 0x24420001, 
+0xc002a03, 0xafa00014, 0x8f4202ac, 0x24420001, 
 0xaf4202ac, 0x10000172, 0x8f4202ac, 0x27840208, 
-0x24050200, 0xc002a57, 0x24060008, 0x27440214, 
-0x24050200, 0xc002a57, 0x24060008, 0x8f4202b4, 
+0x24050200, 0xc002a87, 0x24060008, 0x27440214, 
+0x24050200, 0xc002a87, 0x24060008, 0x8f4202b4, 
 0x24420001, 0xaf4202b4, 0x10000165, 0x8f4202b4, 
 0x101302, 0x30430fff, 0x24020001, 0x10620011, 
 0x28620002, 0x50400005, 0x24020002, 0x10600007, 
 0x0, 0x10000017, 0x0, 0x1062000f, 
 0x0, 0x10000013, 0x0, 0x8c060248, 
-0x2021, 0xc004878, 0x24050004, 0x10000007, 
-0x0, 0x8c060248, 0x2021, 0xc004878, 
+0x2021, 0xc0048a8, 0x24050004, 0x10000007, 
+0x0, 0x8c060248, 0x2021, 0xc0048a8, 
 0x24050004, 0x10000010, 0x0, 0x8c06024c, 
-0x2021, 0xc004878, 0x24050001, 0x1000000a, 
-0x0, 0x3c040001, 0x248432d4, 0x3c050003, 
+0x2021, 0xc0048a8, 0x24050001, 0x1000000a, 
+0x0, 0x3c040001, 0x24843394, 0x3c050003, 
 0x34a51300, 0x2003021, 0x3821, 0xafa00010, 
-0xc0029d3, 0xafa00014, 0x8f4202b0, 0x24420001, 
+0xc002a03, 0xafa00014, 0x8f4202b0, 0x24420001, 
 0xaf4202b0, 0x10000136, 0x8f4202b0, 0xc0022b4, 
 0x0, 0x10000132, 0x0, 0x24020001, 
 0xa34205b6, 0x24100100, 0x8f440198, 0x8f45019c, 
@@ -5590,7 +5591,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x27aa0020, 0x240200ff, 0x13c20002, 0xafaa0034, 
 0x27c30001, 0x8c020228, 0x609021, 0x1642000e, 
 0x1e38c0, 0x8f42032c, 0x24420001, 0xaf42032c, 
-0x8f42032c, 0x8c020228, 0x3c040001, 0x2484326c, 
+0x8f42032c, 0x8c020228, 0x3c040001, 0x2484332c, 
 0x3c050009, 0xafa00014, 0xafa20010, 0x8fa60020, 
 0x1000006b, 0x34a50500, 0xf71021, 0x8fa30020, 
 0x8fa40024, 0xac4304c0, 0xac4404c4, 0x8f830054, 
@@ -5605,7 +5606,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x326200ff, 0x54400017, 0xaf520018, 0x8f420368, 
 0x24420001, 0xaf420368, 0x8f420368, 0x8f820120, 
 0x8faa0034, 0xafa20010, 0x8f820124, 0x3c040001, 
-0x24843278, 0x3c050009, 0xafa20014, 0x8d460000, 
+0x24843338, 0x3c050009, 0xafa20014, 0x8d460000, 
 0x10000033, 0x34a50600, 0x8f4202f8, 0x24130001, 
 0x24420001, 0xaf4202f8, 0x8f4202f8, 0x1000001c, 
 0x326200ff, 0x8f830054, 0x8f820054, 0x247003e8, 
@@ -5617,26 +5618,26 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2c4203e9, 0x1440ffef, 0x0, 0x326200ff, 
 0x14400011, 0x0, 0x8f420368, 0x24420001, 
 0xaf420368, 0x8f420368, 0x8f820120, 0x8faa0034, 
-0xafa20010, 0x8f820124, 0x3c040001, 0x24843280, 
+0xafa20010, 0x8f820124, 0x3c040001, 0x24843340, 
 0x3c050009, 0xafa20014, 0x8d460000, 0x34a50700, 
-0xc0029d3, 0x3c03821, 0x8f4202a0, 0x24420001, 
+0xc002a03, 0x3c03821, 0x8f4202a0, 0x24420001, 
 0xaf4202a0, 0x8f4202a0, 0x8f4202e8, 0x24420001, 
 0xaf4202e8, 0x1000008a, 0x8f4202e8, 0x8c02025c, 
 0x27440214, 0xaf4201e0, 0x8c020260, 0x24050200, 
-0x24060008, 0xc002a57, 0xaf4201e8, 0x8f820220, 
+0x24060008, 0xc002a87, 0xaf4201e8, 0x8f820220, 
 0x30420008, 0x14400002, 0x24020001, 0x24020002, 
 0xaf420288, 0x8f42029c, 0x24420001, 0xaf42029c, 
 0x10000077, 0x8f42029c, 0x3c0200ff, 0x3442ffff, 
 0x2021824, 0x32c20180, 0x14400006, 0x3402fffb, 
 0x43102b, 0x14400003, 0x0, 0x1000006c, 
-0xaf4300bc, 0x3c040001, 0x248432e0, 0x3c050003, 
+0xaf4300bc, 0x3c040001, 0x248433a0, 0x3c050003, 
 0x34a51500, 0x2003021, 0x3821, 0xafa00010, 
-0xc0029d3, 0xafa00014, 0x3c020700, 0x34421000, 
+0xc002a03, 0xafa00014, 0x3c020700, 0x34421000, 
 0x101e02, 0x621825, 0xafa30020, 0x8f510018, 
 0x240200ff, 0x12220002, 0x8021, 0x26300001, 
 0x8c020228, 0x1602000e, 0x1130c0, 0x8f42032c, 
 0x24420001, 0xaf42032c, 0x8f42032c, 0x8c020228, 
-0x3c040001, 0x24843254, 0x3c050009, 0xafa00014, 
+0x3c040001, 0x24843314, 0x3c050009, 0xafa00014, 
 0xafa20010, 0x8fa60020, 0x1000003f, 0x34a50100, 
 0xd71021, 0x8fa30020, 0x8fa40024, 0xac4304c0, 
 0xac4404c4, 0xc01821, 0x8f440168, 0x8f45016c, 
@@ -5645,15 +5646,15 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f48010c, 0x24070008, 0xa32821, 0xa3482b, 
 0x822021, 0x100f809, 0x892021, 0x1440000b, 
 0x24070008, 0x8f820120, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x2484325c, 0x3c050009, 0xafa20014, 
+0x3c040001, 0x2484331c, 0x3c050009, 0xafa20014, 
 0x8fa60020, 0x1000001c, 0x34a50200, 0x8f440150, 
 0x8f450154, 0x8f43000c, 0xaf500018, 0x8f860120, 
 0x24020010, 0xafa20010, 0xafb00014, 0xafa30018, 
 0x8f42010c, 0x40f809, 0x24c6001c, 0x14400010, 
 0x0, 0x8f420330, 0x24420001, 0xaf420330, 
 0x8f420330, 0x8f820120, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x24843264, 0x3c050009, 0xafa20014, 
-0x8fa60020, 0x34a50300, 0xc0029d3, 0x2203821, 
+0x3c040001, 0x24843324, 0x3c050009, 0xafa20014, 
+0x8fa60020, 0x34a50300, 0xc002a03, 0x2203821, 
 0x8f4202d0, 0x24420001, 0xaf4202d0, 0x8f4202d0, 
 0x8f4202e0, 0x24420001, 0xaf4202e0, 0x8f4202e0, 
 0x8fbf0050, 0x8fbe004c, 0x8fb50048, 0x8fb30044, 
@@ -5673,21 +5674,21 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x431024, 0x34420004, 0xaf820200, 0x8f53034c, 
 0x8f550350, 0x8f5e0354, 0x8f470358, 0xafa70014, 
 0x8f4202c0, 0x274401b0, 0x24420001, 0xaf4202c0, 
-0x8f5002c0, 0x8f5101f4, 0x8f5201f0, 0xc002a40, 
+0x8f5002c0, 0x8f5101f4, 0x8f5201f0, 0xc002a70, 
 0x24050400, 0xaf53034c, 0xaf550350, 0xaf5e0354, 
 0x8fa70014, 0xaf470358, 0xaf5002c0, 0xaf5101f4, 
 0xaf5201f0, 0x8c02025c, 0x27440214, 0xaf4201e0, 
 0x8c020260, 0x24050200, 0x24060008, 0xaf4201e8, 
-0x24020006, 0xc002a57, 0xaf4201e4, 0x3c023b9a, 
+0x24020006, 0xc002a87, 0xaf4201e4, 0x3c023b9a, 
 0x3442ca00, 0xaf4201ec, 0x240203e8, 0x24040002, 
 0x24030001, 0xaf420284, 0xaf440280, 0xaf43028c, 
 0x8f820220, 0x30420008, 0x10400004, 0x0, 
 0xaf430288, 0x10000003, 0x3021, 0xaf440288, 
-0x3021, 0x3c030001, 0x661821, 0x90633c80, 
+0x3021, 0x3c030001, 0x661821, 0x90633d90, 
 0x3461021, 0x24c60001, 0xa043021c, 0x2cc2000f, 
 0x1440fff8, 0x3461821, 0x24c60001, 0x8f820040, 
 0x24040080, 0x24050080, 0x21702, 0x24420030, 
-0xa062021c, 0x3461021, 0xc002a40, 0xa040021c, 
+0xa062021c, 0x3461021, 0xc002a70, 0xa040021c, 
 0x8fa7001c, 0x30e20004, 0x14400006, 0x0, 
 0x8f820220, 0x3c0308ff, 0x3463fffb, 0x431024, 
 0xaf820220, 0x8fa70024, 0x30e20004, 0x14400006, 
@@ -5739,15 +5740,15 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10c00014, 0x610c0, 0x571821, 0x3c010001, 
 0x230821, 0x8c2334d0, 0x571021, 0xafa30010, 
 0x3c010001, 0x220821, 0x8c2234d4, 0x3c040001, 
-0x248433f0, 0xafa20014, 0x8e260000, 0x8e270004, 
-0x3c050004, 0xc0029d3, 0x34a50400, 0x10000063, 
+0x248434b4, 0xafa20014, 0x8e260000, 0x8e270004, 
+0x3c050004, 0xc002a03, 0x34a50400, 0x10000063, 
 0x3c020800, 0x8f450100, 0x10a00006, 0x510c0, 
 0x2e21021, 0x3c010001, 0x220821, 0x942234d0, 
 0xaf420100, 0xa03021, 0x14c00011, 0x628c0, 
 0x710c0, 0x2e21021, 0xafa70010, 0x3c010001, 
-0x220821, 0x942230d0, 0x3c040001, 0x248433fc
+0x220821, 0x942230d0, 0x3c040001, 0x248434c0
 0xafa20014, 0x8e260000, 0x8e270004, 0x3c050004, 
-0xc0029d3, 0x34a50500, 0x10000048, 0x3c020800, 
+0xc002a03, 0x34a50500, 0x10000048, 0x3c020800, 
 0xb71821, 0x3c020001, 0x96040000, 0x344234d2, 
 0x621821, 0xa4640000, 0x8e020002, 0x720c0, 
 0xac620002, 0x2e41021, 0x3c030001, 0x621821, 
@@ -5770,7 +5771,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x240200ff, 0x13c20002, 0xafaa002c, 0x27c30001, 
 0x8c020228, 0x609021, 0x1642000e, 0x1e38c0, 
 0x8f42032c, 0x24420001, 0xaf42032c, 0x8f42032c, 
-0x8c020228, 0x3c040001, 0x248433b8, 0x3c050009, 
+0x8c020228, 0x3c040001, 0x2484347c, 0x3c050009, 
 0xafa00014, 0xafa20010, 0x8fa60020, 0x1000006b, 
 0x34a50500, 0xf71021, 0x8fa30020, 0x8fa40024, 
 0xac4304c0, 0xac4404c4, 0x8f830054, 0x8f820054, 
@@ -5784,7 +5785,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2c4203e9, 0x1440ffe9, 0x0, 0x326200ff, 
 0x54400017, 0xaf520018, 0x8f420368, 0x24420001, 
 0xaf420368, 0x8f420368, 0x8f820120, 0x8faa002c, 
-0xafa20010, 0x8f820124, 0x3c040001, 0x248433c4
+0xafa20010, 0x8f820124, 0x3c040001, 0x24843488
 0x3c050009, 0xafa20014, 0x8d460000, 0x10000033, 
 0x34a50600, 0x8f4202f8, 0x24130001, 0x24420001, 
 0xaf4202f8, 0x8f4202f8, 0x1000001c, 0x326200ff, 
@@ -5797,8 +5798,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1440ffef, 0x0, 0x326200ff, 0x14400011, 
 0x0, 0x8f420368, 0x24420001, 0xaf420368, 
 0x8f420368, 0x8f820120, 0x8faa002c, 0xafa20010, 
-0x8f820124, 0x3c040001, 0x248433cc, 0x3c050009, 
-0xafa20014, 0x8d460000, 0x34a50700, 0xc0029d3, 
+0x8f820124, 0x3c040001, 0x24843490, 0x3c050009, 
+0xafa20014, 0x8d460000, 0x34a50700, 0xc002a03, 
 0x3c03821, 0x8f4202a4, 0x24420001, 0xaf4202a4, 
 0x8f4202a4, 0x8f4202e4, 0x24420001, 0xaf4202e4, 
 0x8f4202e4, 0x8fbf0048, 0x8fbe0044, 0x8fb50040, 
@@ -5818,8 +5819,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x94c634d0, 0x14c0ffea, 0x610c0, 0x14c00011, 
 0xafa70028, 0x810c0, 0x2e21021, 0xafa80010, 
 0x3c010001, 0x220821, 0x942230d0, 0x3c040001, 
-0x24843408, 0xafa20014, 0x8e260000, 0x8e270004, 
-0x3c050004, 0xc0029d3, 0x34a50900, 0x10000075, 
+0x248434cc, 0xafa20014, 0x8e260000, 0x8e270004, 
+0x3c050004, 0xc002a03, 0x34a50900, 0x10000075, 
 0x3c020800, 0x10e0000c, 0x610c0, 0x2e21021, 
 0x3c030001, 0x621821, 0x946334d0, 0x710c0, 
 0x2e21021, 0x3c010001, 0x220821, 0xa42334d0, 
@@ -5854,7 +5855,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafab0034, 0x27c30001, 0x8c020228, 0x609021, 
 0x1642000e, 0x1e38c0, 0x8f42032c, 0x24420001, 
 0xaf42032c, 0x8f42032c, 0x8c020228, 0x3c040001, 
-0x248433b8, 0x3c050009, 0xafa00014, 0xafa20010, 
+0x2484347c, 0x3c050009, 0xafa00014, 0xafa20010, 
 0x8fa60020, 0x1000006b, 0x34a50500, 0xf71021, 
 0x8fa30020, 0x8fa40024, 0xac4304c0, 0xac4404c4, 
 0x8f830054, 0x8f820054, 0x247003e8, 0x2021023, 
@@ -5868,7 +5869,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x326200ff, 0x54400017, 0xaf520018, 
 0x8f420368, 0x24420001, 0xaf420368, 0x8f420368, 
 0x8f820120, 0x8fab0034, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x248433c4, 0x3c050009, 0xafa20014, 
+0x3c040001, 0x24843488, 0x3c050009, 0xafa20014, 
 0x8d660000, 0x10000033, 0x34a50600, 0x8f4202f8, 
 0x24130001, 0x24420001, 0xaf4202f8, 0x8f4202f8, 
 0x1000001c, 0x326200ff, 0x8f830054, 0x8f820054, 
@@ -5881,14 +5882,14 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x326200ff, 0x14400011, 0x0, 0x8f420368, 
 0x24420001, 0xaf420368, 0x8f420368, 0x8f820120, 
 0x8fab0034, 0xafa20010, 0x8f820124, 0x3c040001, 
-0x248433cc, 0x3c050009, 0xafa20014, 0x8d660000, 
-0x34a50700, 0xc0029d3, 0x3c03821, 0x8f4202a8, 
+0x24843490, 0x3c050009, 0xafa20014, 0x8d660000, 
+0x34a50700, 0xc002a03, 0x3c03821, 0x8f4202a8, 
 0x24420001, 0xaf4202a8, 0x8f4202a8, 0x8f4202e4, 
 0x24420001, 0xaf4202e4, 0x8f4202e4, 0x8fbf0058, 
 0x8fbe0054, 0x8fb50050, 0x8fb3004c, 0x8fb20048, 
 0x8fb10044, 0x8fb00040, 0x3e00008, 0x27bd0060, 
 0x0, 0x0, 0x0, 0x27bdffe0, 
-0x27644000, 0xafbf0018, 0xc002a40, 0x24051000, 
+0x27644000, 0xafbf0018, 0xc002a70, 0x24051000, 
 0x3c030001, 0x34632cc0, 0x3c040001, 0x34842ec8, 
 0x24020020, 0xaf82011c, 0x2e31021, 0xaf800100, 
 0xaf800104, 0xaf800108, 0xaf800110, 0xaf800114, 
@@ -5897,15 +5898,15 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2e31021, 0xaf4200f0, 0x2e41021, 0xaf4200f4, 
 0x2e41021, 0xaf4200f8, 0x3c020001, 0x571021, 
 0x904240f4, 0x1440001c, 0x3c050001, 0x8f82011c, 
-0x3c040001, 0x248434d0, 0x3c050001, 0x34420001, 
+0x3c040001, 0x24843590, 0x3c050001, 0x34420001, 
 0xaf82011c, 0xafa00010, 0xafa00014, 0x8f86011c, 
-0x34a50100, 0xc0029d3, 0x3821, 0x8c020218, 
+0x34a50100, 0xc002a03, 0x3821, 0x8c020218, 
 0x30420040, 0x10400014, 0x0, 0x8f82011c, 
-0x3c040001, 0x248434dc, 0x3c050001, 0x34420004, 
+0x3c040001, 0x2484359c, 0x3c050001, 0x34420004, 
 0xaf82011c, 0xafa00010, 0xafa00014, 0x8f86011c, 
-0x10000007, 0x34a50200, 0x3c040001, 0x248434e4, 
+0x10000007, 0x34a50200, 0x3c040001, 0x248435a4, 
 0xafa00010, 0xafa00014, 0x8f86011c, 0x34a50300, 
-0xc0029d3, 0x3821, 0x8fbf0018, 0x3e00008, 
+0xc002a03, 0x3821, 0x8fbf0018, 0x3e00008, 
 0x27bd0020, 0x8fa90010, 0x8f83012c, 0x8faa0014, 
 0x8fab0018, 0x1060000a, 0x27624fe0, 0x14620002, 
 0x24680020, 0x27684800, 0x8f820128, 0x11020004, 
@@ -5962,189 +5963,201 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xad0b0010, 0xaf890100, 0x10000006, 0x24020001, 
 0x8f430328, 0x1021, 0x24630001, 0xaf430328, 
 0x8f430328, 0x3e00008, 0x0, 0x3e00008, 
-0x0, 0x27bdffd8, 0x3c040001, 0x248434ec, 
+0x0, 0x27bdffd8, 0x3c040001, 0x248435ac, 
 0x3c050001, 0xafbf0024, 0xafb20020, 0xafb1001c, 
 0xafb00018, 0x8f900104, 0x8f9100b0, 0x8f92011c, 
 0x34a52500, 0x8f820100, 0x2403021, 0x2203821, 
-0xafa20010, 0xc0029d3, 0xafb00014, 0x8e020008, 
-0xafa20010, 0x8e02000c, 0x3c040001, 0x248434f8, 
+0xafa20010, 0xc002a03, 0xafb00014, 0x8e020008, 
+0xafa20010, 0x8e02000c, 0x3c040001, 0x248435b8, 
 0xafa20014, 0x8e060000, 0x8e070004, 0x3c050001, 
-0xc0029d3, 0x34a52510, 0x8e020018, 0xafa20010, 
-0x8e02001c, 0x3c040001, 0x24843504, 0xafa20014, 
-0x8e060010, 0x8e070014, 0x3c050001, 0xc0029d3, 
-0x34a52520, 0x3c030200, 0x2c31024, 0x1040000d, 
+0xc002a03, 0x34a52510, 0x8e020018, 0xafa20010, 
+0x8e02001c, 0x3c040001, 0x248435c4, 0xafa20014, 
+0x8e060010, 0x8e070014, 0x3c050001, 0xc002a03, 
+0x34a52520, 0x3c027f00, 0x2221024, 0x3c030800, 
+0x54430016, 0x3c030200, 0x8f82009c, 0x3042ffff, 
+0x14400012, 0x3c030200, 0x3c040001, 0x248435d0, 
+0x3c050002, 0x34a5f030, 0x3021, 0x3821, 
+0x36420002, 0xaf82011c, 0x36220001, 0xaf8200b0, 
+0xaf900104, 0xaf92011c, 0xafa00010, 0xc002a03, 
+0xafa00014, 0x10000024, 0x0, 0x2c31024, 
+0x1040000d, 0x2231024, 0x1040000b, 0x36420002, 
+0xaf82011c, 0x36220001, 0xaf8200b0, 0xaf900104, 
+0xaf92011c, 0x8f420320, 0x24420001, 0xaf420320, 
+0x10000015, 0x8f420320, 0x3c040001, 0x248435d8, 
+0x240202a2, 0xafa20010, 0xafa00014, 0x8f860144, 
+0x3c070001, 0x24e735e0, 0xc002a03, 0x3405dead, 
+0x8f82011c, 0x34420002, 0xaf82011c, 0x8f820220, 
+0x34420004, 0xaf820220, 0x8f820140, 0x3c030001, 
+0x431025, 0xaf820140, 0x8fbf0024, 0x8fb20020, 
+0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0028, 
+0x27bdffd8, 0x3c040001, 0x24843608, 0x3c050001, 
+0xafbf0024, 0xafb20020, 0xafb1001c, 0xafb00018, 
+0x8f900124, 0x8f9100a0, 0x8f92011c, 0x34a52600, 
+0x8f820120, 0x2403021, 0x2203821, 0xafa20010, 
+0xc002a03, 0xafb00014, 0x8e020008, 0xafa20010, 
+0x8e02000c, 0x3c040001, 0x24843614, 0xafa20014, 
+0x8e060000, 0x8e070004, 0x3c050001, 0xc002a03, 
+0x34a52610, 0x8e020018, 0xafa20010, 0x8e02001c, 
+0x3c040001, 0x24843620, 0xafa20014, 0x8e060010, 
+0x8e070014, 0x3c050001, 0xc002a03, 0x34a52620, 
+0x3c027f00, 0x2221024, 0x3c030800, 0x54430016, 
+0x3c030200, 0x8f8200ac, 0x3042ffff, 0x14400012, 
+0x3c030200, 0x3c040001, 0x2484362c, 0x3c050001, 
+0x34a5f030, 0x3021, 0x3821, 0x36420002, 
+0xaf82011c, 0x36220001, 0xaf8200a0, 0xaf900124, 
+0xaf92011c, 0xafa00010, 0xc002a03, 0xafa00014, 
+0x10000024, 0x0, 0x2c31024, 0x1040000d, 
 0x2231024, 0x1040000b, 0x36420002, 0xaf82011c, 
-0x36220001, 0xaf8200b0, 0xaf900104, 0xaf92011c, 
-0x8f420320, 0x24420001, 0xaf420320, 0x10000015, 
-0x8f420320, 0x3c040001, 0x24843510, 0x24020290
+0x36220001, 0xaf8200a0, 0xaf900124, 0xaf92011c, 
+0x8f42031c, 0x24420001, 0xaf42031c, 0x10000015, 
+0x8f42031c, 0x3c040001, 0x248435d8, 0x240202db
 0xafa20010, 0xafa00014, 0x8f860144, 0x3c070001, 
-0x24e73518, 0xc0029d3, 0x3405dead, 0x8f82011c, 
+0x24e735e0, 0xc002a03, 0x3405dead, 0x8f82011c, 
 0x34420002, 0xaf82011c, 0x8f820220, 0x34420004, 
 0xaf820220, 0x8f820140, 0x3c030001, 0x431025, 
 0xaf820140, 0x8fbf0024, 0x8fb20020, 0x8fb1001c, 
-0x8fb00018, 0x3e00008, 0x27bd0028, 0x27bdffd8, 
-0x3c040001, 0x24843540, 0x3c050001, 0xafbf0024, 
-0xafb20020, 0xafb1001c, 0xafb00018, 0x8f900124, 
-0x8f9100a0, 0x8f92011c, 0x34a52600, 0x8f820120, 
-0x2403021, 0x2203821, 0xafa20010, 0xc0029d3, 
-0xafb00014, 0x8e020008, 0xafa20010, 0x8e02000c, 
-0x3c040001, 0x2484354c, 0xafa20014, 0x8e060000, 
-0x8e070004, 0x3c050001, 0xc0029d3, 0x34a52610, 
-0x8e020018, 0xafa20010, 0x8e02001c, 0x3c040001, 
-0x24843558, 0xafa20014, 0x8e060010, 0x8e070014, 
-0x3c050001, 0xc0029d3, 0x34a52620, 0x3c030200, 
-0x2c31024, 0x1040000d, 0x2231024, 0x1040000b, 
-0x36420002, 0xaf82011c, 0x36220001, 0xaf8200a0, 
-0xaf900124, 0xaf92011c, 0x8f42031c, 0x24420001, 
-0xaf42031c, 0x10000015, 0x8f42031c, 0x3c040001, 
-0x24843510, 0x240202bc, 0xafa20010, 0xafa00014, 
-0x8f860144, 0x3c070001, 0x24e73518, 0xc0029d3, 
-0x3405dead, 0x8f82011c, 0x34420002, 0xaf82011c, 
-0x8f820220, 0x34420004, 0xaf820220, 0x8f820140, 
-0x3c030001, 0x431025, 0xaf820140, 0x8fbf0024, 
-0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 
-0x27bd0028, 0x6021, 0x5021, 0x3021, 
-0x2821, 0x6821, 0x4821, 0x7821, 
-0x7021, 0x8f880124, 0x8f870104, 0x1580002e, 
-0x8f8b011c, 0x11a00014, 0x31620800, 0x8f820120, 
-0x10460029, 0x0, 0x3c040001, 0x8c843e20, 
-0x8cc20000, 0x8cc30004, 0xac820000, 0xac830004, 
-0x8cc20008, 0xac820008, 0x94c2000e, 0xa482000e, 
-0x8cc20010, 0x240c0001, 0xac820010, 0x8cc20014, 
-0x10000012, 0x24c60020, 0x10400017, 0x0, 
-0x3c040001, 0x8c843e20, 0x8d020000, 0x8d030004, 
-0xac820000, 0xac830004, 0x8d020008, 0xac820008, 
-0x9502000e, 0xa482000e, 0x8d020010, 0x25060020, 
-0xac820010, 0x8d020014, 0x240c0001, 0xc01821, 
-0xac820014, 0x27624fe0, 0x43102b, 0x54400001, 
-0x27634800, 0x603021, 0x1540002f, 0x31620100, 
-0x11200014, 0x31628000, 0x8f820100, 0x1045002a, 
-0x31620100, 0x3c040001, 0x8c843e1c, 0x8ca20000, 
-0x8ca30004, 0xac820000, 0xac830004, 0x8ca20008, 
-0xac820008, 0x94a2000e, 0xa482000e, 0x8ca20010, 
-0x240a0001, 0xac820010, 0x8ca20014, 0x10000012, 
-0x24a50020, 0x10400018, 0x31620100, 0x3c040001, 
-0x8c843e1c, 0x8ce20000, 0x8ce30004, 0xac820000, 
-0xac830004, 0x8ce20008, 0xac820008, 0x94e2000e, 
-0xa482000e, 0x8ce20010, 0x24e50020, 0xac820010, 
-0x8ce20014, 0x240a0001, 0xa01821, 0xac820014, 
-0x276247e0, 0x43102b, 0x54400001, 0x27634000, 
-0x602821, 0x31620100, 0x5440001d, 0x31621000, 
-0x11a00009, 0x31a20800, 0x10400004, 0x25020020, 
-0x8f8200a8, 0xa5e20000, 0x25020020, 0xaf820124, 
-0x8f880124, 0x6821, 0x11800011, 0x31621000, 
-0x3c040001, 0x8c843e20, 0x8c820000, 0x8c830004, 
-0xaf820080, 0xaf830084, 0x8c820008, 0xaf8200a4, 
-0x9482000e, 0xaf8200ac, 0x8c820010, 0x6021, 
-0xaf8200a0, 0x8c8d0010, 0x8c8f0014, 0x31621000, 
-0x1440ff82, 0x0, 0x1120000f, 0x31220800, 
-0x10400004, 0x3c020002, 0x8f8200b8, 0xa5c20000, 
-0x3c020002, 0x1221024, 0x10400004, 0x24e20020, 
-0x8f8200b4, 0xaf8200d4, 0x24e20020, 0xaf820104, 
-0x8f870104, 0x4821, 0x1140ff70, 0x0, 
-0x3c040001, 0x8c843e1c, 0x8c820000, 0x8c830004, 
-0xaf820090, 0xaf830094, 0x8c820008, 0xaf8200b4, 
-0x9482000e, 0xaf82009c, 0x8c820010, 0x5021, 
-0xaf8200b0, 0x8c890010, 0x1000ff60, 0x8c8e0014, 
-0x3e00008, 0x0, 0x6021, 0x5821, 
-0x3021, 0x2821, 0x6821, 0x5021, 
-0x7821, 0x7021, 0x8f880124, 0x8f870104, 
-0x3c180100, 0x1580002e, 0x8f89011c, 0x11a00014, 
-0x31220800, 0x8f820120, 0x10460029, 0x0, 
-0x3c040001, 0x8c843e20, 0x8cc20000, 0x8cc30004, 
+0x8fb00018, 0x3e00008, 0x27bd0028, 0x6021, 
+0x5021, 0x3021, 0x2821, 0x6821, 
+0x4821, 0x7821, 0x7021, 0x8f880124, 
+0x8f870104, 0x1580002e, 0x8f8b011c, 0x11a00014, 
+0x31620800, 0x8f820120, 0x10460029, 0x0, 
+0x3c040001, 0x8c843f30, 0x8cc20000, 0x8cc30004, 
 0xac820000, 0xac830004, 0x8cc20008, 0xac820008, 
 0x94c2000e, 0xa482000e, 0x8cc20010, 0x240c0001, 
 0xac820010, 0x8cc20014, 0x10000012, 0x24c60020, 
-0x10400017, 0x0, 0x3c040001, 0x8c843e20, 
+0x10400017, 0x0, 0x3c040001, 0x8c843f30, 
 0x8d020000, 0x8d030004, 0xac820000, 0xac830004, 
 0x8d020008, 0xac820008, 0x9502000e, 0xa482000e, 
 0x8d020010, 0x25060020, 0xac820010, 0x8d020014, 
 0x240c0001, 0xc01821, 0xac820014, 0x27624fe0, 
 0x43102b, 0x54400001, 0x27634800, 0x603021, 
-0x1560002f, 0x31220100, 0x11400014, 0x31228000, 
-0x8f820100, 0x1045002a, 0x31220100, 0x3c040001, 
-0x8c843e1c, 0x8ca20000, 0x8ca30004, 0xac820000, 
+0x1540002f, 0x31620100, 0x11200014, 0x31628000, 
+0x8f820100, 0x1045002a, 0x31620100, 0x3c040001, 
+0x8c843f2c, 0x8ca20000, 0x8ca30004, 0xac820000, 
 0xac830004, 0x8ca20008, 0xac820008, 0x94a2000e, 
-0xa482000e, 0x8ca20010, 0x240b0001, 0xac820010, 
+0xa482000e, 0x8ca20010, 0x240a0001, 0xac820010, 
 0x8ca20014, 0x10000012, 0x24a50020, 0x10400018, 
-0x31220100, 0x3c040001, 0x8c843e1c, 0x8ce20000, 
+0x31620100, 0x3c040001, 0x8c843f2c, 0x8ce20000, 
 0x8ce30004, 0xac820000, 0xac830004, 0x8ce20008, 
 0xac820008, 0x94e2000e, 0xa482000e, 0x8ce20010, 
-0x24e50020, 0xac820010, 0x8ce20014, 0x240b0001, 
+0x24e50020, 0xac820010, 0x8ce20014, 0x240a0001, 
 0xa01821, 0xac820014, 0x276247e0, 0x43102b, 
-0x54400001, 0x27634000, 0x602821, 0x31220100, 
-0x5440001d, 0x31221000, 0x11a00009, 0x31a20800, 
+0x54400001, 0x27634000, 0x602821, 0x31620100, 
+0x5440001d, 0x31621000, 0x11a00009, 0x31a20800, 
 0x10400004, 0x25020020, 0x8f8200a8, 0xa5e20000, 
 0x25020020, 0xaf820124, 0x8f880124, 0x6821, 
-0x11800011, 0x31221000, 0x3c040001, 0x8c843e20, 
+0x11800011, 0x31621000, 0x3c040001, 0x8c843f30, 
 0x8c820000, 0x8c830004, 0xaf820080, 0xaf830084, 
 0x8c820008, 0xaf8200a4, 0x9482000e, 0xaf8200ac, 
 0x8c820010, 0x6021, 0xaf8200a0, 0x8c8d0010, 
-0x8c8f0014, 0x31221000, 0x14400022, 0x0, 
-0x1140000f, 0x31420800, 0x10400004, 0x3c020002, 
-0x8f8200b8, 0xa5c20000, 0x3c020002, 0x1421024, 
+0x8c8f0014, 0x31621000, 0x1440ff82, 0x0, 
+0x1120000f, 0x31220800, 0x10400004, 0x3c020002, 
+0x8f8200b8, 0xa5c20000, 0x3c020002, 0x1221024, 
 0x10400004, 0x24e20020, 0x8f8200b4, 0xaf8200d4, 
-0x24e20020, 0xaf820104, 0x8f870104, 0x5021, 
-0x11600010, 0x0, 0x3c040001, 0x8c843e1c, 
+0x24e20020, 0xaf820104, 0x8f870104, 0x4821, 
+0x1140ff70, 0x0, 0x3c040001, 0x8c843f2c, 
 0x8c820000, 0x8c830004, 0xaf820090, 0xaf830094, 
 0x8c820008, 0xaf8200b4, 0x9482000e, 0xaf82009c, 
-0x8c820010, 0x5821, 0xaf8200b0, 0x8c8a0010, 
-0x8c8e0014, 0x8f820070, 0x3c031000, 0x431024, 
-0x1040ff5c, 0x0, 0x8f820054, 0x24420005, 
-0xaf820078, 0x8c040234, 0x10800016, 0x1821, 
-0x3c020001, 0x571021, 0x8c4240e8, 0x24420005, 
-0x3c010001, 0x370821, 0xac2240e8, 0x3c020001, 
-0x571021, 0x8c4240e8, 0x44102b, 0x14400009, 
-0x24020001, 0x3c030080, 0x3c010001, 0x370821, 
-0xac2040e8, 0x3c010001, 0x370821, 0x1000000c, 
-0xa02240f0, 0x3c020001, 0x571021, 0x904240f0, 
-0x14400006, 0x3c020080, 0x3c020001, 0x571021, 
-0x904240f1, 0x10400002, 0x3c020080, 0x621825, 
-0x8c040230, 0x10800013, 0x0, 0x3c020001, 
-0x571021, 0x8c4240ec, 0x24420005, 0x3c010001, 
-0x370821, 0xac2240ec, 0x3c020001, 0x571021, 
-0x8c4240ec, 0x44102b, 0x14400006, 0x0, 
-0x3c010001, 0x370821, 0xac2040ec, 0x10000006, 
-0x781825, 0x3c020001, 0x571021, 0x904240f2, 
-0x54400001, 0x781825, 0x1060ff1a, 0x0, 
-0x8f420000, 0x10400007, 0x0, 0xaf80004c, 
-0x8f82004c, 0x1040fffd, 0x0, 0x10000005, 
-0x0, 0xaf800048, 0x8f820048, 0x1040fffd, 
-0x0, 0x8f820060, 0x431025, 0xaf820060, 
-0x8f420000, 0x10400003, 0x0, 0x1000ff05, 
-0xaf80004c, 0x1000ff03, 0xaf800048, 0x3e00008, 
-0x0, 0x0, 0x0, 0x3c020001, 
-0x8c423ca8, 0x27bdffe8, 0xafbf0014, 0x14400012, 
-0xafb00010, 0x3c100001, 0x26103ec0, 0x2002021, 
-0xc002a40, 0x24052000, 0x26021fe0, 0x3c010001, 
-0xac223e28, 0x3c010001, 0xac223e24, 0xac020250, 
+0x8c820010, 0x5021, 0xaf8200b0, 0x8c890010, 
+0x1000ff60, 0x8c8e0014, 0x3e00008, 0x0, 
+0x6021, 0x5821, 0x3021, 0x2821, 
+0x6821, 0x5021, 0x7821, 0x7021, 
+0x8f880124, 0x8f870104, 0x3c180100, 0x1580002e, 
+0x8f89011c, 0x11a00014, 0x31220800, 0x8f820120, 
+0x10460029, 0x0, 0x3c040001, 0x8c843f30, 
+0x8cc20000, 0x8cc30004, 0xac820000, 0xac830004, 
+0x8cc20008, 0xac820008, 0x94c2000e, 0xa482000e, 
+0x8cc20010, 0x240c0001, 0xac820010, 0x8cc20014, 
+0x10000012, 0x24c60020, 0x10400017, 0x0, 
+0x3c040001, 0x8c843f30, 0x8d020000, 0x8d030004, 
+0xac820000, 0xac830004, 0x8d020008, 0xac820008, 
+0x9502000e, 0xa482000e, 0x8d020010, 0x25060020, 
+0xac820010, 0x8d020014, 0x240c0001, 0xc01821, 
+0xac820014, 0x27624fe0, 0x43102b, 0x54400001, 
+0x27634800, 0x603021, 0x1560002f, 0x31220100, 
+0x11400014, 0x31228000, 0x8f820100, 0x1045002a, 
+0x31220100, 0x3c040001, 0x8c843f2c, 0x8ca20000, 
+0x8ca30004, 0xac820000, 0xac830004, 0x8ca20008, 
+0xac820008, 0x94a2000e, 0xa482000e, 0x8ca20010, 
+0x240b0001, 0xac820010, 0x8ca20014, 0x10000012, 
+0x24a50020, 0x10400018, 0x31220100, 0x3c040001, 
+0x8c843f2c, 0x8ce20000, 0x8ce30004, 0xac820000, 
+0xac830004, 0x8ce20008, 0xac820008, 0x94e2000e, 
+0xa482000e, 0x8ce20010, 0x24e50020, 0xac820010, 
+0x8ce20014, 0x240b0001, 0xa01821, 0xac820014, 
+0x276247e0, 0x43102b, 0x54400001, 0x27634000, 
+0x602821, 0x31220100, 0x5440001d, 0x31221000, 
+0x11a00009, 0x31a20800, 0x10400004, 0x25020020, 
+0x8f8200a8, 0xa5e20000, 0x25020020, 0xaf820124, 
+0x8f880124, 0x6821, 0x11800011, 0x31221000, 
+0x3c040001, 0x8c843f30, 0x8c820000, 0x8c830004, 
+0xaf820080, 0xaf830084, 0x8c820008, 0xaf8200a4, 
+0x9482000e, 0xaf8200ac, 0x8c820010, 0x6021, 
+0xaf8200a0, 0x8c8d0010, 0x8c8f0014, 0x31221000, 
+0x14400022, 0x0, 0x1140000f, 0x31420800, 
+0x10400004, 0x3c020002, 0x8f8200b8, 0xa5c20000, 
+0x3c020002, 0x1421024, 0x10400004, 0x24e20020, 
+0x8f8200b4, 0xaf8200d4, 0x24e20020, 0xaf820104, 
+0x8f870104, 0x5021, 0x11600010, 0x0, 
+0x3c040001, 0x8c843f2c, 0x8c820000, 0x8c830004, 
+0xaf820090, 0xaf830094, 0x8c820008, 0xaf8200b4, 
+0x9482000e, 0xaf82009c, 0x8c820010, 0x5821, 
+0xaf8200b0, 0x8c8a0010, 0x8c8e0014, 0x8f820070, 
+0x3c031000, 0x431024, 0x1040ff5c, 0x0, 
+0x8f820054, 0x24420005, 0xaf820078, 0x8c040234, 
+0x10800016, 0x1821, 0x3c020001, 0x571021, 
+0x8c4240e8, 0x24420005, 0x3c010001, 0x370821, 
+0xac2240e8, 0x3c020001, 0x571021, 0x8c4240e8, 
+0x44102b, 0x14400009, 0x24020001, 0x3c030080, 
+0x3c010001, 0x370821, 0xac2040e8, 0x3c010001, 
+0x370821, 0x1000000c, 0xa02240f0, 0x3c020001, 
+0x571021, 0x904240f0, 0x14400006, 0x3c020080, 
+0x3c020001, 0x571021, 0x904240f1, 0x10400002, 
+0x3c020080, 0x621825, 0x8c040230, 0x10800013, 
+0x0, 0x3c020001, 0x571021, 0x8c4240ec, 
+0x24420005, 0x3c010001, 0x370821, 0xac2240ec, 
+0x3c020001, 0x571021, 0x8c4240ec, 0x44102b, 
+0x14400006, 0x0, 0x3c010001, 0x370821, 
+0xac2040ec, 0x10000006, 0x781825, 0x3c020001, 
+0x571021, 0x904240f2, 0x54400001, 0x781825, 
+0x1060ff1a, 0x0, 0x8f420000, 0x10400007, 
+0x0, 0xaf80004c, 0x8f82004c, 0x1040fffd, 
+0x0, 0x10000005, 0x0, 0xaf800048, 
+0x8f820048, 0x1040fffd, 0x0, 0x8f820060, 
+0x431025, 0xaf820060, 0x8f420000, 0x10400003, 
+0x0, 0x1000ff05, 0xaf80004c, 0x1000ff03, 
+0xaf800048, 0x3e00008, 0x0, 0x3c020001, 
+0x8c423db8, 0x27bdffe8, 0xafbf0014, 0x14400012, 
+0xafb00010, 0x3c100001, 0x26103fd0, 0x2002021, 
+0xc002a70, 0x24052000, 0x26021fe0, 0x3c010001, 
+0xac223f38, 0x3c010001, 0xac223f34, 0xac020250, 
 0x24022000, 0xac100254, 0xac020258, 0x24020001, 
-0x3c010001, 0xac223ca8, 0x8fbf0014, 0x8fb00010, 
-0x3e00008, 0x27bd0018, 0x3c090001, 0x8d293e28, 
+0x3c010001, 0xac223db8, 0x8fbf0014, 0x8fb00010, 
+0x3e00008, 0x27bd0018, 0x3c090001, 0x8d293f38, 
 0x8c820000, 0x8fa30010, 0x8fa80014, 0xad220000, 
 0x8c820004, 0xad250008, 0xad220004, 0x8f820054, 
 0xad260010, 0xad270014, 0xad230018, 0xad28001c, 
-0xad22000c, 0x2529ffe0, 0x3c020001, 0x24423ec0, 
+0xad22000c, 0x2529ffe0, 0x3c020001, 0x24423fd0, 
 0x122102b, 0x10400003, 0x0, 0x3c090001, 
-0x8d293e24, 0x3c020001, 0x8c423c90, 0xad220000, 
-0x3c020001, 0x8c423c90, 0x3c010001, 0xac293e28, 
+0x8d293f34, 0x3c020001, 0x8c423da0, 0xad220000, 
+0x3c020001, 0x8c423da0, 0x3c010001, 0xac293f38, 
 0xad220004, 0xac090250, 0x3e00008, 0x0, 
-0x27bdffd0, 0xafb00010, 0x3c100001, 0x8e103e28, 
-0x3c020001, 0x8c423c90, 0xafb10014, 0x808821, 
+0x27bdffd0, 0xafb00010, 0x3c100001, 0x8e103f38, 
+0x3c020001, 0x8c423da0, 0xafb10014, 0x808821, 
 0xafbe0024, 0x8fbe0040, 0x8fa40048, 0xafb20018, 
 0xa09021, 0xafbf0028, 0xafb50020, 0xafb3001c, 
-0xae020000, 0x3c020001, 0x8c423c90, 0xc09821, 
+0xae020000, 0x3c020001, 0x8c423da0, 0xc09821, 
 0xe0a821, 0x10800006, 0xae020004, 0x26050008, 
-0xc002a4b, 0x24060018, 0x10000005, 0x2610ffe0, 
-0x26040008, 0xc002a40, 0x24050018, 0x2610ffe0, 
-0x3c030001, 0x24633ec0, 0x203102b, 0x10400003, 
-0x0, 0x3c100001, 0x8e103e24, 0x8e220000, 
+0xc002a7b, 0x24060018, 0x10000005, 0x2610ffe0, 
+0x26040008, 0xc002a70, 0x24050018, 0x2610ffe0, 
+0x3c030001, 0x24633fd0, 0x203102b, 0x10400003, 
+0x0, 0x3c100001, 0x8e103f34, 0x8e220000, 
 0xae020000, 0x8e220004, 0xae120008, 0xae020004, 
 0x8f820054, 0xae130010, 0xae150014, 0xae1e0018, 
 0x8fa80044, 0xae08001c, 0xae02000c, 0x2610ffe0, 
 0x203102b, 0x10400003, 0x0, 0x3c100001, 
-0x8e103e24, 0x3c020001, 0x8c423c90, 0xae020000, 
-0x3c020001, 0x8c423c90, 0x3c010001, 0xac303e28, 
+0x8e103f34, 0x3c020001, 0x8c423da0, 0xae020000, 
+0x3c020001, 0x8c423da0, 0x3c010001, 0xac303f38, 
 0xae020004, 0xac100250, 0x8fbf0028, 0x8fbe0024, 
 0x8fb50020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 
 0x8fb00010, 0x3e00008, 0x27bd0030, 0x851821, 
@@ -6186,7 +6199,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x27bdffc0, 0x32c20020, 0xafbf0038, 0xafb30034, 
 0xafb20030, 0xafb1002c, 0x10400004, 0xafb00028, 
 0x8f530028, 0x10000002, 0x0, 0x8f530020, 
-0x8f420030, 0x105300e4, 0x21100, 0x8f43001c, 
+0x8f420030, 0x105300eb, 0x21100, 0x8f43001c, 
 0x628021, 0x8e040000, 0x8e050004, 0x96120008, 
 0x8f420090, 0x9611000a, 0x3246ffff, 0x46102a, 
 0x10400017, 0x0, 0x8f8200d8, 0x8f430098, 
@@ -6194,9 +6207,9 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2842fff9, 0x10400005, 0x0, 0x8f420090, 
 0x8f430138, 0x431021, 0xaf420090, 0x8f420090, 
 0x46102a, 0x10400006, 0x0, 0x8f420338, 
-0x24420001, 0xaf420338, 0x100000da, 0x8f420338, 
+0x24420001, 0xaf420338, 0x100000e1, 0x8f420338, 
 0x8f8200fc, 0x14400006, 0x32c20008, 0x8f420334, 
-0x24420001, 0xaf420334, 0x100000d2, 0x8f420334, 
+0x24420001, 0xaf420334, 0x100000d9, 0x8f420334, 
 0x5040000c, 0xaf4000ac, 0x934205b3, 0x10400008, 
 0x32220200, 0x10400006, 0x3c034000, 0x9602000e, 
 0xaf4300ac, 0x21400, 0x10000002, 0xaf4200b0, 
@@ -6205,7 +6218,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x24020004, 0xafa20010, 0x8f420030, 0xafa20014, 
 0x8f420010, 0x3c030002, 0x431025, 0xafa20018, 
 0x8f460098, 0x8f420108, 0x40f809, 0x0, 
-0x104000b0, 0x0, 0x8f42009c, 0x8f430094, 
+0x104000b7, 0x0, 0x8f42009c, 0x8f430094, 
 0x2421021, 0xaf42009c, 0xae03000c, 0x8f4200ac, 
 0x10400008, 0x3c034000, 0x8f420094, 0x431025, 
 0xafa20020, 0x8f42009c, 0x8f4300b0, 0x10000004, 
@@ -6232,123 +6245,124 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f420090, 0x8f430094, 0x862024, 0x441023, 
 0x65182b, 0x14600005, 0xaf420090, 0x8f420094, 
 0x8f430138, 0x431023, 0xaf420094, 0x8f420094, 
-0x10000023, 0xaf40009c, 0x3247ffff, 0x10e00021
-0x0, 0x14400002, 0x24020010, 0x24020002, 
+0x10000023, 0xaf40009c, 0x3247ffff, 0x50e00022
+0x32c20020, 0x14400002, 0x24020010, 0x24020002, 
 0xafa20010, 0x8f420030, 0xafa20014, 0x8f420010, 
 0xafa20018, 0x8f460098, 0x8f420108, 0x40f809, 
-0x0, 0x10400033, 0x3245ffff, 0x8f420098, 
+0x0, 0x1040003a, 0x3245ffff, 0x8f420098, 
 0x8f430090, 0x8f460130, 0x451021, 0xaf420098, 
 0x8f42009c, 0x8f440098, 0xa34005b3, 0x651823, 
 0xaf430090, 0x451021, 0x86202b, 0x14800005, 
 0xaf42009c, 0x8f420098, 0x8f430138, 0x431023, 
-0xaf420098, 0x8f420030, 0x8f430040, 0x24420001, 
-0x2463ffff, 0x431024, 0xaf420030, 0x8f420030, 
-0x14530018, 0x0, 0x8f420000, 0x10400007, 
-0x0, 0xaf80004c, 0x8f82004c, 0x1040fffd, 
-0x0, 0x10000005, 0x0, 0xaf800048, 
-0x8f820048, 0x1040fffd, 0x0, 0x8f820060, 
-0x2403fff7, 0x431024, 0xaf820060, 0x8f420000, 
-0x10400003, 0x0, 0x10000002, 0xaf80004c, 
-0xaf800048, 0x8fbf0038, 0x8fb30034, 0x8fb20030, 
-0x8fb1002c, 0x8fb00028, 0x3e00008, 0x27bd0040, 
-0x3e00008, 0x0, 0x27bdffd0, 0x32c20020, 
-0xafbf002c, 0xafb20028, 0xafb10024, 0x10400004, 
-0xafb00020, 0x8f520028, 0x10000002, 0x0, 
-0x8f520020, 0x8f420030, 0x105200b5, 0x21100, 
-0x8f43001c, 0x628021, 0x8e040000, 0x8e050004, 
-0x96110008, 0x8f420090, 0x9607000a, 0x3226ffff, 
-0x46102a, 0x10400017, 0x0, 0x8f8200d8, 
-0x8f430098, 0x431023, 0x2442ff80, 0xaf420090, 
-0x8f420090, 0x2842ff81, 0x10400005, 0x0, 
-0x8f420090, 0x8f430138, 0x431021, 0xaf420090, 
-0x8f420090, 0x46102a, 0x10400006, 0x0, 
-0x8f420338, 0x24420001, 0xaf420338, 0x100000ab, 
-0x8f420338, 0x8f8600fc, 0x10c0000c, 0x0, 
-0x8f8200f4, 0x2403fff8, 0x431024, 0x461023, 
-0x218c3, 0x50600001, 0x24030100, 0x8f42008c, 
-0x43102b, 0x14400006, 0x712c2, 0x8f420334, 
-0x24420001, 0xaf420334, 0x10000098, 0x8f420334, 
-0x934305b3, 0x1060000f, 0x30460001, 0x8f420010, 
-0x34480400, 0x32c20008, 0x10400008, 0x30e20200, 
-0x10400006, 0x3c034000, 0x9602000e, 0xaf4300ac, 
-0x21400, 0x10000004, 0xaf4200b0, 0x10000002, 
-0xaf4000ac, 0x8f480010, 0x30e20004, 0x10400045, 
-0x3227ffff, 0x8f4900ac, 0x11200005, 0x30c200ff, 
-0x14400006, 0x24020040, 0x10000004, 0x24020008, 
-0x14400002, 0x24020020, 0x24020004, 0xafa20010, 
-0x8f430030, 0x11200004, 0xafa30014, 0x8f4200b0, 
-0x621025, 0xafa20014, 0x3c020002, 0x1021025, 
-0xafa20018, 0x8f460098, 0x8f420108, 0x40f809, 
-0x0, 0x10400069, 0x3224ffff, 0x8f42008c, 
-0x8f430094, 0x24420001, 0xaf42008c, 0x24020001, 
-0xae03000c, 0xa34205b3, 0x8f420098, 0x2406fff8, 
-0x8f450130, 0x441021, 0x24420007, 0x461024, 
-0x24840007, 0xaf420094, 0x8f420090, 0x8f430094, 
-0x862024, 0x441023, 0x65182b, 0x14600005, 
-0xaf420090, 0x8f420094, 0x8f430138, 0x431023, 
-0xaf420094, 0x8f430094, 0x8f420134, 0x43102b, 
-0x10400009, 0x0, 0x8f430130, 0x8f440094, 
-0x8f420090, 0x8f45012c, 0x641823, 0x431023, 
-0xaf420090, 0xaf450094, 0x8f420094, 0x1000001f, 
-0xaf420098, 0x10e0001d, 0x30c200ff, 0x14400002, 
-0x24020010, 0x24020002, 0xafa20010, 0x8f420030, 
-0xafa80018, 0xafa20014, 0x8f460098, 0x8f420108, 
-0x40f809, 0x0, 0x10400030, 0x3225ffff, 
-0x8f420098, 0x8f440130, 0x451021, 0xaf420098, 
-0x8f420090, 0x8f430098, 0xa34005b3, 0x451023, 
-0x64182b, 0x14600005, 0xaf420090, 0x8f420098, 
-0x8f430138, 0x431023, 0xaf420098, 0x8f420030, 
-0x8f430040, 0x24420001, 0x2463ffff, 0x431024, 
-0xaf420030, 0x8f420030, 0x14520018, 0x0, 
-0x8f420000, 0x10400007, 0x0, 0xaf80004c, 
-0x8f82004c, 0x1040fffd, 0x0, 0x10000005, 
-0x0, 0xaf800048, 0x8f820048, 0x1040fffd, 
-0x0, 0x8f820060, 0x2403fff7, 0x431024, 
-0xaf820060, 0x8f420000, 0x10400003, 0x0, 
-0x10000002, 0xaf80004c, 0xaf800048, 0x8fbf002c, 
-0x8fb20028, 0x8fb10024, 0x8fb00020, 0x3e00008, 
-0x27bd0030, 0x3e00008, 0x0, 0x27bdffd8, 
-0x3c020001, 0x34422ec0, 0xafbf0020, 0x8f4300f0, 
-0x8f840108, 0x2e21021, 0x54620004, 0x24620008, 
-0x3c020001, 0x34422cc0, 0x2e21021, 0x401821, 
-0xaf4300f0, 0xac600000, 0x8f4200ec, 0x8c660004, 
-0x14620004, 0x3c020001, 0x24820020, 0x1000000f, 
-0xaf820108, 0x8f4300f0, 0x34422ec0, 0x2e21021, 
-0x54620004, 0x24620008, 0x3c020001, 0x34422cc0, 
-0x2e21021, 0x401821, 0x8c620004, 0x21140, 
-0x821021, 0xaf820108, 0xac600000, 0x8c850018, 
-0x30a20036, 0x1040006c, 0x30a20001, 0x8c82001c, 
-0x8f430040, 0x8f440034, 0x24420001, 0x2463ffff, 
-0x431024, 0x862021, 0xaf42002c, 0x30a20030, 
-0x14400006, 0xaf440034, 0x8f420034, 0x8c03023c, 
-0x43102b, 0x144000c9, 0x0, 0x32c20010, 
-0x10400028, 0x24070008, 0x8f440160, 0x8f450164, 
-0x8f43002c, 0x8f48000c, 0x8f860120, 0x24020080, 
-0xafa20010, 0xafa30014, 0xafa80018, 0x8f42010c, 
-0x40f809, 0x24c6001c, 0x14400011, 0x24020001, 
-0x3c010001, 0x370821, 0xa02240f1, 0x8f820124, 
-0xafa20010, 0x8f820128, 0x3c040001, 0x24843800, 
-0xafa20014, 0x8f46002c, 0x8f870120, 0x3c050009, 
-0xc0029d3, 0x34a51100, 0x10000036, 0x0, 
-0x8f4202f0, 0x8f43002c, 0x24420001, 0xaf4202f0, 
-0x8f4202f0, 0x24020001, 0xa34205b2, 0x10000026, 
-0xaf430038, 0x8f440160, 0x8f450164, 0x8f43002c, 
-0x8f48000c, 0x8f860120, 0x24020020, 0xafa20010, 
+0xaf420098, 0x32c20020, 0x10400005, 0x0, 
+0x8f420348, 0x2442ffff, 0xaf420348, 0x8f420348, 
+0x8f420030, 0x8f430040, 0x24420001, 0x2463ffff, 
+0x431024, 0xaf420030, 0x8f420030, 0x14530018, 
+0x0, 0x8f420000, 0x10400007, 0x0, 
+0xaf80004c, 0x8f82004c, 0x1040fffd, 0x0, 
+0x10000005, 0x0, 0xaf800048, 0x8f820048, 
+0x1040fffd, 0x0, 0x8f820060, 0x2403fff7, 
+0x431024, 0xaf820060, 0x8f420000, 0x10400003, 
+0x0, 0x10000002, 0xaf80004c, 0xaf800048, 
+0x8fbf0038, 0x8fb30034, 0x8fb20030, 0x8fb1002c, 
+0x8fb00028, 0x3e00008, 0x27bd0040, 0x3e00008, 
+0x0, 0x27bdffd0, 0x32c20020, 0xafbf002c, 
+0xafb20028, 0xafb10024, 0x10400004, 0xafb00020, 
+0x8f520028, 0x10000002, 0x0, 0x8f520020, 
+0x8f420030, 0x105200b5, 0x21100, 0x8f43001c, 
+0x628021, 0x8e040000, 0x8e050004, 0x96110008, 
+0x8f420090, 0x9607000a, 0x3226ffff, 0x46102a, 
+0x10400017, 0x0, 0x8f8200d8, 0x8f430098, 
+0x431023, 0x2442ff80, 0xaf420090, 0x8f420090, 
+0x2842ff81, 0x10400005, 0x0, 0x8f420090, 
+0x8f430138, 0x431021, 0xaf420090, 0x8f420090, 
+0x46102a, 0x10400006, 0x0, 0x8f420338, 
+0x24420001, 0xaf420338, 0x100000ab, 0x8f420338, 
+0x8f8600fc, 0x10c0000c, 0x0, 0x8f8200f4, 
+0x2403fff8, 0x431024, 0x461023, 0x218c3, 
+0x50600001, 0x24030100, 0x8f42008c, 0x43102b, 
+0x14400006, 0x712c2, 0x8f420334, 0x24420001, 
+0xaf420334, 0x10000098, 0x8f420334, 0x934305b3, 
+0x1060000f, 0x30460001, 0x8f420010, 0x34480400, 
+0x32c20008, 0x10400008, 0x30e20200, 0x10400006, 
+0x3c034000, 0x9602000e, 0xaf4300ac, 0x21400, 
+0x10000004, 0xaf4200b0, 0x10000002, 0xaf4000ac, 
+0x8f480010, 0x30e20004, 0x10400045, 0x3227ffff, 
+0x8f4900ac, 0x11200005, 0x30c200ff, 0x14400006, 
+0x24020040, 0x10000004, 0x24020008, 0x14400002, 
+0x24020020, 0x24020004, 0xafa20010, 0x8f430030, 
+0x11200004, 0xafa30014, 0x8f4200b0, 0x621025, 
+0xafa20014, 0x3c020002, 0x1021025, 0xafa20018, 
+0x8f460098, 0x8f420108, 0x40f809, 0x0, 
+0x10400069, 0x3224ffff, 0x8f42008c, 0x8f430094, 
+0x24420001, 0xaf42008c, 0x24020001, 0xae03000c, 
+0xa34205b3, 0x8f420098, 0x2406fff8, 0x8f450130, 
+0x441021, 0x24420007, 0x461024, 0x24840007, 
+0xaf420094, 0x8f420090, 0x8f430094, 0x862024, 
+0x441023, 0x65182b, 0x14600005, 0xaf420090, 
+0x8f420094, 0x8f430138, 0x431023, 0xaf420094, 
+0x8f430094, 0x8f420134, 0x43102b, 0x10400009, 
+0x0, 0x8f430130, 0x8f440094, 0x8f420090, 
+0x8f45012c, 0x641823, 0x431023, 0xaf420090, 
+0xaf450094, 0x8f420094, 0x1000001f, 0xaf420098, 
+0x10e0001d, 0x30c200ff, 0x14400002, 0x24020010, 
+0x24020002, 0xafa20010, 0x8f420030, 0xafa80018, 
+0xafa20014, 0x8f460098, 0x8f420108, 0x40f809, 
+0x0, 0x10400030, 0x3225ffff, 0x8f420098, 
+0x8f440130, 0x451021, 0xaf420098, 0x8f420090, 
+0x8f430098, 0xa34005b3, 0x451023, 0x64182b, 
+0x14600005, 0xaf420090, 0x8f420098, 0x8f430138, 
+0x431023, 0xaf420098, 0x8f420030, 0x8f430040, 
+0x24420001, 0x2463ffff, 0x431024, 0xaf420030, 
+0x8f420030, 0x14520018, 0x0, 0x8f420000, 
+0x10400007, 0x0, 0xaf80004c, 0x8f82004c, 
+0x1040fffd, 0x0, 0x10000005, 0x0, 
+0xaf800048, 0x8f820048, 0x1040fffd, 0x0, 
+0x8f820060, 0x2403fff7, 0x431024, 0xaf820060, 
+0x8f420000, 0x10400003, 0x0, 0x10000002, 
+0xaf80004c, 0xaf800048, 0x8fbf002c, 0x8fb20028, 
+0x8fb10024, 0x8fb00020, 0x3e00008, 0x27bd0030, 
+0x3e00008, 0x0, 0x27bdffd8, 0x3c020001, 
+0x34422ec0, 0xafbf0020, 0x8f4300f0, 0x8f840108, 
+0x2e21021, 0x54620004, 0x24620008, 0x3c020001, 
+0x34422cc0, 0x2e21021, 0x401821, 0xaf4300f0, 
+0xac600000, 0x8f4200ec, 0x8c660004, 0x14620004, 
+0x3c020001, 0x24820020, 0x1000000f, 0xaf820108, 
+0x8f4300f0, 0x34422ec0, 0x2e21021, 0x54620004, 
+0x24620008, 0x3c020001, 0x34422cc0, 0x2e21021, 
+0x401821, 0x8c620004, 0x21140, 0x821021, 
+0xaf820108, 0xac600000, 0x8c850018, 0x30a20036, 
+0x1040006c, 0x30a20001, 0x8c82001c, 0x8f430040, 
+0x8f440034, 0x24420001, 0x2463ffff, 0x431024, 
+0x862021, 0xaf42002c, 0x30a20030, 0x14400006, 
+0xaf440034, 0x8f420034, 0x8c03023c, 0x43102b, 
+0x144000c6, 0x0, 0x32c20010, 0x10400028, 
+0x24070008, 0x8f440160, 0x8f450164, 0x8f43002c, 
+0x8f48000c, 0x8f860120, 0x24020080, 0xafa20010, 
 0xafa30014, 0xafa80018, 0x8f42010c, 0x40f809, 
 0x24c6001c, 0x14400011, 0x24020001, 0x3c010001, 
-0x370821, 0xa02240f0, 0x8f820124, 0xafa20010, 
-0x8f820128, 0x3c040001, 0x248437f4, 0xafa20014, 
-0x8f46002c, 0x8f870120, 0x3c050009, 0xc0029d3, 
-0x34a50900, 0x1000000f, 0x0, 0x8f4202f0, 
-0x24420001, 0xaf4202f0, 0x8f4202f0, 0x8f42002c, 
-0xa34005b2, 0xaf420038, 0x3c010001, 0x370821, 
-0xa02040f1, 0x3c010001, 0x370821, 0xa02040f0, 
-0xaf400034, 0x8f420304, 0x24420001, 0xaf420304, 
-0x1000006e, 0x8f420304, 0x10400025, 0x30a27000, 
-0x8c85001c, 0x8f420028, 0xa22023, 0x4810003, 
-0x0, 0x8f420040, 0x822021, 0x8f420348, 
-0x8f430000, 0x441021, 0xaf420348, 0x8f42035c, 
-0xaf450028, 0x441021, 0x10600007, 0xaf42035c, 
+0x370821, 0xa02240f1, 0x8f820124, 0xafa20010, 
+0x8f820128, 0x3c040001, 0x248438e4, 0xafa20014, 
+0x8f46002c, 0x8f870120, 0x3c050009, 0xc002a03, 
+0x34a51100, 0x10000036, 0x0, 0x8f4202f0, 
+0x8f43002c, 0x24420001, 0xaf4202f0, 0x8f4202f0, 
+0x24020001, 0xa34205b2, 0x10000026, 0xaf430038, 
+0x8f440160, 0x8f450164, 0x8f43002c, 0x8f48000c, 
+0x8f860120, 0x24020020, 0xafa20010, 0xafa30014, 
+0xafa80018, 0x8f42010c, 0x40f809, 0x24c6001c, 
+0x14400011, 0x24020001, 0x3c010001, 0x370821, 
+0xa02240f0, 0x8f820124, 0xafa20010, 0x8f820128, 
+0x3c040001, 0x248438d8, 0xafa20014, 0x8f46002c, 
+0x8f870120, 0x3c050009, 0xc002a03, 0x34a50900, 
+0x1000000f, 0x0, 0x8f4202f0, 0x24420001, 
+0xaf4202f0, 0x8f4202f0, 0x8f42002c, 0xa34005b2, 
+0xaf420038, 0x3c010001, 0x370821, 0xa02040f1, 
+0x3c010001, 0x370821, 0xa02040f0, 0xaf400034, 
+0x8f420304, 0x24420001, 0xaf420304, 0x1000006b, 
+0x8f420304, 0x10400022, 0x30a27000, 0x8c85001c, 
+0x8f420028, 0xa22023, 0x4810003, 0x0, 
+0x8f420040, 0x822021, 0x8f420348, 0x8f430000, 
+0xaf450028, 0x441021, 0x10600007, 0xaf420348, 
 0xaf80004c, 0x8f82004c, 0x1040fffd, 0x0, 
 0x10000005, 0x0, 0xaf800048, 0x8f820048, 
 0x1040fffd, 0x0, 0x8f820060, 0x34420008, 
@@ -6367,7 +6381,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x441021, 0xaf420358, 0x3c020800, 0x2c21024, 
 0x5040001a, 0x36940040, 0x10000018, 0x0, 
 0x30a20100, 0x10400015, 0x0, 0x3c020001, 
-0x8c423c54, 0x1040000c, 0x0, 0x274301b0, 
+0x8c423d64, 0x1040000c, 0x0, 0x274301b0, 
 0x24650400, 0x65102b, 0x10400007, 0x26e40028, 
 0x8c820000, 0xac620000, 0x24630004, 0x65102b, 
 0x1440fffb, 0x24840004, 0x8f4202cc, 0xa34005b6, 
@@ -6376,7 +6390,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x27bdffa8, 0xafbf0050, 0xafbe004c, 0xafb50048, 
 0xafb30044, 0xafb20040, 0xafb1003c, 0xafb00038, 
 0x8f910108, 0x26220020, 0xaf820108, 0x8e320018, 
-0xa821, 0x32420024, 0x104001b1, 0xf021, 
+0xa821, 0x32420024, 0x104001b7, 0xf021, 
 0x8e26001c, 0x8f42001c, 0x61900, 0x431021, 
 0x8c50000c, 0x9603000c, 0x962d0016, 0x9453000a, 
 0x2c6205dd, 0x10400015, 0x2821, 0x32c20040, 
@@ -6400,8 +6414,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x431021, 0x904c0009, 0x318900ff, 0x39230006, 
 0x3182b, 0x39220011, 0x2102b, 0x621824, 
 0x1060000c, 0x3c050006, 0x8f4200a4, 0x3c040001, 
-0x24843810, 0xafa20010, 0x8f4200a0, 0x34a54600, 
-0x1203821, 0xc0029d3, 0xafa20014, 0x1000004e, 
+0x248438f4, 0xafa20010, 0x8f4200a0, 0x34a54600, 
+0x1203821, 0xc002a03, 0xafa20014, 0x1000004e, 
 0x0, 0x32c20004, 0x14400013, 0x2821, 
 0x316200ff, 0x14400004, 0x0, 0x95020002, 
 0x1000000d, 0x4a2823, 0x9505000c, 0x9502000e, 
@@ -6429,7 +6443,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f4200b4, 0x24430001, 0x210c0, 0x571021, 
 0xaf4300b4, 0x8fa30020, 0x8fa40024, 0x3c010001, 
 0x220821, 0xac2338e8, 0x3c010001, 0x220821, 
-0xac2438ec, 0x100000a5, 0xaf40009c, 0x10400064, 
+0xac2438ec, 0x100000a5, 0x32c20020, 0x10400064, 
 0x0, 0x8f4200b4, 0x24430001, 0x210c0, 
 0x571021, 0xaf4300b4, 0x8fa30020, 0x8fa40024, 
 0x3c010001, 0x220821, 0xac2338e8, 0x3c010001, 
@@ -6463,41 +6477,44 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xaf450264, 0x92020000, 0x30420001, 0x1440000c, 
 0x2402ffff, 0x8f420268, 0x8f43026c, 0x24630001, 
 0x2c640001, 0x441021, 0xaf420268, 0xaf43026c, 
-0x8f420268, 0x8f43026c, 0x1000001c, 0xaf40009c
+0x8f420268, 0x8f43026c, 0x1000001c, 0x32c20020
 0x8e030000, 0x1462000f, 0x3402ffff, 0x96030004, 
 0x1462000c, 0x0, 0x8f420278, 0x8f43027c, 
 0x24630001, 0x2c640001, 0x441021, 0xaf420278, 
 0xaf43027c, 0x8f420278, 0x8f43027c, 0x1000000b, 
-0xaf40009c, 0x8f420270, 0x8f430274, 0x24630001, 
+0x32c20020, 0x8f420270, 0x8f430274, 0x24630001, 
 0x2c640001, 0x441021, 0xaf420270, 0xaf430274, 
-0x8f420270, 0x8f430274, 0xaf40009c, 0x8e22001c, 
+0x8f420270, 0x8f430274, 0x32c20020, 0x10400005, 
+0xaf40009c, 0x8f420348, 0x2442ffff, 0xaf420348, 
+0x8f420348, 0x8e22001c, 0x8f430040, 0x24420001, 
+0x2463ffff, 0x431024, 0xaf42002c, 0x32420060, 
+0x14400008, 0x32c20010, 0x8f420034, 0x24420001, 
+0xaf420034, 0x8c03023c, 0x43102b, 0x14400114, 
+0x32c20010, 0x10400018, 0x24070008, 0x8f440160, 
+0x8f450164, 0x8f43002c, 0x8f48000c, 0x8f860120, 
+0x24020080, 0xafa20010, 0xafa30014, 0xafa80018, 
+0x8f42010c, 0x40f809, 0x24c6001c, 0x10400047, 
+0x24020001, 0x8f4202f0, 0x8f43002c, 0x24420001, 
+0xaf4202f0, 0x8f4202f0, 0x24020001, 0xa34205b2, 
+0x1000007c, 0xaf430038, 0x8f440160, 0x8f450164, 
+0x8f43002c, 0x8f48000c, 0x8f860120, 0x24020020, 
+0xafa20010, 0xafa30014, 0xafa80018, 0x8f42010c, 
+0x40f809, 0x24c6001c, 0x10400057, 0x24020001, 
+0x10000065, 0x0, 0x32420012, 0x10400075, 
+0x32420001, 0x9622000e, 0x8f43009c, 0x621821, 
+0x32c20020, 0x10400005, 0xaf43009c, 0x8f420348, 
+0x2442ffff, 0xaf420348, 0x8f420348, 0x8e22001c, 
 0x8f430040, 0x24420001, 0x2463ffff, 0x431024, 
-0xaf42002c, 0x32420060, 0x14400008, 0x32c20010, 
+0xaf42002c, 0x32420010, 0x14400008, 0x32c20010, 
 0x8f420034, 0x24420001, 0xaf420034, 0x8c03023c, 
-0x43102b, 0x14400111, 0x32c20010, 0x10400018, 
-0x24070008, 0x8f440160, 0x8f450164, 0x8f43002c, 
-0x8f48000c, 0x8f860120, 0x24020080, 0xafa20010, 
-0xafa30014, 0xafa80018, 0x8f42010c, 0x40f809, 
-0x24c6001c, 0x10400041, 0x24020001, 0x8f4202f0, 
-0x8f43002c, 0x24420001, 0xaf4202f0, 0x8f4202f0, 
-0x24020001, 0xa34205b2, 0x10000076, 0xaf430038, 
-0x8f440160, 0x8f450164, 0x8f43002c, 0x8f48000c, 
-0x8f860120, 0x24020020, 0xafa20010, 0xafa30014, 
-0xafa80018, 0x8f42010c, 0x40f809, 0x24c6001c, 
-0x10400051, 0x24020001, 0x1000005f, 0x0, 
-0x32420012, 0x1040006f, 0x32420001, 0x9623000e, 
-0x8f42009c, 0x431021, 0xaf42009c, 0x8e23001c, 
-0x8f420040, 0x24630001, 0x2442ffff, 0x621824, 
-0x32420010, 0x14400008, 0xaf43002c, 0x8f420034, 
-0x24420001, 0xaf420034, 0x8c03023c, 0x43102b, 
-0x144000d2, 0x0, 0x32c20010, 0x10400028, 
+0x43102b, 0x144000ce, 0x32c20010, 0x10400028, 
 0x24070008, 0x8f440160, 0x8f450164, 0x8f43002c, 
 0x8f48000c, 0x8f860120, 0x24020080, 0xafa20010, 
 0xafa30014, 0xafa80018, 0x8f42010c, 0x40f809, 
 0x24c6001c, 0x14400011, 0x24020001, 0x3c010001, 
 0x370821, 0xa02240f1, 0x8f820124, 0xafa20010, 
-0x8f820128, 0x3c040001, 0x24843800, 0xafa20014, 
-0x8f46002c, 0x8f870120, 0x3c050009, 0xc0029d3, 
+0x8f820128, 0x3c040001, 0x248438e4, 0xafa20014, 
+0x8f46002c, 0x8f870120, 0x3c050009, 0xc002a03, 
 0x34a51100, 0x10000036, 0x0, 0x8f4202f0, 
 0x8f43002c, 0x24420001, 0xaf4202f0, 0x8f4202f0, 
 0x24020001, 0xa34205b2, 0x10000026, 0xaf430038, 
@@ -6506,46 +6523,45 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafa80018, 0x8f42010c, 0x40f809, 0x24c6001c, 
 0x14400011, 0x24020001, 0x3c010001, 0x370821, 
 0xa02240f0, 0x8f820124, 0xafa20010, 0x8f820128, 
-0x3c040001, 0x248437f4, 0xafa20014, 0x8f46002c, 
-0x8f870120, 0x3c050009, 0xc0029d3, 0x34a50900, 
+0x3c040001, 0x248438d8, 0xafa20014, 0x8f46002c, 
+0x8f870120, 0x3c050009, 0xc002a03, 0x34a50900, 
 0x1000000f, 0x0, 0x8f4202f0, 0x24420001, 
 0xaf4202f0, 0x8f4202f0, 0x8f42002c, 0xa34005b2, 
 0xaf420038, 0x3c010001, 0x370821, 0xa02040f1, 
 0x3c010001, 0x370821, 0xa02040f0, 0xaf400034, 
-0x8f420304, 0x24420001, 0xaf420304, 0x10000077
-0x8f420304, 0x10400025, 0x32427000, 0x8e25001c, 
+0x8f420304, 0x24420001, 0xaf420304, 0x10000074
+0x8f420304, 0x10400022, 0x32427000, 0x8e25001c, 
 0x8f420028, 0xa22023, 0x4810003, 0x0, 
 0x8f420040, 0x822021, 0x8f420348, 0x8f430000, 
-0x441021, 0xaf420348, 0x8f42035c, 0xaf450028, 
-0x441021, 0x10600007, 0xaf42035c, 0xaf80004c, 
-0x8f82004c, 0x1040fffd, 0x0, 0x10000005, 
-0x0, 0xaf800048, 0x8f820048, 0x1040fffd, 
-0x0, 0x8f820060, 0x34420008, 0xaf820060, 
-0x8f420000, 0x10400003, 0x0, 0x10000053, 
-0xaf80004c, 0x10000051, 0xaf800048, 0x1040002f, 
-0x32421000, 0x1040000c, 0x32424000, 0x8e23001c, 
-0x8f420050, 0x622023, 0x4820001, 0x24840200, 
-0x8f42034c, 0x441021, 0xaf42034c, 0x8f420358, 
-0x1000001a, 0xaf430050, 0x1040000c, 0x32c28000, 
-0x8e23001c, 0x8f420070, 0x622023, 0x4820001, 
-0x24840400, 0x8f420354, 0x441021, 0xaf420354, 
-0x8f420358, 0x1000000d, 0xaf430070, 0x1040000e, 
-0x3c020800, 0x8e23001c, 0x8f420060, 0x622023, 
-0x4820001, 0x24840100, 0x8f420350, 0x441021, 
-0xaf420350, 0x8f420358, 0xaf430060, 0x441021, 
-0xaf420358, 0x3c020800, 0x2c21024, 0x50400023, 
-0x36940040, 0x10000021, 0x0, 0x32420048, 
-0x10400007, 0x24150001, 0x8e22001c, 0x3c03ffff, 
-0x43f024, 0x3042ffff, 0x1000fd81, 0xae22001c, 
-0x32420100, 0x10400015, 0x0, 0x3c020001, 
-0x8c423c54, 0x1040000c, 0x0, 0x274301b0, 
-0x24650400, 0x65102b, 0x10400007, 0x26e40028, 
-0x8c820000, 0xac620000, 0x24630004, 0x65102b, 
-0x1440fffb, 0x24840004, 0x8f4202cc, 0xa34005b6, 
-0x24420001, 0xaf4202cc, 0x8f4202cc, 0x8fbf0050, 
-0x8fbe004c, 0x8fb50048, 0x8fb30044, 0x8fb20040, 
-0x8fb1003c, 0x8fb00038, 0x3e00008, 0x27bd0058, 
-0x3e00008, 0x0, 0x0, 0x8f8600e4, 
+0xaf450028, 0x441021, 0x10600007, 0xaf420348, 
+0xaf80004c, 0x8f82004c, 0x1040fffd, 0x0, 
+0x10000005, 0x0, 0xaf800048, 0x8f820048, 
+0x1040fffd, 0x0, 0x8f820060, 0x34420008, 
+0xaf820060, 0x8f420000, 0x10400003, 0x0, 
+0x10000053, 0xaf80004c, 0x10000051, 0xaf800048, 
+0x1040002f, 0x32421000, 0x1040000c, 0x32424000, 
+0x8e23001c, 0x8f420050, 0x622023, 0x4820001, 
+0x24840200, 0x8f42034c, 0x441021, 0xaf42034c, 
+0x8f420358, 0x1000001a, 0xaf430050, 0x1040000c, 
+0x32c28000, 0x8e23001c, 0x8f420070, 0x622023, 
+0x4820001, 0x24840400, 0x8f420354, 0x441021, 
+0xaf420354, 0x8f420358, 0x1000000d, 0xaf430070, 
+0x1040000e, 0x3c020800, 0x8e23001c, 0x8f420060, 
+0x622023, 0x4820001, 0x24840100, 0x8f420350, 
+0x441021, 0xaf420350, 0x8f420358, 0xaf430060, 
+0x441021, 0xaf420358, 0x3c020800, 0x2c21024, 
+0x50400023, 0x36940040, 0x10000021, 0x0, 
+0x32420048, 0x10400007, 0x24150001, 0x8e22001c, 
+0x3c03ffff, 0x43f024, 0x3042ffff, 0x1000fd78, 
+0xae22001c, 0x32420100, 0x10400015, 0x0, 
+0x3c020001, 0x8c423d64, 0x1040000c, 0x0, 
+0x274301b0, 0x24650400, 0x65102b, 0x10400007, 
+0x26e40028, 0x8c820000, 0xac620000, 0x24630004, 
+0x65102b, 0x1440fffb, 0x24840004, 0x8f4202cc, 
+0xa34005b6, 0x24420001, 0xaf4202cc, 0x8f4202cc, 
+0x8fbf0050, 0x8fbe004c, 0x8fb50048, 0x8fb30044, 
+0x8fb20040, 0x8fb1003c, 0x8fb00038, 0x3e00008, 
+0x27bd0058, 0x3e00008, 0x0, 0x8f8600e4, 
 0x8f8200e0, 0x2403fff8, 0x431024, 0x10c20007, 
 0x803821, 0x8cc20000, 0x8cc30004, 0xace20000, 
 0xace30004, 0x10000002, 0x24020001, 0x1021, 
@@ -6601,8 +6617,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10400014, 0x307000ff, 0x8f4201d8, 0x24420001, 
 0xaf4201d8, 0x8f4201d8, 0x8faa007c, 0x8f8200e0, 
 0x354a0100, 0xafaa007c, 0xafa20010, 0x8f8200e4, 
-0x24100001, 0x3c040001, 0x248438d0, 0xafa20014, 
-0x8fa60020, 0x8fa70024, 0x3c050007, 0xc0029d3, 
+0x24100001, 0x3c040001, 0x248439b4, 0xafa20014, 
+0x8fa60020, 0x8fa70024, 0x3c050007, 0xc002a03, 
 0x34a50800, 0x12000010, 0x3c020080, 0x2c21024, 
 0x1440000e, 0x32c20400, 0x8fab007c, 0x3c020080, 
 0x34420100, 0x1621024, 0x10400005, 0x0, 
@@ -6624,22 +6640,22 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f420340, 0x2403ffbf, 0x283a024, 0x24420001, 
 0xaf420340, 0x1000023f, 0x8f420340, 0x2c2b025, 
 0x2402ffbf, 0x282a024, 0x8f830128, 0x3c040001, 
-0x24843900, 0x26620001, 0xafa20014, 0xafa30010, 
-0x8f860120, 0x8f870124, 0x3c050007, 0xc0029d3, 
+0x248439e4, 0x26620001, 0xafa20014, 0xafa30010, 
+0x8f860120, 0x8f870124, 0x3c050007, 0xc002a03, 
 0x34a52250, 0x1000022f, 0x0, 0x2c2b025, 
 0x2402ffbf, 0x282a024, 0x8f830128, 0x3c040001, 
-0x24843900, 0x24020002, 0xafa20014, 0xafa30010, 
-0x8f860120, 0x8f870124, 0x3c050007, 0xc0029d3, 
+0x248439e4, 0x24020002, 0xafa20014, 0xafa30010, 
+0x8f860120, 0x8f870124, 0x3c050007, 0xc002a03, 
 0x34a52450, 0x1000021f, 0x0, 0x8ea20000, 
-0x8ea30004, 0x3c040001, 0x24843918, 0xafb00010, 
-0xafbe0014, 0x8ea70018, 0x34a52800, 0xc0029d3, 
+0x8ea30004, 0x3c040001, 0x248439fc, 0xafb00010, 
+0xafbe0014, 0x8ea70018, 0x34a52800, 0xc002a03, 
 0x603021, 0x10000213, 0x0, 0xa6b1000a, 
-0x8f820124, 0x3c040001, 0x24843920, 0xafbe0014, 
+0x8f820124, 0x3c040001, 0x24843a04, 0xafbe0014, 
 0xafa20010, 0x8f460044, 0x8f870120, 0x3c050007, 
-0xc0029d3, 0x34a53000, 0x10000206, 0x0, 
+0xc002a03, 0x34a53000, 0x10000206, 0x0, 
 0xa6b1000a, 0xa6b2000e, 0x8f820124, 0x3c040001, 
-0x2484392c, 0xafbe0014, 0xafa20010, 0x8f460044, 
-0x8f870120, 0x3c050007, 0xc0029d3, 0x34a53200, 
+0x24843a10, 0xafbe0014, 0xafa20010, 0x8f460044, 
+0x8f870120, 0x3c050007, 0xc002a03, 0x34a53200, 
 0x100001f8, 0x0, 0x8f420084, 0x8faa006c, 
 0x4a102b, 0x14400007, 0x3c020001, 0x2c21024, 
 0x10400004, 0x0, 0x240b0002, 0xafab005c, 
@@ -6650,17 +6666,17 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x3403ecc0, 0xafab004c, 0x27c20001, 0x304201ff, 
 0xafa20054, 0x1e1140, 0x431021, 0x1000006b, 
 0x2e2a821, 0x8f420044, 0x8faa006c, 0x3c040001, 
-0x248438dc, 0xafaa0014, 0xafa20010, 0x8f460054, 
-0x8f470050, 0x3c050007, 0xc0029d3, 0x34a51300, 
+0x248439c0, 0xafaa0014, 0xafa20010, 0x8f460054, 
+0x8f470050, 0x3c050007, 0xc002a03, 0x34a51300, 
 0x8f430340, 0x2402ffbf, 0x282a024, 0x24630001, 
 0xaf430340, 0x100001c3, 0x8f420340, 0x1562001d, 
 0x0, 0x8f430074, 0x8f420070, 0x1062000a, 
 0x274a0074, 0x8f5e0074, 0xafaa004c, 0x27c20001, 
 0x304203ff, 0xafa20054, 0x1e1140, 0x24426cc0, 
 0x1000004a, 0x2e2a821, 0x8f420044, 0x8fab006c, 
-0x3c040001, 0x248438e8, 0x3c050007, 0xafab0014, 
+0x3c040001, 0x248439cc, 0x3c050007, 0xafab0014, 
 0xafa20010, 0x8f460074, 0x8f470070, 0x34a51500, 
-0x240a0001, 0xc0029d3, 0xafaa005c, 0x1000ffc3, 
+0x240a0001, 0xc002a03, 0xafaa005c, 0x1000ffc3, 
 0x0, 0x8f430064, 0x8f420060, 0x1062001a, 
 0x274b0064, 0x8f5e0064, 0x8faa005c, 0xafab004c, 
 0x27c20001, 0x304200ff, 0xafa20054, 0x24020004, 
@@ -6669,8 +6685,8 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8faa006c, 0x4a102b, 0x10400024, 0x25750020, 
 0x240b0001, 0x10000021, 0xa3ab0097, 0x24424cc0, 
 0x1000001e, 0x2e2a821, 0x8f420044, 0x8faa006c, 
-0x3c040001, 0x248438f4, 0xafaa0014, 0xafa20010, 
-0x8f460064, 0x8f470060, 0x3c050007, 0xc0029d3, 
+0x3c040001, 0x248439d8, 0xafaa0014, 0xafa20010, 
+0x8f460064, 0x8f470060, 0x3c050007, 0xc002a03, 
 0x34a51800, 0x3c020008, 0x2c21024, 0x1440ff34, 
 0x0, 0x8f420360, 0x240b0001, 0xafab005c, 
 0x24420001, 0xaf420360, 0x1000ff90, 0x8f420360, 
@@ -6691,9 +6707,9 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x64102a, 0x54400001, 0x602021, 0xaf4400fc, 
 0x8f4200fc, 0xa2102a, 0x10400011, 0x24030001, 
 0x10000015, 0x306200ff, 0x8faa0064, 0x96070018, 
-0xafaa0010, 0x8e220008, 0x3c040001, 0x2484390c
+0xafaa0010, 0x8e220008, 0x3c040001, 0x248439f0
 0x8c430004, 0x8c420000, 0x34a52400, 0x2403021, 
-0xc0029d3, 0xafa30014, 0x1000002b, 0x0, 
+0xc002a03, 0xafa30014, 0x1000002b, 0x0, 
 0x8f420324, 0x1821, 0x24420001, 0xaf420324, 
 0x8f420324, 0x306200ff, 0x5040fedc, 0x3c020800, 
 0x12600021, 0x9021, 0x8fb100a4, 0x2208021, 
@@ -6745,9 +6761,9 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xafa20010, 0xafa30014, 0xafa80018, 0x8f42010c, 
 0x40f809, 0x24c6001c, 0x14400011, 0x240b0001, 
 0x3c010001, 0x370821, 0xa02b40f2, 0x8f820124, 
-0xafa20010, 0x8f820128, 0x3c040001, 0x248438c8
+0xafa20010, 0x8f820128, 0x3c040001, 0x248439ac
 0xafa20014, 0x8f460044, 0x8f870120, 0x3c050009, 
-0xc0029d3, 0x34a51300, 0x1000000b, 0x0, 
+0xc002a03, 0x34a51300, 0x1000000b, 0x0, 
 0x8f4202f4, 0x24420001, 0xaf4202f4, 0x8f4202f4, 
 0x8f420044, 0xaf42007c, 0x3c010001, 0x370821, 
 0xa02040f2, 0xaf400078, 0x8f420308, 0x24420001, 
@@ -6787,14 +6803,14 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0xa7a00076, 0x10400007, 0xa7a0007e, 0x8f4c00c0, 
 0xafac0064, 0x8f4b00c8, 0x8f5e00c4, 0x10000129, 
 0xafab006c, 0x8f420114, 0x40f809, 0x27a40020, 
-0x304200ff, 0x1040029c, 0x0, 0x8fac0024, 
+0x304200ff, 0x1040029a, 0x0, 0x8fac0024, 
 0x8fbe0020, 0x3182ffff, 0x2442fffc, 0xafa20064, 
 0x3c020006, 0x2c21024, 0x14400015, 0xafac006c, 
 0x93c20000, 0x30420001, 0x10400011, 0x2402ffff, 
 0x8fc30000, 0x14620004, 0x3402ffff, 0x97c30004, 
 0x1062000b, 0x0, 0xc002343, 0x3c02021, 
 0x304200ff, 0x14400006, 0x0, 0x8f420118, 
-0x40f809, 0x0, 0x1000027f, 0x0, 
+0x40f809, 0x0, 0x1000027d, 0x0, 
 0x8fa20024, 0x3c03ffbf, 0x3463ffff, 0x431024, 
 0x3c03ffff, 0x431824, 0x14600003, 0xafa20024, 
 0x10000040, 0x8021, 0x3c020080, 0x621024, 
@@ -6817,13 +6833,13 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10400015, 0x320200ff, 0x8f4201d8, 0x24420001, 
 0xaf4201d8, 0x8f4201d8, 0x8fac006c, 0x8f8200e0, 
 0x358c0100, 0xafac006c, 0xafa20010, 0x8f8200e4, 
-0x24100001, 0x3c040001, 0x248438d0, 0xafa20014, 
-0x8fa60020, 0x8fa70024, 0x3c050007, 0xc0029d3, 
+0x24100001, 0x3c040001, 0x248439b4, 0xafa20014, 
+0x8fa60020, 0x8fa70024, 0x3c050007, 0xc002a03, 
 0x34a53600, 0x320200ff, 0x10400010, 0x3c020080, 
 0x2c21024, 0x1440000e, 0x32c20400, 0x8fab006c, 
 0x3c020080, 0x34420100, 0x1621024, 0x10400005, 
 0x0, 0x8f4201fc, 0x24420001, 0xaf4201fc, 
-0x8f4201fc, 0x10000201, 0x8fa30064, 0x32c20400, 
+0x8f4201fc, 0x100001ff, 0x8fa30064, 0x32c20400, 
 0x10400012, 0x34028100, 0x97c3000c, 0x1462000f, 
 0x0, 0x240c0200, 0xa7ac0076, 0x97c2000e, 
 0x8fc30008, 0x8fc40004, 0x8fab0064, 0x8fc50000, 
@@ -6843,56 +6859,56 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x2c420001, 0x621825, 0x10600004, 0x3c020100, 
 0x94820002, 0x453821, 0x3c020100, 0x2c21024, 
 0x5040000e, 0xafa70064, 0x8fac0064, 0x10ec0008, 
-0x3c050007, 0x3c040001, 0x24843938, 0x8fa60064, 
-0x34a54000, 0xafa00010, 0xc0029d3, 0xafa00014, 
+0x3c050007, 0x3c040001, 0x24843a1c, 0x8fa60064, 
+0x34a54000, 0xafa00010, 0xc002a03, 0xafa00014, 
 0x8fab0064, 0x256b0004, 0xafab0064, 0x8f420080, 
 0x8fac0064, 0x4c102b, 0x1040002c, 0x32c28000, 
 0x10400034, 0x240b0003, 0x32c21000, 0x10400031, 
 0xafab005c, 0x1000002e, 0x240c0004, 0x8f420340, 
 0x2403ffbf, 0x283a024, 0x24420001, 0xaf420340, 
-0x10000175, 0x8f420340, 0x3c020800, 0x2c2b025, 
+0x10000173, 0x8f420340, 0x3c020800, 0x2c2b025, 
 0x2402ffbf, 0x282a024, 0x8f830128, 0x3c040001, 
-0x24843900, 0x26620001, 0xafa20014, 0xafa30010, 
-0x8f860120, 0x8f870124, 0x3c050007, 0xc0029d3, 
-0x34a55300, 0x10000164, 0x0, 0x8ea20000, 
-0x8ea30004, 0x3c040001, 0x24843918, 0xafb00010, 
-0xafb20014, 0x8ea70018, 0x34a55900, 0xc0029d3, 
-0x603021, 0x10000158, 0x0, 0x8f420084, 
+0x248439e4, 0x26620001, 0xafa20014, 0xafa30010, 
+0x8f860120, 0x8f870124, 0x3c050007, 0xc002a03, 
+0x34a55300, 0x10000162, 0x0, 0x8ea20000, 
+0x8ea30004, 0x3c040001, 0x248439fc, 0xafb00010, 
+0xafb10014, 0x8ea70018, 0x34a55900, 0xc002a03, 
+0x603021, 0x10000156, 0x0, 0x8f420084, 
 0x8fab0064, 0x4b102b, 0x14400007, 0x3c020001, 
 0x2c21024, 0x10400004, 0x0, 0x240c0002, 
-0xafac005c, 0x8fab0064, 0x11600168, 0x27ac0020, 
+0xafac005c, 0x8fab0064, 0x11600166, 0x27ac0020, 
 0xafac008c, 0x8fab005c, 0x240c0001, 0x556c0021, 
 0x240c0002, 0x8f430054, 0x8f420050, 0x1062000b, 
-0x274b0054, 0x8f520054, 0x3403ecc0, 0xafab004c, 
-0x26420001, 0x304201ff, 0xafa20054, 0x121140, 
+0x274b0054, 0x8f510054, 0x3403ecc0, 0xafab004c, 
+0x26220001, 0x304201ff, 0xafa20054, 0x111140, 
 0x431021, 0x1000006b, 0x2e2a821, 0x8f420044, 
-0x8fac0064, 0x3c040001, 0x248438dc, 0xafac0014, 
+0x8fac0064, 0x3c040001, 0x248439c0, 0xafac0014, 
 0xafa20010, 0x8f460054, 0x8f470050, 0x3c050007, 
-0xc0029d3, 0x34a54300, 0x8f430340, 0x2402ffbf, 
-0x282a024, 0x24630001, 0xaf430340, 0x10000126
+0xc002a03, 0x34a54300, 0x8f430340, 0x2402ffbf, 
+0x282a024, 0x24630001, 0xaf430340, 0x10000124
 0x8f420340, 0x156c001d, 0x0, 0x8f430074, 
-0x8f420070, 0x1062000a, 0x274b0074, 0x8f520074, 
-0xafab004c, 0x26420001, 0x304203ff, 0xafa20054, 
-0x121140, 0x24426cc0, 0x1000004a, 0x2e2a821, 
-0x8f420044, 0x8fac0064, 0x3c040001, 0x248438e8
+0x8f420070, 0x1062000a, 0x274b0074, 0x8f510074, 
+0xafab004c, 0x26220001, 0x304203ff, 0xafa20054, 
+0x111140, 0x24426cc0, 0x1000004a, 0x2e2a821, 
+0x8f420044, 0x8fac0064, 0x3c040001, 0x248439cc
 0x3c050007, 0xafac0014, 0xafa20010, 0x8f460074, 
-0x8f470070, 0x34a54500, 0x240b0001, 0xc0029d3, 
+0x8f470070, 0x34a54500, 0x240b0001, 0xc002a03, 
 0xafab005c, 0x1000ffc3, 0x0, 0x8f430064, 
-0x8f420060, 0x1062001a, 0x274c0064, 0x8f520064, 
-0x8fab005c, 0xafac004c, 0x26420001, 0x304200ff, 
-0xafa20054, 0x24020004, 0x1562000e, 0x121140, 
-0x121180, 0x24420cc0, 0x2e21021, 0xafa20044, 
+0x8f420060, 0x1062001a, 0x274c0064, 0x8f510064, 
+0x8fab005c, 0xafac004c, 0x26220001, 0x304200ff, 
+0xafa20054, 0x24020004, 0x1562000e, 0x111140, 
+0x111180, 0x24420cc0, 0x2e21021, 0xafa20044, 
 0x9442002a, 0x8fac0044, 0x8fab0064, 0x4b102b, 
 0x10400024, 0x25950020, 0x240c0001, 0x10000021, 
 0xa3ac0087, 0x24424cc0, 0x1000001e, 0x2e2a821, 
-0x8f420044, 0x8fab0064, 0x3c040001, 0x248438f4
+0x8f420044, 0x8fab0064, 0x3c040001, 0x248439d8
 0xafab0014, 0xafa20010, 0x8f460064, 0x8f470060, 
-0x3c050007, 0xc0029d3, 0x34a54800, 0x3c020008, 
+0x3c050007, 0xc002a03, 0x34a54800, 0x3c020008, 
 0x2c21024, 0x1440ff61, 0x0, 0x8f420360, 
 0x240c0001, 0xafac005c, 0x24420001, 0xaf420360, 
 0x1000ff90, 0x8f420360, 0x27a30036, 0x131040, 
 0x621821, 0x94620000, 0x441021, 0x1000001f, 
-0xa4620000, 0xaebe0018, 0x93a20087, 0x10400086
+0xa4620000, 0xaebe0018, 0x93a20087, 0x10400084
 0x9821, 0x8fab0044, 0x8fa40064, 0x8fa3008c, 
 0x25620020, 0xafa20028, 0x25620008, 0xafa20030, 
 0x25620010, 0xafab002c, 0xafa20034, 0x9562002a, 
@@ -6906,289 +6922,288 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x431023, 0x21943, 0x58600001, 0x24630040, 
 0x64102a, 0x54400001, 0x602021, 0xaf4400fc, 
 0x8f4200fc, 0x262102a, 0x10400016, 0x24030001, 
-0x1000001a, 0x306200ff, 0x8fac008c, 0x111040, 
-0x4c1021, 0x94470018, 0x111080, 0x4c1021, 
-0xafbe0010, 0x8c420008, 0x3c040001, 0x2484390c
+0x1000001a, 0x306200ff, 0x8fac008c, 0x101040, 
+0x4c1021, 0x94470018, 0x101080, 0x4c1021, 
+0xafbe0010, 0x8c420008, 0x3c040001, 0x248439f0
 0x3c050007, 0x8c430004, 0x8c420000, 0x34a55500, 
-0x2203021, 0xc0029d3, 0xafa30014, 0x1000003b
+0x2003021, 0xc002a03, 0xafa30014, 0x10000039
 0x0, 0x8f420324, 0x1821, 0x24420001, 
 0xaf420324, 0x8f420324, 0x306200ff, 0x1040ff06, 
-0x8821, 0x8f430008, 0x2402fbff, 0x621824, 
-0x605021, 0x1260002d, 0xaf430008, 0x2669ffff, 
-0x8fb0008c, 0x3c0b4000, 0x24b4025, 0x2009021, 
-0x8e420008, 0x96070018, 0x8c440000, 0x8c450004, 
-0x56290004, 0x240b0001, 0x240c0002, 0x10000002, 
-0xafac0010, 0xafab0010, 0x16200004, 0xafa80014, 
-0x8f420008, 0x10000002, 0xafa20018, 0xafaa0018, 
-0x8f42010c, 0x3c03021, 0xafa80098, 0xafa9009c, 
-0x40f809, 0xafaa00a0, 0x8fa80098, 0x8fa9009c, 
-0x8faa00a0, 0x1040ffc0, 0x3c02001f, 0x96030018, 
-0x3442ffff, 0x3c3f021, 0x5e102b, 0x10400003, 
-0x26100002, 0x8f42013c, 0x3c2f023, 0x26310001, 
-0x233102b, 0x1440ffda, 0x26520004, 0x8fb00064, 
-0x1000001a, 0x0, 0x96a3000a, 0x8fb00064, 
-0x70102b, 0x54400001, 0x608021, 0x8ea40000, 
-0x8ea50004, 0x8fab005c, 0x240c0002, 0xafac0010, 
-0x934305b5, 0xb1700, 0x10600003, 0x2423025, 
-0x3c020800, 0xc23025, 0xafa60014, 0x8f420008, 
-0xafa20018, 0x8f42010c, 0x3c03021, 0x40f809, 
-0x2003821, 0x1040fec9, 0x3c050007, 0x97ac0076, 
-0x11800007, 0x96a3000e, 0x934205b5, 0x14400004, 
-0x0, 0x97ab007e, 0x6c1825, 0xa6ab0016, 
-0x8fac006c, 0x3c02ffff, 0x1821024, 0x10400003, 
-0xc1402, 0x34630400, 0xa6a20014, 0xa6b0000a, 
-0x8fab0064, 0x560b0006, 0x3d0f021, 0x34620004, 
-0xafa00064, 0xa6a2000e, 0x1000000d, 0xa34005b5, 
-0x8fac0064, 0x3c02001f, 0x3442ffff, 0x5e102b, 
-0x1906023, 0xafac0064, 0xa6a3000e, 0x240b0001, 
-0x10400003, 0xa34b05b5, 0x8f42013c, 0x3c2f023, 
-0x8fab0054, 0x8fac004c, 0xad8b0000, 0x8fac0064, 
-0x1580feb8, 0x0, 0x8fab0064, 0x1160001b, 
-0x0, 0x934205b5, 0x10400006, 0x0, 
-0xaf5e00c4, 0xaf4b00c0, 0x8fac006c, 0x1000000e, 
-0xaf4c00c8, 0x97ab0076, 0x1160000b, 0x34038100, 
-0x8fa20020, 0x8c46000c, 0xa443000c, 0x97ac007e, 
-0x8c440004, 0x8c450008, 0xa44c000e, 0xac440000, 
-0xac450004, 0xac460008, 0x8f42033c, 0x24420001, 
-0xaf42033c, 0x10000010, 0x8f42033c, 0x8fab006c, 
-0x3164ffff, 0x2484fffc, 0x801821, 0x8f440240, 
-0x8f450244, 0x8f460118, 0x1021, 0xa32821, 
-0xa3382b, 0x822021, 0x872021, 0xaf440240, 
-0xc0f809, 0xaf450244, 0x8fbf00c0, 0x8fbe00bc, 
-0x8fb500b8, 0x8fb300b4, 0x8fb200b0, 0x8fb100ac, 
-0x8fb000a8, 0x3e00008, 0x27bd00c8, 0x3e00008, 
-0x0, 0x27bdffd8, 0xafbf0024, 0xafb00020, 
-0x8f43004c, 0x8f420048, 0x10620034, 0x0, 
-0x8f430048, 0x8f42004c, 0x622023, 0x4820001, 
-0x24840200, 0x8f430054, 0x8f42004c, 0x43102b, 
-0x14400004, 0x24020200, 0x8f43004c, 0x10000005, 
-0x431023, 0x8f420054, 0x8f43004c, 0x431023, 
-0x2442ffff, 0x405021, 0x8a102a, 0x54400001, 
-0x805021, 0x8f49004c, 0x8f48004c, 0x8f440178, 
-0x8f45017c, 0x8f46004c, 0x24071000, 0xafa70010, 
-0x84140, 0x1001821, 0x12a4821, 0x313001ff, 
-0xafb00014, 0x8f470014, 0x1021, 0x63140, 
-0xafa70018, 0xa32821, 0xa3382b, 0x822021, 
-0x872021, 0x3402ecc0, 0xc23021, 0x8f420108, 
-0x2e63021, 0x40f809, 0xa3940, 0x54400001, 
-0xaf50004c, 0x8f43004c, 0x8f420048, 0x14620018, 
+0x8021, 0x8f430008, 0x2402fbff, 0x1260002d, 
+0x625024, 0x3c0b4000, 0x22b4025, 0x8fb1008c, 
+0x2669ffff, 0x2209021, 0x8e420008, 0x96270018, 
+0x8c440000, 0x8c450004, 0x56090004, 0x240b0001, 
+0x240c0002, 0x10000002, 0xafac0010, 0xafab0010, 
+0x16000004, 0xafa80014, 0x8f420008, 0x10000002, 
+0xafa20018, 0xafaa0018, 0x8f42010c, 0x3c03021, 
+0xafa80098, 0xafa9009c, 0x40f809, 0xafaa00a0, 
+0x8fa80098, 0x8fa9009c, 0x8faa00a0, 0x1040ffc2, 
+0x3c02001f, 0x96230018, 0x3442ffff, 0x3c3f021, 
+0x5e102b, 0x10400003, 0x26310002, 0x8f42013c, 
+0x3c2f023, 0x26100001, 0x213102b, 0x1440ffda, 
+0x26520004, 0x8fb00064, 0x1000001a, 0x0, 
+0x96a3000a, 0x8fb00064, 0x70102b, 0x54400001, 
+0x608021, 0x8ea40000, 0x8ea50004, 0x8fab005c, 
+0x240c0002, 0xafac0010, 0x934305b5, 0xb1700, 
+0x10600003, 0x2223025, 0x3c020800, 0xc23025, 
+0xafa60014, 0x8f420008, 0xafa20018, 0x8f42010c, 
+0x3c03021, 0x40f809, 0x2003821, 0x1040fecb, 
+0x3c050007, 0x97ac0076, 0x11800007, 0x96a3000e, 
+0x934205b5, 0x14400004, 0x0, 0x97ab007e, 
+0x6c1825, 0xa6ab0016, 0x8fac006c, 0x3c02ffff, 
+0x1821024, 0x10400003, 0xc1402, 0x34630400, 
+0xa6a20014, 0xa6b0000a, 0x8fab0064, 0x560b0006, 
+0x3d0f021, 0x34620004, 0xafa00064, 0xa6a2000e, 
+0x1000000d, 0xa34005b5, 0x8fac0064, 0x3c02001f, 
+0x3442ffff, 0x5e102b, 0x1906023, 0xafac0064, 
+0xa6a3000e, 0x240b0001, 0x10400003, 0xa34b05b5, 
+0x8f42013c, 0x3c2f023, 0x8fab0054, 0x8fac004c, 
+0xad8b0000, 0x8fac0064, 0x1580feba, 0x0, 
+0x8fab0064, 0x1160001b, 0x0, 0x934205b5, 
+0x10400006, 0x0, 0xaf5e00c4, 0xaf4b00c0, 
+0x8fac006c, 0x1000000e, 0xaf4c00c8, 0x97ab0076, 
+0x1160000b, 0x34038100, 0x8fa20020, 0x8c46000c, 
+0xa443000c, 0x97ac007e, 0x8c440004, 0x8c450008, 
+0xa44c000e, 0xac440000, 0xac450004, 0xac460008, 
+0x8f42033c, 0x24420001, 0xaf42033c, 0x10000010, 
+0x8f42033c, 0x8fab006c, 0x3164ffff, 0x2484fffc, 
+0x801821, 0x8f440240, 0x8f450244, 0x8f460118, 
+0x1021, 0xa32821, 0xa3382b, 0x822021, 
+0x872021, 0xaf440240, 0xc0f809, 0xaf450244, 
+0x8fbf00c0, 0x8fbe00bc, 0x8fb500b8, 0x8fb300b4, 
+0x8fb200b0, 0x8fb100ac, 0x8fb000a8, 0x3e00008, 
+0x27bd00c8, 0x3e00008, 0x0, 0x27bdffd8, 
+0xafbf0024, 0xafb00020, 0x8f43004c, 0x8f420048, 
+0x10620034, 0x0, 0x8f430048, 0x8f42004c, 
+0x622023, 0x4820001, 0x24840200, 0x8f430054, 
+0x8f42004c, 0x43102b, 0x14400004, 0x24020200, 
+0x8f43004c, 0x10000005, 0x431023, 0x8f420054, 
+0x8f43004c, 0x431023, 0x2442ffff, 0x405021, 
+0x8a102a, 0x54400001, 0x805021, 0x8f49004c, 
+0x8f48004c, 0x8f440178, 0x8f45017c, 0x8f46004c, 
+0x24071000, 0xafa70010, 0x84140, 0x1001821, 
+0x12a4821, 0x313001ff, 0xafb00014, 0x8f470014, 
+0x1021, 0x63140, 0xafa70018, 0xa32821, 
+0xa3382b, 0x822021, 0x872021, 0x3402ecc0, 
+0xc23021, 0x8f420108, 0x2e63021, 0x40f809, 
+0xa3940, 0x54400001, 0xaf50004c, 0x8f43004c, 
+0x8f420048, 0x14620018, 0x0, 0x8f420000, 
+0x10400007, 0x0, 0xaf80004c, 0x8f82004c, 
+0x1040fffd, 0x0, 0x10000005, 0x0, 
+0xaf800048, 0x8f820048, 0x1040fffd, 0x0, 
+0x8f820060, 0x2403fdff, 0x431024, 0xaf820060, 
+0x8f420000, 0x10400003, 0x0, 0x10000002, 
+0xaf80004c, 0xaf800048, 0x8fbf0024, 0x8fb00020, 
+0x3e00008, 0x27bd0028, 0x3e00008, 0x0, 
+0x27bdffd8, 0xafbf0024, 0xafb00020, 0x8f43005c, 
+0x8f420058, 0x10620049, 0x0, 0x8f430058, 
+0x8f42005c, 0x622023, 0x4820001, 0x24840100, 
+0x8f430064, 0x8f42005c, 0x43102b, 0x14400004, 
+0x24020100, 0x8f43005c, 0x10000005, 0x431023, 
+0x8f420064, 0x8f43005c, 0x431023, 0x2442ffff, 
+0x403821, 0x87102a, 0x54400001, 0x803821, 
+0x8f42005c, 0x471021, 0x305000ff, 0x32c21000, 
+0x10400015, 0x24082000, 0x8f49005c, 0x8f440180, 
+0x8f450184, 0x8f46005c, 0x73980, 0xafa80010, 
+0xafb00014, 0x8f480014, 0x94980, 0x1201821, 
+0x1021, 0xa32821, 0xa3482b, 0x822021, 
+0x892021, 0x63180, 0xafa80018, 0x8f420108, 
+0x10000014, 0x24c60cc0, 0x8f49005c, 0x8f440180, 
+0x8f450184, 0x8f46005c, 0x73940, 0xafa80010, 
+0xafb00014, 0x8f480014, 0x94940, 0x1201821, 
+0x1021, 0xa32821, 0xa3482b, 0x822021, 
+0x892021, 0x63140, 0xafa80018, 0x8f420108, 
+0x24c64cc0, 0x40f809, 0x2e63021, 0x54400001, 
+0xaf50005c, 0x8f43005c, 0x8f420058, 0x14620018, 
 0x0, 0x8f420000, 0x10400007, 0x0, 
 0xaf80004c, 0x8f82004c, 0x1040fffd, 0x0, 
 0x10000005, 0x0, 0xaf800048, 0x8f820048, 
-0x1040fffd, 0x0, 0x8f820060, 0x2403fdff, 
+0x1040fffd, 0x0, 0x8f820060, 0x2403feff, 
 0x431024, 0xaf820060, 0x8f420000, 0x10400003, 
 0x0, 0x10000002, 0xaf80004c, 0xaf800048, 
 0x8fbf0024, 0x8fb00020, 0x3e00008, 0x27bd0028, 
 0x3e00008, 0x0, 0x27bdffd8, 0xafbf0024, 
-0xafb00020, 0x8f43005c, 0x8f420058, 0x10620049, 
-0x0, 0x8f430058, 0x8f42005c, 0x622023, 
-0x4820001, 0x24840100, 0x8f430064, 0x8f42005c, 
-0x43102b, 0x14400004, 0x24020100, 0x8f43005c, 
-0x10000005, 0x431023, 0x8f420064, 0x8f43005c, 
-0x431023, 0x2442ffff, 0x403821, 0x87102a, 
-0x54400001, 0x803821, 0x8f42005c, 0x471021, 
-0x305000ff, 0x32c21000, 0x10400015, 0x24082000, 
-0x8f49005c, 0x8f440180, 0x8f450184, 0x8f46005c, 
-0x73980, 0xafa80010, 0xafb00014, 0x8f480014, 
-0x94980, 0x1201821, 0x1021, 0xa32821, 
-0xa3482b, 0x822021, 0x892021, 0x63180, 
-0xafa80018, 0x8f420108, 0x10000014, 0x24c60cc0, 
-0x8f49005c, 0x8f440180, 0x8f450184, 0x8f46005c, 
-0x73940, 0xafa80010, 0xafb00014, 0x8f480014, 
-0x94940, 0x1201821, 0x1021, 0xa32821, 
-0xa3482b, 0x822021, 0x892021, 0x63140, 
-0xafa80018, 0x8f420108, 0x24c64cc0, 0x40f809, 
-0x2e63021, 0x54400001, 0xaf50005c, 0x8f43005c, 
-0x8f420058, 0x14620018, 0x0, 0x8f420000, 
-0x10400007, 0x0, 0xaf80004c, 0x8f82004c, 
-0x1040fffd, 0x0, 0x10000005, 0x0, 
-0xaf800048, 0x8f820048, 0x1040fffd, 0x0, 
-0x8f820060, 0x2403feff, 0x431024, 0xaf820060, 
-0x8f420000, 0x10400003, 0x0, 0x10000002, 
-0xaf80004c, 0xaf800048, 0x8fbf0024, 0x8fb00020, 
-0x3e00008, 0x27bd0028, 0x3e00008, 0x0, 
-0x27bdffd8, 0xafbf0024, 0xafb00020, 0x8f43006c, 
-0x8f420068, 0x10620033, 0x0, 0x8f430068, 
-0x8f42006c, 0x622023, 0x4820001, 0x24840400, 
-0x8f430074, 0x8f42006c, 0x43102b, 0x14400004, 
-0x24020400, 0x8f43006c, 0x10000005, 0x431023, 
-0x8f420074, 0x8f43006c, 0x431023, 0x2442ffff, 
-0x405021, 0x8a102a, 0x54400001, 0x805021, 
-0x8f49006c, 0x8f48006c, 0x8f440188, 0x8f45018c, 
-0x8f46006c, 0x24074000, 0xafa70010, 0x84140, 
-0x1001821, 0x12a4821, 0x313003ff, 0xafb00014, 
-0x8f470014, 0x1021, 0x63140, 0x24c66cc0, 
-0xafa70018, 0xa32821, 0xa3382b, 0x822021, 
-0x872021, 0x8f420108, 0x2e63021, 0x40f809, 
-0xa3940, 0x54400001, 0xaf50006c, 0x8f43006c, 
-0x8f420068, 0x14620018, 0x0, 0x8f420000, 
-0x10400007, 0x0, 0xaf80004c, 0x8f82004c, 
-0x1040fffd, 0x0, 0x10000005, 0x0, 
-0xaf800048, 0x8f820048, 0x1040fffd, 0x0, 
-0x8f820060, 0x2403f7ff, 0x431024, 0xaf820060, 
-0x8f420000, 0x10400003, 0x0, 0x10000002, 
-0xaf80004c, 0xaf800048, 0x8fbf0024, 0x8fb00020, 
-0x3e00008, 0x27bd0028, 0x3e00008, 0x0, 
-0x8f4200fc, 0x3c030001, 0x8f4400f8, 0x346330c8, 
-0x24420001, 0xaf4200fc, 0x8f850128, 0x2e31021, 
-0x54820004, 0x24820008, 0x3c020001, 0x34422ec8, 
-0x2e21021, 0x401821, 0xaf4300f8, 0xac600000, 
-0x8f4200f4, 0x14620004, 0x3c020001, 0x24a20020, 
-0x1000000f, 0xaf820128, 0x8f4300f8, 0x344230c8, 
-0x2e21021, 0x54620004, 0x24620008, 0x3c020001, 
-0x34422ec8, 0x2e21021, 0x401821, 0x8c620004, 
-0x21140, 0xa21021, 0xaf820128, 0xac600000, 
-0x8ca30018, 0x30620070, 0x1040002d, 0x30620020, 
+0xafb00020, 0x8f43006c, 0x8f420068, 0x10620033, 
+0x0, 0x8f430068, 0x8f42006c, 0x622023, 
+0x4820001, 0x24840400, 0x8f430074, 0x8f42006c, 
+0x43102b, 0x14400004, 0x24020400, 0x8f43006c, 
+0x10000005, 0x431023, 0x8f420074, 0x8f43006c, 
+0x431023, 0x2442ffff, 0x405021, 0x8a102a, 
+0x54400001, 0x805021, 0x8f49006c, 0x8f48006c, 
+0x8f440188, 0x8f45018c, 0x8f46006c, 0x24074000, 
+0xafa70010, 0x84140, 0x1001821, 0x12a4821, 
+0x313003ff, 0xafb00014, 0x8f470014, 0x1021, 
+0x63140, 0x24c66cc0, 0xafa70018, 0xa32821, 
+0xa3382b, 0x822021, 0x872021, 0x8f420108, 
+0x2e63021, 0x40f809, 0xa3940, 0x54400001, 
+0xaf50006c, 0x8f43006c, 0x8f420068, 0x14620018, 
+0x0, 0x8f420000, 0x10400007, 0x0, 
+0xaf80004c, 0x8f82004c, 0x1040fffd, 0x0, 
+0x10000005, 0x0, 0xaf800048, 0x8f820048, 
+0x1040fffd, 0x0, 0x8f820060, 0x2403f7ff, 
+0x431024, 0xaf820060, 0x8f420000, 0x10400003, 
+0x0, 0x10000002, 0xaf80004c, 0xaf800048, 
+0x8fbf0024, 0x8fb00020, 0x3e00008, 0x27bd0028, 
+0x3e00008, 0x0, 0x8f4200fc, 0x3c030001, 
+0x8f4400f8, 0x346330c8, 0x24420001, 0xaf4200fc, 
+0x8f850128, 0x2e31021, 0x54820004, 0x24820008, 
+0x3c020001, 0x34422ec8, 0x2e21021, 0x401821, 
+0xaf4300f8, 0xac600000, 0x8f4200f4, 0x14620004, 
+0x3c020001, 0x24a20020, 0x1000000f, 0xaf820128, 
+0x8f4300f8, 0x344230c8, 0x2e21021, 0x54620004, 
+0x24620008, 0x3c020001, 0x34422ec8, 0x2e21021, 
+0x401821, 0x8c620004, 0x21140, 0xa21021, 
+0xaf820128, 0xac600000, 0x8ca30018, 0x30620070, 
+0x1040002d, 0x30620020, 0x10400004, 0x3c020010, 
+0x2c21024, 0x1040000d, 0x0, 0x30620040, 
+0x10400004, 0x3c020020, 0x2c21024, 0x10400007, 
+0x0, 0x30620010, 0x1040001f, 0x3c020040, 
+0x2c21024, 0x1440001c, 0x0, 0x8f820040, 
+0x30420001, 0x14400008, 0x2021, 0x8c030104, 
+0x24020001, 0x50620005, 0x24040001, 0x8c020264, 
+0x10400003, 0x801021, 0x24040001, 0x801021, 
+0x10400006, 0x0, 0x8f4202fc, 0x24420001, 
+0xaf4202fc, 0x10000008, 0x8f4202fc, 0x8f820044, 
+0x34420004, 0xaf820044, 0x8f4202f8, 0x24420001, 
+0xaf4202f8, 0x8f4202f8, 0x3e00008, 0x0, 
+0x3e00008, 0x0, 0x27bdffa0, 0xafbf0058, 
+0xafbe0054, 0xafb50050, 0xafb3004c, 0xafb20048, 
+0xafb10044, 0xafb00040, 0x8f4200fc, 0x24420001, 
+0xaf4200fc, 0x8f880128, 0x25020020, 0xaf820128, 
+0x8d030018, 0x30620070, 0x1040002e, 0x30620020, 
 0x10400004, 0x3c020010, 0x2c21024, 0x1040000d, 
 0x0, 0x30620040, 0x10400004, 0x3c020020, 
 0x2c21024, 0x10400007, 0x0, 0x30620010, 
-0x1040001f, 0x3c020040, 0x2c21024, 0x1440001c
+0x10400193, 0x3c020040, 0x2c21024, 0x14400190
 0x0, 0x8f820040, 0x30420001, 0x14400008, 
 0x2021, 0x8c030104, 0x24020001, 0x50620005, 
 0x24040001, 0x8c020264, 0x10400003, 0x801021, 
 0x24040001, 0x801021, 0x10400006, 0x0, 
-0x8f4202fc, 0x24420001, 0xaf4202fc, 0x10000008
+0x8f4202fc, 0x24420001, 0xaf4202fc, 0x1000017c
 0x8f4202fc, 0x8f820044, 0x34420004, 0xaf820044, 
-0x8f4202f8, 0x24420001, 0xaf4202f8, 0x8f4202f8, 
-0x3e00008, 0x0, 0x3e00008, 0x0, 
-0x27bdffa0, 0xafbf0058, 0xafbe0054, 0xafb50050, 
-0xafb3004c, 0xafb20048, 0xafb10044, 0xafb00040, 
-0x8f4200fc, 0x24420001, 0xaf4200fc, 0x8f880128, 
-0x25020020, 0xaf820128, 0x8d030018, 0x30620070, 
-0x1040002e, 0x30620020, 0x10400004, 0x3c020010, 
-0x2c21024, 0x1040000d, 0x0, 0x30620040, 
-0x10400004, 0x3c020020, 0x2c21024, 0x10400007, 
-0x0, 0x30620010, 0x10400193, 0x3c020040, 
-0x2c21024, 0x14400190, 0x0, 0x8f820040, 
-0x30420001, 0x14400008, 0x2021, 0x8c030104, 
-0x24020001, 0x50620005, 0x24040001, 0x8c020264, 
-0x10400003, 0x801021, 0x24040001, 0x801021, 
-0x10400006, 0x0, 0x8f4202fc, 0x24420001, 
-0xaf4202fc, 0x1000017c, 0x8f4202fc, 0x8f820044, 
-0x34420004, 0xaf820044, 0x8f4202f8, 0x24420001, 
-0xaf4202f8, 0x10000174, 0x8f4202f8, 0x30620002, 
-0x10400135, 0x3c020800, 0x8d0a001c, 0x1422024, 
-0xafaa0024, 0xa5702, 0xafaa0034, 0x8faa0024, 
-0x314affff, 0xafaa0024, 0x950a0016, 0xafaa002c, 
-0x8faa0034, 0x24020001, 0x15420007, 0x24020002, 
-0x8faa0024, 0xa1140, 0x3403ecc0, 0x431021, 
-0x10000014, 0x2e2a821, 0x15420006, 0x24020003, 
-0x8faa0024, 0xa1140, 0x24426cc0, 0x1000000d, 
-0x2e2a821, 0x8faa0034, 0x15420006, 0x0, 
-0x8faa0024, 0xa1140, 0x24424cc0, 0x10000005, 
-0x2e2a821, 0x8faa0024, 0xa1180, 0x571021, 
-0x24550ce0, 0x96a2000e, 0x305efffc, 0x30420400, 
-0x144000c5, 0x8821, 0x10800004, 0x24091000, 
-0x97b1002e, 0x100000c1, 0x0, 0x8eb30018, 
-0x9663000c, 0x2c6205dd, 0x10400015, 0x2021, 
-0x32c20800, 0x10400015, 0x24020800, 0x96630014, 
-0x14620012, 0x3402aaaa, 0x9663000e, 0x14620007, 
-0x2821, 0x96630010, 0x24020300, 0x14620004, 
-0xa01021, 0x96620012, 0x2c450001, 0xa01021, 
-0x54400006, 0x24040016, 0x10000004, 0x0, 
-0x24020800, 0x50620001, 0x2404000e, 0x108000a2, 
-0x2649021, 0x92420000, 0x3042000f, 0x28080, 
-0x32c20100, 0x1040001e, 0x2501821, 0x3c020020, 
-0x43102b, 0x1440000e, 0x2402021, 0x2821, 
-0x94820000, 0x24840002, 0xa22821, 0x83102b, 
-0x1440fffb, 0x30a2ffff, 0x51c02, 0x622821, 
-0x51c02, 0x30a2ffff, 0x10000009, 0x622821, 
-0x8f47013c, 0x8f420110, 0x102842, 0x3c060020, 
-0x40f809, 0xafa80038, 0x3045ffff, 0x8fa80038, 
-0x50a00001, 0x3405ffff, 0x10000002, 0x37de0002, 
-0x2821, 0x32c20080, 0x1040007b, 0xa6a50010, 
-0x26430009, 0x3c02001f, 0x3442ffff, 0x43102b, 
-0x10400003, 0x0, 0x8f42013c, 0x621823, 
-0x90660000, 0x30c200ff, 0x38430006, 0x2c630001, 
-0x38420011, 0x2c420001, 0x621825, 0x1060006b, 
-0x24091000, 0x8821, 0x2602021, 0x94820000, 
-0x24840002, 0x2228821, 0x92102b, 0x1440fffb, 
-0x111c02, 0x3222ffff, 0x628821, 0x111c02, 
-0x3222ffff, 0x628821, 0x32c20200, 0x10400003, 
-0x26440006, 0x1000003e, 0x8021, 0x3c05001f, 
-0x34a5ffff, 0xa4102b, 0x10400003, 0x0, 
-0x8f42013c, 0x822023, 0x94820000, 0x30421fff, 
-0x10400004, 0x2644000c, 0x96420002, 0x10000030, 
-0x508023, 0x96420002, 0x26430014, 0x508023, 
-0x3c020020, 0x43102b, 0x1440000a, 0xd08021, 
-0x9642000c, 0x2028021, 0x9642000e, 0x96430010, 
-0x96440012, 0x2028021, 0x2038021, 0x10000020, 
-0x2048021, 0xa4102b, 0x10400003, 0x0, 
-0x8f42013c, 0x822023, 0x94820000, 0x24840002, 
-0x2028021, 0xa4102b, 0x10400003, 0x0, 
-0x8f42013c, 0x822023, 0x94820000, 0x24840002, 
-0x2028021, 0xa4102b, 0x10400003, 0x0, 
-0x8f42013c, 0x822023, 0x94820000, 0x24840002, 
-0x2028021, 0xa4102b, 0x10400003, 0x0, 
-0x8f42013c, 0x822023, 0x94820000, 0x2028021, 
-0x3c020100, 0x2c21024, 0x1040000c, 0x33c20004, 
-0x1040000a, 0x0, 0x9504000e, 0x2642021, 
-0xc003cc8, 0x2484fffc, 0x3042ffff, 0x2228821, 
-0x111c02, 0x3222ffff, 0x628821, 0x8faa002c, 
-0x1518823, 0x111402, 0x2228821, 0x2308821, 
-0x111402, 0x2228821, 0x3231ffff, 0x52200001, 
-0x3411ffff, 0x37de0001, 0x24091000, 0x33c20004, 
-0xa6b10012, 0x10400002, 0xa6be000e, 0x34098000, 
-0x8f480044, 0x8f440190, 0x8f450194, 0xafa90010, 
-0x8f490044, 0x84140, 0x1001821, 0xafa90014, 
-0x8f48000c, 0x2a03021, 0x24070020, 0xafa80018, 
-0x8f48010c, 0x1021, 0xa32821, 0xa3482b, 
-0x822021, 0x100f809, 0x892021, 0x1440000c, 
-0x0, 0x8f820128, 0x8faa0024, 0x3c040001, 
-0x24843944, 0xafaa0014, 0xafa20010, 0x8f860124, 
-0x8f870120, 0x3c050007, 0xc0029d3, 0x34a59920, 
-0x8f420358, 0x2442ffff, 0xaf420358, 0x8f420044, 
-0x8f430088, 0x24420001, 0x431024, 0xaf420044, 
-0x8faa0034, 0x8f440358, 0x24020001, 0x15420006, 
-0x24020002, 0x8f42034c, 0x2442ffff, 0xaf42034c, 
-0x10000049, 0x8f42034c, 0x15420006, 0x0, 
-0x8f420354, 0x2442ffff, 0xaf420354, 0x10000042, 
-0x8f420354, 0x8f420350, 0x2442ffff, 0xaf420350, 
-0x1000003d, 0x8f420350, 0x30621000, 0x10400005, 
-0x30628000, 0x8f420078, 0x24420001, 0x10000036, 
-0xaf420078, 0x10400034, 0x0, 0x8f420078, 
-0x24420001, 0xaf420078, 0x8c030240, 0x43102b, 
-0x1440002d, 0x24070008, 0x8f440158, 0x8f45015c, 
-0x8f430044, 0x8f48000c, 0x8f860120, 0x24020040, 
-0xafa20010, 0xafa30014, 0xafa80018, 0x8f42010c, 
-0x40f809, 0x24c6001c, 0x14400011, 0x24020001, 
-0x3c010001, 0x370821, 0xa02240f2, 0x8f820124, 
-0xafa20010, 0x8f820128, 0x3c040001, 0x248438c8, 
-0xafa20014, 0x8f460044, 0x8f870120, 0x3c050009, 
-0xc0029d3, 0x34a51300, 0x1000000b, 0x0, 
-0x8f4202f4, 0x24420001, 0xaf4202f4, 0x8f4202f4, 
-0x8f420044, 0xaf42007c, 0x3c010001, 0x370821, 
-0xa02040f2, 0xaf400078, 0x8f420308, 0x24420001, 
-0xaf420308, 0x8f420308, 0x8fbf0058, 0x8fbe0054, 
-0x8fb50050, 0x8fb3004c, 0x8fb20048, 0x8fb10044, 
-0x8fb00040, 0x3e00008, 0x27bd0060, 0x3e00008, 
-0x0, 0x0, 0x0, 0x8f420130, 
+0x8f4202f8, 0x24420001, 0xaf4202f8, 0x10000174, 
+0x8f4202f8, 0x30620002, 0x10400135, 0x3c020800, 
+0x8d0a001c, 0x1422024, 0xafaa0024, 0xa5702, 
+0xafaa0034, 0x8faa0024, 0x314affff, 0xafaa0024, 
+0x950a0016, 0xafaa002c, 0x8faa0034, 0x24020001, 
+0x15420007, 0x24020002, 0x8faa0024, 0xa1140, 
+0x3403ecc0, 0x431021, 0x10000014, 0x2e2a821, 
+0x15420006, 0x24020003, 0x8faa0024, 0xa1140, 
+0x24426cc0, 0x1000000d, 0x2e2a821, 0x8faa0034, 
+0x15420006, 0x0, 0x8faa0024, 0xa1140, 
+0x24424cc0, 0x10000005, 0x2e2a821, 0x8faa0024, 
+0xa1180, 0x571021, 0x24550ce0, 0x96a2000e, 
+0x305efffc, 0x30420400, 0x144000c5, 0x8821, 
+0x10800004, 0x24091000, 0x97b1002e, 0x100000c1, 
+0x0, 0x8eb30018, 0x9663000c, 0x2c6205dd, 
+0x10400015, 0x2021, 0x32c20800, 0x10400015, 
+0x24020800, 0x96630014, 0x14620012, 0x3402aaaa, 
+0x9663000e, 0x14620007, 0x2821, 0x96630010, 
+0x24020300, 0x14620004, 0xa01021, 0x96620012, 
+0x2c450001, 0xa01021, 0x54400006, 0x24040016, 
+0x10000004, 0x0, 0x24020800, 0x50620001, 
+0x2404000e, 0x108000a2, 0x2649021, 0x92420000, 
+0x3042000f, 0x28080, 0x32c20100, 0x1040001e, 
+0x2501821, 0x3c020020, 0x43102b, 0x1440000e, 
+0x2402021, 0x2821, 0x94820000, 0x24840002, 
+0xa22821, 0x83102b, 0x1440fffb, 0x30a2ffff, 
+0x51c02, 0x622821, 0x51c02, 0x30a2ffff, 
+0x10000009, 0x622821, 0x8f47013c, 0x8f420110, 
+0x102842, 0x3c060020, 0x40f809, 0xafa80038, 
+0x3045ffff, 0x8fa80038, 0x50a00001, 0x3405ffff, 
+0x10000002, 0x37de0002, 0x2821, 0x32c20080, 
+0x1040007b, 0xa6a50010, 0x26430009, 0x3c02001f, 
+0x3442ffff, 0x43102b, 0x10400003, 0x0, 
+0x8f42013c, 0x621823, 0x90660000, 0x30c200ff, 
+0x38430006, 0x2c630001, 0x38420011, 0x2c420001, 
+0x621825, 0x1060006b, 0x24091000, 0x8821, 
+0x2602021, 0x94820000, 0x24840002, 0x2228821, 
+0x92102b, 0x1440fffb, 0x111c02, 0x3222ffff, 
+0x628821, 0x111c02, 0x3222ffff, 0x628821, 
+0x32c20200, 0x10400003, 0x26440006, 0x1000003e, 
+0x8021, 0x3c05001f, 0x34a5ffff, 0xa4102b, 
+0x10400003, 0x0, 0x8f42013c, 0x822023, 
+0x94820000, 0x30421fff, 0x10400004, 0x2644000c, 
+0x96420002, 0x10000030, 0x508023, 0x96420002, 
+0x26430014, 0x508023, 0x3c020020, 0x43102b, 
+0x1440000a, 0xd08021, 0x9642000c, 0x2028021, 
+0x9642000e, 0x96430010, 0x96440012, 0x2028021, 
+0x2038021, 0x10000020, 0x2048021, 0xa4102b, 
+0x10400003, 0x0, 0x8f42013c, 0x822023, 
+0x94820000, 0x24840002, 0x2028021, 0xa4102b, 
+0x10400003, 0x0, 0x8f42013c, 0x822023, 
+0x94820000, 0x24840002, 0x2028021, 0xa4102b, 
+0x10400003, 0x0, 0x8f42013c, 0x822023, 
+0x94820000, 0x24840002, 0x2028021, 0xa4102b, 
+0x10400003, 0x0, 0x8f42013c, 0x822023, 
+0x94820000, 0x2028021, 0x3c020100, 0x2c21024, 
+0x1040000c, 0x33c20004, 0x1040000a, 0x0, 
+0x9504000e, 0x2642021, 0xc003cf8, 0x2484fffc, 
+0x3042ffff, 0x2228821, 0x111c02, 0x3222ffff, 
+0x628821, 0x8faa002c, 0x1518823, 0x111402, 
+0x2228821, 0x2308821, 0x111402, 0x2228821, 
+0x3231ffff, 0x52200001, 0x3411ffff, 0x37de0001, 
+0x24091000, 0x33c20004, 0xa6b10012, 0x10400002, 
+0xa6be000e, 0x34098000, 0x8f480044, 0x8f440190, 
+0x8f450194, 0xafa90010, 0x8f490044, 0x84140, 
+0x1001821, 0xafa90014, 0x8f48000c, 0x2a03021, 
+0x24070020, 0xafa80018, 0x8f48010c, 0x1021, 
+0xa32821, 0xa3482b, 0x822021, 0x100f809, 
+0x892021, 0x1440000c, 0x0, 0x8f820128, 
+0x8faa0024, 0x3c040001, 0x24843a28, 0xafaa0014, 
+0xafa20010, 0x8f860124, 0x8f870120, 0x3c050007, 
+0xc002a03, 0x34a59920, 0x8f420358, 0x2442ffff, 
+0xaf420358, 0x8f420044, 0x8f430088, 0x24420001, 
+0x431024, 0xaf420044, 0x8faa0034, 0x8f440358, 
+0x24020001, 0x15420006, 0x24020002, 0x8f42034c, 
+0x2442ffff, 0xaf42034c, 0x10000049, 0x8f42034c, 
+0x15420006, 0x0, 0x8f420354, 0x2442ffff, 
+0xaf420354, 0x10000042, 0x8f420354, 0x8f420350, 
+0x2442ffff, 0xaf420350, 0x1000003d, 0x8f420350, 
+0x30621000, 0x10400005, 0x30628000, 0x8f420078, 
+0x24420001, 0x10000036, 0xaf420078, 0x10400034, 
+0x0, 0x8f420078, 0x24420001, 0xaf420078, 
+0x8c030240, 0x43102b, 0x1440002d, 0x24070008, 
+0x8f440158, 0x8f45015c, 0x8f430044, 0x8f48000c, 
+0x8f860120, 0x24020040, 0xafa20010, 0xafa30014, 
+0xafa80018, 0x8f42010c, 0x40f809, 0x24c6001c, 
+0x14400011, 0x24020001, 0x3c010001, 0x370821, 
+0xa02240f2, 0x8f820124, 0xafa20010, 0x8f820128, 
+0x3c040001, 0x248439ac, 0xafa20014, 0x8f460044, 
+0x8f870120, 0x3c050009, 0xc002a03, 0x34a51300, 
+0x1000000b, 0x0, 0x8f4202f4, 0x24420001, 
+0xaf4202f4, 0x8f4202f4, 0x8f420044, 0xaf42007c, 
+0x3c010001, 0x370821, 0xa02040f2, 0xaf400078, 
+0x8f420308, 0x24420001, 0xaf420308, 0x8f420308, 
+0x8fbf0058, 0x8fbe0054, 0x8fb50050, 0x8fb3004c, 
+0x8fb20048, 0x8fb10044, 0x8fb00040, 0x3e00008, 
+0x27bd0060, 0x3e00008, 0x0, 0x8f420130, 
 0xaf8200c0, 0x8f420130, 0xaf8200c4, 0x8f420130, 
 0xaf8200c8, 0x8f42012c, 0xaf8200d0, 0x8f42012c, 
 0xaf8200d4, 0x8f42012c, 0x3e00008, 0xaf8200d8, 
 0x27bdffe0, 0x27840208, 0x24050200, 0xafbf0018, 
-0xc002a57, 0x24060008, 0x8c020204, 0xc003dee, 
+0xc002a87, 0x24060008, 0x8c020204, 0xc003e1e, 
 0xaf820210, 0x2021, 0x8c060248, 0x24020004, 
-0x3c010001, 0xac223d18, 0xc004878, 0x24050004, 
-0x3c020001, 0x8c423d14, 0x30420001, 0x10400007, 
-0x24020001, 0x3c010001, 0xac223d18, 0x2021, 
-0x24050001, 0xc004878, 0x3c06601b, 0x3c040001, 
-0x24843a00, 0x8f420144, 0x8f430148, 0x3c050008, 
+0x3c010001, 0xac223e28, 0xc0048a8, 0x24050004, 
+0x3c020001, 0x8c423e24, 0x30420001, 0x10400007, 
+0x24020001, 0x3c010001, 0xac223e28, 0x2021, 
+0x24050001, 0xc0048a8, 0x3c06601b, 0x3c040001, 
+0x24843af0, 0x8f420144, 0x8f430148, 0x3c050008, 
 0x8f46014c, 0x21640, 0x31940, 0x34630403, 
 0x431025, 0x633c0, 0x461025, 0xaf82021c, 
 0xafa00010, 0xafa00014, 0x8f86021c, 0x34a50200, 
-0xc0029d3, 0x3821, 0x3c010001, 0xac203d10, 
-0x3c010001, 0xac203d28, 0x8fbf0018, 0x3e00008, 
+0xc002a03, 0x3821, 0x3c010001, 0xac203e20, 
+0x3c010001, 0xac203e38, 0x8fbf0018, 0x3e00008, 
 0x27bd0020, 0x27bdffe0, 0x3c050008, 0x34a50300, 
 0xafbf0018, 0xafa00010, 0xafa00014, 0x8f860200, 
-0x3c040001, 0x24843a0c, 0xc0029d3, 0x3821, 
+0x3c040001, 0x24843afc, 0xc002a03, 0x3821, 
 0x8f420400, 0x24420001, 0xaf420400, 0x8f420400, 
 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x27bdffd8, 
 0xafbf0020, 0xafb1001c, 0xafb00018, 0x8f420394, 
 0x24420001, 0xaf420394, 0x8f420394, 0x8f900220, 
-0x8f4303a8, 0x3c020001, 0x8c423d28, 0x3c040001, 
-0x24843a18, 0x3c050008, 0xafa20014, 0xafa30010, 
-0x8f4703ac, 0x34a50400, 0xc0029d3, 0x2003021, 
+0x8f4303a8, 0x3c020001, 0x8c423e38, 0x3c040001, 
+0x24843b08, 0x3c050008, 0xafa20014, 0xafa30010, 
+0x8f4703ac, 0x34a50400, 0xc002a03, 0x2003021, 
 0x3c024000, 0x2021024, 0x104000e1, 0x3c040100, 
 0x8f4203ac, 0x24420001, 0xaf4203ac, 0x8f4203ac, 
 0x8f820220, 0x3c0308ff, 0x3463ffff, 0x431024, 
@@ -7243,83 +7258,81 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x8f42013c, 0x822021, 0x8f420140, 0x2c830001, 
 0x44102b, 0x431025, 0x50400008, 0x3c02fdff, 
 0x8f820220, 0x3c0308ff, 0x3463fffb, 0x431024, 
-0x3c034000, 0x10000046, 0x431025, 0x3442ffff, 
+0x3c034000, 0x10000041, 0x431025, 0x3442ffff, 
 0x8f4303bc, 0x282a024, 0x24020001, 0xa34205b1, 
-0x24630001, 0xaf4303bc, 0x1000003e, 0x8f4203bc, 
-0x2041024, 0x10400013, 0x3c110200, 0x8f420398, 
+0x24630001, 0xaf4303bc, 0x10000039, 0x8f4203bc, 
+0x2041024, 0x1040000e, 0x3c110200, 0x8f420398, 
 0x24420001, 0xaf420398, 0x8f420398, 0x8f820220, 
 0x3c0308ff, 0x3463ffff, 0x431024, 0x441025, 
-0xaf820220, 0x3c020004, 0x2021024, 0x14400005, 
-0x3c110200, 0xc003bad, 0x0, 0x10000029, 
-0x0, 0x2111024, 0x50400008, 0x3c110400, 
-0x8f42039c, 0x24420001, 0xaf42039c, 0xc003bad, 
-0x8f42039c, 0x10000019, 0x0, 0x2111024, 
-0x1040001c, 0x0, 0x8f830224, 0x24021402, 
-0x14620009, 0x3c050008, 0x3c040001, 0x24843a24, 
-0xafa00010, 0xafa00014, 0x8f860224, 0x34a50500, 
-0xc0029d3, 0x3821, 0x8f4203a0, 0x24420001, 
-0xaf4203a0, 0x8f4203a0, 0x8f820220, 0x2002021, 
-0x34420002, 0xc004610, 0xaf820220, 0x8f820220, 
-0x3c0308ff, 0x3463ffff, 0x431024, 0x511025, 
-0xaf820220, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 
-0x3e00008, 0x27bd0028, 0x3e00008, 0x0, 
-0x3c020001, 0x8c423d28, 0x27bdffb0, 0xafbf0048, 
-0xafbe0044, 0xafb50040, 0xafb3003c, 0xafb20038, 
-0xafb10034, 0x1040000f, 0xafb00030, 0x3c040001, 
-0x24843a30, 0x3c050008, 0xafa00010, 0xafa00014, 
-0x8f860220, 0x34a50600, 0x24020001, 0x3c010001, 
-0xac203d28, 0x3c010001, 0xac223d1c, 0xc0029d3, 
-0x3821, 0x3c037fff, 0x8c020268, 0x3463ffff, 
-0x3c04fdff, 0x431024, 0xac020268, 0x8f420004, 
-0x3484ffff, 0x30420002, 0x10400092, 0x284a024, 
-0x3c040600, 0x34842000, 0x8f420004, 0x2821, 
-0x2403fffd, 0x431024, 0xaf420004, 0xafa40020, 
-0x8f5e0018, 0x27aa0020, 0x240200ff, 0x13c20002, 
-0xafaa002c, 0x27c50001, 0x8c020228, 0xa09021, 
-0x1642000e, 0x1e38c0, 0x8f42032c, 0x24420001, 
-0xaf42032c, 0x8f42032c, 0x8c020228, 0x3c040001, 
-0x248439c8, 0x3c050009, 0xafa00014, 0xafa20010, 
-0x8fa60020, 0x1000006d, 0x34a50500, 0xf71021, 
-0x8fa30020, 0x8fa40024, 0xac4304c0, 0xac4404c4, 
-0x8f830054, 0x8f820054, 0x247003e8, 0x2021023, 
-0x2c4203e9, 0x1040001b, 0x9821, 0xe08821, 
-0x263504c0, 0x8f440168, 0x8f45016c, 0x2201821, 
-0x240a0004, 0xafaa0010, 0xafb20014, 0x8f48000c, 
-0x1021, 0x2f53021, 0xafa80018, 0x8f48010c, 
-0x24070008, 0xa32821, 0xa3482b, 0x822021, 
-0x100f809, 0x892021, 0x54400006, 0x24130001, 
-0x8f820054, 0x2021023, 0x2c4203e9, 0x1440ffe9, 
-0x0, 0x326200ff, 0x54400017, 0xaf520018, 
+0xc003be0, 0xaf820220, 0x10000029, 0x0, 
+0x2111024, 0x50400008, 0x3c110400, 0x8f42039c, 
+0x24420001, 0xaf42039c, 0xc003be0, 0x8f42039c, 
+0x10000019, 0x0, 0x2111024, 0x1040001c, 
+0x0, 0x8f830224, 0x24021402, 0x14620009, 
+0x3c050008, 0x3c040001, 0x24843b14, 0xafa00010, 
+0xafa00014, 0x8f860224, 0x34a50500, 0xc002a03, 
+0x3821, 0x8f4203a0, 0x24420001, 0xaf4203a0, 
+0x8f4203a0, 0x8f820220, 0x2002021, 0x34420002, 
+0xc004640, 0xaf820220, 0x8f820220, 0x3c0308ff, 
+0x3463ffff, 0x431024, 0x511025, 0xaf820220, 
+0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 
+0x27bd0028, 0x3e00008, 0x0, 0x3c020001, 
+0x8c423e38, 0x27bdffb0, 0xafbf0048, 0xafbe0044, 
+0xafb50040, 0xafb3003c, 0xafb20038, 0xafb10034, 
+0x1040000f, 0xafb00030, 0x3c040001, 0x24843b20, 
+0x3c050008, 0xafa00010, 0xafa00014, 0x8f860220, 
+0x34a50600, 0x24020001, 0x3c010001, 0xac203e38, 
+0x3c010001, 0xac223e2c, 0xc002a03, 0x3821, 
+0x3c037fff, 0x8c020268, 0x3463ffff, 0x3c04fdff, 
+0x431024, 0xac020268, 0x8f420004, 0x3484ffff, 
+0x30420002, 0x10400092, 0x284a024, 0x3c040600, 
+0x34842000, 0x8f420004, 0x2821, 0x2403fffd, 
+0x431024, 0xaf420004, 0xafa40020, 0x8f5e0018, 
+0x27aa0020, 0x240200ff, 0x13c20002, 0xafaa002c, 
+0x27c50001, 0x8c020228, 0xa09021, 0x1642000e, 
+0x1e38c0, 0x8f42032c, 0x24420001, 0xaf42032c, 
+0x8f42032c, 0x8c020228, 0x3c040001, 0x24843ab8, 
+0x3c050009, 0xafa00014, 0xafa20010, 0x8fa60020, 
+0x1000006d, 0x34a50500, 0xf71021, 0x8fa30020, 
+0x8fa40024, 0xac4304c0, 0xac4404c4, 0x8f830054, 
+0x8f820054, 0x247003e8, 0x2021023, 0x2c4203e9, 
+0x1040001b, 0x9821, 0xe08821, 0x263504c0, 
+0x8f440168, 0x8f45016c, 0x2201821, 0x240a0004, 
+0xafaa0010, 0xafb20014, 0x8f48000c, 0x1021, 
+0x2f53021, 0xafa80018, 0x8f48010c, 0x24070008, 
+0xa32821, 0xa3482b, 0x822021, 0x100f809, 
+0x892021, 0x54400006, 0x24130001, 0x8f820054, 
+0x2021023, 0x2c4203e9, 0x1440ffe9, 0x0, 
+0x326200ff, 0x54400017, 0xaf520018, 0x8f420368, 
+0x24420001, 0xaf420368, 0x8f420368, 0x8f820120, 
+0x8faa002c, 0xafa20010, 0x8f820124, 0x3c040001, 
+0x24843ac4, 0x3c050009, 0xafa20014, 0x8d460000, 
+0x10000035, 0x34a50600, 0x8f4202f8, 0x24130001, 
+0x24420001, 0xaf4202f8, 0x8f4202f8, 0x1000001e, 
+0x326200ff, 0x8f830054, 0x8f820054, 0x247003e8, 
+0x2021023, 0x2c4203e9, 0x10400016, 0x9821, 
+0x3c150020, 0x24110010, 0x8f42000c, 0x8f440150, 
+0x8f450154, 0x8f860120, 0xafb10010, 0xafb20014, 
+0x551025, 0xafa20018, 0x8f42010c, 0x24070008, 
+0x40f809, 0x24c6001c, 0x1440ffe3, 0x0, 
+0x8f820054, 0x2021023, 0x2c4203e9, 0x1440ffee, 
+0x0, 0x326200ff, 0x14400011, 0x0, 
 0x8f420368, 0x24420001, 0xaf420368, 0x8f420368, 
 0x8f820120, 0x8faa002c, 0xafa20010, 0x8f820124, 
-0x3c040001, 0x248439d4, 0x3c050009, 0xafa20014, 
-0x8d460000, 0x10000035, 0x34a50600, 0x8f4202f8, 
-0x24130001, 0x24420001, 0xaf4202f8, 0x8f4202f8, 
-0x1000001e, 0x326200ff, 0x8f830054, 0x8f820054, 
-0x247003e8, 0x2021023, 0x2c4203e9, 0x10400016, 
-0x9821, 0x3c150020, 0x24110010, 0x8f42000c, 
-0x8f440150, 0x8f450154, 0x8f860120, 0xafb10010, 
-0xafb20014, 0x551025, 0xafa20018, 0x8f42010c, 
-0x24070008, 0x40f809, 0x24c6001c, 0x1440ffe3, 
-0x0, 0x8f820054, 0x2021023, 0x2c4203e9, 
-0x1440ffee, 0x0, 0x326200ff, 0x14400011, 
-0x0, 0x8f420368, 0x24420001, 0xaf420368, 
-0x8f420368, 0x8f820120, 0x8faa002c, 0xafa20010, 
-0x8f820124, 0x3c040001, 0x248439dc, 0x3c050009, 
-0xafa20014, 0x8d460000, 0x34a50700, 0xc0029d3, 
-0x3c03821, 0x8f4202dc, 0x24420001, 0xaf4202dc, 
-0x8f4202dc, 0x8fbf0048, 0x8fbe0044, 0x8fb50040, 
-0x8fb3003c, 0x8fb20038, 0x8fb10034, 0x8fb00030, 
-0x3e00008, 0x27bd0050, 0x3c020001, 0x8c423d28, 
-0x27bdffe0, 0x1440000d, 0xafbf0018, 0x3c040001, 
-0x24843a3c, 0x3c050008, 0xafa00010, 0xafa00014, 
-0x8f860220, 0x34a50700, 0x24020001, 0x3c010001, 
-0xac223d28, 0xc0029d3, 0x3821, 0x3c020004, 
-0x2c21024, 0x10400008, 0x2021, 0x8f820220, 
-0x3c0308ff, 0x3463ffff, 0x431024, 0x34420008, 
-0xaf820220, 0x2021, 0xc004981, 0x24050004, 
-0xac020268, 0x8fbf0018, 0x3e00008, 0x27bd0020, 
-0x0, 0x0, 0x0, 0x86102b, 
+0x3c040001, 0x24843acc, 0x3c050009, 0xafa20014, 
+0x8d460000, 0x34a50700, 0xc002a03, 0x3c03821, 
+0x8f4202dc, 0x24420001, 0xaf4202dc, 0x8f4202dc, 
+0x8fbf0048, 0x8fbe0044, 0x8fb50040, 0x8fb3003c, 
+0x8fb20038, 0x8fb10034, 0x8fb00030, 0x3e00008, 
+0x27bd0050, 0x3c020001, 0x8c423e38, 0x27bdffe0, 
+0x1440000d, 0xafbf0018, 0x3c040001, 0x24843b2c, 
+0x3c050008, 0xafa00010, 0xafa00014, 0x8f860220, 
+0x34a50700, 0x24020001, 0x3c010001, 0xac223e38, 
+0xc002a03, 0x3821, 0x3c020004, 0x2c21024, 
+0x10400008, 0x2021, 0x8f820220, 0x3c0308ff, 
+0x3463ffff, 0x431024, 0x34420008, 0xaf820220, 
+0x2021, 0xc0049b1, 0x24050004, 0xac020268, 
+0x8fbf0018, 0x3e00008, 0x27bd0020, 0x86102b, 
 0x50400001, 0x872023, 0xc41023, 0x24843, 
 0x125102b, 0x1040001b, 0x91040, 0x824021, 
 0x88102b, 0x10400007, 0x1821, 0x94820000, 
@@ -7359,7 +7372,7 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x90a20000, 0x822021, 0x41c02, 0x3082ffff, 
 0x622021, 0x41c02, 0x3082ffff, 0x622021, 
 0x3e00008, 0x3082ffff, 0x0, 0x8f820220, 
-0x34420002, 0xaf820220, 0x3c020001, 0x8c425f28, 
+0x34420002, 0xaf820220, 0x3c020001, 0x8c426038, 
 0x30424000, 0x10400054, 0x24040001, 0x8f820200, 
 0x24067fff, 0x8f830200, 0x30450002, 0x2402fffd, 
 0x621824, 0xaf830200, 0xaf840204, 0x8f830054, 
@@ -7406,43 +7419,43 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x43102b, 0x14400006, 0x3c026000, 0x3c024000, 
 0x10620008, 0x24020800, 0x10000008, 0x0, 
 0x10620004, 0x24020800, 0x10000004, 0x0, 
-0x24020700, 0x3c010001, 0xac223d2c, 0x3e00008, 
+0x24020700, 0x3c010001, 0xac223e3c, 0x3e00008, 
 0x0, 0x27bdffc8, 0xafbf0034, 0xafb20030, 
-0xafb1002c, 0xafb00028, 0x3c010001, 0xc0045ed, 
-0xac203d14, 0x24040001, 0x2821, 0x27a60020, 
-0x34028000, 0xc00420a, 0xa7a20020, 0x8f830054, 
+0xafb1002c, 0xafb00028, 0x3c010001, 0xc00461d, 
+0xac203e24, 0x24040001, 0x2821, 0x27a60020, 
+0x34028000, 0xc00423a, 0xa7a20020, 0x8f830054, 
 0x8f820054, 0x10000002, 0x24630064, 0x8f820054, 
 0x621023, 0x2c420065, 0x1440fffc, 0x24040001, 
-0x24050001, 0xc0041c8, 0x27a60020, 0x8f830054, 
+0x24050001, 0xc0041f8, 0x27a60020, 0x8f830054, 
 0x8f820054, 0x10000002, 0x24630064, 0x8f820054, 
 0x621023, 0x2c420065, 0x1440fffc, 0x24040001, 
-0x24050001, 0xc0041c8, 0x27a60020, 0x8f830054, 
+0x24050001, 0xc0041f8, 0x27a60020, 0x8f830054, 
 0x8f820054, 0x10000002, 0x24630064, 0x8f820054, 
 0x621023, 0x2c420065, 0x1440fffc, 0x24040001, 
-0x24050002, 0xc0041c8, 0x27a60018, 0x8f830054, 
+0x24050002, 0xc0041f8, 0x27a60018, 0x8f830054, 
 0x8f820054, 0x10000002, 0x24630064, 0x8f820054, 
 0x621023, 0x2c420065, 0x1440fffc, 0x24040001, 
-0x24050003, 0xc0041c8, 0x27a6001a, 0x97a20020, 
-0x10400029, 0x24020001, 0x3c020001, 0x8c423d14, 
-0x97a30018, 0x34420001, 0x3c010001, 0xac223d14, 
+0x24050003, 0xc0041f8, 0x27a6001a, 0x97a20020, 
+0x10400029, 0x24020001, 0x3c020001, 0x8c423e24, 
+0x97a30018, 0x34420001, 0x3c010001, 0xac223e24, 
 0x24020015, 0x14620009, 0x0, 0x97a2001a, 
 0x3843f423, 0x2c630001, 0x3842f430, 0x2c420001, 
 0x621825, 0x14600018, 0x24020003, 0x97a30018, 
 0x24027810, 0x14620014, 0x24020002, 0x97a3001a, 
 0x24020001, 0x14620010, 0x24020002, 0x1000000e, 
-0x24020004, 0x3c020001, 0x8c423d14, 0x34420008, 
-0x3c010001, 0xac223d14, 0x10000058, 0x24020004, 
-0x3c020001, 0x8c423d14, 0x34420004, 0x3c010001, 
-0x100000a9, 0xac223d14, 0x3c010001, 0xac223e70, 
+0x24020004, 0x3c020001, 0x8c423e24, 0x34420008, 
+0x3c010001, 0xac223e24, 0x10000058, 0x24020004, 
+0x3c020001, 0x8c423e24, 0x34420004, 0x3c010001, 
+0x100000a9, 0xac223e24, 0x3c010001, 0xac223f80, 
 0x24020e00, 0xaf820238, 0x8f840054, 0x8f820054, 
-0x24030008, 0x3c010001, 0xac233d18, 0x10000002, 
+0x24030008, 0x3c010001, 0xac233e28, 0x10000002, 
 0x248401f4, 0x8f820054, 0x821023, 0x2c4201f5, 
 0x1440fffc, 0x3c0200c8, 0x344201fb, 0xaf820238, 
 0x8f830054, 0x8f820054, 0x10000002, 0x246301f4, 
 0x8f820054, 0x621023, 0x2c4201f5, 0x1440fffc, 
-0x8021, 0x24120001, 0x24110009, 0xc0040e8, 
-0x0, 0x3c010001, 0xac323d30, 0xc004194, 
-0x0, 0x3c020001, 0x8c423d30, 0x1451fffb, 
+0x8021, 0x24120001, 0x24110009, 0xc004118, 
+0x0, 0x3c010001, 0xac323e40, 0xc0041c4, 
+0x0, 0x3c020001, 0x8c423e40, 0x1451fffb, 
 0x3c0200c8, 0x344201f6, 0xaf820238, 0x8f830054, 
 0x8f820054, 0x10000002, 0x2463000a, 0x8f820054, 
 0x621023, 0x2c42000b, 0x1440fffc, 0x0, 
@@ -7454,10 +7467,10 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x14440005, 0x34028000, 0x42040, 0xa4102b, 
 0x1040fff0, 0x34028000, 0x1082ffa6, 0x26100001, 
 0x2e020014, 0x1440ffcd, 0x24020004, 0x3c010001, 
-0xac223d18, 0x8021, 0x24120009, 0x3c11ffff, 
-0x36313f7f, 0xc0040e8, 0x0, 0x24020001, 
-0x3c010001, 0xac223d30, 0xc004194, 0x0, 
-0x3c020001, 0x8c423d30, 0x1452fffb, 0x0, 
+0xac223e28, 0x8021, 0x24120009, 0x3c11ffff, 
+0x36313f7f, 0xc004118, 0x0, 0x24020001, 
+0x3c010001, 0xac223e40, 0xc0041c4, 0x0, 
+0x3c020001, 0x8c423e40, 0x1452fffb, 0x0, 
 0x8f820044, 0x511024, 0x34425080, 0xaf820044, 
 0x8f830054, 0x8f820054, 0x10000002, 0x2463000a, 
 0x8f820054, 0x621023, 0x2c42000b, 0x1440fffc, 
@@ -7475,131 +7488,131 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1440fffc, 0x0, 0x8f820224, 0x14440005, 
 0x34028000, 0x42040, 0xa4102b, 0x1040fff0, 
 0x34028000, 0x1082ff56, 0x26100001, 0x2e020064, 
-0x1440ffb0, 0x0, 0x3c020001, 0x8c423d14, 
+0x1440ffb0, 0x0, 0x3c020001, 0x8c423e24, 
 0x30420004, 0x14400007, 0x3c08fff0, 0x8f820044, 
 0x3c03ffff, 0x34633f7f, 0x431024, 0xaf820044, 
 0x3c08fff0, 0x3508bdc0, 0x8f830054, 0x97a60018, 
-0x3c070001, 0x8ce73e70, 0x3c040001, 0x24843b00, 
-0x24020001, 0x3c010001, 0xac223d1c, 0xafa60010, 
-0x3c060001, 0x8cc63d14, 0x97a2001a, 0x3c05000d, 
-0x34a50100, 0x3c010001, 0xac203d18, 0x681821, 
-0x3c010001, 0xac233e68, 0xc0029d3, 0xafa20014, 
+0x3c070001, 0x8ce73f80, 0x3c040001, 0x24843c00, 
+0x24020001, 0x3c010001, 0xac223e2c, 0xafa60010, 
+0x3c060001, 0x8cc63e24, 0x97a2001a, 0x3c05000d, 
+0x34a50100, 0x3c010001, 0xac203e28, 0x681821, 
+0x3c010001, 0xac233f78, 0xc002a03, 0xafa20014, 
 0x8fbf0034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, 
 0x3e00008, 0x27bd0038, 0x27bdffe8, 0x24070004, 
-0x3c040001, 0x8c843d18, 0x3021, 0x24020001, 
-0x1482000a, 0xafbf0010, 0x3c020001, 0x8c425f2c, 
+0x3c040001, 0x8c843e28, 0x3021, 0x24020001, 
+0x1482000a, 0xafbf0010, 0x3c020001, 0x8c42603c, 
 0x3c050004, 0x30428000, 0x1040000c, 0x34a593e0, 
 0x3c05000f, 0x10000009, 0x34a54240, 0x3c020001, 
-0x8c425f2c, 0x3c05000f, 0x30428000, 0x10400003, 
+0x8c42603c, 0x3c05000f, 0x30428000, 0x10400003, 
 0x34a54240, 0x3c05001e, 0x34a58480, 0x3c020001, 
-0x8c423e68, 0x8f830054, 0x451021, 0x431023, 
+0x8c423f78, 0x8f830054, 0x451021, 0x431023, 
 0x45102b, 0x1440002e, 0x0, 0x3c020001, 
-0x8c423d20, 0x1440002a, 0x2cc20001, 0x7182b, 
+0x8c423e30, 0x1440002a, 0x2cc20001, 0x7182b, 
 0x431024, 0x1040001d, 0x0, 0x3c090001, 
-0x8d293d14, 0x240b0001, 0x3c054000, 0x3c080001, 
-0x25085f2c, 0x250afffc, 0x42042, 0x14800002, 
+0x8d293e24, 0x240b0001, 0x3c054000, 0x3c080001, 
+0x2508603c, 0x250afffc, 0x42042, 0x14800002, 
 0x24e7ffff, 0x24040008, 0x891024, 0x5040000b, 
 0x2cc20001, 0x148b0004, 0x0, 0x8d020000, 
 0x10000003, 0x451024, 0x8d420000, 0x451024, 
 0x54400001, 0x24060001, 0x2cc20001, 0x7182b, 
 0x431024, 0x5440ffed, 0x42042, 0x3c010001, 
-0x10c00020, 0xac243d18, 0x8f830054, 0x24020001, 
-0x3c010001, 0xac223d1c, 0x3c010001, 0xac233e68, 
-0x3c020001, 0x8c423d1c, 0x10400004, 0x24020001, 
-0x3c010001, 0xac203d1c, 0xaee204b8, 0x8ee304b8, 
-0x24020008, 0x10620005, 0x24020001, 0xc003f91, 
+0x10c00020, 0xac243e28, 0x8f830054, 0x24020001, 
+0x3c010001, 0xac223e2c, 0x3c010001, 0xac233f78, 
+0x3c020001, 0x8c423e2c, 0x10400004, 0x24020001, 
+0x3c010001, 0xac203e2c, 0xaee204b8, 0x8ee304b8, 
+0x24020008, 0x10620005, 0x24020001, 0xc003fc1, 
 0x0, 0x1000000b, 0x0, 0x3c030001, 
-0x8c633d18, 0x10620007, 0x2402000e, 0x3c030001, 
-0x8c635ec0, 0x10620003, 0x0, 0xc004610, 
+0x8c633e28, 0x10620007, 0x2402000e, 0x3c030001, 
+0x8c635fd0, 0x10620003, 0x0, 0xc004640, 
 0x8f840220, 0x8fbf0010, 0x3e00008, 0x27bd0018, 
-0x27bdffe0, 0x3c03fdff, 0x3c040001, 0x8c843d18, 
-0x3c020001, 0x8c423d38, 0x3463ffff, 0x283a024, 
+0x27bdffe0, 0x3c03fdff, 0x3c040001, 0x8c843e28, 
+0x3c020001, 0x8c423e48, 0x3463ffff, 0x283a024, 
 0x14820006, 0xafbf0018, 0x8ee304b8, 0x3c020001, 
-0x8c423d3c, 0x10620006, 0x0, 0x8ee204b8, 
-0x3c010001, 0xac243d38, 0x3c010001, 0xac223d3c, 
-0x3c030001, 0x8c633d18, 0x24020002, 0x1062013c, 
+0x8c423e4c, 0x10620006, 0x0, 0x8ee204b8, 
+0x3c010001, 0xac243e48, 0x3c010001, 0xac223e4c, 
+0x3c030001, 0x8c633e28, 0x24020002, 0x1062013c, 
 0x2c620003, 0x10400005, 0x24020001, 0x1062000a, 
 0x0, 0x10000134, 0x0, 0x24020004, 
 0x1062006d, 0x24020008, 0x1062009f, 0x24020001, 
 0x1000012d, 0x0, 0x8ee204b8, 0x2443ffff, 
 0x2c620008, 0x1040012a, 0x31080, 0x3c010001, 
-0x220821, 0x8c223b18, 0x400008, 0x0, 
-0xc0040e8, 0x0, 0x3c020001, 0x8c423d24, 
-0x3c010001, 0xac203cb0, 0x104000d7, 0x24020002, 
-0xaee204b8, 0x3c010001, 0x10000119, 0xac203d24, 
-0xc00424b, 0x0, 0x3c030001, 0x8c633d40, 
-0x1000009e, 0x24020011, 0x3c050001, 0x8ca53d18, 
-0x3c060001, 0x8cc65f2c, 0xc004878, 0x2021, 
-0x24020005, 0x3c010001, 0xac203d24, 0x10000108, 
-0xaee204b8, 0x3c040001, 0x24843b0c, 0x3c05000f, 
+0x220821, 0x8c223c18, 0x400008, 0x0, 
+0xc004118, 0x0, 0x3c020001, 0x8c423e34, 
+0x3c010001, 0xac203dc0, 0x104000d7, 0x24020002, 
+0xaee204b8, 0x3c010001, 0x10000119, 0xac203e34, 
+0xc00427b, 0x0, 0x3c030001, 0x8c633e50, 
+0x1000009e, 0x24020011, 0x3c050001, 0x8ca53e28, 
+0x3c060001, 0x8cc6603c, 0xc0048a8, 0x2021, 
+0x24020005, 0x3c010001, 0xac203e34, 0x10000108, 
+0xaee204b8, 0x3c040001, 0x24843c0c, 0x3c05000f, 
 0x34a50100, 0x3021, 0x3821, 0xafa00010, 
-0xc0029d3, 0xafa00014, 0x100000fd, 0x0, 
+0xc002a03, 0xafa00014, 0x100000fd, 0x0, 
 0x8f820220, 0x3c03f700, 0x431025, 0x100000a4, 
 0xaf820220, 0x8f820220, 0x3c030004, 0x431024, 
 0x144000ae, 0x24020007, 0x8f830054, 0x3c020001, 
-0x8c423e60, 0x2463d8f0, 0x431023, 0x2c422710, 
+0x8c423f70, 0x2463d8f0, 0x431023, 0x2c422710, 
 0x144000eb, 0x24020001, 0x100000e7, 0x0, 
-0x3c050001, 0x8ca53d18, 0xc004981, 0x2021, 
-0xc004a4c, 0x2021, 0x3c030001, 0x8c635f24, 
+0x3c050001, 0x8ca53e28, 0xc0049b1, 0x2021, 
+0xc004a7c, 0x2021, 0x3c030001, 0x8c636034, 
 0x46100dd, 0x24020001, 0x3c020008, 0x621024, 
 0x10400006, 0x0, 0x8f820214, 0x3c03ffff, 
 0x431024, 0x10000005, 0x3442251f, 0x8f820214, 
 0x3c03ffff, 0x431024, 0x3442241f, 0xaf820214, 
 0x8f820220, 0x3c030200, 0x283a025, 0x34420002, 
-0xaf820220, 0x24020008, 0xc003c6b, 0xaee204b8, 
+0xaf820220, 0x24020008, 0xc003c9e, 0xaee204b8, 
 0x100000c7, 0x0, 0x8ee204b8, 0x2443ffff, 
 0x2c620008, 0x104000c2, 0x31080, 0x3c010001, 
-0x220821, 0x8c223b38, 0x400008, 0x0, 
-0x3c020001, 0x8c425f28, 0x30424000, 0x10400004, 
+0x220821, 0x8c223c38, 0x400008, 0x0, 
+0x3c020001, 0x8c426038, 0x30424000, 0x10400004, 
 0x0, 0x8f820044, 0x10000006, 0x3442f080, 
 0x8f820044, 0x3c03ffff, 0x34633f7f, 0x431024, 
 0x3442a080, 0xaf820044, 0x8f830054, 0x1000005a, 
-0x24020004, 0xc003d2c, 0x0, 0x104000a6, 
+0x24020004, 0xc003d5c, 0x0, 0x104000a6, 
 0x24020001, 0x8f820214, 0x3c03ffff, 0x3c040001, 
-0x8c843e58, 0x431024, 0x3442251f, 0xaf820214, 
+0x8c843f68, 0x431024, 0x3442251f, 0xaf820214, 
 0x24020008, 0x10800005, 0xaee204b8, 0x3c020001, 
-0x8c423da4, 0x1040006d, 0x24020001, 0x8f820220, 
+0x8c423eb4, 0x1040006d, 0x24020001, 0x8f820220, 
 0x3c030008, 0x431024, 0x10400073, 0x3c020200, 
 0x10000081, 0x0, 0x8ee204b8, 0x2443ffff, 
 0x2c620007, 0x1040008e, 0x31080, 0x3c010001, 
-0x220821, 0x8c223b58, 0x400008, 0x0, 
-0xc003bad, 0x0, 0x3c010001, 0xac203d1c, 
-0xaf800204, 0x3c010001, 0xc0040e8, 0xac205f10, 
-0x24020001, 0x3c010001, 0xac223d30, 0x24020002, 
-0x1000007b, 0xaee204b8, 0xc004194, 0x0, 
-0x3c030001, 0x8c633d30, 0x24020009, 0x14620074, 
+0x220821, 0x8c223c58, 0x400008, 0x0, 
+0xc003be0, 0x0, 0x3c010001, 0xac203e2c, 
+0xaf800204, 0x3c010001, 0xc004118, 0xac206020, 
+0x24020001, 0x3c010001, 0xac223e40, 0x24020002, 
+0x1000007b, 0xaee204b8, 0xc0041c4, 0x0, 
+0x3c030001, 0x8c633e40, 0x24020009, 0x14620074, 
 0x24020003, 0x10000072, 0xaee204b8, 0x3c020001, 
-0x8c425f28, 0x30424000, 0x10400003, 0x3c0200c8, 
+0x8c426038, 0x30424000, 0x10400003, 0x3c0200c8, 
 0x10000002, 0x344201f6, 0x344201fe, 0xaf820238, 
 0x8f830054, 0x10000014, 0x24020004, 0x8f830054, 
-0x3c020001, 0x8c423e60, 0x2463d8f0, 0x431023, 
+0x3c020001, 0x8c423f70, 0x2463d8f0, 0x431023, 
 0x2c422710, 0x1440005e, 0x24020005, 0x1000005c, 
 0xaee204b8, 0x8f820220, 0x3c03f700, 0x431025, 
-0xaf820220, 0xaf800204, 0x3c010001, 0xac205f10, 
+0xaf820220, 0xaf800204, 0x3c010001, 0xac206020, 
 0x8f830054, 0x24020006, 0xaee204b8, 0x3c010001, 
-0x1000004f, 0xac233e60, 0x8f830054, 0x3c020001, 
-0x8c423e60, 0x2463fff6, 0x431023, 0x2c42000a, 
+0x1000004f, 0xac233f70, 0x8f830054, 0x3c020001, 
+0x8c423f70, 0x2463fff6, 0x431023, 0x2c42000a, 
 0x14400047, 0x0, 0x24020007, 0x10000044, 
-0xaee204b8, 0xc003d2c, 0x0, 0x1040003e, 
+0xaee204b8, 0xc003d5c, 0x0, 0x1040003e, 
 0x24020001, 0x8f820214, 0x3c03ffff, 0x3c040001, 
-0x8c843e58, 0x431024, 0x3442251f, 0xaf820214, 
+0x8c843f68, 0x431024, 0x3442251f, 0xaf820214, 
 0x24020008, 0x1080000f, 0xaee204b8, 0x3c020001, 
-0x8c423da4, 0x1440000b, 0x0, 0x8f820220, 
+0x8c423eb4, 0x1440000b, 0x0, 0x8f820220, 
 0x34420002, 0xaf820220, 0x24020001, 0x3c010001, 
-0xac225ec0, 0xc004610, 0x8f840220, 0x10000016, 
+0xac225fd0, 0xc004640, 0x8f840220, 0x10000016, 
 0x0, 0x8f820220, 0x3c030008, 0x431024, 
 0x14400011, 0x3c020200, 0x282a025, 0x2402000e, 
-0x3c010001, 0xac225ec0, 0xc004a4c, 0x2021, 
-0x8f820220, 0x34420002, 0xc003c6b, 0xaf820220, 
-0x3c050001, 0x8ca53d18, 0xc004981, 0x2021, 
-0x10000013, 0x0, 0x3c020001, 0x8c423da4, 
-0x1040000f, 0x0, 0x3c020001, 0x8c423da0, 
-0x2442ffff, 0x3c010001, 0xac223da0, 0x14400008, 
-0x24020002, 0x3c010001, 0xac203da4, 0x3c010001, 
-0x10000003, 0xac223da0, 0x3c010001, 0xac223d1c, 
+0x3c010001, 0xac225fd0, 0xc004a7c, 0x2021, 
+0x8f820220, 0x34420002, 0xc003c9e, 0xaf820220, 
+0x3c050001, 0x8ca53e28, 0xc0049b1, 0x2021, 
+0x10000013, 0x0, 0x3c020001, 0x8c423eb4, 
+0x1040000f, 0x0, 0x3c020001, 0x8c423eb0, 
+0x2442ffff, 0x3c010001, 0xac223eb0, 0x14400008, 
+0x24020002, 0x3c010001, 0xac203eb4, 0x3c010001, 
+0x10000003, 0xac223eb0, 0x3c010001, 0xac223e2c, 
 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x8f820200, 
 0x8f820220, 0x8f820220, 0x34420004, 0xaf820220, 
-0x8f820200, 0x3c040001, 0x8c843d18, 0x34420004, 
+0x8f820200, 0x3c040001, 0x8c843e28, 0x34420004, 
 0xaf820200, 0x24020002, 0x1082003a, 0x2c820003, 
 0x10400005, 0x24020001, 0x1082000a, 0x3c03f0ff, 
 0x10000098, 0x0, 0x24020004, 0x10820059, 
@@ -7607,300 +7620,300 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x0, 0x8f820050, 0x3463ffff, 0x3c05ffff, 
 0x34a53f7f, 0x431024, 0x3c030700, 0x431025, 
 0xaf820050, 0x24020e00, 0xaf840200, 0xaf840220, 
-0xaf820238, 0x8f820044, 0x3c030001, 0x8c633d08, 
-0x3c040001, 0x8c843e70, 0x451024, 0x34630022, 
+0xaf820238, 0x8f820044, 0x3c030001, 0x8c633e18, 
+0x3c040001, 0x8c843f80, 0x451024, 0x34630022, 
 0xaf820044, 0x24020004, 0x1082000c, 0xaf830200, 
-0x3c020001, 0x8c423d2c, 0x3c030001, 0x8c633d10, 
-0x3c040001, 0x8c843d0c, 0x34428000, 0x621825, 
+0x3c020001, 0x8c423e3c, 0x3c030001, 0x8c633e20, 
+0x3c040001, 0x8c843e1c, 0x34428000, 0x621825, 
 0x641825, 0x1000006e, 0x34620002, 0x3c020001, 
-0x8c423d10, 0x3c030001, 0x8c633d2c, 0x3c040001, 
-0x8c843d0c, 0x431025, 0x441025, 0x10000064, 
+0x8c423e20, 0x3c030001, 0x8c633e3c, 0x3c040001, 
+0x8c843e1c, 0x431025, 0x441025, 0x10000064, 
 0x34420002, 0x8f830050, 0x3c02f0ff, 0x3442ffff, 
-0x3c040001, 0x8c843e58, 0x621824, 0x3c020d00, 
+0x3c040001, 0x8c843f68, 0x621824, 0x3c020d00, 
 0x621825, 0x24020001, 0xaf830050, 0xaf820200, 
 0xaf820220, 0x24020e00, 0x10800009, 0xaf820238, 
-0x3c020001, 0x8c423da4, 0x14400005, 0x3c033f00, 
-0x3c020001, 0x8c423d00, 0x10000005, 0x34630070, 
-0x3c020001, 0x8c423d00, 0x3c033f00, 0x34630072, 
-0x431025, 0xaf820200, 0x3c030001, 0x8c633d04, 
-0x3c04f700, 0x3c020001, 0x8c423d10, 0x3c050001, 
-0x8ca53d2c, 0x641825, 0x431025, 0x1000003c, 
+0x3c020001, 0x8c423eb4, 0x14400005, 0x3c033f00, 
+0x3c020001, 0x8c423e10, 0x10000005, 0x34630070, 
+0x3c020001, 0x8c423e10, 0x3c033f00, 0x34630072, 
+0x431025, 0xaf820200, 0x3c030001, 0x8c633e14, 
+0x3c04f700, 0x3c020001, 0x8c423e20, 0x3c050001, 
+0x8ca53e3c, 0x641825, 0x431025, 0x1000003c, 
 0x451025, 0x8f830050, 0x3c02f0ff, 0x3442ffff, 
-0x3c040001, 0x8c843e58, 0x621824, 0x3c020a00, 
+0x3c040001, 0x8c843f68, 0x621824, 0x3c020a00, 
 0x621825, 0x24020001, 0xaf830050, 0xaf820200, 
-0x1080001e, 0xaf820220, 0x3c020001, 0x8c423da4, 
-0x1440001a, 0x3c033f00, 0x3c020001, 0x8c423d00, 
+0x1080001e, 0xaf820220, 0x3c020001, 0x8c423eb4, 
+0x1440001a, 0x3c033f00, 0x3c020001, 0x8c423e10, 
 0x1000001a, 0x346300e0, 0x8f830050, 0x3c040001, 
-0x8c843e58, 0x3442ffff, 0x621824, 0x1080000f, 
-0xaf830050, 0x3c020001, 0x8c423da4, 0x1440000b, 
-0x3c043f00, 0x3c030001, 0x8c633d00, 0x348400e0, 
+0x8c843f68, 0x3442ffff, 0x621824, 0x1080000f, 
+0xaf830050, 0x3c020001, 0x8c423eb4, 0x1440000b, 
+0x3c043f00, 0x3c030001, 0x8c633e10, 0x348400e0, 
 0x24020001, 0xaf820200, 0xaf820220, 0x641825, 
 0xaf830200, 0x10000008, 0x3c05f700, 0x3c020001, 
-0x8c423d00, 0x3c033f00, 0x346300e2, 0x431025, 
+0x8c423e10, 0x3c033f00, 0x346300e2, 0x431025, 
 0xaf820200, 0x3c05f700, 0x34a58000, 0x3c030001, 
-0x8c633d04, 0x3c020001, 0x8c423d10, 0x3c040001, 
-0x8c843d2c, 0x651825, 0x431025, 0x441025, 
+0x8c633e14, 0x3c020001, 0x8c423e20, 0x3c040001, 
+0x8c843e3c, 0x651825, 0x431025, 0x441025, 
 0xaf820220, 0x3e00008, 0x0, 0x3c030001, 
-0x8c633d30, 0x3c020001, 0x8c423d34, 0x10620003, 
-0x24020002, 0x3c010001, 0xac233d34, 0x1062001d, 
+0x8c633e40, 0x3c020001, 0x8c423e44, 0x10620003, 
+0x24020002, 0x3c010001, 0xac233e44, 0x1062001d, 
 0x2c620003, 0x10400025, 0x24020001, 0x14620023, 
-0x24020004, 0x3c030001, 0x8c633d18, 0x10620006, 
+0x24020004, 0x3c030001, 0x8c633e28, 0x10620006, 
 0x24020008, 0x1462000c, 0x3c0200c8, 0x344201fb, 
 0x10000009, 0xaf820238, 0x24020e01, 0xaf820238, 
 0x8f820044, 0x3c03ffff, 0x34633f7f, 0x431024, 
 0x34420080, 0xaf820044, 0x8f830054, 0x24020002, 
-0x3c010001, 0xac223d30, 0x3c010001, 0x1000000b, 
-0xac233e64, 0x8f830054, 0x3c020001, 0x8c423e64, 
+0x3c010001, 0xac223e40, 0x3c010001, 0x1000000b, 
+0xac233f74, 0x8f830054, 0x3c020001, 0x8c423f74, 
 0x2463d8f0, 0x431023, 0x2c422710, 0x14400003, 
-0x24020009, 0x3c010001, 0xac223d30, 0x3e00008, 
+0x24020009, 0x3c010001, 0xac223e40, 0x3e00008, 
 0x0, 0x0, 0x0, 0x27bdffd8, 
 0xafb20018, 0x809021, 0xafb3001c, 0xa09821, 
 0xafb10014, 0xc08821, 0xafb00010, 0x8021, 
-0xafbf0020, 0xa6200000, 0xc0045c7, 0x24040001, 
+0xafbf0020, 0xa6200000, 0xc0045f7, 0x24040001, 
 0x26100001, 0x2e020020, 0x1440fffb, 0x0, 
-0xc0045c7, 0x2021, 0xc0045c7, 0x24040001, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x2021, 0xc0045f7, 0x24040001, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x24100010, 0x2501024, 0x10400002, 0x2021, 
-0x24040001, 0xc0045c7, 0x108042, 0x1600fffa, 
+0x24040001, 0xc0045f7, 0x108042, 0x1600fffa, 
 0x2501024, 0x24100010, 0x2701024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fffa, 0x2701024, 0xc0045ed, 0x34108000, 
-0xc0045ed, 0x0, 0xc0045a7, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fffa, 0x2701024, 0xc00461d, 0x34108000, 
+0xc00461d, 0x0, 0xc0045d7, 0x0, 
 0x50400005, 0x108042, 0x96220000, 0x501025, 
 0xa6220000, 0x108042, 0x1600fff7, 0x0, 
-0xc0045ed, 0x0, 0x8fbf0020, 0x8fb3001c, 
+0xc00461d, 0x0, 0x8fbf0020, 0x8fb3001c, 
 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 
 0x27bd0028, 0x27bdffd8, 0xafb10014, 0x808821, 
 0xafb20018, 0xa09021, 0xafb3001c, 0xc09821, 
-0xafb00010, 0x8021, 0xafbf0020, 0xc0045c7, 
+0xafb00010, 0x8021, 0xafbf0020, 0xc0045f7, 
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc0045c7, 0x2021, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0xc0045c7, 
+0x0, 0xc0045f7, 0x2021, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0xc0045f7, 
 0x24040001, 0x24100010, 0x2301024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
 0x1600fffa, 0x2301024, 0x24100010, 0x2501024, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
-0x108042, 0x1600fffa, 0x2501024, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0x34108000, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
+0x108042, 0x1600fffa, 0x2501024, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0x34108000, 
 0x96620000, 0x501024, 0x10400002, 0x2021, 
-0x24040001, 0xc0045c7, 0x108042, 0x1600fff8, 
-0x0, 0xc0045ed, 0x0, 0x8fbf0020, 
+0x24040001, 0xc0045f7, 0x108042, 0x1600fff8, 
+0x0, 0xc00461d, 0x0, 0x8fbf0020, 
 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 
-0x3e00008, 0x27bd0028, 0x3c030001, 0x8c633d40, 
-0x3c020001, 0x8c423d84, 0x27bdffd8, 0xafbf0020, 
+0x3e00008, 0x27bd0028, 0x3c030001, 0x8c633e50, 
+0x3c020001, 0x8c423e94, 0x27bdffd8, 0xafbf0020, 
 0xafb1001c, 0x10620003, 0xafb00018, 0x3c010001, 
-0xac233d84, 0x2463ffff, 0x2c620013, 0x10400349, 
-0x31080, 0x3c010001, 0x220821, 0x8c223b80, 
-0x400008, 0x0, 0xc0045ed, 0x8021, 
-0x34028000, 0xa7a20010, 0x27b10010, 0xc0045c7, 
+0xac233e94, 0x2463ffff, 0x2c620013, 0x10400349, 
+0x31080, 0x3c010001, 0x220821, 0x8c223c80, 
+0x400008, 0x0, 0xc00461d, 0x8021, 
+0x34028000, 0xa7a20010, 0x27b10010, 0xc0045f7, 
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc0045c7, 0x2021, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0xc0045c7, 
+0x0, 0xc0045f7, 0x2021, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0xc0045f7, 
 0x24040001, 0x24100010, 0x32020001, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fffa, 0x32020001, 0x24100010, 0xc0045c7, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fffa, 0x32020001, 0x24100010, 0xc0045f7, 
 0x2021, 0x108042, 0x1600fffc, 0x0, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fff8, 0x0, 0xc0045ed, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fff8, 0x0, 0xc00461d, 0x0, 
 0x1000030e, 0x24020002, 0x27b10010, 0xa7a00010, 
-0x8021, 0xc0045c7, 0x24040001, 0x26100001, 
-0x2e020020, 0x1440fffb, 0x0, 0xc0045c7, 
-0x2021, 0xc0045c7, 0x24040001, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0x24100010, 
+0x8021, 0xc0045f7, 0x24040001, 0x26100001, 
+0x2e020020, 0x1440fffb, 0x0, 0xc0045f7, 
+0x2021, 0xc0045f7, 0x24040001, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0x24100010, 
 0x32020001, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020001, 
-0x24100010, 0xc0045c7, 0x2021, 0x108042, 
-0x1600fffc, 0x0, 0xc0045ed, 0x34108000, 
-0xc0045ed, 0x0, 0xc0045a7, 0x0, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020001, 
+0x24100010, 0xc0045f7, 0x2021, 0x108042, 
+0x1600fffc, 0x0, 0xc00461d, 0x34108000, 
+0xc00461d, 0x0, 0xc0045d7, 0x0, 
 0x50400005, 0x108042, 0x96220000, 0x501025, 
 0xa6220000, 0x108042, 0x1600fff7, 0x0, 
-0xc0045ed, 0x0, 0x97a20010, 0x30428000, 
+0xc00461d, 0x0, 0x97a20010, 0x30428000, 
 0x144002dc, 0x24020003, 0x100002d8, 0x0, 
 0x24021200, 0xa7a20010, 0x27b10010, 0x8021, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
-0xc0045c7, 0x2021, 0x108042, 0x1600fffc, 
-0x0, 0xc0045c7, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x2021, 0x108042, 0x1600fffc, 
+0x0, 0xc0045f7, 0x24040001, 0xc0045f7, 
 0x2021, 0x34108000, 0x96220000, 0x501024, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
-0x108042, 0x1600fff8, 0x0, 0xc0045ed, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
+0x108042, 0x1600fff8, 0x0, 0xc00461d, 
 0x0, 0x8f830054, 0x10000296, 0x24020004, 
-0x8f830054, 0x3c020001, 0x8c423e6c, 0x2463ff9c, 
+0x8f830054, 0x3c020001, 0x8c423f7c, 0x2463ff9c, 
 0x431023, 0x2c420064, 0x1440029e, 0x24020002, 
-0x3c030001, 0x8c633e70, 0x10620297, 0x2c620003, 
+0x3c030001, 0x8c633f80, 0x10620297, 0x2c620003, 
 0x14400296, 0x24020011, 0x24020003, 0x10620005, 
 0x24020004, 0x10620291, 0x2402000f, 0x1000028f, 
 0x24020011, 0x1000028d, 0x24020005, 0x24020014, 
-0xa7a20010, 0x27b10010, 0x8021, 0xc0045c7, 
+0xa7a20010, 0x27b10010, 0x8021, 0xc0045f7, 
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc0045c7, 0x2021, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0xc0045c7, 
+0x0, 0xc0045f7, 0x2021, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0xc0045f7, 
 0x24040001, 0x24100010, 0x32020001, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
 0x1600fffa, 0x32020001, 0x24100010, 0x32020012, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
-0x108042, 0x1600fffa, 0x32020012, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0x34108000, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
+0x108042, 0x1600fffa, 0x32020012, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0x34108000, 
 0x96220000, 0x501024, 0x10400002, 0x2021, 
-0x24040001, 0xc0045c7, 0x108042, 0x1600fff8, 
-0x0, 0xc0045ed, 0x0, 0x8f830054, 
+0x24040001, 0xc0045f7, 0x108042, 0x1600fff8, 
+0x0, 0xc00461d, 0x0, 0x8f830054, 
 0x10000248, 0x24020006, 0x8f830054, 0x3c020001, 
-0x8c423e6c, 0x2463ff9c, 0x431023, 0x2c420064, 
+0x8c423f7c, 0x2463ff9c, 0x431023, 0x2c420064, 
 0x14400250, 0x24020007, 0x1000024c, 0x0, 
 0x24020006, 0xa7a20010, 0x27b10010, 0x8021, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020013, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020013, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020013, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fff8, 0x0, 0xc0045ed, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fff8, 0x0, 0xc00461d, 0x0, 
 0x8f830054, 0x10000207, 0x24020008, 0x8f830054, 
-0x3c020001, 0x8c423e6c, 0x2463ff9c, 0x431023, 
+0x3c020001, 0x8c423f7c, 0x2463ff9c, 0x431023, 
 0x2c420064, 0x1440020f, 0x24020009, 0x1000020b, 
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x24040001, 
-0xc0045c7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x24040001, 
+0xc0045f7, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc0045ed, 0x34108000, 0xc0045ed, 0x0, 
-0xc0045a7, 0x0, 0x50400005, 0x108042, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020018, 
+0xc00461d, 0x34108000, 0xc00461d, 0x0, 
+0xc0045d7, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc0045ed, 0x8021, 
+0x1600fff7, 0x0, 0xc00461d, 0x8021, 
 0x97a20010, 0x27b10010, 0x34420001, 0xa7a20010, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020018, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fff8, 0x0, 0xc0045ed, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fff8, 0x0, 0xc00461d, 0x0, 
 0x8f830054, 0x10000193, 0x2402000a, 0x8f830054, 
-0x3c020001, 0x8c423e6c, 0x2463ff9c, 0x431023, 
+0x3c020001, 0x8c423f7c, 0x2463ff9c, 0x431023, 
 0x2c420064, 0x1440019b, 0x2402000b, 0x10000197, 
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x24040001, 
-0xc0045c7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x24040001, 
+0xc0045f7, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020017, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020017, 
-0xc0045ed, 0x34108000, 0xc0045ed, 0x0, 
-0xc0045a7, 0x0, 0x50400005, 0x108042, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020017, 
+0xc00461d, 0x34108000, 0xc00461d, 0x0, 
+0xc0045d7, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc0045ed, 0x8021, 
+0x1600fff7, 0x0, 0xc00461d, 0x8021, 
 0x97a20010, 0x27b10010, 0x34420700, 0xa7a20010, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020017, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020017, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020017, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fff8, 0x0, 0xc0045ed, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fff8, 0x0, 0xc00461d, 0x0, 
 0x8f830054, 0x1000011f, 0x2402000c, 0x8f830054, 
-0x3c020001, 0x8c423e6c, 0x2463ff9c, 0x431023, 
+0x3c020001, 0x8c423f7c, 0x2463ff9c, 0x431023, 
 0x2c420064, 0x14400127, 0x24020012, 0x10000123, 
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x24040001, 
-0xc0045c7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x24040001, 
+0xc0045f7, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020014, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020014, 
-0xc0045ed, 0x34108000, 0xc0045ed, 0x0, 
-0xc0045a7, 0x0, 0x50400005, 0x108042, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020014, 
+0xc00461d, 0x34108000, 0xc00461d, 0x0, 
+0xc0045d7, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc0045ed, 0x8021, 
+0x1600fff7, 0x0, 0xc00461d, 0x8021, 
 0x97a20010, 0x27b10010, 0x34420010, 0xa7a20010, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020014, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020014, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020014, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fff8, 0x0, 0xc0045ed, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fff8, 0x0, 0xc00461d, 0x0, 
 0x8f830054, 0x100000ab, 0x24020013, 0x8f830054, 
-0x3c020001, 0x8c423e6c, 0x2463ff9c, 0x431023, 
+0x3c020001, 0x8c423f7c, 0x2463ff9c, 0x431023, 
 0x2c420064, 0x144000b3, 0x2402000d, 0x100000af, 
 0x0, 0x27b10010, 0xa7a00010, 0x8021, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x24040001, 
-0xc0045c7, 0x2021, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x24040001, 
+0xc0045f7, 0x2021, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc0045ed, 0x34108000, 0xc0045ed, 0x0, 
-0xc0045a7, 0x0, 0x50400005, 0x108042, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020018, 
+0xc00461d, 0x34108000, 0xc00461d, 0x0, 
+0xc0045d7, 0x0, 0x50400005, 0x108042, 
 0x96220000, 0x501025, 0xa6220000, 0x108042, 
-0x1600fff7, 0x0, 0xc0045ed, 0x8021, 
+0x1600fff7, 0x0, 0xc00461d, 0x8021, 
 0x97a20010, 0x27b10010, 0x3042fffe, 0xa7a20010, 
-0xc0045c7, 0x24040001, 0x26100001, 0x2e020020, 
-0x1440fffb, 0x0, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
-0xc0045c7, 0x24040001, 0x24100010, 0x32020001, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
+0xc0045f7, 0x24040001, 0x26100001, 0x2e020020, 
+0x1440fffb, 0x0, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
+0xc0045f7, 0x24040001, 0x24100010, 0x32020001, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
 0x108042, 0x1600fffa, 0x32020001, 0x24100010, 
 0x32020018, 0x10400002, 0x2021, 0x24040001, 
-0xc0045c7, 0x108042, 0x1600fffa, 0x32020018, 
-0xc0045c7, 0x24040001, 0xc0045c7, 0x2021, 
+0xc0045f7, 0x108042, 0x1600fffa, 0x32020018, 
+0xc0045f7, 0x24040001, 0xc0045f7, 0x2021, 
 0x34108000, 0x96220000, 0x501024, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
-0x1600fff8, 0x0, 0xc0045ed, 0x0, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
+0x1600fff8, 0x0, 0xc00461d, 0x0, 
 0x8f830054, 0x10000037, 0x2402000e, 0x24020840, 
-0xa7a20010, 0x27b10010, 0x8021, 0xc0045c7, 
+0xa7a20010, 0x27b10010, 0x8021, 0xc0045f7, 
 0x24040001, 0x26100001, 0x2e020020, 0x1440fffb, 
-0x0, 0xc0045c7, 0x2021, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0xc0045c7, 
+0x0, 0xc0045f7, 0x2021, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0xc0045f7, 
 0x24040001, 0x24100010, 0x32020001, 0x10400002, 
-0x2021, 0x24040001, 0xc0045c7, 0x108042, 
+0x2021, 0x24040001, 0xc0045f7, 0x108042, 
 0x1600fffa, 0x32020001, 0x24100010, 0x32020013, 
-0x10400002, 0x2021, 0x24040001, 0xc0045c7, 
-0x108042, 0x1600fffa, 0x32020013, 0xc0045c7, 
-0x24040001, 0xc0045c7, 0x2021, 0x34108000, 
+0x10400002, 0x2021, 0x24040001, 0xc0045f7, 
+0x108042, 0x1600fffa, 0x32020013, 0xc0045f7, 
+0x24040001, 0xc0045f7, 0x2021, 0x34108000, 
 0x96220000, 0x501024, 0x10400002, 0x2021, 
-0x24040001, 0xc0045c7, 0x108042, 0x1600fff8, 
-0x0, 0xc0045ed, 0x0, 0x8f830054, 
-0x24020010, 0x3c010001, 0xac223d40, 0x3c010001, 
-0x1000000c, 0xac233e6c, 0x8f830054, 0x3c020001, 
-0x8c423e6c, 0x2463ff9c, 0x431023, 0x2c420064, 
+0x24040001, 0xc0045f7, 0x108042, 0x1600fff8, 
+0x0, 0xc00461d, 0x0, 0x8f830054, 
+0x24020010, 0x3c010001, 0xac223e50, 0x3c010001, 
+0x1000000c, 0xac233f7c, 0x8f830054, 0x3c020001, 
+0x8c423f7c, 0x2463ff9c, 0x431023, 0x2c420064, 
 0x14400004, 0x0, 0x24020011, 0x3c010001, 
-0xac223d40, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 
+0xac223e50, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 
 0x3e00008, 0x27bd0028, 0x8f850044, 0x8f820044, 
 0x3c030001, 0x431025, 0x3c030008, 0xaf820044, 
 0x8f840054, 0x8f820054, 0xa32824, 0x10000002, 
@@ -7929,136 +7942,136 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x621023, 0x2c420002, 0x1440fffc, 0x0, 
 0x3e00008, 0x0, 0x0, 0x27bdffe8, 
 0xafbf0010, 0x8ee304b8, 0x24020008, 0x146201e0, 
-0x0, 0x3c020001, 0x8c423e58, 0x14400005, 
-0x0, 0xc003bad, 0x8f840224, 0x100001d8, 
+0x0, 0x3c020001, 0x8c423f68, 0x14400005, 
+0x0, 0xc003be0, 0x8f840224, 0x100001d8, 
 0x0, 0x8f820220, 0x3c030008, 0x431024, 
 0x10400026, 0x24020001, 0x8f840224, 0x8f820220, 
 0x3c030400, 0x431024, 0x10400006, 0x0, 
-0x3c010001, 0xac205ed0, 0x3c010001, 0x1000000b, 
-0xac205ef0, 0x3c030001, 0x24635ed0, 0x8c620000, 
+0x3c010001, 0xac205fe0, 0x3c010001, 0x1000000b, 
+0xac206000, 0x3c030001, 0x24635fe0, 0x8c620000, 
 0x24420001, 0xac620000, 0x2c420002, 0x14400003, 
-0x24020001, 0x3c010001, 0xac225ef0, 0x3c020001, 
-0x8c425ef0, 0x10400006, 0x30820040, 0x10400004, 
-0x24020001, 0x3c010001, 0x10000003, 0xac225ef4, 
-0x3c010001, 0xac205ef4, 0x3c010001, 0xac245ecc, 
-0x3c010001, 0x1000000b, 0xac205f00, 0x3c010001, 
-0xac225f00, 0x3c010001, 0xac205ef0, 0x3c010001, 
-0xac205ed0, 0x3c010001, 0xac205ef4, 0x3c010001, 
-0xac205ecc, 0x3c030001, 0x8c635ec0, 0x3c020001, 
-0x8c425ec4, 0x50620004, 0x2463ffff, 0x3c010001, 
-0xac235ec4, 0x2463ffff, 0x2c62000e, 0x10400194, 
-0x31080, 0x3c010001, 0x220821, 0x8c223bd0, 
+0x24020001, 0x3c010001, 0xac226000, 0x3c020001, 
+0x8c426000, 0x10400006, 0x30820040, 0x10400004, 
+0x24020001, 0x3c010001, 0x10000003, 0xac226004, 
+0x3c010001, 0xac206004, 0x3c010001, 0xac245fdc, 
+0x3c010001, 0x1000000b, 0xac206010, 0x3c010001, 
+0xac226010, 0x3c010001, 0xac206000, 0x3c010001, 
+0xac205fe0, 0x3c010001, 0xac206004, 0x3c010001, 
+0xac205fdc, 0x3c030001, 0x8c635fd0, 0x3c020001, 
+0x8c425fd4, 0x50620004, 0x2463ffff, 0x3c010001, 
+0xac235fd4, 0x2463ffff, 0x2c62000e, 0x10400194, 
+0x31080, 0x3c010001, 0x220821, 0x8c223cd0, 
 0x400008, 0x0, 0x24020002, 0x3c010001, 
-0xac205ef0, 0x3c010001, 0xac205ed0, 0x3c010001, 
-0xac205ecc, 0x3c010001, 0xac205ef4, 0x3c010001, 
-0xac205ee8, 0x3c010001, 0xac205ee0, 0xaf800224, 
-0x3c010001, 0xac225ec0, 0x3c020001, 0x8c425f00, 
-0x1440004f, 0x3c02fdff, 0x3442ffff, 0xc003bad
+0xac206000, 0x3c010001, 0xac205fe0, 0x3c010001, 
+0xac205fdc, 0x3c010001, 0xac206004, 0x3c010001, 
+0xac205ff8, 0x3c010001, 0xac205ff0, 0xaf800224, 
+0x3c010001, 0xac225fd0, 0x3c020001, 0x8c426010, 
+0x1440004f, 0x3c02fdff, 0x3442ffff, 0xc003be0
 0x282a024, 0xaf800204, 0x8f820200, 0x2403fffd, 
-0x431024, 0xaf820200, 0x3c010001, 0xac205f10, 
-0x8f830054, 0x3c020001, 0x8c425ee8, 0x24040001, 
-0x3c010001, 0xac245efc, 0x24420001, 0x3c010001, 
-0xac225ee8, 0x2c420004, 0x3c010001, 0xac235ee4, 
-0x14400006, 0x24020003, 0x3c010001, 0xac243d1c, 
-0x3c010001, 0x1000015e, 0xac205ee8, 0x3c010001, 
-0x1000015b, 0xac225ec0, 0x8f830054, 0x3c020001, 
-0x8c425ee4, 0x2463d8f0, 0x431023, 0x2c422710, 
-0x14400003, 0x24020004, 0x3c010001, 0xac225ec0, 
-0x3c020001, 0x8c425f00, 0x14400021, 0x3c02fdff, 
+0x431024, 0xaf820200, 0x3c010001, 0xac206020, 
+0x8f830054, 0x3c020001, 0x8c425ff8, 0x24040001, 
+0x3c010001, 0xac24600c, 0x24420001, 0x3c010001, 
+0xac225ff8, 0x2c420004, 0x3c010001, 0xac235ff4, 
+0x14400006, 0x24020003, 0x3c010001, 0xac243e2c, 
+0x3c010001, 0x1000015e, 0xac205ff8, 0x3c010001, 
+0x1000015b, 0xac225fd0, 0x8f830054, 0x3c020001, 
+0x8c425ff4, 0x2463d8f0, 0x431023, 0x2c422710, 
+0x14400003, 0x24020004, 0x3c010001, 0xac225fd0, 
+0x3c020001, 0x8c426010, 0x14400021, 0x3c02fdff, 
 0x3442ffff, 0x1000014a, 0x282a024, 0x3c040001, 
-0x8c843e5c, 0x3c010001, 0xc0047f8, 0xac205ed8, 
-0x3c020001, 0x8c425f0c, 0xaf820204, 0x3c020001, 
-0x8c425f00, 0x14400012, 0x3c03fdff, 0x8f820204, 
+0x8c843f6c, 0x3c010001, 0xc004828, 0xac205fe8, 
+0x3c020001, 0x8c42601c, 0xaf820204, 0x3c020001, 
+0x8c426010, 0x14400012, 0x3c03fdff, 0x8f820204, 
 0x3463ffff, 0x30420030, 0x1440012f, 0x283a024, 
-0x3c030001, 0x8c635f0c, 0x24020005, 0x3c010001, 
-0xac225ec0, 0x3c010001, 0x10000131, 0xac235f10, 
-0x3c020001, 0x8c425f00, 0x10400010, 0x3c02fdff, 
-0x3c020001, 0x8c423d9c, 0x24420001, 0x3c010001, 
-0xac223d9c, 0x2c420002, 0x14400125, 0x24020001, 
-0x3c010001, 0xac223da4, 0x3c010001, 0xac203d9c, 
-0x3c010001, 0x1000011e, 0xac223d1c, 0x3c030001, 
-0x8c635ef0, 0x3442ffff, 0x10600119, 0x282a024, 
-0x3c020001, 0x8c425ecc, 0x10400115, 0x0, 
-0x3c010001, 0xac225ef8, 0x24020003, 0x3c010001, 
-0xac225ed0, 0x100000b8, 0x24020006, 0x3c010001, 
-0xac205ed8, 0x8f820204, 0x34420040, 0xaf820204, 
-0x3c020001, 0x8c425f10, 0x24030007, 0x3c010001, 
-0xac235ec0, 0x34420040, 0x3c010001, 0xac225f10, 
-0x3c020001, 0x8c425ef0, 0x10400005, 0x0, 
-0x3c020001, 0x8c425ecc, 0x104000f0, 0x24020002, 
-0x3c050001, 0x24a55ed0, 0x8ca20000, 0x2c424e21, 
-0x104000ea, 0x24020002, 0x3c020001, 0x8c425ef4, 
-0x104000ef, 0x2404ffbf, 0x3c020001, 0x8c425ecc, 
-0x3c030001, 0x8c635ef8, 0x441024, 0x641824, 
+0x3c030001, 0x8c63601c, 0x24020005, 0x3c010001, 
+0xac225fd0, 0x3c010001, 0x10000131, 0xac236020, 
+0x3c020001, 0x8c426010, 0x10400010, 0x3c02fdff, 
+0x3c020001, 0x8c423eac, 0x24420001, 0x3c010001, 
+0xac223eac, 0x2c420002, 0x14400125, 0x24020001, 
+0x3c010001, 0xac223eb4, 0x3c010001, 0xac203eac, 
+0x3c010001, 0x1000011e, 0xac223e2c, 0x3c030001, 
+0x8c636000, 0x3442ffff, 0x10600119, 0x282a024, 
+0x3c020001, 0x8c425fdc, 0x10400115, 0x0, 
+0x3c010001, 0xac226008, 0x24020003, 0x3c010001, 
+0xac225fe0, 0x100000b8, 0x24020006, 0x3c010001, 
+0xac205fe8, 0x8f820204, 0x34420040, 0xaf820204, 
+0x3c020001, 0x8c426020, 0x24030007, 0x3c010001, 
+0xac235fd0, 0x34420040, 0x3c010001, 0xac226020, 
+0x3c020001, 0x8c426000, 0x10400005, 0x0, 
+0x3c020001, 0x8c425fdc, 0x104000f0, 0x24020002, 
+0x3c050001, 0x24a55fe0, 0x8ca20000, 0x2c424e21, 
+0x104000ea, 0x24020002, 0x3c020001, 0x8c426004, 
+0x104000ef, 0x2404ffbf, 0x3c020001, 0x8c425fdc, 
+0x3c030001, 0x8c636008, 0x441024, 0x641824, 
 0x10430004, 0x24020001, 0x3c010001, 0x100000e4, 
-0xac225ec0, 0x24020003, 0xaca20000, 0x24020008, 
-0x3c010001, 0xac225ec0, 0x3c020001, 0x8c425efc, 
-0x1040000c, 0x24020001, 0x3c040001, 0xc004805, 
-0x8c845ecc, 0x3c020001, 0x8c425f18, 0x14400005, 
-0x24020001, 0x3c020001, 0x8c425f14, 0x10400006, 
-0x24020001, 0x3c010001, 0xac223d1c, 0x3c010001, 
-0x100000cb, 0xac205ee8, 0x3c020001, 0x8c425ee0, 
-0x3c030001, 0x8c635ecc, 0x2c420001, 0x210c0, 
-0x30630008, 0x3c010001, 0xac225ee0, 0x3c010001, 
-0xac235edc, 0x8f830054, 0x24020009, 0x3c010001, 
-0xac225ec0, 0x3c010001, 0x100000b9, 0xac235ee4, 
-0x8f830054, 0x3c020001, 0x8c425ee4, 0x2463d8f0, 
+0xac225fd0, 0x24020003, 0xaca20000, 0x24020008, 
+0x3c010001, 0xac225fd0, 0x3c020001, 0x8c42600c, 
+0x1040000c, 0x24020001, 0x3c040001, 0xc004835, 
+0x8c845fdc, 0x3c020001, 0x8c426028, 0x14400005, 
+0x24020001, 0x3c020001, 0x8c426024, 0x10400006, 
+0x24020001, 0x3c010001, 0xac223e2c, 0x3c010001, 
+0x100000cb, 0xac205ff8, 0x3c020001, 0x8c425ff0, 
+0x3c030001, 0x8c635fdc, 0x2c420001, 0x210c0, 
+0x30630008, 0x3c010001, 0xac225ff0, 0x3c010001, 
+0xac235fec, 0x8f830054, 0x24020009, 0x3c010001, 
+0xac225fd0, 0x3c010001, 0x100000b9, 0xac235ff4, 
+0x8f830054, 0x3c020001, 0x8c425ff4, 0x2463d8f0, 
 0x431023, 0x2c422710, 0x1440009f, 0x0, 
-0x3c020001, 0x8c425ef0, 0x10400005, 0x0, 
-0x3c020001, 0x8c425ecc, 0x104000a0, 0x24020002, 
-0x3c030001, 0x24635ed0, 0x8c620000, 0x2c424e21, 
-0x1040009a, 0x24020002, 0x3c020001, 0x8c425efc, 
-0x1040000e, 0x0, 0x3c020001, 0x8c425ecc, 
-0x3c010001, 0xac205efc, 0x30420080, 0x1040002f, 
+0x3c020001, 0x8c426000, 0x10400005, 0x0, 
+0x3c020001, 0x8c425fdc, 0x104000a0, 0x24020002, 
+0x3c030001, 0x24635fe0, 0x8c620000, 0x2c424e21, 
+0x1040009a, 0x24020002, 0x3c020001, 0x8c42600c, 
+0x1040000e, 0x0, 0x3c020001, 0x8c425fdc, 
+0x3c010001, 0xac20600c, 0x30420080, 0x1040002f, 
 0x2402000c, 0x8f820204, 0x30420080, 0x1440000c, 
 0x24020003, 0x10000029, 0x2402000c, 0x3c020001, 
-0x8c425ecc, 0x30420080, 0x14400005, 0x24020003, 
+0x8c425fdc, 0x30420080, 0x14400005, 0x24020003, 
 0x8f820204, 0x30420080, 0x1040001f, 0x24020003, 
-0xac620000, 0x2402000a, 0x3c010001, 0xac225ec0, 
-0x3c040001, 0x24845f08, 0x8c820000, 0x3c030001, 
-0x8c635ee0, 0x431025, 0xaf820204, 0x8c830000, 
-0x3c040001, 0x8c845ee0, 0x2402000b, 0x3c010001, 
-0xac225ec0, 0x641825, 0x3c010001, 0xac235f10, 
-0x3c050001, 0x24a55ed0, 0x8ca20000, 0x2c424e21, 
-0x10400066, 0x24020002, 0x3c020001, 0x8c425f00, 
+0xac620000, 0x2402000a, 0x3c010001, 0xac225fd0, 
+0x3c040001, 0x24846018, 0x8c820000, 0x3c030001, 
+0x8c635ff0, 0x431025, 0xaf820204, 0x8c830000, 
+0x3c040001, 0x8c845ff0, 0x2402000b, 0x3c010001, 
+0xac225fd0, 0x641825, 0x3c010001, 0xac236020, 
+0x3c050001, 0x24a55fe0, 0x8ca20000, 0x2c424e21, 
+0x10400066, 0x24020002, 0x3c020001, 0x8c426010, 
 0x10400005, 0x0, 0x2402000c, 0x3c010001, 
-0x10000067, 0xac225ec0, 0x3c020001, 0x8c425ef0, 
-0x10400063, 0x0, 0x3c040001, 0x8c845ecc, 
-0x10800055, 0x30820008, 0x3c030001, 0x8c635edc, 
-0x1062005b, 0x24020003, 0x3c010001, 0xac245ef8, 
+0x10000067, 0xac225fd0, 0x3c020001, 0x8c426000, 
+0x10400063, 0x0, 0x3c040001, 0x8c845fdc, 
+0x10800055, 0x30820008, 0x3c030001, 0x8c635fec, 
+0x1062005b, 0x24020003, 0x3c010001, 0xac246008, 
 0xaca20000, 0x24020006, 0x3c010001, 0x10000054, 
-0xac225ec0, 0x8f820200, 0x34420002, 0xaf820200, 
-0x8f830054, 0x2402000d, 0x3c010001, 0xac225ec0, 
-0x3c010001, 0xac235ee4, 0x8f830054, 0x3c020001, 
-0x8c425ee4, 0x2463d8f0, 0x431023, 0x2c422710, 
-0x14400031, 0x0, 0x3c020001, 0x8c425f00, 
-0x10400020, 0x2402000e, 0x3c030001, 0x8c635f14, 
-0x3c010001, 0x14600015, 0xac225ec0, 0xc003c6b
-0x0, 0x3c050001, 0x8ca53d18, 0xc004981, 
-0x2021, 0x3c030001, 0x8c633d18, 0x24020004, 
-0x14620005, 0x2403fffb, 0x3c020001, 0x8c423d14, 
-0x10000003, 0x2403fff7, 0x3c020001, 0x8c423d14, 
-0x431024, 0x3c010001, 0xac223d14, 0x8f830224, 
-0x3c020200, 0x3c010001, 0xac235f1c, 0x10000020, 
-0x282a025, 0x3c020001, 0x8c425ef0, 0x10400005, 
-0x0, 0x3c020001, 0x8c425ecc, 0x1040000f, 
-0x24020002, 0x3c020001, 0x8c425ed0, 0x2c424e21, 
-0x1040000a, 0x24020002, 0x3c020001, 0x8c425ef0, 
-0x1040000f, 0x0, 0x3c020001, 0x8c425ecc, 
+0xac225fd0, 0x8f820200, 0x34420002, 0xaf820200, 
+0x8f830054, 0x2402000d, 0x3c010001, 0xac225fd0, 
+0x3c010001, 0xac235ff4, 0x8f830054, 0x3c020001, 
+0x8c425ff4, 0x2463d8f0, 0x431023, 0x2c422710, 
+0x14400031, 0x0, 0x3c020001, 0x8c426010, 
+0x10400020, 0x2402000e, 0x3c030001, 0x8c636024, 
+0x3c010001, 0x14600015, 0xac225fd0, 0xc003c9e
+0x0, 0x3c050001, 0x8ca53e28, 0xc0049b1, 
+0x2021, 0x3c030001, 0x8c633e28, 0x24020004, 
+0x14620005, 0x2403fffb, 0x3c020001, 0x8c423e24, 
+0x10000003, 0x2403fff7, 0x3c020001, 0x8c423e24, 
+0x431024, 0x3c010001, 0xac223e24, 0x8f830224, 
+0x3c020200, 0x3c010001, 0xac23602c, 0x10000020, 
+0x282a025, 0x3c020001, 0x8c426000, 0x10400005, 
+0x0, 0x3c020001, 0x8c425fdc, 0x1040000f, 
+0x24020002, 0x3c020001, 0x8c425fe0, 0x2c424e21, 
+0x1040000a, 0x24020002, 0x3c020001, 0x8c426000, 
+0x1040000f, 0x0, 0x3c020001, 0x8c425fdc, 
 0x1440000b, 0x0, 0x24020002, 0x3c010001, 
-0x10000007, 0xac225ec0, 0x3c020001, 0x8c425ef0, 
-0x10400003, 0x0, 0xc003bad, 0x0, 
+0x10000007, 0xac225fd0, 0x3c020001, 0x8c426000, 
+0x10400003, 0x0, 0xc003be0, 0x0, 
 0x8f820220, 0x3c03f700, 0x431025, 0xaf820220, 
 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x3c030001, 
-0x24635f18, 0x8c620000, 0x10400005, 0x34422000, 
-0x3c010001, 0xac225f0c, 0x10000003, 0xac600000, 
-0x3c010001, 0xac245f0c, 0x3e00008, 0x0, 
+0x24636028, 0x8c620000, 0x10400005, 0x34422000, 
+0x3c010001, 0xac22601c, 0x10000003, 0xac600000, 
+0x3c010001, 0xac24601c, 0x3e00008, 0x0, 
 0x27bdffe0, 0x30820030, 0xafbf0018, 0x3c010001, 
-0xac225f14, 0x14400067, 0x3c02ffff, 0x34421f0e, 
+0xac226024, 0x14400067, 0x3c02ffff, 0x34421f0e, 
 0x821024, 0x14400061, 0x24020030, 0x30822000, 
 0x1040005d, 0x30838000, 0x31a02, 0x30820001, 
-0x21200, 0x3c040001, 0x8c843e5c, 0x621825, 
-0x331c2, 0x3c030001, 0x24633da8, 0x30828000, 
+0x21200, 0x3c040001, 0x8c843f6c, 0x621825, 
+0x331c2, 0x3c030001, 0x24633eb8, 0x30828000, 
 0x21202, 0x30840001, 0x42200, 0x441025, 
 0x239c2, 0x61080, 0x431021, 0x471021, 
 0x90430000, 0x24020001, 0x10620025, 0x0, 
@@ -8066,86 +8079,86 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x1062002c, 0x3c05000f, 0x10000037, 0x0, 
 0x8f820200, 0x2403feff, 0x431024, 0xaf820200, 
 0x8f820220, 0x3c03fffe, 0x3463ffff, 0x431024, 
-0xaf820220, 0x3c010001, 0xac205f34, 0x3c010001, 
-0x10000034, 0xac205f3c, 0x8f820200, 0x34420100, 
+0xaf820220, 0x3c010001, 0xac206044, 0x3c010001, 
+0x10000034, 0xac20604c, 0x8f820200, 0x34420100, 
 0xaf820200, 0x8f820220, 0x3c03fffe, 0x3463ffff, 
 0x431024, 0xaf820220, 0x24020100, 0x3c010001, 
-0xac225f34, 0x3c010001, 0x10000026, 0xac205f3c, 
+0xac226044, 0x3c010001, 0x10000026, 0xac20604c, 
 0x8f820200, 0x2403feff, 0x431024, 0xaf820200, 
 0x8f820220, 0x3c030001, 0x431025, 0xaf820220, 
-0x3c010001, 0xac205f34, 0x3c010001, 0x10000019, 
-0xac235f3c, 0x8f820200, 0x34420100, 0xaf820200, 
+0x3c010001, 0xac206044, 0x3c010001, 0x10000019, 
+0xac23604c, 0x8f820200, 0x34420100, 0xaf820200, 
 0x8f820220, 0x3c030001, 0x431025, 0xaf820220, 
-0x24020100, 0x3c010001, 0xac225f34, 0x3c010001, 
-0x1000000c, 0xac235f3c, 0x34a5ffff, 0x3c040001, 
-0x24843c08, 0xafa30010, 0xc0029d3, 0xafa00014, 
+0x24020100, 0x3c010001, 0xac226044, 0x3c010001, 
+0x1000000c, 0xac23604c, 0x34a5ffff, 0x3c040001, 
+0x24843d08, 0xafa30010, 0xc002a03, 0xafa00014, 
 0x10000004, 0x0, 0x24020030, 0x3c010001, 
-0xac225f18, 0x8fbf0018, 0x3e00008, 0x27bd0020, 
+0xac226028, 0x8fbf0018, 0x3e00008, 0x27bd0020, 
 0x0, 0x0, 0x0, 0x27bdffc8, 
 0xafb10024, 0x808821, 0xafb3002c, 0xa09821, 
-0xafb00020, 0xc08021, 0x3c040001, 0x24843c20, 
-0x3c050009, 0x3c020001, 0x8c423d18, 0x34a59001, 
+0xafb00020, 0xc08021, 0x3c040001, 0x24843d20, 
+0x3c050009, 0x3c020001, 0x8c423e28, 0x34a59001, 
 0x2203021, 0x2603821, 0xafbf0030, 0xafb20028, 
-0xa7a0001a, 0xafb00014, 0xc0029d3, 0xafa20010, 
+0xa7a0001a, 0xafb00014, 0xc002a03, 0xafa20010, 
 0x24020002, 0x126200eb, 0x2e620003, 0x10400005, 
 0x24020001, 0x1262000a, 0x3c02fffb, 0x100000e5, 
 0x0, 0x24020004, 0x1262006d, 0x24020008, 
 0x1262006c, 0x3c02ffec, 0x100000de, 0x0, 
 0x3442ffff, 0x2028024, 0x119140, 0x3c010001, 
-0x320821, 0xac305f2c, 0x3c024000, 0x2021024, 
+0x320821, 0xac30603c, 0x3c024000, 0x2021024, 
 0x10400046, 0x1023c2, 0x30840030, 0x101382, 
-0x3042000c, 0x3c030001, 0x24633d44, 0x431021, 
+0x3042000c, 0x3c030001, 0x24633e54, 0x431021, 
 0x823821, 0x3c020020, 0x2021024, 0x10400006, 
-0x24020100, 0x3c010001, 0x320821, 0xac225f30, 
+0x24020100, 0x3c010001, 0x320821, 0xac226040, 
 0x10000005, 0x3c020080, 0x3c010001, 0x320821, 
-0xac205f30, 0x3c020080, 0x2021024, 0x10400006, 
+0xac206040, 0x3c020080, 0x2021024, 0x10400006, 
 0x111940, 0x3c020001, 0x3c010001, 0x230821, 
-0x10000005, 0xac225f38, 0x111140, 0x3c010001, 
-0x220821, 0xac205f38, 0x94e30000, 0x32024000, 
+0x10000005, 0xac226048, 0x111140, 0x3c010001, 
+0x220821, 0xac206048, 0x94e30000, 0x32024000, 
 0x10400003, 0xa7a30018, 0x34624000, 0xa7a20018, 
 0x24040001, 0x94e20002, 0x24050004, 0x24e60002, 
-0x34420001, 0xc00420a, 0xa4e20002, 0x24040001, 
-0x2821, 0xc00420a, 0x27a60018, 0x3c020001, 
-0x8c423d18, 0x24110001, 0x3c010001, 0xac313d24, 
-0x14530004, 0x32028000, 0xc003bad, 0x0, 
-0x32028000, 0x10400097, 0x0, 0xc003bad
-0x0, 0x24020002, 0x3c010001, 0xac313d1c, 
-0x3c010001, 0x1000008f, 0xac223d18, 0x24040001, 
-0x24050004, 0x27b0001a, 0xc00420a, 0x2003021, 
-0x24040001, 0x2821, 0xc00420a, 0x2003021, 
-0x3c020001, 0x521021, 0x8c425f24, 0x3c040001, 
-0x8c843d18, 0x3c03bfff, 0x3463ffff, 0x3c010001, 
-0xac333d24, 0x431024, 0x3c010001, 0x320821, 
-0x10930076, 0xac225f24, 0x10000076, 0x0, 
+0x34420001, 0xc00423a, 0xa4e20002, 0x24040001, 
+0x2821, 0xc00423a, 0x27a60018, 0x3c020001, 
+0x8c423e28, 0x24110001, 0x3c010001, 0xac313e34, 
+0x14530004, 0x32028000, 0xc003be0, 0x0, 
+0x32028000, 0x10400097, 0x0, 0xc003be0
+0x0, 0x24020002, 0x3c010001, 0xac313e2c, 
+0x3c010001, 0x1000008f, 0xac223e28, 0x24040001, 
+0x24050004, 0x27b0001a, 0xc00423a, 0x2003021, 
+0x24040001, 0x2821, 0xc00423a, 0x2003021, 
+0x3c020001, 0x521021, 0x8c426034, 0x3c040001, 
+0x8c843e28, 0x3c03bfff, 0x3463ffff, 0x3c010001, 
+0xac333e34, 0x431024, 0x3c010001, 0x320821, 
+0x10930076, 0xac226034, 0x10000076, 0x0, 
 0x3c02ffec, 0x3442ffff, 0x2028024, 0x3c020008, 
 0x2028025, 0x111140, 0x3c010001, 0x220821, 
-0xac305f28, 0x3c022000, 0x2021024, 0x10400009, 
-0x0, 0x3c020001, 0x8c423da4, 0x14400005, 
-0x24020001, 0x3c010001, 0xac223e58, 0x10000004, 
-0x3c024000, 0x3c010001, 0xac203e58, 0x3c024000, 
+0xac306038, 0x3c022000, 0x2021024, 0x10400009, 
+0x0, 0x3c020001, 0x8c423eb4, 0x14400005, 
+0x24020001, 0x3c010001, 0xac223f68, 0x10000004, 
+0x3c024000, 0x3c010001, 0xac203f68, 0x3c024000, 
 0x2021024, 0x1440001a, 0x0, 0x3c020001, 
-0x8c423e58, 0x10400005, 0x24022020, 0x3c010001, 
-0xac223e5c, 0x24020001, 0xaee204b8, 0x3c04bfff, 
-0x111940, 0x3c020001, 0x431021, 0x8c425f20, 
-0x3c050001, 0x8ca53d18, 0x3484ffff, 0x441024, 
-0x3c010001, 0x230821, 0xac225f20, 0x24020001, 
+0x8c423f68, 0x10400005, 0x24022020, 0x3c010001, 
+0xac223f6c, 0x24020001, 0xaee204b8, 0x3c04bfff, 
+0x111940, 0x3c020001, 0x431021, 0x8c426030, 
+0x3c050001, 0x8ca53e28, 0x3484ffff, 0x441024, 
+0x3c010001, 0x230821, 0xac226030, 0x24020001, 
 0x10a20044, 0x0, 0x10000040, 0x0, 
-0x3c020001, 0x8c423e58, 0x1040001c, 0x24022000, 
-0x3c010001, 0xac223e5c, 0x3c0300a0, 0x2031024, 
+0x3c020001, 0x8c423f68, 0x1040001c, 0x24022000, 
+0x3c010001, 0xac223f6c, 0x3c0300a0, 0x2031024, 
 0x14430005, 0x111140, 0x3402a000, 0x3c010001, 
-0x1000002d, 0xac223e5c, 0x3c030001, 0x621821, 
-0x8c635f28, 0x3c020020, 0x621024, 0x10400004, 
-0x24022001, 0x3c010001, 0x10000023, 0xac223e5c, 
+0x1000002d, 0xac223f6c, 0x3c030001, 0x621821, 
+0x8c636038, 0x3c020020, 0x621024, 0x10400004, 
+0x24022001, 0x3c010001, 0x10000023, 0xac223f6c, 
 0x3c020080, 0x621024, 0x1040001f, 0x3402a001, 
-0x3c010001, 0x1000001c, 0xac223e5c, 0x3c020020, 
+0x3c010001, 0x1000001c, 0xac223f6c, 0x3c020020, 
 0x2021024, 0x10400007, 0x111940, 0x24020100, 
-0x3c010001, 0x230821, 0xac225f34, 0x10000006, 
+0x3c010001, 0x230821, 0xac226044, 0x10000006, 
 0x3c020080, 0x111140, 0x3c010001, 0x220821, 
-0xac205f34, 0x3c020080, 0x2021024, 0x10400006, 
+0xac206044, 0x3c020080, 0x2021024, 0x10400006, 
 0x111940, 0x3c020001, 0x3c010001, 0x230821, 
-0x10000005, 0xac225f3c, 0x111140, 0x3c010001, 
-0x220821, 0xac205f3c, 0x3c030001, 0x8c633d18, 
-0x24020001, 0x10620003, 0x0, 0xc003bad
+0x10000005, 0xac22604c, 0x111140, 0x3c010001, 
+0x220821, 0xac20604c, 0x3c030001, 0x8c633e28, 
+0x24020001, 0x10620003, 0x0, 0xc003be0
 0x0, 0x8fbf0030, 0x8fb3002c, 0x8fb20028, 
 0x8fb10024, 0x8fb00020, 0x3e00008, 0x27bd0038, 
 0x27bdffd0, 0xafb50028, 0x80a821, 0xafb20020, 
@@ -8155,95 +8168,95 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 0x10400005, 0x24020001, 0x10a2000a, 0x158140, 
 0x100000ae, 0x2201021, 0x24020004, 0x10a2005e, 
 0x24020008, 0x10a2005d, 0x152940, 0x100000a7, 
-0x2201021, 0x3c030001, 0x701821, 0x8c635f2c, 
+0x2201021, 0x3c030001, 0x701821, 0x8c63603c, 
 0x3c024000, 0x621024, 0x14400009, 0x24040001, 
 0x3c027fff, 0x3442ffff, 0x628824, 0x3c010001, 
-0x300821, 0xac315f24, 0x10000098, 0x2201021, 
-0x24050001, 0xc0041c8, 0x27a60010, 0x24040001, 
-0x24050001, 0xc0041c8, 0x27a60010, 0x97a20010, 
+0x300821, 0xac316034, 0x10000098, 0x2201021, 
+0x24050001, 0xc0041f8, 0x27a60010, 0x24040001, 
+0x24050001, 0xc0041f8, 0x27a60010, 0x97a20010, 
 0x30420004, 0x10400034, 0x3c114000, 0x3c030001, 
-0x8c633e70, 0x24020003, 0x10620008, 0x2c620004, 
+0x8c633f80, 0x24020003, 0x10620008, 0x2c620004, 
 0x14400029, 0x3c028000, 0x24020004, 0x10620014, 
 0x24040001, 0x10000024, 0x3c028000, 0x24040001, 
-0x24050011, 0x27b00012, 0xc0041c8, 0x2003021, 
-0x24040001, 0x24050011, 0xc0041c8, 0x2003021, 
+0x24050011, 0x27b00012, 0xc0041f8, 0x2003021, 
+0x24040001, 0x24050011, 0xc0041f8, 0x2003021, 
 0x97a30012, 0x30624000, 0x10400002, 0x3c130010, 
 0x3c130008, 0x3c120001, 0x10000010, 0x30628000, 
-0x24050014, 0x27b00012, 0xc0041c8, 0x2003021, 
-0x24040001, 0x24050014, 0xc0041c8, 0x2003021, 
+0x24050014, 0x27b00012, 0xc0041f8, 0x2003021, 
+0x24040001, 0x24050014, 0xc0041f8, 0x2003021, 
 0x97a30012, 0x30621000, 0x10400002, 0x3c130010, 
 0x3c130008, 0x3c120001, 0x30620800, 0x54400001, 
 0x3c120002, 0x3c028000, 0x2221025, 0x2531825, 
 0x10000007, 0x438825, 0x3c110001, 0x2308821, 
-0x8e315f2c, 0x3c027fff, 0x3442ffff, 0x2228824, 
-0x151140, 0x3c010001, 0x220821, 0xac315f24, 
+0x8e31603c, 0x3c027fff, 0x3442ffff, 0x2228824, 
+0x151140, 0x3c010001, 0x220821, 0xac316034, 
 0x1000004e, 0x2201021, 0x152940, 0x3c030001, 
-0x651821, 0x8c635f28, 0x3c024000, 0x621024, 
+0x651821, 0x8c636038, 0x3c024000, 0x621024, 
 0x14400008, 0x3c027fff, 0x3442ffff, 0x628824, 
-0x3c010001, 0x250821, 0xac315f20, 0x1000003f, 
-0x2201021, 0x3c020001, 0x8c423d28, 0x10400033, 
-0x3c11c00c, 0x3c020001, 0x8c423da4, 0x3c04c00c, 
-0x34842000, 0x3c030001, 0x8c633e58, 0x2102b, 
+0x3c010001, 0x250821, 0xac316030, 0x1000003f, 
+0x2201021, 0x3c020001, 0x8c423e38, 0x10400033, 
+0x3c11c00c, 0x3c020001, 0x8c423eb4, 0x3c04c00c, 
+0x34842000, 0x3c030001, 0x8c633f68, 0x2102b, 
 0x21023, 0x441024, 0x10600003, 0x518825, 
 0x3c022000, 0x2228825, 0x3c020001, 0x451021, 
-0x8c425f34, 0x10400003, 0x3c020020, 0x10000004, 
+0x8c426044, 0x10400003, 0x3c020020, 0x10000004, 
 0x2228825, 0x3c02ffdf, 0x3442ffff, 0x2228824, 
-0x151140, 0x3c010001, 0x220821, 0x8c225f3c, 
+0x151140, 0x3c010001, 0x220821, 0x8c22604c, 
 0x10400003, 0x3c020080, 0x10000004, 0x2228825, 
 0x3c02ff7f, 0x3442ffff, 0x2228824, 0x3c020001, 
-0x8c423d90, 0x10400002, 0x3c020800, 0x2228825, 
-0x3c020001, 0x8c423d94, 0x10400002, 0x3c020400, 
-0x2228825, 0x3c020001, 0x8c423d98, 0x10400006, 
+0x8c423ea0, 0x10400002, 0x3c020800, 0x2228825, 
+0x3c020001, 0x8c423ea4, 0x10400002, 0x3c020400, 
+0x2228825, 0x3c020001, 0x8c423ea8, 0x10400006, 
 0x3c020100, 0x10000004, 0x2228825, 0x3c027fff, 
 0x3442ffff, 0x628824, 0x151140, 0x3c010001, 
-0x220821, 0xac315f20, 0x2201021, 0x8fbf002c, 
+0x220821, 0xac316030, 0x2201021, 0x8fbf002c, 
 0x8fb50028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 
 0x8fb00018, 0x3e00008, 0x27bd0030, 0x27bdffe0, 
 0xafb20018, 0x809021, 0xafbf001c, 0xafb10014, 
-0xafb00010, 0x8f840200, 0x3c030001, 0x8c633d18, 
+0xafb00010, 0x8f840200, 0x3c030001, 0x8c633e28, 
 0x8f860220, 0x24020002, 0x106200a6, 0x2c620003, 
 0x10400005, 0x24020001, 0x1062000a, 0x121940, 
 0x100000a0, 0x0, 0x24020004, 0x10620053, 
 0x24020008, 0x10620052, 0x128940, 0x10000099, 
-0x0, 0x3c050001, 0xa32821, 0x8ca55f2c, 
-0x3c100001, 0x2038021, 0x8e105f24, 0x3c024000, 
+0x0, 0x3c050001, 0xa32821, 0x8ca5603c, 
+0x3c100001, 0x2038021, 0x8e106034, 0x3c024000, 
 0xa21024, 0x10400038, 0x3c020008, 0x2021024, 
 0x10400020, 0x34840002, 0x3c020001, 0x431021, 
-0x8c425f30, 0x10400005, 0x34840020, 0x34840100, 
+0x8c426040, 0x10400005, 0x34840020, 0x34840100, 
 0x3c020020, 0x10000006, 0x2028025, 0x2402feff, 
 0x822024, 0x3c02ffdf, 0x3442ffff, 0x2028024, 
-0x121140, 0x3c010001, 0x220821, 0x8c225f38, 
+0x121140, 0x3c010001, 0x220821, 0x8c226048, 
 0x10400005, 0x3c020001, 0xc23025, 0x3c020080, 
 0x10000016, 0x2028025, 0x3c02fffe, 0x3442ffff, 
 0xc23024, 0x3c02ff7f, 0x3442ffff, 0x1000000f, 
 0x2028024, 0x2402fedf, 0x822024, 0x3c02fffe, 
 0x3442ffff, 0xc23024, 0x3c02ff5f, 0x3442ffff, 
-0x2028024, 0x3c010001, 0x230821, 0xac205f30, 
-0x3c010001, 0x230821, 0xac205f38, 0xaf840200, 
+0x2028024, 0x3c010001, 0x230821, 0xac206040, 
+0x3c010001, 0x230821, 0xac206048, 0xaf840200, 
 0xaf860220, 0x8f820220, 0x34420002, 0xaf820220, 
 0x1000000a, 0x121140, 0x3c02bfff, 0x3442ffff, 
 0x8f830200, 0x2028024, 0x2402fffd, 0x621824, 
-0xc003bad, 0xaf830200, 0x121140, 0x3c010001, 
-0x220821, 0x1000004b, 0xac305f24, 0x128940, 
-0x3c050001, 0xb12821, 0x8ca55f28, 0x3c100001, 
-0x2118021, 0x8e105f20, 0x3c024000, 0xa21024, 
-0x14400010, 0x0, 0x3c020001, 0x8c423e58, 
+0xc003be0, 0xaf830200, 0x121140, 0x3c010001, 
+0x220821, 0x1000004b, 0xac306034, 0x128940, 
+0x3c050001, 0xb12821, 0x8ca56038, 0x3c100001, 
+0x2118021, 0x8e106030, 0x3c024000, 0xa21024, 
+0x14400010, 0x0, 0x3c020001, 0x8c423f68, 
 0x14400005, 0x3c02bfff, 0x8f820200, 0x34420002, 
-0xaf820200, 0x3c02bfff, 0x3442ffff, 0xc003bad
+0xaf820200, 0x3c02bfff, 0x3442ffff, 0xc003be0
 0x2028024, 0x3c010001, 0x310821, 0x10000031, 
-0xac305f20, 0x3c020001, 0x8c423e58, 0x10400005, 
-0x3c020020, 0x3c020001, 0x8c423da4, 0x10400025, 
+0xac306030, 0x3c020001, 0x8c423f68, 0x10400005, 
+0x3c020020, 0x3c020001, 0x8c423eb4, 0x10400025, 
 0x3c020020, 0xa21024, 0x10400007, 0x34840020, 
-0x24020100, 0x3c010001, 0x310821, 0xac225f34, 
+0x24020100, 0x3c010001, 0x310821, 0xac226044, 
 0x10000006, 0x34840100, 0x3c010001, 0x310821, 
-0xac205f34, 0x2402feff, 0x822024, 0x3c020080, 
+0xac206044, 0x2402feff, 0x822024, 0x3c020080, 
 0xa21024, 0x10400007, 0x121940, 0x3c020001, 
-0x3c010001, 0x230821, 0xac225f3c, 0x10000008, 
+0x3c010001, 0x230821, 0xac22604c, 0x10000008, 
 0xc23025, 0x121140, 0x3c010001, 0x220821, 
-0xac205f3c, 0x3c02fffe, 0x3442ffff, 0xc23024, 
+0xac20604c, 0x3c02fffe, 0x3442ffff, 0xc23024, 
 0xaf840200, 0xaf860220, 0x8f820220, 0x34420002, 
 0xaf820220, 0x121140, 0x3c010001, 0x220821, 
-0xac305f20, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 
+0xac306030, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 
 0x8fb00010, 0x3e00008, 0x27bd0020, 0x1821, 
 0x308400ff, 0x2405ffdf, 0x2406ffbf, 0x641007, 
 0x30420001, 0x10400004, 0x0, 0x8f820044, 
@@ -8255,11 +8268,11 @@ u32 tigon2FwText[(MAX_TEXT_LEN/4) + 1] __initdata = {
 u32 tigon2FwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x66776d61, 0x696e2e63, 0x2c762031, 0x2e312e32
-0x2e343520, 0x31393939, 0x2f30312f, 0x32342030
-0x303a3130, 0x3a353520, 0x73687561, 0x6e672045
-0x78702024, 0x0, 0x65767452, 0x6e674600, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f6677, 0x6d61696e, 0x2e632c76, 0x20312e31
+0x2e322e34, 0x35203139, 0x39392f30, 0x312f3234
+0x2030303a, 0x31303a35, 0x35207368, 0x75616e67
+0x20457870, 0x20240000, 0x65767452, 0x6e674600, 
 0x51657674, 0x46000000, 0x51657674, 0x505f4600, 
 0x4d657674, 0x526e6746, 0x0, 0x4d516576, 
 0x74460000, 0x4d516576, 0x505f4600, 0x5173436f, 
@@ -8326,27 +8339,27 @@ u32 tigon2FwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x5f646573, 0x63720000, 0x2b685f68, 0x665f7469, 
 0x6d657200, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x74696d65, 0x722e632c, 0x7620312e, 0x312e322e, 
-0x33352031, 0x3939392f, 0x30312f32, 0x37203139
-0x3a30393a, 0x35302068, 0x61796573, 0x20457870
-0x20240000, 0x65767452, 0x6e674600, 0x51657674
-0x46000000, 0x51657674, 0x505f4600, 0x4d657674
-0x526e6746, 0x0, 0x4d516576, 0x74460000
-0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46
-0x0, 0x5173436f, 0x6e734600, 0x51725072
-0x6f644600, 0x542d446d, 0x61526432, 0x0
-0x542d446d, 0x61526431, 0x0, 0x542d446d
-0x61526442, 0x0, 0x542d446d, 0x61577232
-0x0, 0x542d446d, 0x61577231, 0x0
-0x542d446d, 0x61577242, 0x0, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f7469, 0x6d65722e, 0x632c7620, 0x312e312e, 
+0x322e3335, 0x20313939, 0x392f3031, 0x2f323720
+0x31393a30, 0x393a3530, 0x20686179, 0x65732045
+0x78702024, 0x0, 0x65767452, 0x6e674600
+0x51657674, 0x46000000, 0x51657674, 0x505f4600
+0x4d657674, 0x526e6746, 0x0, 0x4d516576
+0x74460000, 0x4d516576, 0x505f4600, 0x5173436f
+0x6e495f46, 0x0, 0x5173436f, 0x6e734600
+0x51725072, 0x6f644600, 0x542d446d, 0x61526432
+0x0, 0x542d446d, 0x61526431, 0x0
+0x542d446d, 0x61526442, 0x0, 0x542d446d
+0x61577232, 0x0, 0x542d446d, 0x61577231
+0x0, 0x542d446d, 0x61577242, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x636f6d6d, 0x616e642e, 0x632c7620, 0x312e312e, 
-0x322e3238, 0x20313939, 0x392f3031, 0x2f323020
-0x31393a34, 0x393a3439, 0x20736875, 0x616e6720
-0x45787020, 0x24000000, 0x65767452, 0x6e674600, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f636f, 0x6d6d616e, 0x642e632c, 0x7620312e, 
+0x312e322e, 0x32382031, 0x3939392f, 0x30312f32
+0x30203139, 0x3a34393a, 0x34392073, 0x6875616e
+0x67204578, 0x70202400, 0x65767452, 0x6e674600, 
 0x51657674, 0x46000000, 0x51657674, 0x505f4600, 
 0x4d657674, 0x526e6746, 0x0, 0x4d516576, 
 0x74460000, 0x4d516576, 0x505f4600, 0x5173436f, 
@@ -8363,25 +8376,25 @@ u32 tigon2FwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x8218, 0x827c, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x6d636173, 0x742e632c, 0x7620312e, 0x312e322e, 
-0x38203139, 0x39382f31, 0x322f3038, 0x2030323a
-0x33363a33, 0x36207368, 0x75616e67, 0x20457870
-0x20240000, 0x65767452, 0x6e674600, 0x51657674
-0x46000000, 0x51657674, 0x505f4600, 0x4d657674
-0x526e6746, 0x0, 0x4d516576, 0x74460000
-0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46
-0x0, 0x5173436f, 0x6e734600, 0x51725072
-0x6f644600, 0x6164644d, 0x63447570, 0x0, 
-0x6164644d, 0x6346756c, 0x0, 0x64656c4d
-0x634e6f45, 0x0, 0x0, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f6d63, 0x6173742e, 0x632c7620, 0x312e312e, 
+0x322e3820, 0x31393938, 0x2f31322f, 0x30382030
+0x323a3336, 0x3a333620, 0x73687561, 0x6e672045
+0x78702024, 0x0, 0x65767452, 0x6e674600
+0x51657674, 0x46000000, 0x51657674, 0x505f4600
+0x4d657674, 0x526e6746, 0x0, 0x4d516576
+0x74460000, 0x4d516576, 0x505f4600, 0x5173436f
+0x6e495f46, 0x0, 0x5173436f, 0x6e734600
+0x51725072, 0x6f644600, 0x6164644d, 0x63447570, 
+0x0, 0x6164644d, 0x6346756c, 0x0
+0x64656c4d, 0x634e6f45, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x646d612e, 0x632c7620, 0x312e312e, 0x322e3234
-0x20313939, 0x382f3132, 0x2f323120, 0x30303a33
-0x333a3039, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x65767452, 0x6e674600, 0x51657674, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f646d, 0x612e632c, 0x7620312e, 0x312e322e
+0x32342031, 0x3939382f, 0x31322f32, 0x31203030
+0x3a33333a, 0x30392073, 0x6875616e, 0x67204578
+0x70202400, 0x65767452, 0x6e674600, 0x51657674, 
 0x46000000, 0x51657674, 0x505f4600, 0x4d657674, 
 0x526e6746, 0x0, 0x4d516576, 0x74460000, 
 0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46, 
@@ -8390,81 +8403,84 @@ u32 tigon2FwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x31446d61, 0x4f6e0000, 0x7377446d, 0x614f6e00, 
 0x2372446d, 0x6141544e, 0x0, 0x72446d61, 
 0x41544e30, 0x0, 0x72446d61, 0x41544e31, 
-0x0, 0x2a50414e, 0x49432a00, 0x2e2e2f2e, 
-0x2e2f2e2e, 0x2f2e2e2f, 0x2e2e2f73, 0x72632f6e, 
-0x69632f66, 0x77322f63, 0x6f6d6d6f, 0x6e2f646d, 
-0x612e6300, 0x2377446d, 0x6141544e, 0x0, 
-0x77446d61, 0x41544e30, 0x0, 0x77446d61, 
-0x41544e31, 0x0, 0x0, 0x0, 
+0x0, 0x72446d61, 0x34476200, 0x2a50414e, 
+0x49432a00, 0x2e2e2f2e, 0x2e2f2e2e, 0x2f2e2e2f, 
+0x2e2e2f73, 0x72632f6e, 0x69632f66, 0x77322f63, 
+0x6f6d6d6f, 0x6e2f646d, 0x612e6300, 0x2377446d, 
+0x6141544e, 0x0, 0x77446d61, 0x41544e30, 
+0x0, 0x77446d61, 0x41544e31, 0x0, 
+0x77446d61, 0x34476200, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x74726163, 0x652e632c, 0x7620312e, 0x312e322e, 
-0x35203139, 0x39382f30, 0x392f3330, 0x2031383a, 
-0x35303a32, 0x38207368, 0x75616e67, 0x20457870, 
-0x20240000, 0x24486561, 0x6465723a, 0x202f7072, 
-0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x64617461, 0x2e632c76, 0x20312e31, 0x2e322e31, 
-0x32203139, 0x39392f30, 0x312f3230, 0x2031393a, 
-0x34393a35, 0x31207368, 0x75616e67, 0x20457870, 
-0x20240000, 0x46575f56, 0x45525349, 0x4f4e3a20, 
-0x2331204d, 0x6f6e2046, 0x65622031, 0x2031373a, 
-0x30313a30, 0x36205053, 0x54203139, 0x39390000, 
-0x46575f43, 0x4f4d5049, 0x4c455f54, 0x494d453a, 
-0x2031373a, 0x30313a30, 0x36000000, 0x46575f43, 
-0x4f4d5049, 0x4c455f42, 0x593a2064, 0x65767263, 
-0x73000000, 0x46575f43, 0x4f4d5049, 0x4c455f48, 
-0x4f53543a, 0x20636f6d, 0x70757465, 0x0, 
-0x46575f43, 0x4f4d5049, 0x4c455f44, 0x4f4d4149, 
-0x4e3a2065, 0x6e672e61, 0x6374656f, 0x6e2e636f, 
-0x6d000000, 0x46575f43, 0x4f4d5049, 0x4c45523a, 
-0x20676363, 0x20766572, 0x73696f6e, 0x20322e37, 
-0x2e320000, 0x0, 0x12030303, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f7472, 0x6163652e, 0x632c7620, 0x312e312e, 
+0x322e3520, 0x31393938, 0x2f30392f, 0x33302031, 
+0x383a3530, 0x3a323820, 0x73687561, 0x6e672045, 
+0x78702024, 0x0, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x6d656d2e, 0x632c7620, 0x312e312e, 0x322e3520, 
-0x31393938, 0x2f30392f, 0x33302031, 0x383a3530, 
-0x3a303820, 0x73687561, 0x6e672045, 0x78702024, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f6461, 0x74612e63, 0x2c762031, 0x2e312e32, 
+0x2e313220, 0x31393939, 0x2f30312f, 0x32302031, 
+0x393a3439, 0x3a353120, 0x73687561, 0x6e672045, 
+0x78702024, 0x0, 0x46575f56, 0x45525349, 
+0x4f4e3a20, 0x23312054, 0x75652041, 0x70722032, 
+0x30203137, 0x3a32333a, 0x30322050, 0x44542031, 
+0x39393900, 0x46575f43, 0x4f4d5049, 0x4c455f54, 
+0x494d453a, 0x2031373a, 0x32333a30, 0x32000000, 
+0x46575f43, 0x4f4d5049, 0x4c455f42, 0x593a2064, 
+0x65767263, 0x73000000, 0x46575f43, 0x4f4d5049, 
+0x4c455f48, 0x4f53543a, 0x20636f6d, 0x70757465, 
+0x0, 0x46575f43, 0x4f4d5049, 0x4c455f44, 
+0x4f4d4149, 0x4e3a2065, 0x6e672e61, 0x6374656f, 
+0x6e2e636f, 0x6d000000, 0x46575f43, 0x4f4d5049, 
+0x4c45523a, 0x20676363, 0x20766572, 0x73696f6e, 
+0x20322e37, 0x2e320000, 0x0, 0x12030303, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x73656e64, 0x2e632c76, 0x20312e31, 0x2e322e34, 
-0x34203139, 0x39382f31, 0x322f3231, 0x2030303a, 
-0x33333a31, 0x38207368, 0x75616e67, 0x20457870, 
-0x20240000, 0x65767452, 0x6e674600, 0x51657674, 
-0x46000000, 0x51657674, 0x505f4600, 0x4d657674, 
-0x526e6746, 0x0, 0x4d516576, 0x74460000, 
-0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46, 
-0x0, 0x5173436f, 0x6e734600, 0x51725072, 
-0x6f644600, 0x69736e74, 0x54637055, 0x0, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f6d65, 0x6d2e632c, 0x7620312e, 0x312e322e, 
+0x35203139, 0x39382f30, 0x392f3330, 0x2031383a, 
+0x35303a30, 0x38207368, 0x75616e67, 0x20457870, 
+0x20240000, 0x24486561, 0x6465723a, 0x202f7072, 
+0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f7365, 0x6e642e63, 0x2c762031, 0x2e312e32, 
+0x2e343420, 0x31393938, 0x2f31322f, 0x32312030, 
+0x303a3333, 0x3a313820, 0x73687561, 0x6e672045, 
+0x78702024, 0x0, 0x65767452, 0x6e674600, 
+0x51657674, 0x46000000, 0x51657674, 0x505f4600, 
+0x4d657674, 0x526e6746, 0x0, 0x4d516576, 
+0x74460000, 0x4d516576, 0x505f4600, 0x5173436f, 
+0x6e495f46, 0x0, 0x5173436f, 0x6e734600, 
+0x51725072, 0x6f644600, 0x69736e74, 0x54637055, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x72656376, 0x2e632c76, 0x20312e31, 0x2e322e35, 
-0x33203139, 0x39392f30, 0x312f3136, 0x2030323a, 
-0x35353a34, 0x33207368, 0x75616e67, 0x20457870, 
-0x20240000, 0x65767452, 0x6e674600, 0x51657674, 
-0x46000000, 0x51657674, 0x505f4600, 0x4d657674, 
-0x526e6746, 0x0, 0x4d516576, 0x74460000, 
-0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46, 
-0x0, 0x5173436f, 0x6e734600, 0x51725072, 
-0x6f644600, 0x72784672, 0x6d324c67, 0x0, 
-0x72784e6f, 0x53744264, 0x0, 0x72784e6f, 
-0x4d694264, 0x0, 0x72784e6f, 0x4a6d4264, 
-0x0, 0x7278436b, 0x446d6146, 0x0, 
-0x72785144, 0x6d457846, 0x0, 0x72785144, 
-0x6d614600, 0x72785144, 0x4c426446, 0x0, 
-0x72785144, 0x6d426446, 0x0, 0x72784372, 
-0x63506164, 0x0, 0x72536d51, 0x446d6146, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f7265, 0x63762e63, 0x2c762031, 0x2e312e32, 
+0x2e353320, 0x31393939, 0x2f30312f, 0x31362030, 
+0x323a3535, 0x3a343320, 0x73687561, 0x6e672045, 
+0x78702024, 0x0, 0x65767452, 0x6e674600, 
+0x51657674, 0x46000000, 0x51657674, 0x505f4600, 
+0x4d657674, 0x526e6746, 0x0, 0x4d516576, 
+0x74460000, 0x4d516576, 0x505f4600, 0x5173436f, 
+0x6e495f46, 0x0, 0x5173436f, 0x6e734600, 
+0x51725072, 0x6f644600, 0x72784672, 0x6d324c67, 
+0x0, 0x72784e6f, 0x53744264, 0x0, 
+0x72784e6f, 0x4d694264, 0x0, 0x72784e6f, 
+0x4a6d4264, 0x0, 0x7278436b, 0x446d6146, 
+0x0, 0x72785144, 0x6d457846, 0x0, 
+0x72785144, 0x6d614600, 0x72785144, 0x4c426446, 
+0x0, 0x72785144, 0x6d426446, 0x0, 
+0x72784372, 0x63506164, 0x0, 0x72536d51, 
+0x446d6146, 0x0, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x6d61632e, 0x632c7620, 0x312e312e, 0x322e3232
-0x20313939, 0x382f3132, 0x2f303820, 0x30323a33
-0x363a3330, 0x20736875, 0x616e6720, 0x45787020
-0x24000000, 0x65767452, 0x6e674600, 0x51657674, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f6d61, 0x632e632c, 0x7620312e, 0x312e322e
+0x32322031, 0x3939382f, 0x31322f30, 0x38203032
+0x3a33363a, 0x33302073, 0x6875616e, 0x67204578
+0x70202400, 0x65767452, 0x6e674600, 0x51657674, 
 0x46000000, 0x51657674, 0x505f4600, 0x4d657674, 
 0x526e6746, 0x0, 0x4d516576, 0x74460000, 
 0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46, 
@@ -8476,32 +8492,33 @@ u32 tigon2FwRodata[(MAX_RODATA_LEN/4) + 1] __initdata = {
 0x6c696e6b, 0x55500000, 0x0, 0x0, 
 0x0, 0x24486561, 0x6465723a, 0x202f7072, 
 0x6f6a6563, 0x74732f72, 0x63732f73, 0x772f6765, 
-0x2f6e6963, 0x2f667732, 0x2f636f6d, 0x6d6f6e2f, 
-0x636b7375, 0x6d2e632c, 0x7620312e, 0x312e322e, 
-0x39203139, 0x39392f30, 0x312f3134, 0x2030303a, 
-0x30333a34, 0x38207368, 0x75616e67, 0x20457870, 
-0x20240000, 0x65767452, 0x6e674600, 0x51657674, 
-0x46000000, 0x51657674, 0x505f4600, 0x4d657674, 
-0x526e6746, 0x0, 0x4d516576, 0x74460000, 
-0x4d516576, 0x505f4600, 0x5173436f, 0x6e495f46, 
-0x0, 0x5173436f, 0x6e734600, 0x51725072, 
-0x6f644600, 0x50726f62, 0x65506879, 0x0, 
-0x6c6e6b41, 0x53535254, 0x0, 0xff04, 
-0xff34, 0xff4c, 0xff78, 0xffa4, 
-0xffb8, 0xfff4, 0x10394, 0x10174, 
-0x101ac, 0x100a4, 0x10200, 0x10228, 
-0x1025c, 0x100e8, 0x10394, 0x10174, 
-0x101ac, 0x101d0, 0x10200, 0x10228, 
-0x1025c, 0x10288, 0x0, 0x0, 
-0x0, 0x1097c, 0x10a4c, 0x10b24, 
-0x10bf4, 0x10c50, 0x10d2c, 0x10d54, 
-0x10e30, 0x10e58, 0x11000, 0x11028, 
-0x111d0, 0x113c8, 0x1165c, 0x11570, 
-0x1165c, 0x11688, 0x111f8, 0x113a0, 
-0x0, 0x1198c, 0x119cc, 0x11a5c, 
-0x11aa0, 0x11b04, 0x11b90, 0x11bc4, 
-0x11c4c, 0x11ce4, 0x11db4, 0x11df4, 
-0x11e78, 0x11e9c, 0x11fac, 0x646f4261, 
+0x2f2e2f6e, 0x69632f66, 0x77322f63, 0x6f6d6d6f, 
+0x6e2f636b, 0x73756d2e, 0x632c7620, 0x312e312e, 
+0x322e3920, 0x31393939, 0x2f30312f, 0x31342030, 
+0x303a3033, 0x3a343820, 0x73687561, 0x6e672045, 
+0x78702024, 0x0, 0x65767452, 0x6e674600, 
+0x51657674, 0x46000000, 0x51657674, 0x505f4600, 
+0x4d657674, 0x526e6746, 0x0, 0x4d516576, 
+0x74460000, 0x4d516576, 0x505f4600, 0x5173436f, 
+0x6e495f46, 0x0, 0x5173436f, 0x6e734600, 
+0x51725072, 0x6f644600, 0x0, 0x0, 
+0x0, 0x50726f62, 0x65506879, 0x0, 
+0x6c6e6b41, 0x53535254, 0x0, 0xffc4, 
+0xfff4, 0x1000c, 0x10038, 0x10064, 
+0x10078, 0x100b4, 0x10454, 0x10234, 
+0x1026c, 0x10164, 0x102c0, 0x102e8, 
+0x1031c, 0x101a8, 0x10454, 0x10234, 
+0x1026c, 0x10290, 0x102c0, 0x102e8, 
+0x1031c, 0x10348, 0x0, 0x0, 
+0x0, 0x10a3c, 0x10b0c, 0x10be4, 
+0x10cb4, 0x10d10, 0x10dec, 0x10e14, 
+0x10ef0, 0x10f18, 0x110c0, 0x110e8, 
+0x11290, 0x11488, 0x1171c, 0x11630, 
+0x1171c, 0x11748, 0x112b8, 0x11460, 
+0x0, 0x11a4c, 0x11a8c, 0x11b1c, 
+0x11b60, 0x11bc4, 0x11c50, 0x11c84, 
+0x11d0c, 0x11da4, 0x11e74, 0x11eb4, 
+0x11f38, 0x11f5c, 0x1206c, 0x646f4261, 
 0x73655067, 0x0, 0x0, 0x0, 
 0x0, 0x73746d61, 0x634c4e4b, 0x0, 
 0x0, 0x0 };
index f9be725cd473dc2311e40ae1b0ecd8ef24ae9b0f..25e27af52676d3030d891d7a18518d5206878a61 100644 (file)
@@ -297,7 +297,6 @@ bmac_mif_read(struct device *dev, unsigned int addr)
        val = bmac_mif_readbits(dev, 17);
        bmwrite(dev, MIFCSR, 4);
        MIFDELAY;
-       /* printk(KERN_DEBUG "bmac_mif_read(%x) -> %x\n", addr, val); */
        return val;
 }
 
@@ -431,18 +430,26 @@ bmac_start_chip(struct device *dev)
 static int
 bmac_init_chip(struct device *dev)
 {
-       if (is_bmac_plus && bmac_mif_read(dev, 2) == 0x7810) {
-               if (bmac_mif_read(dev, 4) == 0xa1) {
-                       bmac_mif_write(dev, 0, 0x1000);
-               } else {
-                       bmac_mif_write(dev, 4, 0xa1);
+       unsigned int addr;
+
+       printk(KERN_DEBUG "phy registers:");
+       for (addr = 0; addr < 32; ++addr) {
+               if ((addr & 7) == 0)
+                       printk("\n" KERN_DEBUG);
+               printk(" %.4x", bmac_mif_read(dev, addr));
+       }
+       printk("\n");
+       if (is_bmac_plus) {
+               unsigned int capable, ctrl;
+
+               ctrl = bmac_mif_read(dev, 0);
+               capable = ((bmac_mif_read(dev, 1) & 0xf800) >> 6) | 1;
+               if (bmac_mif_read(dev, 4) != capable
+                   || (ctrl & 0x1000) == 0) {
+                       bmac_mif_write(dev, 4, capable);
                        bmac_mif_write(dev, 0, 0x1200);
-               }
-#if 0
-               /* XXX debugging */
-               bmac_mif_read(dev, 0);
-               bmac_mif_read(dev, 4);
-#endif
+               } else
+                       bmac_mif_write(dev, 0, 0x1000);
        }
        bmac_init_registers(dev);
        return 1;
@@ -1330,6 +1337,7 @@ static int bmac_open(struct device *dev)
 
        dev->flags |= IFF_UP | IFF_RUNNING;
 
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
@@ -1375,6 +1383,8 @@ static int bmac_close(struct device *dev)
        bp->reset_and_enabled = 0;
        XXDEBUG(("bmac: all bufs freed\n"));
 
+       MOD_DEC_USE_COUNT;
+
        return 0;
 }
 
index ad688beb72387a1849ad23f6b85310949372eb2d..1e07a3279230a01de43c5679a15e1c8a3f383091 100644 (file)
@@ -1,10 +1,7 @@
-/* $Id: cosa.c,v 1.24 1999/05/28 17:28:34 kas Exp $ */
+/* $Id: cosa.c,v 1.26 1999/07/09 15:02:37 kas Exp $ */
 
 /*
  *  Copyright (C) 1995-1997  Jan "Yenya" Kasprzak <kas@fi.muni.cz>
- * 
- *     5/25/1999 : Marcelo Tosatti <marcelo@conectiva.com.br>
- *             fixed a deadlock in cosa_sppp_open 
  *
  *  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
 #include "syncppp.h"
 #include "cosa.h"
 
+/* Linux version stuff */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1)
+typedef struct wait_queue *wait_queue_head_t;
+#define DECLARE_WAITQUEUE(wait, current) \
+       struct wait_queue wait = { current, NULL }
+#endif
+
 /* Maximum length of the identification string. */
 #define COSA_MAX_ID_STRING     128
 
@@ -133,7 +137,7 @@ struct channel_data {
        struct semaphore rsem, wsem;
        char *rxdata;
        int rxsize;
-       struct wait_queue *txwaitq, *rxwaitq;
+       wait_queue_head_t txwaitq, rxwaitq;
        int tx_status, rx_status;
 
        /* SPPP/HDLC device parts */
@@ -365,7 +369,7 @@ __initfunc(static int cosa_init(void))
 #endif
 {
        int i;
-       printk(KERN_INFO "cosa v1.04 (c) 1997-8 Jan Kasprzak <kas@fi.muni.cz>\n");
+       printk(KERN_INFO "cosa v1.06 (c) 1997-8 Jan Kasprzak <kas@fi.muni.cz>\n");
 #ifdef __SMP__
        printk(KERN_INFO "cosa: SMP found. Please mail any success/failure reports to the author.\n");
 #endif
@@ -1273,10 +1277,8 @@ static void put_driver_status(struct cosa_data *cosa)
                        debug_status_out(cosa, 0);
 #endif
                }
-               cosa_putdata8(cosa, 0);
                cosa_putdata8(cosa, status);
 #ifdef DEBUG_IO
-               debug_data_cmd(cosa, 0);
                debug_data_cmd(cosa, status);
 #endif
        }
@@ -1651,6 +1653,14 @@ static int puthexnumber(struct cosa_data *cosa, int number)
  * use the round-robin approach. The newer COSA firmwares have a simple
  * flow-control - in the status word has bits 2 and 3 set to 1 means that the
  * channel 0 or 1 doesn't want to receive data.
+ *
+ * It seems there is a bug in COSA firmware (need to trace it further):
+ * When the driver status says that the kernel has no more data for transmit
+ * (e.g. at the end of TX DMA) and then the kernel changes its mind
+ * (e.g. new packet is queued to hard_start_xmit()), the card issues
+ * the TX interrupt but does not mark the channel as ready-to-transmit.
+ * The fix seems to be to push the packet to COSA despite its request.
+ * We first try to obey the card's opinion, and then fall back to forced TX.
  */
 static inline void tx_interrupt(struct cosa_data *cosa, int status)
 {
@@ -1662,23 +1672,35 @@ static inline void tx_interrupt(struct cosa_data *cosa, int status)
        spin_lock_irqsave(&cosa->lock, flags);
        set_bit(TXBIT, &cosa->rxtx);
        if (!test_bit(IRQBIT, &cosa->rxtx)) {
-               /* flow control */
+               /* flow control, see the comment above */
                int i=0;
-               do {
-                       if (i++ > cosa->nchannels) {
-                               printk(KERN_WARNING
-                                       "%s: No channel wants data in TX IRQ\n",
-                                       cosa->name);
-                               put_driver_status_nolock(cosa);
-                               clear_bit(TXBIT, &cosa->rxtx);
-                               spin_unlock_irqrestore(&cosa->lock, flags);
-                               return;
-                       }
+               if (!cosa->txbitmap) {
+                       printk(KERN_WARNING "%s: No channel wants data "
+                               "in TX IRQ. Expect DMA timeout.",
+                               cosa->name);
+                       put_driver_status_nolock(cosa);
+                       clear_bit(TXBIT, &cosa->rxtx);
+                       spin_unlock_irqrestore(&cosa->lock, flags);
+                       return;
+               }
+               while(1) {
                        cosa->txchan++;
+                       i++;
                        if (cosa->txchan >= cosa->nchannels)
                                cosa->txchan = 0;
-               } while ((!(cosa->txbitmap & (1<<cosa->txchan)))
-                       || status & (1<<(cosa->txchan+DRIVER_TXMAP_SHIFT)));
+                       if (!(cosa->txbitmap & (1<<cosa->txchan)))
+                               continue;
+                       if (~status & (1 << (cosa->txchan+DRIVER_TXMAP_SHIFT)))
+                               break;
+                       /* in second pass, accept first ready-to-TX channel */
+                       if (i > cosa->nchannels) {
+                               /* Can be safely ignored */
+                               printk(KERN_DEBUG "%s: Forcing TX "
+                                       "to not-ready channel %d\n",
+                                       cosa->name, cosa->txchan);
+                               break;
+                       }
+               }
 
                cosa->txsize = cosa->chan[cosa->txchan].txsize;
                if (cosa_dma_able(cosa->chan+cosa->txchan,
@@ -1788,6 +1810,7 @@ static inline void rx_interrupt(struct cosa_data *cosa, int status)
        if (is_8bit(cosa)) {
                if (!test_bit(IRQBIT, &cosa->rxtx)) {
                        set_bit(IRQBIT, &cosa->rxtx);
+                       put_driver_status_nolock(cosa);
                        cosa->rxsize = cosa_getdata8(cosa) <<8;
 #ifdef DEBUG_IO
                        debug_data_in(cosa, cosa->rxsize >> 8);
index 8d433d6b133b33d59edd8cf2d15e5737f0add659..3553d84101a8f384f8057803bb02ecf6823a93e6 100644 (file)
@@ -682,8 +682,10 @@ static void mace_interrupt(int irq, void *dev_id, struct pt_regs *regs)
                ++mp->stats.tx_carrier_errors;
            if (fs & (UFLO|LCOL|RTRY))
                ++mp->stats.tx_aborted_errors;
-       } else
+       } else {
+           mp->stats.tx_bytes += mp->tx_bufs[i]->len;
            ++mp->stats.tx_packets;
+       }
        dev_kfree_skb(mp->tx_bufs[i]);
        --mp->tx_active;
        if (++i >= N_TX_RING)
@@ -848,6 +850,7 @@ static void mace_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs)
                skb->protocol = eth_type_trans(skb, dev);
                netif_rx(skb);
                mp->rx_bufs[i] = 0;
+               mp->stats.rx_bytes += skb->len;
                ++mp->stats.rx_packets;
            }
        } else {
index 720b50bebd32f4606e596fb3c8ed1d73eb86968f..cb2d5155004d79e2b65b30c5d36135eede0b0058 100644 (file)
@@ -66,6 +66,7 @@ History:
  *************************************************************************/
 
 #include <linux/kernel.h>
+#include <linux/version.h>
 #include <linux/sched.h>
 #include <linux/string.h>
 #include <linux/errno.h>
index be7646b6564e1a9e94c1b56db190ca4bee960730..a81d97d78704876f883dc9897b44c9b7102675e3 100644 (file)
@@ -86,6 +86,9 @@ static const int multicast_filter_limit = 32;
 #if defined(__i386__)  &&  !defined(VIA_USE_MEMORY)
 #define VIA_USE_IO
 #endif
+#if defined(__alpha__)
+#define VIA_USE_IO
+#endif
 #ifdef VIA_USE_IO
 #undef readb
 #undef readw
index f5b86f68112c0974cfa3208fd897eb0a7f5478a1..f7d7468875620ac622a2ee961d94e38de465e287 100644 (file)
@@ -1616,11 +1616,8 @@ wv_set_frequency(u_long          ioaddr, /* I/O port of the card */
   if((frequency->e == 0) &&
      (frequency->m >= 0) && (frequency->m < BAND_NUM))
     {
-      /* frequency in units of 250 kHz (as read in the offset register) */
-      short    bands[] = { 0x30, 0x58, 0x64, 0x7A, 0x80, 0xA8, 0xD0, 0xF0, 0xF8, 0x150 };
-
       /* Get frequency offset. */
-      freq = bands[frequency->m] >> 1;
+      freq = channel_bands[frequency->m] >> 1;
     }
 
   /* Verify that the frequency is allowed. */
@@ -1791,6 +1788,7 @@ wv_frequency_list(u_long  ioaddr, /* I/O port of the card */
   u_short      table[10];      /* Authorized frequency table */
   long         freq = 0L;      /* offset to 2.4 GHz in .5 MHz + 12 MHz */
   int          i;              /* index in the table */
+  int          c = 0;          /* Channel number */
 
   /* Read the frequency table. */
   fee_read(ioaddr, 0x71 /* frequency table */, table, 10);
@@ -1801,6 +1799,12 @@ wv_frequency_list(u_long ioaddr, /* I/O port of the card */
     /* Look in the table if the frequency is allowed */
     if(table[9 - (freq / 16)] & (1 << (freq % 16)))
       {
+       /* Compute approximate channel number */
+       while((((channel_bands[c] >> 1) - 24) < freq) &&
+             (c < NELS(channel_bands)))
+         c++;
+       list[i].i = c;  /* Set the list index */
+
        /* put in the list */
        list[i].m = (((freq + 24) * 5) + 24000L) * 10000;
        list[i++].e = 1;
@@ -1969,14 +1973,12 @@ wavelan_ioctl(struct device *   dev,    /* device on which the ioctl is applied */
        }
       else
        {
-         int   bands[] = { 915e6, 2.425e8, 2.46e8, 2.484e8, 2.4305e8 };
-
          psa_read(ioaddr, lp->hacr, (char *)&psa.psa_subband - (char *)&psa,
                   (unsigned char *)&psa.psa_subband, 1);
 
          if(psa.psa_subband <= 4)
            {
-             wrq->u.freq.m = bands[psa.psa_subband];
+             wrq->u.freq.m = fixed_bands[psa.psa_subband];
              wrq->u.freq.e = (psa.psa_subband != 0);
            }
          else
@@ -1986,9 +1988,9 @@ wavelan_ioctl(struct device *     dev,    /* device on which the ioctl is applied */
 
     case SIOCSIWSENS:
       /* Set the level threshold. */
-      if(!suser())
-       return -EPERM;
-      psa.psa_thr_pre_set = wrq->u.sensitivity & 0x3F;
+      /* We should complain loudly if wrq->u.sens.fixed = 0, because we
+       * can't set auto mode... */
+      psa.psa_thr_pre_set = wrq->u.sens.value & 0x3F;
       psa_write(ioaddr, lp->hacr, (char *)&psa.psa_thr_pre_set - (char *)&psa,
               (unsigned char *) &psa.psa_thr_pre_set, 1);
       /* update the Wavelan checksum */
@@ -2000,7 +2002,8 @@ wavelan_ioctl(struct device *     dev,    /* device on which the ioctl is applied */
       /* Read the level threshold. */
       psa_read(ioaddr, lp->hacr, (char *)&psa.psa_thr_pre_set - (char *)&psa,
               (unsigned char *) &psa.psa_thr_pre_set, 1);
-      wrq->u.sensitivity = psa.psa_thr_pre_set & 0x3F;
+      wrq->u.sens.value = psa.psa_thr_pre_set & 0x3F;
+      wrq->u.sens.fixed = 1;
       break;
 
      case SIOCSIWENCODE:
@@ -2111,6 +2114,9 @@ wavelan_ioctl(struct device *     dev,    /* device on which the ioctl is applied */
          range.max_qual.level = MMR_SIGNAL_LVL;
          range.max_qual.noise = MMR_SILENCE_LVL;
 
+         range.num_bitrates = 1;
+         range.bitrate[0] = 2000000;   /* 2 Mb/s */
+
          /* Copy structure to the user buffer. */
          if (copy_to_user(wrq->u.data.pointer, &range, sizeof(struct iw_range)))
                ret = -EFAULT;
index df9c4934492f997c4bf3167a7912b4f75e74ab34..f55bf48e2ff1a48c34803ea8096ca35bbe71a477 100644 (file)
@@ -19,6 +19,8 @@
 #ifndef _WAVELAN_H
 #define        _WAVELAN_H
 
+/************************** MAGIC NUMBERS ***************************/
+
 /* Detection of the WaveLAN card is done by reading the MAC
  * address from the card and checking it.  If you have a non-AT&T
  * product (OEM, like DEC RoamAbout, Digital Ocean, or Epson),
@@ -39,6 +41,25 @@ const char   MAC_ADDRESSES[][3] =
 
 #define        MAXDATAZ                (WAVELAN_ADDR_SIZE + WAVELAN_ADDR_SIZE + 2 + WAVELAN_MTU)
 
+/*
+ * Constants used to convert channels to frequencies
+ */
+
+/* Frequency available in the 2.0 modem, in units of 250 kHz
+ * (as read in the offset register of the dac area).
+ * Used to map channel numbers used by `wfreqsel' to frequencies
+ */
+const short    channel_bands[] = { 0x30, 0x58, 0x64, 0x7A, 0x80, 0xA8,
+                                   0xD0, 0xF0, 0xF8, 0x150 };
+
+/* Frequencies of the 1.0 modem (fixed frequencies).
+ * Use to map the PSA `subband' to a frequency
+ * Note : all frequencies apart from the first one need to be multiplied by 10
+ */
+const int      fixed_bands[] = { 915e6, 2.425e8, 2.46e8, 2.484e8, 2.4305e8 };
+
+
+
 /*************************** PC INTERFACE ****************************/
 
 /*
index 9a2f16847683e4a8d8087c165ab85f3d79a9de47..5e859136610738c7219dd51e69befdf1be3474a1 100644 (file)
@@ -32,7 +32,7 @@
  * Web page
  * --------
  *     I try to maintain a web page with the Wireless LAN Howto at :
- *             http://www-uk.hpl.hp.com/people/jt/Linux/Wavelan.html
+ *         http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wavelan.html
  *
  * Debugging and options
  * ---------------------
  *     Marc Meertens <Marc.Meertens@Utrecht.NCR.com>,
  *     Pauline Middelink <middelin@polyware.iaf.nl>,
  *     Robert Morris <rtm@das.harvard.edu>,
- *     Jean Tourrilhes <jt@hplb.hpl.hp.com>,
+ *     Jean Tourrilhes <jt@hpl.hp.com>,
  *     Girish Welling <welling@paul.rutgers.edu>,
  *     Clark Woodworth <clark@hiway1.exit109.com>
  *     Yongguang Zhang <ygz@isl.hrl.hac.com>
  *     - Rectify a lot of (useless) debugging code
  *     - Change the way to `#ifdef SET_PSA_CRC'
  *
+ * Changes made for release in 2.2.11 & 2.3.13 :
+ * -------------------------------------------
+ *     - Change e-mail and web page addresses
+ *     - Watchdog timer is now correctly expressed in HZ, not in jiffies
+ *     - Add channel number to the list of frequencies in range
+ *     - Add the (short) list of bit-rates in range
+ *     - Developp a new sensitivity... (sens.value & sens.fixed)
+ *
  * Wishes & dreams:
  * ----------------
- *     - roaming
+ *     - roaming (see Pcmcia driver)
  */
 
 /***************************** INCLUDES *****************************/
 /************************ CONSTANTS & MACROS ************************/
 
 #ifdef DEBUG_VERSION_SHOW
-static const char      *version        = "wavelan.c : v19 (wireless extensions) 20/4/99\n";
+static const char      *version        = "wavelan.c : v20 (wireless extensions) 29/7/99\n";
 #endif
 
 /* Watchdog temporisation */
-#define        WATCHDOG_JIFFIES        256     /* TODO:  express in HZ. */
+#define        WATCHDOG_JIFFIES        (256*HZ/100)
 
 /* Macro to get the number of elements in an array */
 #define        NELS(a)                         (sizeof(a) / sizeof(a[0]))
index d5fbbd59a2d72a2c34f56f3952416c1917d7dbf6..20a2f1edaa3e90123e9ab736a05cde2386cc6ae3 100644 (file)
@@ -1,3 +1,22 @@
+Wed Jul 21 1999 23:00 Gerard Roudier (groudier@club-internet.fr)
+       * revision 3.2a-2
+       - merge of driver 3.2a-1 with linux-2.3.11-pre3
+
+Sun May 9  15:00 1999 Gerard Roudier (groudier@club-internet.fr)
+       * revision 3.2a-1
+       - Fix the misdetection of SYM53C875E (was detected as a 876).
+       - Set the actual host ID used for each host in the scsi host data 
+         structure. The mid-layer SCSI driver needs this information.
+
+Sun Apr 11  10:00 1999 Gerard Roudier (groudier@club-internet.fr)
+       * revision 3.2a
+       - Add 'hostid:#id' boot option. This option allows to change the 
+         default SCSI id the driver uses for controllers.
+       - Remove nvram layouts and driver set-up structures from the C source,
+         and use the one defined in sym53c8xx_defs.h file.
+         (shared by both drivers).
+       - Set for now MAX LUNS to 16 (instead of 8).
+
 Thu Mar 11  23:00 1999 Gerard Roudier (groudier@club-internet.fr)
        * revision 3.2    (8xx-896 driver bundle)
        - Only define the host template in ncr53c8xx.h and include the 
index 98656d35974a680f4c740f24f2ceb437b45327ba..cc363ef2b39d4d38c31931d7e9fcb0e881966223 100644 (file)
@@ -1,3 +1,40 @@
+Sat Jul 24  12:00 1999 Gerard Roudier (groudier@club-internet.fr)
+       * version sym53c8xx-1.3g
+       - merge of driver 1.3f with linux-2.2.11-pre3
+       - remove the broken testing of the chip being connected to SCSI 
+         from the SCSI interrupt handling code.   
+
+Sun May 9  15:00 1999 Gerard Roudier (groudier@club-internet.fr)
+       * version sym53c8xx-1.3f
+       - Fix the misdetection of SYM53C875E (was detected as a 876).
+       - Fix the misdetection of SYM53C810 not A (was detected as a 810A).
+       - Support for the 53C895A by Pamela Delaney <pam.delaney@lsil.com>
+         The 53C895A contains all of the features of the 896 but has only 
+         one channel and has a 32 bit PCI bus. It does 64 bit PCI addressing 
+         using dual cycle PCI data transfers.
+       - Call request_region() event if MMIO is used and not normal IO.
+         This allows sym and the ncr driver to be loaded in any order 
+         without any risk of attaching the same device.
+       - Set the actual host ID used for each host in the scsi host data 
+         structure. The mid-layer SCSI driver needs this information.
+       - Miscellaneous minor fixes.
+
+Tue Apr 15  10:00 1999 Gerard Roudier (groudier@club-internet.fr)
+       * version sym53c8xx-1.3e
+       - Support for any number of LUNs (64) (SPI2-compliant).
+         (Btw, this may only be ever usefull under linux-2.2 ;-))
+
+Sun Apr 11  10:00 1999 Gerard Roudier (groudier@club-internet.fr)
+       * version sym53c8xx-1.3d
+       - Add 'hostid:#id' boot option. This option allows to change the 
+         default SCSI id the driver uses for controllers.
+       - Make SCRIPTS not use self-mastering for PCI.
+         There were still 2 places the driver used this feature of the 
+         53C8XX family.
+       - Move some data structures (nvram layouts and driver set-up) to 
+         the sym53c8xx_defs.h file. So, the both drivers will share them.
+       - Set MAX LUNS to 16 (instead of 8).
+
 Sat Mar 20  21:00 1999 Gerard Roudier (groudier@club-internet.fr)
        * version sym53c8xx-1.3b
        - Add support for NCR PQS PDS.
index 2fa1956a2889321be004f0732a04ce64de62e0d6..92bda21a17631b6237e1451b1a453921faf3134d 100644 (file)
@@ -4,7 +4,7 @@ Written by Gerard Roudier <groudier@club-internet.fr>
 21 Rue Carnot
 95170 DEUIL LA BARRE - FRANCE
 
-10 March 1999
+9 May 1999
 ===============================================================================
 
 1.  Introduction
@@ -736,6 +736,13 @@ Fix up PCI configuration space
 Serial NVRAM
     nvram:n     do not look for serial NVRAM
     nvram:y     test controllers for onboard serial NVRAM
+    (alternate binary form)
+    mvram=<bits options>
+      0x01   look for NVRAM  (equivalent to nvram=y)
+      0x02   ignore NVRAM "Synchronous negotiation" parameters for all devices
+      0x04   ignore NVRAM "Wide negotiation"  parameter for all devices
+      0x08   ignore NVRAM "Scan at boot time" parameter for all devices
+      0x80   also attach controllers set to OFF in the NVRAM (sym53c8xx only)
 
 Check SCSI BUS 
     buschk:<option bits>
@@ -745,13 +752,23 @@ Check SCSI BUS
         0x1:   Check and donnot attach the controller on error.  
         0x2:   Check and just warn on error.
 
-Exclude hosts from being attached
+Exclude a host from being attached
     excl=<io_address>
 
     Prevent host at a given io address from being attached.
-    For example 'ncr53c8xx=excl:0xb400,excl:0xc000' indicate to the 
+    For example 'ncr53c8xx=excl:0xb400,excl:0xc000' indicates to the 
     ncr53c8xx driver not to attach hosts at address 0xb400 and 0xc000.
 
+Suggest a default SCSI id for hosts
+    hostid:255 no id suggested.
+    hostid:#x   (0 < x < 7) x suggested for hosts SCSI id.
+
+    If a host SCSI id is available from the NVRAM, the driver will ignore 
+    any value suggested as boot option. Otherwise, if a suggested value 
+    different from 255 has been supplied, it will use it. Otherwise, it will 
+    try to deduce the value previously set in the hardware and use value 
+    7 if the hardware value is zero.
+
 Boot fail safe
     safe:y     load the following assumed fail safe initial setup
 
@@ -837,7 +854,11 @@ use them too.
 nvram:n     do not look for serial NVRAM
 nvram:y     test controllers for onboard serial NVRAM
 
-This option is described below (see 17. Serial NVRAM support).
+This option can also been entered as an hexadecimal value that allows 
+to control what information the driver will get from the NVRAM and what 
+information it will ignore.
+For details see '17. Serial NVRAM support'.
+
 When this option is enabled, the driver tries to detect all boards using 
 a Serial NVRAM. This memory is used to hold user set up parameters.
 
@@ -873,12 +894,17 @@ mvram=<bits options>
       0x02   ignore NVRAM "Synchronous negotiation" parameters for all devices
       0x04   ignore NVRAM "Wide negotiation"  parameter for all devices
       0x08   ignore NVRAM "Scan at boot time" parameter for all devices
+      0x80   also attach controllers set to OFF in the NVRAM (sym53c8xx only)
 
-My Atlas Wide only boots cleanly in 8 bits asynchronous data transfer 
-mode. However, it works flawlessly at 20 MB/second with the driver.
-Using "nvram=0x7" allows me to boot in 8 bits/async and to let the driver 
-use its setup for synchronous and wide negotiations.
+Option 0x80 is only supported by the sym53c8xx driver and is disabled by 
+default. Result is that, by default (option not set), the sym53c8xx driver 
+will not attach controllers set to OFF in the NVRAM.
 
+The ncr53c8xx always tries to attach all the controllers. Option 0x80 has 
+not been added to the ncr53c8xx driver, since it has been reported to 
+confuse users who use this driver since a long time. If you desire a 
+controller not to be attached by the ncr53c8xx driver at Linux boot, you 
+must use the 'excl' driver boot option.
 
 10.6 SCSI BUS checking boot option.
 
index 49ee2e9fdfb87b500ca50dc2b8db2735ee573566..f62246ffac8050458818a7865c6edc6ad02f1dee 100644 (file)
@@ -1,6 +1,10 @@
 /*
  *      eata.c - Low-level driver for EATA/DMA SCSI host adapters.
  *
+ *      22 Jul 1999 Rev. 5.00 for linux 2.2.10 and 2.3.11
+ *        + Removed pre-2.2 source code compatibility.
+ *        + Added call to pci_set_master.
+ *
  *      26 Jul 1998 Rev. 4.33 for linux 2.0.35 and 2.1.111
  *        + Added command line option (rs:[y|n]) to reverse the scan order
  *          of PCI boards. The default is rs:y, which reverses the BIOS order
  *          This driver is based on the CAM (Common Access Method Committee)
  *          EATA (Enhanced AT Bus Attachment) rev. 2.0A, using DMA protocol.
  *
- *  Copyright (C) 1994-1998 Dario Ballabio (dario@milano.europe.dg.com)
+ *  Copyright (C) 1994-1999 Dario Ballabio (dario@milano.europe.dg.com)
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that redistributions of source
  *  After the optional list of detection probes, other possible command line
  *  options are:
  *
- *  eh:y  use new scsi code (linux 2.2 only);
+ *  eh:y  use new scsi code;
  *  eh:n  use old scsi code;
  *  et:y  force use of extended translation (255 heads, 63 sectors);
  *  et:n  use disk geometry detected by scsicam_bios_param;
 #if defined(MODULE)
 #include <linux/module.h>
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,26)
 MODULE_PARM(io_port, "1-" __MODULE_STRING(MAX_INT_PARAM) "i");
 MODULE_PARM(linked_comm, "i");
 MODULE_PARM(tagged_comm, "i");
@@ -370,7 +373,6 @@ MODULE_PARM(use_new_eh_code, "i");
 MODULE_PARM(ext_tran, "i");
 MODULE_PARM(rev_scan, "i");
 MODULE_AUTHOR("Dario Ballabio");
-#endif
 
 #endif
 
@@ -393,46 +395,17 @@ MODULE_AUTHOR("Dario Ballabio");
 #include <linux/stat.h>
 #include <linux/config.h>
 #include <linux/pci.h>
-
-#if LINUX_VERSION_CODE < LinuxVersionCode(2,1,93)
-#include <linux/bios32.h>
-#endif
-
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,36)
 #include <linux/init.h>
-#else
-#define __initfunc(A) A
-#define __initdata
-#define __init
-#endif
-
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,101)
 #include <asm/spinlock.h>
-#define IRQ_FLAGS
-#define IRQ_LOCK
-#define IRQ_LOCK_SAVE
-#define IRQ_UNLOCK
-#define IRQ_UNLOCK_RESTORE
+
 #define SPIN_FLAGS unsigned long spin_flags;
 #define SPIN_LOCK spin_lock_irq(&io_request_lock);
 #define SPIN_LOCK_SAVE spin_lock_irqsave(&io_request_lock, spin_flags);
 #define SPIN_UNLOCK spin_unlock_irq(&io_request_lock);
 #define SPIN_UNLOCK_RESTORE \
                   spin_unlock_irqrestore(&io_request_lock, spin_flags);
+
 static int use_new_eh_code = TRUE;
-#else
-#define IRQ_FLAGS unsigned long irq_flags;
-#define IRQ_LOCK cli();
-#define IRQ_LOCK_SAVE do {save_flags(irq_flags); cli();} while (0);
-#define IRQ_UNLOCK sti();
-#define IRQ_UNLOCK_RESTORE do {restore_flags(irq_flags);} while (0);
-#define SPIN_FLAGS
-#define SPIN_LOCK
-#define SPIN_LOCK_SAVE
-#define SPIN_UNLOCK
-#define SPIN_UNLOCK_RESTORE
-static int use_new_eh_code = FALSE;
-#endif
 
 struct proc_dir_entry proc_scsi_eata2x = {
     PROC_SCSI_EATA2X, 6, "eata2x",
@@ -727,9 +700,7 @@ static int max_queue_depth = MAX_CMD_PER_LUN;
 static void select_queue_depths(struct Scsi_Host *host, Scsi_Device *devlist) {
    Scsi_Device *dev;
    int j, ntag = 0, nuntag = 0, tqd, utqd;
-   IRQ_FLAGS
 
-   IRQ_LOCK_SAVE
    j = ((struct hostdata *) host->hostdata)->board_number;
 
    for(dev = devlist; dev; dev = dev->next) {
@@ -782,7 +753,6 @@ static void select_queue_depths(struct Scsi_Host *host, Scsi_Device *devlist) {
              dev->queue_depth, link_suffix, tag_suffix);
       }
 
-   IRQ_UNLOCK_RESTORE
    return;
 }
 
@@ -829,13 +799,43 @@ static inline int read_pio(unsigned long iobase, ushort *start, ushort *end) {
    return FALSE;
 }
 
+__initfunc (static inline void tune_pci_port(unsigned long port_base)) {
+
+#if defined(CONFIG_PCI)
+
+   unsigned int addr, k;
+   struct pci_dev *dev = NULL;
+
+   if (!pci_present()) return;
+
+   for (k = 0; k < MAX_PCI; k++) {
+
+      if (!(dev = pci_find_class(PCI_CLASS_STORAGE_SCSI << 8, dev))) break;
+
+      if (pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &addr)) continue;
+
+#if defined(DEBUG_PCI_DETECT)
+      printk("%s: tune_pci_port, bus %d, devfn 0x%x, addr 0x%x.\n",
+             driver_name, dev->bus->number, dev->devfn, addr);
+#endif
+
+      if ((addr & PCI_BASE_ADDRESS_IO_MASK) + PCI_BASE_ADDRESS_0 == port_base) {
+         pci_set_master(dev);
+         return;
+         }
+
+      }
+
+#endif /* end CONFIG_PCI */
+
+   return;
+}
+
 __initfunc (static inline int
             get_pci_irq(unsigned long port_base, unsigned char *apic_irq)) {
 
 #if defined(CONFIG_PCI)
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,93)
-
    unsigned int addr;
    struct pci_dev *dev = NULL;
 
@@ -850,9 +850,6 @@ __initfunc (static inline int
              driver_name, dev->bus->number, dev->devfn, addr, dev->irq);
 #endif
 
-      if ((addr & PCI_BASE_ADDRESS_SPACE) != PCI_BASE_ADDRESS_SPACE_IO)
-             continue;
-
       if ((addr & PCI_BASE_ADDRESS_IO_MASK) + PCI_BASE_ADDRESS_0 == port_base) {
          *apic_irq = dev->irq;
          return TRUE;
@@ -860,8 +857,6 @@ __initfunc (static inline int
 
       }
 
-#endif /* end new style PCI code */
-
 #endif /* end CONFIG_PCI */
 
    return FALSE;
@@ -1106,14 +1101,10 @@ __initfunc (static inline int port_detect \
       }
    else                                 tag_type = 'n';
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,101)
    sh[j]->hostt->use_new_eh_code = use_new_eh_code;
-#else
-   use_new_eh_code = FALSE;
-#endif
 
    if (j == 0) {
-      printk("EATA/DMA 2.0x: Copyright (C) 1994-1998 Dario Ballabio.\n");
+      printk("EATA/DMA 2.0x: Copyright (C) 1994-1999 Dario Ballabio.\n");
       printk("%s config options -> tc:%c, lc:%c, mq:%d, eh:%c, rs:%c, et:%c.\n",
              driver_name, tag_type, YESNO(linked_comm), max_queue_depth,
              YESNO(use_new_eh_code), YESNO(rev_scan), YESNO(ext_tran));
@@ -1149,6 +1140,7 @@ __initfunc (static inline int port_detect \
              info.pci, info.eisa, info.raidnum);
 #endif
 
+   tune_pci_port(sh[j]->io_port);
    return TRUE;
 }
 
@@ -1194,8 +1186,6 @@ __initfunc (static void add_pci_ports(void)) {
 
    unsigned int addr, k;
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,93)
-
    struct pci_dev *dev = NULL;
 
    if (!pci_present()) return;
@@ -1219,36 +1209,6 @@ __initfunc (static void add_pci_ports(void)) {
              (addr & PCI_BASE_ADDRESS_IO_MASK) + PCI_BASE_ADDRESS_0;
       }
 
-#else  /* else old style PCI code */
-
-   unsigned short i = 0;
-   unsigned char bus, devfn;
-
-   if (!pcibios_present()) return;
-
-   for (k = 0; k < MAX_PCI; k++) {
-
-      if (pcibios_find_class(PCI_CLASS_STORAGE_SCSI << 8, i++, &bus, &devfn)
-             != PCIBIOS_SUCCESSFUL) break;
-
-      if (pcibios_read_config_dword(bus, devfn, PCI_BASE_ADDRESS_0, &addr)
-             != PCIBIOS_SUCCESSFUL) continue;
-
-#if defined(DEBUG_PCI_DETECT)
-      printk("%s: detect, seq. %d, bus %d, devfn 0x%x, addr 0x%x.\n",
-             driver_name, k, bus, devfn, addr);
-#endif
-
-      if ((addr & PCI_BASE_ADDRESS_SPACE) != PCI_BASE_ADDRESS_SPACE_IO)
-             continue;
-
-      /* Order addresses according to rev_scan value */
-      io_port[MAX_INT_PARAM + (rev_scan ? (MAX_PCI - k) : (1 + k))] =
-             (addr & PCI_BASE_ADDRESS_IO_MASK) + PCI_BASE_ADDRESS_0;
-      }
-
-#endif /* end old style PCI code */
-
 #endif /* end CONFIG_PCI */
 
    return;
@@ -1256,9 +1216,7 @@ __initfunc (static void add_pci_ports(void)) {
 
 __initfunc (int eata2x_detect(Scsi_Host_Template *tpnt)) {
    unsigned int j = 0, k;
-   IRQ_FLAGS
 
-   IRQ_LOCK_SAVE
    tpnt->proc_dir = &proc_scsi_eata2x;
 
 #if defined(MODULE)
@@ -1281,7 +1239,6 @@ __initfunc (int eata2x_detect(Scsi_Host_Template *tpnt)) {
       }
 
    num_boards = j;
-   IRQ_UNLOCK_RESTORE
    return j;
 }
 
@@ -1439,11 +1396,8 @@ static inline int do_qcomm(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)) {
 
 int eata2x_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)) {
    int rtn;
-   IRQ_FLAGS
 
-   IRQ_LOCK_SAVE
    rtn = do_qcomm(SCpnt, done);
-   IRQ_UNLOCK_RESTORE
    return rtn;
 }
 
@@ -1515,16 +1469,11 @@ static inline int do_old_abort(Scsi_Cmnd *SCarg) {
 
 int eata2x_old_abort(Scsi_Cmnd *SCarg) {
    int rtn;
-   IRQ_FLAGS
 
-   IRQ_LOCK_SAVE
    rtn = do_old_abort(SCarg);
-   IRQ_UNLOCK_RESTORE
    return rtn;
 }
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,101)
-
 static inline int do_abort(Scsi_Cmnd *SCarg) {
    unsigned int i, j;
 
@@ -1602,8 +1551,6 @@ int eata2x_abort(Scsi_Cmnd *SCarg) {
    return do_abort(SCarg);
 }
 
-#endif /* new_eh_code */
-
 static inline int do_old_reset(Scsi_Cmnd *SCarg) {
    unsigned int i, j, time, k, c, limit = 0;
    int arg_done = FALSE;
@@ -1690,10 +1637,8 @@ static inline int do_old_reset(Scsi_Cmnd *SCarg) {
 
    HD(j)->in_reset = TRUE;
    SPIN_UNLOCK
-   IRQ_UNLOCK
    time = jiffies;
    while ((jiffies - time) < (10 * HZ) && limit++ < 200000) udelay(100L);
-   IRQ_LOCK
    SPIN_LOCK
    printk("%s: reset, interrupts disabled, loops %d.\n", BN(j), limit);
 
@@ -1729,7 +1674,6 @@ static inline int do_old_reset(Scsi_Cmnd *SCarg) {
          continue;
 
       SCpnt->scsi_done(SCpnt);
-      IRQ_LOCK
       }
 
    HD(j)->in_reset = FALSE;
@@ -1747,16 +1691,11 @@ static inline int do_old_reset(Scsi_Cmnd *SCarg) {
 
 int eata2x_old_reset(Scsi_Cmnd *SCarg, unsigned int reset_flags) {
    int rtn;
-   IRQ_FLAGS
 
-   IRQ_LOCK_SAVE
    rtn = do_old_reset(SCarg);
-   IRQ_UNLOCK_RESTORE
    return rtn;
 }
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,101)
-
 static inline int do_reset(Scsi_Cmnd *SCarg) {
    unsigned int i, j, time, k, c, limit = 0;
    int arg_done = FALSE;
@@ -1837,10 +1776,8 @@ static inline int do_reset(Scsi_Cmnd *SCarg) {
 
    HD(j)->in_reset = TRUE;
    SPIN_UNLOCK
-   IRQ_UNLOCK
    time = jiffies;
    while ((jiffies - time) < (10 * HZ) && limit++ < 200000) udelay(100L);
-   IRQ_LOCK
    SPIN_LOCK
    printk("%s: reset, interrupts disabled, loops %d.\n", BN(j), limit);
 
@@ -1876,7 +1813,6 @@ static inline int do_reset(Scsi_Cmnd *SCarg) {
          continue;
 
       SCpnt->scsi_done(SCpnt);
-      IRQ_LOCK
       }
 
    HD(j)->in_reset = FALSE;
@@ -1893,8 +1829,6 @@ int eata2x_reset(Scsi_Cmnd *SCarg) {
    return do_reset(SCarg);
 }
 
-#endif /* new_eh_code */
-
 int eata2x_biosparam(Disk *disk, kdev_t dev, int *dkinfo) {
    int size = disk->capacity;
 
@@ -2290,24 +2224,18 @@ static inline void ihdlr(int irq, unsigned int j) {
 
 static void do_interrupt_handler(int irq, void *shap, struct pt_regs *regs) {
    unsigned int j;
-   IRQ_FLAGS
    SPIN_FLAGS
 
    /* Check if the interrupt must be processed by this handler */
    if ((j = (unsigned int)((char *)shap - sha)) >= num_boards) return;
 
    SPIN_LOCK_SAVE
-   IRQ_LOCK_SAVE
    ihdlr(irq, j);
-   IRQ_UNLOCK_RESTORE
    SPIN_UNLOCK_RESTORE
 }
 
 int eata2x_release(struct Scsi_Host *shpnt) {
    unsigned int i, j;
-   IRQ_FLAGS
-
-   IRQ_LOCK_SAVE
 
    for (j = 0; sh[j] != NULL && sh[j] != shpnt; j++);
 
@@ -2323,7 +2251,6 @@ int eata2x_release(struct Scsi_Host *shpnt) {
 
    release_region(sh[j]->io_port, sh[j]->n_io_port);
    scsi_unregister(sh[j]);
-   IRQ_UNLOCK_RESTORE
    return FALSE;
 }
 
index f1641f42d469269b0143b74f07ac26f13f1de1b8..8e687c758d43114ed6787a20f5fa299efbd9037a 100644 (file)
@@ -16,12 +16,10 @@ int eata2x_reset(Scsi_Cmnd *);
 int eata2x_old_reset(Scsi_Cmnd *, unsigned int);
 int eata2x_biosparam(Disk *, kdev_t, int *);
 
-#define EATA_VERSION "4.33.00"
+#define EATA_VERSION "5.00.00"
 
 #define LinuxVersionCode(v, p, s) (((v)<<16)+((p)<<8)+(s))
 
-#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,101)
-
 #define EATA {                                                               \
                 name:              "EATA/DMA 2.0x rev. " EATA_VERSION " ",   \
                 detect:                  eata2x_detect,                      \
@@ -40,21 +38,4 @@ int eata2x_biosparam(Disk *, kdev_t, int *);
                 use_new_eh_code:         1    /* Enable new error code */    \
              }
 
-#else /* Use old scsi code */
-
-#define EATA {                                                               \
-                name:              "EATA/DMA 2.0x rev. " EATA_VERSION " ",   \
-                detect:                  eata2x_detect,                      \
-                release:                 eata2x_release,                     \
-                queuecommand:            eata2x_queuecommand,                \
-                abort:                   eata2x_old_abort,                   \
-                reset:                   eata2x_old_reset,                   \
-                bios_param:              eata2x_biosparam,                   \
-                this_id:                 7,                                  \
-                unchecked_isa_dma:       1,                                  \
-                use_clustering:          ENABLE_CLUSTERING                   \
-             }
-
-#endif
-
 #endif
index 088a2f19e9fd568ffffadc1f0c2eaf6cd8add3ef..dc69ac4e30f3da1e1f17bbc16495d2127cea0aaf 100644 (file)
@@ -218,8 +218,8 @@ extern int tul_num_ch;
 
 
 static void tul_do_pause(unsigned amount)
-{                              /* Pause for amount*10 milliseconds */
-       unsigned long the_time = jiffies + amount;      /* 0.01 seconds per jiffy */
+{                              /* Pause for amount jiffies */
+       unsigned long the_time = jiffies + amount;
 
 #if LINUX_VERSION_CODE >= CVT_LINUX_VERSION(2,1,95)
        while (time_before_eq(jiffies, the_time));
@@ -579,7 +579,7 @@ int tul_reset_scsi(HCS * pCurHcb, int seconds)
 
        /* Stall for a while, wait for target's firmware ready,make it 2 sec ! */
        /* SONY 5200 tape drive won't work if only stall for 1 sec */
-       tul_do_pause(seconds * 100);
+       tul_do_pause(seconds * HZ);
 
        TUL_RD(pCurHcb->HCS_Base, TUL_SInt);
 
index 6848f8ea81b7d673a54a7870a1b43d4883c7cce7..97e984fed5cd07ae789dc71a9a86ae0557270b89 100644 (file)
@@ -219,7 +219,7 @@ static inline void idescsi_transform_pc2 (ide_drive_t *drive, idescsi_pc_t *pc)
 
        if (!test_bit(PC_TRANSFORM, &pc->flags))
                return;
-       if (drive->media == ide_cdrom || drive->media == ide_optical) {
+       if (!pc->scsi_cmd->use_sg && (drive->media == ide_cdrom || drive->media == ide_optical)) {
                if (pc->c[0] == MODE_SENSE_10 && sc[0] == MODE_SENSE) {
                        scsi_buf[0] = atapi_buf[1];             /* Mode data length */
                        scsi_buf[1] = atapi_buf[2];             /* Medium type */
index 6dba96b62539eb6238d1922ffa6d9c379c5a472d..e23fc28765c00c8ccdcae4ecd3fc1752ef9a6880 100644 (file)
  *               pSRB_tail members of the HCS structure.
  * 09/01/99 bv - v1.03d
  *             - Fixed a deadlock problem in SMP.
+ * 21/01/99 bv - v1.03e
+ *             - Add support for the Domex 3192U PCI SCSI
+ *               This is a slightly modified patch by
+ *               Brian Macy <bmacy@sunshinecomputing.com>
+ * 22/02/99 bv - v1.03f
+ *             - Didn't detect the INIC-950 in 2.0.x correctly.
+ *               Now fixed.
+ * 05/07/99 bv - v1.03g
+ *             - Changed the assumption that HZ = 100
  **************************************************************************/
 
 #define CVT_LINUX_VERSION(V,P,S)        (V * 65536 + P * 256 + S)
@@ -175,7 +184,7 @@ Scsi_Host_Template driver_template = INI9100U;
 char *i91uCopyright = "Copyright (C) 1996-98";
 char *i91uInitioName = "by Initio Corporation";
 char *i91uProductName = "INI-9X00U/UW";
-char *i91uVersion = "v1.03d";
+char *i91uVersion = "v1.03g";
 
 #if LINUX_VERSION_CODE >= CVT_LINUX_VERSION(1,3,0)
 struct proc_dir_entry proc_scsi_ini9100u =
@@ -247,17 +256,12 @@ extern int tul_device_reset(HCS * pCurHcb, ULONG pSrb, unsigned int target, unsi
                                /* ---- EXTERNAL VARIABLES ---- */
 extern HCS tul_hcs[];
 
-struct id {
-  int vendor_id;
-  int device_id;
-};
-
-const struct id id_table[] = {
-  { INI_VENDOR_ID, I950_DEVICE_ID },
-  { INI_VENDOR_ID, I940_DEVICE_ID },
-  { INI_VENDOR_ID, I935_DEVICE_ID },
-  { INI_VENDOR_ID, 0x0002 },
-  { DMX_VENDOR_ID, 0x0002 },
+const PCI_ID i91u_pci_devices[] = {
+       { INI_VENDOR_ID, I950_DEVICE_ID },
+       { INI_VENDOR_ID, I940_DEVICE_ID },
+       { INI_VENDOR_ID, I935_DEVICE_ID },
+       { INI_VENDOR_ID, I920_DEVICE_ID },
+       { DMX_VENDOR_ID, I920_DEVICE_ID },
 };
 
 /*
@@ -351,14 +355,13 @@ int tul_NewReturnNumberOfAdapters(void)
        int iAdapters = 0;
        long dRegValue;
        WORD wBIOS;
-       const int iNumIdEntries = sizeof(id_table)/sizeof(id_table[0]);
        int i = 0;
 
        init_i91uAdapter_table();
 
-       for (i=0; i < iNumIdEntries; i++) {
-               struct id curId = id_table[i];
-               while ((pDev = pci_find_device(curId.vendor_id, curId.device_id, pDev)) != NULL) {
+       for (i = 0; i < TULSZ(i91u_pci_devices); i++)
+       {
+               while ((pDev = pci_find_device(i91u_pci_devices[i].vendor_id, i91u_pci_devices[i].device_id, pDev)) != NULL) {
                        pci_read_config_dword(pDev, 0x44, (u32 *) & dRegValue);
                        wBIOS = (UWORD) (dRegValue & 0xFF);
                        if (((dRegValue & 0xFF00) >> 8) == 0xFF)
@@ -366,8 +369,8 @@ int tul_NewReturnNumberOfAdapters(void)
                        wBIOS = (wBIOS << 8) + ((UWORD) ((dRegValue & 0xFF00) >> 8));
                        if (Addi91u_into_Adapter_table(wBIOS,
                                                        (pDev->base_address[0] & 0xFFFE),
-                                                       pDev->irq,
-                                                       pDev->bus->number,
+                                                       pDev->irq,
+                                                       pDev->bus->number,
                                                        (pDev->devfn >> 3)
                                ) == 0)
                                iAdapters++;
@@ -394,17 +397,6 @@ int tul_ReturnNumberOfAdapters(void)
        unsigned short command;
        WORD wBIOS, wBASE;
        BYTE bPCIBusNum, bInterrupt, bPCIDeviceNum;
-       struct {
-               unsigned short vendor_id;
-               unsigned short device_id;
-       } const i91u_pci_devices[] =
-       {
-               {INI_VENDOR_ID, I935_DEVICE_ID},
-               {INI_VENDOR_ID, I940_DEVICE_ID},
-               {INI_VENDOR_ID, I950_DEVICE_ID},
-               {INI_VENDOR_ID, I920_DEVICE_ID}
-       };
-
 
        iAdapters = 0;
        /*
@@ -415,57 +407,25 @@ int tul_ReturnNumberOfAdapters(void)
                unsigned long page_offset, base;
 #endif
 
-#if LINUX_VERSION_CODE > CVT_LINUX_VERSION(2,1,92)
-               struct pci_dev *pdev = NULL;
-#else
                int index;
                unsigned char pci_bus, pci_devfn;
-#endif
 
                bPCIBusNum = 0;
                bPCIDeviceNum = 0;
                init_i91uAdapter_table();
                for (i = 0; i < TULSZ(i91u_pci_devices); i++) {
-#if LINUX_VERSION_CODE > CVT_LINUX_VERSION(2,1,92)
-                       pdev = NULL;
-                       while ((pdev = pci_find_device(i91u_pci_devices[i].vendor_id,
-                                          i91u_pci_devices[i].device_id,
-                                                      pdev)))
-#else
                        index = 0;
                        while (!(pcibios_find_device(i91u_pci_devices[i].vendor_id,
                                           i91u_pci_devices[i].device_id,
                                         index++, &pci_bus, &pci_devfn)))
-#endif
                        {
-                               if (i == 0) {
-                                       /*
+                               if (i == 2) {
                                           printk("i91u: The RAID controller is not supported by\n");
                                           printk("i91u:         this driver, we are ignoring it.\n");
-                                        */
                                } else {
                                        /*
                                         * Read sundry information from PCI BIOS.
                                         */
-#if LINUX_VERSION_CODE > CVT_LINUX_VERSION(2,1,92)
-                                       bPCIBusNum = pdev->bus->number;
-                                       bPCIDeviceNum = pdev->devfn;
-                                       dRegValue = pdev->base_address[0];
-                                       if (dRegValue == -1) {  /* Check return code            */
-                                               printk("\n\ri91u: tulip read configuration error.\n");
-                                               return (0);     /* Read configuration space error  */
-                                       }
-                                       /* <02> read from base address + 0x50 offset to get the wBIOS balue. */
-                                       wBASE = (WORD) dRegValue;
-
-                                       /* Now read the interrupt line  */
-                                       dRegValue = pdev->irq;
-                                       bInterrupt = dRegValue & 0xFF;  /* Assign interrupt line      */
-                                       pci_read_config_word(pdev, PCI_COMMAND, &command);
-                                       pci_write_config_word(pdev, PCI_COMMAND,
-                                                             command | PCI_COMMAND_MASTER | PCI_COMMAND_IO);
-
-#else
                                        bPCIBusNum = pci_bus;
                                        bPCIDeviceNum = pci_devfn;
                                        pcibios_read_config_dword(pci_bus, pci_devfn, PCI_BASE_ADDRESS_0,
@@ -484,7 +444,6 @@ int tul_ReturnNumberOfAdapters(void)
                                        pcibios_read_config_word(pci_bus, pci_devfn, PCI_COMMAND, &command);
                                        pcibios_write_config_word(pci_bus, pci_devfn, PCI_COMMAND,
                                                                  command | PCI_COMMAND_MASTER | PCI_COMMAND_IO);
-#endif
                                        wBASE &= PCI_BASE_ADDRESS_IO_MASK;
                                        wBIOS = TUL_RDWORD(wBASE, 0x50);
 
index fa2c6c53709deca392eb1917b5a17103f5a34473..14302f256ea63c99bbaebbab8561442ca86e045c 100644 (file)
@@ -63,7 +63,9 @@
  *             - Removed unused code
  * 12/13/98 bv - v1.03b
  *             - Add spinlocks to HCS structure.
-*******************************************************************************/
+ * 21/01/99 bv - v1.03e
+ *             - Added PCI_ID structure
+ **************************************************************************/
 
 #ifndef        CVT_LINUX_VERSION
 #define        CVT_LINUX_VERSION(V,P,S)        (((V) * 65536) + ((P) * 256) + (S))
@@ -88,7 +90,7 @@ extern struct proc_dir_entry proc_scsi_ini9100u;
 extern int i91u_biosparam(Disk *, int, int *); /*for linux v1.13 */
 #endif
 
-#define i91u_REVID "Initio INI-9X00U/UW SCSI device driver; Revision: 1.03d"
+#define i91u_REVID "Initio INI-9X00U/UW SCSI device driver; Revision: 1.03g"
 
 #if LINUX_VERSION_CODE < CVT_LINUX_VERSION(1, 3, 0)
 #define INI9100U       { \
@@ -207,12 +209,20 @@ extern int i91u_biosparam(Disk *, int, int *);    /*for linux v1.13 */
 #define SENSE_SIZE             14
 
 #define INI_VENDOR_ID   0x1101 /* Initio's PCI vendor ID       */
-#define DMX_VENDOR_ID   0x134a /* Domex's PCI vendor ID       */
+#define DMX_VENDOR_ID  0x134a  /* Domex's PCI vendor ID        */
 #define I950_DEVICE_ID 0x9500  /* Initio's inic-950 product ID   */
 #define I940_DEVICE_ID 0x9400  /* Initio's inic-940 product ID   */
 #define I935_DEVICE_ID 0x9401  /* Initio's inic-935 product ID   */
 #define I920_DEVICE_ID 0x0002  /* Initio's other product ID      */
 
+/************************************************************************/
+/*              Vendor ID/Device ID Pair Structure                     */
+/************************************************************************/
+typedef struct PCI_ID_Struc {
+       unsigned short vendor_id;
+       unsigned short device_id;
+} PCI_ID;
+
 /************************************************************************/
 /*              Scatter-Gather Element Structure                        */
 /************************************************************************/
index b082170b5ce08c43e8a78876f8ecb221c7618e35..5fec7d399bb9df118a728abca158398657ebcca8 100644 (file)
@@ -73,7 +73,7 @@
 */
 
 /*
-**     March 7 1999, version 3.2
+**     July 20 1999, version 3.2a-2
 **
 **     Supported SCSI-II features:
 **         Synchronous negotiation
@@ -91,6 +91,8 @@
 **             53C860          (8 bits, Fast 20,     no rom BIOS)
 **             53C875          (Wide,   Fast 20,     on board rom BIOS)
 **             53C895          (Wide,   Fast 40,     on board rom BIOS)
+**             53C895A         (Wide,   Fast 40,     on board rom BIOS)
+**             53C896          (Wide,   Fast 40,     on board rom BIOS)
 **
 **     Other features:
 **             Memory mapped IO (linux-1.3.X and above only)
 /*
 **     Name and version of the driver
 */
-#define SCSI_NCR_DRIVER_NAME   "ncr53c8xx - version 3.2"
+#define SCSI_NCR_DRIVER_NAME   "ncr53c8xx - version 3.2a-2"
 
 #define SCSI_NCR_DEBUG_FLAGS   (0)
 
@@ -737,34 +739,6 @@ static int ncr53c8xx_proc_info(char *buffer, char **start, off_t offset,
 **     This structure is initialized from linux config options.
 **     It can be overridden at boot-up by the boot command line.
 */
-#define SCSI_NCR_MAX_EXCLUDES 8
-struct ncr_driver_setup {
-       u_char  master_parity;
-       u_char  scsi_parity;
-       u_char  disconnection;
-       u_char  special_features;
-       u_char  ultra_scsi;
-       u_char  force_sync_nego;
-       u_char  reverse_probe;
-       u_char  pci_fix_up;
-       u_char  use_nvram;
-       u_char  verbose;
-       u_char  default_tags;
-       u_short default_sync;
-       u_short debug;
-       u_char  burst_max;
-       u_char  led_pin;
-       u_char  max_wide;
-       u_char  settle_delay;
-       u_char  diff_support;
-       u_char  irqm;
-       u_char  bus_check;
-       u_char  optimize;
-       u_char  recovery;
-       u_int   excludes[SCSI_NCR_MAX_EXCLUDES];
-       char    tag_ctrl[100];
-};
-
 static struct ncr_driver_setup
        driver_setup                    = SCSI_NCR_DRIVER_SETUP;
 
@@ -794,108 +768,7 @@ static void ncr53c8xx_timeout(unsigned long np);
 #define bootverbose (np->verbose)
 
 #ifdef SCSI_NCR_NVRAM_SUPPORT
-/*
-**     Symbios NvRAM data format
-*/
-#define SYMBIOS_NVRAM_SIZE 368
-#define SYMBIOS_NVRAM_ADDRESS 0x100
-
-struct Symbios_nvram {
-/* Header 6 bytes */
-       u_short start_marker;   /* 0x0000 */
-       u_short byte_count;     /* excluding header/trailer */
-       u_short checksum;
-
-/* Controller set up 20 bytes */
-       u_short word0;          /* 0x3000 */
-       u_short word2;          /* 0x0000 */
-       u_short word4;          /* 0x0000 */
-       u_short flags;
-#define SYMBIOS_SCAM_ENABLE    (1)
-#define SYMBIOS_PARITY_ENABLE  (1<<1)
-#define SYMBIOS_VERBOSE_MSGS   (1<<2)
-#define SYMBIOS_CHS_MAPPING    (1<<3)
-       u_short flags1;
-#define SYMBIOS_SCAN_HI_LO     (1)
-       u_short word10;         /* 0x00 */
-       u_short flags3;         /* 0x00 */
-#define SYMBIOS_REMOVABLE_FLAGS        (3)             /* 0=none, 1=bootable, 2=all */
-       u_char  host_id;
-       u_char  byte15;         /* 0x04 */
-       u_short word16;         /* 0x0410 */
-       u_short word18;         /* 0x0000 */
-
-/* Boot order 14 bytes * 4 */
-       struct Symbios_host{
-               u_char  word0;          /* 0x0004:ok / 0x0000:nok */
-               u_short device_id;      /* PCI device id */
-               u_short vendor_id;      /* PCI vendor id */
-               u_char  byte6;          /* 0x00 */
-               u_char  device_fn;      /* PCI device/function number << 3*/
-               u_short word8;
-               u_short flags;
-#define        SYMBIOS_INIT_SCAN_AT_BOOT       (1)
-               u_short io_port;        /* PCI io_port address */
-       } host[4];
-
-/* Targets 8 bytes * 16 */
-       struct Symbios_target {
-               u_short flags;
-#define SYMBIOS_DISCONNECT_ENABLE      (1)
-#define SYMBIOS_SCAN_AT_BOOT_TIME      (1<<1)
-#define SYMBIOS_SCAN_LUNS              (1<<2)
-#define SYMBIOS_QUEUE_TAGS_ENABLED     (1<<3)
-               u_char  bus_width;      /* 0x08/0x10 */
-               u_char  sync_offset;
-               u_char  sync_period;    /* 4*period factor */
-               u_char  byte6;          /* 0x00 */
-               u_short timeout;
-       } target[16];
-       u_char  spare_devices[19*8];
-       u_char  trailer[6];             /* 0xfe 0xfe 0x00 0x00 0x00 0x00 */
-};
-typedef struct Symbios_nvram   Symbios_nvram;
-typedef struct Symbios_host    Symbios_host;
-typedef struct Symbios_target  Symbios_target;
-
-/*
-**     Tekram NvRAM data format.
-*/
-#define TEKRAM_NVRAM_SIZE 64
-#define TEKRAM_NVRAM_ADDRESS 0
-
-struct Tekram_nvram {
-       struct Tekram_target {
-               u_char  flags;
-#define        TEKRAM_PARITY_CHECK             (1)
-#define TEKRAM_SYNC_NEGO               (1<<1)
-#define TEKRAM_DISCONNECT_ENABLE       (1<<2)
-#define        TEKRAM_START_CMD                (1<<3)
-#define TEKRAM_TAGGED_COMMANDS         (1<<4)
-#define TEKRAM_WIDE_NEGO               (1<<5)
-               u_char  sync_index;
-               u_short word2;
-       } target[16];
-       u_char  host_id;
-       u_char  flags;
-#define TEKRAM_MORE_THAN_2_DRIVES      (1)
-#define TEKRAM_DRIVES_SUP_1GB          (1<<1)
-#define        TEKRAM_RESET_ON_POWER_ON        (1<<2)
-#define TEKRAM_ACTIVE_NEGATION         (1<<3)
-#define TEKRAM_IMMEDIATE_SEEK          (1<<4)
-#define        TEKRAM_SCAN_LUNS                (1<<5)
-#define        TEKRAM_REMOVABLE_FLAGS          (3<<6)  /* 0: disable; 1: boot device; 2:all */
-       u_char  boot_delay_index;
-       u_char  max_tags_index;
-       u_short flags1;
-#define TEKRAM_F2_F6_ENABLED           (1)
-       u_short spare[29];
-};
-typedef struct Tekram_nvram    Tekram_nvram;
-typedef struct Tekram_target   Tekram_target;
-
 static u_char Tekram_sync[12] __initdata = {25,31,37,43,50,62,75,125,12,15,18,21};
-
 #endif /* SCSI_NCR_NVRAM_SUPPORT */
 
 /*
@@ -934,6 +807,7 @@ typedef struct {
        ncr_slot  slot;
        ncr_chip  chip;
        ncr_nvram *nvram;
+       u_char    host_id;
        int attach_done;
 } ncr_device;
 
@@ -4246,9 +4120,11 @@ static int ncr_prepare_setting(ncb_p np, ncr_nvram *nvram)
        /*
        **  Get SCSI addr of host adapter (set by bios?).
        */
-       if (!np->myaddr) np->myaddr = INB(nc_scid) & 0x07;
-       if (!np->myaddr) np->myaddr = SCSI_NCR_MYADDR;
-
+       if (np->myaddr == 255) {
+               np->myaddr = INB(nc_scid) & 0x07;
+               if (!np->myaddr)
+                       np->myaddr = SCSI_NCR_MYADDR;
+       }
 
 #endif /* SCSI_NCR_TRUST_BIOS_SETTING */
 
@@ -4520,6 +4396,7 @@ printk(KERN_INFO "ncr53c%s-%d: rev=0x%02x, base=0x%lx, io_port=0x%lx, irq=%d\n",
        np->clock_divn  = device->chip.nr_divisor;
        np->maxoffs     = device->chip.offset_max;
        np->maxburst    = device->chip.burst_max;
+       np->myaddr      = device->host_id;
 
        np->script0  = (struct script *)
                (((u_long) &host_data->script_data) & CACHE_LINE_MASK);
@@ -4607,6 +4484,7 @@ printk(KERN_INFO "ncr53c%s-%d: rev=0x%02x, base=0x%lx, io_port=0x%lx, irq=%d\n",
        **      Fill Linux host instance structure
        */
        instance->max_channel   = 0;
+       instance->this_id       = np->myaddr;
        instance->max_id        = np->maxwide ? 16 : 8;
        instance->max_lun       = SCSI_NCR_MAX_LUN;
 #ifndef NCR_IOMAPPED
@@ -9324,6 +9202,8 @@ void ncr53c8xx_setup(char *str, int *ints)
                        if (xi < SCSI_NCR_MAX_EXCLUDES)
                                driver_setup.excludes[xi++] = val;
                }
+               else if (!strncmp(cur, "hostid:", 7))
+                       driver_setup.host_id    = val;
                else
                        printk("ncr53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
 
@@ -10974,8 +10854,8 @@ static int ncr_get_Symbios_nvram (ncr_slot *np, Symbios_nvram *nvram)
        nvram_stop(np, &gpreg);
        
 #ifdef SCSI_NCR_DEBUG_NVRAM
-printk("ncr53c8xx: NvRAM marker=%x trailer=%x %x %x %x %x %x byte_count=%d/%d checksum=%x/%x\n",
-       nvram->start_marker,
+printk("ncr53c8xx: NvRAM type=%x trailer=%x %x %x %x %x %x byte_count=%d/%d checksum=%x/%x\n",
+       nvram->type,
        nvram->trailer[0], nvram->trailer[1], nvram->trailer[2],
        nvram->trailer[3], nvram->trailer[4], nvram->trailer[5],
        nvram->byte_count, sizeof(*nvram) - 12,
@@ -10983,7 +10863,7 @@ printk("ncr53c8xx: NvRAM marker=%x trailer=%x %x %x %x %x %x byte_count=%d/%d ch
 #endif
 
        /* check valid NVRAM signature, verify byte count and checksum */
-       if (nvram->start_marker == 0 &&
+       if (nvram->type == 0 &&
            !memcmp(nvram->trailer, Symbios_trailer, 6) &&
            nvram->byte_count == sizeof(*nvram) - 12 &&
            csum == nvram->checksum)
index 1579fc23ad39de89cdb47746cc6ee77124c5fd4e..969b0ec3718606d2572e6abf624fadb694b0a498 100644 (file)
@@ -55,7 +55,7 @@
 */
 
 /*
-**     April 2 1999, sym53c8xx version 1.3c
+**     July 24 1999, sym53c8xx version 1.3g
 **
 **     Supported SCSI features:
 **         Synchronous data transfers
@@ -71,6 +71,7 @@
 **             53C875    (Wide,   Fast 20,      on-board rom BIOS)
 **             53C876    (Wide,   Fast 20 Dual, on-board rom BIOS)
 **             53C895    (Wide,   Fast 40,      on-board rom BIOS)
+**             53C895A   (Wide,   Fast 40,      on-board rom BIOS)
 **             53C896    (Wide,   Fast 40 Dual, on-board rom BIOS)
 **
 **     Other features:
@@ -82,7 +83,7 @@
 /*
 **     Name and version of the driver
 */
-#define SCSI_NCR_DRIVER_NAME   "sym53c8xx - version 1.3c"
+#define SCSI_NCR_DRIVER_NAME   "sym53c8xx - version 1.3g"
 
 /* #define DEBUG_896R1 */
 #define SCSI_NCR_OPTIMIZE_896
@@ -287,6 +288,21 @@ static inline struct xpt_quehead *xpt_remque_tail(struct xpt_quehead *head)
 #  endif
 #endif
 
+/*==========================================================
+**
+**     This driver ensures that no PCI self-mastering will 
+**     be attempted by the PCI chip at any time, provided 
+**     that we can load the on-chip RAM from the C code.
+**     For now, I can only check that on x86, and the 
+**     the SCSI_NCR_PCI_MEM_NOT_SUPPORTED option is here 
+**     to provide previous behaviour for other platforms.
+**
+**==========================================================
+*/
+#if    !defined(__i386__)
+#define        SCSI_NCR_PCI_MEM_NOT_SUPPORTED
+#endif
+
 /*==========================================================
 **
 **     Configuration and Debugging
@@ -354,7 +370,7 @@ typedef u_int32 tagmap_t;
 */
 
 #ifdef SCSI_NCR_MAX_LUN
-#define MAX_LUN    SCSI_NCR_MAX_LUN
+#define MAX_LUN    64
 #else
 #define MAX_LUN    (1)
 #endif
@@ -421,7 +437,7 @@ typedef u_int32 tagmap_t;
 **    Io mapped or memory mapped.
 */
 
-#if defined(SCSI_NCR_IOMAPPED)
+#if defined(SCSI_NCR_IOMAPPED) || defined(SCSI_NCR_PCI_MEM_NOT_SUPPORTED)
 #define NCR_IOMAPPED
 #endif
 
@@ -569,15 +585,19 @@ spinlock_t sym53c8xx_lock;
 #endif
 
 #ifdef __sparc__
-#define remap_pci_mem(base, size)      ((u_long) __va(base))
-#define unmap_pci_mem(vaddr, size)
-#define pcivtobus(p)                   ((p) & pci_dvma_mask)
+#  define ioremap(base, size)          ((u_long) __va(base))
+#  define iounmap(vaddr)
+#  define pcivtobus(p)                 ((p) & pci_dvma_mask)
+#  define memcpy_to_pci(a, b, c)       memcpy_toio((u_long) (a), (b), (c))
 #elif defined(__alpha__)
-#define pcivtobus(p)                   ((p) & 0xfffffffful)
-#else  /* __sparc__ */
-#define pcivtobus(p)                   (p)
+#  define pcivtobus(p)                 ((p) & 0xfffffffful)
+#  define memcpy_to_pci(a, b, c)       memcpy_toio((a), (b), (c))
+#else  /* others */
+#  define pcivtobus(p)                 (p)
+#  define memcpy_to_pci(a, b, c)       memcpy_toio((a), (b), (c))
+#endif
 
-#if !defined(NCR_IOMAPPED) || defined(__i386__)
+#ifndef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
 __initfunc(
 static u_long remap_pci_mem(u_long base, u_long size)
 )
@@ -596,8 +616,8 @@ static void unmap_pci_mem(u_long vaddr, u_long size)
        if (vaddr)
                iounmap((void *) (vaddr & PAGE_MASK));
 }
-#endif /* !NCR_IOMAPPED || __i386__ */
-#endif /* __sparc__ */
+
+#endif /* not def SCSI_NCR_PCI_MEM_NOT_SUPPORTED */
 
 /*
 **     Insert a delay in micro-seconds and milli-seconds.
@@ -768,7 +788,7 @@ static void *m_calloc(int size, char *name, int uflags)
        NCR_UNLOCK_DRIVER(flags);
 
        if (DEBUG_FLAGS & DEBUG_ALLOC)
-               printk ("new %s[%d] @%p.\n", name, size, p);
+               printk ("new %-10s[%4d] @%p.\n", name, size, p);
 
        if (p)
                memset(p, 0, size);
@@ -783,7 +803,7 @@ static void m_free(void *ptr, int size, char *name)
        u_long flags;
 
        if (DEBUG_FLAGS & DEBUG_ALLOC)
-               printk ("freeing %s[%d] @%p.\n", name, size, ptr);
+               printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
 
        NCR_LOCK_DRIVER(flags);
        __m_free(ptr, size);
@@ -839,34 +859,6 @@ static int sym53c8xx_proc_info(char *buffer, char **start, off_t offset,
 **     This structure is initialized from linux config options.
 **     It can be overridden at boot-up by the boot command line.
 */
-#define SCSI_NCR_MAX_EXCLUDES 8
-struct ncr_driver_setup {
-       u_char  master_parity;
-       u_char  scsi_parity;
-       u_char  disconnection;
-       u_char  special_features;
-       u_char  ultra_scsi;
-       u_char  force_sync_nego;
-       u_char  reverse_probe;
-       u_char  pci_fix_up;
-       u_char  use_nvram;
-       u_char  verbose;
-       u_char  default_tags;
-       u_short default_sync;
-       u_short debug;
-       u_char  burst_max;
-       u_char  led_pin;
-       u_char  max_wide;
-       u_char  settle_delay;
-       u_char  diff_support;
-       u_char  irqm;
-       u_char  bus_check;
-       u_char  optimize;
-       u_char  recovery;
-       u_int   excludes[SCSI_NCR_MAX_EXCLUDES];
-       char    tag_ctrl[100];
-};
-
 static struct ncr_driver_setup
        driver_setup                    = SCSI_NCR_DRIVER_SETUP;
 
@@ -896,134 +888,7 @@ static void sym53c8xx_timeout(unsigned long np);
 #define bootverbose (np->verbose)
 
 #ifdef SCSI_NCR_NVRAM_SUPPORT
-/*
-**     Symbios NvRAM data format
-*/
-#define SYMBIOS_NVRAM_SIZE 368
-#define SYMBIOS_NVRAM_ADDRESS 0x100
-
-struct Symbios_nvram {
-/* Header 6 bytes */
-       u_short type;           /* 0x0000 */
-       u_short byte_count;     /* excluding header/trailer */
-       u_short checksum;
-
-/* Controller set up 20 bytes */
-       u_char  v_major;        /* 0x00 */
-       u_char  v_minor;        /* 0x30 */
-       u_int32 boot_crc;
-       u_short flags;
-#define SYMBIOS_SCAM_ENABLE    (1)
-#define SYMBIOS_PARITY_ENABLE  (1<<1)
-#define SYMBIOS_VERBOSE_MSGS   (1<<2)
-#define SYMBIOS_CHS_MAPPING    (1<<3)
-#define SYMBIOS_NO_NVRAM       (1<<3)  /* ??? */
-       u_short flags1;
-#define SYMBIOS_SCAN_HI_LO     (1)
-       u_short term_state;
-#define SYMBIOS_TERM_CANT_PROGRAM      (0)
-#define SYMBIOS_TERM_ENABLED           (1)
-#define SYMBIOS_TERM_DISABLED          (2)
-       u_short rmvbl_flags;
-#define SYMBIOS_RMVBL_NO_SUPPORT       (0)
-#define SYMBIOS_RMVBL_BOOT_DEVICE      (1)
-#define SYMBIOS_RMVBL_MEDIA_INSTALLED  (2)
-       u_char  host_id;
-       u_char  num_hba;        /* 0x04 */
-       u_char  num_devices;    /* 0x10 */
-       u_char  max_scam_devices;       /* 0x04 */
-       u_char  num_valid_scam_devives; /* 0x00 */
-       u_char  rsvd;
-
-/* Boot order 14 bytes * 4 */
-       struct Symbios_host{
-               u_short type;           /* 4:8xx / 0:nok */
-               u_short device_id;      /* PCI device id */
-               u_short vendor_id;      /* PCI vendor id */
-               u_char  bus_nr;         /* PCI bus number */
-               u_char  device_fn;      /* PCI device/function number << 3*/
-               u_short word8;
-               u_short flags;
-#define        SYMBIOS_INIT_SCAN_AT_BOOT       (1)
-               u_short io_port;        /* PCI io_port address */
-       } host[4];
-
-/* Targets 8 bytes * 16 */
-       struct Symbios_target {
-               u_char  flags;
-#define SYMBIOS_DISCONNECT_ENABLE      (1)
-#define SYMBIOS_SCAN_AT_BOOT_TIME      (1<<1)
-#define SYMBIOS_SCAN_LUNS              (1<<2)
-#define SYMBIOS_QUEUE_TAGS_ENABLED     (1<<3)
-               u_char  rsvd;
-               u_char  bus_width;      /* 0x08/0x10 */
-               u_char  sync_offset;
-               u_short sync_period;    /* 4*period factor */
-               u_short timeout;
-       } target[16];
-/* Scam table 8 bytes * 4 */
-       struct Symbios_scam {
-               u_short id;
-               u_short method;
-#define SYMBIOS_SCAM_DEFAULT_METHOD    (0)
-#define SYMBIOS_SCAM_DONT_ASSIGN       (1)
-#define SYMBIOS_SCAM_SET_SPECIFIC_ID   (2)
-#define SYMBIOS_SCAM_USE_ORDER_GIVEN   (3)
-               u_short status;
-#define SYMBIOS_SCAM_UNKNOWN           (0)
-#define SYMBIOS_SCAM_DEVICE_NOT_FOUND  (1)
-#define SYMBIOS_SCAM_ID_NOT_SET                (2)
-#define SYMBIOS_SCAM_ID_VALID          (3)
-               u_char  target_id;
-               u_char  rsvd;
-       } scam[4];
-
-       u_char  spare_devices[15*8];
-       u_char  trailer[6];             /* 0xfe 0xfe 0x00 0x00 0x00 0x00 */
-};
-typedef struct Symbios_nvram   Symbios_nvram;
-typedef struct Symbios_host    Symbios_host;
-typedef struct Symbios_target  Symbios_target;
-typedef struct Symbios_scam    Symbios_scam;
-
-/*
-**     Tekram NvRAM data format.
-*/
-#define TEKRAM_NVRAM_SIZE 64
-#define TEKRAM_NVRAM_ADDRESS 0
-
-struct Tekram_nvram {
-       struct Tekram_target {
-               u_char  flags;
-#define        TEKRAM_PARITY_CHECK             (1)
-#define TEKRAM_SYNC_NEGO               (1<<1)
-#define TEKRAM_DISCONNECT_ENABLE       (1<<2)
-#define        TEKRAM_START_CMD                (1<<3)
-#define TEKRAM_TAGGED_COMMANDS         (1<<4)
-#define TEKRAM_WIDE_NEGO               (1<<5)
-               u_char  sync_index;
-               u_short word2;
-       } target[16];
-       u_char  host_id;
-       u_char  flags;
-#define TEKRAM_MORE_THAN_2_DRIVES      (1)
-#define TEKRAM_DRIVES_SUP_1GB          (1<<1)
-#define        TEKRAM_RESET_ON_POWER_ON        (1<<2)
-#define TEKRAM_ACTIVE_NEGATION         (1<<3)
-#define TEKRAM_IMMEDIATE_SEEK          (1<<4)
-#define        TEKRAM_SCAN_LUNS                (1<<5)
-#define        TEKRAM_REMOVABLE_FLAGS          (3<<6)  /* 0: disable; 1: boot device; 2:all */
-       u_char  boot_delay_index;
-       u_char  max_tags_index;
-       u_short flags1;
-#define TEKRAM_F2_F6_ENABLED           (1)
-       u_short spare[29];
-};
-typedef struct Tekram_nvram    Tekram_nvram;
-typedef struct Tekram_target   Tekram_target;
-
 static u_char Tekram_sync[12] __initdata = {25,31,37,43,50,62,75,125,12,15,18,21};
-
 #endif /* SCSI_NCR_NVRAM_SUPPORT */
 
 /*
@@ -1451,8 +1316,10 @@ struct tcb {
        */
        u_int32         *luntbl;        /* lcbs bus address table       */
        u_int32         b_luntbl;       /* bus address of this table    */
-       lcb_p           lp[MAX_LUN];    /* The lcb's of this tcb        */
-
+       lcb_p           l0p;            /* lcb of LUN #0 (normal case)  */
+#if MAX_LUN > 1
+       lcb_p           *lmp;           /* Other lcb's [1..MAX_LUN]     */
+#endif
        /*----------------------------------------------------------------
        **      Target capabilities.
        **----------------------------------------------------------------
@@ -1648,6 +1515,18 @@ struct head {
        u_char          status[4];      /* host status                  */
 };
 
+/*
+**     LUN control block lookup.
+**     We use a direct pointer for LUN #0, and a table of pointers 
+**     which is only allocated for devices that support LUN(s) > 0.
+*/
+#if MAX_LUN <= 1
+#define ncr_lp(np, tp, lun) (!lun) ? (tp)->l0p : 0
+#else
+#define ncr_lp(np, tp, lun) \
+       (!lun) ? (tp)->l0p : (tp)->lmp ? (tp)->lmp[(lun)] : 0
+#endif
+
 /*
 **     The status bytes are used by the host and the script processor.
 **
@@ -1907,11 +1786,15 @@ struct ncb {
        **      Virtual and physical bus addresses of the chip.
        **----------------------------------------------------------------
        */
+#ifndef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
        u_long          base_va;        /* MMIO base virtual address    */
+       u_long          base2_va;       /* On-chip RAM virtual address  */
+#endif
        u_long          base_ba;        /* MMIO base bus address        */
        u_long          base_io;        /* IO space base address        */
        u_long          base_ws;        /* (MM)IO window size           */
-       u_long          base2_ba;       /* On-chip RAM bus address.     */
+       u_long          base2_ba;       /* On-chip RAM bus address      */
+       u_long          base2_ws;       /* On-chip RAM window size      */
        u_int           irq;            /* IRQ number                   */
        volatile                        /* Pointer to volatile for      */
        struct ncr_reg  *reg;           /*  memory mapped IO.           */
@@ -2111,12 +1994,6 @@ struct script {
        ncrcmd  data_out2       [  4];
        ncrcmd  pm0_data        [ 16];
        ncrcmd  pm1_data        [ 16];
-
-       /* Data area */
-       ncrcmd  saved_dsa       [  1];
-       ncrcmd  done_pos        [  1];
-       ncrcmd  startpos        [  1];
-       ncrcmd  targtbl         [  1];
 };
 
 /*
@@ -2170,16 +2047,20 @@ struct scripth {
        /* Data area */
        ncrcmd  pm0_data_addr   [  1];
        ncrcmd  pm1_data_addr   [  1];
+       ncrcmd  saved_dsa       [  1];
+       ncrcmd  done_pos        [  1];
+       ncrcmd  startpos        [  1];
+       ncrcmd  targtbl         [  1];
        /* End of data area */
 
+#ifdef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
        ncrcmd  start_ram       [  1];
        ncrcmd  script0_ba      [  4];
-
        ncrcmd  start_ram64     [  3];
        ncrcmd  script0_ba64    [  3];
        ncrcmd  scripth0_ba64   [  6];
        ncrcmd  ram_seg64       [  1];
-
+#endif
        ncrcmd  snooptest       [  6];
        ncrcmd  snoopend        [  2];
 };
@@ -2351,14 +2232,14 @@ static  struct script script0 __initdata = {
        **      and the the next queue position points to the next JOB.
        */
        SCR_LOAD_ABS (scratcha, 4),
-               PADDR (startpos),
+               PADDRH (startpos),
        SCR_LOAD_ABS (dsa, 4),
-               PADDR (startpos),
+               PADDRH (startpos),
        SCR_LOAD_REL (temp, 4),
                4,
 }/*-------------------------< GETJOB_BEGIN >------------------*/,{
        SCR_STORE_ABS (temp, 4),
-               PADDR (startpos),
+               PADDRH (startpos),
        SCR_LOAD_REL (dsa, 4),
                0,
 }/*-------------------------< GETJOB_END >--------------------*/,{
@@ -2525,7 +2406,7 @@ static    struct script script0 __initdata = {
        SCR_FROM_REG (sstat0),
                0,
        SCR_JUMPR ^ IFTRUE (MASK (IRST, IRST)),
-               -8,
+               -16,
        SCR_JUMP,
                PADDR (start),
 }/*-------------------------< CLRACK >----------------------*/,{
@@ -2668,11 +2549,11 @@ static  struct script script0 __initdata = {
        **      the completed CCB will be lost.
        */
        SCR_STORE_ABS (dsa, 4),
-               PADDR (saved_dsa),
+               PADDRH (saved_dsa),
        SCR_LOAD_ABS (dsa, 4),
-               PADDR (done_pos),
+               PADDRH (done_pos),
        SCR_LOAD_ABS (scratcha, 4),
-               PADDR(saved_dsa),
+               PADDR(saved_dsa),
        SCR_STORE_REL (scratcha, 4),
                0,
        /*
@@ -2687,7 +2568,7 @@ static    struct script script0 __initdata = {
        SCR_INT_FLY,
                0,
        SCR_STORE_ABS (temp, 4),
-               PADDR (done_pos),
+               PADDRH (done_pos),
 }/*------------------------< DONE_END >-----------------*/,{
        SCR_JUMP,
                PADDR (start),
@@ -2809,7 +2690,7 @@ static    struct script script0 __initdata = {
        SCR_LOAD_REG (dsa, 0xff),
                0,
        SCR_STORE_ABS (scratcha, 4),
-               PADDR (startpos),
+               PADDRH (startpos),
 }/*-------------------------< RESELECT >--------------------*/,{
        /*
        **      make the host status invalid.
@@ -2842,7 +2723,7 @@ static    struct script script0 __initdata = {
        **      load the target control block address
        */
        SCR_LOAD_ABS (dsa, 4),
-               PADDR (targtbl),
+               PADDRH (targtbl),
        SCR_SFBR_REG (dsa, SCR_SHL, 0),
                0,
        SCR_REG_REG (dsa, SCR_SHL, 0),
@@ -3082,16 +2963,7 @@ static   struct script script0 __initdata = {
                offsetof (struct ccb, phys.pm1.ret),
        SCR_RETURN,
                0,
-
-}/*-------------------------< SAVED_DSA >-------------------*/,{
-       SCR_DATA_ZERO,
-}/*-------------------------< DONE_POS >--------------------*/,{
-       SCR_DATA_ZERO,
-}/*-------------------------< STARTPOS >--------------------*/,{
-       SCR_DATA_ZERO,
-}/*-------------------------< TARGTBL >---------------------*/,{
-       SCR_DATA_ZERO,
-}/*--------------------------------------------------------*/
+}/*---------------------------------------------------------*/
 };
 
 static struct scripth scripth0 __initdata = {
@@ -3596,7 +3468,7 @@ static    struct scripth scripth0 __initdata = {
        **      call the C code.
        */
        SCR_LOAD_ABS (scratcha, 4),
-               PADDR (startpos),
+               PADDRH (startpos),
        SCR_INT ^ IFTRUE (DATA (S_QUEUE_FULL)),
                SIR_BAD_STATUS,
        SCR_INT ^ IFTRUE (DATA (S_CHECK_COND)),
@@ -3737,6 +3609,25 @@ static   struct scripth scripth0 __initdata = {
        SCR_DATA_ZERO,
 }/*-------------------------< PM1_DATA_ADDR >---------------*/,{
        SCR_DATA_ZERO,
+}/*-------------------------< SAVED_DSA >-------------------*/,{
+       SCR_DATA_ZERO,
+}/*-------------------------< DONE_POS >--------------------*/,{
+       SCR_DATA_ZERO,
+}/*-------------------------< STARTPOS >--------------------*/,{
+       SCR_DATA_ZERO,
+}/*-------------------------< TARGTBL >---------------------*/,{
+       SCR_DATA_ZERO,
+
+
+/*
+** We may use MEMORY MOVE instructions to load the on chip-RAM,
+** if it happens that mapping PCI memory is not possible.
+** But writing the RAM from the CPU is the preferred method, 
+** since PCI 2.2 seems to disallow PCI self-mastering.
+*/
+
+#ifdef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
+
 }/*-------------------------< START_RAM >-------------------*/,{
        /*
        **      Load the script into on-chip RAM, 
@@ -3776,6 +3667,9 @@ static    struct scripth scripth0 __initdata = {
                PADDRH (start64),
 }/*-------------------------< RAM_SEG64 >--------------------*/,{
                0,
+
+#endif /* SCSI_NCR_PCI_MEM_NOT_SUPPORTED */
+
 }/*-------------------------< SNOOPTEST >-------------------*/,{
        /*
        **      Read the variable.
@@ -4793,11 +4687,22 @@ printk(KERN_INFO NAME53C "%s-%d: rev=0x%02x, base=0x%lx, io_port=0x%lx, irq=%d\n
        if (np->base2_ba) {
                np->p_script    = pcivtobus(np->base2_ba);
                if (np->features & FE_RAM8K) {
+                       np->base2_ws = 8192;
                        np->p_scripth = np->p_script + 4096;
 #if BITS_PER_LONG > 32
                        np->scr_ram_seg = cpu_to_scr(np->base2_ba >> 32);
 #endif
                }
+               else
+                       np->base2_ws = 4096;
+#ifndef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
+               np->base2_va = remap_pci_mem(np->base2_ba, np->base2_ws);
+               if (!np->base2_va) {
+                       printk(KERN_ERR "%s: can't map PCI MEMORY region\n",
+                              ncr_name(np));
+                       goto attach_error;
+               }
+#endif
        }
 
        ncr_script_copy_and_bind (np, (ncrcmd *) &script0, (ncrcmd *) np->script0, sizeof(struct script));
@@ -4811,11 +4716,12 @@ printk(KERN_INFO NAME53C "%s-%d: rev=0x%02x, base=0x%lx, io_port=0x%lx, irq=%d\n
        np->scripth0->pm1_data_addr[0] = 
                        cpu_to_scr(NCB_SCRIPT_PHYS(np, pm1_data));
 
+#ifdef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
        np->scripth0->script0_ba[0]     = cpu_to_scr(vtobus(np->script0));
        np->scripth0->script0_ba64[0]   = cpu_to_scr(vtobus(np->script0));
        np->scripth0->scripth0_ba64[0]  = cpu_to_scr(vtobus(np->scripth0));
        np->scripth0->ram_seg64[0]      = np->scr_ram_seg;
-
+#endif
        /*
        **      Prepare the idle and invalid task actions.
        */
@@ -4851,7 +4757,7 @@ printk(KERN_INFO NAME53C "%s-%d: rev=0x%02x, base=0x%lx, io_port=0x%lx, irq=%d\n
        /*
        **      Prepare the target bus address array.
        */
-       np->script0->targtbl[0] = cpu_to_scr(vtobus(np->targtbl));
+       np->scripth0->targtbl[0] = cpu_to_scr(vtobus(np->targtbl));
        for (i = 0 ; i < MAX_TARGET ; i++) {
                np->targtbl[i] = cpu_to_scr(vtobus(&np->target[i]));
                np->target[i].b_luntbl = cpu_to_scr(vtobus(np->badluntbl));
@@ -4981,8 +4887,9 @@ printk(KERN_INFO NAME53C "%s-%d: rev=0x%02x, base=0x%lx, io_port=0x%lx, irq=%d\n
        **      and return success.
        */
        instance->max_channel   = 0;
+       instance->this_id       = np->myaddr;
        instance->max_id        = np->maxwide ? 16 : 8;
-       instance->max_lun       = SCSI_NCR_MAX_LUN;
+       instance->max_lun       = MAX_LUN;
 #ifndef NCR_IOMAPPED
        instance->base          = (char *) np->reg;
 #endif
@@ -5026,9 +4933,11 @@ static void ncr_free_resources(ncb_p np)
                free_irq(np->irq, np);
        if (np->base_io)
                release_region(np->base_io, np->base_ws);
-#ifndef NCR_IOMAPPED
+#ifndef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
        if (np->base_va)
                unmap_pci_mem(np->base_va, np->base_ws);
+       if (np->base2_va)
+               unmap_pci_mem(np->base2_va, np->base2_ws);
 #endif
        if (np->scripth0)
                m_free(np->scripth0, sizeof(struct scripth), "SCRIPTH");
@@ -5050,13 +4959,17 @@ static void ncr_free_resources(ncb_p np)
        for (target = 0; target < MAX_TARGET ; target++) {
                tp = &np->target[target];
                for (lun = 0 ; lun < MAX_LUN ; lun++) {
-                       lp = tp->lp[lun];
+                       lp = ncr_lp(np, tp, lun);
                        if (!lp)
                                continue;
                        if (lp->tasktbl != &lp->tasktbl_0)
                                m_free(lp->tasktbl, 256, "TASKTBL");
                        m_free(lp, sizeof(*lp), "LCB");
                }
+#if MAX_LUN > 1
+               if (tp->lmp)
+                       m_free(tp->lmp, MAX_LUN * sizeof(lcb_p), "LMP");
+#endif 
        }
 
        m_free(np, sizeof(*np), "NCB");
@@ -5112,7 +5025,7 @@ static int ncr_queue_command (ncb_p np, Scsi_Cmnd *cmd)
 {
 /*     Scsi_Device        *device    = cmd->device; */
        tcb_p tp                      = &np->target[cmd->target];
-       lcb_p lp                      = tp->lp[cmd->lun];
+       lcb_p lp                      = ncr_lp(np, tp, cmd->lun);
        ccb_p cp;
 
        int     segments;
@@ -5941,7 +5854,7 @@ void ncr_complete (ncb_p np, ccb_p cp)
        cmd = cp->cmd;
        cp->cmd = NULL;
        tp = &np->target[cp->target];
-       lp = tp->lp[cp->lun];
+       lp = ncr_lp(np, tp, cp->lun);
 
        /*
        **      We donnot queue more than 1 ccb per target 
@@ -6274,7 +6187,7 @@ void ncr_init (ncb_p np, int reset, char * msg, u_long code)
        **      Start at first entry.
        */
        np->squeueput = 0;
-       np->script0->startpos[0] = cpu_to_scr(phys);
+       np->scripth0->startpos[0] = cpu_to_scr(phys);
 
        /*
        **      Clear Done Queue
@@ -6289,7 +6202,7 @@ void ncr_init (ncb_p np, int reset, char * msg, u_long code)
        /*
        **      Start at first entry.
        */
-       np->script0->done_pos[0] = cpu_to_scr(phys);
+       np->scripth0->done_pos[0] = cpu_to_scr(phys);
        np->dqueueget = 0;
 
        /*
@@ -6414,17 +6327,35 @@ void ncr_init (ncb_p np, int reset, char * msg, u_long code)
        }
 
        /*
-       **    Start script processor.
+       **    Download SCSI SCRIPTS to on-chip RAM if present,
+       **    and start script processor.
+       **    We do the download preferently from the CPU.
+       **    For platforms that may not support PCI memory mapping,
+       **    we use a simple SCRIPTS that performs MEMORY MOVEs.
        */
        MEMORY_BARRIER();
        if (np->base2_ba) {
                if (bootverbose)
                        printk ("%s: Downloading SCSI SCRIPTS.\n",
                                ncr_name(np));
-               if (np->features & FE_RAM8K)
+#ifdef SCSI_NCR_PCI_MEM_NOT_SUPPORTED
+               if (np->base2_ws == 8192)
                        phys = NCB_SCRIPTH0_PHYS (np, start_ram64);
                else
                        phys = NCB_SCRIPTH_PHYS (np, start_ram);
+#else
+               if (np->base2_ws == 8192) {
+                       memcpy_to_pci(np->base2_va + 4096,
+                                       np->scripth0, sizeof(struct scripth));
+                       OUTL (nc_mmws, np->scr_ram_seg);
+                       OUTL (nc_mmrs, np->scr_ram_seg);
+                       OUTL (nc_sfs,  np->scr_ram_seg);
+                       phys = NCB_SCRIPTH_PHYS (np, start64);
+               }
+               else
+                       phys = NCB_SCRIPT_PHYS (np, init);
+               memcpy_to_pci(np->base2_va, np->script0, sizeof(struct script));
+#endif /* SCSI_NCR_PCI_MEM_NOT_SUPPORTED */
        }
        else
                phys = NCB_SCRIPT_PHYS (np, init);
@@ -6729,7 +6660,7 @@ static void ncr_setwide (ncb_p np, ccb_p cp, u_char wide, u_char ack)
 static void ncr_setup_tags (ncb_p np, u_char tn, u_char ln)
 {
        tcb_p tp = &np->target[tn];
-       lcb_p lp = tp->lp[ln];
+       lcb_p lp = ncr_lp(np, tp, ln);
        u_char   reqtags, maxdepth;
 
        /*
@@ -6844,7 +6775,7 @@ static void ncr_usercmd (ncb_p np)
                        if (!((np->user.target>>t)&1)) continue;
                        np->target[t].usrtags = np->user.data;
                        for (ln = 0; ln < MAX_LUN; ln++) {
-                               lcb_p lp = np->target[t].lp[ln];
+                               lcb_p lp = ncr_lp(np, &np->target[t], ln);
                                if (!lp)
                                        continue;
                                lp->maxtags = lp->numtags = np->user.data;
@@ -7339,16 +7270,8 @@ static void ncr_recover_scsi_int (ncb_p np, u_char hsts)
 {
        u_int32 dsp     = INL (nc_dsp);
        u_int32 dsa     = INL (nc_dsa);
-       u_char  scntl1  = INB (nc_scntl1);
        ccb_p cp        = ncr_ccb_from_dsa(np, dsa);
 
-       /*
-       **      If we are connected to the SCSI BUS, we only 
-       **      can reset the BUS.
-       */
-       if (scntl1 & ISCON)
-               goto reset_all;
-
        /*
        **      If we haven't been interrupted inside the SCRIPTS 
        **      critical pathes, we can safely restart the SCRIPTS 
@@ -7920,7 +7843,7 @@ static void ncr_sir_to_redo(ncb_p np, int num, ccb_p cp)
 {
        Scsi_Cmnd *cmd  = cp->cmd;
        tcb_p tp        = &np->target[cp->target];
-       lcb_p lp        = tp->lp[cp->lun];
+       lcb_p lp        = ncr_lp(np, tp, cp->lun);
        ccb_p           cp2;
        int             busyccbs = 1;
        u_int32         startp;
@@ -8167,8 +8090,8 @@ void ncr_int_sir (ncb_p np)
                **      message still exist, this should help.
                **      We just assume lun=0, 1 CCB, no tag.
                */
-               if (tp->lp[0]) { 
-                       OUTL (nc_dsa, scr_to_cpu(tp->lp[0]->tasktbl[0]));
+               if (tp->l0p) { 
+                       OUTL (nc_dsa, scr_to_cpu(tp->l0p->tasktbl[0]));
                        OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, resel_go));
                        return;
                }
@@ -8623,7 +8546,7 @@ out_stuck:
 static ccb_p ncr_get_ccb (ncb_p np, u_char tn, u_char ln)
 {
        tcb_p tp = &np->target[tn];
-       lcb_p lp = tp->lp[ln];
+       lcb_p lp = ncr_lp(np, tp, ln);
        u_char tag = NO_TAG;
        XPT_QUEHEAD *qp;
        ccb_p cp = (ccb_p) 0;
@@ -8715,7 +8638,7 @@ out_free:
 static void ncr_free_ccb (ncb_p np, ccb_p cp)
 {
        tcb_p tp = &np->target[cp->target];
-       lcb_p lp = tp->lp[cp->lun];
+       lcb_p lp = ncr_lp(np, tp, cp->lun);
 
        if (DEBUG_FLAGS & DEBUG_TAGS) {
                PRINT_LUN(np, cp->target, cp->lun);
@@ -8882,7 +8805,7 @@ static void ncr_init_tcb (ncb_p np, u_char tn)
 static lcb_p ncr_alloc_lcb (ncb_p np, u_char tn, u_char ln)
 {
        tcb_p tp = &np->target[tn];
-       lcb_p lp = tp->lp[ln];
+       lcb_p lp = ncr_lp(np, tp, ln);
 
        /*
        **      Already done, return.
@@ -8897,13 +8820,25 @@ static lcb_p ncr_alloc_lcb (ncb_p np, u_char tn, u_char ln)
        if (!tp->luntbl)
                goto fail;
 
+       /*
+       **      Allocate the table of pointers for LUN(s) > 0, if needed.
+       */
+       if (ln && !tp->lmp) {
+               tp->lmp = m_calloc(MAX_LUN * sizeof(lcb_p), "LMP", MEMO_WARN);
+               if (!tp->lmp)
+                       goto fail;
+       }
+
        /*
        **      Allocate the lcb.
        */
        lp = m_calloc(sizeof(struct lcb), "LCB", MEMO_WARN);
        if (!lp)
                goto fail;
-       tp->lp[ln] = lp;
+       if (ln)
+               tp->lmp[ln] = lp;
+       else
+               tp->l0p = lp;
 
        /*
        **      Make it available to the chip.
@@ -8948,7 +8883,7 @@ fail:
 static lcb_p ncr_setup_lcb (ncb_p np, u_char tn, u_char ln, u_char *inq_data)
 {
        tcb_p tp = &np->target[tn];
-       lcb_p lp = tp->lp[ln];
+       lcb_p lp = ncr_lp(np, tp, ln);
        u_char inq_byte7;
        int i;
 
@@ -9624,6 +9559,7 @@ static void ncr_getclock (ncb_p np, int mult)
 #define OPT_SAFE_SETUP         22
 #define OPT_USE_NVRAM          23
 #define OPT_EXCLUDE            24
+#define OPT_HOST_ID            25
 
 static char setup_token[] __initdata = 
        "tags:"   "mpar:"
@@ -9638,7 +9574,7 @@ static char setup_token[] __initdata =
        "buschk:" "optim:"
        "recovery:"
        "safe:"   "nvram:"
-       "excl:";
+       "excl:"   "hostid:";
 
 #ifdef MODULE
 #define        ARG_SEP ' '
@@ -9772,6 +9708,9 @@ void sym53c8xx_setup(char *str, int *ints)
                        if (xi < SCSI_NCR_MAX_EXCLUDES)
                                driver_setup.excludes[xi++] = val;
                        break;
+               case OPT_HOST_ID:
+                       driver_setup.host_id = val;
+                       break;
                default:
                        printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
                        break;
@@ -9988,7 +9927,7 @@ if (sym53c8xx)
                }
                ++index;
                devp = &devtbl[count];
-               devp->host_id = 255;
+               devp->host_id = driver_setup.host_id;
                devp->attach_done = 0;
                if (sym53c8xx_pci_init(tpnt, bus, device_fn, devp)) {
                        continue;
@@ -10221,18 +10160,18 @@ static int sym53c8xx_pci_init(Scsi_Host_Template *tpnt,
                if (revision > ncr_chip_table[i].revision_id)
                        continue;
                if (!(ncr_chip_table[i].features & FE_LDSTR))
-                       continue;
+                       break;
                chip = &device->chip;
                memcpy(chip, &ncr_chip_table[i], sizeof(*chip));
                chip->revision_id = revision;
                break;
        }
 
-#if defined(__i386__)
        /*
        **      Ignore Symbios chips controlled by SISL RAID controller.
        **      This controller sets value 0x52414944 at RAM end - 16.
        */
+#if defined(__i386__) && !defined(SCSI_NCR_PCI_MEM_NOT_SUPPORTED)
        if (chip && (base_2 & PCI_BASE_ADDRESS_MEM_MASK)) {
                unsigned int ram_size, ram_val;
                u_long ram_ptr;
@@ -10254,7 +10193,7 @@ static int sym53c8xx_pci_init(Scsi_Host_Template *tpnt,
                        }
                }
        }
-#endif
+#endif /* not def SCSI_NCR_PCI_MEM_NOT_SUPPORTED */
 
        if (!chip) {
                printk(NAME53C8XX ": not initializing, device not supported\n");
@@ -10341,8 +10280,15 @@ static int sym53c8xx_pci_init(Scsi_Host_Template *tpnt,
        /*
        **    Check availability of IO space, memory space.
        **    Enable master capability if not yet.
+       **
+       **    We shouldn't have to care about the IO region when 
+       **    we are using MMIO. But calling check_region() from 
+       **    both the ncr53c8xx and the sym53c8xx drivers prevents 
+       **    from attaching devices from the both drivers.
+       **    If you have a better idea, let me know.
        */
-#ifdef NCR_IOMAPPED
+/* #ifdef NCR_IOMAPPED */
+#if 1
        if (!(command & PCI_COMMAND_IO) || !(io_port & 1)) { 
                printk(NAME53C8XX ": I/O base address (0x%lx) disabled.\n",
                        (long) io_port);
@@ -10358,7 +10304,8 @@ static int sym53c8xx_pci_init(Scsi_Host_Template *tpnt,
        base    &= PCI_BASE_ADDRESS_MEM_MASK;
        base_2  &= PCI_BASE_ADDRESS_MEM_MASK;
 
-#ifdef NCR_IOMAPPED
+/* #ifdef NCR_IOMAPPED */
+#if 1
        if (io_port && check_region (io_port, 128)) {
                printk(NAME53C8XX ": IO region 0x%lx[0..127] is in use\n",
                        (long) io_port);
@@ -10366,7 +10313,8 @@ static int sym53c8xx_pci_init(Scsi_Host_Template *tpnt,
        }
        if (!io_port)
                return -1;
-#else
+#endif
+#ifndef NCR_IOMAPPED
        if (!base) {
                printk(NAME53C8XX ": MMIO base address disabled.\n");
                return -1;
@@ -10583,7 +10531,7 @@ static void sym53c8xx_select_queue_depths(struct Scsi_Host *host, struct scsi_de
 
                np = ((struct host_data *) host->hostdata)->ncb;
                tp = &np->target[device->id];
-               lp = tp->lp[device->lun];
+               lp = ncr_lp(np, tp, device->lun);
 
                /*
                **      Select queue depth from driver setup.
@@ -11403,8 +11351,8 @@ static int ncr_get_Symbios_nvram (ncr_slot *np, Symbios_nvram *nvram)
        nvram_stop(np, &gpreg);
        
 #ifdef SCSI_NCR_DEBUG_NVRAM
-printk("sym53c8xx: NvRAM marker=%x trailer=%x %x %x %x %x %x byte_count=%d/%d checksum=%x/%x\n",
-       nvram->start_marker,
+printk("sym53c8xx: NvRAM type=%x trailer=%x %x %x %x %x %x byte_count=%d/%d checksum=%x/%x\n",
+       nvram->type,
        nvram->trailer[0], nvram->trailer[1], nvram->trailer[2],
        nvram->trailer[3], nvram->trailer[4], nvram->trailer[5],
        nvram->byte_count, sizeof(*nvram) - 12,
index 3b30e1bb5179b4624593b497dc9525cc9c1e83e8..027668898ef19b233b6a1993f546c8e2d767d7f9 100644 (file)
 #define SCSI_NCR_TIMER_INTERVAL        (HZ)
 
 #if 1 /* defined CONFIG_SCSI_MULTI_LUN */
-#define SCSI_NCR_MAX_LUN       (8)
+#define SCSI_NCR_MAX_LUN       (16)
 #else
 #define SCSI_NCR_MAX_LUN       (1)
 #endif
 #define PCI_DEVICE_ID_NCR_53C896 0xb
 #endif
 
+#ifndef PCI_DEVICE_ID_NCR_53C895A
+#define PCI_DEVICE_ID_NCR_53C895A 0x12
+#endif
+
 /*
 **   NCR53C8XX devices features table.
 */
@@ -463,7 +467,10 @@ typedef struct {
  {PCI_DEVICE_ID_NCR_53C875, 0x0f, "875",  6, 16, 5,                    \
  FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\
  ,                                                                     \
- {PCI_DEVICE_ID_NCR_53C875, 0xff, "876",  6, 16, 5,                    \
+ {PCI_DEVICE_ID_NCR_53C875, 0x1f, "876",  6, 16, 5,                    \
+ FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\
+ ,                                                                     \
+ {PCI_DEVICE_ID_NCR_53C875, 0x2f, "875E",  6, 16, 5,                   \
  FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\
  ,                                                                     \
  {PCI_DEVICE_ID_NCR_53C875J,0xff, "875J", 6, 16, 5,                    \
@@ -478,6 +485,10 @@ typedef struct {
  {PCI_DEVICE_ID_NCR_53C896, 0xff, "896",  7, 31, 7,                    \
  FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM|\
  FE_RAM8K|FE_64BIT|FE_IO256|FE_NOPM|FE_LEDC}\
+ ,                                                                     \
+ {PCI_DEVICE_ID_NCR_53C895A, 0xff, "895a",  6, 31, 7,                  \
+ FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM|\
+ FE_RAM8K|FE_64BIT|FE_IO256|FE_NOPM|FE_LEDC}\
 }
 
 /*
@@ -494,9 +505,45 @@ typedef struct {
        PCI_DEVICE_ID_NCR_53C875J,      \
        PCI_DEVICE_ID_NCR_53C885,       \
        PCI_DEVICE_ID_NCR_53C895,       \
-       PCI_DEVICE_ID_NCR_53C896        \
+       PCI_DEVICE_ID_NCR_53C896,       \
+       PCI_DEVICE_ID_NCR_53C895A       \
 }
 
+/*
+**     Driver setup structure.
+**
+**     This structure is initialized from linux config options.
+**     It can be overridden at boot-up by the boot command line.
+*/
+#define SCSI_NCR_MAX_EXCLUDES 8
+struct ncr_driver_setup {
+       u_char  master_parity;
+       u_char  scsi_parity;
+       u_char  disconnection;
+       u_char  special_features;
+       u_char  ultra_scsi;
+       u_char  force_sync_nego;
+       u_char  reverse_probe;
+       u_char  pci_fix_up;
+       u_char  use_nvram;
+       u_char  verbose;
+       u_char  default_tags;
+       u_short default_sync;
+       u_short debug;
+       u_char  burst_max;
+       u_char  led_pin;
+       u_char  max_wide;
+       u_char  settle_delay;
+       u_char  diff_support;
+       u_char  irqm;
+       u_char  bus_check;
+       u_char  optimize;
+       u_char  recovery;
+       u_char  host_id;
+       u_int   excludes[SCSI_NCR_MAX_EXCLUDES];
+       char    tag_ctrl[100];
+};
+
 /*
 **     Initial setup.
 **     Can be overriden at startup by a command line.
@@ -524,7 +571,8 @@ typedef struct {
        0,                                      \
        1,                                      \
        0,                                      \
-       0                                       \
+       0,                                      \
+       255                                     \
 }
 
 /*
@@ -555,9 +603,139 @@ typedef struct {
        1,                                      \
        1,                                      \
        0,                                      \
-       0                                       \
+       0,                                      \
+       255                                     \
 }
 
+#ifdef SCSI_NCR_NVRAM_SUPPORT
+/*
+**     Symbios NvRAM data format
+*/
+#define SYMBIOS_NVRAM_SIZE 368
+#define SYMBIOS_NVRAM_ADDRESS 0x100
+
+struct Symbios_nvram {
+/* Header 6 bytes */
+       u_short type;           /* 0x0000 */
+       u_short byte_count;     /* excluding header/trailer */
+       u_short checksum;
+
+/* Controller set up 20 bytes */
+       u_char  v_major;        /* 0x00 */
+       u_char  v_minor;        /* 0x30 */
+       u_int32 boot_crc;
+       u_short flags;
+#define SYMBIOS_SCAM_ENABLE    (1)
+#define SYMBIOS_PARITY_ENABLE  (1<<1)
+#define SYMBIOS_VERBOSE_MSGS   (1<<2)
+#define SYMBIOS_CHS_MAPPING    (1<<3)
+#define SYMBIOS_NO_NVRAM       (1<<3)  /* ??? */
+       u_short flags1;
+#define SYMBIOS_SCAN_HI_LO     (1)
+       u_short term_state;
+#define SYMBIOS_TERM_CANT_PROGRAM      (0)
+#define SYMBIOS_TERM_ENABLED           (1)
+#define SYMBIOS_TERM_DISABLED          (2)
+       u_short rmvbl_flags;
+#define SYMBIOS_RMVBL_NO_SUPPORT       (0)
+#define SYMBIOS_RMVBL_BOOT_DEVICE      (1)
+#define SYMBIOS_RMVBL_MEDIA_INSTALLED  (2)
+       u_char  host_id;
+       u_char  num_hba;        /* 0x04 */
+       u_char  num_devices;    /* 0x10 */
+       u_char  max_scam_devices;       /* 0x04 */
+       u_char  num_valid_scam_devives; /* 0x00 */
+       u_char  rsvd;
+
+/* Boot order 14 bytes * 4 */
+       struct Symbios_host{
+               u_short type;           /* 4:8xx / 0:nok */
+               u_short device_id;      /* PCI device id */
+               u_short vendor_id;      /* PCI vendor id */
+               u_char  bus_nr;         /* PCI bus number */
+               u_char  device_fn;      /* PCI device/function number << 3*/
+               u_short word8;
+               u_short flags;
+#define        SYMBIOS_INIT_SCAN_AT_BOOT       (1)
+               u_short io_port;        /* PCI io_port address */
+       } host[4];
+
+/* Targets 8 bytes * 16 */
+       struct Symbios_target {
+               u_char  flags;
+#define SYMBIOS_DISCONNECT_ENABLE      (1)
+#define SYMBIOS_SCAN_AT_BOOT_TIME      (1<<1)
+#define SYMBIOS_SCAN_LUNS              (1<<2)
+#define SYMBIOS_QUEUE_TAGS_ENABLED     (1<<3)
+               u_char  rsvd;
+               u_char  bus_width;      /* 0x08/0x10 */
+               u_char  sync_offset;
+               u_short sync_period;    /* 4*period factor */
+               u_short timeout;
+       } target[16];
+/* Scam table 8 bytes * 4 */
+       struct Symbios_scam {
+               u_short id;
+               u_short method;
+#define SYMBIOS_SCAM_DEFAULT_METHOD    (0)
+#define SYMBIOS_SCAM_DONT_ASSIGN       (1)
+#define SYMBIOS_SCAM_SET_SPECIFIC_ID   (2)
+#define SYMBIOS_SCAM_USE_ORDER_GIVEN   (3)
+               u_short status;
+#define SYMBIOS_SCAM_UNKNOWN           (0)
+#define SYMBIOS_SCAM_DEVICE_NOT_FOUND  (1)
+#define SYMBIOS_SCAM_ID_NOT_SET                (2)
+#define SYMBIOS_SCAM_ID_VALID          (3)
+               u_char  target_id;
+               u_char  rsvd;
+       } scam[4];
+
+       u_char  spare_devices[15*8];
+       u_char  trailer[6];             /* 0xfe 0xfe 0x00 0x00 0x00 0x00 */
+};
+typedef struct Symbios_nvram   Symbios_nvram;
+typedef struct Symbios_host    Symbios_host;
+typedef struct Symbios_target  Symbios_target;
+typedef struct Symbios_scam    Symbios_scam;
+
+/*
+**     Tekram NvRAM data format.
+*/
+#define TEKRAM_NVRAM_SIZE 64
+#define TEKRAM_NVRAM_ADDRESS 0
+
+struct Tekram_nvram {
+       struct Tekram_target {
+               u_char  flags;
+#define        TEKRAM_PARITY_CHECK             (1)
+#define TEKRAM_SYNC_NEGO               (1<<1)
+#define TEKRAM_DISCONNECT_ENABLE       (1<<2)
+#define        TEKRAM_START_CMD                (1<<3)
+#define TEKRAM_TAGGED_COMMANDS         (1<<4)
+#define TEKRAM_WIDE_NEGO               (1<<5)
+               u_char  sync_index;
+               u_short word2;
+       } target[16];
+       u_char  host_id;
+       u_char  flags;
+#define TEKRAM_MORE_THAN_2_DRIVES      (1)
+#define TEKRAM_DRIVES_SUP_1GB          (1<<1)
+#define        TEKRAM_RESET_ON_POWER_ON        (1<<2)
+#define TEKRAM_ACTIVE_NEGATION         (1<<3)
+#define TEKRAM_IMMEDIATE_SEEK          (1<<4)
+#define        TEKRAM_SCAN_LUNS                (1<<5)
+#define        TEKRAM_REMOVABLE_FLAGS          (3<<6)  /* 0: disable; 1: boot device; 2:all */
+       u_char  boot_delay_index;
+       u_char  max_tags_index;
+       u_short flags1;
+#define TEKRAM_F2_F6_ENABLED           (1)
+       u_short spare[29];
+};
+typedef struct Tekram_nvram    Tekram_nvram;
+typedef struct Tekram_target   Tekram_target;
+
+#endif /* SCSI_NCR_NVRAM_SUPPORT */
+
 /**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
 
 /*-----------------------------------------------------------------
index 20f2e078d02739668cf97c862f880b2fdfeccfbd..acda354ebcf2ca91638ae65f4c64f018cb5fcfbb 100644 (file)
@@ -784,6 +784,7 @@ static ssize_t sound_copy_translate(const u_char *userPtr,
 
 struct sound_mixer {
     int busy;
+    int modify_counter;
 };
 
 static struct sound_mixer mixer;
@@ -3811,10 +3812,23 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
                       u_long arg)
 {
        int data;
+       if (_SIOC_DIR(cmd) & _SIOC_WRITE)
+           mixer.modify_counter++;
+       if (cmd == OSS_GETVERSION)
+           return IOCTL_OUT(arg, SOUND_VERSION);
        switch (sound.mach.type) {
 #ifdef CONFIG_ATARI
        case DMASND_FALCON:
                switch (cmd) {
+               case SOUND_MIXER_INFO: {
+                   mixer_info info;
+                   strncpy(info.id, "FALCON", sizeof(info.id));
+                   strncpy(info.name, "FALCON", sizeof(info.name));
+                   info.name[sizeof(info.name)-1] = 0;
+                   info.modify_counter = mixer.modify_counter;
+                   copy_to_user_ret((int *)arg, &info, sizeof(info), -EFAULT);
+                   return 0;
+               }
                case SOUND_MIXER_READ_DEVMASK:
                        return IOCTL_OUT(arg, SOUND_MASK_VOLUME | SOUND_MASK_MIC | SOUND_MASK_SPEAKER);
                case SOUND_MIXER_READ_RECMASK:
@@ -3866,6 +3880,15 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
 
        case DMASND_TT:
                switch (cmd) {
+               case SOUND_MIXER_INFO: {
+                   mixer_info info;
+                   strncpy(info.id, "TT", sizeof(info.id));
+                   strncpy(info.name, "TT", sizeof(info.name));
+                   info.name[sizeof(info.name)-1] = 0;
+                   info.modify_counter = mixer.modify_counter;
+                   copy_to_user_ret((int *)arg, &info, sizeof(info), -EFAULT);
+                   return 0;
+               }
                case SOUND_MIXER_READ_DEVMASK:
                        return IOCTL_OUT(arg,
                                         SOUND_MASK_VOLUME | SOUND_MASK_TREBLE | SOUND_MASK_BASS |
@@ -3927,6 +3950,15 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
 #ifdef CONFIG_AMIGA
        case DMASND_AMIGA:
                switch (cmd) {
+               case SOUND_MIXER_INFO: {
+                   mixer_info info;
+                   strncpy(info.id, "AMIGA", sizeof(info.id));
+                   strncpy(info.name, "AMIGA", sizeof(info.name));
+                   info.name[sizeof(info.name)-1] = 0;
+                   info.modify_counter = mixer.modify_counter;
+                   copy_to_user_ret((int *)arg, &info, sizeof(info), -EFAULT);
+                   return 0;
+               }
                case SOUND_MIXER_READ_DEVMASK:
                        return IOCTL_OUT(arg, SOUND_MASK_VOLUME | SOUND_MASK_TREBLE);
                case SOUND_MIXER_READ_RECMASK:
@@ -3953,6 +3985,16 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
        case DMASND_AWACS:
                if (awacs_revision<AWACS_BURGUNDY) { /* Different IOCTLS for burgundy*/
                        switch (cmd) {
+                       case SOUND_MIXER_INFO: {
+                           mixer_info info;
+                           strncpy(info.id, "AWACS", sizeof(info.id));
+                           strncpy(info.name, "AWACS", sizeof(info.name));
+                           info.name[sizeof(info.name)-1] = 0;
+                           info.modify_counter = mixer.modify_counter;
+                           copy_to_user_ret((int *)arg, &info, 
+                                            sizeof(info), -EFAULT);
+                           return 0;
+                       }
                        case SOUND_MIXER_READ_DEVMASK:
                                data = SOUND_MASK_VOLUME | SOUND_MASK_SPEAKER
                                        | SOUND_MASK_LINE | SOUND_MASK_MIC
@@ -4066,6 +4108,16 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
                } else {
                        /* We are, we are, we are... Burgundy or better */
                        switch(cmd) {
+                       case SOUND_MIXER_INFO: {
+                           mixer_info info;
+                           strncpy(info.id, "AWACS", sizeof(info.id));
+                           strncpy(info.name, "AWACS", sizeof(info.name));
+                           info.name[sizeof(info.name)-1] = 0;
+                           info.modify_counter = mixer.modify_counter;
+                           copy_to_user_ret((int *)arg, &info, 
+                                            sizeof(info), -EFAULT);
+                           return 0;
+                       }
                        case SOUND_MIXER_READ_DEVMASK:
                                data = SOUND_MASK_VOLUME | SOUND_MASK_CD |
                                        SOUND_MASK_LINE | SOUND_MASK_MIC |
index 469c990e7c75ce38631849b0441036285a3a360e..cc7dfadfa951e89acf4e6ff5b721bf73cc671794 100644 (file)
@@ -68,6 +68,8 @@
  *    15.06.99   0.12  Fix bad allocation bug.
  *                     Thanks to Deti Fliegl <fliegl@in.tum.de>
  *    28.06.99   0.13  Add pci_set_master
+ *    21.07.99   0.14  S/PDIF module option for cards revision >= 4. Initial version
+ *                     by Dave Platt <dplatt@snulbug.mtview.ca.us>.
  *
  */
 
 static const unsigned sample_size[] = { 1, 2, 2, 4 };
 static const unsigned sample_shift[] = { 0, 1, 1, 2 };
 
+#define CTRL_SPDIFEN_B  0x04000000
 #define CTRL_JOY_SHIFT  24
 #define CTRL_JOY_MASK   3
 #define CTRL_JOY_200    0x00000000  /* joystick base address */
@@ -178,6 +181,9 @@ static const unsigned sample_shift[] = { 0, 1, 1, 2 };
 
 
 #define STAT_INTR       0x80000000  /* wired or of all interrupt bits */
+#define STAT_EN_SPDIF   0x00040000  /* enable S/PDIF circuitry */
+#define STAT_TS_SPDIF   0x00020000  /* test S/PDIF circuitry */
+#define STAT_TESTMODE   0x00010000  /* test ASIC */
 #define STAT_SYNC_ERR   0x00000100  /* 1 = codec sync error */
 #define STAT_VC         0x000000c0  /* CCB int source, 0=DAC1, 1=DAC2, 2=ADC, 3=undef */
 #define STAT_SH_VC      6
@@ -2701,6 +2707,7 @@ CONFIG_SOUND_ES1371_GAMEPORT
 #else
 static int joystick[NR_DEVICE] = { 0, };
 #endif
+static int spdif[NR_DEVICE] = { 0, };
 
 /* --------------------------------------------------------------------- */
 
@@ -2733,6 +2740,8 @@ __initfunc(int init_es1371(void))
        struct pci_dev *pcidev = NULL;
        mm_segment_t fs;
        int i, val, val2, index = 0;
+       u8 revision;
+       unsigned cssr;
 
        if (!pci_present())   /* No PCI bus in this machine! */
                return -ENODEV;
@@ -2789,6 +2798,18 @@ __initfunc(int init_es1371(void))
                        }
                }
                s->sctrl = 0;
+               cssr = 0;
+               /* check to see if s/pdif mode is being requested */
+               pci_read_config_byte(pcidev, PCI_REVISION_ID, &revision);
+               if (spdif[index]) {
+                       if (revision >= 4) {
+                               printk(KERN_INFO "es1371: enabling S/PDIF output\n");
+                               cssr |= STAT_EN_SPDIF;
+                               s->ctrl |= CTRL_SPDIFEN_B;
+                       } else {
+                               printk(KERN_ERR "es1371: revision %d does not support S/PDIF\n", revision);
+                       }
+               }
                /* initialize the chips */
                outl(s->ctrl, s->io+ES1371_REG_CONTROL);
                outl(s->sctrl, s->io+ES1371_REG_SERIAL_CONTROL);
@@ -2863,6 +2884,8 @@ __initfunc(int init_es1371(void))
                        mixer_ioctl(s, initvol[i].mixch, (unsigned long)&val);
                }
                set_fs(fs);
+               /* turn on S/PDIF output driver if requested */
+               outl(cssr, s->io+ES1371_REG_STATUS);
                /* queue it for later freeing */
                s->next = devs;
                devs = s;
@@ -2894,6 +2917,8 @@ __initfunc(int init_es1371(void))
 
 MODULE_PARM(joystick, "1-" __MODULE_STRING(NR_DEVICE) "i");
 MODULE_PARM_DESC(joystick, "sets address and enables joystick interface (still need separate driver)");
+MODULE_PARM(spdif, "1-" __MODULE_STRING(NR_DEVICE) "i");
+MODULE_PARM_DESC(spdif, "if 1 the output is in S/PDIF digital mode");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
 MODULE_DESCRIPTION("ES1371 AudioPCI97 Driver");
index 1f9e41ac8003c4d0d3cd2c16ead5711f4b1149ab..2caffa3d73f38a9eac1531486e0f1185da7aa64a 100644 (file)
@@ -1,4 +1,4 @@
-/*  $Id: atyfb.c,v 1.106 1999/04/16 11:20:49 geert Exp $
+/*  $Id: atyfb.c,v 1.106.2.1 1999/06/22 06:28:23 paulus Exp $
  *  linux/drivers/video/atyfb.c -- Frame buffer device for ATI Mach64
  *
  *     Copyright (C) 1997-1998  Geert Uytterhoeven
@@ -200,6 +200,7 @@ struct fb_info_aty {
     struct atyfb_par default_par;
     struct atyfb_par current_par;
     u32 total_vram;
+    u32 ref_clk_per;
     u32 pll_per;
     u32 mclk_per;
     u16 chip_type;
@@ -326,9 +327,7 @@ static void reset_engine(const struct fb_info_aty *info);
 static void init_engine(const struct atyfb_par *par, struct fb_info_aty *info);
 static void aty_st_514(int offset, u8 val, const struct fb_info_aty *info);
 static void aty_st_pll(int offset, u8 val, const struct fb_info_aty *info);
-#if defined(__sparc__) || defined(DEBUG)
 static u8 aty_ld_pll(int offset, const struct fb_info_aty *info);
-#endif
 static void aty_set_crtc(const struct fb_info_aty *info,
                         const struct crtc *crtc);
 static int aty_var_to_crtc(const struct fb_info_aty *info,
@@ -341,7 +340,8 @@ static void aty_set_pll_gx(const struct fb_info_aty *info,
                           const struct pll_gx *pll);
 static int aty_var_to_pll_18818(u32 vclk_per, struct pll_gx *pll);
 static int aty_var_to_pll_514(u32 vclk_per, struct pll_gx *pll);
-static int aty_pll_gx_to_var(const struct pll_gx *pll, u32 *vclk_per);
+static int aty_pll_gx_to_var(const struct pll_gx *pll, u32 *vclk_per,
+                            const struct fb_info_aty *info);
 static void aty_set_pll_ct(const struct fb_info_aty *info,
                           const struct pll_ct *pll);
 static int aty_dsp_gt(const struct fb_info_aty *info, u8 mclk_fb_div,
@@ -349,7 +349,8 @@ static int aty_dsp_gt(const struct fb_info_aty *info, u8 mclk_fb_div,
                      u8 bpp, struct pll_ct *pll);
 static int aty_var_to_pll_ct(const struct fb_info_aty *info, u32 vclk_per,
                             u8 bpp, struct pll_ct *pll);
-static int aty_pll_ct_to_var(const struct pll_ct *pll, u32 *vclk_per);
+static int aty_pll_ct_to_var(const struct pll_ct *pll, u32 *vclk_per,
+                            const struct fb_info_aty *info);
 static void atyfb_set_par(const struct atyfb_par *par,
                          struct fb_info_aty *info);
 static int atyfb_decode_var(const struct fb_var_screeninfo *var,
@@ -405,8 +406,6 @@ static u32 default_vram __initdata = 0;
 static int default_pll __initdata = 0;
 static int default_mclk __initdata = 0;
 
-static const u32 ref_clk_per = 1000000000000ULL/14318180;
-
 #if defined(CONFIG_PPC)
 static int default_vmode __initdata = VMODE_NVRAM;
 static int default_cmode __initdata = CMODE_NVRAM;
@@ -474,7 +473,7 @@ static inline u32 aty_ld_le32(volatile unsigned int regindex,
 
 #if defined(__powerpc__)
     temp = info->ati_regbase;
-    asm("lwbrx %0,%1,%2" : "=r"(val) : "r" (regindex), "r" (temp));
+    asm("lwbrx %0,%1,%2" : "=r"(val) : "b" (regindex), "r" (temp));
 #elif defined(__sparc_v9__)
     temp = info->ati_regbase + regindex;
     asm("lduwa [%1] %2, %0" : "=r" (val) : "r" (temp), "i" (ASI_PL));
@@ -492,7 +491,7 @@ static inline void aty_st_le32(volatile unsigned int regindex, u32 val,
 
 #if defined(__powerpc__)
     temp = info->ati_regbase;
-    asm("stwbrx %0,%1,%2" : : "r" (val), "r" (regindex), "r" (temp) :
+    asm("stwbrx %0,%1,%2" : : "r" (val), "b" (regindex), "r" (temp) :
        "memory");
 #elif defined(__sparc_v9__)
     temp = info->ati_regbase + regindex;
@@ -689,7 +688,6 @@ static void aty_st_pll(int offset, u8 val, const struct fb_info_aty *info)
     aty_st_8(CLOCK_CNTL + 1, (offset << 2) & ~PLL_WR_EN, info);
 }
 
-#if defined(__sparc__) || defined(DEBUG)
 static u8 aty_ld_pll(int offset, const struct fb_info_aty *info)
 {
     u8 res;
@@ -702,7 +700,6 @@ static u8 aty_ld_pll(int offset, const struct fb_info_aty *info)
     eieio();
     return res;
 }
-#endif
 
 #if defined(CONFIG_PPC)
 
@@ -1455,7 +1452,8 @@ static int aty_var_to_pll_514(u32 vclk_per, struct pll_gx *pll)
 
     /* FIXME: ATI18818?? */
 
-static int aty_pll_gx_to_var(const struct pll_gx *pll, u32 *vclk_per)
+static int aty_pll_gx_to_var(const struct pll_gx *pll, u32 *vclk_per,
+                            const struct fb_info_aty *info)
 {
     u8 df, vco_div_count, ref_div_count;
 
@@ -1463,7 +1461,7 @@ static int aty_pll_gx_to_var(const struct pll_gx *pll, u32 *vclk_per)
     vco_div_count = pll->m & 0x3f;
     ref_div_count = pll->n;
 
-    *vclk_per = ((ref_clk_per*ref_div_count)<<(3-df))/(vco_div_count+65);
+    *vclk_per = ((info->ref_clk_per*ref_div_count)<<(3-df))/(vco_div_count+65);
 
     return 0;
 }
@@ -1526,7 +1524,7 @@ static int aty_dsp_gt(const struct fb_info_aty *info, u8 mclk_fb_div,
     }
     dsp_precision -= 5;
     /* fifo_off<<6 */
-    fifo_off = ((xclks_per_row*(fifo_size-1))>>5)+(1<<6);
+    fifo_off = ((xclks_per_row*(fifo_size-1))>>5)+(3<<6);
 
     if (info->total_vram > 1*1024*1024) {
        if (info->ram_type >= SDRAM) {
@@ -1553,7 +1551,7 @@ static int aty_dsp_gt(const struct fb_info_aty *info, u8 mclk_fb_div,
     if (xclks_per_row >= (page_size<<11))
        fifo_on = ((2*page_size+1)<<6)+(xclks_per_row>>5);
     else
-       fifo_on = (3*page_size)<<6;
+       fifo_on = (3*page_size+2)<<6;
 
     dsp_xclks_per_row = xclks_per_row>>dsp_precision;
     dsp_on = fifo_on>>dsp_precision;
@@ -1579,10 +1577,10 @@ static int aty_var_to_pll_ct(const struct fb_info_aty *info, u32 vclk_per,
 
     pll->pll_vclk_cntl = 0x03; /* VCLK = PLL_VCLK/VCLKx_POST */
 
-    pll_ref_div = info->pll_per*2*255/ref_clk_per;
+    pll_ref_div = info->pll_per*2*255/info->ref_clk_per;
 
     /* FIXME: use the VTB/GTB /3 post divider if it's better suited */
-    q = ref_clk_per*pll_ref_div*4/info->mclk_per;      /* actually 8*q */
+    q = info->ref_clk_per*pll_ref_div*4/info->mclk_per;        /* actually 8*q */
     if (q < 16*8 || q > 255*8)
        FAIL("mclk out of range");
     else if (q < 32*8)
@@ -1596,7 +1594,7 @@ static int aty_var_to_pll_ct(const struct fb_info_aty *info, u32 vclk_per,
     mclk_fb_div = q*mclk_post_div/8;
 
     /* FIXME: use the VTB/GTB /{3,6,12} post dividers if they're better suited */
-    q = ref_clk_per*pll_ref_div*4/vclk_per;    /* actually 8*q */
+    q = info->ref_clk_per*pll_ref_div*4/vclk_per;      /* actually 8*q */
     if (q < 16*8 || q > 255*8)
        FAIL("vclk out of range");
     else if (q < 32*8)
@@ -1677,7 +1675,8 @@ static int aty_var_to_pll_ct(const struct fb_info_aty *info, u32 vclk_per,
     return 0;
 }
 
-static int aty_pll_ct_to_var(const struct pll_ct *pll, u32 *vclk_per)
+static int aty_pll_ct_to_var(const struct pll_ct *pll, u32 *vclk_per,
+                            const struct fb_info_aty *info)
 {
     u8 pll_ref_div = pll->pll_ref_div;
     u8 vclk_fb_div = pll->vclk_fb_div;
@@ -1691,7 +1690,7 @@ static int aty_pll_ct_to_var(const struct pll_ct *pll, u32 *vclk_per)
                                    (vclk_post_div & 3)];
     if (vpostdiv == 0)
        return -EINVAL;
-    *vclk_per = pll_ref_div*vpostdiv*ref_clk_per/vclk_fb_div/2;
+    *vclk_per = pll_ref_div*vpostdiv*info->ref_clk_per/vclk_fb_div/2;
     return 0;
 }
 
@@ -1845,9 +1844,9 @@ static int atyfb_encode_var(struct fb_var_screeninfo *var,
     if ((err = aty_crtc_to_var(&par->crtc, var)))
        return err;
     if ((Gx == GX_CHIP_ID) || (Gx == CX_CHIP_ID))
-       err = aty_pll_gx_to_var(&par->pll.gx, &var->pixclock);
+       err = aty_pll_gx_to_var(&par->pll.gx, &var->pixclock, info);
     else
-       err = aty_pll_ct_to_var(&par->pll.ct, &var->pixclock);
+       err = aty_pll_ct_to_var(&par->pll.ct, &var->pixclock, info);
     if (err)
        return err;
 
@@ -2432,11 +2431,12 @@ __initfunc(static int aty_init(struct fb_info_aty *info, const char *name))
     int j, k;
     struct fb_var_screeninfo var;
     struct display *disp;
-    const char *chipname = NULL, *ramname = NULL;
+    const char *chipname = NULL, *ramname = NULL, *xtal;
     int pll, mclk, gtb_memsize;
 #if defined(CONFIG_PPC)
     int sense;
 #endif
+    u8 pll_ref_div;
 
     info->aty_cmap_regs = (struct aty_cmap_regs *)(info->ati_regbase+0xc0);
     chip_id = aty_ld_le32(CONFIG_CHIP_ID, info);
@@ -2524,6 +2524,25 @@ __initfunc(static int aty_init(struct fb_info_aty *info, const char *name))
        }
     }
 
+    info->ref_clk_per = 1000000000000ULL/14318180;
+    xtal = "14.31818";
+    if (!(Gx == GX_CHIP_ID || Gx == CX_CHIP_ID || Gx == CT_CHIP_ID ||
+         Gx == ET_CHIP_ID ||
+         ((Gx == VT_CHIP_ID || Gx == GT_CHIP_ID) && !(Rev & 0x07))) &&
+       (pll_ref_div = aty_ld_pll(PLL_REF_DIV, info))) {
+       int diff1, diff2;
+       diff1 = 510*14/pll_ref_div-pll;
+       diff2 = 510*29/pll_ref_div-pll;
+       if (diff1 < 0)
+           diff1 = -diff1;
+       if (diff2 < 0)
+           diff2 = -diff2;
+       if (diff2 < diff1) {
+           info->ref_clk_per = 1000000000000ULL/29498928;
+           xtal = "29.498928";
+       }
+    }
+
     i = aty_ld_le32(MEM_CNTL, info);
     gtb_memsize = !(Gx == GX_CHIP_ID || Gx == CX_CHIP_ID || Gx == CT_CHIP_ID ||
                    Gx == ET_CHIP_ID ||
@@ -2602,9 +2621,9 @@ __initfunc(static int aty_init(struct fb_info_aty *info, const char *name))
     if (default_mclk)
        mclk = default_mclk;
 
-    printk("%d%c %s, %d MHz PLL, %d Mhz MCLK\n", 
+    printk("%d%c %s, %s MHz XTAL, %d MHz PLL, %d Mhz MCLK\n", 
           info->total_vram == 0x80000 ? 512 : (info->total_vram >> 20), 
-          info->total_vram == 0x80000 ? 'K' : 'M', ramname, pll, mclk);
+          info->total_vram == 0x80000 ? 'K' : 'M', ramname, xtal, pll, mclk);
 
     if (mclk < 44)
        info->mem_refresh_rate = 0;     /* 000 = 10 Mhz - 43 Mhz */
index 2a783fc9b32f2543d0ebeea62a5bc5d8c1e827a4..db4ad05c8b6ad88e5e06dd04f575a7598a0e4540 100644 (file)
@@ -720,9 +720,11 @@ __initfunc(void control_of_init(struct device_node *dp))
        p->total_vram = (bank1 + bank2) * 0x200000;
        /* If we don't have bank 1 installed, we hope we have bank 2 :-) */
        p->control_use_bank2 = !bank1;
-       if (p->control_use_bank2)
+       if (p->control_use_bank2) {
                p->frame_buffer += 0x600000;
-
+               p->frame_buffer_phys += 0x600000;
+       }
+       
        init_control(p);
 }
 
index 99ebadf4b9d53e2099f720096c1bf5cf28e89a9c..6552b29283b8a270e75852de73b5aa64cf065fa9 100644 (file)
@@ -1079,7 +1079,7 @@ imsttfbcon_clear (struct vc_data *conp, struct display *disp,
        out_le32(&p->dc_regs[BI], 0xffffffff);
        out_le32(&p->dc_regs[MBC], 0xffffffff);
        out_le32(&p->dc_regs[CLR], bgc);
-       out_le32(&p->dc_regs[BLTCTL], 0x200000);
+       out_le32(&p->dc_regs[BLTCTL], 0x840); /* 0x200000 */
        while(in_le32(&p->dc_regs[SSTATUS]) & 0x80);
        while(in_le32(&p->dc_regs[SSTATUS]) & 0x40);
 }
index 89f6860f28583d2921dee4a90e617e496e1f76ad..349b56d017291ab52f3f54e1ce0e213bd2fc99e5 100644 (file)
@@ -10,7 +10,7 @@
  *
  *  Hardware information from:
  *    platinum.c: Console support for PowerMac "platinum" display adaptor.
- *    Copyright (C) 1996 Paul Mackerras
+ *    Copyright (C) 1996 Paul Mackerras and Mark Abene
  *
  *  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
@@ -66,6 +66,7 @@ struct fb_par_platinum {
 struct fb_info_platinum {
        struct fb_info                  fb_info;
        struct display                  disp;
+       struct display_switch           dispsw;
        struct fb_par_platinum          default_par;
        struct fb_par_platinum          current_par;
 
@@ -145,6 +146,8 @@ static int platinum_var_to_par(const struct fb_var_screeninfo *var,
 static int platinum_encode_fix(struct fb_fix_screeninfo *fix,
                               const struct fb_par_platinum *par,
                               const struct fb_info_platinum *info);
+static void platinum_set_disp(struct display *disp, struct fb_info_platinum *info,
+                             int cmode, int accel);
 static int platinum_getcolreg(u_int regno, u_int *red, u_int *green, u_int *blue,
                              u_int *transp, struct fb_info *fb);
 static int platinum_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
@@ -219,6 +222,36 @@ static int platinum_get_var(struct fb_var_screeninfo *var, int con,
        return 0;
 }
 
+static void platinum_set_disp(struct display *disp, struct fb_info_platinum *info,
+                             int cmode, int accel)
+{
+       switch(cmode) {
+#ifdef FBCON_HAS_CFB8
+           case CMODE_8:
+               info->dispsw = fbcon_cfb8;
+               disp->dispsw = &info->dispsw;
+               break;
+#endif
+#ifdef FBCON_HAS_CFB16
+           case CMODE_16:
+               info->dispsw = fbcon_cfb16;
+               disp->dispsw = &info->dispsw;
+               disp->dispsw_data = info->fbcon_cmap.cfb16;
+               break;
+#endif
+#ifdef FBCON_HAS_CFB32
+           case CMODE_32:
+               info->dispsw = fbcon_cfb32;
+               disp->dispsw = &info->dispsw;
+               disp->dispsw_data = info->fbcon_cmap.cfb32;
+               break;
+#endif
+           default:
+               disp->dispsw = &fbcon_dummy;
+               break;
+       }
+}
+
 static int platinum_set_var(struct fb_var_screeninfo *var, int con,
                            struct fb_info *fb)
 {
@@ -227,6 +260,7 @@ static int platinum_set_var(struct fb_var_screeninfo *var, int con,
        struct display *display;
        int oldxres, oldyres, oldvxres, oldvyres, oldbpp, err;
        int activate = var->activate;
+       struct platinum_regvals *init;
 
        display = (con >= 0) ? &fb_display[con] : fb->disp;
 
@@ -242,6 +276,8 @@ static int platinum_set_var(struct fb_var_screeninfo *var, int con,
                return 0;
        }
 
+       init = platinum_reg_init[par.vmode-1];
+
        oldxres = display->var.xres;
        oldyres = display->var.yres;
        oldvxres = display->var.xres_virtual;
@@ -255,7 +291,7 @@ static int platinum_set_var(struct fb_var_screeninfo *var, int con,
            struct fb_fix_screeninfo fix;
 
            platinum_encode_fix(&fix, &par, info);
-           display->screen_base = (char *) info->frame_buffer + 0x1000;
+           display->screen_base = (char *) info->frame_buffer + init->fb_offset + 0x20;
            display->visual = fix.visual;
            display->type = fix.type;
            display->type_aux = fix.type_aux;
@@ -264,36 +300,14 @@ static int platinum_set_var(struct fb_var_screeninfo *var, int con,
            display->line_length = fix.line_length;
            display->can_soft_blank = 1;
            display->inverse = 0;
-
-           switch(par.cmode) {
-#ifdef FBCON_HAS_CFB8
-            case CMODE_8:
-               display->dispsw = &fbcon_cfb8;
-               break;
-#endif
-#ifdef FBCON_HAS_CFB16
-            case CMODE_16:
-               display->dispsw = &fbcon_cfb16;
-               display->dispsw_data = info->fbcon_cmap.cfb16;
-               break;
-#endif
-#ifdef FBCON_HAS_CFB32
-            case CMODE_32:
-               display->dispsw = &fbcon_cfb32;
-               display->dispsw_data = info->fbcon_cmap.cfb32;
-               break;
-#endif
-            default:
-               display->dispsw = &fbcon_dummy;
-               break;
-           }
-           
+           platinum_set_disp(display, info, par.cmode, 0);
            display->scrollmode = SCROLL_YREDRAW;
            if (info->fb_info.changevar)
              (*info->fb_info.changevar)(con);
        }
 
-       if (con == currcon)
+       if (!info->fb_info.display_fg ||
+           info->fb_info.display_fg->vc_num == con)
                platinum_set_par(&par, info);
 
        if (oldbpp != var->bits_per_pixel) {
@@ -322,7 +336,8 @@ static int platinum_pan_display(struct fb_var_screeninfo *var, int con,
 static int platinum_get_cmap(struct fb_cmap *cmap, int kspc, int con,
                             struct fb_info *info)
 {
-       if (con == currcon)             /* current console? */
+       if (!info->display_fg ||
+           info->display_fg->vc_num == con)    /* current console? */
                return fb_get_cmap(cmap, kspc, platinum_getcolreg, info);
        if (fb_display[con].cmap.len)   /* non default colormap? */
                fb_copy_cmap(&fb_display[con].cmap, cmap, kspc ? 0 : 2);
@@ -337,17 +352,23 @@ static int platinum_set_cmap(struct fb_cmap *cmap, int kspc, int con,
                             struct fb_info *info)
 {
        int err;
+       struct display *disp;
 
-       if (!fb_display[con].cmap.len) {
-               int size = fb_display[con].var.bits_per_pixel == 16 ? 32 : 256;
-               err = fb_alloc_cmap(&fb_display[con].cmap, size, 0);
-               if (err)
+       if (con >= 0)
+               disp = &fb_display[con];
+       else
+               disp = info->disp;
+       if (!disp->cmap.len) {     /* no colormap allocated? */
+               int size = disp->var.bits_per_pixel == 16 ? 32 : 256;
+               if ((err = fb_alloc_cmap(&disp->cmap, size, 0)))
                        return err;
        }
 
-       if (con == currcon)
+       if (!info->display_fg ||
+           info->display_fg->vc_num == con)    /* current console? */
                return fb_set_cmap(cmap, kspc, platinum_setcolreg, info);
-       fb_copy_cmap(cmap, &fb_display[con].cmap, kspc ? 0 : 1);
+       else
+               fb_copy_cmap(cmap, &disp->cmap, kspc ? 0 : 1);
        return 0;
 }
 
@@ -368,8 +389,9 @@ static int platinum_switch(int con, struct fb_info *fb)
                            fb);
        currcon = con;
 
-       platinum_var_to_par(&fb_display[currcon].var, &par, info);
+       platinum_var_to_par(&fb_display[con].var, &par, info);
        platinum_set_par(&par, info);
+       platinum_set_disp(&fb_display[con], info, par.cmode, 0);
        do_install_cmap(con, fb);
 
        return 1;
@@ -431,7 +453,6 @@ static int platinum_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
 {
        struct fb_info_platinum *info = (struct fb_info_platinum *) fb;
        volatile struct cmap_regs *cmap_regs = info->cmap_regs;
-       int scale;
 
        if (regno > 255)
                return 1;
@@ -444,12 +465,10 @@ static int platinum_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
        info->palette[regno].green = green;
        info->palette[regno].blue = blue;
 
-       scale = (info->current_par.cmode == CMODE_16) ? 3 : 0;
-
        out_8(&cmap_regs->addr, regno);         /* tell clut what addr to fill  */
-       out_8(&cmap_regs->lut, red<<scale);     /* send one color channel at    */
-       out_8(&cmap_regs->lut, green<<scale);   /* a time...                    */
-       out_8(&cmap_regs->lut, blue<<scale);
+       out_8(&cmap_regs->lut, red);            /* send one color channel at    */
+       out_8(&cmap_regs->lut, green);          /* a time...                    */
+       out_8(&cmap_regs->lut, blue);
 
        if(regno < 16) {
 #ifdef FBCON_HAS_CFB16
@@ -538,7 +557,7 @@ static void platinum_set_par(const struct fb_par_platinum *par, struct fb_info_p
        out_be32(&platinum_regs->reg[26+32].r, (info->total_vram == 0x100000 ?
                                                init->offset[cmode] + 4 - cmode :
                                                init->offset[cmode]));
-       out_be32(&platinum_regs->reg[16].r, (unsigned) info->frame_buffer_phys + 0x1000 - 0x10);
+       out_be32(&platinum_regs->reg[16].r, (unsigned) info->frame_buffer_phys+init->fb_offset+0x10);
        out_be32(&platinum_regs->reg[18].r, init->pitch[cmode]);
        out_be32(&platinum_regs->reg[19].r, (info->total_vram == 0x100000 ?
                                             init->mode[cmode+1] :
@@ -571,7 +590,7 @@ static void platinum_set_par(const struct fb_par_platinum *par, struct fb_info_p
                display_info.mode = vmode;
                strncpy(display_info.name, "platinum",
                        sizeof(display_info.name));
-               display_info.fb_address = info->frame_buffer_phys + 0x1000;
+               display_info.fb_address = info->frame_buffer_phys + init->fb_offset + 0x20;
                display_info.cmap_adr_address = info->cmap_regs_phys;
                display_info.cmap_data_address = info->cmap_regs_phys + 0x30;
                display_info.disp_reg_address = info->platinum_regs_phys;
@@ -664,7 +683,7 @@ __initfunc(void platinum_init(void))
 
 #ifdef __powerpc__
 #define invalidate_cache(addr) \
-       asm volatile("eieio; dcbi 0,%1" \
+       asm volatile("eieio; dcbf 0,%1" \
        : "=m" (*(addr)) : "r" (addr) : "memory");
 #else
 #define invalidate_cache(addr)
@@ -674,6 +693,7 @@ __initfunc(void platinum_of_init(struct device_node *dp))
 {
        struct fb_info_platinum *info;
        unsigned long           addr, size;
+       volatile __u8           *fbuffer;
        int                     i, bank0, bank1, bank2, bank3;
 
        if(dp->n_addrs != 2)
@@ -708,19 +728,20 @@ __initfunc(void platinum_of_init(struct device_node *dp))
        out_be32(&info->platinum_regs->reg[20].r, 0x1011);      /* select max vram */
        out_be32(&info->platinum_regs->reg[24].r, 0);   /* switch in vram */
 
-       info->base_frame_buffer[0x100000] = 0x34;
-       info->base_frame_buffer[0x100008] = 0x0;
-       invalidate_cache(&info->base_frame_buffer[0x100000]);
-       info->base_frame_buffer[0x200000] = 0x56;
-       info->base_frame_buffer[0x200008] = 0x0;
-       invalidate_cache(&info->base_frame_buffer[0x200000]);
-       info->base_frame_buffer[0x300000] = 0x78;
-       info->base_frame_buffer[0x300008] = 0x0;
-       invalidate_cache(&info->base_frame_buffer[0x300000]);
+       fbuffer = info->base_frame_buffer;
+       fbuffer[0x100000] = 0x34;
+       fbuffer[0x100008] = 0x0;
+       invalidate_cache(&fbuffer[0x100000]);
+       fbuffer[0x200000] = 0x56;
+       fbuffer[0x200008] = 0x0;
+       invalidate_cache(&fbuffer[0x200000]);
+       fbuffer[0x300000] = 0x78;
+       fbuffer[0x300008] = 0x0;
+       invalidate_cache(&fbuffer[0x300000]);
        bank0 = 1; /* builtin 1MB vram, always there */
-       bank1 = info->base_frame_buffer[0x100000] == 0x34;
-       bank2 = info->base_frame_buffer[0x200000] == 0x56;
-       bank3 = info->base_frame_buffer[0x300000] == 0x78;
+       bank1 = fbuffer[0x100000] == 0x34;
+       bank2 = fbuffer[0x200000] == 0x56;
+       bank3 = fbuffer[0x300000] == 0x78;
        info->total_vram = (bank0 + bank1 + bank2 + bank3) * 0x100000;
        printk(KERN_INFO "Total VRAM = %dMB %d%d%d%d\n", (int) (info->total_vram / 1024 / 1024), bank3, bank2, bank1, bank0);
 
@@ -832,10 +853,14 @@ static int platinum_encode_fix(struct fb_fix_screeninfo *fix,
                               const struct fb_par_platinum *par,
                               const struct fb_info_platinum *info)
 {
+       struct platinum_regvals *init;
+
+       init = platinum_reg_init[par->vmode-1];
+
        memset(fix, 0, sizeof(*fix));
        strcpy(fix->id, "platinum");
-       fix->smem_start = (void *) (info->frame_buffer_phys + 0x1000);
-       fix->smem_len = (u32) info->total_vram - 0x1000;
+       fix->smem_start = (void *) (info->frame_buffer_phys) + init->fb_offset + 0x20;
+       fix->smem_len = (u32) info->total_vram;
        fix->mmio_start = (char *) (info->platinum_regs_phys);
        fix->mmio_len = 0x1000;
        fix->type = FB_TYPE_PACKED_PIXELS;
@@ -881,6 +906,7 @@ __initfunc(void platinum_setup(char *options, int *ints))
                } else if (!strncmp(this_opt, "cmode:", 6)) {
                        int depth = simple_strtoul(this_opt+6, NULL, 0);
                        switch (depth) {
+                        case 0:
                         case 8:
                            default_cmode = CMODE_8;
                            break;
index ec72620bc19c79e8749ec07f396845f3adeabcdc..b67ad0efacddbc34296d6f37ed787af0837ca50f 100644 (file)
@@ -707,15 +707,18 @@ int ext2_notify_change(struct dentry *dentry, struct iattr *iattr)
        unsigned int    flags;
        
        retval = -EPERM;
-       if (iattr->ia_valid & ATTR_ATTR_FLAG &&
-           ((!(iattr->ia_attr_flags & ATTR_FLAG_APPEND) !=
+       if (iattr->ia_valid & ATTR_ATTR_FLAG)
+       {
+            if((!(iattr->ia_attr_flags & ATTR_FLAG_APPEND) !=
              !(inode->u.ext2_i.i_flags & EXT2_APPEND_FL)) ||
-            (!(iattr->ia_attr_flags & ATTR_FLAG_IMMUTABLE) !=
-             !(inode->u.ext2_i.i_flags & EXT2_IMMUTABLE_FL)))) {
+             (!(iattr->ia_attr_flags & ATTR_FLAG_IMMUTABLE) !=
+             !(inode->u.ext2_i.i_flags & EXT2_IMMUTABLE_FL))) {
                if (!capable(CAP_LINUX_IMMUTABLE))
                        goto out;
-       } else if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))
+            }
+            else if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))
                goto out;
+       }
 
        if (iattr->ia_valid & ATTR_SIZE) {
                off_t size = iattr->ia_size;
index 6bdf1c2fd1d34d1dcea016aea096eef5e8a358fe..24b41b97d77a98fd1b68e1dd8314011fd814fef1 100644 (file)
@@ -515,7 +515,7 @@ fat_read_super(struct super_block *sb, void *data, int silent,
 
                /* Must be FAT32 */
                fat32 = 1;
-               MSDOS_SB(sb)->fat_length= CF_LE_W(b->fat32_length)*sector_mult;
+               MSDOS_SB(sb)->fat_length= CF_LE_L(b->fat32_length)*sector_mult;
                MSDOS_SB(sb)->root_cluster = CF_LE_L(b->root_cluster);
 
                /* MC - if info_sector is 0, don't multiply by 0 */
index e283f478142cfa32385c0e8e2cd5d69971cdfdac..c70f7f1da977aa1875333d79bce0a2788d11d791 100644 (file)
@@ -350,9 +350,8 @@ ncp_lookup_validate(struct dentry * dentry, int flags)
        struct ncpfs_inode_info finfo;
        __u8 __name[dentry->d_name.len + 1];
         
-       if (!dir) {
+       if (!dentry->d_inode || !dir)
                return 0;
-       }
        
        server = NCP_SERVER(dir);
 
index ef5bc6ea9610d3334a810edb6061785c1168746a..24f5f7ccd9bb03da83cca71db4957ecdd9f2ca64 100644 (file)
@@ -463,6 +463,8 @@ static int nfs_lookup_revalidate(struct dentry * dentry, int flags)
 
        /* Filehandle matches? */
        if (memcmp(dentry->d_fsdata, &fhandle, sizeof(struct nfs_fh))) {
+               if (!list_empty(&dentry->d_subdirs))
+                       shrink_dcache_parent(dentry);
                if (dentry->d_count < 2)
                        goto out_bad;
        }
index c46eeb57bb505cf4c4a2da639dca5fa4852ca3d7..b6ba954e1228fa1839be80137548d667499c7c85 100644 (file)
@@ -727,7 +727,6 @@ _nfs_revalidate_inode(struct nfs_server *server, struct dentry *dentry)
                inode->i_ino);
        status = nfs_proc_getattr(server, NFS_FH(dentry), &fattr);
        if (status) {
-               int error;
                u32 *fh;
                struct nfs_fh fhandle;
                dfprintk(PAGECACHE, "nfs_revalidate_inode: %s/%s getattr failed, ino=%ld, error=%d\n",
@@ -742,10 +741,10 @@ _nfs_revalidate_inode(struct nfs_server *server, struct dentry *dentry)
                fh = (u32 *) NFS_FH(dentry);
                dfprintk(PAGECACHE, "NFS: bad fh %08x%08x%08x%08x%08x%08x%08x%08x\n",
                        fh[0],fh[1],fh[2],fh[3],fh[4],fh[5],fh[6],fh[7]);
-               error = nfs_proc_lookup(server, NFS_FH(dentry->d_parent), 
+               status = nfs_proc_lookup(server, NFS_FH(dentry->d_parent), 
                                        dentry->d_name.name, &fhandle, &fattr);
-               if (error) {
-                       dfprintk(PAGECACHE, "NFS: lookup failed, error=%d\n", error);
+               if (status) {
+                       dfprintk(PAGECACHE, "NFS: lookup failed, error=%d\n", status);
                        goto out;
                }
                fh = (u32 *) &fhandle;
index e3e2e4259e3c1e3fe858484d835a4899a229db95..3407d0159de0b75130eeffeefae0730179562a4e 100644 (file)
 #define CIA_MEM_R2_MASK 0x07ffffff  /* SPARSE Mem region 2 mask is 27 bits */
 #define CIA_MEM_R3_MASK 0x03ffffff  /* SPARSE Mem region 3 mask is 26 bits */
 
-#define CIA_DMA_WIN_BASE_DEFAULT       (2UL*1024*1024*1024)
-#define CIA_DMA_WIN_SIZE_DEFAULT       (2UL*1024*1024*1024)
+#define CIA_DMA_WIN_BASE_DEFAULT       (1024*1024*1024)
+#define CIA_DMA_WIN_SIZE_DEFAULT       (1024*1024*1024)
 
 #if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_SRM_SETUP)
 #define CIA_DMA_WIN_BASE               alpha_mv.dma_win_base
 #define CIA_DMA_WIN_SIZE               alpha_mv.dma_win_size
 #else
-#define CIA_DMA_WIN_BASE               CIA_DMA_WIN_BASE_DEFAULT
+#define CIA_DMA_WIN_BASE               CIA_DMA_WIN_SIZE_DEFAULT
 #define CIA_DMA_WIN_SIZE               CIA_DMA_WIN_SIZE_DEFAULT
 #endif
 
index 87b8e100e736b6310d40861f70ecfbfc4a97d423..213adf4ba4330873d842bfe68f223dc71d7447c4 100644 (file)
@@ -74,8 +74,8 @@
 #define PYXIS_MEM_R2_MASK 0x07ffffff  /* SPARSE Mem region 2 mask is 27 bits */
 #define PYXIS_MEM_R3_MASK 0x03ffffff  /* SPARSE Mem region 3 mask is 26 bits */
 
-#define PYXIS_DMA_WIN_BASE_DEFAULT     (2UL*1024*1024*1024)
-#define PYXIS_DMA_WIN_SIZE_DEFAULT     (2UL*1024*1024*1024)
+#define PYXIS_DMA_WIN_BASE_DEFAULT     (1024*1024*1024)
+#define PYXIS_DMA_WIN_SIZE_DEFAULT     (1024*1024*1024)
 
 #if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_SRM_SETUP)
 #define PYXIS_DMA_WIN_BASE             alpha_mv.dma_win_base
index 5e56e7db2304c0edc0733f107739da098eee308b..1d1575c15fa29cda69837222b31e4148cc0a3983 100644 (file)
@@ -4,6 +4,8 @@
 /*
  * Alpha floating-point control register defines:
  */
+#define FPCR_DNOD      (1UL<<47)       /* denorm INV trap disable */
+#define FPCR_DNZ       (1UL<<48)       /* denorms to zero */
 #define FPCR_INVD      (1UL<<49)       /* invalid op disable (opt.) */
 #define FPCR_DZED      (1UL<<50)       /* division by zero disable (opt.) */
 #define FPCR_OVFD      (1UL<<51)       /* overflow disable (optional) */
 #define IEEE_TRAP_ENABLE_OVF   (1UL<<3)        /* overflow */
 #define IEEE_TRAP_ENABLE_UNF   (1UL<<4)        /* underflow */
 #define IEEE_TRAP_ENABLE_INE   (1UL<<5)        /* inexact */
+#define IEEE_TRAP_ENABLE_DNO   (1UL<<6)        /* denorm */
 #define IEEE_TRAP_ENABLE_MASK  (IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE |\
                                 IEEE_TRAP_ENABLE_OVF | IEEE_TRAP_ENABLE_UNF |\
-                                IEEE_TRAP_ENABLE_INE)
+                                IEEE_TRAP_ENABLE_INE | IEEE_TRAP_ENABLE_DNO)
+
+/* Denorm and Underflow flushing */
+#define IEEE_MAP_DMZ           (1UL<<12)       /* Map denorm inputs to zero */
+#define IEEE_MAP_UMZ           (1UL<<13)       /* Map underflowed outputs to zero */
+
+#define IEEE_MAP_MASK          (IEEE_MAP_DMZ | IEEE_MAP_UMZ)
 
 /* status bits coming from fpcr: */
 #define IEEE_STATUS_INV                (1UL<<17)
 #define IEEE_STATUS_OVF                (1UL<<19)
 #define IEEE_STATUS_UNF                (1UL<<20)
 #define IEEE_STATUS_INE                (1UL<<21)
+#define IEEE_STATUS_DNO                (1UL<<22)
 
 #define IEEE_STATUS_MASK       (IEEE_STATUS_INV | IEEE_STATUS_DZE |    \
                                 IEEE_STATUS_OVF | IEEE_STATUS_UNF |    \
-                                IEEE_STATUS_INE)
+                                IEEE_STATUS_INE | IEEE_STATUS_DNO)
+
+#define IEEE_SW_MASK           (IEEE_TRAP_ENABLE_MASK | IEEE_STATUS_MASK | IEEE_MAP_MASK)
 
-#define IEEE_SW_MASK           (IEEE_TRAP_ENABLE_MASK | IEEE_STATUS_MASK)
+#define IEEE_CURRENT_RM_SHIFT  32
+#define IEEE_CURRENT_RM_MASK   (3UL<<IEEE_CURRENT_RM_SHIFT)
 
 #define IEEE_STATUS_TO_EXCSUM_SHIFT    16
 
@@ -78,6 +91,7 @@ ieee_swcr_to_fpcr(unsigned long sw)
                      | IEEE_TRAP_ENABLE_DZE
                      | IEEE_TRAP_ENABLE_OVF)) << 48;
        fp |= (~sw & (IEEE_TRAP_ENABLE_UNF | IEEE_TRAP_ENABLE_INE)) << 57;
+       fp |= (~sw & IEEE_TRAP_ENABLE_DNO) << 41;
        return fp;
 }
 
@@ -90,6 +104,7 @@ ieee_fpcr_to_swcr(unsigned long fp)
                             | IEEE_TRAP_ENABLE_DZE
                             | IEEE_TRAP_ENABLE_OVF);
        sw |= (~fp >> 57) & (IEEE_TRAP_ENABLE_UNF | IEEE_TRAP_ENABLE_INE);
+       sw |= (~fp >> 41) & IEEE_TRAP_ENABLE_DNO;
        return sw;
 }
 
index d2fdc410bf645e1532e4637b7d606fd1404accdb..7d8bdb94b2b70f5abd04aed1ff204ec47b09093d 100644 (file)
@@ -144,6 +144,8 @@ extern void _sethae (unsigned long addr);   /* cached version */
 # include <asm/jensen.h>
 #elif defined(CONFIG_ALPHA_RX164)
 # include <asm/core_polaris.h>
+#elif defined(CONFIG_ALPHA_LX164)
+# include <asm/core_pyxis.h>
 #else
 #error "What system is this?"
 #endif
index fc2c4573511db043c92dcbcd39e093a79c6222b5..9f12af06c094314e995a8a5094b71fb7863d15c5 100644 (file)
@@ -70,7 +70,7 @@ ev4_flush_tlb_current_page(struct mm_struct * mm,
                           struct vm_area_struct *vma,
                           unsigned long addr)
 {
-       tbi(((vma->vm_flags & VM_EXEC) != 0) ? 3 : 2, addr);
+       tbi(2 + ((vma->vm_flags & VM_EXEC) != 0), addr);
 }
 
 __EXTERN_INLINE void
index 4e47d4434902b43b10855cae5e60f57be6f32a87..d42419196365fba40d18959be659782bd9767095 100644 (file)
@@ -48,9 +48,12 @@ struct thread_struct {
        /*
         * The fields below are Linux-specific:
         *
-        * bit 1..5: IEEE_TRAP_ENABLE bits (see fpu.h)
-        * bit 6..8: UAC bits (see sysinfo.h)
-        * bit 17..21: IEEE_STATUS_MASK bits (see fpu.h)
+        * bit 1..6: IEEE_TRAP_ENABLE bits (see fpu.h)
+        * bit 7..8: IEEE_MAP_XXX bits (see fpu.h)
+        * bit 14..16: UAC bits (see sysinfo.h)
+        * bit 17..22: IEEE_STATUS_MASK bits (see fpu.h)
+        * bit 32..33: Current IEEE rounding mode (only used
+        *             during floating emulation - see fpu.h)
         * bit 63: die_if_kernel recursion lock
         */
        unsigned long flags;
index 0db2066d41476a412e926a727b317771fc40a1bf..a33fd546aaf8fe01225b1a93b1f1e2f273a082df 100644 (file)
@@ -13,23 +13,22 @@ extern spinlock_t kernel_flag;
 /*
  * Release global kernel lock and global interrupt lock
  */
-#define release_kernel_lock(task, cpu) \
-do { \
-       if (task->lock_depth >= 0) \
-               spin_unlock(&kernel_flag); \
-       release_irqlock(cpu); \
-       __sti(); \
-} while (0)
+static __inline__ void release_kernel_lock(struct task_struct *task, int cpu)
+{
+       if (task->lock_depth >= 0)
+               spin_unlock(&kernel_flag);
+       release_irqlock(cpu);
+       __sti();
+}
 
 /*
  * Re-acquire the kernel lock
  */
-#define reacquire_kernel_lock(task) \
-do { \
-       if (task->lock_depth >= 0) \
-               spin_lock(&kernel_flag); \
-} while (0)
-
+static __inline__ void reacquire_kernel_lock(struct task_struct *task)
+{
+       if (task->lock_depth >= 0)
+               spin_lock(&kernel_flag);
+}
 
 /*
  * Getting the big kernel lock.
@@ -38,14 +37,14 @@ do { \
  * so we only need to worry about other
  * CPU's.
  */
-#define lock_kernel() \
-do { \
-       if (!++current->lock_depth) \
-               spin_lock(&kernel_flag); \
-} while(0)
+static __inline__ void lock_kernel(void)
+{
+       if (!++current->lock_depth)
+               spin_lock(&kernel_flag);
+}
 
-#define unlock_kernel() \
-do { \
-       if (--current->lock_depth < 0) \
-               spin_unlock(&kernel_flag); \
-} while(0)
+static __inline__ void unlock_kernel(void)
+{
+       if (--current->lock_depth < 0)
+               spin_unlock(&kernel_flag);
+}
index cdd66a643ef6ae8f1d9ae4b41cd49eb3a35e4d83..57600a5a9631df37177524c4cb663a9992426ede 100644 (file)
@@ -31,7 +31,7 @@
 
 /* This is the shift that is applied to the UAC bits as stored in the 
    per-thread flags.  */
-#define UAC_SHIFT                      6
+#define UAC_SHIFT                      14
 
 #endif
 
index deda2e770aadcff9b6aba63ed113b1b2d19dc5ae..48366623998b3cec2e0cd8f34876aba3132f76b8 100644 (file)
@@ -46,7 +46,7 @@ static char __initdata fpu_error = 0;
 __initfunc(static void copro_timeout(void))
 {
        fpu_error = 1;
-       timer_table[COPRO_TIMER].expires = jiffies+100;
+       timer_table[COPRO_TIMER].expires = jiffies+HZ;
        timer_active |= 1<<COPRO_TIMER;
        printk(KERN_ERR "387 failed: trying to reset\n");
        send_sig(SIGFPE, current, 1);
@@ -104,7 +104,7 @@ __initfunc(static void check_fpu(void))
         * should get there first..
         */
        printk(KERN_INFO "Checking 386/387 coupling... ");
-       timer_table[COPRO_TIMER].expires = jiffies+50;
+       timer_table[COPRO_TIMER].expires = jiffies+HZ/2;
        timer_table[COPRO_TIMER].fn = copro_timeout;
        timer_active |= 1<<COPRO_TIMER;
        __asm__("clts ; fninit ; fnstcw %0 ; fwait":"=m" (*&control_word));
diff --git a/include/asm-i386/ptrace.h b/include/asm-i386/ptrace.h
deleted file mode 100644 (file)
index 985d288..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _I386_PTRACE_H
-#define _I386_PTRACE_H
-
-#define EBX 0
-#define ECX 1
-#define EDX 2
-#define ESI 3
-#define EDI 4
-#define EBP 5
-#define EAX 6
-#define DS 7
-#define ES 8
-#define FS 9
-#define GS 10
-#define ORIG_EAX 11
-#define EIP 12
-#define CS  13
-#define EFL 14
-#define UESP 15
-#define SS   16
-
-
-/* this struct defines the way the registers are stored on the 
-   stack during a system call. */
-
-struct pt_regs {
-       long ebx;
-       long ecx;
-       long edx;
-       long esi;
-       long edi;
-       long ebp;
-       long eax;
-       int  xds;
-       int  xes;
-       long orig_eax;
-       long eip;
-       int  xcs;
-       long eflags;
-       long esp;
-       int  xss;
-};
-
-/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
-#define PTRACE_GETREGS            12
-#define PTRACE_SETREGS            13
-#define PTRACE_GETFPREGS          14
-#define PTRACE_SETFPREGS          15
-
-#ifdef __KERNEL__
-#define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
-#define instruction_pointer(regs) ((regs)->eip)
-extern void show_regs(struct pt_regs *);
-#endif
-
-#endif
index ccf69385cb68247ca3856e23200faf863d8063b3..afb4786a1d9e9020451427020279338c13bd471f 100644 (file)
  *                    potential and subtle race discovered by Ulrich Schmid
  *                    in down_interruptible(). Since I started to play here I
  *                    also implemented the `trylock' semaphore operation.
+ *          1999-07-02 Artur Skawina <skawina@geocities.com>
+ *                     Optimized "0(ecx)" -> "(ecx)" (the assembler does not
+ *                     do this). Changed calling sequences from push/jmp to
+ *                     traditional call/ret.
  *
  * If you would like to see an analysis of this implementation, please
  * ftp to gcom.com and download the file
@@ -63,12 +67,12 @@ extern inline void down(struct semaphore * sem)
 #ifdef __SMP__
                "lock ; "
 #endif
-               "decl 0(%0)\n\t"
+               "decl (%0)\n\t"     /* --sem->count */
                "js 2f\n"
                "1:\n"
                ".section .text.lock,\"ax\"\n"
-               "2:\tpushl $1b\n\t"
-               "jmp __down_failed\n"
+               "2:\tcall __down_failed\n\t"
+               "jmp 1b\n"
                ".previous"
                :/* no outputs */
                :"c" (sem)
@@ -84,13 +88,13 @@ extern inline int down_interruptible(struct semaphore * sem)
 #ifdef __SMP__
                "lock ; "
 #endif
-               "decl 0(%1)\n\t"
+               "decl (%1)\n\t"     /* --sem->count */
                "js 2f\n\t"
                "xorl %0,%0\n"
                "1:\n"
                ".section .text.lock,\"ax\"\n"
-               "2:\tpushl $1b\n\t"
-               "jmp __down_failed_interruptible\n"
+               "2:\tcall __down_failed_interruptible\n\t"
+               "jmp 1b\n"
                ".previous"
                :"=a" (result)
                :"c" (sem)
@@ -107,13 +111,13 @@ extern inline int down_trylock(struct semaphore * sem)
 #ifdef __SMP__
                "lock ; "
 #endif
-               "decl 0(%1)\n\t"
+               "decl (%1)\n\t"     /* --sem->count */
                "js 2f\n\t"
                "xorl %0,%0\n"
                "1:\n"
                ".section .text.lock,\"ax\"\n"
-               "2:\tpushl $1b\n\t"
-               "jmp __down_failed_trylock\n"
+               "2:\tcall __down_failed_trylock\n\t"
+               "jmp 1b\n"
                ".previous"
                :"=a" (result)
                :"c" (sem)
@@ -134,12 +138,12 @@ extern inline void up(struct semaphore * sem)
 #ifdef __SMP__
                "lock ; "
 #endif
-               "incl 0(%0)\n\t"
+               "incl (%0)\n\t"     /* ++sem->count */
                "jle 2f\n"
                "1:\n"
                ".section .text.lock,\"ax\"\n"
-               "2:\tpushl $1b\n\t"
-               "jmp __up_wakeup\n"
+               "2:\tcall __up_wakeup\n\t"
+               "jmp 1b\n"
                ".previous"
                :/* no outputs */
                :"c" (sem)
index 942aa30f89b45d2647fac268bfd241cf1b52552d..e750155a43775e7d09ef1f4a7d1f2e36e1ea3d05 100644 (file)
@@ -40,7 +40,7 @@
 #define SO_DETACH_FILTER        27
 
 /* Nasty libc5 fixup - bletch */
-#if defined(__KERNEL__) || (LIBC_VERSION < 6)
+#if defined(__KERNEL__)
 /* Socket types. */
 #define SOCK_STREAM    1               /* stream (connection) socket   */
 #define SOCK_DGRAM     2               /* datagram (conn.less) socket  */
index c53267b77e0aa648644976964d55f73e61fdd048..77c264c2366d079a006005d7823cdf0289a83fca 100644 (file)
@@ -109,6 +109,7 @@ static __inline__ void ide_fix_driveid (struct hd_driveid *id) {
         ppc_ide_md.fix_driveid(id);
 }
 
+#if 0  /* standard inb/outb is OK now -- paulus */
 #undef inb
 #define inb(port)      in_8((unsigned char *)((port) + ppc_ide_md.io_base))
 #undef inb_p
@@ -119,6 +120,7 @@ static __inline__ void ide_fix_driveid (struct hd_driveid *id) {
        out_8((unsigned char *)((port) + ppc_ide_md.io_base), (val) )
 #undef outb_p
 #define outb_p(val, port)      outb(val, port)
+#endif
 
 typedef union {
        unsigned all                    : 8;    /* all of the bits together */
index 92ac97729ff54855410610d2b5ce301939804a68..0d4610ec66ca26453b32c34e2a85fa502973e423 100644 (file)
@@ -77,7 +77,7 @@ extern unsigned long pci_dram_offset;
 #define outb_p(val, port)      out_8((unsigned char *)((port)+_IO_BASE), (val))
 #define inw_p(port)            in_le16((unsigned short *)((port)+_IO_BASE))
 #define outw_p(val, port)      out_le16((unsigned short *)((port)+_IO_BASE), (val))
-#define inl_p(port)            in_le32(((unsigned *)(port)+_IO_BASE))
+#define inl_p(port)            in_le32((unsigned *)((port)+_IO_BASE))
 #define outl_p(val, port)      out_le32((unsigned *)((port)+_IO_BASE), (val))
 
 extern void _insb(volatile unsigned char *port, void *buf, int ns);
index 3a32490b5843d2b29eb21bdcb8ccc6289c9c5752..537f402f820ee058bfc46ae813b7eade9fb8b6f0 100644 (file)
@@ -6,6 +6,7 @@
 #include <asm/machdep.h>               /* ppc_md */
 
 extern void disable_irq(unsigned int);
+extern void disable_irq_nosync(unsigned int);
 extern void enable_irq(unsigned int);
 
 #ifndef CONFIG_8xx
index c8358cb0ba5ae73bf82c9158dea29c52a85a7152..89c9d08f3645ce27c08ceb23b5b682a5a51470e3 100644 (file)
@@ -197,6 +197,11 @@ struct task_struct;
 void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp);
 void release_thread(struct task_struct *);
 
+/*
+ * Create a new kernel thread.
+ */
+extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
+
 /*
  * Bus types
  */
index 754af6979e2b3d436cb5e23fc1b235ded0529e43..3ece6775b4b44c131d08afb5ffaf2788193dbdf9 100644 (file)
@@ -33,7 +33,7 @@
  * SHMMAX <= (PAGE_SIZE << _SHM_IDX_BITS).
  */
 
-#define SHMMAX 0x3fa000                        /* max shared seg size (bytes) */
+#define SHMMAX 0x2000000               /* max shared seg size (bytes) */
 #define SHMMIN 1 /* really PAGE_SIZE */        /* min shared seg size (bytes) */
 #define SHMMNI (1<<_SHM_ID_BITS)       /* max num of segs system wide */
 #define SHMALL                         /* max shm system wide (pages) */ \
index afaf5ebb357048df52e691bf92397b1b8ed1deeb..1b4fdb3640d69288870d8b9b07bc72c8de3db43a 100644 (file)
@@ -18,7 +18,7 @@
 
 #define spin_lock_init(lock)   do { } while(0)
 #define spin_lock(lock)                do { } while(0)
-#define spin_trylock(lock)     do { } while(0)
+#define spin_trylock(lock)     (1)
 #define spin_unlock_wait(lock) do { } while(0)
 #define spin_unlock(lock)      do { } while(0)
 #define spin_lock_irq(lock)    cli()
index bc96d7fef88e30c88dd1ba68c6197d294fbba843..38372df08faee50aecf83c96e9f947686298b203 100644 (file)
@@ -377,16 +377,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5)      \
  * the child.
  */
 
-/*
- * Create a new kernel thread.
- */
-extern long __kernel_thread(unsigned long, int (*)(void *), void *);
-
-static inline long kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-{
-       return __kernel_thread(flags | CLONE_VM, fn, arg);
-}
-
 /*
  * System call prototypes.
  */
index 4c0f2e05d8d7172b7984103a64f94a5aa945344a..b4df083e052d3514799114599022e69870b06d64 100644 (file)
@@ -69,7 +69,7 @@
  * increased.  The larger it is, though, the longer it will be between
  * necessary transmits - don't set this too large.
  */
-#define TX_TIMEOUT 20
+#define TX_TIMEOUT (20*HZ/100)
 
 
 /* Display warnings about the driver being an ALPHA version.
index 60f36af24034bf8d62b94d051afd4eb393b732ab..5bc5bf252a47ec86acb8488520116f0d00be5296 100644 (file)
@@ -261,4 +261,20 @@ extern int move_addr_to_kernel(void *uaddr, int ulen, void *kaddr);
 extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
 #endif
 #endif /* not kernel and not glibc */
+
+#if !defined(__KERNEL__) && (!defined(__GLIBC__) || (__GLIBC__ < 2))
+
+/* Socket types for libc5 compatibility -- KTK */
+
+#define SOCK_STREAM    1               /* stream (connection) socket   */
+#define SOCK_DGRAM     2               /* datagram (conn.less) socket  */
+#define SOCK_RAW       3               /* raw socket                   */
+#define SOCK_RDM       4               /* reliably-delivered message   */
+#define SOCK_SEQPACKET 5               /* sequential packet socket     */
+#define SOCK_PACKET    10              /* linux specific way of        */
+                                       /* getting packets at the dev   */
+                                       /* level.  For writing rarp and */
+                                       /* other similar things on the  */
+                                       /* user level.                  */
+#endif /* libc<=5 && !kernel */
 #endif /* _LINUX_SOCKET_H */
index d3c59fff5a67a8e85a4494a3a72fd260f0ddc626..acc0619eb5e575c446611822f1a2d9a6fcc459d8 100644 (file)
@@ -1,9 +1,9 @@
 /*
  * This file define a set of standard wireless extensions
  *
- * Version :   7       23.4.99
+ * Version :   8       28.7.99
  *
- * Authors :   Jean Tourrilhes - HPLB - <jt@hplb.hpl.hp.com>
+ * Authors :   Jean Tourrilhes - HPL - <jt@hpl.hp.com>
  */
 
 #ifndef _LINUX_WIRELESS_H
@@ -63,7 +63,7 @@
  * (there is some stuff that will be added in the future...)
  * I just plan to increment with each new version.
  */
-#define WIRELESS_EXT   6
+#define WIRELESS_EXT   8
 
 /*
  * Changes :
  * V6 to V7
  * --------
  *     - define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *     - Changed my e-mail address
+ *     - More 802.11 support (nickname, rate, rts, frag)
+ *     - List index in frequencies
  */
 
 /* -------------------------- IOCTL LIST -------------------------- */
 #define SIOCGIWSPY     0x8B11          /* get spy info (quality of link) */
 
 /* Access Point manipulation */
-#define SIOCSIWAP      0x8B14          /* set access point hardware addresses */
-#define SIOCGIWAP      0x8B15          /* get access point hardware addresses */
+#define SIOCSIWAP      0x8B14          /* set access point MAC addresses */
+#define SIOCGIWAP      0x8B15          /* get access point MAC addresses */
 #define SIOCGIWAPLIST  0x8B17          /* get list of access point in range */
 
 /* 802.11 specific support */
 #define SIOCSIWESSID   0x8B1A          /* set ESSID (network name) */
 #define SIOCGIWESSID   0x8B1B          /* get ESSID */
-/* As the ESSID is a string up to 32 bytes long, it doesn't fit within the
- * 'iwreq' structure, so we need to use the 'data' member to point to a
- * string in user space, like it is done for RANGE...
- * The "flags" member indicate if the ESSID is active or not.
+#define SIOCSIWNICKN   0x8B1C          /* set node name/nickname */
+#define SIOCGIWNICKN   0x8B1D          /* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE...
+ * The "flags" member indicate if the ESSID is active or not (promiscuous).
  */
 
+/* Other parameters usefull in 802.11 and some other devices */
+#define SIOCSIWRATE    0x8B20          /* set default bit rate (bps) */
+#define SIOCGIWRATE    0x8B21          /* get default bit rate (bps) */
+#define SIOCSIWRTS     0x8B22          /* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS     0x8B23          /* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG    0x8B24          /* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG    0x8B25          /* get fragmentation thr (bytes) */
+
 /* ------------------------- IOCTL STUFF ------------------------- */
 
 /* The first and the last (range) */
 #define SIOCIWFIRST    0x8B00
-#define SIOCIWLAST     0x8B1B
+#define SIOCIWLAST     0x8B25
 
 /* Even : get (world access), odd : set (root access) */
 #define IW_IS_SET(cmd) (!((cmd) & 0x1))
  * don't increase this constant and don't fill the frequency list.
  * The user will be able to set by channel anyway... */
 
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES                8
+
 /* Maximum of address that you may set with SPY */
 #define IW_MAX_SPY             8
 
    list of access points in range */
 #define IW_MAX_AP              8
 
-/* Maximum size of the ESSID string */
+/* Maximum size of the ESSID and NICKN strings */
 #define IW_ESSID_MAX_SIZE      32
 
 /****************************** TYPES ******************************/
 /* --------------------------- SUBTYPES --------------------------- */
 /*
  *     A frequency
- *     For numbers lower than 10^9, we encode the number in 'mant' and
- *     set 'exp' to 0
- *     For number greater than 10^9, we divide it by a power of 10.
- *     The power of 10 is in 'exp', the result is in 'mant'.
+ *     For numbers lower than 10^9, we encode the number in 'm' and
+ *     set 'e' to 0
+ *     For number greater than 10^9, we divide it by the lowest power
+ *     of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *     The power of 10 is in 'e', the result of the division is in 'm'.
  */
 struct iw_freq
 {
        __u32           m;              /* Mantissa */
        __u16           e;              /* Exponent */
+       __u8            i;              /* List index (when in range struct) */
 };
 
 /*
@@ -229,6 +250,15 @@ struct     iw_encoding
   __u64        code;                   /* Data/key used for algorithm */
 };
 
+/*
+ *     Generic format for parameters
+ */
+struct iw_param
+{
+  __s32                value;          /* The value of the parameter itself */
+  __u8         fixed;          /* Hardware should not use auto select */
+};
+
 
 /* ------------------------ WIRELESS STATS ------------------------ */
 /*
@@ -258,7 +288,7 @@ struct      iwreq
 {
        union
        {
-               char    ifrn_name[IFNAMSIZ];    /* if name, e.g. "en0" */
+               char    ifrn_name[IFNAMSIZ];    /* if name, e.g. "eth0" */
        } ifr_ifrn;
 
        /* Data part */
@@ -281,7 +311,11 @@ struct     iwreq
 
                struct iw_encoding      encoding;       /* Encoding stuff */
 
-               __u32   sensitivity;            /* signal level threshold */
+               __u32   sensitivity;            /* Obsolete, but compatible */
+               struct iw_param sens;           /* signal level threshold */
+               struct iw_param bitrate;        /* default bit rate */
+               struct iw_param rts;            /* RTS threshold threshold */
+               struct iw_param frag;           /* Fragmentation threshold */
 
                struct sockaddr ap_addr;        /* Access point address */
 
@@ -309,6 +343,12 @@ struct     iw_range
 {
        /* Informative stuff (to choose between different interface) */
        __u32           throughput;     /* To give an idea... */
+       /* In theory this value should be the maximum benchmarked
+        * TCP/IP throughput, because with most of these devices the
+        * bit rate is meaningless (overhead an co) to estimate how
+        * fast the connection will go and pick the fastest one.
+        * I suggest people to play with Netperf or any benchmark...
+        */
 
        /* NWID (or domain id) */
        __u32           min_nwid;       /* Minimal NWID we are able to set */
@@ -321,13 +361,25 @@ struct    iw_range
        /* Note : this frequency list doesn't need to fit channel numbers */
 
        /* signal level threshold range */
-       __u32   sensitivity;
+       __s32   sensitivity;
 
        /* Quality of link & SNR stuff */
        struct iw_quality       max_qual;       /* Quality of the link */
 
        /* Encoder stuff */
        struct iw_encoding      max_encoding;   /* Encoding max range */
+
+       /* Rates */
+       __u8            num_bitrates;   /* Number of entries in the list */
+       __s32           bitrate[IW_MAX_BITRATES];       /* list, in bps */
+
+       /* RTS threshold */
+       __s32           min_rts;        /* Minimal RTS threshold */
+       __s32           max_rts;        /* Maximal RTS threshold */
+
+       /* Frag threshold */
+       __s32           min_frag;       /* Minimal frag threshold */
+       __s32           max_frag;       /* Maximal frag threshold */
 };
 
 /*
diff --git a/include/linux/yam.h b/include/linux/yam.h
new file mode 100644 (file)
index 0000000..7fe2822
--- /dev/null
@@ -0,0 +1,82 @@
+/*****************************************************************************/
+
+/*
+ *     yam.h  -- YAM radio modem driver.
+ *
+ *     Copyright (C) 1998 Frederic Rible F1OAT (frible@teaser.fr)
+ *     Adapted from baycom.c driver written by Thomas Sailer (sailer@ife.ee.ethz.ch)
+ *
+ *     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 program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     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.
+ *
+ *  Please note that the GPL allows you to use the driver, NOT the radio.
+ *  In order to use the radio, you need a license from the communications
+ *  authority of your country.
+ *
+ *
+ */
+
+/*****************************************************************************/
+
+#define SIOCYAMRESERVED        (0)
+#define SIOCYAMSCFG    (1)     /* Set configuration */
+#define SIOCYAMGCFG    (2)     /* Get configuration */
+#define SIOCYAMSMCS    (3)     /* Set mcs data */
+
+#define YAM_IOBASE   (1 << 0)
+#define YAM_IRQ      (1 << 1)
+#define YAM_BITRATE  (1 << 2) /* Bit rate of radio port ->57600 */
+#define YAM_MODE     (1 << 3) /* 0=simplex 1=duplex 2=duplex+tempo */
+#define YAM_HOLDDLY  (1 << 4) /* duplex tempo (sec) */
+#define YAM_TXDELAY  (1 << 5) /* Tx Delay (ms) */
+#define YAM_TXTAIL   (1 << 6) /* Tx Tail  (ms) */
+#define YAM_PERSIST  (1 << 7) /* Persist  (ms) */
+#define YAM_SLOTTIME (1 << 8) /* Slottime (ms) */
+#define YAM_BAUDRATE (1 << 9) /* Baud rate of rs232 port ->115200 */
+
+#define YAM_MAXBITRATE  57600
+#define YAM_MAXBAUDRATE 115200
+#define YAM_MAXMODE     2
+#define YAM_MAXHOLDDLY  99
+#define YAM_MAXTXDELAY  999
+#define YAM_MAXTXTAIL   999
+#define YAM_MAXPERSIST  255
+#define YAM_MAXSLOTTIME 999
+
+#define YAM_FPGA_SIZE  5302
+
+struct yamcfg {
+       unsigned int mask;              /* Mask of commands */
+       unsigned int iobase;    /* IO Base of COM port */
+       unsigned int irq;               /* IRQ of COM port */
+       unsigned int bitrate;   /* Bit rate of radio port */
+       unsigned int baudrate;  /* Baud rate of the RS232 port */
+       unsigned int txdelay;   /* TxDelay */
+       unsigned int txtail;    /* TxTail */
+       unsigned int persist;   /* Persistence */
+       unsigned int slottime;  /* Slottime */
+       unsigned int mode;              /* mode 0 (simp), 1(Dupl), 2(Dupl+delay) */
+       unsigned int holddly;   /* PTT delay in FullDuplex 2 mode */
+};
+
+struct yamdrv_ioctl_cfg {
+       int cmd;
+       struct yamcfg cfg;
+};
+
+struct yamdrv_ioctl_mcs {
+       int cmd;
+       int bitrate;
+       unsigned char bits[YAM_FPGA_SIZE];
+};
index 1210b4e3ececbd641e479f57832644fe64c04a34..4d79fc6277d1b24797766268d603ac5cb5dc8b6e 100644 (file)
@@ -42,7 +42,7 @@
 
 /* broacast/multicast storm limitation. This per source. */
 #define MAX_MCAST_PER_PERIOD    4
-#define MCAST_HOLD_TIME                10      /* in jiffies unit (10ms increment) */
+#define MCAST_HOLD_TIME                (10*HZ/100)
 
 #define Default_path_cost 10
 
index 0362d182efcf761cf88e441fc7c7fc4b085a5b01..050e691594f2753c5dea1716e31fe9c958eb1c2a 100644 (file)
@@ -303,6 +303,9 @@ int inet_listen(struct socket *sock, int backlog)
                        }
                        sk->sport = htons(sk->num);
                        add_to_prot_sklist(sk);
+               } else {
+                       if (sk->prev)
+                               ((struct tcp_bind_bucket*)sk->prev)->fastreuse = 0;
                }
 
                dst_release(xchg(&sk->dst_cache, NULL));
index bdd690599a2b1a7f60706dc80657e67bb6c8b049..11b29a5de42a1267557964346f1a3d58bbacadcc 100644 (file)
@@ -37,6 +37,9 @@
  * 19-May-1999: Star Wars: The Phantom Menace opened.  Rule num
  *             printed in log (modified from Michael Hasenstein's patch).
  *             Added SYN in log message. --RR
+ * 23-Jul-1999: Fixed small fragment security exposure opened on 15-May-1998.
+ *              John McDonald <jm@dataprotect.com>
+ *              Thomas Lopatic <tl@dataprotect.com>
  */
 
 /*
@@ -608,6 +611,17 @@ ip_fw_check(struct iphdr *ip,
 
        offset = ntohs(ip->frag_off) & IP_OFFSET;
        
+       /* If it is a truncated first fragment then it can be
+        * used to rewrite port information, and thus should
+        * be blocked.
+        */
+       if (offset && (ntohs(ip->frag_off) & IP_MF)) {
+               if (!testing && net_ratelimit()) {
+                       /*printk(KERN_ERR "Suspect short first fragment.\n");*/
+                       dump_packet(ip,rif,NULL,NULL,0,0,0,0);
+               }
+               return FW_BLOCK;
+       }
        /*
         *      Don't allow a fragment of TCP 8 bytes in. Nobody
         *      normal causes this. Its a cracker trying to break
index 0a26549f6ca18277b202d063ebf59bd02ab70d84..135679f420d5b100955d3d33f2b863a37200430b 100644 (file)
@@ -957,7 +957,7 @@ void ip_rt_get_source(u8 *addr, struct rtable *rt)
 
        if (rt->key.iif == 0)
                src = rt->rt_src;
-       else if (fib_lookup(&rt->key, &res) == 0)
+       else if (fib_lookup(&rt->key, &res) == 0 && res.type != RTN_NAT)
                src = FIB_RES_PREFSRC(res);
        else
                src = inet_select_addr(rt->u.dst.dev, rt->rt_gateway, RT_SCOPE_UNIVERSE);
index 0cd65795b519b9f710d1aeb9545998ec4b91205c..3a3bf3675bfd54c6ce7c5d7aa09f6fc8e010dc9c 100644 (file)
@@ -482,6 +482,10 @@ static void parse(int argc,
        multi_opt(spec_l, spec_L, 'l', *lsmod);
        multi_opt(spec_m, spec_M, 'm', *system_map);
 
+       printf("WARNING: This version of ksymoops is obsolete.\n");
+       printf("WARNING: The current version can be obtained from ftp://ftp.ocs.com.au/pub/ksymoops\n");
+       warnings += 2;
+
        printf("Options used:");
        if (*vmlinux)
                printf(" -v %s", *vmlinux);