summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-01-04 16:03:48 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-01-04 16:03:48 +0000
commit78c388aed2b7184182c08428db1de6c872d815f5 (patch)
tree4b2003b1b4ceb241a17faa995da8dd1004bb8e45 /include
parenteb7a5bf93aaa4be1d7c6181100ab7639e74d67f7 (diff)
Merge with Linux 2.1.131 and more MIPS goodies.
(Did I mention that CVS is buggy ...)
Diffstat (limited to 'include')
-rw-r--r--include/asm-alpha/asm_offsets.h2
-rw-r--r--include/asm-alpha/console.h13
-rw-r--r--include/asm-alpha/dma.h15
-rw-r--r--include/asm-alpha/fcntl.h2
-rw-r--r--include/asm-alpha/hardirq.h4
-rw-r--r--include/asm-alpha/hwrpb.h13
-rw-r--r--include/asm-alpha/io.h11
-rw-r--r--include/asm-alpha/keyboard.h16
-rw-r--r--include/asm-alpha/linux_logo.h5
-rw-r--r--include/asm-alpha/machvec.h8
-rw-r--r--include/asm-alpha/namei.h6
-rw-r--r--include/asm-alpha/pci.h2
-rw-r--r--include/asm-alpha/processor.h4
-rw-r--r--include/asm-alpha/spinlock.h75
-rw-r--r--include/asm-alpha/system.h3
-rw-r--r--include/asm-alpha/termios.h5
-rw-r--r--include/asm-arm/fcntl.h2
-rw-r--r--include/asm-arm/namei.h8
-rw-r--r--include/asm-arm/termios.h3
-rw-r--r--include/asm-i386/bugs.h4
-rw-r--r--include/asm-i386/checksum.h27
-rw-r--r--include/asm-i386/desc.h61
-rw-r--r--include/asm-i386/dma.h19
-rw-r--r--include/asm-i386/fcntl.h2
-rw-r--r--include/asm-i386/fixmap.h2
-rw-r--r--include/asm-i386/keyboard.h26
-rw-r--r--include/asm-i386/linux_logo.h5
-rw-r--r--include/asm-i386/mtrr.h3
-rw-r--r--include/asm-i386/namei.h4
-rw-r--r--include/asm-i386/processor.h22
-rw-r--r--include/asm-i386/resource.h2
-rw-r--r--include/asm-i386/semaphore.h5
-rw-r--r--include/asm-i386/shmparam.h4
-rw-r--r--include/asm-i386/spinlock.h23
-rw-r--r--include/asm-i386/system.h20
-rw-r--r--include/asm-i386/termios.h4
-rw-r--r--include/asm-i386/unistd.h34
-rw-r--r--include/asm-m68k/atomic.h14
-rw-r--r--include/asm-m68k/fcntl.h2
-rw-r--r--include/asm-m68k/ide.h100
-rw-r--r--include/asm-m68k/linux_logo.h2251
-rw-r--r--include/asm-m68k/mac_psc.h73
-rw-r--r--include/asm-m68k/machdep.h1
-rw-r--r--include/asm-m68k/macintosh.h31
-rw-r--r--include/asm-m68k/namei.h2
-rw-r--r--include/asm-m68k/serial.h14
-rw-r--r--include/asm-m68k/stat.h38
-rw-r--r--include/asm-m68k/termios.h4
-rw-r--r--include/asm-m68k/unistd.h6
-rw-r--r--include/asm-m68k/xstat.h35
-rw-r--r--include/asm-mips/bootinfo.h6
-rw-r--r--include/asm-mips/byteorder.h17
-rw-r--r--include/asm-mips/delay.h20
-rw-r--r--include/asm-mips/dma.h22
-rw-r--r--include/asm-mips/fcntl.h4
-rw-r--r--include/asm-mips/floppy.h3
-rw-r--r--include/asm-mips/io.h21
-rw-r--r--include/asm-mips/irq.h16
-rw-r--r--include/asm-mips/keyboard.h76
-rw-r--r--include/asm-mips/linux_logo.h925
-rw-r--r--include/asm-mips/mmu_context.h90
-rw-r--r--include/asm-mips/namei.h15
-rw-r--r--include/asm-mips/page.h54
-rw-r--r--include/asm-mips/pci.h4
-rw-r--r--include/asm-mips/processor.h3
-rw-r--r--include/asm-mips/ptrace.h11
-rw-r--r--include/asm-mips/resource.h23
-rw-r--r--include/asm-mips/semaphore.h6
-rw-r--r--include/asm-mips/shmparam.h4
-rw-r--r--include/asm-mips/sni.h14
-rw-r--r--include/asm-mips/termios.h2
-rw-r--r--include/asm-mips/uaccess.h35
-rw-r--r--include/asm-mips/unistd.h50
-rw-r--r--include/asm-mips/vga.h29
-rw-r--r--include/asm-ppc/8xx_immap.h43
-rw-r--r--include/asm-ppc/adb.h3
-rw-r--r--include/asm-ppc/amigappc.h28
-rw-r--r--include/asm-ppc/amigayle.h1
-rw-r--r--include/asm-ppc/amipcmcia.h1
-rw-r--r--include/asm-ppc/bitops.h8
-rw-r--r--include/asm-ppc/bootx.h71
-rw-r--r--include/asm-ppc/byteorder.h6
-rw-r--r--include/asm-ppc/cache.h2
-rw-r--r--include/asm-ppc/dma.h16
-rw-r--r--include/asm-ppc/elf.h2
-rw-r--r--include/asm-ppc/fads.h39
-rw-r--r--include/asm-ppc/fcntl.h2
-rw-r--r--include/asm-ppc/feature.h65
-rw-r--r--include/asm-ppc/hardirq.h72
-rw-r--r--include/asm-ppc/ide.h86
-rw-r--r--include/asm-ppc/io.h107
-rw-r--r--include/asm-ppc/irq.h18
-rw-r--r--include/asm-ppc/linux_logo.h10
-rw-r--r--include/asm-ppc/mbx.h4
-rw-r--r--include/asm-ppc/mediabay.h19
-rw-r--r--include/asm-ppc/mmu_context.h2
-rw-r--r--include/asm-ppc/namei.h4
-rw-r--r--include/asm-ppc/pgtable.h7
-rw-r--r--include/asm-ppc/pmu.h3
-rw-r--r--include/asm-ppc/processor.h12
-rw-r--r--include/asm-ppc/prom.h35
-rw-r--r--include/asm-ppc/smp.h51
-rw-r--r--include/asm-ppc/softirq.h160
-rw-r--r--include/asm-ppc/system.h5
-rw-r--r--include/asm-ppc/termios.h7
-rw-r--r--include/asm-ppc/types.h4
-rw-r--r--include/asm-ppc/uaccess.h9
-rw-r--r--include/asm-ppc/unistd.h24
-rw-r--r--include/asm-ppc/vga.h5
-rw-r--r--include/asm-sparc/asm_offsets.h180
-rw-r--r--include/asm-sparc/audioio.h176
-rw-r--r--include/asm-sparc/bitops.h8
-rw-r--r--include/asm-sparc/dma.h18
-rw-r--r--include/asm-sparc/ebus.h101
-rw-r--r--include/asm-sparc/elf.h49
-rw-r--r--include/asm-sparc/fbio.h1
-rw-r--r--include/asm-sparc/fcntl.h4
-rw-r--r--include/asm-sparc/floppy.h6
-rw-r--r--include/asm-sparc/hardirq.h73
-rw-r--r--include/asm-sparc/io-unit.h5
-rw-r--r--include/asm-sparc/io.h71
-rw-r--r--include/asm-sparc/ioctls.h2
-rw-r--r--include/asm-sparc/keyboard.h52
-rw-r--r--include/asm-sparc/linux_logo.h10
-rw-r--r--include/asm-sparc/mostek.h2
-rw-r--r--include/asm-sparc/namei.h16
-rw-r--r--include/asm-sparc/openprom.h51
-rw-r--r--include/asm-sparc/oplib.h5
-rw-r--r--include/asm-sparc/pbm.h56
-rw-r--r--include/asm-sparc/pcic.h106
-rw-r--r--include/asm-sparc/perfctr.h101
-rw-r--r--include/asm-sparc/shmparam.h4
-rw-r--r--include/asm-sparc/sigcontext.h12
-rw-r--r--include/asm-sparc/siginfo.h2
-rw-r--r--include/asm-sparc/smp.h17
-rw-r--r--include/asm-sparc/softirq.h268
-rw-r--r--include/asm-sparc/spinlock.h147
-rw-r--r--include/asm-sparc/system.h16
-rw-r--r--include/asm-sparc/termios.h5
-rw-r--r--include/asm-sparc/timer.h7
-rw-r--r--include/asm-sparc/turbosparc.h15
-rw-r--r--include/asm-sparc/uaccess.h4
-rw-r--r--include/asm-sparc/unistd.h14
-rw-r--r--include/asm-sparc64/asm_offsets.h525
-rw-r--r--include/asm-sparc64/audioio.h178
-rw-r--r--include/asm-sparc64/dma.h14
-rw-r--r--include/asm-sparc64/elf.h21
-rw-r--r--include/asm-sparc64/fcntl.h4
-rw-r--r--include/asm-sparc64/floppy.h325
-rw-r--r--include/asm-sparc64/hardirq.h36
-rw-r--r--include/asm-sparc64/ide.h52
-rw-r--r--include/asm-sparc64/io.h42
-rw-r--r--include/asm-sparc64/ioctl.h10
-rw-r--r--include/asm-sparc64/mmu_context.h70
-rw-r--r--include/asm-sparc64/namei.h16
-rw-r--r--include/asm-sparc64/ns87303.h7
-rw-r--r--include/asm-sparc64/oplib.h6
-rw-r--r--include/asm-sparc64/page.h4
-rw-r--r--include/asm-sparc64/perfctr.h101
-rw-r--r--include/asm-sparc64/pgtable.h83
-rw-r--r--include/asm-sparc64/posix_types.h2
-rw-r--r--include/asm-sparc64/processor.h10
-rw-r--r--include/asm-sparc64/psrcompat.h17
-rw-r--r--include/asm-sparc64/sab82532.h4
-rw-r--r--include/asm-sparc64/semaphore.h29
-rw-r--r--include/asm-sparc64/shmparam.h4
-rw-r--r--include/asm-sparc64/sigcontext.h10
-rw-r--r--include/asm-sparc64/smp.h12
-rw-r--r--include/asm-sparc64/smplock.h21
-rw-r--r--include/asm-sparc64/softirq.h210
-rw-r--r--include/asm-sparc64/spinlock.h107
-rw-r--r--include/asm-sparc64/string.h41
-rw-r--r--include/asm-sparc64/system.h48
-rw-r--r--include/asm-sparc64/termios.h5
-rw-r--r--include/asm-sparc64/ttable.h34
-rw-r--r--include/asm-sparc64/uaccess.h2
-rw-r--r--include/asm-sparc64/unistd.h10
-rw-r--r--include/asm-sparc64/visasm.h4
-rw-r--r--include/linux/acct.h2
-rw-r--r--include/linux/apm_bios.h7
-rw-r--r--include/linux/auto_fs.h23
-rw-r--r--include/linux/blk.h4
-rw-r--r--include/linux/capability.h54
-rw-r--r--include/linux/cdrom.h10
-rw-r--r--include/linux/console.h6
-rw-r--r--include/linux/console_struct.h5
-rw-r--r--include/linux/cyclades.h6
-rw-r--r--include/linux/dcache.h2
-rw-r--r--include/linux/errqueue.h42
-rw-r--r--include/linux/ext2_fs.h1
-rw-r--r--include/linux/fb.h135
-rw-r--r--include/linux/fs.h109
-rw-r--r--include/linux/hdreg.h5
-rw-r--r--include/linux/hfs_fs.h8
-rw-r--r--include/linux/hfs_sysdep.h19
-rw-r--r--include/linux/hippidevice.h1
-rw-r--r--include/linux/if.h10
-rw-r--r--include/linux/if_pppvar.h3
-rw-r--r--include/linux/in.h9
-rw-r--r--include/linux/in6.h8
-rw-r--r--include/linux/ip.h30
-rw-r--r--include/linux/ip_fw.h30
-rw-r--r--include/linux/ip_masq.h137
-rw-r--r--include/linux/joystick.h273
-rw-r--r--include/linux/kbd_ll.h5
-rw-r--r--include/linux/kbdcntrlr.h67
-rw-r--r--include/linux/kernel.h4
-rw-r--r--include/linux/linkage.h12
-rw-r--r--include/linux/linux_logo.h1775
-rw-r--r--include/linux/loop.h77
-rw-r--r--include/linux/lp.h20
-rw-r--r--include/linux/lp_m68k.h2
-rw-r--r--include/linux/major.h15
-rw-r--r--include/linux/mca.h11
-rw-r--r--include/linux/minix_fs.h7
-rw-r--r--include/linux/mm.h43
-rw-r--r--include/linux/msg.h8
-rw-r--r--include/linux/nbd.h2
-rw-r--r--include/linux/nfs_fs.h33
-rw-r--r--include/linux/nfsd/export.h2
-rw-r--r--include/linux/nfsd/syscall.h13
-rw-r--r--include/linux/openpic.h2
-rw-r--r--include/linux/pagemap.h2
-rw-r--r--include/linux/parport.h41
-rw-r--r--include/linux/parport_pc.h2
-rw-r--r--include/linux/pc_keyb.h124
-rw-r--r--include/linux/pci.h28
-rw-r--r--include/linux/poll.h2
-rw-r--r--include/linux/proc_fs.h7
-rw-r--r--include/linux/quota.h22
-rw-r--r--include/linux/rose.h22
-rw-r--r--include/linux/sched.h14
-rw-r--r--include/linux/sdladrv.h2
-rw-r--r--include/linux/selection.h2
-rw-r--r--include/linux/serial.h6
-rw-r--r--include/linux/serial167.h175
-rw-r--r--include/linux/shm.h7
-rw-r--r--include/linux/skbuff.h6
-rw-r--r--include/linux/socket.h2
-rw-r--r--include/linux/soundcard.h2
-rw-r--r--include/linux/sunrpc/auth.h2
-rw-r--r--include/linux/sunrpc/clnt.h3
-rw-r--r--include/linux/sunrpc/svcsock.h2
-rw-r--r--include/linux/swap.h25
-rw-r--r--include/linux/swapctl.h26
-rw-r--r--include/linux/sysctl.h469
-rw-r--r--include/linux/sysv_fs.h208
-rw-r--r--include/linux/sysv_fs_i.h10
-rw-r--r--include/linux/sysv_fs_sb.h26
-rw-r--r--include/linux/tcp.h2
-rw-r--r--include/linux/time.h16
-rw-r--r--include/linux/timer.h22
-rw-r--r--include/linux/tqueue.h32
-rw-r--r--include/linux/tty.h14
-rw-r--r--include/linux/ufs_fs.h88
-rw-r--r--include/linux/ufs_fs_i.h2
-rw-r--r--include/linux/ufs_fs_sb.h16
-rw-r--r--include/linux/umsdos_fs.h4
-rw-r--r--include/linux/umsdos_fs.p61
-rw-r--r--include/linux/umsdos_fs_i.h12
-rw-r--r--include/linux/videodev.h5
-rw-r--r--include/linux/vt_buffer.h3
-rw-r--r--include/linux/vt_kern.h17
-rw-r--r--include/linux/wanrouter.h2
-rw-r--r--include/linux/wavefront.h16
-rw-r--r--include/linux/x25.h2
-rw-r--r--include/linux/zorro.h5
-rw-r--r--include/net/ip.h17
-rw-r--r--include/net/ip_autofw.h33
-rw-r--r--include/net/ip_fib.h14
-rw-r--r--include/net/ip_masq.h121
-rw-r--r--include/net/ip_masq_mod.h46
-rw-r--r--include/net/ip_portfw.h29
-rw-r--r--include/net/ipv6.h7
-rw-r--r--include/net/rose.h23
-rw-r--r--include/net/scm.h3
-rw-r--r--include/net/snmp.h2
-rw-r--r--include/net/sock.h24
-rw-r--r--include/net/tcp.h38
-rw-r--r--include/video/fbcon-afb.h32
-rw-r--r--include/video/fbcon-cfb16.h34
-rw-r--r--include/video/fbcon-cfb2.h32
-rw-r--r--include/video/fbcon-cfb24.h34
-rw-r--r--include/video/fbcon-cfb32.h34
-rw-r--r--include/video/fbcon-cfb4.h32
-rw-r--r--include/video/fbcon-cfb8.h34
-rw-r--r--include/video/fbcon-ilbm.h32
-rw-r--r--include/video/fbcon-iplan2p2.h32
-rw-r--r--include/video/fbcon-iplan2p4.h32
-rw-r--r--include/video/fbcon-iplan2p8.h32
-rw-r--r--include/video/fbcon-mac.h32
-rw-r--r--include/video/fbcon-mfb.h32
-rw-r--r--include/video/fbcon-vga.h32
-rw-r--r--include/video/fbcon.h501
-rw-r--r--include/video/font.h66
-rw-r--r--include/video/macmodes.h64
-rw-r--r--include/video/s3blit.h79
-rw-r--r--include/video/sbusfb.h138
298 files changed, 9950 insertions, 5388 deletions
diff --git a/include/asm-alpha/asm_offsets.h b/include/asm-alpha/asm_offsets.h
index b4c55a0bb..29b359d01 100644
--- a/include/asm-alpha/asm_offsets.h
+++ b/include/asm-alpha/asm_offsets.h
@@ -6,7 +6,7 @@
#define TASK_ADDR_LIMIT 24
#define TASK_EXEC_DOMAIN 32
#define TASK_NEED_RESCHED 40
-#define TASK_SIZE 1120
+#define TASK_SIZE 1096
#define STACK_SIZE 16384
#define HAE_CACHE 0
#define HAE_REG 8
diff --git a/include/asm-alpha/console.h b/include/asm-alpha/console.h
index 6ea274830..89f39911f 100644
--- a/include/asm-alpha/console.h
+++ b/include/asm-alpha/console.h
@@ -41,4 +41,15 @@
#define ENV_LANGUAGE 0x0E
#define ENV_TTY_DEV 0x0F
-#endif
+#ifdef __KERNEL__
+extern long srm_dispatch(long code, ...);
+extern void srm_puts(const char *);
+extern long srm_printk(const char *, ...)
+ __attribute__ ((format (printf, 1, 2)));
+
+struct crb_struct;
+struct hwrpb_struct;
+extern long srm_fixup(struct crb_struct *, struct hwrpb_struct *);
+#endif /* __KERNEL__ */
+
+#endif /* __AXP_CONSOLE_H */
diff --git a/include/asm-alpha/dma.h b/include/asm-alpha/dma.h
index 2f14838dd..f16bdc6de 100644
--- a/include/asm-alpha/dma.h
+++ b/include/asm-alpha/dma.h
@@ -20,6 +20,7 @@
#include <linux/config.h>
#include <asm/io.h>
+#include <asm/spinlock.h>
#define dma_outb outb
#define dma_inb inb
@@ -172,6 +173,20 @@
#define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */
#define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */
+extern spinlock_t dma_spin_lock;
+
+static __inline__ unsigned long claim_dma_lock(void)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&dma_spin_lock, flags);
+ return flags;
+}
+
+static __inline__ void release_dma_lock(unsigned long flags)
+{
+ spin_unlock_irqrestore(&dma_spin_lock, flags);
+}
+
/* enable/disable a specific DMA channel */
static __inline__ void enable_dma(unsigned int dmanr)
{
diff --git a/include/asm-alpha/fcntl.h b/include/asm-alpha/fcntl.h
index 7df92de11..9ba84dbf2 100644
--- a/include/asm-alpha/fcntl.h
+++ b/include/asm-alpha/fcntl.h
@@ -18,6 +18,8 @@
#define O_SYNC 040000
#define FASYNC 020000 /* fcntl, for BSD compatibility */
#define O_DIRECT 040000 /* direct disk access - should check with OSF/1 */
+#define O_DIRECTORY 0100000 /* must be a directory */
+#define O_NOFOLLOW 0200000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-alpha/hardirq.h b/include/asm-alpha/hardirq.h
index 1b0c1a051..1468b28e3 100644
--- a/include/asm-alpha/hardirq.h
+++ b/include/asm-alpha/hardirq.h
@@ -6,6 +6,7 @@
#include <linux/tasks.h>
extern unsigned int local_irq_count[NR_CPUS];
+extern unsigned long hardirq_no[NR_CPUS];
/*
* Are we in an interrupt context? Either doing bottom half
@@ -32,6 +33,7 @@ extern unsigned int local_irq_count[NR_CPUS];
#include <asm/atomic.h>
#include <asm/spinlock.h>
+#include <asm/smp.h>
extern int global_irq_holder;
extern spinlock_t global_irq_lock;
@@ -50,10 +52,12 @@ static inline void hardirq_enter(int cpu, int irq)
{
++local_irq_count[cpu];
atomic_inc(&global_irq_count);
+ hardirq_no[cpu] |= 1L << irq; /* debugging only */
}
static inline void hardirq_exit(int cpu, int irq)
{
+ hardirq_no[cpu] &= ~(1L << irq); /* debugging only */
atomic_dec(&global_irq_count);
--local_irq_count[cpu];
}
diff --git a/include/asm-alpha/hwrpb.h b/include/asm-alpha/hwrpb.h
index 6ab7225e3..69823af35 100644
--- a/include/asm-alpha/hwrpb.h
+++ b/include/asm-alpha/hwrpb.h
@@ -185,6 +185,19 @@ struct hwrpb_struct {
unsigned long dsr_offset; /* "Dynamic System Recognition Data Block Table" */
};
+#ifdef __KERNEL__
+
extern struct hwrpb_struct *hwrpb;
+static inline void
+hwrpb_update_checksum(struct hwrpb_struct *h)
+{
+ unsigned long sum = 0, *l;
+ for (l = (unsigned long *) h; l < (unsigned long *) &h->chksum; ++l)
+ sum += *l;
+ h->chksum = sum;
+}
+
+#endif /* __KERNEL__ */
+
#endif /* __ALPHA_HWRPB_H */
diff --git a/include/asm-alpha/io.h b/include/asm-alpha/io.h
index 516fff5e1..51d2af596 100644
--- a/include/asm-alpha/io.h
+++ b/include/asm-alpha/io.h
@@ -323,23 +323,14 @@ out:
#ifdef CONFIG_ALPHA_GENERIC
# define RTC_PORT(x) ((x) + alpha_mv.rtc_port)
-# define RTC_ADDR(x) ((x) | alpha_mv.rtc_addr)
-# define RTC_ALWAYS_BCD (alpha_mv.rtc_bcd)
#else
# ifdef CONFIG_ALPHA_JENSEN
# define RTC_PORT(x) (0x170+(x))
-# define RTC_ADDR(x) (x)
# else
# define RTC_PORT(x) (0x70 + (x))
-# define RTC_ADDR(x) (0x80 | (x))
-# endif
-# ifdef CONFIG_ALPHA_RUFFIAN
-# define RTC_ALWAYS_BCD 1
-# else
-# define RTC_ALWAYS_BCD 0
# endif
#endif
-
+#define RTC_ALWAYS_BCD 0
#endif /* __KERNEL__ */
diff --git a/include/asm-alpha/keyboard.h b/include/asm-alpha/keyboard.h
index acdd45d83..0c6f04d6b 100644
--- a/include/asm-alpha/keyboard.h
+++ b/include/asm-alpha/keyboard.h
@@ -3,7 +3,7 @@
*
* Created 3 Nov 1996 by Geert Uytterhoeven
*
- * $Id: keyboard.h,v 1.5 1998/05/04 01:16:31 ralf Exp $
+ * $Id: keyboard.h,v 1.6 1998/10/28 12:39:58 ralf Exp $
*/
/*
@@ -59,8 +59,11 @@ extern unsigned char pckbd_sysrq_xlate[128];
/* Some stoneage hardware needs delays after some operations. */
#define kbd_pause() do { } while(0)
-#define keyboard_setup() \
- request_region(0x60, 16, "keyboard")
+/* Get the keyboard controller registers (incomplete decode) */
+#define kbd_request_region() request_region(0x60, 16, "keyboard")
+
+#define kbd_request_irq() request_irq(KEYBOARD_IRQ, keyboard_interrupt, 0, \
+ "keyboard", NULL);
/*
* Machine specific bits for the PS/2 driver
@@ -72,10 +75,9 @@ extern unsigned char pckbd_sysrq_xlate[128];
#define AUX_IRQ 9 /* Jensen is odd indeed */
#endif
-#define ps2_request_irq() \
- request_irq(AUX_IRQ, aux_interrupt, 0, "PS/2 Mouse", NULL)
-
-#define ps2_free_irq(inode) free_irq(AUX_IRQ, NULL)
+#define aux_request_irq(handler, dev_id) request_irq(AUX_IRQ, handler, 0, \
+ "PS/2 Mouse", NULL)
+#define aux_free_irq(dev_id) free_irq(AUX_IRQ, NULL)
#endif /* __KERNEL__ */
#endif /* __ASM_ALPHA_KEYBOARD_H */
diff --git a/include/asm-alpha/linux_logo.h b/include/asm-alpha/linux_logo.h
index c7918fb97..f8db4f478 100644
--- a/include/asm-alpha/linux_logo.h
+++ b/include/asm-alpha/linux_logo.h
@@ -1,4 +1,4 @@
-/* $Id: linux_logo.h,v 1.3 1998/06/29 19:36:17 geert Exp $
+/* $Id: linux_logo.h,v 1.6 1998/07/30 16:30:20 jj Exp $
* include/asm-alpha/linux_logo.h: This is a linux logo
* to be displayed on boot.
*
@@ -23,10 +23,11 @@
#define linux_logo_banner "Linux/AXP version " UTS_RELEASE
-#define LINUX_LOGO_COLORS 221
+#define LINUX_LOGO_COLORS 214
#ifdef INCLUDE_LINUX_LOGO_DATA
+#define INCLUDE_LINUX_LOGOBW
#define INCLUDE_LINUX_LOGO16
#include <linux/linux_logo.h>
diff --git a/include/asm-alpha/machvec.h b/include/asm-alpha/machvec.h
index eb39cffc1..17d50c777 100644
--- a/include/asm-alpha/machvec.h
+++ b/include/asm-alpha/machvec.h
@@ -22,11 +22,9 @@ struct alpha_machine_vector
unsigned long hae_cache;
unsigned long *hae_register;
- unsigned int nr_irqs : 16;
- unsigned int rtc_port : 16;
- unsigned int rtc_addr : 15;
- unsigned int rtc_bcd : 1;
- unsigned int max_asn : 16;
+ int nr_irqs;
+ int rtc_port;
+ int max_asn;
unsigned long max_dma_address;
unsigned long mmu_context_mask;
unsigned long irq_probe_mask;
diff --git a/include/asm-alpha/namei.h b/include/asm-alpha/namei.h
index 22e14bdce..644ec0990 100644
--- a/include/asm-alpha/namei.h
+++ b/include/asm-alpha/namei.h
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.1 1996/12/13 14:48:23 jj Exp $
+/* $Id: namei.h,v 1.1 1996/12/13 14:48:21 jj Exp $
* linux/include/asm-alpha/namei.h
*
* Included from linux/fs/namei.c
@@ -12,7 +12,7 @@
* Look at asm-sparc/namei.h for details.
*/
-#define __prefix_namei(retrieve_mode, name, base, buf, res_dir, res_inode, \
- last_name, last_entry, last_error) 1
+#define __prefix_lookup_dentry(name, lookup_flags) \
+ do {} while (0)
#endif /* __ALPHA_NAMEI_H */
diff --git a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h
index 2dd28c3cc..2ed4cacc2 100644
--- a/include/asm-alpha/pci.h
+++ b/include/asm-alpha/pci.h
@@ -32,7 +32,7 @@ extern struct linux_hose_info *bus2hose[256];
#if defined(CONFIG_ALPHA_GENERIC) \
|| defined(CONFIG_ALPHA_MCPCIA) \
- /* || defined(CONFIG_ALPHA_TSUNAMI) */
+ || defined(CONFIG_ALPHA_TSUNAMI)
#define PCI_HANDLE(bus) ((bus2hose[bus]->pci_hose_index & 3UL) << 32)
#define DEV_IS_ON_PRIMARY(dev) \
diff --git a/include/asm-alpha/processor.h b/include/asm-alpha/processor.h
index dff34c973..141075ef6 100644
--- a/include/asm-alpha/processor.h
+++ b/include/asm-alpha/processor.h
@@ -59,7 +59,9 @@ struct thread_struct {
mm_segment_t fs;
/* Breakpoint handling for ptrace. */
- long debugreg[8];
+ unsigned long bpt_addr[2];
+ unsigned int bpt_insn[2];
+ int bpt_nsaved;
};
#define INIT_MMAP { &init_mm, PAGE_OFFSET, PAGE_OFFSET+0x10000000, \
diff --git a/include/asm-alpha/spinlock.h b/include/asm-alpha/spinlock.h
index 5fae6e924..63837b195 100644
--- a/include/asm-alpha/spinlock.h
+++ b/include/asm-alpha/spinlock.h
@@ -5,9 +5,18 @@
#ifndef __SMP__
-/* gcc 2.7.2 can crash initializing an empty structure. */
-typedef struct { int dummy; } spinlock_t;
-#define SPIN_LOCK_UNLOCKED { 0 }
+/*
+ * Your basic spinlocks, allowing only a single CPU anywhere
+ *
+ * Gcc-2.7.x has a nasty bug with empty initializers.
+ */
+#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
+ typedef struct { } spinlock_t;
+ #define SPIN_LOCK_UNLOCKED (spinlock_t) { }
+#else
+ typedef struct { int gcc_is_buggy; } spinlock_t;
+ #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
+#endif
#define spin_lock_init(lock) ((void) 0)
#define spin_lock(lock) ((void) 0)
@@ -29,9 +38,16 @@ typedef struct { int dummy; } spinlock_t;
* can "mix" irq-safe locks - any writer needs to get a
* irq-safe write-lock, but readers can get non-irqsafe
* read-locks.
+ *
+ * Gcc-2.7.x has a nasty bug with empty initializers.
*/
-typedef struct { int dummy; } rwlock_t;
-#define RW_LOCK_UNLOCKED { 0 }
+#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
+ typedef struct { } rwlock_t;
+ #define RW_LOCK_UNLOCKED (rwlock_t) { }
+#else
+ typedef struct { int gcc_is_buggy; } rwlock_t;
+ #define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
+#endif
#define read_lock(lock) ((void) 0)
#define read_unlock(lock) ((void) 0)
@@ -63,15 +79,24 @@ typedef struct { int dummy; } rwlock_t;
*/
typedef struct {
- volatile unsigned long lock;
+ volatile unsigned int lock;
+#if DEBUG_SPINLOCK
+ char debug_state, target_ipl, saved_ipl, on_cpu;
void *previous;
struct task_struct * task;
+#endif
} spinlock_t;
-#define SPIN_LOCK_UNLOCKED { 0, 0, 0 }
+#if DEBUG_SPINLOCK
+#define SPIN_LOCK_UNLOCKED {0, 1, 0, 0, 0, 0}
+#define spin_lock_init(x) \
+ ((x)->lock = 0, (x)->target_ipl = 0, (x)->debug_state = 1, \
+ (x)->previous = 0, (x)->task = 0)
+#else
+#define SPIN_LOCK_UNLOCKED { 0 }
+#define spin_lock_init(x) ((x)->lock = 0)
+#endif
-#define spin_lock_init(x) \
- ((x)->lock = 0, (x)->previous = 0, (x)->task = 0)
#define spin_unlock_wait(x) \
({ do { barrier(); } while(((volatile spinlock_t *)x)->lock); })
@@ -79,8 +104,25 @@ typedef struct { unsigned long a[100]; } __dummy_lock_t;
#define __dummy_lock(lock) (*(__dummy_lock_t *)(lock))
#if DEBUG_SPINLOCK
+extern void spin_unlock(spinlock_t * lock);
extern void spin_lock(spinlock_t * lock);
+extern int spin_trylock(spinlock_t * lock);
+
+#define spin_lock_own(LOCK, LOCATION) \
+do { \
+ if (!((LOCK)->lock && (LOCK)->on_cpu == smp_processor_id())) \
+ printk("%s: called on %d from %p but lock %s on %d\n", \
+ LOCATION, smp_processor_id(), \
+ __builtin_return_address(0), \
+ (LOCK)->lock ? "taken" : "freed", (LOCK)->on_cpu); \
+} while (0)
#else
+static inline void spin_unlock(spinlock_t * lock)
+{
+ mb();
+ lock->lock = 0;
+}
+
static inline void spin_lock(spinlock_t * lock)
{
long tmp;
@@ -89,29 +131,24 @@ static inline void spin_lock(spinlock_t * lock)
of this object file's text section so as to perfect
branch prediction. */
__asm__ __volatile__(
- "1: ldq_l %0,%1\n"
+ "1: ldl_l %0,%1\n"
" blbs %0,2f\n"
" or %0,1,%0\n"
- " stq_c %0,%1\n"
+ " stl_c %0,%1\n"
" beq %0,2f\n"
" mb\n"
".section .text2,\"ax\"\n"
- "2: ldq %0,%1\n"
+ "2: ldl %0,%1\n"
" blbs %0,2b\n"
" br 1b\n"
".previous"
: "=r" (tmp), "=m" (__dummy_lock(lock))
: "m"(__dummy_lock(lock)));
}
-#endif /* DEBUG_SPINLOCK */
-
-static inline void spin_unlock(spinlock_t * lock)
-{
- mb();
- lock->lock = 0;
-}
#define spin_trylock(lock) (!test_and_set_bit(0,(lock)))
+#define spin_lock_own(LOCK, LOCATION) ((void)0)
+#endif /* DEBUG_SPINLOCK */
#define spin_lock_irq(lock) \
(__cli(), spin_lock(lock))
diff --git a/include/asm-alpha/system.h b/include/asm-alpha/system.h
index 4ed5d5481..798207747 100644
--- a/include/asm-alpha/system.h
+++ b/include/asm-alpha/system.h
@@ -95,8 +95,7 @@ extern void wrmces (unsigned long);
extern unsigned long whami(void);
extern void wripir(unsigned long);
-#define halt() \
-__asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt) : "memory")
+extern void halt(void) __attribute__((noreturn));
#define switch_to(prev,next) do { \
current = next; \
diff --git a/include/asm-alpha/termios.h b/include/asm-alpha/termios.h
index 07b9489d9..a16407c8e 100644
--- a/include/asm-alpha/termios.h
+++ b/include/asm-alpha/termios.h
@@ -72,8 +72,11 @@ struct termio {
#define N_MOUSE 2
#define N_PPP 3
#define N_AX25 5
-#define N_X25 6
+#define N_X25 6 /* X.25 async */
#define N_6PACK 7
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
/* eof=^D eol=\0 eol2=\0 erase=del
diff --git a/include/asm-arm/fcntl.h b/include/asm-arm/fcntl.h
index a9e469a49..9a3678193 100644
--- a/include/asm-arm/fcntl.h
+++ b/include/asm-arm/fcntl.h
@@ -16,6 +16,8 @@
#define O_NDELAY O_NONBLOCK
#define O_SYNC 010000
#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECTORY 040000 /* must be a directory */
+#define O_NOFOLLOW 0100000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-arm/namei.h b/include/asm-arm/namei.h
index 8fcd2f5cd..858f400b6 100644
--- a/include/asm-arm/namei.h
+++ b/include/asm-arm/namei.h
@@ -1,5 +1,5 @@
-/*
- * linux/include/asm-i386/namei.h
+/*
+ * linux/include/asm-arm/namei.h
*
* Included from linux/fs/namei.c
*/
@@ -12,7 +12,7 @@
* Look at asm-sparc/namei.h for details.
*/
-#define __prefix_namei(retrieve_mode, name, base, buf, res_dir, res_inode, \
- last_name, last_entry, last_error) 1
+#define __prefix_lookup_dentry(name, lookup_flags) \
+ do {} while (0)
#endif /* __ASMARM_NAMEI_H */
diff --git a/include/asm-arm/termios.h b/include/asm-arm/termios.h
index 4a74e20cb..2510a5b0e 100644
--- a/include/asm-arm/termios.h
+++ b/include/asm-arm/termios.h
@@ -55,6 +55,9 @@ struct termio {
#define N_AX25 5
#define N_X25 6 /* X.25 async */
#define N_6PACK 7
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-i386/bugs.h b/include/asm-i386/bugs.h
index ba3a969ae..5cd7e94d6 100644
--- a/include/asm-i386/bugs.h
+++ b/include/asm-i386/bugs.h
@@ -29,9 +29,7 @@ __initfunc(static void no_halt(char *s, int *ints))
__initfunc(static void no_387(char *s, int *ints))
{
boot_cpu_data.hard_math = 0;
- __asm__("movl %%cr0,%%eax\n\t"
- "orl $0xE,%%eax\n\t"
- "movl %%eax,%%cr0\n\t" : : : "ax");
+ write_cr0(0xE | read_cr0());
}
static char __initdata fpu_error = 0;
diff --git a/include/asm-i386/checksum.h b/include/asm-i386/checksum.h
index cad2910fe..8ec5f9c8d 100644
--- a/include/asm-i386/checksum.h
+++ b/include/asm-i386/checksum.h
@@ -27,22 +27,25 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum)
unsigned int csum_partial_copy_generic( const char *src, char *dst, int len, int sum,
int *src_err_ptr, int *dst_err_ptr);
+/*
+ * Note: when you get a NULL pointer exception here this means someone
+ * passed in an incorrect kernel address to one of these functions.
+ *
+ * If you use these functions directly please don't forget the
+ * verify_area().
+ */
extern __inline__
unsigned int csum_partial_copy_nocheck ( const char *src, char *dst,
int len, int sum)
{
- int *src_err_ptr=NULL, *dst_err_ptr=NULL;
-
- return csum_partial_copy_generic ( src, dst, len, sum, src_err_ptr, dst_err_ptr);
+ return csum_partial_copy_generic ( src, dst, len, sum, NULL, NULL);
}
extern __inline__
unsigned int csum_partial_copy_from_user ( const char *src, char *dst,
int len, int sum, int *err_ptr)
{
- int *dst_err_ptr=NULL;
-
- return csum_partial_copy_generic ( src, dst, len, sum, err_ptr, dst_err_ptr);
+ return csum_partial_copy_generic ( src, dst, len, sum, err_ptr, NULL);
}
#if 0
@@ -59,9 +62,7 @@ extern __inline__
unsigned int csum_partial_copy_to_user ( const char *src, char *dst,
int len, int sum, int *err_ptr)
{
- int *src_err_ptr=NULL;
-
- return csum_partial_copy_generic ( src, dst, len, sum, src_err_ptr, err_ptr);
+ return csum_partial_copy_generic ( src, dst, len, sum, NULL, err_ptr);
}
#endif
@@ -202,15 +203,13 @@ static __inline__ unsigned short int csum_ipv6_magic(struct in6_addr *saddr,
static __inline__ unsigned int csum_and_copy_to_user (const char *src, char *dst,
int len, int sum, int *err_ptr)
{
- int *src_err_ptr=NULL;
-
- if (verify_area(VERIFY_WRITE, dst, len) == 0)
- return csum_partial_copy_generic(src, dst, len, sum, src_err_ptr, err_ptr);
+ if (access_ok(VERIFY_WRITE, dst, len))
+ return csum_partial_copy_generic(src, dst, len, sum, NULL, err_ptr);
if (len)
*err_ptr = -EFAULT;
- return sum;
+ return -1; /* invalid checksum */
}
#endif
diff --git a/include/asm-i386/desc.h b/include/asm-i386/desc.h
new file mode 100644
index 000000000..e91580e04
--- /dev/null
+++ b/include/asm-i386/desc.h
@@ -0,0 +1,61 @@
+#ifndef __ARCH_DESC_H
+#define __ARCH_DESC_H
+
+struct desc_struct {
+ unsigned long a,b;
+};
+
+extern struct desc_struct gdt_table[];
+extern struct desc_struct *idt, *gdt;
+
+struct Xgt_desc_struct {
+ unsigned short size;
+ unsigned long address __attribute__((packed));
+};
+
+#define idt_descr (*(struct Xgt_desc_struct *)((char *)&idt - 2))
+#define gdt_descr (*(struct Xgt_desc_struct *)((char *)&gdt - 2))
+
+/*
+ * Entry into gdt where to find first TSS. GDT layout:
+ * 0 - null
+ * 1 - not used
+ * 2 - kernel code segment
+ * 3 - kernel data segment
+ * 4 - user code segment
+ * 5 - user data segment
+ * 6 - not used
+ * 7 - not used
+ * 8 - APM BIOS support
+ * 9 - APM BIOS support
+ * 10 - APM BIOS support
+ * 11 - APM BIOS support
+ * 12 - TSS #0
+ * 13 - LDT #0
+ * 14 - TSS #1
+ * 15 - LDT #1
+ */
+#define FIRST_TSS_ENTRY 12
+#define FIRST_LDT_ENTRY (FIRST_TSS_ENTRY+1)
+#define _TSS(n) ((((unsigned long) n)<<4)+(FIRST_TSS_ENTRY<<3))
+#define _LDT(n) ((((unsigned long) n)<<4)+(FIRST_LDT_ENTRY<<3))
+#define load_TR(n) __asm__ __volatile__("ltr %%ax": /* no output */ :"a" (_TSS(n)))
+#define load_ldt(n) __asm__ __volatile__("lldt %%ax": /* no output */ :"a" (_LDT(n)))
+#define store_TR(n) \
+__asm__("str %%ax\n\t" \
+ "subl %2,%%eax\n\t" \
+ "shrl $4,%%eax" \
+ :"=a" (n) \
+ :"0" (0),"i" (FIRST_TSS_ENTRY<<3))
+
+extern void set_intr_gate(unsigned int irq, void * addr);
+extern void set_ldt_desc(unsigned int n, void *addr, unsigned int size);
+extern void set_tss_desc(unsigned int n, void *addr);
+
+/*
+ * This is the ldt that every process will get unless we need
+ * something other than this.
+ */
+extern struct desc_struct default_ldt;
+
+#endif
diff --git a/include/asm-i386/dma.h b/include/asm-i386/dma.h
index 0d45967da..58f7bfc05 100644
--- a/include/asm-i386/dma.h
+++ b/include/asm-i386/dma.h
@@ -9,6 +9,8 @@
#define _ASM_DMA_H
#include <asm/io.h> /* need byte IO */
+#include <asm/spinlock.h> /* And spinlocks */
+#include <linux/delay.h>
#ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
@@ -129,6 +131,21 @@
#define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */
#define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */
+
+extern spinlock_t dma_spin_lock;
+
+static __inline__ unsigned long claim_dma_lock(void)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&dma_spin_lock, flags);
+ return flags;
+}
+
+static __inline__ void release_dma_lock(unsigned long flags)
+{
+ spin_unlock_irqrestore(&dma_spin_lock, flags);
+}
+
/* enable/disable a specific DMA channel */
static __inline__ void enable_dma(unsigned int dmanr)
{
@@ -151,7 +168,7 @@ static __inline__ void disable_dma(unsigned int dmanr)
* Use this once to initialize the FF to a known state.
* After that, keep track of it. :-)
* --- In order to do that, the DMA routines below should ---
- * --- only be used while interrupts are disabled! ---
+ * --- only be used while holding the DMA lock ! ---
*/
static __inline__ void clear_dma_ff(unsigned int dmanr)
{
diff --git a/include/asm-i386/fcntl.h b/include/asm-i386/fcntl.h
index f0ddc3e61..eff29ac8f 100644
--- a/include/asm-i386/fcntl.h
+++ b/include/asm-i386/fcntl.h
@@ -18,6 +18,8 @@
#define FASYNC 020000 /* fcntl, for BSD compatibility */
#define O_DIRECT 040000 /* direct disk access hint - currently ignored */
#define O_LARGEFILE 0100000
+#define O_DIRECTORY 0200000 /* must be a directory */
+#define O_NOFOLLOW 0400000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-i386/fixmap.h b/include/asm-i386/fixmap.h
index dc9d624d7..ae6f062dd 100644
--- a/include/asm-i386/fixmap.h
+++ b/include/asm-i386/fixmap.h
@@ -40,7 +40,7 @@
* fix-mapped?
*/
enum fixed_addresses {
-#if __SMP__
+#ifdef __SMP__
FIX_APIC_BASE,
FIX_IO_APIC_BASE,
#endif
diff --git a/include/asm-i386/keyboard.h b/include/asm-i386/keyboard.h
index 462095732..a30e49946 100644
--- a/include/asm-i386/keyboard.h
+++ b/include/asm-i386/keyboard.h
@@ -3,7 +3,7 @@
*
* Created 3 Nov 1996 by Geert Uytterhoeven
*
- * $Id: keyboard.h,v 1.5 1997/08/05 09:44:29 ralf Exp $
+ * $Id: keyboard.h,v 1.6 1998/10/28 12:40:06 ralf Exp $
*/
/*
@@ -52,8 +52,11 @@ extern unsigned char pckbd_sysrq_xlate[128];
/* Some stoneage hardware needs delays after some operations. */
#define kbd_pause() do { SLOW_DOWN_IO; } while(0)
-#define keyboard_setup() \
- request_region(0x60, 16, "keyboard")
+/* Get the keyboard controller registers (incomplete decode) */
+#define kbd_request_region() request_region(0x60, 16, "keyboard")
+
+#define kbd_request_irq() request_irq(KEYBOARD_IRQ, keyboard_interrupt, 0, \
+ "keyboard", NULL);
/*
* Machine specific bits for the PS/2 driver
@@ -63,21 +66,16 @@ extern unsigned char pckbd_sysrq_xlate[128];
#ifdef CONFIG_MCA
-#define ps2_request_irq() \
- request_irq(AUX_IRQ, aux_interrupt, MCA_bus ? SA_SHIRQ : 0, \
- "PS/2 Mouse", inode)
+#define aux_request_irq(handler, dev_id) request_irq(AUX_IRQ, handler, \
+ MCA_bus ? SA_SHIRQ : 0, "PS/2 Mouse", dev_id)
+#define aux_free_irq(dev_id) free_irq(AUX_IRQ, dev_id)
#else /* !defined(CONFIG_MCA) */
-#define ps2_request_irq() \
- request_irq(AUX_IRQ, aux_interrupt, 0, "PS/2 Mouse", NULL)
-
-#endif /* !defined(CONFIG_MCA) */
+#define aux_request_irq(handler, dev_id) request_irq(AUX_IRQ, handler, 0, \
+ "PS/2 Mouse", NULL)
+#define aux_free_irq(dev_id) free_irq(AUX_IRQ, NULL)
-#ifdef CONFIG_MCA
-#define ps2_free_irq(inode) free_irq(AUX_IRQ, inode)
-#else
-#define ps2_free_irq(inode) free_irq(AUX_IRQ, NULL)
#endif
#endif /* __KERNEL__ */
diff --git a/include/asm-i386/linux_logo.h b/include/asm-i386/linux_logo.h
index 6773bef77..452bee7da 100644
--- a/include/asm-i386/linux_logo.h
+++ b/include/asm-i386/linux_logo.h
@@ -1,4 +1,4 @@
-/* $Id: linux_logo.h,v 1.6 1998/07/07 13:34:56 jj Exp $
+/* $Id: linux_logo.h,v 1.8 1998/07/30 16:30:24 jj Exp $
* include/asm-i386/linux_logo.h: This is a linux logo
* to be displayed on boot.
*
@@ -23,10 +23,11 @@
#define linux_logo_banner "Linux/ia32 version " UTS_RELEASE
-#define LINUX_LOGO_COLORS 221
+#define LINUX_LOGO_COLORS 214
#ifdef INCLUDE_LINUX_LOGO_DATA
+#define INCLUDE_LINUX_LOGOBW
#define INCLUDE_LINUX_LOGO16
#include <linux/linux_logo.h>
diff --git a/include/asm-i386/mtrr.h b/include/asm-i386/mtrr.h
index 7e387cfc6..5b1e8470c 100644
--- a/include/asm-i386/mtrr.h
+++ b/include/asm-i386/mtrr.h
@@ -85,7 +85,8 @@ static __inline__ int mtrr_add (unsigned long base, unsigned long size,
{
return -ENODEV;
}
-static __inline__ mtrr_del (int reg, unsigned long base, unsigned long size)
+static __inline__ int mtrr_del (int reg, unsigned long base,
+ unsigned long size)
{
return -ENODEV;
}
diff --git a/include/asm-i386/namei.h b/include/asm-i386/namei.h
index 981627be7..5708ffd8d 100644
--- a/include/asm-i386/namei.h
+++ b/include/asm-i386/namei.h
@@ -12,7 +12,7 @@
* Look at asm-sparc/namei.h for details.
*/
-#define __prefix_namei(retrieve_mode, name, base, buf, res_dir, res_inode, \
- last_name, last_entry, last_error) 1
+#define __prefix_lookup_dentry(name, lookup_flags) \
+ do {} while (0)
#endif /* __I386_NAMEI_H */
diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
index 3a9968c69..1b1e97d73 100644
--- a/include/asm-i386/processor.h
+++ b/include/asm-i386/processor.h
@@ -275,12 +275,34 @@ struct mm_struct;
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
+extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
/* Copy and release all segment info associated with a VM */
extern void copy_segments(int nr, struct task_struct *p, struct mm_struct * mm);
extern void release_segments(struct mm_struct * mm);
/*
+ * FPU lazy state save handling..
+ */
+#define save_fpu(tsk) do { \
+ asm volatile("fnsave %0\n\tfwait":"=m" (tsk->tss.i387)); \
+ tsk->flags &= ~PF_USEDFPU; \
+ stts(); \
+} while (0)
+
+#define unlazy_fpu(tsk) do { \
+ if (tsk->flags & PF_USEDFPU) \
+ save_fpu(tsk); \
+} while (0)
+
+#define clear_fpu(tsk) do { \
+ if (tsk->flags & PF_USEDFPU) { \
+ tsk->flags &= ~PF_USEDFPU; \
+ stts(); \
+ } \
+} while (0)
+
+/*
* Return saved PC of a blocked thread.
*/
extern inline unsigned long thread_saved_pc(struct thread_struct *t)
diff --git a/include/asm-i386/resource.h b/include/asm-i386/resource.h
index 3143b5bb2..e7e2d1159 100644
--- a/include/asm-i386/resource.h
+++ b/include/asm-i386/resource.h
@@ -25,7 +25,7 @@
{ LONG_MAX, LONG_MAX }, \
{ LONG_MAX, LONG_MAX }, \
{ LONG_MAX, LONG_MAX }, \
- { _STK_LIM, _STK_LIM }, \
+ { _STK_LIM, LONG_MAX }, \
{ 0, LONG_MAX }, \
{ LONG_MAX, LONG_MAX }, \
{ MAX_TASKS_PER_USER, MAX_TASKS_PER_USER }, \
diff --git a/include/asm-i386/semaphore.h b/include/asm-i386/semaphore.h
index a68b23fc6..2cb1b891c 100644
--- a/include/asm-i386/semaphore.h
+++ b/include/asm-i386/semaphore.h
@@ -36,8 +36,9 @@ asmlinkage void __down_failed(void /* special register calling convention */);
asmlinkage int __down_failed_interruptible(void /* params in registers */);
asmlinkage void __up_wakeup(void /* special register calling convention */);
-extern void __down(struct semaphore * sem);
-extern void __up(struct semaphore * sem);
+asmlinkage void __down(struct semaphore * sem);
+asmlinkage int __down_interruptible(struct semaphore * sem);
+asmlinkage void __up(struct semaphore * sem);
extern spinlock_t semaphore_wake_lock;
diff --git a/include/asm-i386/shmparam.h b/include/asm-i386/shmparam.h
index 522718965..64472231f 100644
--- a/include/asm-i386/shmparam.h
+++ b/include/asm-i386/shmparam.h
@@ -33,7 +33,9 @@
* SHMMAX <= (PAGE_SIZE << _SHM_IDX_BITS).
*/
-#define SHMMAX 0x1000000 /* max shared seg size (bytes) */
+#define SHMMAX 0x2000000 /* max shared seg size (bytes) */
+/* Try not to change the default shipped SHMMAX - people rely on it */
+
#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) */ \
diff --git a/include/asm-i386/spinlock.h b/include/asm-i386/spinlock.h
index e6fdf42f1..00e238407 100644
--- a/include/asm-i386/spinlock.h
+++ b/include/asm-i386/spinlock.h
@@ -14,10 +14,10 @@
*/
#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
typedef struct { } spinlock_t;
- #define SPIN_LOCK_UNLOCKED { }
+ #define SPIN_LOCK_UNLOCKED (spinlock_t) { }
#else
typedef struct { int gcc_is_buggy; } spinlock_t;
- #define SPIN_LOCK_UNLOCKED { 0 }
+ #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
#endif
#define spin_lock_init(lock) do { } while(0)
@@ -38,7 +38,7 @@
typedef struct {
volatile unsigned int lock;
} spinlock_t;
-#define SPIN_LOCK_UNLOCKED { 0 }
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
#define spin_lock_init(x) do { (x)->lock = 0; } while (0)
#define spin_trylock(lock) (!test_and_set_bit(0,(lock)))
@@ -61,7 +61,7 @@ typedef struct {
volatile unsigned int babble;
const char *module;
} spinlock_t;
-#define SPIN_LOCK_UNLOCKED { 0, 25, __BASE_FILE__ }
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 25, __BASE_FILE__ }
#include <linux/kernel.h>
@@ -88,9 +88,16 @@ typedef struct {
* can "mix" irq-safe locks - any writer needs to get a
* irq-safe write-lock, but readers can get non-irqsafe
* read-locks.
+ *
+ * Gcc-2.7.x has a nasty bug with empty initializers.
*/
-typedef struct { } rwlock_t;
-#define RW_LOCK_UNLOCKED { }
+#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
+ typedef struct { } rwlock_t;
+ #define RW_LOCK_UNLOCKED (rwlock_t) { }
+#else
+ typedef struct { int gcc_is_buggy; } rwlock_t;
+ #define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
+#endif
#define read_lock(lock) do { } while(0)
#define read_unlock(lock) do { } while(0)
@@ -120,7 +127,7 @@ typedef struct {
volatile unsigned int lock;
} spinlock_t;
-#define SPIN_LOCK_UNLOCKED { 0 }
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
#define spin_lock_init(x) do { (x)->lock = 0; } while(0)
/*
@@ -188,7 +195,7 @@ typedef struct {
unsigned long previous;
} rwlock_t;
-#define RW_LOCK_UNLOCKED { 0, 0 }
+#define RW_LOCK_UNLOCKED (rwlock_t) { 0, 0 }
/*
* On x86, we implement read-write locks as a 32-bit counter
diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h
index cb04cefe4..65012f648 100644
--- a/include/asm-i386/system.h
+++ b/include/asm-i386/system.h
@@ -88,7 +88,7 @@ static inline unsigned long _get_base(char * addr)
"1:\t" \
"movl %0,%%" #seg "\n" \
"2:\n" \
- ".section fixup,\"ax\"\n" \
+ ".section .fixup,\"ax\"\n" \
"3:\t" \
"pushl $0\n\t" \
"popl %%" #seg "\n\t" \
@@ -104,14 +104,16 @@ static inline unsigned long _get_base(char * addr)
* Clear and set 'TS' bit respectively
*/
#define clts() __asm__ __volatile__ ("clts")
-#define stts() \
-__asm__ __volatile__ ( \
- "movl %%cr0,%%eax\n\t" \
- "orl $8,%%eax\n\t" \
- "movl %%eax,%%cr0" \
- : /* no outputs */ \
- : /* no inputs */ \
- :"ax")
+#define read_cr0() ({ \
+ unsigned int __dummy; \
+ __asm__( \
+ "movl %%cr0,%0\n\t" \
+ :"=r" (__dummy)); \
+ __dummy; \
+})
+#define write_cr0(x) \
+ __asm__("movl %0,%%cr0": :"r" (x));
+#define stts() write_cr0(8 | read_cr0())
#endif /* __KERNEL__ */
diff --git a/include/asm-i386/termios.h b/include/asm-i386/termios.h
index b2b77853f..cf6b5cd67 100644
--- a/include/asm-i386/termios.h
+++ b/include/asm-i386/termios.h
@@ -47,7 +47,9 @@ struct termio {
#define N_AX25 5
#define N_X25 6 /* X.25 async */
#define N_6PACK 7
-#define N_MASC 8 /* Reserved fo Mobitex module <kaz@cafe.net> */
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h
index b354c47aa..76c7241bf 100644
--- a/include/asm-i386/unistd.h
+++ b/include/asm-i386/unistd.h
@@ -192,8 +192,8 @@
#define __NR_capset 185
#define __NR_sigaltstack 186
#define __NR_sendfile 187
-#define __NR_streams1 188 /* some people actually want it */
-#define __NR_streams2 189 /* some people actually want it */
+#define __NR_getpmsg 188 /* some people actually want streams */
+#define __NR_putpmsg 189 /* some people actually want streams */
/* user-visible error numbers are in the range -1 - -122: see <asm-i386/errno.h> */
@@ -306,36 +306,6 @@ static inline pid_t wait(int * wait_stat)
return waitpid(-1,wait_stat,0);
}
-/*
- * This is the mechanism for creating a new kernel thread.
- *
- * NOTE! Only a kernel-only process(ie the swapper or direct descendants
- * who haven't done an "execve()") should use this: it will work within
- * a system call from a "real" process, but the process memory space will
- * not be free'd until both the parent and the child have exited.
- */
-static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-{
- long retval;
-
- __asm__ __volatile__(
- "movl %%esp,%%esi\n\t"
- "int $0x80\n\t" /* Linux/i386 system call */
- "cmpl %%esp,%%esi\n\t" /* child or parent? */
- "je 1f\n\t" /* parent - jump */
- "pushl %3\n\t" /* push argument */
- "call *%4\n\t" /* call fn */
- "movl %2,%0\n\t" /* exit */
- "int $0x80\n"
- "1:\t"
- :"=a" (retval)
- :"0" (__NR_clone), "i" (__NR_exit),
- "r" (arg), "r" (fn),
- "b" (flags | CLONE_VM)
- :"si");
- return retval;
-}
-
#endif
#endif /* _ASM_I386_UNISTD_H_ */
diff --git a/include/asm-m68k/atomic.h b/include/asm-m68k/atomic.h
index 39236e060..4f92a2f57 100644
--- a/include/asm-m68k/atomic.h
+++ b/include/asm-m68k/atomic.h
@@ -18,35 +18,35 @@ typedef struct { int counter; } atomic_t;
static __inline__ void atomic_add(int i, atomic_t *v)
{
- __asm__ __volatile__("addl %1,%0" : : "m" (*v), "id" (i));
+ __asm__ __volatile__("addl %1,%0" : "=m" (*v) : "id" (i), "0" (*v));
}
static __inline__ void atomic_sub(int i, atomic_t *v)
{
- __asm__ __volatile__("subl %1,%0" : : "m" (*v), "id" (i));
+ __asm__ __volatile__("subl %1,%0" : "=m" (*v) : "id" (i), "0" (*v));
}
static __inline__ void atomic_inc(volatile atomic_t *v)
{
- __asm__ __volatile__("addql #1,%0" : : "m" (*v));
+ __asm__ __volatile__("addql #1,%0" : "=m" (*v): "0" (*v));
}
static __inline__ void atomic_dec(volatile atomic_t *v)
{
- __asm__ __volatile__("subql #1,%0" : : "m" (*v));
+ __asm__ __volatile__("subql #1,%0" : "=m" (*v): "0" (*v));
}
static __inline__ int atomic_dec_and_test(volatile atomic_t *v)
{
char c;
- __asm__ __volatile__("subql #1,%1; seq %0" : "=d" (c) : "m" (*v));
+ __asm__ __volatile__("subql #1,%1; seq %0" : "=d" (c), "=m" (*v): "1" (*v));
return c != 0;
}
#define atomic_clear_mask(mask, v) \
- __asm__ __volatile__("andl %1,%0" : : "m" (*v), "id" (~(mask)))
+ __asm__ __volatile__("andl %1,%0" : "=m" (*v) : "id" (~(mask)),"0"(*v))
#define atomic_set_mask(mask, v) \
- __asm__ __volatile__("orl %1,%0" : : "m" (*v), "id" (mask));
+ __asm__ __volatile__("orl %1,%0" : "=m" (*v) : "id" (mask),"0"(*v))
#endif /* __ARCH_M68K_ATOMIC __ */
diff --git a/include/asm-m68k/fcntl.h b/include/asm-m68k/fcntl.h
index 500d495bf..2235bd5bb 100644
--- a/include/asm-m68k/fcntl.h
+++ b/include/asm-m68k/fcntl.h
@@ -16,6 +16,8 @@
#define O_NDELAY O_NONBLOCK
#define O_SYNC 010000
#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECTORY 040000 /* must be a directory */
+#define O_NOFOLLOW 0100000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-m68k/ide.h b/include/asm-m68k/ide.h
index abcd0da25..6fa31e040 100644
--- a/include/asm-m68k/ide.h
+++ b/include/asm-m68k/ide.h
@@ -146,34 +146,36 @@ static __inline__ void ide_release_region (ide_ioreg_t from, unsigned int extent
if (_nr & 15) { \
_tmp = (_nr & 15) - 1; \
asm volatile ( \
- "1: movew %2@,%3@+; dbra %4,1b" \
+ "1: movew %2@,%0@+; dbra %1,1b" \
+ : "=a" (_buf), "=d" (_tmp) \
+ : "a" (_port), "0" (_buf), \
+ "1" (_tmp)); \
+ } \
+ if (_nr >> 4) { \
+ _tmp = (_nr >> 4) - 1; \
+ asm volatile ( \
+ "1: " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "movew %2@,%0@+; " \
+ "dbra %1,1b" \
: "=a" (_buf), "=d" (_tmp) \
: "a" (_port), "0" (_buf), \
"1" (_tmp)); \
} \
- _tmp = (_nr >> 4) - 1; \
- asm volatile ( \
- "1: " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "movew %2@,%3@+; " \
- "dbra %4,1b" \
- : "=a" (_buf), "=d" (_tmp) \
- : "a" (_port), "0" (_buf), \
- "1" (_tmp)); \
})
#define outsw(port, buf, nr) ({ \
@@ -185,34 +187,36 @@ static __inline__ void ide_release_region (ide_ioreg_t from, unsigned int extent
if (_nr & 15) { \
_tmp = (_nr & 15) - 1; \
asm volatile ( \
- "1: movew %3@,%2@+; dbra %4,1b" \
+ "1: movew %0@+,%2@; dbra %1,1b" \
+ : "=a" (_buf), "=d" (_tmp) \
+ : "a" (_port), "0" (_buf), \
+ "1" (_tmp)); \
+ } \
+ if (_nr >> 4) { \
+ _tmp = (_nr >> 4) - 1; \
+ asm volatile ( \
+ "1: " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "movew %0@+,%2@; " \
+ "dbra %1,1b" \
: "=a" (_buf), "=d" (_tmp) \
: "a" (_port), "0" (_buf), \
"1" (_tmp)); \
} \
- _tmp = (_nr >> 4) - 1; \
- asm volatile ( \
- "1: " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "movew %3@+,%2@; " \
- "dbra %4,1b" \
- : "=a" (_buf), "=d" (_tmp) \
- : "a" (_port), "0" (_buf), \
- "1" (_tmp)); \
})
#ifdef CONFIG_ATARI
diff --git a/include/asm-m68k/linux_logo.h b/include/asm-m68k/linux_logo.h
index 85f7d03f1..3d85769e1 100644
--- a/include/asm-m68k/linux_logo.h
+++ b/include/asm-m68k/linux_logo.h
@@ -18,1430 +18,879 @@
* but should contain %s to display the version
*/
+#include <linux/config.h>
#include <linux/init.h>
#include <linux/version.h>
#define linux_logo_banner "Linux/m68k version " UTS_RELEASE
-#define LINUX_LOGO_COLORS 221
+#ifdef CONFIG_MAC
+
+#define LINUX_LOGO_COLORS 95
#ifdef INCLUDE_LINUX_LOGO_DATA
+
unsigned char linux_logo_red[] __initdata = {
- 0xF3, 0xF6, 0xF8, 0xF7, 0xEF, 0xE7, 0xE5, 0xE3,
- 0xCA, 0xD4, 0xDD, 0xC8, 0xC7, 0xC4, 0xC2, 0xE5,
- 0xF1, 0xED, 0xEE, 0xE6, 0xC6, 0xDA, 0xDD, 0xE5,
- 0xD9, 0xC6, 0xE3, 0xD0, 0xC6, 0xBA, 0xB0, 0xB6,
- 0xBB, 0xBE, 0xB9, 0xB8, 0xB3, 0xB2, 0xB0, 0xAD,
- 0xAC, 0xA9, 0xA8, 0xA6, 0xA4, 0xA1, 0xA0, 0x9D,
- 0xA0, 0x9F, 0x9E, 0x9C, 0x9B, 0x99, 0x9A, 0x99,
- 0x98, 0x95, 0x96, 0x94, 0x93, 0x92, 0x8F, 0x8D,
- 0x8C, 0x8A, 0x87, 0x86, 0x83, 0x81, 0x0D, 0x03,
- 0x66, 0x44, 0x24, 0x08, 0xD6, 0xE6, 0xE9, 0xE6,
- 0xE7, 0xCA, 0xDC, 0xDB, 0xD5, 0xD0, 0xC9, 0xE2,
- 0xD5, 0xC6, 0xC4, 0xB3, 0xB2, 0xB9, 0xA9, 0x9A,
- 0xB2, 0x9D, 0xE8, 0xEC, 0xF5, 0xF5, 0xF4, 0xF4,
- 0xEC, 0xEE, 0xF0, 0xF5, 0xE0, 0xD6, 0xC5, 0xC2,
- 0xD9, 0xD5, 0xD8, 0xD6, 0xF6, 0xF4, 0xED, 0xEC,
- 0xEB, 0xF1, 0xF6, 0xF5, 0xF5, 0xEE, 0xEF, 0xEC,
- 0xE7, 0xE3, 0xE6, 0xD6, 0xDD, 0xC3, 0xD6, 0xD7,
- 0xCD, 0xCA, 0xC3, 0xAC, 0x95, 0x99, 0xB7, 0xA3,
- 0x8B, 0x88, 0x95, 0x8A, 0x94, 0xD2, 0xCC, 0xC4,
- 0xA8, 0x8E, 0x8F, 0xAE, 0xB8, 0xAC, 0xB6, 0xB4,
- 0xAD, 0xA5, 0xA0, 0x9B, 0x8B, 0xA3, 0x94, 0x87,
- 0x85, 0x89, 0x53, 0x80, 0x7D, 0x7C, 0x7A, 0x78,
- 0x76, 0x71, 0x73, 0x6E, 0x6B, 0x67, 0x65, 0x62,
- 0x4B, 0x5B, 0x5F, 0x53, 0x56, 0x52, 0x4F, 0x46,
- 0x42, 0x0F, 0x75, 0x78, 0x7D, 0x72, 0x5F, 0x6E,
- 0x7A, 0x75, 0x6A, 0x58, 0x48, 0x4F, 0x00, 0x2B,
- 0x37, 0x3E, 0x32, 0x33, 0x25, 0x2C, 0x3B, 0x11,
- 0x1D, 0x14, 0x06, 0x02, 0x00
+ 0x02, 0x82, 0xEA, 0x42, 0xC2, 0x82, 0xE2, 0xA2,
+ 0xDA, 0xC2, 0x22, 0x62, 0xB2, 0x92, 0xD2, 0x8A,
+ 0xB2, 0xFA, 0xDA, 0x32, 0x72, 0x12, 0xF2, 0x52,
+ 0xF2, 0xEA, 0xFA, 0xAA, 0xCA, 0x9A, 0xE2, 0xAA,
+ 0x8A, 0xEA, 0xD2, 0x92, 0xEA, 0xDA, 0x2A, 0x6A,
+ 0xDA, 0xBA, 0xD2, 0x52, 0x7A, 0x2A, 0x5A, 0x0A,
+ 0x6A, 0xEA, 0xE2, 0xC6, 0x96, 0xF2, 0x3A, 0x1A,
+ 0xB2, 0xBA, 0xF2, 0xDA, 0x0A, 0x86, 0x4A, 0xCA,
+ 0x8A, 0xE2, 0xA6, 0xDA, 0x66, 0xBA, 0x92, 0xDA,
+ 0xA2, 0xB6, 0x76, 0x12, 0xF2, 0xFA, 0xEA, 0xAE,
+ 0xCE, 0x9E, 0xB2, 0x8E, 0xF2, 0xD2, 0xA2, 0x6E,
+ 0xBE, 0xD6, 0x7E, 0x5E, 0xC2, 0xFA, 0x3A
};
unsigned char linux_logo_green[] __initdata = {
- 0xF3, 0xF6, 0xF8, 0xF7, 0xEF, 0xE7, 0xE5, 0xE3,
- 0xCA, 0xD4, 0xDD, 0xC8, 0xC7, 0xC4, 0xC2, 0xD3,
- 0xDA, 0xD4, 0xD7, 0xCC, 0xC1, 0xCC, 0xCB, 0xC9,
- 0xC5, 0xBC, 0xBC, 0xBB, 0xB7, 0xA5, 0xB0, 0xB6,
- 0xBB, 0xBE, 0xB9, 0xB8, 0xB3, 0xB2, 0xAD, 0xAD,
- 0xAC, 0xA9, 0xA8, 0xA6, 0xA4, 0xA1, 0xA0, 0x95,
- 0xA0, 0x9F, 0x9E, 0x9C, 0x9B, 0x99, 0x9A, 0x99,
- 0x98, 0x95, 0x96, 0x94, 0x93, 0x92, 0x8F, 0x8D,
- 0x8C, 0x8A, 0x87, 0x86, 0x83, 0x81, 0x08, 0x02,
- 0x53, 0x2E, 0x19, 0x06, 0xC6, 0xC8, 0xCF, 0xBD,
- 0xB3, 0xB6, 0xB4, 0xAB, 0xA5, 0xA3, 0x9B, 0xB6,
- 0xA7, 0x99, 0x92, 0xA4, 0x9E, 0x9D, 0x98, 0x8C,
- 0x8A, 0x86, 0xCD, 0xCC, 0xC9, 0xD7, 0xCA, 0xC4,
- 0xCA, 0xC3, 0xC7, 0xC3, 0xC8, 0xB4, 0x91, 0x8E,
- 0x8A, 0x82, 0x87, 0x85, 0xBD, 0xBF, 0xB6, 0xBC,
- 0xAE, 0xB7, 0xBC, 0xB8, 0xBF, 0xB6, 0xBC, 0xB5,
- 0xAB, 0xA6, 0xAD, 0xB2, 0xA5, 0x87, 0x9C, 0x96,
- 0x95, 0x8E, 0x87, 0x8F, 0x86, 0x86, 0x8E, 0x80,
- 0x7A, 0x70, 0x7B, 0x78, 0x78, 0x7F, 0x77, 0x6F,
- 0x70, 0x76, 0x59, 0x77, 0x68, 0x64, 0x7B, 0x7C,
- 0x75, 0x6D, 0x77, 0x69, 0x65, 0x5F, 0x5B, 0x54,
- 0x4F, 0x5B, 0x39, 0x80, 0x7D, 0x7C, 0x7A, 0x78,
- 0x76, 0x71, 0x73, 0x6E, 0x6B, 0x67, 0x65, 0x62,
- 0x4B, 0x5B, 0x5F, 0x53, 0x56, 0x52, 0x4F, 0x46,
- 0x42, 0x0B, 0x69, 0x66, 0x64, 0x57, 0x4A, 0x4E,
- 0x55, 0x4B, 0x46, 0x3B, 0x30, 0x33, 0x00, 0x2B,
- 0x37, 0x3E, 0x32, 0x33, 0x25, 0x2C, 0x29, 0x0D,
- 0x1D, 0x14, 0x06, 0x02, 0x00
+ 0x02, 0x82, 0xC2, 0x42, 0x8A, 0x56, 0xE2, 0xA2,
+ 0xAA, 0xC2, 0x22, 0x62, 0x86, 0x92, 0x9E, 0x6E,
+ 0xB2, 0xB2, 0xD2, 0x32, 0x72, 0x12, 0xD2, 0x52,
+ 0xF2, 0xB2, 0xC2, 0xAA, 0xCA, 0x9A, 0xA2, 0x7E,
+ 0x8A, 0xCA, 0x92, 0x66, 0xEA, 0xB2, 0x2A, 0x6A,
+ 0xA2, 0xBA, 0xD2, 0x36, 0x7A, 0x1A, 0x5A, 0x0A,
+ 0x4A, 0xE6, 0xAE, 0xC6, 0x96, 0xBA, 0x3A, 0x1A,
+ 0xAA, 0x7A, 0xCA, 0xDA, 0x02, 0x86, 0x4A, 0x8A,
+ 0x5E, 0xE2, 0xA6, 0xAE, 0x66, 0x82, 0x92, 0x9A,
+ 0x72, 0xB6, 0x76, 0x12, 0xD2, 0xFA, 0xB2, 0xAE,
+ 0xCE, 0x9E, 0x7A, 0x8E, 0xCA, 0x92, 0x6A, 0x6E,
+ 0xBE, 0xD6, 0x7E, 0x5E, 0xC6, 0xBA, 0x3E
};
unsigned char linux_logo_blue[] __initdata = {
- 0xF3, 0xF6, 0xF8, 0xF7, 0xEF, 0xEE, 0xE5, 0xDE,
- 0xD7, 0xD3, 0xDD, 0xC8, 0xC7, 0xC4, 0xC2, 0xB5,
- 0xB0, 0xA6, 0xAC, 0x9B, 0xB5, 0xB5, 0xAE, 0x84,
- 0x90, 0xA9, 0x81, 0x8D, 0x96, 0x86, 0xB0, 0xB6,
- 0xBB, 0xBE, 0xB9, 0xB8, 0xB3, 0xB2, 0xA7, 0xAD,
- 0xAC, 0xA9, 0xA8, 0xA6, 0xA4, 0xA1, 0xA5, 0x87,
- 0xA0, 0x9F, 0x9E, 0x9C, 0x9B, 0x9A, 0x9A, 0x99,
- 0x98, 0x95, 0x96, 0x94, 0x93, 0x92, 0x8F, 0x8D,
- 0x8C, 0x8A, 0x87, 0x86, 0x83, 0x81, 0xC8, 0xD7,
- 0x9B, 0x8E, 0x8C, 0xB2, 0x77, 0x77, 0x4E, 0x77,
- 0x69, 0x71, 0x78, 0x6B, 0x65, 0x66, 0x64, 0x59,
- 0x5C, 0x5A, 0x48, 0x72, 0x7B, 0x6B, 0x67, 0x6E,
- 0x42, 0x5B, 0x29, 0x36, 0x25, 0x10, 0x17, 0x14,
- 0x19, 0x16, 0x13, 0x0E, 0x08, 0x2E, 0x2E, 0x3D,
- 0x24, 0x24, 0x24, 0x24, 0x13, 0x12, 0x14, 0x14,
- 0x0E, 0x08, 0x0D, 0x0F, 0x08, 0x0D, 0x0E, 0x08,
- 0x08, 0x0C, 0x06, 0x06, 0x07, 0x16, 0x07, 0x0E,
- 0x08, 0x0A, 0x07, 0x0D, 0x2D, 0x3E, 0x09, 0x4E,
- 0x68, 0x52, 0x56, 0x58, 0x4B, 0x22, 0x20, 0x20,
- 0x27, 0x39, 0x28, 0x19, 0x1E, 0x1E, 0x08, 0x06,
- 0x07, 0x09, 0x08, 0x08, 0x05, 0x1D, 0x1F, 0x17,
- 0x18, 0x06, 0x79, 0x80, 0x7D, 0x7C, 0x7A, 0x78,
- 0x76, 0x71, 0x73, 0x6E, 0x6B, 0x68, 0x65, 0x62,
- 0x4B, 0x5B, 0x5F, 0x55, 0x56, 0x52, 0x4F, 0x46,
- 0x42, 0x5A, 0x14, 0x23, 0x3D, 0x2B, 0x21, 0x14,
- 0x06, 0x04, 0x03, 0x07, 0x09, 0x13, 0x2A, 0x3A,
- 0x37, 0x3E, 0x32, 0x33, 0x25, 0x2C, 0x07, 0x09,
- 0x1D, 0x14, 0x06, 0x02, 0x00
+ 0x04, 0x84, 0x04, 0x44, 0x04, 0x04, 0xDC, 0xA4,
+ 0x0C, 0xC4, 0x1C, 0x64, 0x04, 0x8C, 0x04, 0x34,
+ 0xB4, 0x0C, 0xAC, 0x34, 0x74, 0x04, 0x0C, 0x4C,
+ 0xF4, 0x0C, 0x0C, 0xAC, 0xCC, 0x9C, 0x0C, 0x04,
+ 0x8C, 0x0C, 0x04, 0x04, 0xEC, 0x2C, 0x2C, 0x6C,
+ 0x04, 0xBC, 0xD4, 0x04, 0x7C, 0x04, 0x5C, 0x0C,
+ 0x04, 0xEC, 0x04, 0xC4, 0x94, 0x14, 0x3C, 0x1C,
+ 0xA4, 0x04, 0x24, 0xDC, 0x04, 0x84, 0x4C, 0x0C,
+ 0x04, 0xE4, 0xA4, 0x04, 0x64, 0x04, 0x94, 0x14,
+ 0x0C, 0xB4, 0x74, 0x14, 0x24, 0xFC, 0x14, 0xAC,
+ 0xCC, 0x9C, 0x0C, 0x8C, 0x14, 0x14, 0x04, 0x6C,
+ 0xBC, 0xD4, 0x7C, 0x5C, 0xD4, 0x14, 0x3C
};
unsigned char linux_logo[] __initdata = {
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x57,
- 0x58, 0x58, 0x59, 0x5C, 0x5D, 0x5F, 0x60, 0x61,
- 0x62, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x5E, 0x5E,
- 0x5E, 0x5D, 0x5D, 0x5C, 0x5D, 0x5B, 0x58, 0x58,
- 0x58, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x58,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x57,
- 0x54, 0x56, 0x57, 0x67, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x67, 0x4C,
- 0x4A, 0x49, 0x4A, 0x49, 0x4A, 0x49, 0x49, 0x4A,
- 0x4A, 0x4B, 0x4B, 0x4B, 0x4C, 0x50, 0x51, 0x52,
- 0x54, 0x54, 0x56, 0x57, 0x57, 0x57, 0x57, 0x58,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x58, 0x56, 0x56, 0x53,
- 0x52, 0x53, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0xFB, 0xFB,
- 0x4B, 0x4B, 0x4B, 0x4A, 0x49, 0x4A, 0x4A, 0x49,
- 0x49, 0x49, 0x48, 0x49, 0x49, 0x4A, 0x4A, 0x4B,
- 0x4C, 0x4D, 0x52, 0x54, 0x56, 0x55, 0x57, 0x58,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50,
- 0x50, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xF4, 0xFB,
- 0xFC, 0x67, 0x53, 0x50, 0x4D, 0x4C, 0x4C, 0x4C,
- 0x4B, 0x4A, 0x4A, 0x48, 0x49, 0x48, 0x48, 0x49,
- 0x49, 0x49, 0x4B, 0x4C, 0x50, 0x52, 0x53, 0x56,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x55, 0x54, 0x53, 0x51, 0x51, 0x50, 0x4C, 0x4D,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF4, 0xD2, 0xD7, 0xF5,
- 0xFC, 0xFC, 0x5D, 0x5D, 0x5C, 0x5C, 0x59, 0x58,
- 0x58, 0x56, 0x52, 0x4C, 0x4B, 0x4A, 0x4A, 0x48,
- 0x48, 0x48, 0x48, 0x48, 0x49, 0x4B, 0x4D, 0x51,
- 0x54, 0x56, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x55, 0x54,
- 0x53, 0x52, 0x51, 0x4D, 0x4D, 0x4D, 0x50, 0x50,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF4, 0x64, 0xD9, 0xF5,
- 0xF9, 0xFC, 0xFC, 0x64, 0x63, 0x62, 0x61, 0x61,
- 0x61, 0x60, 0x5E, 0x5B, 0x5A, 0x54, 0x52, 0x4C,
- 0x4B, 0x49, 0x49, 0x47, 0x47, 0x48, 0x49, 0x4B,
- 0x4C, 0x51, 0x53, 0x56, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x55, 0x53, 0x53,
- 0x51, 0x50, 0x50, 0x50, 0x50, 0x50, 0x53, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF4, 0xF5, 0xF9, 0xFC,
- 0xFC, 0xFC, 0xFC, 0x64, 0x64, 0x64, 0x64, 0x64,
- 0x64, 0x64, 0x64, 0x63, 0x61, 0x61, 0x5E, 0x59,
- 0x55, 0x52, 0x4C, 0x4A, 0x49, 0x47, 0x48, 0x48,
- 0x49, 0x4B, 0x4D, 0x51, 0x54, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x55, 0x54, 0x54, 0x52, 0x51,
- 0x51, 0x51, 0x51, 0x51, 0x53, 0x54, 0x59, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF7, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x60, 0x60, 0x60, 0x61,
- 0x62, 0x63, 0x64, 0x64, 0x65, 0x65, 0x64, 0x63,
- 0x61, 0x5E, 0x59, 0x56, 0x4D, 0x4B, 0x48, 0x48,
- 0x48, 0x48, 0x49, 0x4B, 0x50, 0x53, 0x56, 0x56,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x56, 0x54, 0x53, 0x52, 0x51, 0x51,
- 0x51, 0x52, 0x53, 0x55, 0x59, 0x5D, 0x5E, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFB, 0xFB, 0xFB, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x4C, 0x4E, 0x51, 0x52,
- 0x57, 0x5A, 0x5E, 0x60, 0x61, 0x63, 0x65, 0xCB,
- 0x64, 0x64, 0x63, 0x60, 0x5C, 0x57, 0x50, 0x4B,
- 0x48, 0x47, 0x47, 0x47, 0x4A, 0x4C, 0x52, 0x53,
- 0x54, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x55, 0x54, 0x53, 0x53, 0x51, 0x52, 0x52, 0x53,
- 0x53, 0x57, 0x5A, 0x5D, 0x5E, 0x5E, 0x60, 0xFC,
- 0xFC, 0xFC, 0xFB, 0xF9, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFA, 0xF9, 0xF5, 0xFB, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0x45, 0x3F, 0x3F,
- 0x45, 0x48, 0x4B, 0x4D, 0x54, 0x5A, 0x5E, 0x61,
- 0x63, 0xCB, 0xCB, 0x65, 0x64, 0x62, 0x5E, 0x57,
- 0x50, 0x4B, 0x48, 0x47, 0x47, 0x48, 0x4B, 0x4D,
- 0x51, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x55,
- 0x54, 0x54, 0x53, 0x53, 0x52, 0x53, 0x54, 0x57,
- 0x59, 0x5C, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0xFC,
- 0xFC, 0xFA, 0xFC, 0xFA, 0xE0, 0xFC, 0xFC, 0xFC,
- 0xFB, 0xFB, 0xFB, 0xDF, 0xD8, 0xF9, 0xE0, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0x4C, 0x4A, 0x48,
- 0x48, 0x3E, 0x44, 0x43, 0x3F, 0x47, 0x4B, 0x52,
- 0x5A, 0x5E, 0x62, 0x64, 0xCB, 0xCB, 0x64, 0x61,
- 0x5E, 0x57, 0x4D, 0x49, 0x47, 0x47, 0x48, 0x4A,
- 0x4C, 0x52, 0x54, 0x56, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x55,
- 0x54, 0x53, 0x53, 0x54, 0x54, 0x55, 0x58, 0x5B,
- 0x5C, 0x5D, 0x5E, 0x5D, 0x5D, 0x5B, 0x58, 0xFC,
- 0xFC, 0xD8, 0x4C, 0x60, 0xFC, 0xF5, 0xFC, 0xFC,
- 0xFC, 0xF7, 0x5F, 0x48, 0x48, 0x2C, 0xF8, 0xF9,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x4B, 0x4A, 0x49,
- 0x49, 0x49, 0x49, 0x47, 0x3E, 0x44, 0x42, 0x3F,
- 0x3E, 0x4B, 0x54, 0x5C, 0x61, 0x64, 0xCB, 0xCB,
- 0x64, 0x61, 0x5D, 0x53, 0x4B, 0x49, 0x47, 0x47,
- 0x49, 0x4B, 0x50, 0x53, 0x56, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x55, 0x55, 0x54,
- 0x53, 0x53, 0x54, 0x56, 0x58, 0x5A, 0x5B, 0x5D,
- 0x5D, 0x5D, 0x5C, 0x5A, 0x54, 0x52, 0x4C, 0xFC,
- 0xF7, 0x4E, 0x2D, 0x29, 0x4E, 0xFC, 0xFC, 0xFC,
- 0xFB, 0x5F, 0x26, 0x24, 0x20, 0x2E, 0x65, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x45, 0x3F, 0x45,
- 0x3E, 0x47, 0x47, 0x47, 0x47, 0x47, 0x3E, 0x44,
- 0x43, 0x40, 0x44, 0x49, 0x51, 0x5C, 0x62, 0x64,
- 0xCB, 0xCB, 0x63, 0x60, 0x58, 0x50, 0x49, 0x48,
- 0x48, 0x48, 0x4A, 0x4D, 0x53, 0x54, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x55, 0x54, 0x54, 0x54,
- 0x54, 0x54, 0x55, 0x57, 0x59, 0x5B, 0x5C, 0x5D,
- 0x5C, 0x5A, 0x54, 0x51, 0x4C, 0x4C, 0x54, 0xFC,
- 0xF9, 0x23, 0xDB, 0x2D, 0x23, 0xFA, 0xFB, 0xFA,
- 0xF5, 0x27, 0x21, 0xD9, 0xF8, 0x20, 0x21, 0xFB,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x5D, 0x58, 0x55,
- 0x50, 0x48, 0x45, 0x43, 0x44, 0x44, 0x45, 0x45,
- 0x3E, 0x3F, 0x43, 0x41, 0x3F, 0x48, 0x52, 0x5D,
- 0x63, 0x65, 0xCB, 0x65, 0x61, 0x5D, 0x52, 0x4B,
- 0x48, 0x47, 0x47, 0x49, 0x4C, 0x51, 0x54, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x55, 0x54, 0x54, 0x54,
- 0x54, 0x58, 0x5A, 0x59, 0x5B, 0x5B, 0x5B, 0x5A,
- 0x55, 0x52, 0x4D, 0x4D, 0x55, 0x5B, 0x5D, 0xFC,
- 0xF1, 0xF9, 0xFC, 0xD4, 0x21, 0xCC, 0xF7, 0xF8,
- 0xF2, 0x21, 0xD9, 0xFC, 0xF2, 0xFB, 0x21, 0x45,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0xD1, 0xD0, 0xCD,
- 0xCC, 0x63, 0x5E, 0x58, 0x50, 0x47, 0x43, 0x3F,
- 0x3F, 0x3F, 0x3F, 0x3F, 0x40, 0x41, 0x3F, 0x4A,
- 0x56, 0x5E, 0x64, 0xCB, 0x65, 0x63, 0x5E, 0x56,
- 0x4C, 0x48, 0x47, 0x47, 0x49, 0x4C, 0x51, 0x54,
- 0x58, 0x57, 0x57, 0x57, 0x57, 0x55, 0x54, 0x54,
- 0x57, 0x5A, 0x5A, 0x5C, 0x5B, 0x5A, 0x58, 0x54,
- 0x51, 0x4C, 0x55, 0x5D, 0x5D, 0x5B, 0x54, 0xFC,
- 0xF0, 0xF9, 0xFC, 0x65, 0x45, 0xCD, 0xFB, 0xFB,
- 0xF8, 0x26, 0xFB, 0xFC, 0xFC, 0xFC, 0x21, 0x27,
- 0xFB, 0xFC, 0xFC, 0xFC, 0xFB, 0xD7, 0x35, 0x34,
- 0x2F, 0x35, 0x36, 0x2F, 0x2F, 0x36, 0x2F, 0x2F,
- 0x36, 0x36, 0x35, 0x35, 0x43, 0x42, 0x41, 0x2E,
- 0x45, 0x4C, 0x5B, 0x62, 0x65, 0xCC, 0x64, 0x60,
- 0x58, 0x4D, 0x49, 0x47, 0x47, 0x49, 0x4C, 0x51,
- 0x58, 0x57, 0x57, 0x57, 0x57, 0x57, 0x55, 0x57,
- 0x58, 0x5A, 0x5A, 0x5B, 0x5A, 0x55, 0x54, 0x51,
- 0x53, 0x5C, 0x5D, 0x5D, 0x54, 0x4B, 0x4D, 0xFC,
- 0xFC, 0x44, 0xFC, 0xFB, 0x7B, 0xAB, 0xA8, 0xAE,
- 0xAB, 0x7F, 0xFC, 0xFC, 0xFB, 0xFB, 0x22, 0x2A,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x36, 0x2F, 0x30, 0x30,
- 0x32, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x2F, 0x2F, 0x40, 0x41,
- 0x2E, 0x40, 0x48, 0x56, 0x5F, 0x64, 0xCC, 0x65,
- 0x61, 0x59, 0x50, 0x49, 0x47, 0x47, 0x49, 0x4C,
- 0x5A, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58,
- 0x5A, 0x5A, 0x5A, 0x58, 0x55, 0x52, 0x51, 0x5A,
- 0x5D, 0x5D, 0x57, 0x4C, 0x51, 0x54, 0x5D, 0xFC,
- 0xFC, 0x2A, 0xFC, 0xC9, 0xAA, 0x8B, 0x8A, 0x8C,
- 0xAB, 0x8C, 0x8C, 0xFB, 0xFB, 0x23, 0x20, 0xF1,
- 0xFC, 0xFC, 0xFC, 0x3B, 0x33, 0x33, 0x32, 0x32,
- 0x31, 0x32, 0x30, 0x32, 0x32, 0x32, 0x32, 0x30,
- 0x31, 0x31, 0x31, 0x32, 0x33, 0x33, 0x3C, 0x41,
- 0x41, 0x2E, 0x2D, 0x45, 0x4D, 0x5D, 0x63, 0xCC,
- 0x65, 0x62, 0x5D, 0x51, 0x49, 0x47, 0x47, 0x4A,
- 0x59, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58,
- 0x5A, 0x5A, 0x58, 0x55, 0x53, 0x53, 0x5C, 0x5E,
- 0x59, 0x51, 0x4E, 0x54, 0x59, 0x5E, 0x62, 0xFC,
- 0xFC, 0xDB, 0xAA, 0xA1, 0x95, 0x9C, 0x8C, 0x88,
- 0x82, 0x83, 0x83, 0x8C, 0x88, 0xAE, 0xB9, 0xFB,
- 0xFC, 0xFC, 0xFC, 0x3C, 0x3B, 0x72, 0x38, 0x33,
- 0x33, 0x33, 0x31, 0x33, 0x31, 0x31, 0x31, 0x31,
- 0x33, 0x33, 0x38, 0x33, 0x72, 0x3B, 0x44, 0x2E,
- 0x41, 0x2E, 0x2E, 0x2D, 0x43, 0x4B, 0x5B, 0x63,
- 0xCB, 0xCC, 0x63, 0x5D, 0x51, 0x49, 0x47, 0x49,
- 0x5C, 0x58, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58,
- 0x58, 0x58, 0x57, 0x53, 0x58, 0x5D, 0x5E, 0x55,
- 0x51, 0x53, 0x58, 0x5E, 0x60, 0x63, 0x64, 0xFC,
- 0xFC, 0xC0, 0xA6, 0x9D, 0x8B, 0x9C, 0x8C, 0x8C,
- 0x6E, 0x83, 0x88, 0x8C, 0x8C, 0x8C, 0x83, 0xE8,
- 0xFB, 0xFC, 0xFC, 0xFC, 0x33, 0x70, 0x70, 0x6F,
- 0x6F, 0x6F, 0x6F, 0x3A, 0x6F, 0x6D, 0x6F, 0x6F,
- 0x70, 0x6F, 0x6F, 0x70, 0x6F, 0x32, 0x5A, 0x48,
- 0x41, 0x2D, 0x2D, 0x2D, 0x2C, 0x41, 0x49, 0x5A,
- 0x62, 0xCB, 0xCB, 0x63, 0x5D, 0x50, 0x49, 0x4A,
- 0x5C, 0x58, 0x58, 0x57, 0x55, 0x57, 0x57, 0x57,
- 0x57, 0x55, 0x56, 0x59, 0x5E, 0x5C, 0x52, 0x53,
- 0x55, 0x5B, 0x5E, 0x61, 0x63, 0x64, 0x63, 0xFC,
- 0xE8, 0xBF, 0xA4, 0x99, 0x9C, 0x8C, 0x88, 0x88,
- 0x6E, 0x88, 0x8C, 0x8C, 0x8C, 0xC2, 0xA6, 0xC4,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x36, 0x3A, 0x6F, 0x70,
- 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
- 0x70, 0x70, 0x70, 0x70, 0x37, 0x32, 0xCD, 0x5E,
- 0x4C, 0x43, 0x2C, 0x2D, 0x2D, 0x2C, 0x2E, 0x47,
- 0x57, 0x61, 0x65, 0xCC, 0x63, 0x5C, 0x50, 0x4D,
- 0x5C, 0x5A, 0x57, 0x55, 0x55, 0x55, 0x58, 0x58,
- 0x55, 0x54, 0x5B, 0x5E, 0x5D, 0x53, 0x53, 0x55,
- 0x5D, 0x5E, 0x61, 0x61, 0x61, 0x61, 0x5E, 0xFC,
- 0xEA, 0xBE, 0xA4, 0x9B, 0x8B, 0x85, 0x8C, 0x6E,
- 0x8C, 0x8C, 0x8C, 0xA3, 0xAA, 0xA4, 0xA4, 0xE9,
- 0xFB, 0xFC, 0xFC, 0xFC, 0x36, 0x6D, 0x70, 0x73,
- 0x70, 0x70, 0x70, 0x73, 0x73, 0x73, 0x73, 0x70,
- 0x70, 0x70, 0x73, 0x70, 0x37, 0x38, 0xD1, 0xCF,
- 0x61, 0x4D, 0x44, 0x2C, 0x2D, 0x2E, 0x2C, 0x2E,
- 0x3E, 0x56, 0x61, 0xCB, 0xCC, 0x62, 0x5B, 0x57,
- 0x59, 0x58, 0x55, 0x54, 0x54, 0x55, 0x58, 0x58,
- 0x58, 0x5B, 0x5E, 0x5B, 0x53, 0x55, 0x55, 0x5C,
- 0x5E, 0x61, 0x61, 0x60, 0x5D, 0x5A, 0x4E, 0xFC,
- 0xFC, 0xEA, 0xAA, 0x9C, 0x8A, 0x85, 0x82, 0x8C,
- 0x8C, 0xA8, 0xEB, 0xA8, 0xA4, 0xA4, 0xAA, 0xFC,
- 0xFC, 0xFC, 0x64, 0xFB, 0x39, 0x31, 0x72, 0x78,
- 0x73, 0x78, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73,
- 0x78, 0x70, 0x73, 0x73, 0x33, 0xCC, 0xD2, 0xD1,
- 0xCE, 0x62, 0x53, 0x3F, 0x2D, 0x2D, 0x41, 0x2C,
- 0x2E, 0x3E, 0x56, 0x62, 0xCB, 0xCB, 0x61, 0x5D,
- 0x54, 0x54, 0x54, 0x54, 0x56, 0x58, 0x58, 0x58,
- 0x5C, 0x5E, 0x5A, 0x55, 0x58, 0x58, 0x5B, 0x5E,
- 0x61, 0x5E, 0x5D, 0x5A, 0x52, 0x55, 0xCD, 0xFC,
- 0xFC, 0x34, 0xC9, 0xE8, 0xA8, 0xAE, 0xC2, 0xE8,
- 0xC3, 0xA6, 0xA7, 0xA6, 0xAA, 0x78, 0x2E, 0x42,
- 0xFC, 0xFC, 0xD2, 0x64, 0xF8, 0x31, 0x72, 0x73,
- 0x73, 0x73, 0x73, 0x74, 0x75, 0x75, 0x74, 0x73,
- 0x73, 0x73, 0x73, 0x72, 0x33, 0x5C, 0x64, 0xD2,
- 0xD1, 0xCF, 0x63, 0x54, 0x3F, 0x2C, 0x41, 0x41,
- 0x2C, 0x2E, 0x47, 0x58, 0x63, 0xCB, 0xCB, 0x62,
- 0x52, 0x53, 0x53, 0x56, 0x58, 0x58, 0x5A, 0x5B,
- 0x5E, 0x5A, 0x57, 0x58, 0x58, 0x58, 0x60, 0x60,
- 0x5D, 0x5A, 0x55, 0x4E, 0x64, 0xD2, 0xD1, 0xFC,
- 0xFC, 0x41, 0x3E, 0xC1, 0xC0, 0xA3, 0xA6, 0xA7,
- 0xA7, 0xA9, 0xAA, 0xB8, 0x2E, 0x3F, 0x2C, 0x41,
- 0xFC, 0xFC, 0xF7, 0xCE, 0xCD, 0x36, 0x72, 0x73,
- 0x74, 0x75, 0x78, 0x75, 0x75, 0x75, 0x74, 0x74,
- 0x74, 0x74, 0x78, 0x72, 0x6D, 0x49, 0x59, 0xCB,
- 0xD1, 0xD1, 0xD2, 0xCB, 0x56, 0x3F, 0x2C, 0x41,
- 0x40, 0x2D, 0x2E, 0x49, 0x5B, 0x64, 0xCC, 0x64,
- 0x51, 0x53, 0x53, 0x55, 0x58, 0x59, 0x5B, 0x5E,
- 0x59, 0x58, 0x58, 0x58, 0x55, 0x60, 0x60, 0x5C,
- 0x5A, 0x53, 0x5B, 0xD0, 0xD3, 0xD3, 0xD3, 0xFB,
- 0xFC, 0x40, 0x41, 0x45, 0xC4, 0xC0, 0xBE, 0xBE,
- 0xC1, 0xC0, 0x3C, 0x47, 0x2E, 0x21, 0x22, 0x20,
- 0x65, 0xFC, 0xFC, 0xFC, 0xFC, 0x6D, 0x72, 0x75,
- 0x78, 0x76, 0x75, 0x79, 0x76, 0x76, 0x76, 0x76,
- 0x75, 0x75, 0x75, 0x72, 0x6D, 0x2E, 0x48, 0x5D,
- 0xCE, 0xD1, 0xD4, 0xD3, 0xCB, 0x56, 0x43, 0x2C,
- 0x42, 0x43, 0x2E, 0x2E, 0x4A, 0x5D, 0x64, 0x64,
- 0x50, 0x52, 0x56, 0x58, 0x5C, 0x5D, 0x5E, 0x5D,
- 0x5A, 0x58, 0x58, 0x55, 0x61, 0x60, 0x58, 0x58,
- 0x4E, 0x61, 0xD1, 0xD4, 0xD4, 0xD1, 0xEE, 0xFC,
- 0xFC, 0x2B, 0x29, 0x2E, 0x3F, 0xB0, 0xAD, 0x81,
- 0x46, 0x2D, 0x46, 0x2C, 0x24, 0x22, 0x22, 0x23,
- 0x25, 0xFC, 0xFC, 0xFC, 0xFC, 0x6E, 0x73, 0x76,
- 0x76, 0x79, 0x79, 0x79, 0x76, 0x76, 0x79, 0x76,
- 0x79, 0x79, 0x79, 0x74, 0x3F, 0x41, 0x2C, 0x48,
- 0x5F, 0xCF, 0xD5, 0xD7, 0xD6, 0xCD, 0x57, 0x40,
- 0x2E, 0x3F, 0x44, 0x2E, 0x41, 0x4C, 0x60, 0x61,
- 0x51, 0x53, 0x58, 0x5C, 0x5D, 0x5E, 0x5D, 0x5C,
- 0x58, 0x57, 0x54, 0x5F, 0x5E, 0x55, 0x55, 0x52,
- 0x64, 0xD4, 0xD5, 0xD4, 0xD1, 0x5D, 0xFA, 0xFB,
- 0xF4, 0x21, 0x24, 0x41, 0x40, 0x44, 0x2E, 0x2E,
- 0x42, 0x41, 0x2A, 0x24, 0x22, 0x22, 0x22, 0x22,
- 0x23, 0xD9, 0xFC, 0xFC, 0xFC, 0xFC, 0xE5, 0xB8,
- 0x8F, 0x8F, 0x7A, 0x8F, 0x7A, 0x8F, 0x7A, 0x8F,
- 0x8F, 0x8F, 0xB8, 0xE5, 0x3F, 0x3E, 0x43, 0x2C,
- 0x48, 0x61, 0xD1, 0xD7, 0xD9, 0xD7, 0xD0, 0x57,
- 0x41, 0x2E, 0x3E, 0x44, 0x2D, 0x40, 0x52, 0x5D,
- 0x53, 0x55, 0x59, 0x5D, 0x5E, 0x5E, 0x5D, 0x5A,
- 0x57, 0x53, 0x5E, 0x5E, 0x54, 0x53, 0x54, 0x65,
- 0xD5, 0xD6, 0xD4, 0xCE, 0x53, 0xFB, 0xF9, 0xFC,
- 0x24, 0x22, 0x23, 0x23, 0x41, 0x42, 0x2E, 0x40,
- 0x2B, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x23, 0x23, 0xFC, 0xFC, 0xFC, 0xFC, 0xE7, 0xBD,
- 0xB5, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0xB5, 0xC6, 0xEB, 0x2D, 0x47, 0x4A, 0x47,
- 0x2C, 0x3E, 0x61, 0xD4, 0xDC, 0xDC, 0xDA, 0xCF,
- 0x54, 0x41, 0x41, 0x3E, 0x45, 0x2C, 0x3F, 0x4A,
- 0x58, 0x5A, 0x5C, 0x5F, 0x60, 0x5E, 0x5D, 0x57,
- 0x51, 0x5D, 0x5D, 0x51, 0x53, 0x53, 0xCB, 0xD5,
- 0xD6, 0xD5, 0x63, 0x55, 0xFC, 0xFC, 0xFC, 0x2C,
- 0x23, 0x22, 0x23, 0x22, 0x20, 0x2D, 0x2C, 0x26,
- 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x21, 0xF0, 0xFC, 0xFC, 0xFC, 0xE2, 0xC6,
- 0xB5, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0xC7, 0xE3, 0x3E, 0x2E, 0x49, 0x52,
- 0x4C, 0x41, 0x44, 0x62, 0xD6, 0xDE, 0xDE, 0xD9,
- 0xD0, 0x51, 0x2E, 0x40, 0x47, 0x44, 0x2C, 0x42,
- 0x5D, 0x5D, 0x5F, 0x60, 0x60, 0x5D, 0x57, 0x51,
- 0x58, 0x5D, 0x4E, 0x52, 0x55, 0x64, 0xD5, 0xD6,
- 0xD4, 0x61, 0x59, 0x6B, 0xFC, 0xFC, 0xFC, 0x21,
- 0x23, 0x22, 0x23, 0x22, 0x23, 0x21, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x21, 0x24, 0xFC, 0xFC, 0xFC, 0xE2, 0xC7,
- 0xB5, 0x90, 0x93, 0x93, 0x93, 0x90, 0x93, 0x93,
- 0x90, 0xB5, 0xC8, 0xE4, 0x5F, 0x45, 0x2E, 0x4D,
- 0x57, 0x57, 0x44, 0x43, 0x63, 0xDA, 0xDF, 0xDF,
- 0xD9, 0xCE, 0x4C, 0x2C, 0x3F, 0x3E, 0x40, 0x40,
- 0x60, 0x5E, 0x61, 0x61, 0x5E, 0x5B, 0x53, 0x52,
- 0x5C, 0x52, 0x52, 0x55, 0x61, 0xD4, 0xD5, 0xD1,
- 0x5E, 0x5B, 0x5C, 0xFB, 0xFC, 0xFC, 0x2A, 0x21,
- 0x23, 0x22, 0x23, 0x22, 0x22, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0xFB, 0xFC, 0xFC, 0xB3, 0xC8,
- 0xB5, 0x90, 0x92, 0xB5, 0x93, 0x93, 0xB5, 0x93,
- 0x92, 0xB5, 0xC8, 0xB9, 0xD0, 0x5E, 0x44, 0x40,
- 0x52, 0x58, 0x57, 0x48, 0x40, 0x63, 0xD9, 0xE0,
- 0xE0, 0xD9, 0xCB, 0x49, 0x2D, 0x3F, 0x45, 0x3F,
- 0x63, 0x61, 0x62, 0x60, 0x5E, 0x55, 0x4D, 0x59,
- 0x53, 0x4E, 0x54, 0x5D, 0xD2, 0xD4, 0xD2, 0x5E,
- 0x5C, 0x5D, 0xFC, 0xFC, 0xFC, 0xF8, 0x29, 0x23,
- 0x23, 0x23, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x23, 0x22, 0x22, 0x23, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0xF0, 0xFC, 0xFC, 0xB3, 0xC7,
- 0xB5, 0x93, 0xB5, 0x93, 0x93, 0x91, 0x93, 0x93,
- 0x91, 0xB5, 0xC7, 0xAD, 0xD6, 0xD2, 0x5E, 0x3F,
- 0x3F, 0x57, 0x57, 0x58, 0x4A, 0x41, 0x64, 0xDC,
- 0xF1, 0xDF, 0xDA, 0x61, 0x45, 0x2E, 0x43, 0x47,
- 0xCB, 0x63, 0x62, 0x5F, 0x58, 0x51, 0x53, 0x54,
- 0x4C, 0x52, 0x5C, 0xCD, 0xD3, 0xD2, 0x60, 0x5D,
- 0x5D, 0xFB, 0xFC, 0xFC, 0xFC, 0xDB, 0x49, 0x24,
- 0x21, 0x23, 0x23, 0x22, 0x26, 0x26, 0x2A, 0x24,
- 0x22, 0x23, 0x22, 0x21, 0x24, 0x26, 0x26, 0x2A,
- 0x29, 0x2B, 0x24, 0x25, 0xFC, 0xFC, 0xB3, 0xC5,
- 0x91, 0x91, 0x92, 0x91, 0x92, 0x92, 0x93, 0x93,
- 0x91, 0x93, 0xC6, 0xAD, 0xDC, 0xD9, 0xD4, 0x60,
- 0x43, 0x45, 0x58, 0x58, 0x57, 0x4B, 0x43, 0xCC,
- 0xDD, 0xF1, 0xD8, 0xD5, 0x5D, 0x43, 0x41, 0x47,
- 0xCD, 0x63, 0x62, 0x5D, 0x54, 0x4C, 0x55, 0x4B,
- 0x51, 0x58, 0x62, 0xD0, 0xD0, 0x62, 0x5D, 0x5D,
- 0x67, 0xFC, 0xFC, 0xFC, 0xFC, 0x58, 0x4E, 0x28,
- 0x2A, 0x20, 0x23, 0x22, 0x23, 0x2A, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x23, 0x25, 0x2A, 0x2E, 0x2D,
- 0x2E, 0x2E, 0x2E, 0x23, 0xFA, 0xFC, 0xB2, 0xBD,
- 0xB5, 0x90, 0x91, 0x93, 0x92, 0x90, 0x91, 0x93,
- 0x92, 0x91, 0xBD, 0xAD, 0xDE, 0xE0, 0xD8, 0xD7,
- 0x61, 0x40, 0x48, 0x58, 0x58, 0x58, 0x48, 0x44,
- 0xCF, 0xDE, 0xE0, 0xDD, 0xD0, 0x52, 0x41, 0x45,
- 0xCD, 0x63, 0x61, 0x58, 0x4D, 0x51, 0x4C, 0x4B,
- 0x54, 0x5D, 0xCC, 0xCE, 0x63, 0x61, 0x5D, 0x5D,
- 0xFB, 0xFC, 0xFC, 0xFC, 0xFC, 0x4B, 0x27, 0x21,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x24, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x20,
- 0x27, 0x2B, 0x41, 0x2B, 0x23, 0xFC, 0xB2, 0xB6,
- 0x93, 0x90, 0x92, 0xB5, 0x92, 0x90, 0xB5, 0x90,
- 0x92, 0x93, 0xBC, 0xAD, 0xDC, 0xF1, 0xF3, 0xF0,
- 0xD9, 0x61, 0x41, 0x4A, 0x58, 0x57, 0x57, 0x44,
- 0x49, 0xD2, 0xDD, 0xD8, 0xDA, 0x63, 0x4A, 0x45,
- 0xCC, 0x63, 0x5E, 0x52, 0x4B, 0x4C, 0x49, 0x51,
- 0x5C, 0x61, 0xCD, 0x65, 0x63, 0x5E, 0x4E, 0xCF,
- 0xFB, 0xFB, 0xF0, 0xFC, 0xD2, 0x2A, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x26, 0x41, 0x27, 0xF9, 0x81, 0xB7,
- 0xB5, 0x91, 0x92, 0xB5, 0x91, 0xB5, 0x93, 0xB5,
- 0x93, 0xB6, 0xB7, 0xB9, 0xCB, 0xD8, 0xF3, 0xF2,
- 0xF2, 0xDB, 0x61, 0x2D, 0x51, 0x58, 0x57, 0x58,
- 0x41, 0x51, 0xD4, 0xDB, 0xDC, 0xD1, 0x5B, 0x4C,
- 0xCB, 0x62, 0x59, 0x4C, 0x4A, 0x49, 0x4B, 0x55,
- 0x60, 0x64, 0xCC, 0x64, 0x5E, 0x55, 0x60, 0xE1,
- 0xFB, 0xF8, 0xFC, 0xFC, 0x21, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x21, 0x24, 0x2D, 0x21, 0xB4, 0xBB,
- 0xB6, 0xB5, 0xB6, 0xB7, 0xB7, 0xB7, 0xB7, 0xB6,
- 0xB6, 0xB6, 0xBB, 0xB9, 0x45, 0xCB, 0xDF, 0xF3,
- 0xF3, 0xF3, 0xDB, 0x5E, 0x2C, 0x51, 0x58, 0x58,
- 0x52, 0x2D, 0x5C, 0xD4, 0xD9, 0xD5, 0x63, 0x58,
- 0x64, 0x60, 0x53, 0x49, 0x4A, 0x49, 0x52, 0x5C,
- 0x63, 0xCD, 0xCD, 0x63, 0x5C, 0x4E, 0x65, 0xFC,
- 0xFC, 0xF5, 0xFC, 0xD2, 0x23, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x21, 0x22, 0x25, 0x29, 0xB3, 0xC7,
- 0xB5, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
- 0xB6, 0xB5, 0xC7, 0xAD, 0x57, 0x3F, 0xCB, 0xF0,
- 0xF3, 0xF3, 0xF2, 0xD9, 0x58, 0x41, 0x4C, 0x58,
- 0x57, 0x47, 0x42, 0x62, 0xD4, 0xD4, 0xCC, 0x60,
- 0x63, 0x5D, 0x50, 0x47, 0x48, 0x4B, 0x58, 0x60,
- 0xCC, 0xCE, 0xCD, 0x60, 0x53, 0x5C, 0x62, 0xFB,
- 0xF9, 0xFC, 0xFC, 0x21, 0x23, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x23, 0x23, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x23, 0x22, 0x23, 0x81, 0xC7,
- 0xB7, 0xB7, 0xBC, 0xB7, 0xBC, 0xBC, 0xBC, 0xB7,
- 0xB7, 0xB7, 0xC8, 0x80, 0x58, 0x57, 0x40, 0xCE,
- 0xF3, 0xF2, 0xF2, 0xF0, 0xD5, 0x4C, 0x3F, 0x4B,
- 0x52, 0x50, 0x2D, 0x4B, 0x64, 0xD2, 0xCC, 0x61,
- 0x60, 0x58, 0x4A, 0x47, 0x47, 0x4C, 0x59, 0x64,
- 0xD0, 0xD0, 0x64, 0x59, 0x49, 0x5D, 0xFB, 0xFC,
- 0xD9, 0xFC, 0xD6, 0x23, 0x22, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x23, 0x21, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x23, 0x22, 0x23, 0xB4, 0xC8,
- 0xBD, 0xB7, 0xBD, 0xBC, 0xBD, 0xC5, 0xBC, 0xC5,
- 0xBC, 0xBD, 0xC7, 0xAC, 0x58, 0x57, 0x58, 0x2C,
- 0xD1, 0xF0, 0xF3, 0xF3, 0xE0, 0xCD, 0x45, 0x3E,
- 0x48, 0x4B, 0x3F, 0x41, 0x56, 0x64, 0x65, 0x62,
- 0x5D, 0x52, 0x47, 0x48, 0x48, 0x53, 0x60, 0xCC,
- 0xD2, 0xD0, 0x63, 0x52, 0x4E, 0x53, 0xFB, 0xFB,
- 0xFC, 0xFC, 0x23, 0x23, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x23, 0x20, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x23, 0x22, 0xB4, 0xC7,
- 0xC5, 0xBC, 0xC5, 0xBD, 0xC5, 0xC5, 0xBD, 0xC5,
- 0xBC, 0xC6, 0xC7, 0xB9, 0x58, 0x57, 0x58, 0x57,
- 0x2D, 0xD4, 0xF1, 0xF2, 0xF0, 0xD9, 0x5D, 0x47,
- 0x48, 0x3F, 0x42, 0x2C, 0x48, 0x5C, 0x5F, 0x60,
- 0x58, 0x50, 0x47, 0x4A, 0x49, 0x55, 0x63, 0xD0,
- 0xD2, 0xCD, 0x5D, 0x49, 0x4E, 0xE1, 0xFC, 0xF0,
- 0xFC, 0xF8, 0x22, 0x22, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x20, 0x21, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x23, 0x23, 0x22, 0xC4, 0xC8,
- 0xBD, 0xBD, 0xC6, 0xBD, 0xC6, 0xC6, 0xC5, 0xC6,
- 0xBD, 0xC6, 0xC7, 0xE4, 0x54, 0x57, 0x58, 0x57,
- 0x57, 0x43, 0xD7, 0xE0, 0xF1, 0xD8, 0xCD, 0x4B,
- 0x4A, 0x47, 0x42, 0x2C, 0x3F, 0x4D, 0x58, 0x5C,
- 0x52, 0x4B, 0x48, 0x4B, 0x4A, 0x58, 0xCB, 0xD3,
- 0xD2, 0xCD, 0x58, 0x47, 0x4A, 0xFC, 0xFC, 0xFB,
- 0xFC, 0x2B, 0x22, 0x22, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x26, 0x21, 0x21, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x23, 0x22, 0x23, 0xE5, 0xC8,
- 0xBA, 0xC5, 0xC6, 0xC6, 0xC6, 0xC7, 0xC6, 0xC7,
- 0xC5, 0xC6, 0xC8, 0xE5, 0x2E, 0x54, 0x58, 0x57,
- 0x57, 0x4C, 0x4D, 0xDA, 0xD8, 0xD8, 0xD4, 0x5C,
- 0x4B, 0x4B, 0x3F, 0x42, 0x44, 0x4A, 0x51, 0x58,
- 0x4B, 0x48, 0x4B, 0x51, 0x4D, 0x5F, 0xD0, 0xD1,
- 0xD0, 0x64, 0x51, 0x44, 0x6B, 0xFC, 0xFB, 0xFC,
- 0xFC, 0x21, 0x23, 0x22, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x26, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0xE5, 0xED,
- 0xE7, 0xBA, 0xC8, 0xC6, 0xC6, 0xC6, 0xC6, 0xC7,
- 0xC7, 0xE5, 0xED, 0xE6, 0x61, 0x41, 0x52, 0x58,
- 0x58, 0x57, 0x45, 0x5E, 0xD7, 0xDD, 0xD5, 0x60,
- 0x4B, 0x4C, 0x48, 0x4D, 0x4D, 0x50, 0x4D, 0x56,
- 0x4A, 0x3E, 0x53, 0x53, 0x52, 0x63, 0xD3, 0xD0,
- 0xCE, 0x60, 0x4A, 0x45, 0xFC, 0xFC, 0xF7, 0xFC,
- 0xFC, 0x21, 0x23, 0x23, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x21, 0x2A, 0x20, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x21, 0x23, 0xEB, 0xF6,
- 0xF6, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
- 0xF6, 0xF6, 0xF6, 0xE6, 0xDB, 0x58, 0x45, 0x4B,
- 0x58, 0x57, 0x4D, 0x4B, 0x64, 0xD4, 0xD0, 0x5C,
- 0x48, 0x51, 0x4C, 0x5D, 0x5E, 0x5C, 0x56, 0x59,
- 0x3E, 0x4A, 0x58, 0x54, 0x52, 0x65, 0xD3, 0xD0,
- 0xCF, 0x5D, 0x48, 0xFC, 0xFC, 0xFC, 0xFA, 0xFC,
- 0xFC, 0x21, 0x22, 0x23, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x21, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x21, 0x4F, 0xE6, 0xC6,
- 0xC6, 0xBD, 0xC6, 0xBD, 0xBD, 0xBD, 0xBD, 0xC6,
- 0xC5, 0xBA, 0xC7, 0xE6, 0xF2, 0xD4, 0x49, 0x4B,
- 0x3E, 0x4D, 0x52, 0x3E, 0x52, 0x63, 0x64, 0x56,
- 0x48, 0x54, 0x4D, 0x61, 0xCC, 0xCC, 0x60, 0x60,
- 0x47, 0x4D, 0x5C, 0x53, 0x58, 0xCF, 0xD1, 0xCF,
- 0xD0, 0x59, 0x45, 0xFC, 0xFC, 0xFC, 0xEF, 0xF9,
- 0xFC, 0x21, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x23, 0x4F, 0xE4, 0xB9,
- 0xAF, 0x80, 0x80, 0x8E, 0x8E, 0x8E, 0x8E, 0x8F,
- 0x80, 0xB4, 0xB9, 0xE4, 0x7F, 0xDE, 0x61, 0x52,
- 0x54, 0x48, 0x3F, 0x43, 0x4D, 0x56, 0x59, 0x4B,
- 0x3E, 0x58, 0x53, 0x61, 0xD3, 0xD4, 0xCF, 0xCD,
- 0x4C, 0x58, 0x5F, 0x53, 0x5E, 0xD3, 0xD0, 0xCE,
- 0xCE, 0x52, 0x3F, 0xFC, 0xFC, 0xFC, 0xF7, 0x65,
- 0xFA, 0x22, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x21, 0x2A, 0x23, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x21, 0xB1, 0xE4, 0xE6,
- 0x7C, 0xB1, 0x7C, 0xB1, 0xB2, 0xB2, 0xB3, 0x3D,
- 0xB3, 0x3C, 0xE5, 0xB3, 0xB0, 0xF1, 0xD0, 0x58,
- 0x5D, 0x4D, 0x40, 0x41, 0x48, 0x51, 0x4C, 0x3F,
- 0x3F, 0x4D, 0x5A, 0x5A, 0xD5, 0xD9, 0xD7, 0xD4,
- 0x57, 0x5E, 0x61, 0x4C, 0x63, 0xD4, 0xCF, 0xCE,
- 0xCB, 0x4D, 0x4A, 0xFC, 0xFC, 0xFC, 0xFC, 0xF0,
- 0xFB, 0x22, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x23, 0x22, 0x23, 0x23, 0xB1, 0x81, 0x7D,
- 0x39, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x7C, 0xB2, 0xB0, 0xDF, 0xD2, 0x57,
- 0x60, 0x59, 0x5B, 0x59, 0x52, 0x4C, 0x4A, 0x40,
- 0x42, 0x4A, 0x53, 0x4D, 0xD2, 0xDE, 0xDE, 0xD9,
- 0x5E, 0x5E, 0x60, 0x4A, 0xCD, 0xD1, 0xCF, 0xCE,
- 0x63, 0x49, 0x5C, 0xFB, 0xE8, 0x89, 0x9F, 0xFC,
- 0xD6, 0x21, 0x21, 0x23, 0x22, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x21, 0x2A, 0x22, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x7F, 0xB9,
- 0x71, 0x6C, 0x38, 0x38, 0x33, 0x33, 0x33, 0x38,
- 0x38, 0x71, 0xAD, 0xE4, 0xD3, 0xDA, 0xCC, 0x52,
- 0x63, 0x60, 0xCE, 0xD4, 0xCF, 0x60, 0x4C, 0x40,
- 0x3F, 0x45, 0x4B, 0x5A, 0xCB, 0xD8, 0xDE, 0xDC,
- 0x5E, 0x5E, 0x5F, 0x4C, 0xD2, 0xD2, 0xCF, 0xCF,
- 0x61, 0x45, 0x5E, 0xA7, 0x9D, 0x95, 0x8B, 0x99,
- 0xFC, 0x41, 0x21, 0x23, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x2A, 0x23, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x77, 0x77, 0xF6,
- 0xFC, 0x7D, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D,
- 0x7D, 0xFC, 0x47, 0x64, 0xD0, 0xD0, 0x5D, 0x4B,
- 0x62, 0xCC, 0xD1, 0xDE, 0xDE, 0xD4, 0x5E, 0x43,
- 0x3F, 0x3E, 0x48, 0x53, 0x58, 0xDB, 0xD8, 0xDC,
- 0x5E, 0x5E, 0x5E, 0x53, 0xD4, 0xD2, 0xD0, 0xD0,
- 0x5E, 0x49, 0xA7, 0xA6, 0x89, 0x95, 0x8B, 0x9C,
- 0x9C, 0xFB, 0xD4, 0x22, 0x22, 0x22, 0x22, 0x23,
- 0x22, 0x23, 0x23, 0x2A, 0x22, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x23, 0x22, 0x23, 0x23, 0x98, 0x8C, 0x8C, 0x88,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8,
- 0xE9, 0x9C, 0x48, 0x5C, 0xD0, 0xCB, 0x48, 0x49,
- 0x5B, 0xCB, 0xCD, 0xE0, 0xF1, 0xDD, 0xD0, 0x4A,
- 0x41, 0x47, 0x45, 0x4C, 0x48, 0xD7, 0xDE, 0xDC,
- 0x5E, 0x5E, 0x5A, 0x58, 0xD1, 0xD0, 0xD0, 0xD2,
- 0x5C, 0x55, 0xA7, 0xA6, 0x87, 0x86, 0x89, 0x94,
- 0x9C, 0xA9, 0xFC, 0xF4, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x23, 0xA4, 0x89, 0x8C, 0xAA,
- 0xFB, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF7,
- 0x85, 0x88, 0x8D, 0x59, 0x64, 0x63, 0x47, 0x3E,
- 0x4C, 0x60, 0x61, 0xE0, 0xF0, 0xDF, 0xD9, 0x5D,
- 0x2E, 0x3E, 0x3E, 0x47, 0x4D, 0xCD, 0xDE, 0xDC,
- 0x5D, 0x5C, 0x51, 0x5D, 0xD1, 0xD2, 0xD2, 0xD4,
- 0x5A, 0xBE, 0xA7, 0x98, 0x8A, 0x8A, 0xA0, 0x8B,
- 0x86, 0x86, 0xF7, 0xFC, 0xF7, 0x26, 0x23, 0x23,
- 0x22, 0x22, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x21, 0x21, 0x21, 0xA1, 0x98, 0x9F, 0xBF,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xA7,
- 0x8C, 0x86, 0x8D, 0x59, 0x5E, 0x5D, 0x3F, 0x3E,
- 0x47, 0x53, 0x63, 0xD9, 0xF0, 0xF1, 0xDE, 0xD0,
- 0x43, 0x3E, 0x47, 0x45, 0x4A, 0x5B, 0xDC, 0xDA,
- 0x5D, 0x59, 0x49, 0x5F, 0xD1, 0xD2, 0xD3, 0xB9,
- 0xA5, 0xA7, 0x98, 0x9B, 0x96, 0x9D, 0x89, 0x89,
- 0x8B, 0x9C, 0x9D, 0xFC, 0xFC, 0xFC, 0x26, 0x22,
- 0x23, 0x23, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x29, 0x2D, 0x99, 0x99, 0xA2, 0xAA,
- 0xC4, 0xFB, 0xFC, 0xFC, 0xFC, 0xF6, 0xBF, 0xA2,
- 0x9C, 0x9C, 0x8E, 0xDC, 0xCD, 0x51, 0x41, 0x3E,
- 0x45, 0x49, 0x58, 0xCD, 0xE0, 0xE0, 0xD8, 0xDA,
- 0x4C, 0x4A, 0x45, 0x45, 0x48, 0x47, 0xDA, 0xDA,
- 0x5C, 0x58, 0x44, 0x69, 0xA9, 0x98, 0xA4, 0xA6,
- 0xA1, 0xA4, 0x99, 0x9E, 0x9D, 0x8B, 0x8A, 0x97,
- 0x87, 0x9A, 0x8A, 0xC2, 0xFC, 0xFC, 0xFC, 0x4D,
- 0x21, 0x21, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0x22,
- 0x21, 0x22, 0x2D, 0x34, 0xA4, 0xA2, 0xA2, 0xA9,
- 0xBF, 0xC0, 0xC3, 0xC1, 0xC0, 0xBE, 0xA6, 0x9D,
- 0x99, 0x87, 0xA2, 0xF1, 0xDC, 0x64, 0x42, 0x45,
- 0x47, 0x3E, 0x49, 0x4C, 0xDD, 0xDF, 0xD8, 0xDB,
- 0x5E, 0x4C, 0x48, 0x45, 0x45, 0x41, 0xD1, 0xD6,
- 0x5A, 0x55, 0x3F, 0xA7, 0xA1, 0x98, 0x9F, 0x99,
- 0x9F, 0x9D, 0x9A, 0x95, 0x8B, 0x97, 0x89, 0x8A,
- 0x88, 0x94, 0x9C, 0x8C, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xF4, 0x21, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x23, 0x23, 0x2C, 0x2C, 0xA8, 0xA2, 0xA4, 0xA4,
- 0xA9, 0xAA, 0xAA, 0xAA, 0xA9, 0xA6, 0x98, 0x9C,
- 0x8B, 0x88, 0x98, 0x8D, 0xD8, 0xD6, 0x4E, 0x47,
- 0x47, 0x49, 0x47, 0x3F, 0xDA, 0xDD, 0xDE, 0xDD,
- 0xCC, 0x4A, 0x4B, 0x3E, 0x45, 0x43, 0x61, 0xD4,
- 0x56, 0x51, 0x44, 0xA4, 0x9B, 0x8B, 0x9C, 0x9A,
- 0xA0, 0xA2, 0x98, 0x98, 0x8B, 0x8B, 0x98, 0x98,
- 0x84, 0x8B, 0x94, 0x8A, 0xA4, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xF2, 0x21, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0x23,
- 0x23, 0x22, 0x2C, 0x2D, 0xC0, 0xA4, 0xA2, 0xA4,
- 0xA4, 0xA6, 0xA6, 0xA6, 0xA4, 0xA2, 0x9F, 0x89,
- 0x8B, 0x9C, 0x9C, 0x8B, 0x68, 0xDB, 0x5F, 0x4B,
- 0x3E, 0x49, 0x4B, 0x3E, 0xCC, 0xDA, 0xDC, 0xDD,
- 0xD3, 0x49, 0x52, 0x48, 0x45, 0x45, 0x53, 0xD0,
- 0x51, 0x4A, 0x44, 0xA4, 0x9B, 0x8B, 0x9C, 0xA0,
- 0x9B, 0x86, 0x89, 0x98, 0x89, 0x8A, 0x96, 0x8A,
- 0x9C, 0x89, 0x89, 0x9C, 0x8C, 0xF6, 0xFC, 0xFC,
- 0xFC, 0xFC, 0x21, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x22, 0x23,
- 0x22, 0x21, 0x2B, 0x34, 0xC0, 0xA8, 0xA4, 0xA2,
- 0xA2, 0x98, 0xA1, 0xA0, 0x98, 0x9F, 0x95, 0x8A,
- 0x94, 0xA1, 0x8A, 0x84, 0x9B, 0x68, 0xCC, 0x49,
- 0x4A, 0x47, 0x4C, 0x4B, 0x51, 0xD3, 0xDA, 0xDC,
- 0xD5, 0x56, 0x56, 0x4A, 0x3E, 0x45, 0x48, 0x63,
- 0x4A, 0x47, 0x3E, 0xA7, 0x98, 0x9D, 0x9E, 0x8B,
- 0x95, 0x9B, 0x89, 0x86, 0x9B, 0x8B, 0x89, 0x84,
- 0x9A, 0xA1, 0x95, 0x9A, 0x8C, 0xA4, 0xFC, 0xFC,
- 0xFC, 0xFA, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x22, 0x23,
- 0x21, 0x23, 0x2C, 0xF6, 0xBF, 0xA9, 0xA2, 0x99,
- 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9B, 0x87, 0x8B,
- 0x9C, 0x86, 0x9C, 0x8A, 0x87, 0x87, 0x89, 0x51,
- 0x54, 0x47, 0x4B, 0x50, 0x4B, 0xCF, 0xD6, 0xDC,
- 0xD5, 0x60, 0x54, 0x52, 0x48, 0x45, 0x40, 0x5A,
- 0x45, 0x43, 0x47, 0xA7, 0x98, 0x9B, 0x95, 0x95,
- 0x9A, 0x87, 0x98, 0x98, 0x8A, 0x86, 0x87, 0x9E,
- 0x9B, 0x95, 0x9D, 0x9D, 0x99, 0x85, 0xA6, 0xFA,
- 0xF2, 0x21, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x22, 0x22,
- 0x21, 0x24, 0xFB, 0xF7, 0xBF, 0xA6, 0xA2, 0x99,
- 0x97, 0x89, 0x86, 0x89, 0x9C, 0x96, 0x9E, 0x94,
- 0x89, 0x99, 0x98, 0x89, 0x9E, 0x9B, 0x89, 0x8B,
- 0x58, 0x4B, 0x4A, 0x52, 0x48, 0xCC, 0xD3, 0xDA,
- 0xD3, 0x65, 0x4C, 0x58, 0x49, 0x3E, 0x2E, 0x4D,
- 0x40, 0x41, 0x45, 0xA9, 0xA1, 0x9B, 0x9E, 0x9C,
- 0x95, 0x8A, 0x94, 0x89, 0x96, 0x87, 0x9C, 0x9A,
- 0x84, 0x9D, 0x9C, 0x9E, 0x9A, 0x9C, 0x9D, 0xBB,
- 0x23, 0x23, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x23, 0x23,
- 0x24, 0xFC, 0xFC, 0xF6, 0xBF, 0xA6, 0x9F, 0x99,
- 0x89, 0x95, 0x87, 0x94, 0x9D, 0x9E, 0x97, 0x9E,
- 0x95, 0x9B, 0x89, 0x95, 0x95, 0x9B, 0x89, 0x87,
- 0x5D, 0x56, 0x3E, 0x51, 0x3E, 0x60, 0xCF, 0xD3,
- 0xD2, 0xCD, 0x5C, 0x49, 0x4B, 0x3E, 0x2C, 0x48,
- 0x3E, 0x43, 0x3E, 0xA9, 0xA1, 0x9B, 0x97, 0x94,
- 0x95, 0x9A, 0x9C, 0x87, 0x87, 0x9B, 0x9C, 0x95,
- 0x9D, 0x89, 0x9A, 0x89, 0x9E, 0x9E, 0x8C, 0xA6,
- 0x20, 0x23, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x21, 0x21, 0x20, 0x40,
- 0xFC, 0xFC, 0xFC, 0xEC, 0xBE, 0xA4, 0x9F, 0x99,
- 0x95, 0x9F, 0xA0, 0x88, 0x9D, 0x8B, 0x97, 0x95,
- 0x87, 0x95, 0x96, 0x95, 0x97, 0x94, 0x94, 0x98,
- 0xD3, 0x4C, 0x47, 0x4D, 0x42, 0x4C, 0x60, 0xCC,
- 0xCE, 0xD0, 0x65, 0x4B, 0x47, 0x44, 0x2B, 0x45,
- 0x4B, 0x47, 0x49, 0xA7, 0xA1, 0x9A, 0x97, 0x89,
- 0x95, 0x97, 0x97, 0x9E, 0x89, 0x95, 0x89, 0x9C,
- 0x87, 0x95, 0x97, 0x99, 0x95, 0x99, 0x9F, 0xA4,
- 0xC4, 0x21, 0x21, 0x23, 0x21, 0x23, 0x23, 0x23,
- 0x23, 0x23, 0x23, 0x23, 0x21, 0x20, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEA, 0xAA, 0xA6, 0xA2, 0x99,
- 0x8B, 0x9A, 0x95, 0x9E, 0x9E, 0x9A, 0x94, 0x87,
- 0x94, 0x94, 0x89, 0x94, 0x9B, 0x9B, 0xA7, 0xDC,
- 0xDB, 0x65, 0x2E, 0x3E, 0x43, 0x44, 0x49, 0x58,
- 0x63, 0xD3, 0xD3, 0x5E, 0x42, 0x42, 0x2D, 0x40,
- 0x54, 0x4C, 0x4A, 0xA7, 0xA0, 0x99, 0x9B, 0x94,
- 0xA0, 0x8A, 0x9B, 0x9D, 0x87, 0x95, 0x94, 0x8B,
- 0x8A, 0x98, 0x9C, 0x8A, 0x9B, 0x99, 0xA2, 0xA6,
- 0xBF, 0xEC, 0x2A, 0x20, 0x21, 0x23, 0x21, 0x20,
- 0x20, 0x20, 0x20, 0x4C, 0xF9, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEB, 0xAA, 0xA4, 0x9F, 0x9C,
- 0x8B, 0x9B, 0x88, 0x84, 0x9E, 0x9D, 0x96, 0x94,
- 0x94, 0x9A, 0x9B, 0x9B, 0xA4, 0xD5, 0xCD, 0xDE,
- 0xF1, 0xDA, 0x4C, 0x2D, 0x41, 0x2B, 0x42, 0x4C,
- 0x5E, 0xD4, 0xD7, 0xCD, 0x49, 0x2E, 0x2E, 0x41,
- 0x5E, 0x57, 0xA7, 0xA6, 0xA7, 0xA4, 0xA2, 0x98,
- 0x9D, 0x9C, 0xA1, 0x99, 0x9D, 0x88, 0x8B, 0x9C,
- 0x8A, 0x9C, 0x9C, 0x94, 0x9C, 0x89, 0xA0, 0xA6,
- 0xAA, 0xEB, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFB, 0xE9, 0xAA, 0xA6, 0xA2, 0x8B,
- 0x8B, 0x8A, 0x86, 0x9B, 0x9C, 0x98, 0xA0, 0x9B,
- 0x9B, 0x84, 0xA7, 0xB4, 0x61, 0xD1, 0xD2, 0xE0,
- 0xF1, 0xDC, 0x61, 0x2D, 0x2E, 0x3F, 0x56, 0x62,
- 0x5D, 0xD4, 0xD9, 0xD3, 0x54, 0x41, 0x41, 0x44,
- 0xCB, 0x60, 0x52, 0xA9, 0xA9, 0xA9, 0xA7, 0xA6,
- 0xA6, 0xA4, 0xA4, 0xA2, 0xA2, 0x9D, 0x95, 0x89,
- 0x9C, 0x8A, 0x9E, 0x9C, 0x8A, 0x9E, 0xA0, 0xA8,
- 0xC0, 0xE9, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xE9, 0xAA, 0xA6, 0xA0, 0x99,
- 0x9C, 0x8B, 0x9A, 0x84, 0x9B, 0x9B, 0x98, 0x98,
- 0xA9, 0xB9, 0x49, 0x57, 0xCB, 0xD4, 0xD3, 0xF1,
- 0xD8, 0xDA, 0xCE, 0x3F, 0x41, 0x4B, 0x5D, 0xCB,
- 0x5E, 0xD6, 0xDB, 0xD6, 0x5D, 0x43, 0x3F, 0x49,
- 0xD1, 0xCC, 0x4F, 0xDD, 0xC3, 0xBB, 0xBF, 0xAA,
- 0xAA, 0xA9, 0xAA, 0xA8, 0xA8, 0xA6, 0xA6, 0xA2,
- 0x9C, 0x9F, 0x9B, 0x9A, 0x9D, 0xA2, 0xA8, 0xAA,
- 0xC1, 0xEA, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEA, 0xC0, 0xAA, 0xA6, 0xA2,
- 0xA2, 0x99, 0xA0, 0xA0, 0xA4, 0xA7, 0xA9, 0xC0,
- 0x67, 0x49, 0x54, 0x60, 0xD0, 0xD4, 0xCC, 0xDF,
- 0xD9, 0xD5, 0xD2, 0x3E, 0x47, 0x56, 0x60, 0xCD,
- 0x5D, 0xD9, 0xD9, 0xD6, 0x61, 0x3F, 0x47, 0x52,
- 0xD6, 0xD3, 0x62, 0x4D, 0x40, 0x4A, 0x57, 0xCA,
- 0xC3, 0xC1, 0xC1, 0xC0, 0xBF, 0xBF, 0xAA, 0xAA,
- 0xA6, 0xA4, 0xA4, 0xA4, 0xA6, 0xA8, 0xBE, 0xC1,
- 0xC9, 0xEB, 0xFB, 0xFB, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEB, 0xC3, 0xC0, 0xAA, 0xA8,
- 0xA6, 0xA6, 0xA6, 0xA9, 0xAA, 0xC0, 0xE8, 0xD0,
- 0xD2, 0x4C, 0x5E, 0x64, 0xD0, 0xD1, 0x5F, 0xD9,
- 0xD5, 0xD1, 0xD0, 0x48, 0x52, 0x5C, 0x64, 0xCD,
- 0x5C, 0xDC, 0xD7, 0xD5, 0x62, 0x3F, 0x4C, 0x53,
- 0xDA, 0xD7, 0xCE, 0x56, 0x40, 0x4B, 0x52, 0x56,
- 0xCE, 0xDF, 0x6A, 0xEB, 0xE9, 0xC9, 0xC3, 0xC0,
- 0xC0, 0xBF, 0xBE, 0xAA, 0xBF, 0xC0, 0xC3, 0xC9,
- 0xEA, 0xF6, 0xEE, 0x58, 0x57, 0x5E, 0xD6, 0xD0,
- 0xD2, 0x61, 0xCB, 0xD6, 0xD6, 0xD4, 0xDF, 0xF3,
- 0xF2, 0xDD, 0xD7, 0xEB, 0xC9, 0xC1, 0xC0, 0xBF,
- 0xAA, 0xAA, 0xAA, 0xBE, 0xC3, 0xF0, 0xD2, 0xD2,
- 0xD2, 0x51, 0x62, 0xCC, 0xD0, 0xCC, 0x61, 0xD3,
- 0xCF, 0xCE, 0xD2, 0x48, 0x5A, 0x61, 0xCC, 0xCE,
- 0x5F, 0xD9, 0xD5, 0xD1, 0x63, 0x44, 0x56, 0x56,
- 0xDC, 0xD9, 0xD4, 0x5E, 0x42, 0x4A, 0x4C, 0x57,
- 0x5D, 0xD8, 0xE0, 0xD8, 0xDC, 0xCB, 0x66, 0xEC,
- 0xE8, 0xC3, 0xC3, 0xC3, 0xC3, 0xC9, 0xE8, 0xEA,
- 0xF6, 0x50, 0x3E, 0x58, 0x57, 0x5A, 0xD6, 0xD4,
- 0xCC, 0x4B, 0x53, 0x5C, 0x64, 0xD1, 0xDF, 0xF3,
- 0xF1, 0xDE, 0xD9, 0xF6, 0xEB, 0xC9, 0xC1, 0xC1,
- 0xC0, 0xC0, 0xC1, 0xC9, 0xF0, 0xD6, 0xCD, 0xD6,
- 0xD3, 0x53, 0xCB, 0xCF, 0xCD, 0x5F, 0x5F, 0xCE,
- 0xCF, 0xCD, 0xD0, 0x47, 0x5F, 0xCB, 0xCE, 0xCD,
- 0x63, 0xD6, 0xD3, 0xD1, 0x63, 0x3F, 0x58, 0x58,
- 0xDB, 0xDC, 0xDA, 0x65, 0x3E, 0x49, 0x49, 0x4D,
- 0x49, 0xDC, 0xDF, 0xE0, 0xDE, 0xD5, 0x47, 0x47,
- 0x46, 0x6B, 0xEB, 0xEA, 0xE9, 0xEA, 0xEB, 0xF6,
- 0xD0, 0x57, 0x57, 0x47, 0x47, 0x5B, 0xD4, 0xD4,
- 0xCD, 0x44, 0x3E, 0x4B, 0x50, 0x4B, 0x51, 0xD5,
- 0xDB, 0xD8, 0xDE, 0x4B, 0xF6, 0xF6, 0xEA, 0xE9,
- 0xE8, 0xEA, 0xEB, 0x67, 0x5E, 0xCC, 0xD6, 0xDC,
- 0xD5, 0x58, 0xCE, 0xCE, 0x62, 0x50, 0xCC, 0xD3,
- 0xD2, 0xCD, 0xCD, 0x4B, 0x64, 0xCE, 0xCE, 0x64,
- 0xCC, 0xD3, 0xD2, 0xD2, 0x61, 0x47, 0x5D, 0x5C,
- 0xDD, 0xDD, 0xD9, 0xD1, 0x4C, 0x47, 0x49, 0x4A,
- 0x4B, 0xD1, 0xD8, 0xE0, 0xDF, 0xDD, 0x5D, 0x4A,
- 0x48, 0x52, 0x51, 0x3F, 0xF6, 0xEC, 0xE0, 0xE0,
- 0xD3, 0x5E, 0x5F, 0x50, 0x4B, 0x50, 0xCB, 0xCE,
- 0x64, 0x45, 0x4C, 0x57, 0x57, 0x58, 0x52, 0xD6,
- 0xD3, 0xDE, 0xDF, 0xD1, 0x3E, 0x4B, 0xF6, 0xF6,
- 0xEC, 0x66, 0x53, 0x43, 0x56, 0xD1, 0xD9, 0xDE,
- 0xD4, 0x5E, 0xCE, 0xCC, 0x5B, 0x2C, 0xD4, 0xD5,
- 0xD2, 0xD0, 0x63, 0x5D, 0xCD, 0xD0, 0xCD, 0x5E,
- 0xD0, 0xCF, 0xCE, 0xD2, 0x5E, 0x50, 0x60, 0x5D,
- 0xDE, 0xDD, 0xDC, 0xD7, 0x5D, 0x45, 0x47, 0x3E,
- 0x4B, 0x5E, 0xDE, 0xDF, 0xE0, 0xD8, 0xCF, 0x3E,
- 0x45, 0x51, 0x58, 0x42, 0xCB, 0xDA, 0xDE, 0xD8,
- 0xD2, 0x61, 0xCC, 0xCF, 0xD6, 0xDA, 0xDA, 0xD5,
- 0xD0, 0x50, 0x44, 0x57, 0x57, 0x58, 0x45, 0xD1,
- 0xD1, 0xD7, 0xDF, 0xDF, 0xD7, 0xCF, 0x64, 0x60,
- 0xCE, 0xCE, 0xCE, 0x63, 0xCF, 0xDA, 0xDE, 0xD9,
- 0xCF, 0x63, 0xCD, 0x63, 0x4D, 0x4B, 0xD6, 0xD5,
- 0xCE, 0xD3, 0x60, 0xCB, 0xD0, 0xD0, 0x65, 0x47,
- 0xD0, 0xCC, 0xCC, 0xD1, 0x59, 0x5D, 0x63, 0x5E,
- 0xDD, 0xDD, 0xDE, 0xDC, 0xCB, 0x40, 0x48, 0x45,
- 0x3E, 0x3E, 0xD9, 0xDF, 0xE0, 0xDF, 0xDA, 0x51,
- 0x4C, 0x48, 0x56, 0x4C, 0x5B, 0xD2, 0xDA, 0xDB,
- 0xCB, 0x5F, 0xD0, 0xCC, 0xDC, 0xF0, 0xF3, 0xE0,
- 0xDD, 0xCC, 0x41, 0x50, 0x57, 0x57, 0x4B, 0x5D,
- 0xD3, 0xD1, 0xDE, 0xDF, 0xDE, 0xD7, 0xD0, 0xD0,
- 0xD5, 0xD6, 0xD6, 0xCE, 0xD7, 0xDC, 0xDA, 0xD5,
- 0x60, 0x63, 0x64, 0x5E, 0x47, 0x61, 0xD5, 0xD2,
- 0xCF, 0xD0, 0x59, 0xCD, 0xD1, 0xCF, 0x61, 0x4D,
- 0xCC, 0xCE, 0xCD, 0xD0, 0x52, 0x61, 0x64, 0x60,
- 0xDA, 0xDE, 0xDE, 0xDD, 0xD1, 0x4B, 0x4A, 0x45,
- 0x3E, 0x41, 0xCD, 0xDE, 0xE0, 0xF1, 0xDE, 0x63,
- 0x4A, 0x4A, 0x4A, 0x4B, 0x50, 0xCB, 0xD4, 0xD7,
- 0x5E, 0x54, 0x62, 0xD3, 0xD4, 0xF0, 0xF3, 0xF3,
- 0xF2, 0xDE, 0x61, 0x40, 0x49, 0x56, 0x4D, 0x3E,
- 0x4B, 0xCE, 0xD9, 0xD8, 0xD9, 0xD5, 0xCF, 0xD2,
- 0xD6, 0xD6, 0xD1, 0xD1, 0xD7, 0xD5, 0xCF, 0xD0,
- 0x54, 0x64, 0x63, 0x56, 0x2C, 0xCB, 0xD1, 0xCC,
- 0xD3, 0xCD, 0x54, 0xCF, 0xD1, 0xCE, 0x5E, 0x5C,
- 0xCE, 0xCE, 0xCE, 0xCB, 0x4B, 0x63, 0xCC, 0x61,
- 0xD4, 0xDC, 0xDE, 0xDE, 0xDA, 0x5D, 0x45, 0x45,
- 0x48, 0x3F, 0x52, 0xD9, 0xD8, 0xDF, 0xDF, 0xD2,
- 0x52, 0x4B, 0x3E, 0x2E, 0x47, 0x60, 0xCF, 0xD3,
- 0x59, 0x48, 0x50, 0x5E, 0xCC, 0xDE, 0xF2, 0xF2,
- 0xF3, 0xF3, 0xDD, 0x5D, 0x3E, 0x48, 0x47, 0x47,
- 0x58, 0xD1, 0xDA, 0xDA, 0xD5, 0xD1, 0xCD, 0xD2,
- 0xD3, 0xCF, 0xD3, 0xD1, 0xCD, 0xD3, 0xD2, 0x5E,
- 0x52, 0x64, 0x60, 0x4B, 0x45, 0x61, 0xCD, 0xD3,
- 0xD3, 0x64, 0x61, 0xD0, 0xD0, 0x64, 0x45, 0x63,
- 0xD0, 0xCE, 0xD0, 0x60, 0x56, 0xCB, 0xCC, 0x62,
- 0xCE, 0xDA, 0xDE, 0xD8, 0xDD, 0xCC, 0x45, 0x49,
- 0x3E, 0x47, 0x42, 0xD1, 0xDC, 0xD8, 0xD8, 0xD3,
- 0x5D, 0x4C, 0x49, 0x3F, 0x47, 0x59, 0xCD, 0xCF,
- 0x59, 0x2E, 0x48, 0x47, 0x52, 0x63, 0xF0, 0xF2,
- 0xF3, 0xF3, 0xF2, 0xDA, 0x52, 0x4B, 0x52, 0x58,
- 0x5E, 0x63, 0xD0, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE,
- 0xCF, 0x65, 0x61, 0xD6, 0xD6, 0xD6, 0xCB, 0x4B,
- 0x61, 0x62, 0x5D, 0x43, 0x4B, 0x61, 0xD0, 0xD4,
- 0xD1, 0x61, 0xCE, 0xD2, 0xCD, 0x5E, 0x4A, 0xCE,
- 0xD0, 0xCC, 0xD0, 0x59, 0x61, 0xCC, 0xCC, 0x62,
- 0xD1, 0xD5, 0xDE, 0xD8, 0xDD, 0xCF, 0x4B, 0x4A,
- 0x45, 0x3E, 0x2D, 0xCB, 0xDC, 0xDE, 0xD8, 0xD5,
- 0x60, 0x54, 0x51, 0x4C, 0x4D, 0x5C, 0xCC, 0xCE,
- 0x5A, 0x2C, 0x50, 0x53, 0x3E, 0x59, 0xD8, 0xF3,
- 0xF2, 0xF3, 0xF3, 0xE0, 0x5E, 0x4A, 0x4C, 0x53,
- 0x5E, 0x63, 0xCC, 0xCC, 0xCC, 0xCD, 0xCF, 0xD3,
- 0x62, 0x53, 0xD6, 0xD6, 0xD6, 0xD6, 0x5B, 0x48,
- 0x64, 0x63, 0x59, 0x44, 0x57, 0x63, 0xD2, 0xD3,
- 0xD0, 0x5E, 0xD0, 0xD1, 0xCB, 0x58, 0x4C, 0xCF,
- 0xCF, 0xCE, 0xCE, 0x57, 0x63, 0xCC, 0xCD, 0x57,
+ 0x53, 0x3D, 0x40, 0x73, 0x71, 0x3B, 0x3B, 0x71,
+ 0x3D, 0x54, 0x73, 0x40, 0x73, 0x3D, 0x27, 0x71,
+ 0x40, 0x6A, 0x7A, 0x3D, 0x3B, 0x30, 0x30, 0x62,
+ 0x40, 0x6A, 0x21, 0x62, 0x78, 0x29, 0x49, 0x30,
+ 0x6F, 0x27, 0x54, 0x3D, 0x62, 0x27, 0x54, 0x66,
+ 0x71, 0x6F, 0x6F, 0x6F, 0x78, 0x53, 0x29, 0x29,
+ 0x53, 0x70, 0x53, 0x3D, 0x40, 0x73, 0x71, 0x3B,
+ 0x3B, 0x71, 0x3D, 0x54, 0x73, 0x40, 0x73, 0x3D,
+ 0x27, 0x71, 0x40, 0x6A, 0x7A, 0x3D, 0x3B, 0x30,
+ 0x30, 0x62, 0x40, 0x6A, 0x21, 0x62, 0x78, 0x29,
+ 0x71, 0x4C, 0x6A, 0x40, 0x71, 0x62, 0x27, 0x71,
+ 0x54, 0x66, 0x73, 0x40, 0x73, 0x3D, 0x3D, 0x40,
+ 0x6A, 0x77, 0x7A, 0x71, 0x30, 0x69, 0x6F, 0x71,
+ 0x54, 0x73, 0x3D, 0x30, 0x49, 0x30, 0x3B, 0x62,
+ 0x27, 0x3D, 0x54, 0x3D, 0x71, 0x71, 0x27, 0x62,
+ 0x62, 0x3B, 0x62, 0x27, 0x3B, 0x69, 0x69, 0x69,
+ 0x69, 0x30, 0x71, 0x4C, 0x6A, 0x40, 0x71, 0x62,
+ 0x27, 0x71, 0x54, 0x66, 0x73, 0x40, 0x73, 0x3D,
+ 0x3D, 0x40, 0x6A, 0x77, 0x7A, 0x71, 0x30, 0x69,
+ 0x6F, 0x71, 0x54, 0x73, 0x3D, 0x30, 0x49, 0x30,
+ 0x40, 0x34, 0x34, 0x40, 0x27, 0x6F, 0x62, 0x3D,
+ 0x54, 0x66, 0x40, 0x73, 0x66, 0x66, 0x2D, 0x5D,
+ 0x7A, 0x5D, 0x3D, 0x6F, 0x69, 0x69, 0x30, 0x27,
+ 0x27, 0x27, 0x62, 0x6F, 0x30, 0x3B, 0x62, 0x27,
+ 0x3D, 0x54, 0x2D, 0x54, 0x27, 0x71, 0x3D, 0x27,
+ 0x62, 0x62, 0x62, 0x62, 0x3B, 0x30, 0x6F, 0x6F,
+ 0x6F, 0x71, 0x40, 0x34, 0x34, 0x40, 0x27, 0x6F,
+ 0x62, 0x3D, 0x54, 0x66, 0x40, 0x73, 0x66, 0x66,
+ 0x2D, 0x5D, 0x7A, 0x5D, 0x3D, 0x6F, 0x69, 0x69,
+ 0x30, 0x27, 0x27, 0x27, 0x62, 0x6F, 0x30, 0x6F,
+ 0x4C, 0x77, 0x6A, 0x2D, 0x3B, 0x6F, 0x3B, 0x71,
+ 0x54, 0x66, 0x2D, 0x73, 0x66, 0x54, 0x73, 0x73,
+ 0x73, 0x3D, 0x62, 0x6F, 0x69, 0x30, 0x6F, 0x27,
+ 0x3D, 0x3D, 0x27, 0x62, 0x62, 0x62, 0x27, 0x71,
+ 0x54, 0x73, 0x73, 0x54, 0x3D, 0x3D, 0x20, 0x20,
+ 0x20, 0x20, 0x3B, 0x62, 0x3B, 0x62, 0x71, 0x71,
+ 0x3D, 0x2D, 0x4C, 0x77, 0x6A, 0x66, 0x3B, 0x6F,
+ 0x3B, 0x71, 0x54, 0x66, 0x2D, 0x73, 0x66, 0x54,
+ 0x73, 0x73, 0x73, 0x3D, 0x62, 0x6F, 0x69, 0x30,
+ 0x6F, 0x27, 0x3D, 0x3D, 0x27, 0x62, 0x62, 0x27,
+ 0x4C, 0x4C, 0x5D, 0x71, 0x30, 0x30, 0x3B, 0x27,
+ 0x54, 0x66, 0x73, 0x66, 0x66, 0x54, 0x54, 0x3D,
+ 0x27, 0x62, 0x6F, 0x30, 0x30, 0x6F, 0x27, 0x3D,
+ 0x54, 0x54, 0x3D, 0x71, 0x3D, 0x71, 0x3D, 0x3D,
+ 0x66, 0x73, 0x66, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x71, 0x3D,
+ 0x66, 0x40, 0x4C, 0x4C, 0x5D, 0x71, 0x30, 0x30,
+ 0x3B, 0x27, 0x54, 0x66, 0x73, 0x66, 0x66, 0x54,
+ 0x54, 0x3D, 0x27, 0x62, 0x6F, 0x30, 0x30, 0x6F,
+ 0x27, 0x3D, 0x54, 0x54, 0x3D, 0x71, 0x71, 0x71,
+ 0x5D, 0x5D, 0x54, 0x62, 0x69, 0x69, 0x3B, 0x3D,
+ 0x66, 0x40, 0x73, 0x66, 0x54, 0x54, 0x71, 0x62,
+ 0x3B, 0x6F, 0x6F, 0x6F, 0x3B, 0x27, 0x3D, 0x2D,
+ 0x66, 0x54, 0x71, 0x71, 0x27, 0x71, 0x71, 0x3D,
+ 0x3D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54,
+ 0x73, 0x40, 0x5D, 0x5D, 0x54, 0x62, 0x69, 0x69,
+ 0x3B, 0x3D, 0x66, 0x40, 0x73, 0x66, 0x54, 0x54,
+ 0x71, 0x62, 0x3B, 0x6F, 0x6F, 0x6F, 0x3B, 0x27,
+ 0x3D, 0x66, 0x66, 0x54, 0x71, 0x71, 0x27, 0x71,
+ 0x66, 0x73, 0x3D, 0x27, 0x6F, 0x6F, 0x62, 0x54,
+ 0x40, 0x21, 0x5D, 0x73, 0x3D, 0x27, 0x62, 0x6F,
+ 0x6F, 0x3B, 0x3B, 0x62, 0x27, 0x71, 0x3D, 0x3D,
+ 0x3D, 0x71, 0x62, 0x62, 0x62, 0x27, 0x27, 0x71,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x4F, 0x46, 0x2A, 0x20, 0x20,
+ 0x20, 0x73, 0x66, 0x73, 0x3D, 0x27, 0x6F, 0x6F,
+ 0x62, 0x54, 0x40, 0x21, 0x5D, 0x73, 0x3D, 0x27,
+ 0x62, 0x6F, 0x6F, 0x3B, 0x3B, 0x62, 0x27, 0x71,
+ 0x3D, 0x3D, 0x3D, 0x71, 0x62, 0x27, 0x62, 0x27,
+ 0x3D, 0x40, 0x66, 0x27, 0x3B, 0x3B, 0x71, 0x66,
+ 0x7A, 0x21, 0x40, 0x54, 0x27, 0x3B, 0x6F, 0x3B,
+ 0x62, 0x62, 0x27, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x38, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x38,
+ 0x38, 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x6F, 0x3B, 0x62, 0x62, 0x27, 0x27, 0x27, 0x27,
+ 0x71, 0x3D, 0x71, 0x71, 0x71, 0x71, 0x3D, 0x3D,
+ 0x27, 0x40, 0x54, 0x62, 0x30, 0x30, 0x27, 0x40,
+ 0x7A, 0x5D, 0x54, 0x3D, 0x62, 0x30, 0x30, 0x3B,
+ 0x71, 0x3D, 0x71, 0x38, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x6D, 0x6D, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x30, 0x3B, 0x71, 0x3D, 0x71, 0x27, 0x71, 0x71,
+ 0x3D, 0x66, 0x73, 0x40, 0x73, 0x66, 0x2D, 0x66,
+ 0x30, 0x66, 0x71, 0x6F, 0x69, 0x6F, 0x54, 0x21,
+ 0x7A, 0x66, 0x3D, 0x3B, 0x6F, 0x6F, 0x3B, 0x71,
+ 0x54, 0x66, 0x3D, 0x4C, 0x44, 0x51, 0x44, 0x44,
+ 0x44, 0x38, 0x44, 0x38, 0x44, 0x38, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x38, 0x51,
+ 0x3B, 0x71, 0x54, 0x66, 0x3D, 0x3D, 0x3D, 0x2D,
+ 0x40, 0x40, 0x5D, 0x40, 0x73, 0x66, 0x66, 0x3D,
+ 0x69, 0x27, 0x3B, 0x30, 0x69, 0x3B, 0x73, 0x7A,
+ 0x21, 0x3D, 0x62, 0x3B, 0x6F, 0x3B, 0x27, 0x66,
+ 0x73, 0x73, 0x54, 0x4E, 0x44, 0x26, 0x26, 0x5B,
+ 0x26, 0x44, 0x44, 0x44, 0x44, 0x44, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x38, 0x38, 0x38, 0x38, 0x38,
+ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x6D, 0x26,
+ 0x27, 0x66, 0x73, 0x73, 0x66, 0x2D, 0x66, 0x2D,
+ 0x66, 0x54, 0x54, 0x71, 0x27, 0x27, 0x27, 0x62,
+ 0x69, 0x3B, 0x6F, 0x6F, 0x62, 0x54, 0x40, 0x21,
+ 0x73, 0x27, 0x3B, 0x3B, 0x71, 0x54, 0x66, 0x66,
+ 0x73, 0x73, 0x2D, 0x37, 0x44, 0x51, 0x38, 0x38,
+ 0x44, 0x6D, 0x38, 0x6D, 0x38, 0x38, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x38, 0x6D, 0x38, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x38, 0x6D, 0x70,
+ 0x2D, 0x66, 0x73, 0x66, 0x66, 0x54, 0x54, 0x54,
+ 0x27, 0x62, 0x6F, 0x6F, 0x6F, 0x6F, 0x3B, 0x62,
+ 0x3B, 0x27, 0x27, 0x27, 0x3D, 0x40, 0x21, 0x40,
+ 0x54, 0x62, 0x3B, 0x71, 0x73, 0x5D, 0x40, 0x73,
+ 0x66, 0x66, 0x2D, 0x33, 0x6D, 0x26, 0x44, 0x4F,
+ 0x5E, 0x5E, 0x37, 0x5E, 0x37, 0x46, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x44, 0x26, 0x26, 0x44,
+ 0x70, 0x38, 0x26, 0x38, 0x38, 0x44, 0x6D, 0x53,
+ 0x40, 0x73, 0x66, 0x2D, 0x66, 0x73, 0x66, 0x54,
+ 0x27, 0x6F, 0x30, 0x69, 0x30, 0x6F, 0x62, 0x62,
+ 0x62, 0x71, 0x3D, 0x54, 0x73, 0x5D, 0x5D, 0x66,
+ 0x27, 0x62, 0x71, 0x54, 0x5D, 0x5D, 0x66, 0x3D,
+ 0x3D, 0x73, 0x40, 0x37, 0x44, 0x44, 0x51, 0x20,
+ 0x6F, 0x6F, 0x62, 0x27, 0x27, 0x20, 0x20, 0x20,
+ 0x4F, 0x20, 0x2A, 0x2A, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x71, 0x3D, 0x73, 0x5D,
+ 0x40, 0x54, 0x27, 0x3B, 0x2D, 0x6D, 0x38, 0x3C,
+ 0x66, 0x3D, 0x54, 0x66, 0x40, 0x40, 0x73, 0x54,
+ 0x62, 0x6F, 0x30, 0x6F, 0x62, 0x71, 0x71, 0x71,
+ 0x62, 0x3D, 0x66, 0x73, 0x40, 0x5D, 0x73, 0x71,
+ 0x62, 0x27, 0x54, 0x73, 0x5D, 0x73, 0x27, 0x62,
+ 0x71, 0x40, 0x21, 0x37, 0x26, 0x51, 0x44, 0x4E,
+ 0x3B, 0x71, 0x2D, 0x73, 0x2D, 0x20, 0x20, 0x20,
+ 0x35, 0x73, 0x77, 0x4F, 0x6B, 0x20, 0x20, 0x4F,
+ 0x20, 0x73, 0x73, 0x73, 0x58, 0x20, 0x77, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x2D, 0x40, 0x40, 0x5D,
+ 0x73, 0x71, 0x62, 0x27, 0x71, 0x38, 0x44, 0x49,
+ 0x27, 0x62, 0x3D, 0x40, 0x21, 0x40, 0x54, 0x27,
+ 0x3B, 0x6F, 0x3B, 0x71, 0x54, 0x66, 0x66, 0x3D,
+ 0x62, 0x54, 0x40, 0x21, 0x7A, 0x40, 0x3D, 0x62,
+ 0x62, 0x71, 0x66, 0x40, 0x66, 0x71, 0x62, 0x3B,
+ 0x54, 0x5D, 0x73, 0x23, 0x51, 0x26, 0x26, 0x30,
+ 0x3B, 0x3D, 0x66, 0x73, 0x66, 0x20, 0x20, 0x4F,
+ 0x58, 0x7C, 0x62, 0x34, 0x57, 0x20, 0x20, 0x20,
+ 0x73, 0x58, 0x49, 0x7C, 0x79, 0x73, 0x20, 0x4F,
+ 0x20, 0x20, 0x20, 0x20, 0x40, 0x21, 0x7A, 0x40,
+ 0x3D, 0x27, 0x62, 0x71, 0x49, 0x44, 0x6D, 0x78,
+ 0x62, 0x3B, 0x3D, 0x5D, 0x40, 0x3D, 0x3B, 0x69,
+ 0x49, 0x49, 0x3B, 0x71, 0x66, 0x73, 0x66, 0x54,
+ 0x27, 0x66, 0x5D, 0x7A, 0x21, 0x73, 0x71, 0x62,
+ 0x27, 0x54, 0x73, 0x66, 0x3D, 0x27, 0x62, 0x62,
+ 0x54, 0x73, 0x71, 0x37, 0x26, 0x5B, 0x44, 0x5B,
+ 0x27, 0x54, 0x40, 0x2D, 0x54, 0x20, 0x20, 0x77,
+ 0x78, 0x6D, 0x6D, 0x6D, 0x20, 0x20, 0x20, 0x20,
+ 0x79, 0x38, 0x38, 0x6D, 0x6D, 0x69, 0x2D, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7A, 0x7A, 0x40,
+ 0x71, 0x62, 0x27, 0x54, 0x79, 0x26, 0x38, 0x49,
+ 0x3B, 0x27, 0x54, 0x2D, 0x71, 0x6F, 0x49, 0x53,
+ 0x78, 0x30, 0x27, 0x54, 0x40, 0x73, 0x54, 0x3D,
+ 0x71, 0x66, 0x5D, 0x7A, 0x21, 0x66, 0x27, 0x3B,
+ 0x27, 0x66, 0x73, 0x54, 0x27, 0x27, 0x27, 0x3D,
+ 0x3D, 0x71, 0x6F, 0x5E, 0x26, 0x79, 0x26, 0x78,
+ 0x5D, 0x4C, 0x4C, 0x21, 0x73, 0x20, 0x20, 0x2D,
+ 0x35, 0x5C, 0x46, 0x38, 0x77, 0x20, 0x4F, 0x20,
+ 0x51, 0x6D, 0x20, 0x2D, 0x20, 0x6D, 0x6D, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7A, 0x21, 0x54,
+ 0x62, 0x3B, 0x27, 0x2D, 0x29, 0x26, 0x44, 0x70,
+ 0x27, 0x3D, 0x3D, 0x71, 0x6F, 0x78, 0x53, 0x29,
+ 0x69, 0x3D, 0x21, 0x4C, 0x4C, 0x5D, 0x66, 0x54,
+ 0x54, 0x73, 0x21, 0x6A, 0x21, 0x3D, 0x3B, 0x3B,
+ 0x71, 0x66, 0x66, 0x3D, 0x27, 0x27, 0x71, 0x3D,
+ 0x27, 0x6F, 0x49, 0x7E, 0x61, 0x5B, 0x44, 0x26,
+ 0x34, 0x34, 0x6A, 0x21, 0x73, 0x66, 0x20, 0x32,
+ 0x20, 0x20, 0x2D, 0x6D, 0x77, 0x2A, 0x37, 0x20,
+ 0x6D, 0x20, 0x20, 0x20, 0x7E, 0x38, 0x38, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x4C, 0x21, 0x3D,
+ 0x3B, 0x3B, 0x71, 0x73, 0x69, 0x44, 0x38, 0x71,
+ 0x27, 0x3D, 0x71, 0x3B, 0x49, 0x29, 0x29, 0x6F,
+ 0x54, 0x7A, 0x34, 0x77, 0x6A, 0x21, 0x66, 0x66,
+ 0x4C, 0x7A, 0x21, 0x4C, 0x21, 0x71, 0x3B, 0x3B,
+ 0x54, 0x73, 0x3D, 0x62, 0x3B, 0x62, 0x62, 0x62,
+ 0x62, 0x69, 0x29, 0x2B, 0x79, 0x79, 0x26, 0x38,
+ 0x47, 0x6A, 0x5D, 0x54, 0x27, 0x3D, 0x20, 0x29,
+ 0x57, 0x20, 0x2D, 0x61, 0x37, 0x5C, 0x20, 0x20,
+ 0x29, 0x20, 0x20, 0x20, 0x20, 0x29, 0x6D, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x6A, 0x21, 0x3D,
+ 0x3B, 0x3B, 0x54, 0x66, 0x78, 0x26, 0x26, 0x30,
+ 0x62, 0x62, 0x3B, 0x69, 0x78, 0x78, 0x6F, 0x66,
+ 0x6A, 0x64, 0x47, 0x4C, 0x5D, 0x54, 0x71, 0x71,
+ 0x4C, 0x5D, 0x5D, 0x21, 0x5D, 0x71, 0x3B, 0x62,
+ 0x54, 0x66, 0x27, 0x3B, 0x6F, 0x6F, 0x3B, 0x3B,
+ 0x6F, 0x49, 0x78, 0x23, 0x4A, 0x79, 0x4A, 0x6D,
+ 0x34, 0x21, 0x66, 0x3D, 0x62, 0x27, 0x20, 0x20,
+ 0x38, 0x20, 0x20, 0x52, 0x3A, 0x52, 0x63, 0x36,
+ 0x48, 0x4D, 0x20, 0x20, 0x20, 0x6D, 0x38, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x5D, 0x3D,
+ 0x3B, 0x62, 0x2D, 0x66, 0x79, 0x26, 0x51, 0x54,
+ 0x3B, 0x62, 0x6F, 0x49, 0x78, 0x30, 0x66, 0x34,
+ 0x2B, 0x2B, 0x34, 0x21, 0x66, 0x71, 0x62, 0x62,
+ 0x3D, 0x3D, 0x54, 0x5D, 0x40, 0x71, 0x3B, 0x3B,
+ 0x54, 0x54, 0x3B, 0x69, 0x30, 0x6F, 0x3B, 0x27,
+ 0x6F, 0x78, 0x78, 0x46, 0x26, 0x5B, 0x4A, 0x51,
+ 0x5D, 0x54, 0x71, 0x62, 0x3B, 0x3B, 0x20, 0x20,
+ 0x6D, 0x20, 0x72, 0x55, 0x3A, 0x74, 0x41, 0x39,
+ 0x45, 0x5A, 0x24, 0x2F, 0x6D, 0x38, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x5D, 0x40, 0x27,
+ 0x3B, 0x62, 0x3D, 0x54, 0x30, 0x5B, 0x26, 0x27,
+ 0x3B, 0x62, 0x6F, 0x78, 0x78, 0x3B, 0x21, 0x64,
+ 0x7B, 0x77, 0x5D, 0x54, 0x71, 0x62, 0x62, 0x3B,
+ 0x53, 0x62, 0x71, 0x73, 0x73, 0x27, 0x6F, 0x3B,
+ 0x3D, 0x3D, 0x3B, 0x49, 0x30, 0x62, 0x27, 0x27,
+ 0x6F, 0x78, 0x49, 0x46, 0x79, 0x53, 0x4A, 0x38,
+ 0x2D, 0x71, 0x62, 0x6F, 0x6F, 0x6F, 0x20, 0x20,
+ 0x20, 0x24, 0x52, 0x3A, 0x22, 0x41, 0x5A, 0x45,
+ 0x45, 0x63, 0x41, 0x22, 0x36, 0x28, 0x4D, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x73, 0x27,
+ 0x6F, 0x3B, 0x3D, 0x3D, 0x49, 0x51, 0x61, 0x69,
+ 0x27, 0x27, 0x30, 0x78, 0x69, 0x71, 0x4C, 0x64,
+ 0x34, 0x5D, 0x66, 0x71, 0x62, 0x6F, 0x6F, 0x6F,
+ 0x79, 0x27, 0x66, 0x73, 0x66, 0x62, 0x6F, 0x6F,
+ 0x3D, 0x3D, 0x3B, 0x30, 0x30, 0x62, 0x3D, 0x71,
+ 0x6F, 0x69, 0x6F, 0x23, 0x5B, 0x4A, 0x4A, 0x38,
+ 0x66, 0x3D, 0x3B, 0x6F, 0x6F, 0x3B, 0x20, 0x4D,
+ 0x43, 0x48, 0x39, 0x55, 0x22, 0x22, 0x41, 0x45,
+ 0x45, 0x45, 0x45, 0x41, 0x22, 0x45, 0x5A, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x2D, 0x62,
+ 0x30, 0x3B, 0x3D, 0x3D, 0x27, 0x26, 0x61, 0x27,
+ 0x3D, 0x27, 0x6F, 0x69, 0x6F, 0x54, 0x4C, 0x34,
+ 0x7A, 0x40, 0x66, 0x54, 0x62, 0x30, 0x6F, 0x3B,
+ 0x53, 0x7A, 0x7A, 0x73, 0x54, 0x62, 0x30, 0x3B,
+ 0x3D, 0x3D, 0x62, 0x30, 0x30, 0x3B, 0x71, 0x62,
+ 0x30, 0x30, 0x27, 0x7E, 0x70, 0x70, 0x3C, 0x6D,
+ 0x21, 0x66, 0x3B, 0x69, 0x3B, 0x71, 0x20, 0x72,
+ 0x24, 0x67, 0x22, 0x22, 0x36, 0x36, 0x45, 0x45,
+ 0x45, 0x22, 0x41, 0x41, 0x3F, 0x42, 0x52, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x54, 0x62,
+ 0x30, 0x3B, 0x3D, 0x54, 0x62, 0x26, 0x79, 0x3B,
+ 0x71, 0x27, 0x30, 0x30, 0x27, 0x5D, 0x4C, 0x6A,
+ 0x7A, 0x7A, 0x5D, 0x54, 0x3B, 0x30, 0x6F, 0x71,
+ 0x27, 0x64, 0x77, 0x40, 0x71, 0x62, 0x3B, 0x62,
+ 0x3D, 0x54, 0x27, 0x3B, 0x6F, 0x3B, 0x27, 0x27,
+ 0x62, 0x3B, 0x3D, 0x23, 0x26, 0x5B, 0x3C, 0x38,
+ 0x5D, 0x71, 0x69, 0x69, 0x62, 0x54, 0x20, 0x50,
+ 0x5F, 0x48, 0x3A, 0x55, 0x41, 0x63, 0x70, 0x22,
+ 0x22, 0x45, 0x3F, 0x42, 0x48, 0x48, 0x45, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x71, 0x62,
+ 0x3B, 0x62, 0x3D, 0x54, 0x30, 0x26, 0x61, 0x71,
+ 0x27, 0x27, 0x62, 0x62, 0x54, 0x5D, 0x7A, 0x4C,
+ 0x4C, 0x4C, 0x5D, 0x71, 0x30, 0x69, 0x62, 0x54,
+ 0x7A, 0x64, 0x34, 0x73, 0x71, 0x27, 0x62, 0x62,
+ 0x71, 0x54, 0x71, 0x3B, 0x6F, 0x3B, 0x71, 0x3D,
+ 0x3D, 0x71, 0x2D, 0x7E, 0x79, 0x53, 0x3C, 0x38,
+ 0x3D, 0x6F, 0x78, 0x49, 0x71, 0x73, 0x20, 0x20,
+ 0x25, 0x3F, 0x3A, 0x41, 0x5A, 0x45, 0x41, 0x45,
+ 0x3F, 0x50, 0x24, 0x28, 0x28, 0x3F, 0x4D, 0x20,
+ 0x20, 0x77, 0x77, 0x20, 0x20, 0x20, 0x71, 0x27,
+ 0x62, 0x62, 0x71, 0x54, 0x78, 0x79, 0x38, 0x71,
+ 0x71, 0x3D, 0x71, 0x71, 0x66, 0x5D, 0x5D, 0x21,
+ 0x21, 0x21, 0x54, 0x30, 0x78, 0x69, 0x27, 0x66,
+ 0x7A, 0x4C, 0x40, 0x3D, 0x27, 0x62, 0x62, 0x3B,
+ 0x62, 0x71, 0x62, 0x30, 0x69, 0x6F, 0x71, 0x54,
+ 0x3D, 0x3D, 0x54, 0x23, 0x4A, 0x3C, 0x3C, 0x38,
+ 0x6F, 0x29, 0x53, 0x30, 0x54, 0x66, 0x20, 0x57,
+ 0x7C, 0x25, 0x4B, 0x3F, 0x43, 0x4B, 0x4B, 0x2C,
+ 0x2E, 0x2E, 0x2E, 0x24, 0x58, 0x58, 0x78, 0x20,
+ 0x20, 0x20, 0x34, 0x77, 0x20, 0x20, 0x20, 0x62,
+ 0x62, 0x3B, 0x62, 0x71, 0x29, 0x79, 0x61, 0x27,
+ 0x27, 0x54, 0x54, 0x71, 0x54, 0x54, 0x66, 0x54,
+ 0x66, 0x71, 0x6F, 0x78, 0x53, 0x69, 0x54, 0x73,
+ 0x73, 0x73, 0x3D, 0x27, 0x27, 0x27, 0x62, 0x3B,
+ 0x62, 0x71, 0x71, 0x3B, 0x6F, 0x3B, 0x27, 0x54,
+ 0x66, 0x3D, 0x3D, 0x37, 0x53, 0x78, 0x49, 0x38,
+ 0x78, 0x29, 0x78, 0x3B, 0x66, 0x73, 0x20, 0x20,
+ 0x7C, 0x69, 0x68, 0x68, 0x52, 0x2E, 0x42, 0x67,
+ 0x5F, 0x45, 0x2C, 0x69, 0x78, 0x32, 0x78, 0x78,
+ 0x20, 0x20, 0x34, 0x77, 0x35, 0x20, 0x20, 0x27,
+ 0x62, 0x3B, 0x62, 0x71, 0x30, 0x26, 0x61, 0x73,
+ 0x27, 0x3D, 0x66, 0x3D, 0x3D, 0x27, 0x27, 0x62,
+ 0x62, 0x6F, 0x78, 0x53, 0x78, 0x62, 0x54, 0x66,
+ 0x27, 0x71, 0x3D, 0x71, 0x62, 0x62, 0x27, 0x3B,
+ 0x62, 0x71, 0x71, 0x27, 0x27, 0x27, 0x27, 0x3D,
+ 0x54, 0x3D, 0x27, 0x7E, 0x29, 0x29, 0x29, 0x6D,
+ 0x49, 0x49, 0x6F, 0x54, 0x73, 0x54, 0x20, 0x20,
+ 0x29, 0x7C, 0x69, 0x43, 0x76, 0x72, 0x2C, 0x76,
+ 0x68, 0x62, 0x78, 0x29, 0x6D, 0x38, 0x6D, 0x32,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62,
+ 0x27, 0x3B, 0x62, 0x71, 0x78, 0x61, 0x6D, 0x3C,
+ 0x27, 0x3D, 0x54, 0x3D, 0x27, 0x62, 0x3B, 0x6F,
+ 0x6F, 0x69, 0x49, 0x49, 0x6F, 0x3D, 0x73, 0x66,
+ 0x3D, 0x3D, 0x3D, 0x3D, 0x71, 0x27, 0x71, 0x62,
+ 0x62, 0x71, 0x3D, 0x71, 0x71, 0x71, 0x27, 0x71,
+ 0x54, 0x3D, 0x27, 0x46, 0x49, 0x78, 0x49, 0x6D,
+ 0x6F, 0x27, 0x54, 0x73, 0x40, 0x20, 0x20, 0x20,
+ 0x44, 0x32, 0x29, 0x49, 0x77, 0x2F, 0x73, 0x62,
+ 0x29, 0x32, 0x29, 0x51, 0x6D, 0x38, 0x6D, 0x38,
+ 0x56, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x71, 0x62, 0x62, 0x71, 0x6F, 0x70, 0x38, 0x71,
+ 0x27, 0x71, 0x54, 0x3D, 0x62, 0x3B, 0x3B, 0x6F,
+ 0x6F, 0x6F, 0x3B, 0x27, 0x54, 0x40, 0x73, 0x66,
+ 0x40, 0x40, 0x66, 0x3D, 0x71, 0x3D, 0x71, 0x71,
+ 0x27, 0x27, 0x3D, 0x54, 0x3D, 0x3D, 0x71, 0x54,
+ 0x73, 0x73, 0x3D, 0x46, 0x78, 0x49, 0x78, 0x44,
+ 0x66, 0x73, 0x5D, 0x5D, 0x35, 0x20, 0x20, 0x78,
+ 0x6D, 0x51, 0x78, 0x49, 0x58, 0x29, 0x29, 0x49,
+ 0x29, 0x79, 0x38, 0x38, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x6D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6B, 0x71, 0x27, 0x27, 0x29, 0x3C, 0x44, 0x40,
+ 0x3D, 0x54, 0x73, 0x73, 0x54, 0x71, 0x71, 0x3D,
+ 0x3D, 0x3D, 0x66, 0x40, 0x5D, 0x5D, 0x5D, 0x40,
+ 0x21, 0x5D, 0x73, 0x66, 0x3D, 0x3D, 0x71, 0x71,
+ 0x27, 0x27, 0x3D, 0x54, 0x54, 0x66, 0x54, 0x73,
+ 0x5D, 0x21, 0x40, 0x33, 0x69, 0x49, 0x30, 0x38,
+ 0x7A, 0x7A, 0x7A, 0x21, 0x6B, 0x20, 0x20, 0x6D,
+ 0x38, 0x6D, 0x38, 0x7C, 0x49, 0x29, 0x69, 0x78,
+ 0x38, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x6D, 0x37, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x71, 0x27, 0x71, 0x78, 0x3C, 0x26, 0x30,
+ 0x66, 0x66, 0x5D, 0x21, 0x5D, 0x73, 0x73, 0x40,
+ 0x5D, 0x21, 0x7A, 0x4C, 0x21, 0x5D, 0x21, 0x21,
+ 0x5D, 0x54, 0x54, 0x54, 0x3D, 0x71, 0x3D, 0x71,
+ 0x27, 0x27, 0x71, 0x54, 0x66, 0x54, 0x66, 0x66,
+ 0x5D, 0x21, 0x5D, 0x7E, 0x29, 0x69, 0x49, 0x6D,
+ 0x4C, 0x7A, 0x5D, 0x20, 0x20, 0x20, 0x51, 0x38,
+ 0x6D, 0x6D, 0x6D, 0x44, 0x69, 0x78, 0x5B, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x62, 0x27, 0x3C, 0x69, 0x38, 0x71,
+ 0x54, 0x73, 0x5D, 0x21, 0x40, 0x73, 0x66, 0x73,
+ 0x21, 0x4C, 0x4C, 0x7A, 0x5D, 0x5D, 0x5D, 0x4C,
+ 0x66, 0x62, 0x62, 0x27, 0x71, 0x71, 0x71, 0x27,
+ 0x27, 0x27, 0x71, 0x3D, 0x54, 0x54, 0x54, 0x54,
+ 0x73, 0x73, 0x3D, 0x57, 0x29, 0x69, 0x30, 0x38,
+ 0x73, 0x73, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x27, 0x5B, 0x53, 0x6D, 0x73,
+ 0x54, 0x54, 0x73, 0x73, 0x3D, 0x27, 0x27, 0x71,
+ 0x66, 0x40, 0x73, 0x40, 0x66, 0x73, 0x40, 0x21,
+ 0x62, 0x30, 0x6F, 0x62, 0x27, 0x71, 0x3D, 0x71,
+ 0x27, 0x71, 0x71, 0x71, 0x3D, 0x3D, 0x3D, 0x3D,
+ 0x3D, 0x27, 0x58, 0x46, 0x69, 0x30, 0x6F, 0x6D,
+ 0x3D, 0x71, 0x20, 0x20, 0x20, 0x44, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x38, 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x6D, 0x6D, 0x2F, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x70, 0x53, 0x38, 0x27,
+ 0x3D, 0x3D, 0x3D, 0x71, 0x3B, 0x30, 0x62, 0x3D,
+ 0x66, 0x54, 0x3D, 0x71, 0x3D, 0x3D, 0x66, 0x66,
+ 0x3B, 0x69, 0x69, 0x6F, 0x62, 0x27, 0x3D, 0x71,
+ 0x27, 0x27, 0x27, 0x27, 0x71, 0x3D, 0x3D, 0x3D,
+ 0x3D, 0x27, 0x3B, 0x46, 0x62, 0x3B, 0x49, 0x38,
+ 0x3D, 0x20, 0x20, 0x20, 0x34, 0x44, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x38, 0x6D, 0x26, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x21, 0x49, 0x79, 0x51, 0x5D,
+ 0x3D, 0x3D, 0x71, 0x27, 0x62, 0x62, 0x3D, 0x73,
+ 0x40, 0x66, 0x3D, 0x3D, 0x54, 0x3D, 0x3D, 0x71,
+ 0x78, 0x49, 0x69, 0x30, 0x3B, 0x62, 0x27, 0x27,
+ 0x27, 0x27, 0x27, 0x71, 0x71, 0x71, 0x3D, 0x3D,
+ 0x3D, 0x27, 0x3D, 0x33, 0x49, 0x69, 0x62, 0x44,
+ 0x20, 0x20, 0x20, 0x20, 0x2D, 0x32, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x38, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x38, 0x51,
+ 0x26, 0x61, 0x44, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x6A, 0x70, 0x6F, 0x6D, 0x21,
+ 0x71, 0x3D, 0x3D, 0x71, 0x3D, 0x66, 0x40, 0x5D,
+ 0x40, 0x73, 0x66, 0x73, 0x66, 0x54, 0x3D, 0x71,
+ 0x70, 0x78, 0x49, 0x30, 0x6F, 0x6F, 0x62, 0x62,
+ 0x62, 0x27, 0x71, 0x3D, 0x54, 0x54, 0x54, 0x3D,
+ 0x3D, 0x71, 0x3D, 0x2A, 0x30, 0x2D, 0x3B, 0x26,
+ 0x38, 0x20, 0x20, 0x20, 0x2D, 0x62, 0x32, 0x26,
+ 0x38, 0x6D, 0x6D, 0x38, 0x5B, 0x38, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x6D, 0x26, 0x32, 0x29, 0x29, 0x29,
+ 0x53, 0x29, 0x61, 0x6D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x44, 0x3D, 0x3C, 0x62, 0x79, 0x7A,
+ 0x54, 0x54, 0x71, 0x27, 0x3D, 0x66, 0x73, 0x40,
+ 0x73, 0x66, 0x66, 0x73, 0x2D, 0x54, 0x71, 0x71,
+ 0x4A, 0x3B, 0x62, 0x3B, 0x3B, 0x3B, 0x3B, 0x27,
+ 0x27, 0x27, 0x71, 0x3D, 0x2D, 0x73, 0x73, 0x54,
+ 0x3D, 0x71, 0x71, 0x33, 0x30, 0x71, 0x5D, 0x38,
+ 0x6D, 0x6D, 0x38, 0x38, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x44, 0x38, 0x6F, 0x7A, 0x64, 0x64,
+ 0x23, 0x23, 0x56, 0x23, 0x23, 0x7B, 0x47, 0x64,
+ 0x54, 0x29, 0x44, 0x38, 0x38, 0x6D, 0x38, 0x38,
+ 0x6D, 0x38, 0x38, 0x6D, 0x53, 0x49, 0x6D, 0x34,
+ 0x73, 0x54, 0x3D, 0x71, 0x71, 0x3D, 0x54, 0x3D,
+ 0x3D, 0x54, 0x66, 0x66, 0x66, 0x54, 0x54, 0x3D,
+ 0x49, 0x3D, 0x54, 0x54, 0x3D, 0x71, 0x27, 0x27,
+ 0x71, 0x71, 0x71, 0x3D, 0x54, 0x54, 0x54, 0x3D,
+ 0x3D, 0x71, 0x71, 0x33, 0x29, 0x3D, 0x3D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x38, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x38, 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x38, 0x6D, 0x44,
+ 0x6D, 0x38, 0x38, 0x6D, 0x69, 0x78, 0x61, 0x73,
+ 0x54, 0x3D, 0x3D, 0x71, 0x71, 0x3D, 0x3D, 0x3D,
+ 0x71, 0x3D, 0x3D, 0x3D, 0x3D, 0x54, 0x3D, 0x71,
+ 0x3B, 0x66, 0x73, 0x73, 0x2D, 0x2D, 0x54, 0x3D,
+ 0x71, 0x71, 0x3D, 0x71, 0x71, 0x71, 0x27, 0x27,
+ 0x27, 0x71, 0x71, 0x33, 0x3B, 0x62, 0x27, 0x3D,
+ 0x27, 0x3B, 0x3B, 0x27, 0x62, 0x3B, 0x3D, 0x3D,
+ 0x30, 0x27, 0x62, 0x62, 0x62, 0x71, 0x30, 0x27,
+ 0x3B, 0x6F, 0x30, 0x30, 0x3B, 0x30, 0x3B, 0x62,
+ 0x3B, 0x69, 0x49, 0x30, 0x29, 0x29, 0x29, 0x29,
+ 0x49, 0x29, 0x30, 0x29, 0x29, 0x29, 0x51, 0x21,
+ 0x27, 0x27, 0x71, 0x71, 0x71, 0x3D, 0x3D, 0x71,
+ 0x71, 0x71, 0x71, 0x3D, 0x71, 0x71, 0x71, 0x62,
+ 0x3B, 0x54, 0x66, 0x66, 0x66, 0x54, 0x3D, 0x54,
+ 0x66, 0x54, 0x3D, 0x27, 0x62, 0x62, 0x3B, 0x3B,
+ 0x3B, 0x62, 0x27, 0x33, 0x30, 0x6F, 0x71, 0x3B,
+ 0x62, 0x3B, 0x62, 0x27, 0x27, 0x30, 0x62, 0x27,
+ 0x62, 0x27, 0x3B, 0x49, 0x3B, 0x30, 0x29, 0x3B,
+ 0x3B, 0x30, 0x30, 0x69, 0x30, 0x6F, 0x30, 0x49,
+ 0x3B, 0x6F, 0x49, 0x29, 0x49, 0x49, 0x3C, 0x29,
+ 0x49, 0x49, 0x69, 0x70, 0x70, 0x29, 0x51, 0x27,
+ 0x3B, 0x3B, 0x3B, 0x62, 0x27, 0x27, 0x27, 0x27,
+ 0x27, 0x3D, 0x3D, 0x3D, 0x71, 0x27, 0x27, 0x27,
+ 0x69, 0x71, 0x3D, 0x54, 0x71, 0x62, 0x27, 0x71,
+ 0x54, 0x2D, 0x3D, 0x27, 0x62, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x62, 0x62, 0x33, 0x27, 0x27, 0x3B, 0x71,
+ 0x27, 0x71, 0x27, 0x62, 0x71, 0x6F, 0x27, 0x71,
+ 0x3B, 0x62, 0x62, 0x6F, 0x62, 0x6F, 0x6F, 0x6F,
+ 0x6F, 0x69, 0x62, 0x49, 0x69, 0x49, 0x6F, 0x62,
+ 0x62, 0x49, 0x69, 0x71, 0x6F, 0x6F, 0x6F, 0x69,
+ 0x69, 0x69, 0x30, 0x29, 0x30, 0x69, 0x44, 0x7B,
+ 0x3B, 0x3B, 0x3B, 0x62, 0x62, 0x62, 0x62, 0x62,
+ 0x27, 0x3D, 0x3D, 0x54, 0x71, 0x3D, 0x3D, 0x54,
+ 0x69, 0x71, 0x3D, 0x71, 0x62, 0x3B, 0x3B, 0x27,
+ 0x54, 0x54, 0x3D, 0x71, 0x71, 0x71, 0x27, 0x62,
+ 0x62, 0x62, 0x27, 0x2A, 0x3D, 0x71, 0x3D, 0x71,
+ 0x3D, 0x62, 0x27, 0x30, 0x30, 0x62, 0x3B, 0x71,
+ 0x3B, 0x30, 0x30, 0x49, 0x29, 0x30, 0x30, 0x30,
+ 0x27, 0x49, 0x62, 0x30, 0x6F, 0x30, 0x3B, 0x3B,
+ 0x6F, 0x3B, 0x49, 0x30, 0x30, 0x3C, 0x3B, 0x49,
+ 0x30, 0x69, 0x6F, 0x78, 0x30, 0x62, 0x44, 0x7B,
+ 0x27, 0x62, 0x62, 0x62, 0x71, 0x71, 0x3D, 0x54,
+ 0x3D, 0x73, 0x66, 0x73, 0x66, 0x73, 0x73, 0x66,
+ 0x62, 0x66, 0x66, 0x3D, 0x27, 0x3B, 0x3B, 0x71,
+ 0x3D, 0x3D, 0x3D, 0x54, 0x54, 0x71, 0x3D, 0x3D,
+ 0x54, 0x73, 0x5D, 0x33, 0x62, 0x27, 0x54, 0x27,
+ 0x71, 0x3B, 0x71, 0x71, 0x62, 0x3B, 0x54, 0x3B,
+ 0x71, 0x6F, 0x62, 0x62, 0x62, 0x62, 0x69, 0x71,
+ 0x71, 0x6F, 0x3B, 0x71, 0x30, 0x62, 0x71, 0x6F,
+ 0x3B, 0x62, 0x6F, 0x62, 0x6F, 0x69, 0x6F, 0x69,
+ 0x6F, 0x30, 0x49, 0x3C, 0x69, 0x3B, 0x79, 0x21,
+ 0x20, 0x3D, 0x54, 0x73, 0x5D, 0x5D, 0x5D, 0x40,
+ 0x40, 0x73, 0x73, 0x73, 0x2D, 0x66, 0x66, 0x3D,
+ 0x3D, 0x54, 0x54, 0x3D, 0x71, 0x27, 0x62, 0x27,
+ 0x71, 0x71, 0x3D, 0x54, 0x54, 0x3D, 0x3D, 0x54,
+ 0x5D, 0x6A, 0x77, 0x46, 0x71, 0x2D, 0x54, 0x27,
+ 0x54, 0x3B, 0x3B, 0x3B, 0x6F, 0x3B, 0x71, 0x27,
+ 0x3B, 0x27, 0x3B, 0x3B, 0x27, 0x27, 0x3B, 0x3B,
+ 0x3B, 0x62, 0x3D, 0x62, 0x3D, 0x27, 0x3B, 0x54,
+ 0x3B, 0x2D, 0x49, 0x3B, 0x3B, 0x29, 0x49, 0x3C,
+ 0x53, 0x69, 0x53, 0x3C, 0x78, 0x3D, 0x78, 0x5D,
+ 0x20, 0x66, 0x5D, 0x6A, 0x47, 0x77, 0x4C, 0x5D,
+ 0x66, 0x3D, 0x3D, 0x66, 0x73, 0x66, 0x3D, 0x62,
+ 0x62, 0x62, 0x71, 0x3D, 0x71, 0x27, 0x27, 0x27,
+ 0x71, 0x71, 0x71, 0x3D, 0x3D, 0x71, 0x71, 0x73,
+ 0x7A, 0x77, 0x47, 0x46, 0x27, 0x73, 0x27, 0x54,
+ 0x3D, 0x71, 0x62, 0x6F, 0x27, 0x71, 0x27, 0x71,
+ 0x71, 0x71, 0x62, 0x62, 0x71, 0x71, 0x71, 0x62,
+ 0x62, 0x3B, 0x69, 0x49, 0x62, 0x6F, 0x62, 0x3D,
+ 0x6F, 0x6F, 0x62, 0x78, 0x2A, 0x20, 0x6B, 0x20,
+ 0x2A, 0x20, 0x20, 0x2A, 0x3B, 0x6F, 0x3C, 0x4C,
+ 0x20, 0x20, 0x7A, 0x77, 0x47, 0x6A, 0x5D, 0x54,
+ 0x27, 0x6F, 0x3B, 0x54, 0x40, 0x2D, 0x71, 0x6F,
+ 0x49, 0x6F, 0x27, 0x3D, 0x71, 0x62, 0x62, 0x3B,
+ 0x62, 0x27, 0x71, 0x3D, 0x3D, 0x71, 0x71, 0x66,
+ 0x7A, 0x34, 0x6A, 0x46, 0x27, 0x5D, 0x3D, 0x54,
+ 0x3D, 0x3D, 0x3D, 0x62, 0x27, 0x71, 0x27, 0x3D,
+ 0x3B, 0x3D, 0x30, 0x27, 0x27, 0x3B, 0x27, 0x3D,
+ 0x20, 0x20, 0x2A, 0x46, 0x46, 0x2A, 0x35, 0x2A,
+ 0x46, 0x46, 0x23, 0x2A, 0x7A, 0x4F, 0x4F, 0x6B,
+ 0x6B, 0x4F, 0x4F, 0x62, 0x3B, 0x62, 0x78, 0x20,
+ 0x20, 0x20, 0x7A, 0x34, 0x34, 0x40, 0x54, 0x71,
+ 0x3B, 0x69, 0x6F, 0x40, 0x7A, 0x66, 0x62, 0x69,
+ 0x3C, 0x3B, 0x71, 0x3D, 0x27, 0x3B, 0x6F, 0x27,
+ 0x71, 0x3D, 0x3D, 0x66, 0x2D, 0x3D, 0x62, 0x27,
+ 0x2D, 0x4C, 0x7A, 0x33, 0x27, 0x3D, 0x54, 0x2D,
+ 0x54, 0x62, 0x54, 0x27, 0x54, 0x27, 0x54, 0x71,
+ 0x62, 0x71, 0x71, 0x62, 0x62, 0x54, 0x71, 0x62,
+ 0x7A, 0x6B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x35, 0x57,
+ 0x6B, 0x20, 0x20, 0x30, 0x6F, 0x27, 0x29, 0x20,
+ 0x20, 0x20, 0x66, 0x4C, 0x7A, 0x54, 0x62, 0x3B,
+ 0x6F, 0x30, 0x71, 0x7A, 0x4C, 0x3D, 0x69, 0x78,
+ 0x53, 0x3D, 0x73, 0x2D, 0x71, 0x62, 0x3B, 0x71,
+ 0x3D, 0x2D, 0x2D, 0x40, 0x73, 0x3D, 0x27, 0x71,
+ 0x40, 0x6A, 0x20, 0x20, 0x71, 0x2D, 0x62, 0x2D,
+ 0x3D, 0x3B, 0x71, 0x27, 0x54, 0x27, 0x3D, 0x3D,
+ 0x27, 0x2D, 0x27, 0x3D, 0x3B, 0x2D, 0x3D, 0x3B,
+ 0x34, 0x2D, 0x77, 0x6A, 0x77, 0x2D, 0x6A, 0x7A,
+ 0x5D, 0x6A, 0x5D, 0x54, 0x71, 0x44, 0x6D, 0x6D,
+ 0x6D, 0x38, 0x26, 0x30, 0x54, 0x62, 0x20, 0x20,
+ 0x20, 0x20, 0x40, 0x6A, 0x4C, 0x54, 0x6F, 0x69,
+ 0x30, 0x62, 0x40, 0x6A, 0x21, 0x62, 0x49, 0x29,
+ 0x71, 0x4C, 0x34, 0x5D, 0x71, 0x3B, 0x27, 0x71,
+ 0x54, 0x54, 0x40, 0x40, 0x73, 0x3D, 0x3D, 0x40,
+ 0x6A, 0x20, 0x20, 0x33, 0x2D, 0x73, 0x40, 0x4E,
+ 0x77, 0x7A, 0x3D, 0x54, 0x2D, 0x54, 0x71, 0x54,
+ 0x62, 0x71, 0x71, 0x62, 0x71, 0x71, 0x71, 0x71,
+ 0x2D, 0x3B, 0x27, 0x3B, 0x49, 0x6F, 0x3B, 0x3B,
+ 0x27, 0x3B, 0x3B, 0x30, 0x49, 0x53, 0x6F, 0x6F,
+ 0x69, 0x3B, 0x6F, 0x53, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x6A, 0x77, 0x21, 0x27, 0x30, 0x30,
+ 0x6F, 0x71, 0x66, 0x73, 0x3D, 0x30, 0x49, 0x30,
+ 0x5D, 0x34, 0x34, 0x40, 0x27, 0x6F, 0x62, 0x3D,
+ 0x54, 0x66, 0x40, 0x73, 0x2D, 0x66, 0x2D, 0x5D,
+ 0x7A, 0x20, 0x20, 0x56, 0x20, 0x54, 0x5D, 0x5E,
+ 0x33, 0x71, 0x3D, 0x62, 0x27, 0x3B, 0x27, 0x30,
+ 0x3B, 0x3D, 0x27, 0x3D, 0x3D, 0x3D, 0x3B, 0x73,
+ 0x54, 0x62, 0x62, 0x62, 0x30, 0x6F, 0x71, 0x6F,
+ 0x6F, 0x6F, 0x6F, 0x71, 0x62, 0x3B, 0x3B, 0x49,
+ 0x3B, 0x3B, 0x3B, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x7A, 0x21, 0x54, 0x3B, 0x69, 0x69,
+ 0x30, 0x62, 0x27, 0x71, 0x62, 0x30, 0x30, 0x6F,
+ 0x4C, 0x77, 0x6A, 0x66, 0x62, 0x6F, 0x62, 0x71,
+ 0x54, 0x66, 0x2D, 0x73, 0x66, 0x54, 0x73, 0x73,
+ 0x73, 0x20, 0x20, 0x7E, 0x20, 0x3D, 0x27, 0x6B,
+ 0x35, 0x21, 0x54, 0x3D, 0x71, 0x71, 0x54, 0x62,
+ 0x62, 0x71, 0x71, 0x69, 0x71, 0x54, 0x54, 0x30,
+ 0x27, 0x3B, 0x3B, 0x3B, 0x6F, 0x30, 0x3B, 0x30,
+ 0x3B, 0x30, 0x30, 0x27, 0x30, 0x6F, 0x62, 0x69,
+ 0x6F, 0x6F, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x73, 0x3D, 0x62, 0x6F, 0x69, 0x69,
+ 0x6F, 0x71, 0x3D, 0x71, 0x27, 0x62, 0x62, 0x27,
+ 0x4C, 0x4C, 0x5D, 0x71, 0x30, 0x69, 0x3B, 0x71,
+ 0x54, 0x66, 0x73, 0x66, 0x66, 0x66, 0x54, 0x3D,
+ 0x71, 0x20, 0x20, 0x7E, 0x20, 0x20, 0x21, 0x62,
+ 0x69, 0x27, 0x5D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3B,
+ 0x3D, 0x3D, 0x27, 0x3B, 0x27, 0x3D, 0x71, 0x6F,
+ 0x54, 0x62, 0x6F, 0x30, 0x6F, 0x6F, 0x62, 0x6F,
+ 0x62, 0x62, 0x62, 0x62, 0x3B, 0x3B, 0x27, 0x3B,
+ 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x27, 0x3B, 0x6F, 0x30, 0x6F, 0x6F,
+ 0x62, 0x3D, 0x66, 0x54, 0x54, 0x71, 0x71, 0x71,
+ 0x5D, 0x5D, 0x54, 0x3B, 0x69, 0x69, 0x3B, 0x71,
+ 0x54, 0x40, 0x73, 0x66, 0x54, 0x3D, 0x71, 0x62,
+ 0x6F, 0x20, 0x20, 0x39, 0x20, 0x20, 0x20, 0x2D,
+ 0x2D, 0x73, 0x40, 0x54, 0x54, 0x54, 0x71, 0x73,
+ 0x54, 0x73, 0x71, 0x54, 0x54, 0x54, 0x27, 0x3B,
+ 0x3D, 0x3B, 0x27, 0x62, 0x3B, 0x3B, 0x3B, 0x27,
+ 0x27, 0x3B, 0x3B, 0x27, 0x62, 0x62, 0x71, 0x62,
+ 0x71, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x3B, 0x6F, 0x30, 0x6F, 0x3B, 0x27,
+ 0x3D, 0x66, 0x66, 0x54, 0x71, 0x71, 0x27, 0x71,
+ 0x66, 0x73, 0x54, 0x27, 0x6F, 0x6F, 0x27, 0x54,
+ 0x40, 0x21, 0x5D, 0x73, 0x3D, 0x27, 0x62, 0x3B,
+ 0x3B, 0x42, 0x74, 0x52, 0x52, 0x6E, 0x20, 0x20,
+ 0x40, 0x54, 0x3D, 0x3D, 0x3D, 0x40, 0x27, 0x3B,
+ 0x30, 0x40, 0x27, 0x27, 0x27, 0x71, 0x54, 0x6F,
+ 0x5D, 0x6F, 0x3B, 0x71, 0x71, 0x6F, 0x73, 0x6F,
+ 0x54, 0x6F, 0x54, 0x27, 0x39, 0x6E, 0x6E, 0x3B,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x3B, 0x3B, 0x3B, 0x62, 0x27, 0x71,
+ 0x3D, 0x3D, 0x3D, 0x27, 0x62, 0x27, 0x62, 0x27,
+ 0x3D, 0x40, 0x54, 0x27, 0x3B, 0x3B, 0x27, 0x73,
+ 0x7A, 0x21, 0x40, 0x54, 0x71, 0x62, 0x6F, 0x6F,
+ 0x3B, 0x67, 0x3A, 0x3A, 0x5A, 0x48, 0x3A, 0x20,
+ 0x20, 0x53, 0x6D, 0x38, 0x38, 0x6D, 0x38, 0x38,
+ 0x6D, 0x38, 0x79, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x67, 0x52, 0x41, 0x22, 0x2F,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4F, 0x6B,
+ 0x43, 0x3A, 0x3B, 0x27, 0x27, 0x62, 0x27, 0x71,
+ 0x71, 0x71, 0x71, 0x3D, 0x71, 0x71, 0x3D, 0x3D,
+ 0x27, 0x40, 0x54, 0x27, 0x30, 0x30, 0x27, 0x40,
+ 0x7A, 0x5D, 0x54, 0x71, 0x3B, 0x30, 0x30, 0x3B,
+ 0x42, 0x67, 0x67, 0x3E, 0x3A, 0x48, 0x22, 0x5A,
+ 0x4F, 0x20, 0x2D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x26, 0x6D, 0x38, 0x6D, 0x38, 0x6D,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x38, 0x6D, 0x38,
+ 0x6D, 0x38, 0x38, 0x3E, 0x55, 0x6C, 0x22, 0x73,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4D,
+ 0x5A, 0x45, 0x36, 0x3D, 0x71, 0x27, 0x27, 0x71,
+ 0x54, 0x66, 0x73, 0x40, 0x73, 0x66, 0x2D, 0x66,
+ 0x30, 0x66, 0x71, 0x30, 0x69, 0x6F, 0x3D, 0x21,
+ 0x7A, 0x66, 0x3D, 0x62, 0x3B, 0x6F, 0x3B, 0x28,
+ 0x67, 0x52, 0x5A, 0x74, 0x41, 0x3A, 0x74, 0x3A,
+ 0x52, 0x20, 0x20, 0x7E, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x38, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x2F, 0x52, 0x22, 0x28, 0x50,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2E,
+ 0x41, 0x5A, 0x5A, 0x66, 0x54, 0x3D, 0x54, 0x66,
+ 0x73, 0x40, 0x40, 0x40, 0x73, 0x66, 0x66, 0x3D,
+ 0x69, 0x27, 0x3B, 0x30, 0x30, 0x62, 0x73, 0x7A,
+ 0x21, 0x3D, 0x3B, 0x6F, 0x6F, 0x62, 0x2F, 0x75,
+ 0x28, 0x55, 0x22, 0x3A, 0x31, 0x3A, 0x41, 0x3A,
+ 0x5A, 0x2E, 0x20, 0x4F, 0x20, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x78, 0x2F, 0x31, 0x55, 0x2E, 0x3F,
+ 0x50, 0x20, 0x20, 0x20, 0x20, 0x4D, 0x24, 0x52,
+ 0x22, 0x22, 0x31, 0x2D, 0x66, 0x54, 0x66, 0x66,
+ 0x66, 0x66, 0x54, 0x71, 0x27, 0x27, 0x27, 0x62,
+ 0x30, 0x3B, 0x3B, 0x6F, 0x3B, 0x3D, 0x40, 0x21,
+ 0x73, 0x71, 0x5F, 0x6E, 0x2E, 0x2E, 0x67, 0x52,
+ 0x52, 0x31, 0x7D, 0x48, 0x3A, 0x3A, 0x74, 0x74,
+ 0x55, 0x39, 0x20, 0x20, 0x20, 0x20, 0x38, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x29, 0x29, 0x2F, 0x55, 0x52, 0x2E, 0x24,
+ 0x72, 0x68, 0x25, 0x76, 0x68, 0x3F, 0x2E, 0x39,
+ 0x52, 0x74, 0x3A, 0x73, 0x66, 0x66, 0x54, 0x54,
+ 0x27, 0x3B, 0x6F, 0x6F, 0x6F, 0x6F, 0x3B, 0x62,
+ 0x3B, 0x62, 0x27, 0x71, 0x54, 0x40, 0x21, 0x40,
+ 0x3D, 0x2E, 0x48, 0x6E, 0x55, 0x55, 0x6E, 0x55,
+ 0x3A, 0x74, 0x3E, 0x55, 0x74, 0x5A, 0x22, 0x3A,
+ 0x3A, 0x36, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x38,
+ 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x38, 0x38, 0x6D, 0x38, 0x6D, 0x38,
+ 0x6D, 0x32, 0x78, 0x62, 0x3E, 0x52, 0x28, 0x42,
+ 0x65, 0x24, 0x5F, 0x24, 0x5F, 0x2E, 0x55, 0x22,
+ 0x3A, 0x41, 0x74, 0x31, 0x54, 0x73, 0x66, 0x54,
+ 0x27, 0x6F, 0x30, 0x69, 0x30, 0x6F, 0x62, 0x62,
+ 0x62, 0x71, 0x3D, 0x54, 0x73, 0x5D, 0x5D, 0x66,
+ 0x71, 0x2E, 0x22, 0x31, 0x55, 0x3A, 0x31, 0x5A,
+ 0x3A, 0x3A, 0x74, 0x5A, 0x74, 0x3E, 0x31, 0x3A,
+ 0x55, 0x22, 0x22, 0x35, 0x20, 0x20, 0x20, 0x20,
+ 0x34, 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x38, 0x6D,
+ 0x6D, 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x79, 0x29, 0x2F, 0x42, 0x52, 0x28, 0x48,
+ 0x48, 0x2E, 0x2E, 0x48, 0x3E, 0x52, 0x3A, 0x74,
+ 0x7D, 0x3A, 0x3A, 0x3E, 0x40, 0x40, 0x40, 0x54,
+ 0x27, 0x6F, 0x30, 0x6F, 0x62, 0x71, 0x71, 0x71,
+ 0x62, 0x3D, 0x66, 0x73, 0x40, 0x5D, 0x73, 0x71,
+ 0x62, 0x28, 0x55, 0x5A, 0x5A, 0x55, 0x3A, 0x41,
+ 0x55, 0x3A, 0x3A, 0x31, 0x55, 0x55, 0x5A, 0x74,
+ 0x3A, 0x31, 0x22, 0x48, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x29, 0x2F, 0x24, 0x28, 0x28, 0x52,
+ 0x52, 0x48, 0x48, 0x28, 0x39, 0x52, 0x74, 0x48,
+ 0x74, 0x55, 0x22, 0x41, 0x5A, 0x40, 0x54, 0x27,
+ 0x3B, 0x6F, 0x3B, 0x71, 0x54, 0x66, 0x66, 0x3D,
+ 0x62, 0x54, 0x40, 0x21, 0x7A, 0x40, 0x3D, 0x62,
+ 0x62, 0x48, 0x52, 0x55, 0x6C, 0x5A, 0x31, 0x31,
+ 0x5A, 0x41, 0x31, 0x3A, 0x3A, 0x7D, 0x31, 0x3A,
+ 0x41, 0x41, 0x22, 0x36, 0x42, 0x20, 0x20, 0x20,
+ 0x20, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x6D, 0x6D, 0x29, 0x25, 0x59, 0x2E, 0x39, 0x39,
+ 0x55, 0x39, 0x39, 0x39, 0x31, 0x22, 0x3A, 0x74,
+ 0x5A, 0x3E, 0x6C, 0x3E, 0x31, 0x3E, 0x3A, 0x69,
+ 0x49, 0x49, 0x3B, 0x71, 0x66, 0x73, 0x66, 0x54,
+ 0x27, 0x66, 0x5D, 0x7A, 0x21, 0x73, 0x71, 0x62,
+ 0x27, 0x75, 0x39, 0x41, 0x3A, 0x36, 0x7D, 0x74,
+ 0x74, 0x41, 0x55, 0x55, 0x3A, 0x3A, 0x3A, 0x3A,
+ 0x31, 0x31, 0x5A, 0x22, 0x52, 0x20, 0x20, 0x20,
+ 0x26, 0x38, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x38,
+ 0x6D, 0x38, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x38, 0x6D, 0x20, 0x60, 0x24, 0x48, 0x39, 0x3A,
+ 0x55, 0x55, 0x31, 0x55, 0x41, 0x74, 0x41, 0x22,
+ 0x7D, 0x3A, 0x22, 0x3E, 0x41, 0x5A, 0x3A, 0x74,
+ 0x78, 0x30, 0x27, 0x54, 0x40, 0x73, 0x54, 0x3D,
+ 0x71, 0x54, 0x5D, 0x7A, 0x21, 0x66, 0x62, 0x3B,
+ 0x71, 0x5F, 0x52, 0x3E, 0x41, 0x5A, 0x5A, 0x22,
+ 0x3E, 0x3A, 0x74, 0x3E, 0x55, 0x55, 0x3A, 0x31,
+ 0x41, 0x3A, 0x48, 0x55, 0x41, 0x42, 0x6D, 0x38,
+ 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x6D,
+ 0x38, 0x6D, 0x6D, 0x38, 0x6D, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x20, 0x20, 0x25, 0x24, 0x28, 0x52, 0x3A,
+ 0x5A, 0x5A, 0x5A, 0x5A, 0x74, 0x74, 0x7D, 0x74,
+ 0x3A, 0x74, 0x3A, 0x41, 0x7D, 0x41, 0x3A, 0x3A,
+ 0x69, 0x3D, 0x21, 0x4C, 0x4C, 0x5D, 0x66, 0x54,
+ 0x66, 0x73, 0x21, 0x6A, 0x21, 0x3D, 0x3B, 0x6F,
+ 0x71, 0x75, 0x48, 0x31, 0x5A, 0x3A, 0x3E, 0x48,
+ 0x74, 0x7D, 0x3A, 0x7D, 0x3A, 0x3A, 0x55, 0x74,
+ 0x5A, 0x3A, 0x41, 0x55, 0x22, 0x22, 0x3F, 0x6D,
+ 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x38,
+ 0x20, 0x20, 0x20, 0x60, 0x42, 0x28, 0x39, 0x3A,
+ 0x3A, 0x31, 0x41, 0x3A, 0x22, 0x55, 0x74, 0x55,
+ 0x74, 0x74, 0x74, 0x3A, 0x3A, 0x74, 0x3A, 0x67,
+ 0x54, 0x7A, 0x34, 0x77, 0x6A, 0x21, 0x66, 0x66,
+ 0x7A, 0x21, 0x21, 0x4C, 0x21, 0x3D, 0x3B, 0x62,
+ 0x66, 0x67, 0x28, 0x55, 0x41, 0x31, 0x55, 0x3A,
+ 0x74, 0x41, 0x31, 0x3A, 0x3A, 0x41, 0x3A, 0x36,
+ 0x5A, 0x5A, 0x31, 0x31, 0x39, 0x22, 0x24, 0x43,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x38, 0x6D, 0x6D, 0x6D, 0x38, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x60, 0x24, 0x63, 0x39, 0x55,
+ 0x31, 0x5A, 0x3A, 0x74, 0x3A, 0x31, 0x3A, 0x31,
+ 0x5A, 0x48, 0x3A, 0x7D, 0x48, 0x41, 0x31, 0x3E,
+ 0x6A, 0x64, 0x47, 0x4C, 0x5D, 0x54, 0x71, 0x71,
+ 0x6A, 0x5D, 0x5D, 0x21, 0x5D, 0x3D, 0x3B, 0x62,
+ 0x66, 0x42, 0x39, 0x3A, 0x41, 0x3A, 0x31, 0x3A,
+ 0x7D, 0x3A, 0x74, 0x41, 0x31, 0x31, 0x3E, 0x41,
+ 0x5A, 0x41, 0x3A, 0x31, 0x39, 0x52, 0x48, 0x25,
+ 0x62, 0x6D, 0x38, 0x38, 0x6D, 0x38, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0x6D, 0x6D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x4D, 0x43, 0x5F, 0x28, 0x52, 0x3E,
+ 0x22, 0x31, 0x3A, 0x3A, 0x55, 0x3A, 0x3E, 0x31,
+ 0x74, 0x67, 0x3E, 0x3A, 0x3E, 0x67, 0x54, 0x34,
+ 0x2B, 0x2B, 0x34, 0x21, 0x66, 0x71, 0x62, 0x62,
+ 0x3D, 0x3D, 0x54, 0x5D, 0x40, 0x27, 0x6F, 0x3B,
+ 0x67, 0x48, 0x48, 0x39, 0x52, 0x7D, 0x7D, 0x22,
+ 0x74, 0x3A, 0x5A, 0x5A, 0x3A, 0x55, 0x31, 0x3A,
+ 0x41, 0x7D, 0x3A, 0x22, 0x55, 0x48, 0x42, 0x76,
+ 0x4B, 0x20, 0x37, 0x6D, 0x6D, 0x6D, 0x38, 0x78,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x4D, 0x76, 0x42, 0x48, 0x55, 0x74,
+ 0x41, 0x6C, 0x48, 0x31, 0x31, 0x3A, 0x5A, 0x74,
+ 0x31, 0x6C, 0x22, 0x3E, 0x67, 0x62, 0x7A, 0x64,
+ 0x7B, 0x77, 0x5D, 0x54, 0x71, 0x62, 0x62, 0x3B,
+ 0x53, 0x62, 0x71, 0x73, 0x73, 0x27, 0x6F, 0x3B,
+ 0x67, 0x2E, 0x5F, 0x48, 0x48, 0x52, 0x52, 0x52,
+ 0x52, 0x52, 0x31, 0x41, 0x74, 0x41, 0x74, 0x31,
+ 0x74, 0x3A, 0x74, 0x74, 0x48, 0x48, 0x42, 0x72,
+ 0x4B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x4B, 0x68, 0x42, 0x28, 0x55, 0x74,
+ 0x5A, 0x3A, 0x48, 0x55, 0x5A, 0x31, 0x55, 0x55,
+ 0x39, 0x67, 0x2F, 0x49, 0x69, 0x27, 0x4C, 0x64,
+ 0x34, 0x5D, 0x66, 0x71, 0x62, 0x6F, 0x6F, 0x6F,
+ 0x79, 0x27, 0x66, 0x73, 0x66, 0x27, 0x6F, 0x3B,
+ 0x54, 0x24, 0x5F, 0x59, 0x24, 0x24, 0x42, 0x2E,
+ 0x48, 0x67, 0x28, 0x39, 0x52, 0x39, 0x31, 0x3E,
+ 0x55, 0x3A, 0x3A, 0x31, 0x39, 0x48, 0x24, 0x76,
+ 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x4B, 0x76, 0x24, 0x42, 0x52, 0x55,
+ 0x41, 0x31, 0x31, 0x39, 0x52, 0x52, 0x48, 0x67,
+ 0x72, 0x71, 0x6F, 0x69, 0x58, 0x2D, 0x4C, 0x34,
+ 0x7A, 0x40, 0x66, 0x54, 0x62, 0x30, 0x6F, 0x3B,
+ 0x53, 0x7A, 0x7A, 0x73, 0x3D, 0x62, 0x30, 0x6F,
+ 0x3D, 0x3D, 0x3B, 0x60, 0x2F, 0x76, 0x59, 0x59,
+ 0x59, 0x24, 0x24, 0x5F, 0x42, 0x2E, 0x28, 0x55,
+ 0x3A, 0x39, 0x39, 0x48, 0x48, 0x65, 0x68, 0x25,
+ 0x4B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x4B, 0x25, 0x72, 0x65, 0x2E, 0x28,
+ 0x52, 0x28, 0x48, 0x48, 0x2E, 0x24, 0x3F, 0x4B,
+ 0x71, 0x27, 0x30, 0x30, 0x27, 0x5D, 0x4C, 0x6A,
+ 0x7A, 0x7A, 0x5D, 0x54, 0x3B, 0x30, 0x6F, 0x71,
+ 0x27, 0x64, 0x34, 0x40, 0x3D, 0x62, 0x3B, 0x27,
+ 0x3D, 0x54, 0x71, 0x3B, 0x3B, 0x62, 0x71, 0x4B,
+ 0x43, 0x43, 0x76, 0x76, 0x72, 0x59, 0x24, 0x24,
+ 0x42, 0x2E, 0x42, 0x24, 0x2C, 0x76, 0x60, 0x50,
+ 0x4D, 0x20, 0x20, 0x20, 0x20, 0x62, 0x27, 0x3D,
+ 0x3D, 0x27, 0x62, 0x62, 0x27, 0x27, 0x62, 0x30,
+ 0x20, 0x20, 0x4B, 0x25, 0x76, 0x59, 0x24, 0x24,
+ 0x42, 0x42, 0x42, 0x65, 0x3F, 0x60, 0x6F, 0x62,
+ 0x27, 0x27, 0x62, 0x3B, 0x3D, 0x5D, 0x7A, 0x4C,
+ 0x4C, 0x4C, 0x5D, 0x71, 0x30, 0x69, 0x62, 0x54,
+ 0x7A, 0x2B, 0x34, 0x2D, 0x71, 0x27, 0x58, 0x62,
+ 0x71, 0x3D, 0x71, 0x6F, 0x30, 0x6F, 0x27, 0x54,
+ 0x3D, 0x71, 0x66, 0x4B, 0x25, 0x60, 0x76, 0x76,
+ 0x72, 0x72, 0x3F, 0x76, 0x76, 0x60, 0x50, 0x4B,
+ 0x20, 0x73, 0x3D, 0x62, 0x3B, 0x27, 0x71, 0x3D,
+ 0x3D, 0x71, 0x27, 0x62, 0x62, 0x27, 0x62, 0x3B,
+ 0x30, 0x27, 0x4D, 0x4B, 0x25, 0x76, 0x72, 0x2C,
+ 0x59, 0x2C, 0x3F, 0x76, 0x25, 0x62, 0x30, 0x3B,
+ 0x71, 0x3D, 0x71, 0x71, 0x66, 0x5D, 0x5D, 0x21,
+ 0x21, 0x21, 0x54, 0x30, 0x78, 0x69, 0x27, 0x66,
+ 0x7A, 0x4C, 0x5D, 0x3D, 0x27, 0x62, 0x62, 0x3B,
+ 0x62, 0x3D, 0x27, 0x6F, 0x30, 0x3B, 0x71, 0x54,
+ 0x3D, 0x3D, 0x54, 0x66, 0x66, 0x66, 0x4B, 0x25,
+ 0x25, 0x25, 0x25, 0x60, 0x25, 0x50, 0x4B, 0x71,
+ 0x54, 0x54, 0x71, 0x27, 0x3D, 0x54, 0x54, 0x3D,
+ 0x3D, 0x71, 0x3B, 0x3B, 0x62, 0x3B, 0x62, 0x3B,
+ 0x27, 0x54, 0x4C, 0x4D, 0x4B, 0x25, 0x76, 0x76,
+ 0x68, 0x43, 0x25, 0x50, 0x27, 0x30, 0x30, 0x58,
+ 0x27, 0x54, 0x54, 0x3D, 0x54, 0x54, 0x66, 0x54,
+ 0x66, 0x71, 0x6F, 0x78, 0x53, 0x69, 0x54, 0x73,
+ 0x66, 0x66, 0x54, 0x27, 0x27, 0x27, 0x62, 0x3B,
+ 0x3B, 0x27, 0x27, 0x3B, 0x6F, 0x62, 0x27, 0x54,
+ 0x66, 0x3D, 0x3D, 0x27, 0x27, 0x27, 0x62, 0x6F,
+ 0x78, 0x53, 0x78, 0x62, 0x66, 0x73, 0x3D, 0x3D,
+ 0x66, 0x2D, 0x54, 0x54, 0x73, 0x73, 0x54, 0x71,
+ 0x71, 0x27, 0x3B, 0x6F, 0x3B, 0x3B, 0x62, 0x3B,
+ 0x3B, 0x71, 0x73, 0x73, 0x54, 0x71, 0x62, 0x27,
+ 0x27, 0x58, 0x62, 0x71, 0x71, 0x6F, 0x6F, 0x62,
+ 0x27, 0x54, 0x66, 0x3D, 0x3D, 0x27, 0x27, 0x62,
+ 0x62, 0x6F, 0x78, 0x53, 0x78, 0x62, 0x54, 0x66,
+ 0x71, 0x3D, 0x71, 0x71, 0x62, 0x27, 0x27, 0x62,
+ 0x62, 0x71, 0x3D, 0x27, 0x27, 0x62, 0x27, 0x3D,
+ 0x54, 0x3D, 0x27, 0x62, 0x3B, 0x6F, 0x6F, 0x69,
+ 0x78, 0x78, 0x6F, 0x54, 0x73, 0x66, 0x54, 0x54,
+ 0x40, 0x5D, 0x40, 0x40, 0x40, 0x66, 0x3D, 0x71,
+ 0x27, 0x27, 0x3B, 0x30, 0x6F, 0x3B, 0x3B, 0x62,
+ 0x3B, 0x3B, 0x27, 0x71, 0x71, 0x27, 0x62, 0x62,
+ 0x62, 0x62, 0x62, 0x71, 0x71, 0x71, 0x62, 0x62,
+ 0x27, 0x71, 0x54, 0x3D, 0x27, 0x62, 0x3B, 0x6F,
+ 0x6F, 0x69, 0x49, 0x49, 0x6F, 0x3D, 0x73, 0x66
};
-unsigned char linux_logo_bw[] __initdata = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
- 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xC3,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF,
- 0xFB, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFD, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF1,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF,
- 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF9, 0xCF, 0xC3, 0xF8, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x87, 0x81, 0xF9,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xA7,
- 0x99, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xF9, 0xF3, 0xBC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF9, 0xE3, 0xBC, 0xF9, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0, 0x3C, 0xF9,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0,
- 0x19, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xF9, 0xC0, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF9, 0x80, 0x01, 0xF8, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x80, 0x01, 0xF8,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x80,
- 0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xF9, 0xC0, 0x21, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF9, 0xB1, 0x80, 0xEC, 0xC0, 0x1F,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x90, 0x00, 0xE4,
- 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8C,
- 0xC0, 0x7C, 0x04, 0x81, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xE3, 0x80, 0x00, 0x7C, 0x40, 0x11, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xE3, 0x80, 0x00, 0x7F, 0xD2, 0x29,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x3F,
- 0x80, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00,
- 0x00, 0x3F, 0x80, 0x19, 0xFF, 0xFF, 0xFF, 0xFF,
- 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x19, 0xFF, 0xFF,
- 0xFF, 0xFE, 0x1C, 0x00, 0x00, 0x1E, 0x80, 0x19,
- 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0x00, 0x00, 0x1E,
- 0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFC, 0x7C, 0x00,
- 0x00, 0x0F, 0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFC,
- 0xF8, 0x00, 0x00, 0x0E, 0x80, 0x11, 0xFF, 0xFF,
- 0xFF, 0xFC, 0xF8, 0x00, 0x00, 0x06, 0x00, 0x11,
- 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0x00, 0x00, 0x06,
- 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0x00,
- 0x00, 0x02, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xF1,
- 0xF0, 0x00, 0x00, 0x02, 0x80, 0x10, 0xFF, 0xFF,
- 0xFF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x97, 0x10,
- 0xFF, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x00, 0x00,
- 0xDF, 0xF0, 0xFF, 0xFF, 0xFF, 0xE3, 0xC0, 0x00,
- 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xC7,
- 0xC0, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF,
- 0xFF, 0xC7, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xF8,
- 0xFF, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x00, 0x01,
- 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x8F, 0x80, 0x00,
- 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x9F,
- 0x80, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF,
- 0xFF, 0x9F, 0x80, 0x00, 0x00, 0x01, 0x80, 0x18,
- 0xFF, 0xFF, 0xFF, 0x9E, 0x80, 0x00, 0x00, 0x03,
- 0xA8, 0x11, 0xFF, 0xFF, 0xFF, 0x9F, 0x80, 0x00,
- 0x00, 0x02, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x99,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF,
- 0xFF, 0x00, 0x80, 0x00, 0x00, 0x01, 0xC0, 0x01,
- 0xFF, 0xFF, 0xFE, 0x20, 0x60, 0x00, 0x00, 0x00,
- 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x00, 0x30, 0x00,
- 0x00, 0x00, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, 0x40,
- 0x38, 0x00, 0x00, 0x00, 0xFE, 0x47, 0xFF, 0xFF,
- 0x81, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xFC, 0x23,
- 0xFF, 0xFF, 0x90, 0x00, 0x1E, 0x00, 0x00, 0x00,
- 0x78, 0x11, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x80,
- 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00,
- 0x07, 0xC0, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF,
- 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x04,
- 0x7F, 0xFF, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x10,
- 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x01, 0x80,
- 0x00, 0x30, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x70, 0x00, 0x01, 0x4F, 0xFF,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
- 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x80, 0x03, 0xF0,
- 0x00, 0x00, 0x8F, 0xFF, 0x80, 0x00, 0x00, 0x40,
- 0x0F, 0xF0, 0x00, 0x04, 0x1F, 0xFF, 0x80, 0x00,
- 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x10, 0x1F, 0xFF,
- 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x40,
- 0xFF, 0xFF, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xF0,
- 0x00, 0x83, 0xFF, 0xFF, 0x81, 0xE0, 0x01, 0xFF,
- 0xFF, 0xF8, 0x02, 0x07, 0xFF, 0xFF, 0x80, 0x3F,
- 0x07, 0xE0, 0x00, 0x1C, 0x0C, 0x1F, 0xFF, 0xFF,
- 0xF8, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0x78, 0x1F,
- 0xFF, 0xFF, 0xFF, 0x80, 0x7F, 0x00, 0x07, 0x0F,
- 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x0C, 0x07,
- 0xFF, 0x83, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0x00, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-};
+#endif
-unsigned char linux_logo16_red[] __initdata = {
- 0x00, 0x90, 0xb0, 0x9c, 0xf7, 0x35, 0x83, 0xa5,
- 0x65, 0x8f, 0x98, 0xc9, 0xdb, 0xe1, 0xe7, 0xf8
-};
+#else
-unsigned char linux_logo16_green[] __initdata = {
- 0x00, 0x90, 0xb0, 0x9c, 0xf7, 0x2e, 0x83, 0xa5,
- 0x65, 0x6e, 0x98, 0x89, 0xbf, 0xac, 0xda, 0xf8
-};
+#define LINUX_LOGO_COLORS 214
-unsigned char linux_logo16_blue[] __initdata = {
- 0x00, 0x90, 0xaf, 0x9c, 0xf7, 0x2b, 0x82, 0xa5,
- 0x65, 0x41, 0x97, 0x1e, 0x60, 0x29, 0xa5, 0xf8
-};
+#endif
-unsigned char linux_logo16[] __initdata = {
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa1, 0x11, 0x11,
- 0x61, 0x16, 0x66, 0x66, 0x11, 0x11, 0x11, 0x11,
- 0x11, 0x11, 0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0xa8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x87, 0x77, 0x77, 0x77, 0x77,
- 0x77, 0x77, 0x73, 0x33, 0x33, 0x3a, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77,
- 0x77, 0x27, 0x77, 0x77, 0x77, 0x33, 0x3a, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xa3, 0x33, 0x33, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x55, 0x50, 0x08, 0x33, 0x77, 0x77,
- 0x77, 0x72, 0x72, 0x27, 0x77, 0x77, 0x33, 0x33,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xa3, 0x33, 0x33, 0x77, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x58, 0x85, 0x00, 0x11, 0x11, 0xaa,
- 0xa3, 0x37, 0x77, 0x72, 0x22, 0x22, 0x77, 0x73,
- 0x33, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3,
- 0x33, 0x37, 0x77, 0x33, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x56, 0x85, 0x00, 0x06, 0x66, 0x11,
- 0x11, 0x1a, 0xa3, 0x37, 0x77, 0x72, 0x22, 0x77,
- 0x73, 0x33, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33,
- 0x33, 0x33, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x55, 0x00, 0x00, 0x06, 0x66, 0x66,
- 0x66, 0x66, 0x11, 0x1a, 0xa3, 0x77, 0x72, 0x22,
- 0x77, 0x73, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33,
- 0x33, 0x33, 0x33, 0xa0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11,
- 0x66, 0x66, 0x66, 0x66, 0x11, 0xa3, 0x77, 0x22,
- 0x22, 0x77, 0x33, 0x33, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x33,
- 0x33, 0x3a, 0xa1, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x33,
- 0xaa, 0x11, 0x16, 0x66, 0x66, 0x61, 0x1a, 0x37,
- 0x22, 0x22, 0x77, 0x33, 0x3a, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0x33,
- 0x3a, 0xa1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x22,
- 0x22, 0x77, 0x3a, 0x11, 0x66, 0x66, 0x66, 0x1a,
- 0x37, 0x22, 0x22, 0x77, 0x33, 0x3a, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x33, 0x3a,
- 0xa1, 0x11, 0x11, 0x10, 0x00, 0x00, 0x50, 0x00,
- 0x00, 0x05, 0x80, 0x50, 0x00, 0x00, 0x07, 0x72,
- 0x22, 0x22, 0x22, 0x73, 0xa1, 0x66, 0x66, 0x61,
- 0x1a, 0x77, 0x22, 0x27, 0x73, 0x33, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x3a, 0xaa,
- 0x11, 0x11, 0x1a, 0xa0, 0x08, 0x71, 0x05, 0x00,
- 0x00, 0x12, 0x22, 0x50, 0x00, 0x00, 0x07, 0x77,
- 0x77, 0x72, 0x22, 0x22, 0x27, 0x31, 0x16, 0x66,
- 0x61, 0x13, 0x77, 0x22, 0x77, 0x33, 0x3a, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0xaa, 0xa1,
- 0x11, 0x1a, 0x33, 0x70, 0x07, 0x2e, 0x70, 0x00,
- 0x01, 0x44, 0x42, 0x60, 0x00, 0x00, 0x02, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x22, 0x27, 0x31, 0x66,
- 0x66, 0x61, 0xa3, 0x72, 0x22, 0x77, 0x33, 0xaa,
- 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0xaa, 0xaa, 0x11,
- 0x1a, 0x33, 0x77, 0x30, 0x04, 0x82, 0x40, 0x00,
- 0x54, 0x48, 0x54, 0x40, 0x00, 0x00, 0x01, 0xaa,
- 0x32, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x31,
- 0x66, 0x66, 0x11, 0x37, 0x22, 0x27, 0x73, 0x3a,
- 0xaa, 0xaa, 0xa3, 0x33, 0x3a, 0xaa, 0xaa, 0xaa,
- 0xa3, 0x77, 0xaa, 0x10, 0x50, 0x08, 0x46, 0x05,
- 0x54, 0x80, 0x50, 0x42, 0x00, 0x00, 0x08, 0x66,
- 0x66, 0x1a, 0x32, 0x22, 0x22, 0x22, 0x22, 0x27,
- 0x31, 0x66, 0x66, 0x13, 0x72, 0x22, 0x77, 0x33,
- 0xaa, 0xaa, 0xaa, 0x33, 0xaa, 0xa1, 0xaa, 0xa3,
- 0x37, 0xa1, 0x1a, 0x30, 0x50, 0x06, 0x26, 0x00,
- 0x54, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08, 0xe2,
- 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22, 0x22,
- 0x27, 0xa6, 0x66, 0x61, 0xa7, 0x72, 0x27, 0x73,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33,
- 0x31, 0x11, 0x37, 0x70, 0x02, 0x00, 0xab, 0xbb,
- 0xb6, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xee, 0xee,
- 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22,
- 0x22, 0x23, 0x16, 0x66, 0x1a, 0x37, 0x22, 0x77,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0x3a,
- 0x11, 0xa7, 0x33, 0x10, 0x04, 0x09, 0xbd, 0xdd,
- 0xbd, 0xd0, 0x04, 0x45, 0x00, 0x0e, 0xee, 0xee,
- 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22,
- 0x22, 0x22, 0x71, 0x66, 0x66, 0x13, 0x72, 0x27,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x11,
- 0xa3, 0x73, 0xa1, 0x60, 0x08, 0xbd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdb, 0x90, 0x00, 0x02, 0xec, 0xee,
- 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xce, 0x22,
- 0x22, 0x22, 0x27, 0xa6, 0x66, 0x61, 0x37, 0x27,
- 0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0xa1, 0x1a,
- 0x33, 0xa1, 0x16, 0x60, 0x0b, 0xbd, 0xdd, 0xdd,
- 0xcd, 0xdd, 0xdd, 0xd9, 0x00, 0x00, 0xec, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xa2,
- 0x22, 0x22, 0x22, 0x7a, 0x66, 0x66, 0x13, 0x77,
- 0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0x3a, 0x11, 0x33,
- 0xaa, 0x11, 0x66, 0x60, 0x9b, 0xdd, 0xdd, 0xdd,
- 0xcd, 0xdd, 0xdb, 0xb9, 0x00, 0x00, 0xec, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0x61,
- 0x72, 0x22, 0x22, 0x22, 0xa1, 0x66, 0x61, 0x37,
- 0x1a, 0xaa, 0xaa, 0xaa, 0xa3, 0xa1, 0x13, 0x3a,
- 0x11, 0x11, 0x11, 0x10, 0x5b, 0xdd, 0xdd, 0xdc,
- 0xdd, 0xdd, 0xbd, 0xd9, 0x00, 0x00, 0xec, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0x86,
- 0x17, 0x22, 0x22, 0x22, 0x23, 0x16, 0x66, 0xaa,
- 0xaa, 0xa3, 0x3a, 0xaa, 0xaa, 0x1a, 0x3a, 0xa1,
- 0x11, 0x11, 0x1a, 0x70, 0x05, 0xbd, 0xdd, 0xdd,
- 0xdb, 0x5b, 0xdd, 0xb0, 0x00, 0x60, 0x2e, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6, 0x88,
- 0x66, 0x32, 0x22, 0x22, 0x22, 0x36, 0x66, 0x11,
- 0x33, 0x33, 0x3a, 0xaa, 0x11, 0xaa, 0xaa, 0xa1,
- 0x11, 0x1a, 0x3a, 0x60, 0x02, 0x99, 0xbb, 0xb9,
- 0x9b, 0xbb, 0xbc, 0x22, 0x00, 0x86, 0x5e, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe1, 0x68,
- 0x86, 0x63, 0x22, 0x22, 0x22, 0x2a, 0x66, 0x66,
- 0x33, 0x33, 0xaa, 0xaa, 0x1a, 0xaa, 0xaa, 0x11,
- 0x1a, 0xa7, 0x68, 0x80, 0x02, 0x2b, 0xbd, 0xbb,
- 0xbb, 0xb9, 0x22, 0x22, 0x00, 0x06, 0x6e, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc7, 0xa6,
- 0x88, 0x86, 0x32, 0x22, 0x22, 0x27, 0xa6, 0x66,
- 0x33, 0x3a, 0xaa, 0xa1, 0xaa, 0xaa, 0xa1, 0x11,
- 0xa3, 0xa6, 0x88, 0x80, 0x02, 0x22, 0x9b, 0xbb,
- 0xbb, 0x22, 0x24, 0xf4, 0x60, 0x00, 0x0c, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc2, 0x21,
- 0x68, 0x88, 0x63, 0x22, 0x22, 0x22, 0x71, 0x66,
- 0x33, 0x3a, 0x11, 0x11, 0xaa, 0xaa, 0x11, 0xaa,
- 0x71, 0x88, 0x88, 0x00, 0x02, 0xe2, 0x26, 0x99,
- 0x22, 0x22, 0x4f, 0xf4, 0x40, 0x00, 0x0c, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x22, 0x22,
- 0x16, 0x88, 0x86, 0xa2, 0x22, 0x22, 0x27, 0x11,
- 0x33, 0xa1, 0x11, 0x11, 0xaa, 0x31, 0x1a, 0xa3,
- 0x68, 0x88, 0x81, 0x00, 0x54, 0x42, 0x22, 0x22,
- 0x22, 0x44, 0xff, 0xff, 0x48, 0x00, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x22, 0x22,
- 0x21, 0x88, 0x88, 0x6a, 0x22, 0x22, 0x22, 0x31,
- 0x3a, 0xa1, 0x11, 0x1a, 0xa3, 0x11, 0x33, 0x36,
- 0x88, 0x86, 0x30, 0x00, 0x4f, 0x44, 0x22, 0x22,
- 0x24, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x95, 0x22, 0x72,
- 0x22, 0x18, 0x88, 0x86, 0x32, 0x22, 0x22, 0x27,
- 0xaa, 0x11, 0x11, 0x1a, 0x31, 0x13, 0x33, 0x68,
- 0x88, 0x6a, 0x00, 0x02, 0x4f, 0x4f, 0x42, 0x24,
- 0x4f, 0xff, 0xff, 0xff, 0xf4, 0x50, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x22, 0x73,
- 0x72, 0x26, 0x88, 0x88, 0x63, 0x22, 0x22, 0x22,
- 0x11, 0x11, 0x11, 0xa3, 0xa1, 0x73, 0xa6, 0x88,
- 0x81, 0xa5, 0x00, 0x04, 0x4f, 0x4f, 0x44, 0x4f,
- 0xff, 0xff, 0xff, 0xff, 0xf4, 0x40, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x12, 0x27,
- 0xaa, 0x22, 0x68, 0x55, 0x86, 0x72, 0x22, 0x22,
- 0x11, 0x11, 0x1a, 0x33, 0x13, 0x3a, 0x18, 0x88,
- 0x1a, 0x10, 0x00, 0x44, 0x4f, 0x4f, 0xff, 0x4f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x61, 0x22,
- 0x3a, 0xa2, 0x26, 0x85, 0x58, 0x67, 0x22, 0x22,
- 0x61, 0x61, 0x1a, 0x7a, 0x37, 0x31, 0x88, 0x81,
- 0x11, 0x00, 0x05, 0xe4, 0x44, 0xff, 0xff, 0xff,
- 0x4f, 0xf4, 0x44, 0xff, 0xff, 0xf5, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x88, 0x12,
- 0x2a, 0xaa, 0x72, 0x68, 0x55, 0x81, 0x22, 0x22,
- 0x66, 0x61, 0xa3, 0x33, 0x73, 0x16, 0x88, 0x11,
- 0x10, 0x00, 0x08, 0x74, 0x44, 0x4f, 0x44, 0x44,
- 0xf4, 0xf4, 0x44, 0x44, 0xe2, 0x44, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x88, 0x81,
- 0x22, 0xaa, 0xa7, 0x26, 0x85, 0x88, 0x12, 0x22,
- 0x66, 0x61, 0x37, 0xa7, 0x3a, 0x66, 0x66, 0x11,
- 0x80, 0x00, 0x0a, 0x72, 0x44, 0x4f, 0x44, 0x4f,
- 0xff, 0x44, 0x44, 0x22, 0x22, 0x24, 0x00, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x85, 0x88,
- 0x12, 0x2a, 0xaa, 0x22, 0x68, 0x58, 0x63, 0x22,
- 0x66, 0x1a, 0x73, 0x77, 0x31, 0x66, 0x61, 0x11,
- 0x00, 0x00, 0x07, 0x44, 0xff, 0x4f, 0xf4, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0x42, 0x22, 0x40, 0x9b,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x85, 0x55,
- 0x81, 0x27, 0xaa, 0xa2, 0x78, 0x88, 0x86, 0x72,
- 0x66, 0x13, 0x77, 0x73, 0x11, 0x66, 0x61, 0x76,
- 0x00, 0x50, 0x84, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x42, 0x40, 0x9b,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x68, 0x55,
- 0x58, 0x12, 0x3a, 0xaa, 0x23, 0x88, 0x88, 0xa7,
- 0x66, 0xa7, 0x77, 0x7a, 0x16, 0x66, 0x1a, 0x15,
- 0x05, 0x00, 0x4f, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0x24, 0x9b,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x26, 0x55,
- 0x55, 0x81, 0x23, 0xaa, 0x32, 0x18, 0x88, 0x6a,
- 0x61, 0x37, 0x77, 0x31, 0x66, 0x66, 0x17, 0x60,
- 0x05, 0x08, 0x4f, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x4e, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0xa2, 0x65,
- 0x55, 0x58, 0xa2, 0x7a, 0xa2, 0x26, 0x88, 0x61,
- 0x61, 0x32, 0x27, 0xa1, 0x66, 0x61, 0x31, 0x60,
- 0x00, 0x04, 0x4f, 0xf4, 0xff, 0x44, 0x44, 0xff,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0xf4, 0x99,
- 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x9b, 0xaa, 0x26,
- 0x55, 0x55, 0x87, 0x27, 0x33, 0x27, 0x68, 0x61,
- 0x1a, 0x72, 0x27, 0xa6, 0x66, 0x6a, 0x71, 0x00,
- 0x80, 0x84, 0xff, 0xf4, 0xff, 0x44, 0x44, 0xff,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0xf4, 0x99,
- 0x9b, 0x9b, 0x99, 0xb9, 0xb9, 0x99, 0xaa, 0xa2,
- 0x85, 0x55, 0x56, 0x22, 0x27, 0x22, 0x36, 0x66,
- 0x13, 0x22, 0x23, 0x16, 0x86, 0x63, 0x73, 0x00,
- 0x00, 0x44, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0xff,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x4f, 0x99,
- 0x9b, 0x99, 0x99, 0x99, 0xb9, 0x99, 0xaa, 0xaa,
- 0x28, 0x55, 0x58, 0x12, 0x22, 0x22, 0x21, 0x11,
- 0xa3, 0x27, 0x7a, 0x66, 0x86, 0x17, 0x75, 0x05,
- 0x05, 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0xff,
- 0xff, 0x4f, 0x44, 0x4f, 0x4f, 0x44, 0x4f, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x3a, 0xaa,
- 0xa2, 0x85, 0x58, 0x67, 0x72, 0x22, 0x27, 0xa1,
- 0x37, 0x27, 0x7a, 0x68, 0x86, 0xa2, 0x70, 0x00,
- 0x02, 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0xf4, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x23, 0xaa,
- 0xa7, 0x78, 0x88, 0x81, 0x77, 0x22, 0x27, 0x3a,
- 0x72, 0x73, 0x71, 0x68, 0x66, 0x32, 0x50, 0x00,
- 0x04, 0x4f, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0x44, 0x95,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x55, 0x12, 0x3a,
- 0xaa, 0x21, 0x88, 0x81, 0x77, 0x27, 0x73, 0x73,
- 0x72, 0x33, 0x36, 0x86, 0x61, 0x72, 0x00, 0x00,
- 0x04, 0x44, 0xf4, 0xf4, 0xf4, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x44, 0x55,
- 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x8a, 0x27,
- 0xaa, 0x77, 0x68, 0x61, 0x23, 0x71, 0x11, 0x3a,
- 0x27, 0xa3, 0x36, 0x86, 0x61, 0x20, 0x00, 0x00,
- 0x04, 0xf4, 0xf4, 0xf4, 0xf4, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x41, 0x59,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x95, 0x58, 0x77,
- 0x27, 0x32, 0x36, 0x63, 0x23, 0x71, 0x66, 0x11,
- 0x27, 0x13, 0xa6, 0x86, 0x6a, 0x20, 0x00, 0x50,
- 0x04, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x41, 0x99,
- 0x9b, 0xbb, 0xbb, 0xbb, 0xb9, 0x99, 0x68, 0x13,
- 0x32, 0x22, 0x73, 0xa7, 0x2a, 0x31, 0x88, 0x66,
- 0x7a, 0x13, 0x18, 0x66, 0x63, 0x20, 0x00, 0x06,
- 0x0f, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x49, 0x95,
- 0xa9, 0xa9, 0x99, 0x97, 0x92, 0x99, 0x65, 0x6a,
- 0x17, 0x22, 0x23, 0x72, 0x27, 0xaa, 0x88, 0x88,
- 0xa1, 0x17, 0x68, 0x66, 0x67, 0x70, 0x00, 0x05,
- 0x0f, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0xf4, 0xf4, 0x49, 0x9c,
- 0x2e, 0xee, 0xee, 0xee, 0xee, 0xa9, 0x65, 0x8a,
- 0x1a, 0xaa, 0x37, 0x72, 0x27, 0x37, 0x88, 0x88,
- 0x11, 0x17, 0x68, 0x66, 0x67, 0x10, 0x9d, 0xd0,
- 0x84, 0x44, 0xff, 0x4f, 0x4f, 0x44, 0xf4, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0xf4, 0xf4, 0x4f, 0x69,
- 0xcc, 0xee, 0xee, 0xee, 0xec, 0x99, 0x88, 0x63,
- 0x61, 0x68, 0x61, 0x72, 0x22, 0x7a, 0x68, 0x88,
- 0x11, 0x17, 0x88, 0x66, 0x12, 0x1b, 0xdd, 0xdd,
- 0x02, 0x44, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xff, 0xff, 0x4f, 0x4c, 0xc5,
- 0x0c, 0xc1, 0x11, 0x1c, 0xc0, 0x26, 0x66, 0x17,
- 0x66, 0x88, 0x88, 0x12, 0x22, 0x23, 0xa8, 0x88,
- 0x11, 0x13, 0x88, 0x66, 0x17, 0xbb, 0xdd, 0xdd,
- 0xd0, 0x8f, 0xff, 0xf4, 0xf4, 0x44, 0xf4, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0x4f, 0x44, 0xdd, 0xdd,
- 0x00, 0x00, 0x00, 0x05, 0x9d, 0x21, 0x66, 0x27,
- 0xa6, 0x65, 0x58, 0x67, 0x22, 0x27, 0x28, 0x88,
- 0x11, 0xaa, 0x86, 0x68, 0x1a, 0xbb, 0xdd, 0xdd,
- 0xdb, 0x05, 0xf4, 0xf4, 0xf4, 0xf4, 0x44, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0xdd, 0xdb,
- 0x00, 0x00, 0x00, 0x00, 0xdd, 0xda, 0x66, 0x22,
- 0x71, 0x15, 0x55, 0x81, 0x22, 0x22, 0x76, 0x88,
- 0x11, 0x31, 0x88, 0x88, 0xab, 0xbd, 0xdd, 0xdd,
- 0xdd, 0x00, 0x04, 0x44, 0xff, 0xff, 0x4f, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0xf4, 0x44, 0xdd, 0xdb,
- 0x00, 0x00, 0x00, 0x0b, 0xdd, 0xda, 0x11, 0x22,
- 0x23, 0x68, 0x55, 0x86, 0x22, 0x22, 0x7a, 0x88,
- 0x1a, 0x71, 0x88, 0x89, 0xbb, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xd0, 0x00, 0x4f, 0x44, 0xff, 0x4f, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0xff, 0xe2, 0xdd, 0xdb,
- 0x90, 0x00, 0x05, 0xbd, 0xdd, 0xb8, 0x63, 0x22,
- 0x27, 0xa6, 0x55, 0x88, 0x77, 0x22, 0x22, 0x88,
- 0x1a, 0x28, 0xbd, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdb, 0x00, 0x07, 0x44, 0x4f, 0x4f, 0x4f,
- 0xff, 0x4f, 0x44, 0x4f, 0x4f, 0x22, 0xdd, 0xdb,
- 0xbb, 0x9b, 0xbb, 0xbd, 0xdd, 0xd5, 0x86, 0x22,
- 0x22, 0x77, 0x85, 0x88, 0x17, 0x22, 0x22, 0x88,
- 0xaa, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0x00, 0x00, 0x54, 0x4f, 0x4f, 0x4f,
- 0xff, 0x4f, 0x44, 0xf4, 0x44, 0x22, 0xbd, 0xdd,
- 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0x88, 0x72,
- 0x27, 0x22, 0x88, 0x88, 0x67, 0x72, 0x22, 0x18,
- 0x33, 0x2d, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xd0, 0x00, 0x05, 0x4f, 0x4f, 0x4f,
- 0xff, 0x4f, 0x44, 0x44, 0x4f, 0x22, 0xbd, 0xdd,
- 0xdb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0x88, 0x17,
- 0x27, 0x72, 0x68, 0x88, 0x87, 0x32, 0x22, 0x36,
- 0x37, 0x2d, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xd5, 0x00, 0x00, 0x4f, 0x4f, 0x4f,
- 0xff, 0xf4, 0xf4, 0xf4, 0xf4, 0x22, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd8, 0x67,
- 0x72, 0x77, 0x38, 0x88, 0x83, 0x37, 0x22, 0x26,
- 0x72, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0x00, 0x00, 0x4f, 0x4f, 0x4f,
- 0xff, 0xf4, 0xf4, 0xf4, 0x44, 0x25, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd3,
- 0x32, 0x73, 0x76, 0x88, 0x81, 0x33, 0x22, 0x2a,
- 0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xb0, 0x54, 0x4f, 0x4f, 0x4f,
- 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x00, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xa7, 0x73, 0x26, 0x88, 0x86, 0x7a, 0x72, 0x27,
- 0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdb, 0x44, 0xff, 0x4f, 0x4f,
- 0xff, 0xf4, 0xf4, 0x44, 0x40, 0x05, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0x13, 0x23, 0x21, 0x68, 0x86, 0x17, 0x72, 0x22,
- 0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdb, 0x44, 0x4f, 0x4f, 0x4f,
- 0xff, 0xff, 0x44, 0x42, 0x00, 0x05, 0xbd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0x87, 0x27, 0x27, 0x16, 0x66, 0x67, 0x22, 0x22,
- 0x72, 0x7b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0x94, 0x44, 0x44, 0x44,
- 0x44, 0x44, 0x44, 0x00, 0x00, 0x05, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xb8,
- 0x86, 0x22, 0x22, 0x7a, 0x68, 0x81, 0x22, 0x22,
- 0x37, 0x7b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdb, 0xb5, 0x44, 0x44, 0x44,
- 0x44, 0x47, 0x00, 0x00, 0x00, 0x05, 0xbd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd8, 0x68,
- 0x58, 0x72, 0x22, 0x27, 0x18, 0x86, 0x72, 0x22,
- 0x1a, 0xbb, 0xbd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdb, 0xb5, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xb9, 0x18, 0x85,
- 0x58, 0x12, 0x22, 0x36, 0x18, 0x88, 0x32, 0x22,
- 0x61, 0x3b, 0xbb, 0xbb, 0xbd, 0xdd, 0xdd, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdb, 0xb9, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xbb, 0xdd,
- 0xdd, 0xdd, 0xdd, 0xdd, 0xb9, 0x7a, 0x68, 0x85,
- 0x88, 0x62, 0x27, 0x16, 0x18, 0x88, 0x12, 0x27,
- 0x86, 0x18, 0x9b, 0xbb, 0xbb, 0xbb, 0xbb, 0xbd,
- 0xdd, 0xdd, 0xdd, 0xbb, 0xb5, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xbb, 0xbd,
- 0xdd, 0xdd, 0xdb, 0xbb, 0x87, 0x31, 0x68, 0x65,
- 0x88, 0x82, 0x23, 0x16, 0x18, 0x88, 0x12, 0x23,
- 0x88, 0x67, 0x27, 0xa8, 0x9b, 0xbb, 0xbb, 0xbb,
- 0xbd, 0xdd, 0xbb, 0xbb, 0x95, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x9b, 0xbb,
- 0xbb, 0xbb, 0xbb, 0x96, 0x87, 0x16, 0x68, 0x18,
- 0x88, 0x62, 0x31, 0x66, 0x18, 0x88, 0x62, 0x73,
- 0x88, 0x63, 0x27, 0x33, 0x65, 0x55, 0x99, 0x9b,
- 0xbb, 0xbb, 0xbb, 0x99, 0x55, 0x0a, 0xa1, 0x86,
- 0x81, 0x68, 0x88, 0x55, 0x58, 0x85, 0x9b, 0xbb,
- 0xbb, 0xbb, 0x95, 0x88, 0x83, 0x66, 0x66, 0x18,
- 0x66, 0x82, 0xa1, 0x66, 0x18, 0x88, 0x62, 0x33,
- 0x88, 0x81, 0x27, 0x7a, 0x18, 0x58, 0x86, 0x85,
- 0x99, 0x99, 0x99, 0x95, 0x53, 0x2a, 0xaa, 0x88,
- 0x67, 0x31, 0x68, 0x55, 0x58, 0x85, 0x59, 0xbb,
- 0xbb, 0xb9, 0x58, 0x68, 0x83, 0x66, 0x61, 0x16,
- 0x66, 0x62, 0x16, 0x66, 0x68, 0x88, 0x62, 0xaa,
- 0x88, 0x86, 0x27, 0x77, 0x78, 0x55, 0x88, 0x22,
- 0x25, 0x55, 0x95, 0x55, 0x6a, 0xa2, 0x2a, 0x88,
- 0x62, 0x27, 0x37, 0x38, 0x88, 0x87, 0x55, 0x59,
- 0x95, 0x58, 0x16, 0x88, 0x8a, 0x66, 0x63, 0x68,
- 0x86, 0x67, 0x66, 0x66, 0x68, 0x88, 0x12, 0x11,
- 0x88, 0x88, 0x72, 0x77, 0x78, 0x85, 0x58, 0x17,
- 0x23, 0x32, 0x55, 0x55, 0x81, 0x13, 0x73, 0x66,
- 0x62, 0x7a, 0xaa, 0x38, 0x88, 0x58, 0x27, 0x55,
- 0x58, 0x32, 0x38, 0x88, 0x81, 0x66, 0xa2, 0x88,
- 0x86, 0x61, 0x66, 0x61, 0x66, 0x68, 0x13, 0x11,
- 0x88, 0x88, 0x12, 0x22, 0x71, 0x85, 0x58, 0x62,
- 0x23, 0xa2, 0x68, 0x88, 0x81, 0x66, 0x88, 0x88,
- 0x63, 0x2a, 0xaa, 0x28, 0x88, 0x55, 0x86, 0x61,
- 0x66, 0x66, 0x68, 0x88, 0x66, 0x66, 0x77, 0x88,
- 0x68, 0x16, 0x66, 0x62, 0x66, 0x68, 0xa1, 0x61,
- 0x88, 0x88, 0x62, 0x22, 0x22, 0x85, 0x55, 0x83,
- 0x72, 0x37, 0xa8, 0x88, 0x61, 0x66, 0x85, 0x55,
- 0x86, 0x23, 0xaa, 0x71, 0x88, 0x85, 0x88, 0x66,
- 0x88, 0x86, 0x88, 0x88, 0x16, 0x61, 0x21, 0x88,
- 0x66, 0xa6, 0x86, 0x17, 0x66, 0x66, 0x31, 0x61,
- 0x88, 0x88, 0x87, 0x72, 0x22, 0x68, 0x55, 0x86,
- 0x77, 0x77, 0x36, 0x88, 0x13, 0x68, 0x85, 0x55,
- 0x58, 0x12, 0x73, 0x72, 0x76, 0x88, 0x88, 0x68,
- 0x88, 0x88, 0x88, 0x66, 0x36, 0x63, 0x26, 0x86,
- 0x86, 0x36, 0x86, 0x11, 0x66, 0x66, 0x76, 0x61,
- 0x88, 0x88, 0x81, 0x22, 0x22, 0x38, 0x85, 0x58,
- 0x37, 0x22, 0x21, 0x68, 0xa2, 0x31, 0x68, 0x55,
- 0x55, 0x81, 0x22, 0x22, 0xa8, 0x88, 0x88, 0x68,
- 0x86, 0x88, 0x68, 0x81, 0x36, 0x17, 0x21, 0x68,
- 0x86, 0x16, 0x66, 0x26, 0x66, 0x61, 0x36, 0x66,
- 0x68, 0x88, 0x86, 0x27, 0x22, 0x28, 0x88, 0x88,
- 0x17, 0x72, 0x2a, 0x66, 0xa2, 0x22, 0x36, 0x55,
- 0x55, 0x58, 0x37, 0x3a, 0x16, 0x66, 0x66, 0x66,
- 0x66, 0x18, 0x88, 0x67, 0x16, 0x12, 0x71, 0x68,
- 0x81, 0x68, 0x61, 0x76, 0x66, 0x6a, 0x16, 0x66,
- 0x88, 0x88, 0x86, 0x77, 0x22, 0x26, 0x88, 0x88,
- 0x13, 0x37, 0x71, 0x66, 0xa2, 0x33, 0x2a, 0x85,
- 0x55, 0x55, 0x17, 0x73, 0x16, 0x66, 0x66, 0x68,
- 0x63, 0x88, 0x88, 0xa2, 0x66, 0xa2, 0xa6, 0x88,
- 0x61, 0x68, 0x6a, 0x76, 0x66, 0x6a, 0x66, 0x6a
-};
+#ifdef INCLUDE_LINUX_LOGO_DATA
+
+#define INCLUDE_LINUX_LOGOBW
+#define INCLUDE_LINUX_LOGO16
+#include <linux/linux_logo.h>
#else
diff --git a/include/asm-m68k/mac_psc.h b/include/asm-m68k/mac_psc.h
new file mode 100644
index 000000000..de22bbefe
--- /dev/null
+++ b/include/asm-m68k/mac_psc.h
@@ -0,0 +1,73 @@
+/*
+ * Apple Peripheral System Controller (PSC)
+ *
+ * The PSC is used on the AV Macs to control IO functions not handled
+ * by the VIAs (Ethernet, DSP, SCC).
+ */
+
+#define PSCBASE 0x50F31000
+
+/*
+ * The IER/IFR registers work like the VIA, except that it has 4
+ * of them each on different interrupt levels.
+ */
+
+#define pIFR3 0x130
+#define pIFR4 0x140
+#define pIFR5 0x150
+#define pIFR6 0x160
+
+#define pIER3 0x134
+#define pIER4 0x144
+#define pIER5 0x154
+#define pIER6 0x164
+
+/*
+ * Ethernet Control Registers
+ */
+
+#define PSC_ENETRD_CTL 0xc10
+#define PSC_ENETWR_CTL 0xc20
+
+/*
+ * Receive DMA channel (add +0x10 for 2nd channel)
+ */
+
+#define PSC_ENETRD_ADDR 0x1020
+#define PSC_ENETRD_LEN 0x1024
+#define PSC_ENETRD_CMD 0x1028
+
+/*
+ * Transmit DMA channel (add +0x10 for 2nd channel)
+ */
+
+#define PSC_ENETWR_ADDR 0x1040
+#define PSC_ENETWR_LEN 0x1044
+#define PSC_ENETWR_CMD 0x1048
+
+/*
+ * Access functions
+ */
+
+extern volatile unsigned char *psc;
+
+extern inline void psc_write_word(int offset, u16 data)
+{
+ *((volatile u16 *)(psc+offset)) = data;
+}
+
+extern inline void psc_write_long(int offset, u32 data)
+{
+ *((volatile u32 *)(psc+offset)) = data;
+}
+
+extern inline u16 psc_read_word(int offset)
+{
+ return *((volatile u16 *)(psc+offset));
+}
+
+extern inline u32 psc_read_long(int offset)
+{
+ return *((volatile u32 *)(psc+offset));
+}
+
diff --git a/include/asm-m68k/machdep.h b/include/asm-m68k/machdep.h
index 5e2b138e9..2d8959093 100644
--- a/include/asm-m68k/machdep.h
+++ b/include/asm-m68k/machdep.h
@@ -37,6 +37,7 @@ extern long mach_max_dma_address;
extern void (*mach_floppy_setup)(char *, int *);
extern void (*mach_floppy_eject)(void);
extern void (*mach_heartbeat) (int);
+extern void (*mach_l2_flush) (int);
extern int mach_sysrq_key;
extern int mach_sysrq_shift_state;
extern int mach_sysrq_shift_mask;
diff --git a/include/asm-m68k/macintosh.h b/include/asm-m68k/macintosh.h
index a084447f5..28dad71ca 100644
--- a/include/asm-m68k/macintosh.h
+++ b/include/asm-m68k/macintosh.h
@@ -80,6 +80,7 @@ struct mac_model
#define MAC_ETHER_NONE 0
#define MAC_ETHER_SONIC 1
+#define MAC_ETHER_MACE 2
#define MAC_NO_NUBUS 0
#define MAC_NUBUS 1
@@ -99,48 +100,48 @@ struct mac_model
#define MAC_MODEL_Q900 20
#define MAC_MODEL_PB170 21
#define MAC_MODEL_Q700 22
-#define MAC_MODEL_CLII 23
+#define MAC_MODEL_CLII 23 /* aka: P200 */
#define MAC_MODEL_PB140 25
-#define MAC_MODEL_Q950 26
+#define MAC_MODEL_Q950 26 /* aka: WGS95 */
#define MAC_MODEL_LCIII 27 /* aka: P450 */
#define MAC_MODEL_PB210 29
#define MAC_MODEL_C650 30
#define MAC_MODEL_PB230 32
#define MAC_MODEL_PB180 33
#define MAC_MODEL_PB160 34
-#define MAC_MODEL_Q800 35
+#define MAC_MODEL_Q800 35 /* aka: WGS80 */
#define MAC_MODEL_Q650 36
#define MAC_MODEL_LCII 37 /* aka: P400/405/410/430 */
#define MAC_MODEL_PB250 38
#define MAC_MODEL_IIVI 44
-#define MAC_MODEL_P600 45
+#define MAC_MODEL_P600 45 /* aka: P600CD */
#define MAC_MODEL_IIVX 48
-#define MAC_MODEL_CCL 49
+#define MAC_MODEL_CCL 49 /* aka: P250 */
#define MAC_MODEL_PB165C 50
-#define MAC_MODEL_C610 52
+#define MAC_MODEL_C610 52 /* aka: WGS60 */
#define MAC_MODEL_Q610 53
-#define MAC_MODEL_PB145 54
+#define MAC_MODEL_PB145 54 /* aka: PB145B */
#define MAC_MODEL_P520 56 /* aka: LC520 */
#define MAC_MODEL_C660 60
-#define MAC_MODEL_P460 62 /* aka: LCIII+, P466/7 */
+#define MAC_MODEL_P460 62 /* aka: LCIII+, P466/P467 */
#define MAC_MODEL_PB180C 71
-#define MAC_MODEL_PB520 72
+#define MAC_MODEL_PB520 72 /* aka: PB520C, PB540, PB540C, PB550C */
#define MAC_MODEL_PB270C 77
#define MAC_MODEL_Q840 78
-#define MAC_MODEL_P550 80
-#define MAC_MODEL_CCLII 83
+#define MAC_MODEL_P550 80 /* aka: LC550, P560 */
+#define MAC_MODEL_CCLII 83 /* aka: P275 */
#define MAC_MODEL_PB165 84
-#define MAC_MODEL_PB190 85
#define MAC_MODEL_TV 88
#define MAC_MODEL_P475 89 /* aka: LC475, P476 */
#define MAC_MODEL_P475F 90 /* aka: P475 w/ FPU (no LC040) */
-#define MAC_MODEL_P575 92 /* aka: LC575/580, P577/578/508 */
+#define MAC_MODEL_P575 92 /* aka: LC575, P577/P578 */
#define MAC_MODEL_Q605 94
-#define MAC_MODEL_Q630 98 /* aka: LC630, P630/631/636/640 */
-#define MAC_MODEL_P588 99 /* aka: ?? */
+#define MAC_MODEL_Q630 98 /* aka: LC630, P630/631/635/636/637/638/640 */
+#define MAC_MODEL_P588 99 /* aka: LC580, P580 */
#define MAC_MODEL_PB280 102
#define MAC_MODEL_PB280C 103
#define MAC_MODEL_PB150 115
+#define MAC_MODEL_PB190 122 /* aka: PB190CS */
extern struct mac_model *macintosh_config;
diff --git a/include/asm-m68k/namei.h b/include/asm-m68k/namei.h
index d01ddf852..7b4f02680 100644
--- a/include/asm-m68k/namei.h
+++ b/include/asm-m68k/namei.h
@@ -12,7 +12,7 @@
* Look at asm-sparc/namei.h for details.
*/
-#define __prefix_lookup_dentry(name, follow_link) \
+#define __prefix_lookup_dentry(name, lookup_flags) \
do {} while (0)
#endif
diff --git a/include/asm-m68k/serial.h b/include/asm-m68k/serial.h
index 191c5d551..a5f0abeb3 100644
--- a/include/asm-m68k/serial.h
+++ b/include/asm-m68k/serial.h
@@ -336,9 +336,21 @@ static __inline__ void rs_receive_char( struct m68k_async_struct *info,
if (tty->flip.count >= TTY_FLIPBUF_SIZE)
return;
tty->flip.count++;
- if (err == TTY_BREAK) {
+ switch(err) {
+ case TTY_BREAK:
+ info->icount.brk++;
if (info->flags & ASYNC_SAK)
do_SAK(tty);
+ break;
+ case TTY_PARITY:
+ info->icount.parity++;
+ break;
+ case TTY_OVERRUN:
+ info->icount.overrun++;
+ break;
+ case TTY_FRAME:
+ info->icount.frame++;
+ break;
}
*tty->flip.flag_buf_ptr++ = err;
*tty->flip.char_buf_ptr++ = ch;
diff --git a/include/asm-m68k/stat.h b/include/asm-m68k/stat.h
index 2e35a9e82..919520ff1 100644
--- a/include/asm-m68k/stat.h
+++ b/include/asm-m68k/stat.h
@@ -38,42 +38,4 @@ struct stat {
unsigned long __unused5;
};
-#if 0
-typedef struct {
- unsigned int major;
- unsigned int minor;
-} __new_dev_t;
-
-struct stat64 {
- __new_dev_t st_dev;
- __u64 st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
- unsigned int st_uid;
- unsigned int st_gid;
- __new_dev_t st_rdev;
- __s64 st_size;
- __u64 st_blocks;
- unsigned long st_atime;
- unsigned long __unused1;
- unsigned long st_mtime;
- unsigned long __unused2;
- unsigned long st_ctime;
- unsigned long __unused3;
- unsigned long st_blksize;
- unsigned long __unused4;
-};
-#endif
-
-#define __XSTAT_VER_1 1
-#define __XSTAT_VER_2 2
-#define __XSTAT_VER_MASK 0xff
-
-#define __XSTAT_VER_XSTAT 0x000
-#define __XSTAT_VER_LXSTAT 0x100
-#define __XSTAT_VER_FXSTAT 0x200
-#define __XSTAT_VER_TYPEMASK 0xff00
-
-#define __XMKNOD_VER_1 1
-
#endif /* _M68K_STAT_H */
diff --git a/include/asm-m68k/termios.h b/include/asm-m68k/termios.h
index 24408872e..b17fed223 100644
--- a/include/asm-m68k/termios.h
+++ b/include/asm-m68k/termios.h
@@ -55,7 +55,9 @@ struct termio {
#define N_AX25 5
#define N_X25 6 /* X.25 async */
#define N_6PACK 7
-#define N_MASC 8 /* Reserved fo Mobitex module <kaz@cafe.net> */
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-m68k/unistd.h b/include/asm-m68k/unistd.h
index 2bfda1a3c..2ad5c196c 100644
--- a/include/asm-m68k/unistd.h
+++ b/include/asm-m68k/unistd.h
@@ -5,7 +5,6 @@
* This file contains the system call numbers.
*/
-#define __NR_setup 0 /* used only by init, to get system going */
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
@@ -192,8 +191,8 @@
#define __NR_capset 185
#define __NR_sigaltstack 186
#define __NR_sendfile 187
-#define __NR_streams1 188 /* some people actually want it */
-#define __NR_streams2 189 /* some people actually want it */
+#define __NR_getpmsg 188 /* some people actually want streams */
+#define __NR_putpmsg 189 /* some people actually want streams */
/* user-visible error numbers are in the range -1 - -122: see
<asm-m68k/errno.h> */
@@ -311,7 +310,6 @@ __syscall_return(type,__res); \
#define __NR__exit __NR_exit
static inline _syscall0(int,idle)
static inline _syscall0(int,pause)
-static inline _syscall1(int,setup,int,magic)
static inline _syscall0(int,sync)
static inline _syscall0(pid_t,setsid)
static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
diff --git a/include/asm-m68k/xstat.h b/include/asm-m68k/xstat.h
deleted file mode 100644
index a0374fcfd..000000000
--- a/include/asm-m68k/xstat.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* $Id: xstat.h,v 1.1 1998/02/06 12:51:30 jj Exp $
- * xstat.h: sys_xstat/xmknod architecture dependent stuff.
- *
- * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
- */
-
-extern __inline__ int cp_xstat(struct inode *inode, struct stat64 *s, unsigned long blocks, int blksize)
-{
- struct stat64 tmp;
-
- memset (&tmp, 0, sizeof(tmp));
- tmp.st_dev.major = MAJOR(inode->i_dev);
- tmp.st_dev.minor = MINOR(inode->i_dev);
- tmp.st_ino = inode->i_ino;
- tmp.st_mode = inode->i_mode;
- tmp.st_nlink = inode->i_nlink;
- tmp.st_uid = inode->i_uid;
- tmp.st_gid = inode->i_gid;
- tmp.st_rdev.major = MAJOR(inode->i_rdev);
- tmp.st_rdev.minor = MINOR(inode->i_rdev);
- tmp.st_size = inode->i_size;
- tmp.st_blksize = blksize;
- tmp.st_blocks = blocks;
- tmp.st_atime = inode->i_atime;
- tmp.st_mtime = inode->i_mtime;
- tmp.st_ctime = inode->i_ctime;
- return copy_to_user(s,&tmp,sizeof(tmp));
-}
-
-extern __inline__ int get_user_new_dev_t(kdev_t *kdev, __new_dev_t *udev) {
- __new_dev_t ndev;
- if (copy_from_user (&ndev, udev, sizeof(__new_dev_t))) return -EFAULT;
- *kdev = MKDEV(ndev.major, ndev.minor);
- return 0;
-}
diff --git a/include/asm-mips/bootinfo.h b/include/asm-mips/bootinfo.h
index dc2b1c2fa..cd812982a 100644
--- a/include/asm-mips/bootinfo.h
+++ b/include/asm-mips/bootinfo.h
@@ -1,4 +1,4 @@
-/* $Id: bootinfo.h,v 1.4 1998/08/25 09:21:55 ralf Exp $
+/* $Id: bootinfo.h,v 1.5 1998/10/18 13:23:45 tsbogend Exp $
*
* bootinfo.h -- Definition of the Linux/MIPS boot information structure
*
@@ -157,8 +157,8 @@ typedef struct mips_arc_DisplayInfo { /* video adapter information */
#define DEFAULT_SCREEN_INFO {0, 0, 0, 0, 0, 160, 0, 0, 0, 64, 0, 16}
#define DEFAULT_DRIVE_INFO { {0,}}
#else
-/* default values for screen_info variable */
-#define DEFAULT_SCREEN_INFO {0, 0, 0, 52, 3, 80, 4626, 3, 9, 50}
+/* default values for screen_info variable (Colour VGA) */
+#define DEFAULT_SCREEN_INFO {0, 0, 0, 52, 3, 80, 4626, 3, 9, 50, 0x22, 16}
#endif
/* default values for drive info */
diff --git a/include/asm-mips/byteorder.h b/include/asm-mips/byteorder.h
index 28f6376db..b9604cf20 100644
--- a/include/asm-mips/byteorder.h
+++ b/include/asm-mips/byteorder.h
@@ -1,8 +1,25 @@
+/* $Id: byteorder.h,v 1.8 1998/11/02 09:29:32 ralf Exp $
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) by Ralf Baechle
+ */
#ifndef _MIPS_BYTEORDER_H
#define _MIPS_BYTEORDER_H
#include <asm/types.h>
+#ifdef __GNUC__
+
+#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+# define __BYTEORDER_HAS_U64__
+# define __SWAB_64_THRU_32__
+#endif
+
+#endif /* __GNUC__ */
+
#if defined (__MIPSEB__)
# include <linux/byteorder/big_endian.h>
#elif defined (__MIPSEL__)
diff --git a/include/asm-mips/delay.h b/include/asm-mips/delay.h
index ec2ad70f3..0f5660a83 100644
--- a/include/asm-mips/delay.h
+++ b/include/asm-mips/delay.h
@@ -1,3 +1,12 @@
+/* $Id: delay.h,v 1.3 1998/10/27 21:46:33 ralf Exp $
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1994 by Waldorf Electronics
+ * Copyright (C) 1995 - 1998 by Ralf Baechle
+ */
#ifndef __ASM_MIPS_DELAY_H
#define __ASM_MIPS_DELAY_H
@@ -25,7 +34,7 @@ extern __inline__ void __delay(int loops)
extern __inline__ void __udelay(unsigned long usecs, unsigned long lps)
{
usecs *= 0x000010c6; /* 2**32 / 1000000 */
- __asm__("multu\t%0,%1\n\t"
+ __asm__("multu\t%0,%2\n\t"
"mfhi\t%0"
:"=r" (usecs)
:"0" (usecs),"r" (lps));
@@ -40,13 +49,4 @@ extern __inline__ void __udelay(unsigned long usecs, unsigned long lps)
#define udelay(usecs) __udelay((usecs),__udelay_val)
-/*
- * The different variants for 32/64 bit are pure paranoia. The typical
- * range of numbers that appears for MIPS machines avoids overflows.
- */
-extern __inline__ unsigned long muldiv(unsigned long a, unsigned long b, unsigned long c)
-{
- return (a*b)/c;
-}
-
#endif /* __ASM_MIPS_DELAY_H */
diff --git a/include/asm-mips/dma.h b/include/asm-mips/dma.h
index 320022c76..1432efa8e 100644
--- a/include/asm-mips/dma.h
+++ b/include/asm-mips/dma.h
@@ -1,4 +1,4 @@
-/* $Id: dma.h,v 1.7 1992/12/14 00:29:34 root Exp root $
+/* $Id: dma.h,v 1.4 1998/11/15 03:25:44 ralf Exp $
* linux/include/asm/dma.h: Defines for using and allocating dma channels.
* Written by Hennus Bergman, 1992.
* High DMA channel support & info by Hannu Savolainen
@@ -14,6 +14,9 @@
#include <linux/config.h>
#include <asm/io.h> /* need byte IO */
+#include <asm/spinlock.h> /* And spinlocks */
+#include <linux/delay.h>
+#include <asm/system.h>
#ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
@@ -143,6 +146,21 @@
#define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */
#define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */
+
+extern spinlock_t dma_spin_lock;
+
+static __inline__ unsigned long claim_dma_lock(void)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&dma_spin_lock, flags);
+ return flags;
+}
+
+static __inline__ void release_dma_lock(unsigned long flags)
+{
+ spin_unlock_irqrestore(&dma_spin_lock, flags);
+}
+
/* enable/disable a specific DMA channel */
static __inline__ void enable_dma(unsigned int dmanr)
{
@@ -165,7 +183,7 @@ static __inline__ void disable_dma(unsigned int dmanr)
* Use this once to initialize the FF to a known state.
* After that, keep track of it. :-)
* --- In order to do that, the DMA routines below should ---
- * --- only be used while interrupts are disabled! ---
+ * --- only be used while holding the DMA lock ! ---
*/
static __inline__ void clear_dma_ff(unsigned int dmanr)
{
diff --git a/include/asm-mips/fcntl.h b/include/asm-mips/fcntl.h
index f67501e17..02b0c7dae 100644
--- a/include/asm-mips/fcntl.h
+++ b/include/asm-mips/fcntl.h
@@ -1,4 +1,4 @@
-/* $Id: fcntl.h,v 1.3 1998/08/29 20:41:02 ralf Exp $
+/* $Id: fcntl.h,v 1.4 1998/09/19 19:19:36 ralf Exp $
*
* 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
@@ -25,6 +25,8 @@
#define FASYNC 0x1000 /* fcntl, for BSD compatibility */
#define O_LARGEFILE 0x2000 /* allow large file opens - currently ignored */
#define O_DIRECT 0x8000 /* direct disk access hint - currently ignored */
+#define O_DIRECTORY 0x10000 /* must be a directory */
+#define O_NOFOLLOW 0x20000 /* don't follow links */
#define O_NDELAY O_NONBLOCK
diff --git a/include/asm-mips/floppy.h b/include/asm-mips/floppy.h
index 39a68b582..a1343749d 100644
--- a/include/asm-mips/floppy.h
+++ b/include/asm-mips/floppy.h
@@ -1,4 +1,4 @@
-/* $Id: floppy.h,v 1.4 1997/12/01 18:00:37 ralf Exp $
+/* $Id: floppy.h,v 1.5 1998/06/30 00:23:09 ralf Exp $
*
* Architecture specific parts of the Floppy driver
*
@@ -11,7 +11,6 @@
#ifndef __ASM_MIPS_FLOPPY_H
#define __ASM_MIPS_FLOPPY_H
-#include <linux/config.h>
#include <asm/bootinfo.h>
#include <asm/jazz.h>
#include <asm/jazzdma.h>
diff --git a/include/asm-mips/io.h b/include/asm-mips/io.h
index 2319c27c9..bc9390c2a 100644
--- a/include/asm-mips/io.h
+++ b/include/asm-mips/io.h
@@ -140,18 +140,21 @@ extern inline void iounmap(void *addr)
/*
* XXX We need system specific versions of these to handle EISA address bits
* 24-31 on SNI.
+ * XXX more SNI hacks.
*/
-#define readb(addr) (*(volatile unsigned char *) (isa_slot_offset + (unsigned long)(addr)))
-#define readw(addr) (*(volatile unsigned short *) (isa_slot_offset + (unsigned long)(addr)))
-#define readl(addr) (*(volatile unsigned int *) (isa_slot_offset + (unsigned long)(addr)))
+#define readb(addr) (*(volatile unsigned char *) (0xa0000000 + (unsigned long)(addr)))
+#define readw(addr) (*(volatile unsigned short *) (0xa0000000 + (unsigned long)(addr)))
+#define readl(addr) (*(volatile unsigned int *) (0xa0000000 + (unsigned long)(addr)))
-#define writeb(b,addr) (*(volatile unsigned char *) (isa_slot_offset + (unsigned long)(addr)) = (b))
-#define writew(b,addr) (*(volatile unsigned short *) (isa_slot_offset + (unsigned long)(addr)) = (b))
-#define writel(b,addr) (*(volatile unsigned int *) (isa_slot_offset + (unsigned long)(addr)) = (b))
+#define writeb(b,addr) (*(volatile unsigned char *) (0xa0000000 + (unsigned long)(addr)) = (b))
+#define writew(b,addr) (*(volatile unsigned short *) (0xa0000000 + (unsigned long)(addr)) = (b))
+#define writel(b,addr) (*(volatile unsigned int *) (0xa0000000 + (unsigned long)(addr)) = (b))
-#define memset_io(a,b,c) memset((void *)(isa_slot_offset + (unsigned long)a),(b),(c))
-#define memcpy_fromio(a,b,c) memcpy((a),(void *)(isa_slot_offset + (unsigned long)(b)),(c))
-#define memcpy_toio(a,b,c) memcpy((void *)(isa_slot_offset + (unsigned long)(a)),(b),(c))
+#define memset_io(a,b,c) memset((void *)(0xa0000000 + (unsigned long)a),(b),(c))
+#define memcpy_fromio(a,b,c) memcpy((a),(void *)(0xa0000000 + (unsigned long)(b)),(c))
+#define memcpy_toio(a,b,c) memcpy((void *)(0xa0000000 + (unsigned long)(a)),(b),(c))
+
+/* END SNI HACKS ... */
/*
* We don't have csum_partial_copy_fromio() yet, so we cheat here and
diff --git a/include/asm-mips/irq.h b/include/asm-mips/irq.h
index ce3f5fdbe..2d783fd5a 100644
--- a/include/asm-mips/irq.h
+++ b/include/asm-mips/irq.h
@@ -1,4 +1,4 @@
-/* $Id: irq.h,v 1.4 1998/05/28 03:18:13 ralf Exp $
+/* $Id: irq.h,v 1.4 1998/06/30 00:23:10 ralf Exp $
*
* 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
@@ -10,9 +10,6 @@
#ifndef __ASM_MIPS_IRQ_H
#define __ASM_MIPS_IRQ_H
-/*
- * Actually this is a lie but we hide the local device's interrupts ...
- */
#define NR_IRQS 64
#define TIMER_IRQ 0
@@ -20,19 +17,10 @@
extern int (*irq_cannonicalize)(int irq);
struct irqaction;
-extern int setup_x86_irq(int irq, struct irqaction * new);
+extern int i8259_setup_irq(int irq, struct irqaction * new);
extern void disable_irq(unsigned int);
extern void enable_irq(unsigned int);
-extern unsigned int local_irq_count[];
-
-#ifdef __SMP__
-#error Send superfluous SMP boxes to ralf@uni-koblenz.de
-#else
-#define irq_enter(cpu, irq) (++local_irq_count[cpu])
-#define irq_exit(cpu, irq) (--local_irq_count[cpu])
-#endif
-
/* Machine specific interrupt initialization */
extern void (*irq_setup)(void);
diff --git a/include/asm-mips/keyboard.h b/include/asm-mips/keyboard.h
index d6cc1fbfc..2b1901a9e 100644
--- a/include/asm-mips/keyboard.h
+++ b/include/asm-mips/keyboard.h
@@ -5,7 +5,7 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * $Id: keyboard.h,v 1.10 1998/08/26 22:12:32 tsbogend Exp $
+ * $Id: keyboard.h,v 1.11 1998/09/19 19:19:37 ralf Exp $
*/
#ifndef __ASM_MIPS_KEYBOARD_H
#define __ASM_MIPS_KEYBOARD_H
@@ -17,6 +17,8 @@
#include <linux/ioport.h>
#include <asm/bootinfo.h>
+#define DISABLE_KBD_DURING_INTERRUPTS 0
+
extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
extern int pckbd_getkeycode(unsigned int scancode);
extern int pckbd_pretranslate(unsigned char scancode, char raw_mode);
@@ -41,60 +43,36 @@ extern unsigned char pckbd_sysrq_xlate[128];
/* Some stoneage hardware needs delays after some operations. */
#define kbd_pause() do { } while(0)
-/* Pointers to keyboard hardware access and init functions. */
-unsigned char (*kbd_read_input)(void);
-void (*kbd_write_output)(unsigned char val);
-void (*kbd_write_command)(unsigned char val);
-unsigned char (*kbd_read_status)(void);
-
-void (*keyboard_setup)(void);
-
-#ifdef CONFIG_MIPS_JAZZ
-
-extern int jazz_ps2_request_irq(void);
-extern void jazz_ps2_free_irq(void);
-
-#define ps2_request_irq() jazz_ps2_request_irq()
-#define ps2_free_irq(inode) jazz_ps2_free_irq()
-
-#endif /* CONFIG_MIPS_JAZZ */
-
-#ifdef CONFIG_SGI
-
-#define DISABLE_KBD_DURING_INTERRUPTS 1
-
-/*
- * Machine specific bits for the PS/2 driver.
- * Aux device and keyboard share the interrupt on the Indy.
- */
-#define ps2_request_irq() 0
-#define ps2_free_irq(void) do { } while(0);
+struct kbd_ops {
+ /* Keyboard driver resource allocation */
+ void (*kbd_request_region)(void);
+ int (*kbd_request_irq)(void (*handler)(int, void *, struct pt_regs *));
-#endif /* CONFIG_SGI */
+ /* PSaux driver resource managment */
+ int (*aux_request_irq)(void (*handler)(int, void *, struct pt_regs *));
+ void (*aux_free_irq)(void);
-#if defined(CONFIG_ACER_PICA_61) || defined(CONFIG_SNI_RM200_PCI)
-#define CONF_KEYBOARD_USES_IO_PORTS
-#endif
+ /* Methods to access the keyboard processor's I/O registers */
+ unsigned char (*kbd_read_input)(void);
+ void (*kbd_write_output)(unsigned char val);
+ void (*kbd_write_command)(unsigned char val);
+ unsigned char (*kbd_read_status)(void);
+};
-#ifdef CONF_KEYBOARD_USES_IO_PORTS
-/*
- * Most other MIPS machines access the keyboard controller via
- * memory mapped I/O ports.
- */
-#include <asm/io.h>
+extern struct kbd_ops *kbd_ops;
-/*
- * Machine specific bits for the PS/2 driver
- */
-
-#define AUX_IRQ 12
+/* Do the actual calls via kbd_ops vector */
+#define kbd_request_region() kbd_ops->kbd_request_region()
+#define kbd_request_irq(handler) kbd_ops->kbd_request_irq(handler)
-#define ps2_request_irq() \
- request_irq(AUX_IRQ, aux_interrupt, 0, "PS/2 Mouse", NULL)
+#define aux_request_irq(hand, dev_id) kbd_ops->aux_request_irq(hand)
+#define aux_free_irq(dev_id) kbd_ops->aux_free_irq()
-#define ps2_free_irq(inode) free_irq(AUX_IRQ, NULL)
-
-#endif /* CONF_KEYBOARD_USES_IO_PORTS */
+#define kbd_read_input() kbd_ops->kbd_read_input()
+#define kbd_write_output(val) kbd_ops->kbd_write_output(val)
+#define kbd_write_command(val) kbd_ops->kbd_write_command(val)
+#define kbd_read_status() kbd_ops->kbd_read_status()
#endif /* __KERNEL */
+
#endif /* __ASM_MIPS_KEYBOARD_H */
diff --git a/include/asm-mips/linux_logo.h b/include/asm-mips/linux_logo.h
index cf54ec3cf..31450dbeb 100644
--- a/include/asm-mips/linux_logo.h
+++ b/include/asm-mips/linux_logo.h
@@ -1,10 +1,10 @@
-/* $Id: linux_logo.h,v 1.2 1998/08/28 23:23:12 tsbogend Exp $
+/* $Id: linux_logo.h,v 1.3 1998/09/19 19:19:38 ralf Exp $
*
* include/asm-mips/linux_logo.h: This is a linux logo
- * to be displayed on boot.
+ * to be displayed on boot.
*
* Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu)
- * Copyright (C) 1996 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
+ * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
*
* You can put anything here, but:
* LINUX_LOGO_COLORS has to be less than 224
@@ -24,32 +24,906 @@
#define linux_logo_banner "Linux/MIPS version " UTS_RELEASE
-#define LINUX_LOGO_COLORS 221
+#define LINUX_LOGO_COLORS 212
#ifdef INCLUDE_LINUX_LOGO_DATA
-#define INCLUDE_LINUX_LOGO16
-#include <linux/linux_logo.h>
+unsigned char linux_logo_red[] __initdata = {
+ 0x03, 0x82, 0xE9, 0xBF, 0x42, 0xC9, 0x7E, 0xC0,
+ 0xE9, 0xE3, 0xC2, 0x24, 0xA4, 0x65, 0xEC, 0xC4,
+ 0x82, 0x9F, 0xF3, 0x12, 0x5F, 0xA0, 0xC2, 0xED,
+ 0x3E, 0xD5, 0xDB, 0xA0, 0x1C, 0xF4, 0xEB, 0xA4,
+ 0xCD, 0x0A, 0x9A, 0x51, 0xCC, 0xBE, 0xC0, 0xBA,
+ 0x74, 0xDC, 0xAA, 0xF6, 0xD3, 0xC5, 0xE6, 0x26,
+ 0xC2, 0x83, 0x38, 0xEA, 0x49, 0xB0, 0xED, 0xE5,
+ 0xF4, 0x96, 0x96, 0x1B, 0xFA, 0xCC, 0xF2, 0x0F,
+ 0xCD, 0xE5, 0xF4, 0xD3, 0x50, 0x7A, 0xB5, 0xDE,
+ 0xD5, 0xB6, 0x60, 0x0A, 0x6A, 0xEA, 0xD4, 0xEB,
+ 0xC1, 0xCA, 0xEA, 0xEC, 0x2A, 0x96, 0x95, 0xDC,
+ 0xE4, 0xCE, 0xEC, 0x1E, 0xDC, 0x8A, 0xD1, 0xF6,
+ 0x3C, 0x5E, 0xC6, 0xB4, 0xB2, 0xAC, 0xBA, 0x9E,
+ 0x0F, 0x59, 0xBA, 0xFA, 0xCC, 0xBF, 0x82, 0xCE,
+ 0xE6, 0x4F, 0xAA, 0x4C, 0xCA, 0x8E, 0x8E, 0xDF,
+ 0x2C, 0xB6, 0x3B, 0xDE, 0xCE, 0xEE, 0x46, 0x4A,
+ 0x6F, 0x7A, 0x82, 0xE4, 0xAA, 0x88, 0xE2, 0xCE,
+ 0xAE, 0xB6, 0x70, 0xC2, 0x9A, 0xDA, 0x35, 0x9E,
+ 0x95, 0xC0, 0x7E, 0x8C, 0xC2, 0xB6, 0xCE, 0xB9,
+ 0xD5, 0xAA, 0xC1, 0xF4, 0xC7, 0xB6, 0xB6, 0xA3,
+ 0xF2, 0x68, 0xDB, 0x76, 0xDC, 0x57, 0xD3, 0xA8,
+ 0xC0, 0xEF, 0x46, 0xF4, 0x2F, 0xD7, 0x53, 0x36,
+ 0xE6, 0xA7, 0xCA, 0xCB, 0x7E, 0xE4, 0x86, 0x9A,
+ 0xCE, 0x94, 0xB4, 0x1D, 0xDA, 0xCE, 0x6C, 0xE6,
+ 0x9E, 0xC6, 0xDA, 0x16, 0xFA, 0xAA, 0x56, 0xB6,
+ 0xFE, 0x6E, 0xEA, 0xCE, 0xE5, 0xCC, 0xDB, 0xD3,
+ 0xED, 0xDC, 0xF4, 0x72
+};
-/* Painted by Johnny Stenback <jst@uwasa.fi> */
+unsigned char linux_logo_green[] __initdata = {
+ 0x03, 0x82, 0xC4, 0x83, 0x42, 0xA2, 0x4A, 0xA4,
+ 0xE5, 0xA6, 0xC2, 0x24, 0xA4, 0x65, 0xB4, 0x94,
+ 0x66, 0x87, 0xB6, 0x12, 0x44, 0x6C, 0x96, 0xD4,
+ 0x36, 0x95, 0xB2, 0x92, 0x0E, 0xF4, 0xBC, 0x77,
+ 0xA5, 0x0A, 0x92, 0x52, 0xB4, 0x9A, 0x8C, 0xB2,
+ 0x74, 0xC2, 0x8E, 0xBD, 0xA2, 0xCA, 0xD2, 0x12,
+ 0xB6, 0x61, 0x24, 0xDA, 0x33, 0x79, 0xCB, 0xAC,
+ 0xDA, 0x84, 0x7A, 0x1B, 0xFA, 0x8D, 0xBE, 0x06,
+ 0x93, 0xBB, 0xBC, 0xAB, 0x44, 0x62, 0x83, 0xDA,
+ 0x9B, 0xA2, 0x4C, 0x04, 0x6A, 0xB6, 0xC8, 0xBD,
+ 0x8D, 0xB6, 0xAD, 0xEC, 0x2A, 0x68, 0x62, 0x9D,
+ 0xC4, 0xC4, 0xB4, 0x13, 0xA3, 0x8A, 0xD2, 0xD6,
+ 0x3C, 0x5D, 0x8C, 0x7E, 0x82, 0xAC, 0x96, 0x7E,
+ 0x0D, 0x5A, 0xBA, 0xBB, 0xCC, 0xBE, 0x76, 0xB6,
+ 0xDE, 0x4E, 0x9A, 0x3C, 0xBE, 0x8E, 0x6E, 0xCB,
+ 0x1C, 0xAA, 0x2E, 0xBE, 0xAA, 0xDE, 0x3E, 0x4B,
+ 0x4D, 0x7A, 0x54, 0xE4, 0x8E, 0x6E, 0xCA, 0x9B,
+ 0x70, 0x9E, 0x5A, 0xAA, 0x9A, 0xBE, 0x34, 0x9E,
+ 0x71, 0x9E, 0x7E, 0x5F, 0xAA, 0x8A, 0xBE, 0x91,
+ 0xCE, 0x88, 0x92, 0xDB, 0xC6, 0xAB, 0x8A, 0x72,
+ 0xE2, 0x44, 0xC3, 0x54, 0xAA, 0x45, 0xBB, 0x92,
+ 0xBA, 0xC4, 0x46, 0xCA, 0x2D, 0xD6, 0x3B, 0x1A,
+ 0xC2, 0x7E, 0xA6, 0xCB, 0x7A, 0xDC, 0x86, 0x72,
+ 0xB6, 0x94, 0xB4, 0x1C, 0xBC, 0xAE, 0x4C, 0xD6,
+ 0x62, 0x86, 0xD3, 0x16, 0xF6, 0x7A, 0x55, 0x79,
+ 0xFE, 0x6E, 0xC6, 0xC6, 0xAA, 0x93, 0xDC, 0x9D,
+ 0xAE, 0xA4, 0xD4, 0x56
+};
-unsigned char *linux_serial_image __initdata = "\n"
-" .u$e.\n"
-" .$$$$$:S\n"
-" $\"*$/\"*$$\n"
-" $.`$ . ^F\n"
-" 4k+#+T.$F\n"
-" 4P+++\"$\"$\n"
-" :R\"+ t$$B\n"
-" ___# $$$\n"
-" | | R$$k\n"
-" dd. | Linux $!$\n"
-" ddd | MIPS $9$F\n"
-" '!!!!!$ !!#!`\n"
-" !!!!!* .!!!!!`\n"
-"'!!!!!!!W..e$$!!!!!!` %s\n"
-" \"~^^~ ^~~^\n"
-"\n";
+unsigned char linux_logo_blue[] __initdata = {
+ 0x04, 0x84, 0x10, 0x0C, 0x41, 0x14, 0x04, 0x78,
+ 0xC7, 0x0E, 0xC4, 0x24, 0xA4, 0x64, 0x0C, 0x0D,
+ 0x17, 0x24, 0x0D, 0x13, 0x11, 0x07, 0x40, 0x22,
+ 0x0C, 0x0C, 0x11, 0x78, 0x06, 0xF4, 0x0B, 0x0A,
+ 0x47, 0x0B, 0x7C, 0x54, 0x6C, 0x0C, 0x0D, 0x9C,
+ 0x73, 0x54, 0x14, 0x0C, 0x0F, 0xC7, 0x94, 0x04,
+ 0x94, 0x17, 0x0A, 0x6C, 0x08, 0x0F, 0x14, 0x0B,
+ 0x12, 0x68, 0x28, 0x11, 0xFA, 0x0A, 0x34, 0x09,
+ 0x0A, 0x2F, 0x15, 0x19, 0x14, 0x3C, 0x06, 0xC4,
+ 0x0B, 0x84, 0x24, 0x08, 0x69, 0x38, 0xBC, 0x15,
+ 0x1F, 0xA0, 0x0A, 0xEC, 0x2A, 0x0C, 0x0C, 0x0C,
+ 0x2C, 0xA0, 0x15, 0x07, 0x0B, 0x8C, 0xD3, 0x10,
+ 0x3B, 0x5C, 0x0C, 0x04, 0x3C, 0xAC, 0x54, 0x1C,
+ 0x0B, 0x5B, 0xBB, 0x0A, 0xC1, 0xBB, 0x5C, 0x3C,
+ 0xBC, 0x4D, 0x74, 0x10, 0x8C, 0x8C, 0x14, 0x91,
+ 0x0C, 0x74, 0x17, 0x0C, 0x48, 0x9C, 0x3C, 0x4C,
+ 0x09, 0x7C, 0x05, 0xE4, 0x34, 0x38, 0x6C, 0x11,
+ 0x08, 0x7C, 0x18, 0x2C, 0x9C, 0x4C, 0x34, 0x9C,
+ 0x29, 0x54, 0x7C, 0x0C, 0x78, 0x18, 0x9C, 0x14,
+ 0xBA, 0x30, 0x27, 0x31, 0xC2, 0x97, 0x24, 0x09,
+ 0xB4, 0x04, 0x87, 0x0C, 0x14, 0x1F, 0x7C, 0x64,
+ 0xB0, 0x0F, 0x45, 0x10, 0x2C, 0xD4, 0x0A, 0x04,
+ 0x44, 0x1F, 0x2C, 0xCC, 0x7C, 0xD8, 0x84, 0x0C,
+ 0x8C, 0x94, 0xB4, 0x1D, 0x20, 0x5C, 0x18, 0xB4,
+ 0x04, 0x09, 0xBC, 0x14, 0xF4, 0x08, 0x54, 0x07,
+ 0xFC, 0x6C, 0x24, 0xB4, 0x15, 0x18, 0xDB, 0x17,
+ 0x17, 0x18, 0x21, 0x24
+};
+
+unsigned char linux_logo[] __initdata = {
+ 0xBC, 0xAC, 0x7D, 0x95, 0xAF, 0x85, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0x95, 0x7D, 0x95, 0xAC, 0x2C, 0xAF,
+ 0x7D, 0x48, 0xB2, 0xAC, 0x85, 0xDA, 0xDA, 0x2C,
+ 0x7D, 0x48, 0x21, 0x2C, 0x8D, 0x2A, 0x8A, 0xDA,
+ 0x85, 0x2C, 0xD9, 0xAC, 0x2C, 0x2C, 0xD9, 0xD9,
+ 0xAF, 0x85, 0x85, 0x85, 0x8D, 0xBC, 0x2A, 0x2A,
+ 0xBC, 0x8C, 0xBC, 0xAC, 0x7D, 0x95, 0xAF, 0x85,
+ 0x2C, 0x2C, 0xAC, 0xD9, 0x95, 0x7D, 0x95, 0xAC,
+ 0x2C, 0xAF, 0x7D, 0x48, 0xB2, 0xAC, 0x85, 0xDA,
+ 0xDA, 0x2C, 0x7D, 0x48, 0x21, 0x2C, 0x8D, 0x2A,
+ 0xAF, 0xA1, 0x48, 0x7D, 0xAF, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xD9, 0x95, 0x7D, 0x95, 0xAC, 0xD9, 0x7D,
+ 0x48, 0xE9, 0x21, 0xAF, 0xDA, 0xDA, 0x85, 0x2C,
+ 0xD9, 0xD9, 0xAC, 0xDA, 0x8A, 0xDA, 0x85, 0x2C,
+ 0x2C, 0xAC, 0xD9, 0xAC, 0xAF, 0xAF, 0x2C, 0x2C,
+ 0x2C, 0x85, 0x2C, 0x2C, 0x85, 0xDA, 0xDA, 0xDA,
+ 0xDA, 0xDA, 0xAF, 0xA1, 0x48, 0x7D, 0xAF, 0x2C,
+ 0x2C, 0xAC, 0xD9, 0xD9, 0x95, 0x7D, 0x95, 0xAC,
+ 0xD9, 0x7D, 0x48, 0xE9, 0x21, 0xAF, 0xDA, 0xDA,
+ 0x85, 0x2C, 0xD9, 0xD9, 0xAC, 0xDA, 0x8A, 0xDA,
+ 0x7D, 0x48, 0x48, 0x7D, 0x2C, 0x85, 0x2C, 0xAF,
+ 0xD9, 0xD9, 0x7D, 0x95, 0xD9, 0xD9, 0xD9, 0x7D,
+ 0xB2, 0x21, 0xD9, 0x85, 0xDA, 0xDA, 0x85, 0x2C,
+ 0xAF, 0x2C, 0x2C, 0xDA, 0x85, 0x85, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0xD9, 0xAF, 0xDA, 0x85, 0x2C, 0x2C,
+ 0x85, 0xDA, 0xDA, 0x85, 0x85, 0xDA, 0x85, 0x85,
+ 0x85, 0xAF, 0x7D, 0x48, 0x48, 0x7D, 0x2C, 0x85,
+ 0x2C, 0xAF, 0xD9, 0xD9, 0x7D, 0x95, 0xD9, 0xD9,
+ 0xD9, 0x7D, 0xB2, 0x21, 0xD9, 0x85, 0xDA, 0xDA,
+ 0x85, 0x2C, 0xAF, 0x2C, 0x2C, 0xDA, 0xDA, 0x85,
+ 0xA1, 0xE9, 0x48, 0x95, 0x85, 0xDA, 0x85, 0xAF,
+ 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xD9, 0x95, 0x95,
+ 0xD9, 0xAC, 0x85, 0x85, 0xDA, 0xDA, 0x85, 0x2C,
+ 0xAC, 0xAC, 0x2C, 0x2C, 0x85, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xD9, 0x2C, 0x91, 0x41, 0x20, 0x6B, 0x20,
+ 0x6B, 0x20, 0x6B, 0xAE, 0x2C, 0x85, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0xA1, 0xE9, 0x48, 0x95, 0x85, 0xDA,
+ 0x85, 0xAF, 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xD9,
+ 0x95, 0x95, 0xD9, 0xAC, 0x85, 0x85, 0xDA, 0xDA,
+ 0x85, 0x2C, 0xAC, 0xAC, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xA1, 0xA1, 0xD6, 0xAF, 0xDA, 0xDA, 0x85, 0x2C,
+ 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0x2C, 0x2C, 0xDA, 0xDA, 0xDA, 0x85, 0x2C, 0xD9,
+ 0xD9, 0xD9, 0xD9, 0xAC, 0xAC, 0xAC, 0xAF, 0xAC,
+ 0x2C, 0xB2, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x6B, 0x80, 0x85, 0x2C,
+ 0xD9, 0xD6, 0xA1, 0xA1, 0xD6, 0xAF, 0xDA, 0xDA,
+ 0x85, 0x2C, 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xD9,
+ 0xD9, 0xD9, 0x2C, 0x2C, 0xDA, 0xDA, 0xDA, 0x85,
+ 0x2C, 0xD9, 0xD9, 0xD9, 0xD9, 0xAF, 0xAF, 0xAF,
+ 0xD6, 0xD6, 0xD9, 0x2C, 0xDA, 0xDA, 0x2C, 0xAC,
+ 0xD9, 0x7D, 0x95, 0xD9, 0xD9, 0xD9, 0xAF, 0x2C,
+ 0x85, 0x85, 0x85, 0x85, 0x2C, 0x2C, 0xAC, 0xD9,
+ 0xD9, 0xD9, 0xAF, 0xAF, 0x2C, 0x2C, 0xAF, 0xDA,
+ 0xAE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x41, 0xE3, 0x20, 0x6B, 0x48,
+ 0xAC, 0x95, 0xD6, 0xD6, 0xD9, 0x2C, 0xDA, 0xDA,
+ 0x2C, 0xAC, 0xD9, 0x7D, 0x95, 0xD9, 0xD9, 0xD9,
+ 0xAF, 0x2C, 0x85, 0x85, 0x85, 0x85, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0xD9, 0xD9, 0xAF, 0xAF, 0xAF, 0xAF,
+ 0xD9, 0xD9, 0xD9, 0x2C, 0x85, 0x85, 0x2C, 0xD9,
+ 0x7D, 0x21, 0xD6, 0xD9, 0xAF, 0x2C, 0x85, 0x85,
+ 0x85, 0x85, 0x85, 0x85, 0x2C, 0xAF, 0xAF, 0xAC,
+ 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x89,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x74, 0x43, 0x80, 0x41, 0x20,
+ 0x9F, 0x2C, 0xD9, 0xD9, 0xD9, 0x2C, 0x85, 0x85,
+ 0x2C, 0xD9, 0x7D, 0x21, 0xD6, 0xD9, 0xAF, 0x2C,
+ 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x2C, 0xAF,
+ 0xAF, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xD9, 0x7D, 0xD9, 0xAF, 0x85, 0x85, 0x2C, 0xD9,
+ 0xB2, 0x21, 0x7D, 0xD9, 0xAF, 0x2C, 0x85, 0x85,
+ 0x85, 0x2C, 0x2C, 0x2C, 0x2C, 0xAF, 0xAF, 0xAC,
+ 0xAF, 0xAC, 0xAF, 0xAF, 0xAC, 0xAC, 0x85, 0x41,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xAE, 0x48, 0x89, 0x74, 0x41,
+ 0x6B, 0xD6, 0xD9, 0x7D, 0xD9, 0xAF, 0x85, 0x85,
+ 0x2C, 0xD9, 0xB2, 0x21, 0x7D, 0xD9, 0xAF, 0x2C,
+ 0x85, 0x85, 0x85, 0x2C, 0x2C, 0x2C, 0x2C, 0xAF,
+ 0xAF, 0xAC, 0xAF, 0xAC, 0xAC, 0x2C, 0xAF, 0xAC,
+ 0x2C, 0x7D, 0xD9, 0x2C, 0xDA, 0x85, 0x2C, 0x7D,
+ 0xB2, 0xD6, 0xD9, 0xAF, 0x85, 0x85, 0x85, 0x85,
+ 0xAF, 0xAC, 0xAC, 0xAF, 0xAF, 0xAC, 0xAC, 0xD9,
+ 0x95, 0x7D, 0x95, 0x95, 0xD9, 0xD9, 0x48, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x6B, 0xAE, 0xE6, 0x80, 0x2B, 0x88,
+ 0x20, 0x33, 0xDA, 0x95, 0xD9, 0x2C, 0xDA, 0x85,
+ 0x2C, 0x7D, 0xB2, 0xD6, 0xD9, 0xAF, 0x85, 0x85,
+ 0x85, 0x85, 0xAF, 0xAC, 0xAC, 0xAF, 0xAF, 0xAC,
+ 0xAC, 0xD9, 0x95, 0x95, 0x7D, 0x95, 0x95, 0xD9,
+ 0x85, 0xD9, 0x2C, 0x85, 0xDA, 0xDA, 0xD9, 0x21,
+ 0xA1, 0xD9, 0xAF, 0x2C, 0x85, 0xDA, 0x85, 0xAF,
+ 0xD9, 0xD9, 0xAC, 0xAC, 0xAC, 0xD9, 0x7D, 0xD6,
+ 0xD6, 0x7D, 0x95, 0xD9, 0xD9, 0x85, 0xDB, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xDB, 0xE3, 0x6B, 0x20, 0x20,
+ 0x20, 0x20, 0xE9, 0xD9, 0x2C, 0x85, 0xDA, 0xDA,
+ 0xD9, 0x21, 0xA1, 0xD9, 0xAF, 0x2C, 0x85, 0xDA,
+ 0x85, 0xAF, 0xD9, 0xD9, 0xAC, 0xAC, 0xAC, 0xD9,
+ 0x7D, 0xD6, 0xD6, 0x7D, 0x95, 0xD9, 0xD9, 0xD9,
+ 0xDA, 0x2C, 0x85, 0xDA, 0xDA, 0x85, 0x95, 0x21,
+ 0x21, 0xD9, 0x85, 0x85, 0x85, 0x2C, 0x2C, 0xD9,
+ 0x95, 0x95, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xAC, 0xAC, 0x2C, 0xAF, 0x2C, 0x85, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x88, 0xDA, 0x85, 0xDA, 0xDA, 0x85,
+ 0x95, 0x21, 0x21, 0xD9, 0x85, 0x85, 0x85, 0x2C,
+ 0x2C, 0xD9, 0x95, 0x95, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xD9, 0xD9, 0xD9, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xDA, 0x2C, 0x85, 0x85, 0x2C, 0xD9, 0xD6, 0xB2,
+ 0x95, 0x2C, 0x85, 0x85, 0xAF, 0xAC, 0x95, 0x95,
+ 0x7D, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0x2C, 0x85,
+ 0x85, 0x85, 0x85, 0x85, 0x85, 0xAC, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xAC, 0x85, 0x85, 0x2C, 0xD9,
+ 0xD6, 0xB2, 0x95, 0x2C, 0x85, 0x85, 0xAF, 0xAC,
+ 0x95, 0x95, 0x7D, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0x2C, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
+ 0x85, 0x2C, 0x2C, 0x2C, 0xAC, 0x95, 0xD6, 0x7D,
+ 0xD9, 0x2C, 0x2C, 0xAF, 0x95, 0x7D, 0x7D, 0x95,
+ 0x95, 0xD9, 0xD9, 0x95, 0xD9, 0xD9, 0x2C, 0x85,
+ 0xDA, 0xDA, 0xDA, 0x85, 0x85, 0x21, 0x20, 0x20,
+ 0x6B, 0x41, 0xDB, 0x6B, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x41, 0xDB, 0xDB, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xE6, 0x2C, 0x2C, 0xAC, 0x95,
+ 0xD6, 0x7D, 0xD9, 0x2C, 0x2C, 0xAF, 0x95, 0x7D,
+ 0x7D, 0x95, 0x95, 0xD9, 0xD9, 0x95, 0xD9, 0xD9,
+ 0x2C, 0x85, 0xDA, 0xDA, 0xDA, 0x85, 0x2C, 0x2C,
+ 0x2C, 0xAF, 0xAC, 0xD9, 0x95, 0xD6, 0xD6, 0xD9,
+ 0x2C, 0x2C, 0x2C, 0xD9, 0xD6, 0xD6, 0xD9, 0xAF,
+ 0xAC, 0x95, 0xD6, 0x7D, 0x7D, 0xD9, 0x2C, 0x85,
+ 0xDA, 0xDA, 0x2C, 0xAF, 0xAF, 0x21, 0x20, 0x20,
+ 0x88, 0x2B, 0x88, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xAE, 0x2D, 0x2D, 0x74, 0x74, 0x88, 0x20,
+ 0x20, 0x20, 0x20, 0x80, 0xAC, 0xD9, 0x95, 0xD6,
+ 0xD6, 0xD9, 0x2C, 0x2C, 0x2C, 0xD9, 0xD6, 0xD6,
+ 0xD9, 0xAF, 0xAC, 0x95, 0xD6, 0x7D, 0x7D, 0xD9,
+ 0x2C, 0xDA, 0xDA, 0x85, 0x2C, 0xAF, 0xAF, 0xAF,
+ 0x2C, 0xAF, 0xD9, 0x95, 0xD6, 0xD6, 0x95, 0xAF,
+ 0x2C, 0x2C, 0xD9, 0x95, 0xD6, 0x95, 0xAF, 0x2C,
+ 0xAC, 0x7D, 0x21, 0x95, 0xD9, 0x2C, 0x85, 0x85,
+ 0x85, 0xAF, 0xD9, 0x95, 0xD9, 0x7D, 0x20, 0x33,
+ 0x7D, 0x8A, 0x7D, 0x5B, 0x6B, 0x20, 0x20, 0x6B,
+ 0xE6, 0xD9, 0x85, 0x2A, 0xDA, 0x2B, 0x41, 0x20,
+ 0x20, 0x20, 0x6B, 0x74, 0xD9, 0x95, 0xD6, 0xD6,
+ 0x95, 0xAF, 0x2C, 0x2C, 0xD9, 0x95, 0xD6, 0x95,
+ 0xAF, 0x2C, 0xAC, 0x7D, 0x21, 0x95, 0xD9, 0x2C,
+ 0x85, 0x85, 0x85, 0x2C, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0x85, 0xD9, 0x7D, 0x21, 0x21, 0x7D, 0xAC, 0x2C,
+ 0x2C, 0xAC, 0xD9, 0x7D, 0xD9, 0xAF, 0x2C, 0x85,
+ 0xAC, 0x7D, 0x7D, 0xAC, 0x85, 0xDA, 0x8A, 0xDA,
+ 0x85, 0xAF, 0xD9, 0x7D, 0xD9, 0x95, 0x20, 0x91,
+ 0xBC, 0x73, 0xEE, 0x7D, 0x20, 0x20, 0x20, 0x80,
+ 0x4D, 0x3D, 0x73, 0x73, 0xA3, 0xD6, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x2B, 0x7D, 0x21, 0x21, 0x7D,
+ 0xAC, 0x2C, 0x2C, 0xAC, 0xD9, 0x7D, 0xD9, 0xAF,
+ 0x2C, 0x85, 0xAC, 0x7D, 0x7D, 0xAC, 0x85, 0xDA,
+ 0x8A, 0x8A, 0x85, 0xAC, 0xD9, 0x7D, 0xD9, 0xAC,
+ 0x2C, 0xD9, 0xD6, 0xB2, 0xB2, 0x7D, 0xAF, 0x85,
+ 0x2C, 0xD9, 0x95, 0x95, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0xD9, 0xD9, 0xAC, 0x85, 0x8D, 0x2A, 0x2A, 0xDA,
+ 0xAF, 0xD9, 0x95, 0x95, 0xD9, 0xAC, 0x20, 0xAF,
+ 0x2C, 0xE6, 0x8D, 0x73, 0xE3, 0x20, 0x20, 0x48,
+ 0x5C, 0xDA, 0x5B, 0x43, 0xBC, 0x73, 0x2B, 0x20,
+ 0x20, 0x20, 0x20, 0x41, 0xD6, 0xB2, 0xB2, 0x7D,
+ 0xAF, 0x85, 0x2C, 0xD9, 0x95, 0x95, 0xAF, 0x2C,
+ 0x2C, 0x2C, 0xD9, 0xD9, 0xAC, 0x85, 0x8A, 0x2A,
+ 0x8D, 0xDA, 0xAF, 0xD9, 0x95, 0x95, 0xD9, 0xAF,
+ 0xAC, 0xD9, 0xD6, 0xB2, 0x21, 0xD9, 0x2C, 0x85,
+ 0x2C, 0xD9, 0x95, 0xD9, 0xAF, 0x2C, 0x2C, 0xAC,
+ 0xAC, 0xAF, 0x85, 0x8D, 0xBC, 0xBC, 0xDA, 0xD9,
+ 0xD6, 0xA1, 0xA1, 0x21, 0xD9, 0xAC, 0x20, 0x2A,
+ 0xCC, 0xAE, 0x9F, 0xE4, 0xAE, 0x5B, 0x74, 0xA1,
+ 0xE4, 0xAE, 0x20, 0x9F, 0x89, 0xE8, 0xE6, 0x20,
+ 0x20, 0x20, 0x20, 0x41, 0xD6, 0xB2, 0x21, 0xD9,
+ 0x2C, 0x85, 0x2C, 0xD9, 0x95, 0xD9, 0xAF, 0x2C,
+ 0x2C, 0xAC, 0xAC, 0xAF, 0x85, 0x8D, 0xBC, 0x2A,
+ 0xDA, 0xD9, 0xD6, 0xA1, 0xA1, 0x21, 0xD9, 0xD9,
+ 0xD9, 0x95, 0x21, 0xA1, 0x21, 0xAC, 0x85, 0x85,
+ 0xAC, 0xD9, 0xD9, 0xAF, 0x2C, 0x2C, 0xAF, 0xAC,
+ 0xAF, 0x85, 0x8A, 0x2A, 0x2A, 0xDA, 0xD9, 0xA1,
+ 0x48, 0xE9, 0x48, 0x21, 0x95, 0xAC, 0x20, 0x2A,
+ 0xDB, 0x41, 0x74, 0xBC, 0x2B, 0x7B, 0x7B, 0x80,
+ 0x73, 0x41, 0x20, 0x6B, 0x2B, 0xE8, 0x2D, 0x20,
+ 0x20, 0x20, 0x20, 0x33, 0x21, 0xA1, 0x21, 0xAC,
+ 0x85, 0x85, 0xAC, 0xD9, 0xD9, 0xAF, 0x2C, 0x2C,
+ 0xAF, 0xAC, 0xAF, 0x85, 0x8A, 0xBC, 0x2A, 0xDA,
+ 0xD9, 0xA1, 0x48, 0xE9, 0x48, 0x21, 0xD9, 0xD9,
+ 0xA1, 0xB2, 0xB2, 0x48, 0xD6, 0xAC, 0x2C, 0x2C,
+ 0xD9, 0x95, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x85, 0x8A, 0x8D, 0x8D, 0x85, 0x95, 0xA1, 0x6C,
+ 0x6C, 0x48, 0xD6, 0xD9, 0x2C, 0x85, 0x20, 0x2C,
+ 0x89, 0x20, 0x3C, 0xB9, 0xA7, 0x63, 0xD2, 0xB9,
+ 0xC6, 0x9A, 0x20, 0x20, 0x43, 0x5C, 0xE6, 0x20,
+ 0x20, 0x20, 0x20, 0x33, 0xB2, 0x48, 0xD6, 0xAC,
+ 0x2C, 0x2C, 0xD9, 0x95, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x2C, 0x85, 0x8A, 0x8D, 0x8D, 0x85, 0x95,
+ 0xA1, 0x6C, 0x6C, 0x48, 0xD6, 0xD9, 0xAF, 0xAC,
+ 0xA1, 0xD6, 0x7D, 0xB2, 0xD6, 0xAF, 0x85, 0x85,
+ 0xD9, 0x95, 0x2C, 0x85, 0xDA, 0x85, 0x85, 0x2C,
+ 0x85, 0x8A, 0x8D, 0xDA, 0xD9, 0x48, 0x81, 0x2D,
+ 0x48, 0xD6, 0xD9, 0xAC, 0x2C, 0x85, 0x20, 0x2D,
+ 0xEE, 0x93, 0xD1, 0xA7, 0x3E, 0x3E, 0x3A, 0x25,
+ 0x56, 0xAB, 0xAA, 0xC5, 0xEE, 0xEE, 0x33, 0x20,
+ 0x20, 0x20, 0x20, 0x41, 0xD9, 0xB2, 0xD6, 0xAF,
+ 0x85, 0x85, 0xD9, 0x95, 0x2C, 0x85, 0xDA, 0x85,
+ 0x85, 0x2C, 0x85, 0x8A, 0x8D, 0xDA, 0xD9, 0x48,
+ 0x81, 0x2D, 0x48, 0xD6, 0xD9, 0xAF, 0x2C, 0x2C,
+ 0xAC, 0xAF, 0xD9, 0x7D, 0xD6, 0x2C, 0x85, 0x2C,
+ 0xD9, 0xD9, 0x2C, 0xDA, 0xDA, 0xDA, 0x2C, 0x2C,
+ 0x85, 0x8D, 0x8D, 0x2C, 0x21, 0x2D, 0x2D, 0xE9,
+ 0xD6, 0xD9, 0xAF, 0x2C, 0x85, 0xDA, 0x20, 0xE3,
+ 0xB4, 0xBE, 0xF1, 0x3E, 0x9B, 0x22, 0x56, 0xF2,
+ 0xBB, 0x7F, 0x56, 0xDC, 0x8F, 0x5A, 0x5F, 0x20,
+ 0x20, 0x20, 0x20, 0x6B, 0x2C, 0x7D, 0xD6, 0x2C,
+ 0x85, 0x2C, 0xD9, 0xD9, 0x2C, 0xDA, 0xDA, 0xDA,
+ 0x2C, 0x2C, 0x85, 0x8D, 0x8A, 0x85, 0x21, 0x2D,
+ 0x2D, 0xE9, 0xD6, 0xD9, 0xAF, 0x2C, 0x85, 0x85,
+ 0x2A, 0x85, 0xAC, 0x95, 0x95, 0x2C, 0x85, 0x85,
+ 0xAC, 0xAF, 0x85, 0xDA, 0xDA, 0x85, 0x2C, 0x2C,
+ 0xDA, 0x8A, 0x8A, 0xAF, 0xA1, 0x2D, 0xE9, 0xD6,
+ 0xD9, 0xAC, 0x85, 0x85, 0x85, 0xDA, 0x20, 0x52,
+ 0x55, 0xED, 0x57, 0x3E, 0x22, 0x56, 0x37, 0xBB,
+ 0xBB, 0x58, 0x7F, 0x7F, 0x56, 0x5E, 0xC5, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x2C, 0x95, 0x95, 0x2C,
+ 0x85, 0x85, 0xAC, 0xAF, 0x85, 0xDA, 0xDA, 0x85,
+ 0x2C, 0x2C, 0xDA, 0x8D, 0xDA, 0xAF, 0xA1, 0x2D,
+ 0xE9, 0xD6, 0xD9, 0xAF, 0x2C, 0x85, 0x85, 0x85,
+ 0xCD, 0xAF, 0xD9, 0x95, 0xD9, 0x2C, 0xDA, 0x85,
+ 0xAF, 0xD9, 0x85, 0xDA, 0x85, 0x2C, 0xAC, 0xAF,
+ 0x85, 0x8A, 0x85, 0xD9, 0x48, 0x48, 0xB2, 0x95,
+ 0x95, 0xAC, 0x2C, 0x85, 0xDA, 0xDA, 0x6B, 0xB3,
+ 0x46, 0x7C, 0x2E, 0x9B, 0x22, 0x56, 0xBB, 0x37,
+ 0x58, 0x58, 0xF2, 0x3A, 0x46, 0x63, 0x64, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x2D, 0x95, 0xD9, 0x2C,
+ 0xDA, 0x85, 0xAF, 0xD9, 0x85, 0xDA, 0x85, 0x2C,
+ 0xAC, 0xAF, 0x85, 0xDA, 0x85, 0xD9, 0x48, 0x48,
+ 0xB2, 0x95, 0x95, 0xD9, 0x85, 0xDA, 0x85, 0x85,
+ 0xBC, 0xB2, 0xB2, 0x7D, 0xD9, 0x2C, 0xDA, 0x85,
+ 0xAF, 0xD9, 0x85, 0xDA, 0x85, 0x85, 0xAF, 0x2C,
+ 0x85, 0xDA, 0x2C, 0x7D, 0xA1, 0x48, 0xB2, 0x21,
+ 0xD6, 0xD9, 0x85, 0xDA, 0x85, 0xDA, 0x41, 0x51,
+ 0xB7, 0xEC, 0x2E, 0x22, 0x56, 0x37, 0xBB, 0xF2,
+ 0x37, 0xEA, 0x2F, 0x2F, 0x77, 0xA7, 0x38, 0x20,
+ 0x20, 0x6B, 0x20, 0x20, 0x5B, 0x2C, 0xD9, 0x2C,
+ 0xDA, 0x85, 0xAF, 0xD9, 0x85, 0xDA, 0x85, 0x85,
+ 0xAF, 0x2C, 0xDA, 0xDA, 0x2C, 0x7D, 0xA1, 0x48,
+ 0xB2, 0x21, 0xD6, 0xD9, 0x2C, 0xDA, 0x85, 0xAF,
+ 0x2C, 0x2D, 0x48, 0x7D, 0xAF, 0x2C, 0x85, 0x2C,
+ 0xD9, 0xAC, 0xAF, 0x85, 0x85, 0x2C, 0x2C, 0x2C,
+ 0x85, 0x2C, 0xD9, 0xD6, 0xA1, 0xA1, 0x48, 0xA1,
+ 0x21, 0x2C, 0xDA, 0xDA, 0x2C, 0x85, 0x41, 0x98,
+ 0xA2, 0xA7, 0x6F, 0xC9, 0x37, 0xF2, 0xF2, 0x9B,
+ 0xB7, 0x66, 0x60, 0x4C, 0xED, 0x84, 0x3C, 0x20,
+ 0x5B, 0x2D, 0x2B, 0x6B, 0x20, 0xAF, 0xAF, 0x2C,
+ 0x85, 0x2C, 0xD9, 0xAC, 0xAF, 0x85, 0x85, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0x85, 0xD9, 0xD6, 0xA1, 0xA1,
+ 0x48, 0xA1, 0xD6, 0xAF, 0xDA, 0x8A, 0x2C, 0xD9,
+ 0xB2, 0x2D, 0x48, 0x95, 0x2C, 0x2C, 0x2C, 0x85,
+ 0xAC, 0xAC, 0xAF, 0x85, 0xDA, 0x85, 0xAF, 0xAC,
+ 0xAF, 0x2C, 0xD9, 0xD6, 0xD6, 0xD6, 0x21, 0xD6,
+ 0xD9, 0xDA, 0x8D, 0xDA, 0xAF, 0x2C, 0x20, 0x88,
+ 0x42, 0x51, 0x3F, 0x2F, 0x45, 0xB7, 0x66, 0x55,
+ 0x46, 0x60, 0x5D, 0x36, 0xD8, 0x71, 0x43, 0x20,
+ 0x20, 0x2D, 0xB2, 0x80, 0x20, 0x2D, 0x2C, 0x2C,
+ 0x2C, 0x85, 0xAC, 0xAC, 0xAF, 0x85, 0xDA, 0x85,
+ 0xAF, 0xAC, 0xAC, 0xAF, 0xD9, 0xD6, 0xD6, 0xD6,
+ 0x21, 0xD6, 0xD9, 0xDA, 0x8D, 0x8A, 0x2C, 0xD9,
+ 0xB2, 0x48, 0xD6, 0xAC, 0xAF, 0x2C, 0x2C, 0x85,
+ 0x2C, 0xAC, 0x2C, 0xDA, 0xDA, 0x85, 0xAF, 0xD9,
+ 0xD9, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xAC,
+ 0x85, 0x8D, 0xBC, 0xDA, 0xD9, 0xDA, 0x20, 0xE3,
+ 0xDA, 0x69, 0x96, 0xB5, 0xF1, 0x68, 0x5D, 0x82,
+ 0xE1, 0xBE, 0x27, 0x8D, 0x4D, 0xD3, 0x7D, 0x20,
+ 0x20, 0xDB, 0xA1, 0xCA, 0x20, 0x88, 0x85, 0x2C,
+ 0x2C, 0x85, 0x2C, 0xAC, 0x2C, 0xDA, 0xDA, 0x85,
+ 0xAF, 0xD9, 0xAC, 0xAF, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xD9, 0xAC, 0xDA, 0x8D, 0xBC, 0xDA, 0xD9, 0x95,
+ 0xD9, 0x95, 0xAC, 0x2C, 0x2C, 0x2C, 0x2C, 0x85,
+ 0x85, 0xAF, 0xAF, 0x85, 0x85, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0x85,
+ 0x8D, 0x2A, 0x2A, 0x85, 0xD9, 0x95, 0x20, 0xDB,
+ 0x8D, 0x8D, 0x99, 0xB0, 0x35, 0xE5, 0x3F, 0x35,
+ 0xB9, 0x50, 0x8A, 0x4D, 0x73, 0xE8, 0xA3, 0xCC,
+ 0x20, 0x20, 0x33, 0x6B, 0x20, 0x20, 0xCC, 0x85,
+ 0x2C, 0x85, 0x85, 0xAF, 0xAF, 0x85, 0x85, 0x85,
+ 0x2C, 0xD9, 0xD9, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x85, 0x8A, 0x2A, 0x8D, 0x2C, 0xD9, 0xD9,
+ 0xAF, 0xAF, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C, 0x85,
+ 0x2C, 0xAF, 0xAF, 0xAF, 0x2C, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xAC, 0xAF, 0x2C, 0x85, 0x85, 0xDA, 0xDA,
+ 0x8A, 0x8A, 0x85, 0xD9, 0x2C, 0x2B, 0x20, 0xAE,
+ 0xA3, 0xBC, 0x8D, 0xC8, 0xA9, 0xC7, 0x92, 0x47,
+ 0x8D, 0x8D, 0x7E, 0xE4, 0xE8, 0xE8, 0x5C, 0x2C,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6B, 0xAF,
+ 0x2C, 0x85, 0x2C, 0xAF, 0xAF, 0xAF, 0x2C, 0x2C,
+ 0x2C, 0xAF, 0xD9, 0xAC, 0x2C, 0x2C, 0x85, 0x85,
+ 0x85, 0xDA, 0x8D, 0x8A, 0x85, 0xAC, 0x95, 0xD9,
+ 0xAC, 0xAC, 0xAC, 0xAC, 0x2C, 0xAF, 0xAF, 0x2C,
+ 0x2C, 0xAF, 0xAF, 0xAC, 0x2C, 0xAF, 0x2C, 0xAF,
+ 0xD9, 0xAC, 0x2C, 0x2C, 0x85, 0x85, 0x85, 0x85,
+ 0x85, 0x2C, 0xD9, 0xD9, 0x2D, 0x6B, 0x41, 0x2A,
+ 0xE8, 0xA3, 0xC8, 0x8D, 0x8A, 0x8A, 0x8A, 0x8D,
+ 0x4D, 0xA3, 0x3D, 0xE8, 0xE8, 0xE8, 0xE8, 0x5C,
+ 0xAE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xDB,
+ 0xDA, 0x2C, 0x2C, 0xAF, 0xAF, 0xAC, 0xAC, 0xAF,
+ 0x2C, 0xAC, 0xD9, 0xAC, 0x2C, 0x2C, 0x85, 0x85,
+ 0x85, 0x85, 0x85, 0x2C, 0xD9, 0x95, 0x7D, 0xD9,
+ 0x7D, 0x7D, 0xD9, 0xAC, 0xAC, 0xAF, 0xAF, 0xAF,
+ 0x2C, 0x2C, 0xAC, 0xAC, 0xD9, 0xAC, 0xAC, 0xD9,
+ 0x95, 0xD9, 0xAC, 0xAF, 0xAF, 0xAC, 0xAF, 0xAC,
+ 0xD9, 0x7D, 0x7D, 0x7D, 0x33, 0x41, 0x2D, 0xE8,
+ 0xE8, 0x5C, 0xD3, 0x8D, 0x8D, 0x8D, 0x8D, 0x7E,
+ 0x3D, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xDA, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x81, 0x2C, 0x2C, 0x2C, 0xAC, 0xAC, 0xAC, 0xAC,
+ 0xAC, 0xD9, 0x95, 0x95, 0xAC, 0xAF, 0xAF, 0xAF,
+ 0xAF, 0xAC, 0xD9, 0x95, 0x7D, 0xD6, 0xD6, 0x7D,
+ 0x21, 0xD6, 0x95, 0xD9, 0xD9, 0xAC, 0xAF, 0xAF,
+ 0x2C, 0xAF, 0xAC, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0x21, 0x21, 0x7D, 0x95, 0x95, 0x7D, 0xD6, 0x21,
+ 0xB2, 0xA1, 0x2C, 0x88, 0x20, 0xE3, 0xA3, 0xE8,
+ 0xE8, 0xE8, 0xE4, 0xEE, 0xD3, 0x7E, 0x73, 0x5C,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0x5C, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x2C, 0xAF, 0xAF, 0xAC, 0xD9, 0xD9, 0xD9,
+ 0xD9, 0xD9, 0xD6, 0x21, 0x7D, 0x95, 0x95, 0x7D,
+ 0xD6, 0xB2, 0xA1, 0xA1, 0xB2, 0xD6, 0x21, 0x21,
+ 0x21, 0xD9, 0xD9, 0xD9, 0xAC, 0xAF, 0xAC, 0xAF,
+ 0x2C, 0x2C, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9, 0x95,
+ 0x7D, 0xB2, 0xD6, 0x95, 0xD9, 0x95, 0xD6, 0xA1,
+ 0xA1, 0xAF, 0x5B, 0x20, 0x20, 0xD6, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0x5C, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0x48, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xE3, 0x8A, 0x2C, 0xAC, 0xAC, 0xD9, 0xD9,
+ 0xD9, 0x95, 0xD6, 0xB2, 0xD6, 0x95, 0xD9, 0x95,
+ 0x21, 0xB2, 0xA1, 0xB2, 0xD6, 0xD6, 0xD6, 0xA1,
+ 0xD9, 0x2C, 0x2C, 0x2C, 0xAF, 0xAF, 0xAC, 0xAF,
+ 0x2C, 0x2C, 0xAF, 0xAC, 0xD9, 0xAC, 0xD9, 0xD9,
+ 0xD9, 0x95, 0xAC, 0x2C, 0x2C, 0xAC, 0x95, 0x7D,
+ 0xD9, 0x91, 0x20, 0x20, 0xE3, 0xA3, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0x85, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x2B, 0x8A, 0xAF, 0xAC, 0xD9, 0xAC,
+ 0xD9, 0xD9, 0xD9, 0x95, 0xAC, 0x2C, 0x2C, 0xAC,
+ 0x95, 0x7D, 0x95, 0x95, 0xD9, 0x95, 0x7D, 0x21,
+ 0x2C, 0xDA, 0xDA, 0x85, 0x2C, 0xAF, 0xAF, 0xAF,
+ 0xAF, 0xAF, 0x2C, 0xAF, 0xAF, 0xAC, 0xAC, 0xAC,
+ 0xD9, 0xAF, 0x85, 0x85, 0x2C, 0xAF, 0xD9, 0xAF,
+ 0x48, 0x20, 0x20, 0x20, 0xE6, 0xA3, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x5C,
+ 0xE4, 0x73, 0x41, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x2B, 0xDA, 0xAF, 0xAF, 0xAC,
+ 0xAC, 0xAF, 0xD9, 0x2C, 0x85, 0x85, 0x2C, 0xAF,
+ 0xD9, 0xD9, 0xAC, 0xAF, 0xAC, 0xD9, 0xD9, 0xD9,
+ 0x85, 0xDA, 0xDA, 0x85, 0x2C, 0x2C, 0xAC, 0xAF,
+ 0xAF, 0xAF, 0xAF, 0x2C, 0xAF, 0xAF, 0xAC, 0xAC,
+ 0xAF, 0x2C, 0x2C, 0x2C, 0xAC, 0x95, 0x95, 0xA1,
+ 0x20, 0x20, 0x20, 0x20, 0xE9, 0x8C, 0x5C, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0x3D, 0x73, 0x73, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE4, 0x73, 0x73, 0x73, 0xCD,
+ 0x7E, 0xA3, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x24, 0x85, 0xAF, 0xAF,
+ 0xAC, 0xAC, 0xAC, 0xAF, 0x85, 0x2C, 0xAC, 0x95,
+ 0x95, 0xD9, 0xAC, 0xAC, 0xAC, 0xD9, 0xAC, 0xAF,
+ 0x8A, 0x8A, 0xDA, 0xDA, 0x85, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0xAF, 0xAF, 0xAC, 0xAF, 0xAC,
+ 0xAC, 0xAF, 0xAF, 0xD9, 0xD6, 0xD6, 0x2C, 0x88,
+ 0x20, 0x20, 0x20, 0x88, 0xB2, 0xDA, 0x7E, 0x73,
+ 0xE8, 0xE8, 0xE8, 0x3D, 0x73, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xA3, 0xCD, 0xD3, 0x2A, 0x2A,
+ 0x2A, 0x8C, 0x8D, 0x88, 0x20, 0xE3, 0x6B, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x41, 0x85, 0xAF, 0xAC,
+ 0xAC, 0xAC, 0xAC, 0xAF, 0xAC, 0xD9, 0x7D, 0xD6,
+ 0x7D, 0x7D, 0xD9, 0x95, 0xD9, 0xAC, 0xAC, 0xAF,
+ 0xD3, 0x8D, 0xDA, 0xDA, 0x85, 0x85, 0x2C, 0x2C,
+ 0x2C, 0xAF, 0xAF, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xAF, 0xAF, 0xAC, 0xD9, 0x95, 0x7D, 0xAC, 0x20,
+ 0x20, 0x20, 0x20, 0xDB, 0x2C, 0xA3, 0x5C, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0x5C, 0x3D, 0x3D, 0xE8, 0xE8,
+ 0xE8, 0xE4, 0xE8, 0xE8, 0xE8, 0xE4, 0x73, 0xEE,
+ 0xD3, 0x2A, 0xEE, 0xAC, 0x20, 0x33, 0x2B, 0xE3,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x9F, 0xAF, 0xD9,
+ 0xD9, 0xAC, 0xAF, 0xAF, 0xAC, 0xD9, 0x95, 0x7D,
+ 0xD9, 0x95, 0x95, 0x95, 0x95, 0xD9, 0xAF, 0xAF,
+ 0x7E, 0x85, 0x85, 0x2C, 0x85, 0x85, 0x85, 0x2C,
+ 0x2C, 0x2C, 0xAF, 0xD9, 0xD9, 0x95, 0xD9, 0xAC,
+ 0xAC, 0xAF, 0xAF, 0xAC, 0xAC, 0xAC, 0x91, 0x20,
+ 0x33, 0xE3, 0x41, 0x48, 0x73, 0x5C, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xA3, 0xD6, 0x6C, 0x85, 0xE8,
+ 0xDA, 0xAE, 0xB2, 0xA3, 0x5C, 0xE8, 0xE8, 0xE8,
+ 0x3D, 0xEE, 0x4D, 0xA3, 0x24, 0x20, 0x6B, 0xDB,
+ 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x85, 0x95,
+ 0xD9, 0xD9, 0xAC, 0xAF, 0xAF, 0xAC, 0xD9, 0xAC,
+ 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xAC, 0xD9, 0xAC,
+ 0x8A, 0xD9, 0xAC, 0xD9, 0xAC, 0xAC, 0x2C, 0x2C,
+ 0xAF, 0xAF, 0xAF, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xAF, 0xAF, 0xAF, 0xAC, 0xAC, 0x85, 0x33, 0x20,
+ 0xCC, 0x20, 0xE3, 0xA3, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xA3, 0xD9, 0x81, 0xAC, 0xDA, 0x2D, 0x5C,
+ 0x48, 0x41, 0x88, 0x74, 0x21, 0xA3, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0x73, 0x8C, 0x8A, 0x20, 0x20, 0x20,
+ 0xDB, 0x33, 0x20, 0x20, 0x20, 0x20, 0xE6, 0xD9,
+ 0xD9, 0xAC, 0xAC, 0xAF, 0xAC, 0xAF, 0xAC, 0xAF,
+ 0xAF, 0xAC, 0xD9, 0xAF, 0xD9, 0xAC, 0xAC, 0xAF,
+ 0x85, 0xD9, 0x95, 0xD9, 0x95, 0xD9, 0xD9, 0xAC,
+ 0xAF, 0xAC, 0xAF, 0xAF, 0x2C, 0xAF, 0x2C, 0x2C,
+ 0xAF, 0xAF, 0xAF, 0xAC, 0xAC, 0x2C, 0x20, 0x5B,
+ 0x33, 0x20, 0xD6, 0xE8, 0xE8, 0xE8, 0xE8, 0x73,
+ 0xAF, 0x2D, 0xD9, 0xDA, 0xB2, 0x81, 0x81, 0xE4,
+ 0xA1, 0x91, 0x2B, 0x88, 0x33, 0x80, 0xAF, 0x73,
+ 0xE8, 0xE8, 0xE8, 0x5C, 0xA3, 0x80, 0x41, 0xCC,
+ 0x2B, 0xCC, 0x20, 0x20, 0x20, 0x20, 0x88, 0xDA,
+ 0x2C, 0x2C, 0x2C, 0xAF, 0xAF, 0xAC, 0xAC, 0xAF,
+ 0xAF, 0xAF, 0xAF, 0xAC, 0xAF, 0xAF, 0xAF, 0x2C,
+ 0x85, 0xD9, 0xD9, 0xD9, 0xD9, 0xAC, 0xAC, 0xD9,
+ 0xD9, 0xD9, 0xAC, 0x2C, 0x2C, 0x2C, 0x85, 0x85,
+ 0x85, 0x2C, 0x2C, 0xAF, 0x2C, 0x91, 0x20, 0xAE,
+ 0x20, 0xDB, 0x3D, 0xE8, 0xE8, 0x5C, 0xB2, 0x80,
+ 0xB2, 0xAF, 0x48, 0xB2, 0x48, 0x89, 0x89, 0x3D,
+ 0x21, 0x48, 0x6C, 0x2D, 0x2B, 0x41, 0xE3, 0xAE,
+ 0xD9, 0x5C, 0xE8, 0xE8, 0xE8, 0x95, 0x33, 0x80,
+ 0xAE, 0x33, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x95,
+ 0x85, 0x2C, 0x85, 0x2C, 0x2C, 0xAF, 0x2C, 0x2C,
+ 0x2C, 0xAF, 0xAC, 0xAF, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0xDA, 0xAF, 0xD9, 0xD9, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0xAC, 0xAF, 0x2C, 0x85, 0x2C, 0x85,
+ 0x85, 0x2C, 0x2C, 0x2C, 0x8A, 0x41, 0xDB, 0x33,
+ 0x20, 0x95, 0xE8, 0xE8, 0xE8, 0xA3, 0xDB, 0x88,
+ 0xDB, 0x80, 0xD6, 0x7E, 0x85, 0x2D, 0xE6, 0x5C,
+ 0x21, 0x48, 0xD9, 0x7E, 0xD6, 0x2B, 0xCC, 0xAC,
+ 0x85, 0xBC, 0xE8, 0xE8, 0xE8, 0xCD, 0x88, 0x5B,
+ 0x41, 0x20, 0xAE, 0x20, 0x20, 0x20, 0x20, 0x74,
+ 0xDA, 0x85, 0x85, 0x85, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xAF, 0xAC, 0xD9, 0xD9, 0xAC, 0xAC, 0xAC, 0xD9,
+ 0x8A, 0xAF, 0xAC, 0xAC, 0x2C, 0x85, 0x2C, 0xAF,
+ 0xD9, 0xD9, 0xAF, 0xAF, 0xAF, 0x2C, 0xAF, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0xAF, 0x95, 0x20, 0x74, 0x20,
+ 0x33, 0xA3, 0xE8, 0xE8, 0xE8, 0xE4, 0x7D, 0xCC,
+ 0x6B, 0x33, 0xAE, 0x2C, 0x85, 0x2D, 0x9F, 0x73,
+ 0xA1, 0x2D, 0x2C, 0xDA, 0x89, 0x48, 0xD3, 0xD9,
+ 0x21, 0xA3, 0xE8, 0xE8, 0xE8, 0xE8, 0xE3, 0x20,
+ 0x20, 0x20, 0xDB, 0x41, 0x20, 0x20, 0x20, 0x20,
+ 0xDA, 0x2C, 0x2C, 0x2C, 0x2C, 0xAF, 0xAC, 0xAC,
+ 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0x95, 0x95, 0xD9,
+ 0x2C, 0xD9, 0xD9, 0xAC, 0x2C, 0x2C, 0x85, 0xAF,
+ 0xAF, 0xAF, 0xAC, 0xAC, 0xD9, 0xAC, 0xAF, 0xAC,
+ 0xAC, 0x95, 0xD6, 0x7D, 0xAE, 0x88, 0x2B, 0x20,
+ 0x6C, 0xE8, 0xE8, 0xE8, 0x73, 0xEE, 0x73, 0x2C,
+ 0x89, 0x2B, 0x41, 0x33, 0xCC, 0xCC, 0x80, 0x3D,
+ 0x2D, 0x74, 0x80, 0x48, 0x8D, 0x95, 0x48, 0x95,
+ 0xEE, 0x5C, 0x5C, 0xE8, 0xE8, 0xE8, 0x24, 0x20,
+ 0x20, 0x20, 0x5B, 0xDB, 0x20, 0x20, 0x20, 0x20,
+ 0xAF, 0xAC, 0xD9, 0x95, 0xD6, 0xD6, 0xD6, 0x7D,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0xD9, 0xAC,
+ 0xAC, 0xD9, 0xD9, 0xAC, 0x2C, 0x2C, 0x2C, 0xAF,
+ 0xAC, 0xAC, 0xAC, 0xAC, 0xD9, 0xAC, 0xAC, 0xD9,
+ 0xD6, 0x48, 0xE9, 0x95, 0x20, 0x2B, 0x41, 0x6B,
+ 0x8D, 0xE8, 0xE8, 0xCD, 0x2B, 0x2B, 0x2C, 0x73,
+ 0xCD, 0x48, 0xCA, 0x5B, 0x41, 0x5B, 0x74, 0xDA,
+ 0x80, 0xE6, 0xC8, 0x85, 0xA1, 0x7D, 0x8D, 0x3D,
+ 0x7E, 0xE9, 0x7D, 0xEE, 0xE8, 0xE8, 0x81, 0x20,
+ 0x20, 0x20, 0xE3, 0xE3, 0x20, 0x20, 0x20, 0x20,
+ 0x2D, 0xD9, 0xD6, 0x48, 0x6C, 0xE9, 0xA1, 0xD6,
+ 0xD9, 0xD9, 0xAC, 0xD9, 0xD9, 0x95, 0xAC, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0xD9, 0xAC, 0x2C, 0x2C, 0x2C,
+ 0xAF, 0x2C, 0xAF, 0xD9, 0xAC, 0xAF, 0xAF, 0x95,
+ 0xB2, 0xE9, 0x21, 0x2B, 0x41, 0x2B, 0x20, 0x5B,
+ 0x3D, 0xE8, 0xE8, 0x8D, 0x2B, 0x88, 0x5B, 0xE6,
+ 0xBC, 0x73, 0x85, 0x89, 0x80, 0x5B, 0xE3, 0xAE,
+ 0x2C, 0x8A, 0xD6, 0xB2, 0x2C, 0xA3, 0xA3, 0xD9,
+ 0xA1, 0x2C, 0x85, 0x8D, 0xE8, 0xE8, 0x48, 0x20,
+ 0x20, 0x20, 0xE3, 0x88, 0x20, 0x20, 0x20, 0x20,
+ 0xAE, 0xD9, 0xB2, 0xE9, 0x6C, 0x48, 0xD6, 0xD9,
+ 0x2C, 0x85, 0x2C, 0xD9, 0x7D, 0xD9, 0x2C, 0x85,
+ 0x8D, 0x85, 0x2C, 0xAC, 0xAF, 0x2C, 0x2C, 0x85,
+ 0x2C, 0x2C, 0xAF, 0xAC, 0xAC, 0xAF, 0xAF, 0xD9,
+ 0xB2, 0x48, 0xB2, 0x20, 0x20, 0xCC, 0x20, 0x9F,
+ 0xE8, 0xE8, 0xE8, 0xCD, 0x48, 0x89, 0xDB, 0x88,
+ 0x2B, 0xE9, 0xCD, 0x2A, 0x48, 0x80, 0xAE, 0xAE,
+ 0x7D, 0x48, 0x21, 0xEE, 0x3D, 0x2C, 0x48, 0x85,
+ 0x2C, 0x95, 0x7D, 0x8C, 0xE8, 0xE8, 0xB2, 0x20,
+ 0x20, 0x20, 0xDB, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0xDB, 0x2C, 0xB2, 0x48, 0x48, 0x7D, 0xD9, 0xAF,
+ 0x85, 0x8A, 0x85, 0x7D, 0xB2, 0x95, 0x85, 0xDA,
+ 0xD3, 0x85, 0xAF, 0xAC, 0x2C, 0x85, 0x85, 0x2C,
+ 0xAC, 0xAC, 0xAC, 0xD9, 0xD9, 0xAC, 0x2C, 0x2C,
+ 0xD9, 0xAC, 0x5B, 0x20, 0x20, 0xAE, 0x20, 0x2D,
+ 0xE8, 0xE8, 0xE8, 0x7E, 0xD6, 0x48, 0xE9, 0xAE,
+ 0x88, 0x5B, 0x80, 0x6C, 0xAE, 0xCA, 0x91, 0xE9,
+ 0x43, 0x9F, 0xE6, 0x2C, 0x48, 0x21, 0xBC, 0x95,
+ 0x95, 0xD6, 0x21, 0x7E, 0xE8, 0xE8, 0x7D, 0x20,
+ 0x20, 0x20, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6B, 0xDA, 0xD9, 0x48, 0xB2, 0xD9, 0x2C, 0x85,
+ 0xDA, 0xDA, 0x2C, 0xA1, 0x48, 0xAC, 0xDA, 0x8D,
+ 0x2A, 0xAC, 0x7D, 0x95, 0xAF, 0x85, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0x95, 0x7D, 0x95, 0xAC, 0x2C, 0xAF,
+ 0x7D, 0xD6, 0x20, 0x20, 0x88, 0x9F, 0x20, 0xA1,
+ 0xE8, 0xE8, 0xE8, 0xA3, 0xD6, 0x6C, 0xB2, 0x2C,
+ 0x89, 0xE3, 0x88, 0xDB, 0xCC, 0x24, 0x7D, 0xEE,
+ 0xB2, 0xCC, 0xAE, 0x2D, 0xDA, 0x2C, 0xD6, 0x2C,
+ 0xB2, 0x2D, 0xD6, 0xEE, 0xE8, 0xE8, 0x95, 0x20,
+ 0x20, 0x20, 0xDB, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6B, 0xDA, 0x95, 0xA1, 0xB2, 0xAC, 0x85, 0x85,
+ 0xDA, 0x2C, 0x95, 0xA1, 0x21, 0x2C, 0x8A, 0x2A,
+ 0xAF, 0xA1, 0x48, 0xD6, 0xAF, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xD9, 0x95, 0x7D, 0x95, 0xAC, 0xD9, 0x7D,
+ 0x48, 0xE6, 0x20, 0x20, 0x33, 0x89, 0x6B, 0x95,
+ 0xE8, 0xE8, 0xE8, 0xA3, 0x21, 0x48, 0xAF, 0xAF,
+ 0x9F, 0xE9, 0x43, 0x33, 0x33, 0x2D, 0xDA, 0xCD,
+ 0xD6, 0xAE, 0x85, 0x2C, 0x7D, 0xD6, 0x91, 0xB8,
+ 0xD4, 0x48, 0x7D, 0xA3, 0xE8, 0xE8, 0x95, 0x20,
+ 0x20, 0x33, 0xE3, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x2C, 0x48, 0x6C, 0xB2, 0xAF, 0xDA, 0xDA,
+ 0x85, 0xAF, 0xD9, 0x95, 0xAC, 0xDA, 0x8A, 0xDA,
+ 0x7D, 0x48, 0x48, 0x7D, 0x2C, 0x85, 0x2C, 0xAF,
+ 0xD9, 0xD9, 0x7D, 0x95, 0xD9, 0xD9, 0x95, 0xD6,
+ 0x21, 0x24, 0x20, 0x20, 0x20, 0x5B, 0xDB, 0xAC,
+ 0xE8, 0xE8, 0xE8, 0x3D, 0x7D, 0x48, 0xE6, 0x2D,
+ 0x85, 0x81, 0x81, 0x48, 0xAE, 0xCA, 0x89, 0xCC,
+ 0xAE, 0xDB, 0x2D, 0x95, 0x21, 0xCC, 0xDB, 0xAE,
+ 0x91, 0xE9, 0x7D, 0x73, 0xE8, 0xE8, 0x48, 0x20,
+ 0x6B, 0x74, 0x41, 0x88, 0x6B, 0x20, 0x20, 0x20,
+ 0x6B, 0x95, 0xB2, 0xD6, 0xD9, 0x85, 0xDA, 0xDA,
+ 0xDA, 0x2C, 0xAF, 0xAF, 0x2C, 0xDA, 0xDA, 0x85,
+ 0xA1, 0xE9, 0x48, 0x95, 0x85, 0xDA, 0x85, 0xAC,
+ 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xD9, 0xD9, 0x95,
+ 0x95, 0x6C, 0x41, 0x93, 0x93, 0x41, 0xDB, 0x95,
+ 0xE8, 0xE8, 0xE8, 0x3D, 0x95, 0xD4, 0x6C, 0x21,
+ 0x2D, 0x95, 0xCD, 0x2C, 0xD6, 0xD9, 0x6C, 0x91,
+ 0x89, 0x7D, 0xAC, 0x2A, 0x8D, 0xE6, 0xCC, 0x88,
+ 0x74, 0x48, 0xD9, 0xE4, 0xE8, 0xE8, 0xE6, 0x88,
+ 0x2B, 0x88, 0x20, 0x33, 0xDB, 0x2B, 0xDB, 0x20,
+ 0x91, 0x7D, 0xD9, 0xD9, 0x85, 0x85, 0xDA, 0xDA,
+ 0x85, 0xAF, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xA1, 0xA1, 0xD6, 0xAF, 0x85, 0xDA, 0x85, 0x2C,
+ 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xD9, 0xD9, 0xAC,
+ 0x2C, 0x47, 0x87, 0x3E, 0x3E, 0xA4, 0x7B, 0x80,
+ 0xA3, 0xE8, 0xE8, 0x5C, 0x7D, 0x48, 0xE6, 0xD9,
+ 0xBC, 0xEE, 0x7D, 0x43, 0xD6, 0x21, 0x43, 0x6C,
+ 0x43, 0x7D, 0x7D, 0xB2, 0x8A, 0xEE, 0x2C, 0xCA,
+ 0xAE, 0x48, 0x2C, 0xE4, 0xE8, 0x5C, 0xCC, 0x88,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x91, 0xE3,
+ 0x21, 0xD9, 0x2C, 0x2C, 0xDA, 0xDA, 0xDA, 0x85,
+ 0x2C, 0xAC, 0xD9, 0xD9, 0xAC, 0xAF, 0xAF, 0xAF,
+ 0xD6, 0x7D, 0xD9, 0x2C, 0xDA, 0xDA, 0x85, 0xAC,
+ 0xD9, 0x7D, 0x7D, 0xD9, 0xD9, 0xD9, 0x2C, 0x2C,
+ 0xB8, 0x9C, 0xEC, 0x62, 0x6F, 0x62, 0x70, 0x3C,
+ 0xAE, 0xCD, 0xE8, 0xE8, 0x8C, 0x7D, 0xC8, 0x3D,
+ 0x8A, 0xE9, 0x2D, 0x9E, 0xA1, 0xD6, 0x48, 0x73,
+ 0x81, 0xD6, 0xD6, 0xAE, 0x5B, 0x2D, 0xA3, 0xA3,
+ 0x21, 0x21, 0xCD, 0xE8, 0xC0, 0x56, 0x31, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0xCC, 0xDB,
+ 0x42, 0x85, 0x85, 0x85, 0x85, 0x85, 0x2C, 0x2C,
+ 0xAC, 0xD9, 0xD9, 0xD9, 0xAC, 0xAF, 0xAF, 0xAF,
+ 0xD9, 0x95, 0xAC, 0x2C, 0x85, 0x85, 0x2C, 0xD9,
+ 0x7D, 0xD6, 0xD6, 0xD9, 0xAC, 0xAF, 0x8A, 0xBC,
+ 0xC2, 0x68, 0x2E, 0x4B, 0xC9, 0x8B, 0x62, 0x87,
+ 0x3C, 0x74, 0xBC, 0xE8, 0xE8, 0xE4, 0xEE, 0xA1,
+ 0xE9, 0x21, 0xE6, 0x89, 0x48, 0x7D, 0xB2, 0x5C,
+ 0x6C, 0x7D, 0x21, 0x80, 0xE3, 0x33, 0xCC, 0x2C,
+ 0x3D, 0x3D, 0xE8, 0xE8, 0xEC, 0xCB, 0x5A, 0x6B,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x88, 0x41, 0x51,
+ 0x49, 0x28, 0x85, 0x85, 0x85, 0x85, 0x2C, 0xAF,
+ 0xAC, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xD9, 0x95, 0xD9, 0x2C, 0x85, 0x85, 0x2C, 0xD9,
+ 0xB2, 0xB2, 0x2C, 0x2A, 0x79, 0x79, 0x97, 0x44,
+ 0xED, 0x29, 0x32, 0x62, 0x4B, 0x62, 0x6F, 0x22,
+ 0xF3, 0x6B, 0x33, 0x85, 0x73, 0xE4, 0x2D, 0x2B,
+ 0xCC, 0x9F, 0xDA, 0xBC, 0x48, 0xD6, 0xA1, 0xE4,
+ 0xE9, 0xD6, 0xD9, 0x2A, 0xB2, 0x2B, 0x2B, 0xA1,
+ 0xB8, 0xE8, 0xE8, 0xE8, 0xEC, 0x3E, 0x30, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x6B, 0x54, 0xDC,
+ 0xC9, 0x53, 0xBC, 0x2C, 0x2C, 0x2C, 0xAF, 0xAF,
+ 0xAF, 0xAC, 0xAF, 0xAC, 0xAC, 0x2C, 0xAF, 0xAC,
+ 0x2C, 0x7D, 0xD9, 0x2C, 0x85, 0xDA, 0xAF, 0x7D,
+ 0xB2, 0xAC, 0xC6, 0xBA, 0x4C, 0xEF, 0xA7, 0xEF,
+ 0xEC, 0x7A, 0x62, 0x4B, 0x62, 0x4B, 0x8B, 0x4B,
+ 0x3A, 0x52, 0x20, 0x6B, 0x21, 0x73, 0xAC, 0x2B,
+ 0x41, 0x33, 0x48, 0x67, 0xA1, 0xD6, 0xD6, 0x5C,
+ 0xE9, 0xD6, 0x2C, 0xEE, 0xB2, 0x9F, 0x8A, 0x95,
+ 0x4D, 0xE8, 0xE8, 0x3D, 0x7A, 0x57, 0xD1, 0x7B,
+ 0x20, 0x20, 0x20, 0x20, 0x6B, 0xCF, 0xBA, 0x3E,
+ 0x3E, 0xD0, 0xBC, 0xAC, 0xAC, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xD9, 0x95, 0x95, 0x7D, 0x95, 0x95, 0xD9,
+ 0x85, 0xD9, 0xAF, 0xDA, 0xDA, 0x85, 0xAC, 0x21,
+ 0xB2, 0x2A, 0xBA, 0x57, 0x2E, 0x2E, 0x2E, 0x7A,
+ 0x32, 0x62, 0x8B, 0x4B, 0x8B, 0x4B, 0x4B, 0x4B,
+ 0xC9, 0x4A, 0x5F, 0x20, 0x20, 0x2D, 0xA3, 0xD9,
+ 0xCA, 0x88, 0xDB, 0x24, 0x48, 0x7D, 0xB2, 0xE4,
+ 0x2D, 0x7D, 0x7D, 0x81, 0xA1, 0xDA, 0x21, 0xDA,
+ 0xE4, 0xE8, 0xEE, 0xF1, 0x2E, 0x57, 0x82, 0x76,
+ 0x52, 0x4F, 0x4F, 0x98, 0xDE, 0xB5, 0xEC, 0x2E,
+ 0x3E, 0x6D, 0x85, 0x2C, 0xAC, 0xAC, 0xD9, 0xD9,
+ 0x95, 0xD6, 0x7D, 0x7D, 0x95, 0xD9, 0xD9, 0xD9,
+ 0xDA, 0x2C, 0x85, 0xDA, 0xDA, 0x2C, 0x95, 0xB2,
+ 0x21, 0xB8, 0xED, 0x2E, 0x3E, 0x4B, 0xC9, 0x4B,
+ 0x8B, 0x62, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x22, 0x6F, 0xCE, 0x20, 0x20, 0x20, 0x80, 0xCD,
+ 0xDA, 0x2D, 0x2B, 0xDB, 0xE9, 0xD6, 0x95, 0x5C,
+ 0x2D, 0x7D, 0x7D, 0xAF, 0xAF, 0xAC, 0xEE, 0x5C,
+ 0xE8, 0xE8, 0xEB, 0x25, 0x7A, 0x57, 0x39, 0xE1,
+ 0x83, 0xA8, 0x55, 0x83, 0x82, 0x57, 0x32, 0x8B,
+ 0x62, 0x6D, 0xEB, 0x95, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xD9, 0xD9, 0xD9, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xDA, 0x2C, 0x85, 0x85, 0x85, 0xAC, 0xD6, 0x21,
+ 0x95, 0x6E, 0xED, 0x57, 0x62, 0x4B, 0x8B, 0x4B,
+ 0x4B, 0x62, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x62,
+ 0x62, 0x62, 0x25, 0x3C, 0x20, 0x20, 0x20, 0xE3,
+ 0x2A, 0xBC, 0x7D, 0xCA, 0x6C, 0xD6, 0x95, 0x3D,
+ 0x81, 0x7D, 0xD6, 0xD6, 0xDA, 0x73, 0xE8, 0xE8,
+ 0xE8, 0x4D, 0x94, 0xED, 0x72, 0x3A, 0xF1, 0xA7,
+ 0x39, 0xED, 0x39, 0xEF, 0x57, 0x32, 0x8B, 0x4B,
+ 0x62, 0x62, 0xA6, 0x2A, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0x2C, 0x2C, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
+ 0x85, 0x2C, 0x2C, 0xAF, 0xAC, 0x95, 0x21, 0x7D,
+ 0xAC, 0x8C, 0x46, 0xC4, 0x62, 0x8B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x62, 0xC9, 0x30, 0x7B, 0x20, 0x20, 0x20,
+ 0x41, 0x4D, 0x3D, 0x85, 0x48, 0x21, 0xDA, 0x3D,
+ 0xE9, 0xD6, 0xD9, 0xCD, 0x5C, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0x4D, 0x71, 0x46, 0xEC, 0x2E, 0x72, 0xEC,
+ 0x29, 0x29, 0x7C, 0x29, 0x2E, 0x4B, 0x4B, 0x62,
+ 0x62, 0x4B, 0x3A, 0xAD, 0xE2, 0xAF, 0xD9, 0xD9,
+ 0x2C, 0xDA, 0xDA, 0xDA, 0xDA, 0x85, 0x2C, 0x2C,
+ 0x2C, 0xAF, 0xAC, 0xD9, 0x95, 0xD6, 0xD6, 0xD9,
+ 0x2C, 0x8C, 0xBA, 0x7C, 0x2E, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x62, 0xC9, 0xDC, 0x34, 0x20, 0x20, 0x20,
+ 0x20, 0xAC, 0xE8, 0x5C, 0x8C, 0xBC, 0xE4, 0xE8,
+ 0xEE, 0x2A, 0xA3, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE4, 0x7E, 0x65, 0x46, 0x29, 0x62, 0x62, 0x2E,
+ 0x2E, 0x72, 0x2E, 0x2E, 0x32, 0x4B, 0x4B, 0x62,
+ 0x4B, 0x4B, 0x4B, 0x32, 0x61, 0x9D, 0x2C, 0xD9,
+ 0x2C, 0x85, 0xDA, 0x85, 0x2C, 0xAF, 0xAF, 0xAF,
+ 0x2C, 0xAC, 0xD9, 0x95, 0xD6, 0x7D, 0x95, 0xAC,
+ 0x2C, 0xDA, 0x40, 0x7C, 0x2E, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x62, 0x62, 0x22, 0xB7, 0xCE, 0x20, 0x20,
+ 0x20, 0x95, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x5C,
+ 0x3D, 0xE9, 0x9A, 0x46, 0x7C, 0x32, 0x8B, 0x62,
+ 0x4B, 0x8B, 0x8B, 0x4B, 0x4B, 0x4B, 0x4B, 0x62,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x62, 0x61, 0x4E, 0xDA,
+ 0x85, 0x85, 0x85, 0x2C, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0x85, 0xD9, 0x7D, 0x21, 0x21, 0xD6, 0xAC, 0x2C,
+ 0x2C, 0xDA, 0xDD, 0x77, 0x8B, 0x62, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x3E, 0x8B, 0x32, 0xC9, 0x22, 0x68, 0x88, 0x33,
+ 0xA1, 0x73, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0x5C, 0x5C, 0x5C, 0x5C, 0x3D,
+ 0x89, 0x20, 0x54, 0x23, 0x29, 0x2E, 0x4B, 0x62,
+ 0x4B, 0x3E, 0x4B, 0x62, 0x4B, 0x4B, 0x4B, 0x8B,
+ 0x8B, 0xC9, 0x6F, 0x4B, 0x8B, 0x4B, 0x78, 0xE2,
+ 0x8A, 0x8A, 0x85, 0xAC, 0xD9, 0x7D, 0xD9, 0xAC,
+ 0x2C, 0xD9, 0xD6, 0xB2, 0x21, 0x7D, 0xAF, 0x85,
+ 0x2C, 0xDA, 0x40, 0xEF, 0x62, 0x62, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x8B, 0x4B, 0xC9, 0x63, 0xB4, 0x5C,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0x5C, 0x5C, 0xCD, 0xAE,
+ 0x20, 0x20, 0xCE, 0xE1, 0x57, 0x32, 0x4B, 0x4B,
+ 0x8B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x8B, 0x4B, 0x62, 0x4B, 0x62, 0x2E, 0x61, 0x28,
+ 0x8D, 0xDA, 0xAF, 0xD9, 0x95, 0x95, 0xD9, 0xAF,
+ 0xAF, 0xD9, 0xD6, 0xB2, 0x21, 0xD9, 0x2C, 0x85,
+ 0xAF, 0xEB, 0xE1, 0x57, 0x2E, 0x62, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x3E, 0x9B, 0x31, 0x6E,
+ 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
+ 0x5C, 0xE8, 0xE8, 0xE8, 0x3D, 0x7D, 0x33, 0x6B,
+ 0x20, 0x20, 0x34, 0x23, 0x29, 0x3E, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x3E, 0x62, 0x62, 0x2E, 0xC4, 0x49, 0xD5,
+ 0xDA, 0xD9, 0xD6, 0xA1, 0xA1, 0x21, 0xD9, 0xD9,
+ 0xD9, 0x95, 0x21, 0x48, 0xD6, 0xAC, 0x85, 0x85,
+ 0xAF, 0xB6, 0x5D, 0x2E, 0x32, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x62, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x62, 0x2E, 0x45, 0xDE,
+ 0xDA, 0x5C, 0xE8, 0x5C, 0xE8, 0xE8, 0x5C, 0xE8,
+ 0x5C, 0x5C, 0xA3, 0xAC, 0x2B, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x34, 0x23, 0x29, 0x62, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x62, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x3E, 0x3E, 0x63, 0x40, 0x97, 0x28, 0xDA,
+ 0xD9, 0xA1, 0x48, 0xE9, 0x48, 0x21, 0xD9, 0xD9,
+ 0xA1, 0xB2, 0xB2, 0xA1, 0x21, 0xAC, 0x85, 0x2C,
+ 0xDA, 0x36, 0x77, 0x72, 0x62, 0x8B, 0x62, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x3E, 0xEC, 0x2F, 0x51,
+ 0xE3, 0xAE, 0x48, 0x2C, 0xDA, 0xDA, 0x85, 0xAC,
+ 0x48, 0x9E, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x41, 0xA0, 0x23, 0x72, 0x2E, 0x4B, 0x4B,
+ 0x4B, 0x62, 0x62, 0x4B, 0x4B, 0x4B, 0x2E, 0x8B,
+ 0xF0, 0x4C, 0x40, 0xC2, 0x90, 0x8D, 0x85, 0xD9,
+ 0xA1, 0x6C, 0x6C, 0x48, 0xD6, 0xD9, 0xAF, 0xAC,
+ 0xA1, 0xD6, 0xD6, 0xB2, 0xD6, 0xAC, 0x85, 0x85,
+ 0x4D, 0xBE, 0x39, 0x4C, 0x57, 0x2E, 0x2E, 0x2E,
+ 0x3E, 0x3E, 0x62, 0x3E, 0x4B, 0x4B, 0x4B, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x8B, 0x8B, 0x57, 0x60, 0x76,
+ 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x3C, 0xA0, 0x23, 0x7C, 0x2E, 0x4B, 0x4B,
+ 0x8B, 0x62, 0x4B, 0x4B, 0x3E, 0x7A, 0xF0, 0x29,
+ 0x36, 0x97, 0xBC, 0x8A, 0x8D, 0xDA, 0xD9, 0x48,
+ 0x81, 0x2D, 0x48, 0xD6, 0xD9, 0xAF, 0x2C, 0x2C,
+ 0xAC, 0xAF, 0xD9, 0x7D, 0x7D, 0x2C, 0x85, 0x85,
+ 0x85, 0xB4, 0x66, 0x23, 0x46, 0x2F, 0x60, 0x68,
+ 0x77, 0x29, 0x29, 0xF0, 0x2E, 0x2E, 0x62, 0x4B,
+ 0x4B, 0x4B, 0x4B, 0x4B, 0x32, 0x7C, 0x83, 0xB3,
+ 0x54, 0x6B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6B, 0x7B, 0xC3, 0xE7, 0x39, 0x72, 0x62, 0x62,
+ 0x62, 0x62, 0x62, 0x2E, 0x29, 0x77, 0xA7, 0x36,
+ 0xB8, 0x85, 0x85, 0x8D, 0x8D, 0x85, 0xB2, 0x2D,
+ 0x2D, 0xE9, 0xD6, 0xD9, 0xAF, 0x2C, 0x85, 0x85,
+ 0x2A, 0x85, 0xAC, 0x95, 0x95, 0xAF, 0x85, 0x85,
+ 0xAF, 0x8C, 0xDF, 0xC6, 0xB1, 0xD1, 0xE5, 0xE7,
+ 0x83, 0x23, 0x5D, 0x60, 0x39, 0x77, 0xEC, 0x2E,
+ 0x2E, 0x32, 0x32, 0x2E, 0x7C, 0x5D, 0x35, 0xA2,
+ 0x54, 0x6B, 0x6B, 0x20, 0x6B, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6B, 0x88, 0xC1, 0x35, 0xE1, 0x77, 0x57, 0x2E,
+ 0x2E, 0x72, 0x29, 0x77, 0x60, 0xB5, 0x44, 0xE2,
+ 0x2C, 0x2C, 0xDA, 0x8A, 0xDA, 0xAF, 0xA1, 0x2D,
+ 0xE9, 0xD6, 0xD9, 0xAF, 0x2C, 0x85, 0x85, 0x85,
+ 0xEE, 0xAF, 0xD9, 0x7D, 0xD9, 0x2C, 0xDA, 0x85,
+ 0xAC, 0xAF, 0x85, 0xDA, 0x8A, 0x2A, 0xE2, 0x50,
+ 0x86, 0xD7, 0x75, 0x35, 0xA8, 0xE7, 0xE1, 0x5D,
+ 0x68, 0x7C, 0xF1, 0x68, 0xE1, 0xBF, 0xA2, 0xC1,
+ 0x52, 0x2B, 0x7D, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x85, 0x85, 0x85, 0x2C, 0x2C, 0x2C, 0x95,
+ 0xE9, 0x74, 0xCE, 0xE0, 0xE7, 0x60, 0x77, 0x77,
+ 0x7C, 0xEF, 0x5D, 0x23, 0x3F, 0xB6, 0x8A, 0x2C,
+ 0xAC, 0xAF, 0x85, 0x8A, 0x85, 0xD9, 0x48, 0x48,
+ 0xB2, 0x95, 0x95, 0xD9, 0x85, 0xDA, 0x85, 0x85,
+ 0xD3, 0xB2, 0x21, 0x7D, 0xAC, 0x2C, 0xDA, 0x85,
+ 0xAC, 0xAC, 0x85, 0x85, 0x85, 0x2C, 0xAF, 0x2C,
+ 0xDA, 0x8C, 0x79, 0xC7, 0xB0, 0x51, 0xB3, 0x35,
+ 0xBF, 0xE5, 0xE7, 0xA8, 0xE0, 0xA2, 0xC1, 0x34,
+ 0x7D, 0x85, 0xAC, 0xD9, 0xAC, 0xAF, 0xAC, 0xAC,
+ 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0xAF, 0xAF, 0x85,
+ 0xC8, 0xCD, 0x6A, 0x26, 0x35, 0x3F, 0x83, 0x23,
+ 0x23, 0xE7, 0xBF, 0x96, 0xEB, 0xDA, 0xDA, 0x2C,
+ 0x2C, 0x2C, 0x85, 0xDA, 0x2C, 0x7D, 0xA1, 0x48,
+ 0xB2, 0x21, 0xD6, 0xD9, 0x2C, 0xDA, 0x85, 0xAF,
+ 0xAF, 0x2D, 0xE9, 0x7D, 0xAC, 0x2C, 0x85, 0x2C,
+ 0xD9, 0xD9, 0xAF, 0x85, 0x85, 0x85, 0x2C, 0x2C,
+ 0x2C, 0x85, 0xD9, 0x21, 0xAC, 0x2C, 0xBD, 0xA5,
+ 0xC3, 0xA2, 0xA2, 0xA2, 0x26, 0xC1, 0xCE, 0x2A,
+ 0xAF, 0x95, 0xD9, 0x2C, 0x2C, 0x85, 0x2C, 0xAF,
+ 0xAC, 0x2C, 0x85, 0x2C, 0xAF, 0x2C, 0x85, 0xDA,
+ 0x8D, 0x2A, 0x85, 0x34, 0xC1, 0xB3, 0x76, 0x35,
+ 0xE0, 0x30, 0xA5, 0xB6, 0x2C, 0x85, 0x85, 0x85,
+ 0xAF, 0x2C, 0x85, 0x85, 0xD9, 0xD6, 0xA1, 0xA1,
+ 0x48, 0xA1, 0xD6, 0xAF, 0xDA, 0x8A, 0x2C, 0xD9,
+ 0xB2, 0x2D, 0x48, 0xD9, 0xAF, 0x2C, 0x2C, 0x85,
+ 0xAF, 0xAC, 0x2C, 0x85, 0x85, 0x85, 0xAF, 0xAC,
+ 0xAC, 0x2C, 0xD9, 0xD6, 0xD6, 0x21, 0xB2, 0x2C,
+ 0xC8, 0x3B, 0x65, 0xC5, 0xCE, 0x8E, 0xC8, 0x2C,
+ 0xD9, 0x95, 0xAC, 0x2C, 0x2C, 0x2C, 0xAF, 0xAC,
+ 0xAC, 0xAF, 0x2C, 0x85, 0x2C, 0x2C, 0x2C, 0x85,
+ 0xDA, 0x2C, 0xD6, 0xAF, 0x59, 0x65, 0xDE, 0xF3,
+ 0xF3, 0x59, 0xBC, 0xAC, 0xAF, 0x85, 0x85, 0x85,
+ 0xAF, 0xD9, 0xAF, 0x2C, 0xD9, 0xD6, 0xD6, 0xD6,
+ 0x21, 0xD6, 0xD9, 0xDA, 0x8D, 0x8A, 0x2C, 0xD9,
+ 0xB2, 0xA1, 0xD6, 0xAC, 0x2C, 0x2C, 0x2C, 0x85,
+ 0x2C, 0xAC, 0x2C, 0xDA, 0xDA, 0x85, 0xAF, 0xD9,
+ 0xD9, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xAC,
+ 0x85, 0x2A, 0x4D, 0xBC, 0x85, 0xAC, 0xAF, 0xAF,
+ 0xAC, 0xD9, 0xAF, 0x2C, 0xAF, 0xD9, 0xD9, 0xAC,
+ 0xAC, 0xAF, 0x85, 0x2C, 0x85, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0xD9, 0xB2, 0xD4, 0xD6, 0x2C, 0x8A, 0xDA,
+ 0xC8, 0x85, 0x2C, 0xAC, 0x2C, 0xDA, 0xDA, 0x85,
+ 0xAF, 0xAC, 0xD9, 0xAC, 0xD9, 0xD9, 0xD9, 0xD9,
+ 0xD9, 0xAC, 0xDA, 0x8D, 0xBC, 0xDA, 0xD9, 0x95,
+ 0x95, 0xD9, 0xD9, 0xAF, 0x2C, 0x2C, 0x2C, 0x85,
+ 0x2C, 0xAF, 0xAF, 0x85, 0x85, 0x85, 0x2C, 0xAC,
+ 0xD9, 0xAF, 0xAF, 0xAF, 0x2C, 0x2C, 0x2C, 0x85,
+ 0x8A, 0x2A, 0x8D, 0x2C, 0xD9, 0x95, 0xAC, 0xAC,
+ 0xD9, 0xD9, 0xD9, 0xD9, 0x95, 0x95, 0xD9, 0xAF,
+ 0xAF, 0x2C, 0x85, 0x85, 0x85, 0x85, 0x85, 0x2C,
+ 0x85, 0x2C, 0xD9, 0xD9, 0xD9, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x85, 0x85, 0xAF, 0xAF, 0x85, 0x85, 0x85,
+ 0xAF, 0xD9, 0xD9, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x85, 0x8A, 0x2A, 0x8D, 0x2C, 0xD9, 0xD9,
+ 0x2C, 0xAC, 0xAF, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x85, 0xAF, 0xAC, 0x2C, 0x2C, 0x2C, 0x2C, 0xAC,
+ 0xD9, 0xD9, 0xAF, 0x85, 0x85, 0x85, 0xDA, 0xDA,
+ 0x8A, 0x8A, 0x85, 0xAC, 0xD9, 0xD9, 0xAC, 0xD9,
+ 0xD6, 0xD6, 0x7D, 0x95, 0x7D, 0xD9, 0xAF, 0xAF,
+ 0xAF, 0x2C, 0x85, 0x85, 0xDA, 0x85, 0x2C, 0x85,
+ 0x85, 0x2C, 0xAF, 0xAC, 0xAF, 0xAF, 0x2C, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0xAF, 0xAC, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0xAF, 0xD9, 0xAC, 0xAF, 0x2C, 0x85, 0x85,
+ 0x85, 0xDA, 0x8D, 0x8A, 0x85, 0xAC, 0x95, 0xD9
+};
+
+#define INCLUDE_LINUX_LOGOBW
+#define INCLUDE_LINUX_LOGO16
+#include <linux/linux_logo.h>
#else
@@ -63,8 +937,5 @@ extern unsigned char linux_logo16_red[];
extern unsigned char linux_logo16_green[];
extern unsigned char linux_logo16_blue[];
extern unsigned char linux_logo16[];
-extern unsigned char *linux_serial_image;
-
-extern int (*console_show_logo)(void);
#endif
diff --git a/include/asm-mips/mmu_context.h b/include/asm-mips/mmu_context.h
index 9e237fade..b7c4c90cd 100644
--- a/include/asm-mips/mmu_context.h
+++ b/include/asm-mips/mmu_context.h
@@ -1,4 +1,4 @@
-/* $Id: mmu_context.h,v 1.2 1998/05/05 10:22:01 ralf Exp $
+/* $Id: mmu_context.h,v 1.2 1998/05/07 03:02:50 ralf Exp $
*
* Switch a MMU context.
*
@@ -11,29 +11,61 @@
#ifndef __ASM_MIPS_MMU_CONTEXT_H
#define __ASM_MIPS_MMU_CONTEXT_H
-#define MAX_ASID 255
-
+/* Fuck. The f-word is here so you can grep for it :-) */
extern unsigned long asid_cache;
-#define ASID_VERSION_SHIFT 16
-#define ASID_VERSION_MASK ((~0UL) << ASID_VERSION_SHIFT)
-#define ASID_FIRST_VERSION (1UL << ASID_VERSION_SHIFT)
+/* I patch, therefore I am ... */
+#define ASID_INC(asid) \
+ ({ unsigned long __asid = asid; \
+ __asm__("1:\taddiu\t%0,0\t\t\t\t# patched\n\t" \
+ ".section\t__asid_inc,\"a\"\n\t" \
+ ".word\t1b\n\t" \
+ ".previous" \
+ :"=r" (__asid) \
+ :"0" (__asid)); \
+ __asid; })
+#define ASID_MASK(asid) \
+ ({ unsigned long __asid = asid; \
+ __asm__("1:\tandi\t%0,%1,0\t\t\t# patched\n\t" \
+ ".section\t__asid_mask,\"a\"\n\t" \
+ ".word\t1b\n\t" \
+ ".previous" \
+ :"=r" (__asid) \
+ :"r" (__asid)); \
+ __asid; })
+#define ASID_VERSION_MASK \
+ ({ unsigned long __asid; \
+ __asm__("1:\tli\t%0,0\t\t\t\t# patched\n\t" \
+ ".section\t__asid_version_mask,\"a\"\n\t" \
+ ".word\t1b\n\t" \
+ ".previous" \
+ :"=r" (__asid)); \
+ __asid; })
+#define ASID_FIRST_VERSION \
+ ({ unsigned long __asid = asid; \
+ __asm__("1:\tli\t%0,0\t\t\t\t# patched\n\t" \
+ ".section\t__asid_first_version,\"a\"\n\t" \
+ ".word\t1b\n\t" \
+ ".previous" \
+ :"=r" (__asid)); \
+ __asid; })
+
+#define ASID_FIRST_VERSION_R3000 0x1000
+#define ASID_FIRST_VERSION_R4000 0x100
-extern inline void get_new_mmu_context(struct mm_struct *mm, unsigned long asid)
+extern inline void
+get_new_mmu_context(struct mm_struct *mm, unsigned long asid)
{
- /* check if it's legal.. */
- if ((asid & ~ASID_VERSION_MASK) > MAX_ASID) {
- /* start a new version, invalidate all old asid's */
- flush_tlb_all();
- asid = (asid & ASID_VERSION_MASK) + ASID_FIRST_VERSION;
- if (!asid)
+ if (!ASID_MASK((asid = ASID_INC(asid)))) {
+ flush_tlb_all(); /* start new asid cycle */
+ if (!asid) /* fix version if needed */
asid = ASID_FIRST_VERSION;
}
- asid_cache = asid + 1;
- mm->context = asid; /* full version + asid */
+ mm->context = asid_cache = asid;
}
-extern inline void get_mmu_context(struct task_struct *p)
+extern inline void
+get_mmu_context(struct task_struct *p)
{
struct mm_struct *mm = p->mm;
@@ -73,4 +105,30 @@ extern inline void activate_context(struct task_struct *tsk)
set_entryhi(tsk->mm->context);
}
+extern void __asid_setup(unsigned int inc, unsigned int mask,
+ unsigned int version_mask, unsigned int first_version);
+
+extern inline void r3000_asid_setup(void)
+{
+ __asid_setup(0x40, 0xfc0, 0xf000, ASID_FIRST_VERSION_R3000);
+}
+
+extern inline void r6000_asid_setup(void)
+{
+ panic("r6000_asid_setup: implement me"); /* No idea ... */
+}
+
+extern inline void tfp_asid_setup(void)
+{
+ panic("tfp_asid_setup: implement me"); /* No idea ... */
+}
+
+extern inline void r4xx0_asid_setup(void)
+{
+ __asid_setup(1, 0xff, 0xff00, ASID_FIRST_VERSION_R4000);
+}
+
+/* R10000 has the same ASID mechanism as the R4000. */
+#define andes_asid_setup r4xx0_asid_setup
+
#endif /* __ASM_MIPS_MMU_CONTEXT_H */
diff --git a/include/asm-mips/namei.h b/include/asm-mips/namei.h
index eb895b003..d61b3cd82 100644
--- a/include/asm-mips/namei.h
+++ b/include/asm-mips/namei.h
@@ -3,7 +3,7 @@
*
* Included from linux/fs/namei.c
*
- * $Id: namei.h,v 1.6 1997/09/18 07:59:31 root Exp $
+ * $Id: namei.h,v 1.5 1997/12/01 18:00:40 ralf Exp $
*/
#ifndef __ASM_MIPS_NAMEI_H
#define __ASM_MIPS_NAMEI_H
@@ -14,7 +14,7 @@
#define IRIX32_EMUL "usr/gnemul/irix/"
static inline struct dentry *
-__mips_lookup_dentry(const char *name, int follow_link)
+__mips_lookup_dentry(const char *name, int lookup_flags)
{
struct dentry *base;
@@ -22,11 +22,12 @@ __mips_lookup_dentry(const char *name, int follow_link)
return ERR_PTR(-ENOENT);
base = lookup_dentry (IRIX32_EMUL,
- dget (current->fs->root), 1);
+ dget (current->fs->root),
+ (LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_SLASHOK));
if (IS_ERR (base)) return base;
- base = lookup_dentry (name, base, follow_link);
+ base = lookup_dentry (name, base, lookup_flags);
if (IS_ERR (base)) return base;
@@ -40,13 +41,13 @@ __mips_lookup_dentry(const char *name, int follow_link)
#ifdef CONFIG_BINFMT_IRIX
-#define __prefix_lookup_dentry(name, follow_link) \
- dentry = __mips_lookup_dentry (name, follow_link); \
+#define __prefix_lookup_dentry(name, lookup_flags) \
+ dentry = __mips_lookup_dentry (name, lookup_flags); \
if (!IS_ERR (dentry)) return dentry;
#else /* !defined(CONFIG_BINFMT_IRIX) */
-#define __prefix_lookup_dentry(name, follow_link) \
+#define __prefix_lookup_dentry(name, lookup_flags) \
do {} while (0)
#endif /* !defined(CONFIG_BINFMT_IRIX) */
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h
index 3629f496d..397e9b008 100644
--- a/include/asm-mips/page.h
+++ b/include/asm-mips/page.h
@@ -1,4 +1,4 @@
-/* $Id: page.h,v 1.4 1998/08/25 09:21:59 ralf Exp $
+/* $Id: page.h,v 1.5 1998/08/28 23:24:03 tsbogend Exp $
*
* Definitions for page handling
*
@@ -22,58 +22,6 @@
#ifndef _LANGUAGE_ASSEMBLY
-#ifdef __SMP__
-#define ULOCK_DECLARE extern spinlock_t user_page_lock;
-#else
-#define ULOCK_DECLARE
-#endif
-struct upcache {
- struct page *list;
- unsigned long count;
-};
-extern struct upcache user_page_cache[8];
-#define USER_PAGE_WATER 16
-
-extern unsigned long get_user_page_slow(int which);
-extern unsigned long user_page_colours, user_page_order;
-
-#define get_user_page(__vaddr) \
-({ \
- ULOCK_DECLARE \
- int which = ((__vaddr) >> PAGE_SHIFT) & user_page_colours; \
- struct upcache *up = &user_page_cache[which]; \
- struct page *p; \
- unsigned long ret; \
- spin_lock(&user_page_lock); \
- if((p = up->list) != NULL) { \
- up->list = p->next; \
- up->count--; \
- } \
- spin_unlock(&user_page_lock); \
- if(p != NULL) \
- ret = PAGE_OFFSET+PAGE_SIZE*p->map_nr; \
- else \
- ret = get_user_page_slow(which); \
- ret; \
-})
-
-#define free_user_page(__page, __addr) \
-do { \
- ULOCK_DECLARE \
- int which = ((__addr) >> PAGE_SHIFT) & user_page_colours; \
- struct upcache *up = &user_page_cache[which]; \
- if(atomic_read(&(__page)->count) == 1 && \
- up->count < USER_PAGE_WATER) { \
- spin_lock(&user_page_lock); \
- (__page)->age = PAGE_INITIAL_AGE; \
- (__page)->next = up->list; \
- up->list = (__page); \
- up->count++; \
- spin_unlock(&user_page_lock); \
- } else \
- free_page(__addr); \
-} while(0)
-
extern void (*clear_page)(unsigned long page);
extern void (*copy_page)(unsigned long to, unsigned long from);
diff --git a/include/asm-mips/pci.h b/include/asm-mips/pci.h
index 40781ed92..a8b7318fd 100644
--- a/include/asm-mips/pci.h
+++ b/include/asm-mips/pci.h
@@ -1,4 +1,4 @@
-/* $Id: pci.h,v 1.3 1998/05/07 14:18:11 ralf Exp $
+/* $Id: pci.h,v 1.4 1998/08/25 09:21:59 ralf Exp $
*
* 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
@@ -10,7 +10,7 @@
#define __ASM_MIPS_PCI_H
struct pci_ops {
- unsigned long (*pcibios_fixup) (void);
+ void (*pcibios_fixup) (void);
int (*pcibios_read_config_byte) (unsigned char bus,
unsigned char dev_fn,
unsigned char where,
diff --git a/include/asm-mips/processor.h b/include/asm-mips/processor.h
index 5c4061437..a1e8aa831 100644
--- a/include/asm-mips/processor.h
+++ b/include/asm-mips/processor.h
@@ -1,4 +1,4 @@
-/* $Id: processor.h,v 1.12 1998/08/25 09:22:00 ralf Exp $
+/* $Id: processor.h,v 1.13 1998/10/14 23:40:47 ralf Exp $
*
* 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
@@ -174,6 +174,7 @@ struct thread_struct {
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
+extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
/* Copy and release all segment info associated with a VM */
#define copy_segments(nr, p, mm) do { } while(0)
diff --git a/include/asm-mips/ptrace.h b/include/asm-mips/ptrace.h
index 7fccd703e..4a52e9440 100644
--- a/include/asm-mips/ptrace.h
+++ b/include/asm-mips/ptrace.h
@@ -1,4 +1,4 @@
-/* $Id: ptrace.h,v 1.3 1998/07/09 21:45:21 ralf Exp $
+/* $Id: ptrace.h,v 1.3 1998/07/10 01:14:55 ralf Exp $
*
* 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
@@ -15,13 +15,14 @@
#include <linux/types.h>
/* 0 - 31 are integer registers, 32 - 63 are fp registers. */
+#define FPR_BASE 32
#define PC 64
#define CAUSE 65
-#define MMLO 66
+#define BADVADDR 66
#define MMHI 67
-#define FPC_CSR 68 /* XXX */
-#define FPC_EIR 69 /* XXX */
-#define FPR_BASE 70 /* XXX */
+#define MMLO 68
+#define FPC_CSR 69
+#define FPC_EIR 70
#ifndef __ASSEMBLY__
/*
diff --git a/include/asm-mips/resource.h b/include/asm-mips/resource.h
index 16c83544d..42eb9e66e 100644
--- a/include/asm-mips/resource.h
+++ b/include/asm-mips/resource.h
@@ -1,11 +1,10 @@
-/*
- * Process resource limits
+/* $Id: resource.h,v 1.2 1998/12/08 20:51:59 ralf Exp $
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 1995, 1996 by Ralf Baechle
+ * Copyright (C) 1995, 1996, 1998 by Ralf Baechle
*/
#ifndef __ASM_MIPS_RESOURCE_H
#define __ASM_MIPS_RESOURCE_H
@@ -30,15 +29,15 @@
#define INIT_RLIMITS \
{ \
- {LONG_MAX, LONG_MAX}, \
- {LONG_MAX, LONG_MAX}, \
- {LONG_MAX, LONG_MAX}, \
- {_STK_LIM, _STK_LIM}, \
- { 0, LONG_MAX}, \
- {NR_OPEN, NR_OPEN}, \
- {LONG_MAX, LONG_MAX}, \
- {LONG_MAX, LONG_MAX}, \
- {MAX_TASKS_PER_USER, MAX_TASKS_PER_USER}, \
+ { LONG_MAX, LONG_MAX }, \
+ { LONG_MAX, LONG_MAX }, \
+ { LONG_MAX, LONG_MAX }, \
+ { _STK_LIM, LONG_MAX }, \
+ { 0, LONG_MAX }, \
+ { NR_OPEN, NR_OPEN }, \
+ { LONG_MAX, LONG_MAX }, \
+ { LONG_MAX, LONG_MAX }, \
+ { MAX_TASKS_PER_USER, MAX_TASKS_PER_USER }, \
{ LONG_MAX, LONG_MAX }, \
}
diff --git a/include/asm-mips/semaphore.h b/include/asm-mips/semaphore.h
index 71ffec761..aff081776 100644
--- a/include/asm-mips/semaphore.h
+++ b/include/asm-mips/semaphore.h
@@ -23,9 +23,9 @@ struct semaphore {
#define MUTEX ((struct semaphore) { ATOMIC_INIT(1), ATOMIC_INIT(0), NULL })
#define MUTEX_LOCKED ((struct semaphore) { ATOMIC_INIT(0), ATOMIC_INIT(0), NULL })
-extern void __down(struct semaphore * sem);
-extern int __down_interruptible(struct semaphore * sem);
-extern void __up(struct semaphore * sem);
+asmlinkage void __down(struct semaphore * sem);
+asmlinkage int __down_interruptible(struct semaphore * sem);
+asmlinkage void __up(struct semaphore * sem);
extern spinlock_t semaphore_wake_lock;
diff --git a/include/asm-mips/shmparam.h b/include/asm-mips/shmparam.h
index b2441c81a..b4ed1faaf 100644
--- a/include/asm-mips/shmparam.h
+++ b/include/asm-mips/shmparam.h
@@ -33,7 +33,9 @@
* SHMMAX <= (PAGE_SIZE << _SHM_IDX_BITS).
*/
-#define SHMMAX 0x1000000 /* max shared seg size (bytes) */
+#define SHMMAX 0x2000000 /* max shared seg size (bytes) */
+/* Try not to change the default shipped SHMMAX - people rely on it */
+
#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) */ \
diff --git a/include/asm-mips/sni.h b/include/asm-mips/sni.h
index 16a4ace09..1e2391ddb 100644
--- a/include/asm-mips/sni.h
+++ b/include/asm-mips/sni.h
@@ -1,4 +1,4 @@
-/* $Id: sni.h,v 1.2 1998/09/16 22:52:43 ralf Exp $
+/* $Id: sni.h,v 1.2 1998/09/19 19:19:39 ralf Exp $
*
* SNI specific definitions
*
@@ -69,10 +69,10 @@
#define PCIMT_PWDN 0xbfdf0000
/*
- * Interrupt 0-16 are reserved for PCI and EISA interrupts. The
- * interrupts from 16 are assigned to the other interrupts generated
- * by the PCI chipset.
+ * Interrupt 0-16 are EISA interrupts. Interrupts from 16 on are assigned
+ * to the other interrupts generated by ASIC PCI.
*/
+#define PCIMT_KEYBOARD_IRQ 1
#define PCIMT_IRQ_ETHERNET 16
#define PCIMT_IRQ_TEMPERATURE 17
#define PCIMT_IRQ_EISA_NMI 18
@@ -89,9 +89,7 @@
*/
#define PCIMT_EISA_BASE 0xb0000000
-/*
- * The keyboard interrupt is an ISA interrupt
- */
-#define SNI_KEYBOARD_IRQ 1
+/* PCI EISA Interrupt acknowledge */
+#define PCIMT_INT_ACKNOWLEDGE 0xba000000
#endif /* __ASM_MIPS_SNI_H */
diff --git a/include/asm-mips/termios.h b/include/asm-mips/termios.h
index ae1e770aa..4a6553c17 100644
--- a/include/asm-mips/termios.h
+++ b/include/asm-mips/termios.h
@@ -94,6 +94,8 @@ struct termio {
#define N_X25 6 /* X.25 async */
#define N_6PACK 7
#define N_MASC 8 /* Reserved fo Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-mips/uaccess.h b/include/asm-mips/uaccess.h
index 8b139fe23..e6750b4e5 100644
--- a/include/asm-mips/uaccess.h
+++ b/include/asm-mips/uaccess.h
@@ -7,7 +7,7 @@
*
* Copyright (C) 1996, 1997, 1998 by Ralf Baechle
*
- * $Id: uaccess.h,v 1.15 1998/05/03 11:13:54 ralf Exp $
+ * $Id: uaccess.h,v 1.7 1998/05/04 09:13:02 ralf Exp $
*/
#ifndef __ASM_MIPS_UACCESS_H
#define __ASM_MIPS_UACCESS_H
@@ -265,6 +265,21 @@ __asm__ __volatile__( \
extern void __put_user_unknown(void);
+/*
+ * We're generating jump to subroutines which will be outside the range of
+ * jump instructions
+ */
+#ifdef MODULE
+#define __MODULE_JAL(destination) \
+ ".set\tnoat\n\t" \
+ "la\t$1, " #destination "\n\t" \
+ "jalr\t$1\n\t" \
+ ".set\tat\n\t"
+#else
+#define __MODULE_JAL(destination) \
+ "jal\t" #destination "\n\t"
+#endif
+
#define copy_to_user_ret(to,from,n,retval) ({ \
if (copy_to_user(to,from,n)) \
return retval; \
@@ -289,7 +304,7 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n);
"move\t$4, %1\n\t" \
"move\t$5, %2\n\t" \
"move\t$6, %3\n\t" \
- "jal\t__copy_user\n\t" \
+ __MODULE_JAL(__copy_user) \
"move\t%0, $6" \
: "=r" (__cu_len) \
: "r" (__cu_to), "r" (__cu_from), "r" (__cu_len) \
@@ -313,7 +328,7 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n);
".set\tnoat\n\t" \
"addu\t$1, %2, %3\n\t" \
".set\tat\n\t" \
- "jal\t__copy_user\n\t" \
+ __MODULE_JAL(__copy_user) \
"move\t%0, $6" \
: "=r" (__cu_len) \
: "r" (__cu_to), "r" (__cu_from), "r" (__cu_len) \
@@ -335,7 +350,7 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n);
"move\t$4, %1\n\t" \
"move\t$5, %2\n\t" \
"move\t$6, %3\n\t" \
- "jal\t__copy_user\n\t" \
+ __MODULE_JAL(__copy_user) \
"move\t%0, $6" \
: "=r" (__cu_len) \
: "r" (__cu_to), "r" (__cu_from), "r" (__cu_len) \
@@ -360,7 +375,7 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n);
".set\tnoat\n\t" \
"addu\t$1, %2, %3\n\t" \
".set\tat\n\t" \
- "jal\t__copy_user\n\t" \
+ __MODULE_JAL(__copy_user) \
"move\t%0, $6" \
: "=r" (__cu_len) \
: "r" (__cu_to), "r" (__cu_from), "r" (__cu_len) \
@@ -378,7 +393,7 @@ __clear_user(void *addr, __kernel_size_t size)
"move\t$4, %1\n\t"
"move\t$5, $0\n\t"
"move\t$6, %2\n\t"
- "jal\t__bzero\n\t"
+ __MODULE_JAL(__bzero)
"move\t%0, $6"
: "=r" (res)
: "r" (addr), "r" (size)
@@ -407,7 +422,7 @@ __strncpy_from_user(char *__to, const char *__from, long __len)
"move\t$4, %1\n\t"
"move\t$5, %2\n\t"
"move\t$6, %3\n\t"
- "jal\t__strncpy_from_user_nocheck_asm\n\t"
+ __MODULE_JAL(__strncpy_from_user_nocheck_asm)
"move\t%0, $2"
: "=r" (res)
: "r" (__to), "r" (__from), "r" (__len)
@@ -425,7 +440,7 @@ strncpy_from_user(char *__to, const char *__from, long __len)
"move\t$4, %1\n\t"
"move\t$5, %2\n\t"
"move\t$6, %3\n\t"
- "jal\t__strncpy_from_user_asm\n\t"
+ __MODULE_JAL(__strncpy_from_user_asm)
"move\t%0, $2"
: "=r" (res)
: "r" (__to), "r" (__from), "r" (__len)
@@ -442,7 +457,7 @@ extern inline long __strlen_user(const char *s)
__asm__ __volatile__(
"move\t$4, %1\n\t"
- "jal\t__strlen_user_nocheck_asm\n\t"
+ __MODULE_JAL(__strlen_user_nocheck_asm)
"move\t%0, $2"
: "=r" (res)
: "r" (s)
@@ -457,7 +472,7 @@ extern inline long strlen_user(const char *s)
__asm__ __volatile__(
"move\t$4, %1\n\t"
- "jal\t__strlen_user_asm\n\t"
+ __MODULE_JAL(__strlen_user_asm)
"move\t%0, $2"
: "=r" (res)
: "r" (s)
diff --git a/include/asm-mips/unistd.h b/include/asm-mips/unistd.h
index 1907a49ac..4c68fe0ee 100644
--- a/include/asm-mips/unistd.h
+++ b/include/asm-mips/unistd.h
@@ -1,4 +1,4 @@
-/* $Id: unistd.h,v 1.11 1998/08/25 09:22:03 ralf Exp $
+/* $Id: unistd.h,v 1.12 1998/09/19 19:19:40 ralf Exp $
*
* 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
@@ -1194,8 +1194,8 @@
#define __NR_capset (__NR_Linux + 205)
#define __NR_sigaltstack (__NR_Linux + 206)
#define __NR_sendfile (__NR_Linux + 207)
-#define __NR_streams1 (__NR_Linux + 208)
-#define __NR_streams2 (__NR_Linux + 209)
+#define __NR_getpmsg (__NR_Linux + 208)
+#define __NR_putpmsg (__NR_Linux + 209)
/*
* Offset of the last Linux flavoured syscall
@@ -1300,7 +1300,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
"r" ((long)(b)), \
"r" ((long)(c)), \
"r" ((long)(d)) \
- : "$4","$5","$6""$8","$9","$10","$11","$12","$13","$14", \
+ : "$4","$5","$6","$8","$9","$10","$11","$12","$13","$14", \
"$15","$24"); \
if (__err == 0) \
return (type) __res; \
@@ -1437,48 +1437,6 @@ static inline pid_t wait(int * wait_stat)
return waitpid(-1,wait_stat,0);
}
-/*
- * This is the mechanism for creating a new kernel thread.
- *
- * NOTE! Only a kernel-only process(ie the swapper or direct descendants
- * who haven't done an "execve()") should use this: it will work within
- * a system call from a "real" process, but the process memory space will
- * not be free'd until both the parent and the child have exited.
- */
-static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
-{
- long retval;
-
- __asm__ __volatile__(
- ".set\tnoreorder\n\t"
- "move\t$6,$sp\n\t"
- "move\t$4,%5\n\t"
- "li\t$2,%1\n\t"
- "syscall\n\t"
- "beq\t$6,$sp,1f\n\t"
- "subu\t$sp,32\n\t" /* delay slot */
- "jalr\t%4\n\t"
- "move\t$4,%3\n\t" /* delay slot */
- "move\t$4,$2\n\t"
- "li\t$2,%2\n\t"
- "syscall\n"
- "1:\taddiu\t$sp,32\n\t"
- "move\t%0,$2\n\t"
- ".set\treorder"
- :"=r" (retval)
- :"i" (__NR_clone), "i" (__NR_exit),
- "r" (arg), "r" (fn),
- "r" (flags | CLONE_VM)
- /*
- * The called subroutine might have destroyed any of the
- * at, result, argument or temporary registers ...
- */
- :"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
- "$9","$10","$11","$12","$13","$14","$15","$24","$25");
-
- return retval;
-}
-
#endif /* !defined (__KERNEL_SYSCALLS__) */
#endif /* !defined (_LANGUAGE_ASSEMBLY) */
diff --git a/include/asm-mips/vga.h b/include/asm-mips/vga.h
index 5fc680563..a74df2d2d 100644
--- a/include/asm-mips/vga.h
+++ b/include/asm-mips/vga.h
@@ -7,29 +7,14 @@
#ifndef _LINUX_ASM_VGA_H_
#define _LINUX_ASM_VGA_H_
-#include <asm/io.h>
-
-#define VT_BUF_HAVE_RW
-
-extern inline void scr_writew(u16 val, u16 *addr)
-{
- if ((long) addr < 0)
- *addr = val;
- else
- writew(val, (unsigned long) addr);
-}
-
-extern inline u16 scr_readw(u16 *addr)
-{
- if ((long) addr < 0)
- return *addr;
- else
- return readw((unsigned long) addr);
-}
+/*
+ * On the PC, we can just recalculate addresses and then
+ * access the videoram directly without any black magic.
+ */
-#define vga_readb readb
-#define vga_writeb writeb
+#define VGA_MAP_MEM(x) ((unsigned long)0xb0000000 + (unsigned long)(x))
-#define VGA_MAP_MEM(x) (x)
+#define vga_readb(x) (*(x))
+#define vga_writeb(x,y) (*(y) = (x))
#endif
diff --git a/include/asm-ppc/8xx_immap.h b/include/asm-ppc/8xx_immap.h
index 7793c2019..0223fe275 100644
--- a/include/asm-ppc/8xx_immap.h
+++ b/include/asm-ppc/8xx_immap.h
@@ -312,6 +312,43 @@ typedef struct smc { /* Serial management channels */
char res4[5];
} smc_t;
+/* MPC860T Fast Ethernet Controller. It isn't part of the CPM, but
+ * it fits within the address space.
+ */
+typedef struct fec {
+ uint fec_addr_low; /* LS 32 bits of station address */
+ ushort fec_addr_high; /* MS 16 bits of address */
+ ushort res1;
+ uint fec_hash_table_high;
+ uint fec_hash_table_low;
+ uint fec_r_des_start;
+ uint fec_x_des_start;
+ uint fec_r_buff_size;
+ uint res2[9];
+ uint fec_ecntrl;
+ uint fec_ievent;
+ uint fec_imask;
+ uint fec_ivec;
+ uint fec_r_des_active;
+ uint fec_x_des_active;
+ uint res3[10];
+ uint fec_mii_data;
+ uint fec_mii_speed;
+ uint res4[17];
+ uint fec_r_bound;
+ uint fec_r_fstart;
+ uint res5[6];
+ uint fec_x_fstart;
+ uint res6[17];
+ uint fec_fun_code;
+ uint res7[3];
+ uint fec_r_cntrl;
+ uint fec_r_hash;
+ uint res8[14];
+ uint fec_x_cntrl;
+ uint res9[0x1e];
+} fec_t;
+
typedef struct comm_proc {
/* General control and status registers.
*/
@@ -380,7 +417,11 @@ typedef struct comm_proc {
uint cp_sirp;
char res16[0x10c];
u_char cp_siram[0x200];
- char res17[0x200];
+
+ /* The fast ethernet controller is not really part of the CPM,
+ * but it resides in the address space.
+ */
+ fec_t cp_fec;
char res18[0x1000];
/* Dual Ported RAM follows.
diff --git a/include/asm-ppc/adb.h b/include/asm-ppc/adb.h
index 5035139fe..58fcb8abe 100644
--- a/include/asm-ppc/adb.h
+++ b/include/asm-ppc/adb.h
@@ -46,7 +46,8 @@ extern enum adb_hw {
} adb_hardware;
extern int (*adb_send_request)(struct adb_request *req, int sync);
-extern int (*adb_autopoll)(int on);
+extern int (*adb_autopoll)(int devs);
+extern int (*adb_reset_bus)(void);
/* Values for adb_request flags */
#define ADBREQ_REPLY 1 /* expect reply */
diff --git a/include/asm-ppc/amigappc.h b/include/asm-ppc/amigappc.h
index e3abe6809..5546cb1fb 100644
--- a/include/asm-ppc/amigappc.h
+++ b/include/asm-ppc/amigappc.h
@@ -14,17 +14,33 @@
#ifndef _M68K_AMIGAPPC_H
#define _M68K_AMIGAPPC_H
+#ifndef __ASSEMBLY__
+
+#ifndef iobarrier /* Don't include io.h - avoid circular dependency */
+#define iobarrier() eieio()
+#endif
+
+#define APUS_WRITE(_a_, _v_) \
+do { \
+ (*((volatile unsigned char *)(_a_)) = (_v_)); \
+ iobarrier (); \
+} while (0)
+
+#define APUS_READ(_a_, _v_) \
+do { \
+ (_v_) = (*((volatile unsigned char *)(_a_))); \
+ iobarrier (); \
+} while (0)
+#endif /* ndef __ASSEMBLY__ */
+
/* Maybe add a [#ifdef WANT_ZTWOBASE] condition to amigahw.h? */
#define zTwoBase (0x80000000)
-/* At CYBERBASEp we'll find the following sum:
+/* At CYBERBASEp we find the following sum:
* -KERNELBASE+CyberStormMemoryBase
*/
#define CYBERBASEp (0xfff00000)
-#define APUS_WRITE(a,v) (*((volatile unsigned char *)a) = v)
-#define APUS_READ(a) (*((volatile unsigned char *)a))
-
#define APUS_IPL_BASE (zTwoBase + 0x00f60000)
#define APUS_REG_RESET (APUS_IPL_BASE + 0x00)
#define APUS_REG_WAITSTATE (APUS_IPL_BASE + 0x10)
@@ -32,6 +48,7 @@
#define APUS_REG_LOCK (APUS_IPL_BASE + 0x20)
#define APUS_REG_INT (APUS_IPL_BASE + 0x28)
#define APUS_IPL_EMU (APUS_IPL_BASE + 0x30)
+#define APUS_INT_LVL (APUS_IPL_BASE + 0x38)
#define REGSHADOW_SETRESET (0x80)
#define REGSHADOW_SELFRESET (0x40)
@@ -66,4 +83,7 @@
#define IPLEMU_PPCIPL0 (0x01)
#define IPLEMU_IPLMASK (IPLEMU_PPCIPL2|IPLEMU_PPCIPL1|IPLEMU_PPCIPL0)
+#define INTLVL_SETRESET (0x80)
+#define INTLVL_MASK (0x7f)
+
#endif /* _M68k_AMIGAPPC_H */
diff --git a/include/asm-ppc/amigayle.h b/include/asm-ppc/amigayle.h
new file mode 100644
index 000000000..d604cc668
--- /dev/null
+++ b/include/asm-ppc/amigayle.h
@@ -0,0 +1 @@
+#include "../asm-m68k/amigayle.h"
diff --git a/include/asm-ppc/amipcmcia.h b/include/asm-ppc/amipcmcia.h
new file mode 100644
index 000000000..3be263bd0
--- /dev/null
+++ b/include/asm-ppc/amipcmcia.h
@@ -0,0 +1 @@
+#include "../asm-m68k/amipcmcia.h"
diff --git a/include/asm-ppc/bitops.h b/include/asm-ppc/bitops.h
index 17fb6383b..9e0614ae2 100644
--- a/include/asm-ppc/bitops.h
+++ b/include/asm-ppc/bitops.h
@@ -1,10 +1,10 @@
/*
- * $Id: bitops.h,v 1.9 1998/07/26 03:05:28 davem Exp $
+ * $Id: bitops.h,v 1.10 1998/08/16 21:56:53 geert Exp $
* bitops.h: Bit string operations on the ppc
*/
-#ifndef _ASM_PPC_BITOPS_H_
-#define _ASM_PPC_BITOPS_H_
+#ifndef _PPC_BITOPS_H
+#define _PPC_BITOPS_H
#include <asm/system.h>
#include <asm/byteorder.h>
@@ -267,4 +267,4 @@ found_middle:
#define minix_test_bit(nr,addr) ext2_test_bit(nr,addr)
#define minix_find_first_zero_bit(addr,size) ext2_find_first_zero_bit(addr,size)
-#endif /* _ASM_PPC_BITOPS_H */
+#endif /* _PPC_BITOPS_H */
diff --git a/include/asm-ppc/bootx.h b/include/asm-ppc/bootx.h
new file mode 100644
index 000000000..85bea1469
--- /dev/null
+++ b/include/asm-ppc/bootx.h
@@ -0,0 +1,71 @@
+/*
+ * This file describes the structure passed from the BootX application
+ * (for MacOS) when it is used to boot Linux.
+ *
+ * Written by Benjamin Herrenschmidt.
+ */
+
+
+#ifndef __ASM_BOOTX_H__
+#define __ASM_BOOTX_H__
+
+#ifdef macintosh
+#include <Types.h>
+#endif
+
+#ifdef macintosh
+/* All this requires PowerPC alignment */
+#pragma options align=power
+#endif
+
+#define BOOT_INFO_VERSION 1
+#define BOOT_INFO_COMPATIBLE_VERSION 1
+
+/* Here are the boot informations that are passed to the bootstrap
+ * Note that the kernel arguments and the device tree are appended
+ * at the end of this structure. */
+typedef struct boot_infos
+{
+ /* Version of this structure */
+ unsigned long version;
+ /* backward compatible down to version: */
+ unsigned long compatible_version;
+
+ /* Set to 0 by current BootX */
+ unsigned long unused[3];
+
+ /* The device tree (internal addresses relative to the beginning of the tree,
+ * device tree offset relative to the beginning of this structure). */
+ unsigned long deviceTreeOffset; /* Device tree offset */
+ unsigned long deviceTreeSize; /* Size of the device tree */
+
+ /* Some infos about the current MacOS display */
+ unsigned long dispDeviceRect[4]; /* left,top,right,bottom */
+ unsigned long dispDeviceDepth; /* (8, 16 or 32) */
+ unsigned char* dispDeviceBase; /* base address (physical) */
+ unsigned long dispDeviceRowBytes; /* rowbytes (in bytes) */
+ unsigned long dispDeviceColorsOffset; /* Colormap (8 bits only) or 0 (*) */
+ /* Optional offset in the registry to the current
+ * MacOS display. (Can be 0 when not detected) */
+ unsigned long dispDeviceRegEntryOffset;
+
+ /* Optional pointer to boot ramdisk (offset from this structure) */
+ unsigned long ramDisk;
+ unsigned long ramDiskSize; /* size of ramdisk image */
+
+ /* Kernel command line arguments (offset from this structure) */
+ unsigned long kernelParamsOffset;
+
+} boot_infos_t;
+
+/* (*) The format of the colormap is 256 * 3 * 2 bytes. Each color index is represented
+ * by 3 short words containing a 16 bits (unsigned) color component.
+ * Later versions may contain the gamma table for direct-color devices here.
+ */
+#define BOOTX_COLORTABLE_SIZE (256UL*3UL*2UL);
+
+#ifdef macintosh
+#pragma options align=reset
+#endif
+
+#endif
diff --git a/include/asm-ppc/byteorder.h b/include/asm-ppc/byteorder.h
index ec033ec47..453c846d2 100644
--- a/include/asm-ppc/byteorder.h
+++ b/include/asm-ppc/byteorder.h
@@ -2,7 +2,7 @@
#define _PPC_BYTEORDER_H
/*
- * $Id: byteorder.h,v 1.13 1998/08/03 19:05:11 geert Exp $
+ * $Id: byteorder.h,v 1.14 1998/08/12 05:07:12 paulus Exp $
*/
#include <asm/types.h>
@@ -13,7 +13,7 @@ extern __inline__ unsigned ld_le16(volatile unsigned short *addr)
{
unsigned val;
- __asm__ __volatile__ ("lhbrx %0,0,%1" : "=r" (val) : "r" (addr));
+ __asm__ __volatile__ ("lhbrx %0,0,%1" : "=r" (val) : "r" (addr), "m" (*addr));
return val;
}
@@ -26,7 +26,7 @@ extern __inline__ unsigned ld_le32(volatile unsigned *addr)
{
unsigned val;
- __asm__ __volatile__ ("lwbrx %0,0,%1" : "=r" (val) : "r" (addr));
+ __asm__ __volatile__ ("lwbrx %0,0,%1" : "=r" (val) : "r" (addr), "m" (*addr));
return val;
}
diff --git a/include/asm-ppc/cache.h b/include/asm-ppc/cache.h
index 05017c7eb..431dc7a49 100644
--- a/include/asm-ppc/cache.h
+++ b/include/asm-ppc/cache.h
@@ -13,7 +13,7 @@
#define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1))
#define L1_CACHE_PAGES 8
-#ifndef __ASSEMBLY__
+#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
static inline unsigned long unlock_dcache(void)
{
#ifndef CONFIG_8xx
diff --git a/include/asm-ppc/dma.h b/include/asm-ppc/dma.h
index bd55a65da..8560c7d88 100644
--- a/include/asm-ppc/dma.h
+++ b/include/asm-ppc/dma.h
@@ -8,6 +8,8 @@
#include <linux/config.h>
#include <asm/io.h>
+#include <asm/spinlock.h>
+#include <asm/system.h>
/*
* Note: Adapted for PowerPC by Gary Thomas
@@ -203,6 +205,20 @@ extern long ppc_cs4232_dma, ppc_cs4232_dma2;
#define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */
+extern spinlock_t dma_spin_lock;
+
+static __inline__ unsigned long claim_dma_lock(void)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&dma_spin_lock, flags);
+ return flags;
+}
+
+static __inline__ void release_dma_lock(unsigned long flags)
+{
+ spin_unlock_irqrestore(&dma_spin_lock, flags);
+}
+
/* enable/disable a specific DMA channel */
static __inline__ void enable_dma(unsigned int dmanr)
{
diff --git a/include/asm-ppc/elf.h b/include/asm-ppc/elf.h
index 0073612dd..002736abf 100644
--- a/include/asm-ppc/elf.h
+++ b/include/asm-ppc/elf.h
@@ -29,7 +29,7 @@
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
-#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
+#define ELF_ET_DYN_BASE (0x08000000)
typedef unsigned long elf_greg_t;
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
diff --git a/include/asm-ppc/fads.h b/include/asm-ppc/fads.h
new file mode 100644
index 000000000..a23fe8b4e
--- /dev/null
+++ b/include/asm-ppc/fads.h
@@ -0,0 +1,39 @@
+
+/*
+ * A collection of structures, addresses, and values associated with
+ * the Motorola 860T FADS board. Copied from the MBX stuff.
+ *
+ * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
+ */
+#ifndef __MACH_FADS_DEFS
+#define __MACH_FADS_DEFS
+
+/* A Board Information structure that is given to a program when
+ * prom starts it up.
+ */
+typedef struct bd_info {
+ unsigned int bi_memstart; /* Memory start address */
+ unsigned int bi_memsize; /* Memory (end) size in bytes */
+ unsigned int bi_intfreq; /* Internal Freq, in Hz */
+ unsigned int bi_busfreq; /* Bus Freq, in Hz */
+} bd_t;
+
+extern bd_t m8xx_board_info;
+
+/* Memory map is configured by the PROM startup.
+ * I tried to follow the FADS manual, although the startup PROM
+ * dictates this.
+ */
+#define BCSR_ADDR ((uint)0x02100000)
+#define BCSR_SIZE ((uint)(64 * 1024))
+#define BCSR0 ((uint)0x02100000)
+#define BCSR1 ((uint)0x02100004)
+#define BCSR2 ((uint)0x02100008)
+#define BCSR3 ((uint)0x0210000c)
+#define BCSR4 ((uint)0x02100010)
+#define IMAP_ADDR ((uint)0x02200000)
+#define IMAP_SIZE ((uint)(64 * 1024))
+#define PCMCIA_MEM_ADDR ((uint)0x04000000)
+#define PCMCIA_MEM_SIZE ((uint)(64 * 1024))
+
+#endif
diff --git a/include/asm-ppc/fcntl.h b/include/asm-ppc/fcntl.h
index 773e6a252..a1f3aa7f7 100644
--- a/include/asm-ppc/fcntl.h
+++ b/include/asm-ppc/fcntl.h
@@ -16,6 +16,8 @@
#define O_NDELAY O_NONBLOCK
#define O_SYNC 010000
#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECTORY 040000 /* must be a directory */
+#define O_NOFOLLOW 0100000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-ppc/feature.h b/include/asm-ppc/feature.h
new file mode 100644
index 000000000..4264690f8
--- /dev/null
+++ b/include/asm-ppc/feature.h
@@ -0,0 +1,65 @@
+/*
+ * Definitions for accessing the Feature Control Register (FCR)
+ * on Power Macintoshes and similar machines. The FCR lets us
+ * enable/disable, reset, and power up/down various peripherals.
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1998 Paul Mackerras.
+ */
+#ifndef __ASM_PPC_FEATURE_H
+#define __ASM_PPC_FEATURE_H
+
+/*
+ * The FCR bits for particular features vary somewhat between
+ * different machines. So we abstract a list of features here
+ * and let the feature_* routines map them to the actual bits.
+ */
+enum system_feature {
+ FEATURE_null,
+ FEATURE_Serial_reset,
+ FEATURE_Serial_enable,
+ FEATURE_Serial_IO_A,
+ FEATURE_Serial_IO_B,
+ FEATURE_SWIM3_enable,
+ FEATURE_MESH_enable,
+ FEATURE_IDE_enable,
+ FEATURE_VIA_enable,
+ FEATURE_CD_power,
+ FEATURE_Mediabay_reset,
+ FEATURE_Mediabay_enable,
+ FEATURE_Mediabay_PCI_enable,
+ FEATURE_Mediabay_IDE_enable,
+ FEATURE_Mediabay_floppy_enable,
+ FEATURE_BMac_reset,
+ FEATURE_BMac_IO_enable,
+ FEATURE_Modem_PowerOn,
+ FEATURE_Modem_Reset,
+ FEATURE_last,
+};
+
+/* Note about the device parameter: Each device gives it's own entry. If NULL,
+ the feature function will just do nothing and return -EINVAL.
+ The feature management will walk up the device tree until in reaches a recognized
+ chip for which features can be changed and it will then apply the necessary
+ features to that chip. If it's not found, -ENODEV is returned.
+ Note also that feature_test/set/clear are interrupt-safe provided that they are
+ called _after_ feature_init() is completed.
+ */
+
+/* Test whether a particular feature is enabled. May return -ENODEV*/
+extern int feature_test(struct device_node* device, enum system_feature f);
+
+/* Set a particular feature. Returns 0 or -ENODEV */
+extern int feature_set(struct device_node* device, enum system_feature f);
+
+/* Clear a particular feature */
+extern int feature_clear(struct device_node* device, enum system_feature f);
+
+/* Initialize feature stuff */
+extern void feature_init(void);
+
+
+#endif /* __ASM_PPC_FEATURE_H */
diff --git a/include/asm-ppc/hardirq.h b/include/asm-ppc/hardirq.h
index 454934f39..cc0db7259 100644
--- a/include/asm-ppc/hardirq.h
+++ b/include/asm-ppc/hardirq.h
@@ -2,7 +2,13 @@
#define __ASM_HARDIRQ_H
extern unsigned int local_irq_count[NR_CPUS];
-#define in_interrupt() (local_irq_count[smp_processor_id()] != 0)
+
+/*
+ * Are we in an interrupt context? Either doing bottom half
+ * or hardware interrupt processing?
+ */
+#define in_interrupt() ({ int __cpu = smp_processor_id(); \
+ (local_irq_count[__cpu] + local_bh_count[__cpu] != 0); })
#ifndef __SMP__
@@ -16,44 +22,42 @@ extern unsigned int local_irq_count[NR_CPUS];
#else /* __SMP__ */
+#include <asm/atomic.h>
+
extern unsigned char global_irq_holder;
-extern spinlock_t global_irq_lock;
+extern unsigned volatile int global_irq_lock;
extern atomic_t global_irq_count;
-#define release_irqlock(cpu) \
-do { \
- if(global_irq_holder == (unsigned char) cpu) { \
- global_irq_holder = NO_PROC_ID; \
- spin_unlock(&global_irq_lock); \
- } \
-} while(0)
-
-/* Ordering of the counter bumps is _deadly_ important. */
-#define hardirq_enter(cpu) \
- do { ++local_irq_count[cpu]; atomic_inc(&global_irq_count); } while(0)
-
-#define hardirq_exit(cpu) \
- do { atomic_dec(&global_irq_count); --local_irq_count[cpu]; } while(0)
-
-#define hardirq_trylock(cpu) \
-({ unsigned long flags; int ret = 1; \
- __save_flags(flags); \
- __cli(); \
- if(atomic_add_return(1, &global_irq_count) != 1 || \
- *(((unsigned char *)(&global_irq_lock)))) { \
- atomic_dec(&global_irq_count); \
- __restore_flags(flags); \
- ret = 0; \
- } else { \
- ++local_irq_count[cpu]; \
- __sti(); \
- } \
- ret; \
-})
-
-#define hardirq_endlock(cpu) do { __cli(); hardirq_exit(cpu); __sti(); } while(0)
+static inline void release_irqlock(int cpu)
+{
+ /* if we didn't own the irq lock, just ignore.. */
+ if (global_irq_holder == (unsigned char) cpu) {
+ global_irq_holder = NO_PROC_ID;
+ clear_bit(0,&global_irq_lock);
+ }
+}
+
+static inline void hardirq_enter(int cpu)
+{
+ ++local_irq_count[cpu];
+ atomic_inc(&global_irq_count);
+}
+
+static inline void hardirq_exit(int cpu)
+{
+ atomic_dec(&global_irq_count);
+ --local_irq_count[cpu];
+}
+
+static inline int hardirq_trylock(int cpu)
+{
+ return !atomic_read(&global_irq_count) && !test_bit(0,&global_irq_lock);
+}
+
+#define hardirq_endlock(cpu) do { } while (0)
extern void synchronize_irq(void);
+
#endif /* __SMP__ */
#endif /* __ASM_HARDIRQ_H */
diff --git a/include/asm-ppc/ide.h b/include/asm-ppc/ide.h
index 52576cf15..75f77641c 100644
--- a/include/asm-ppc/ide.h
+++ b/include/asm-ppc/ide.h
@@ -14,11 +14,15 @@
#include <linux/config.h>
#ifdef CONFIG_APUS
#include <linux/hdreg.h>
+
+#define ide_init_hwif_ports m68k_ide_init_hwif_ports
#include <asm-m68k/ide.h>
+#undef ide_init_hwif_ports
+#undef insw
+
void ide_init_hwif_ports(ide_ioreg_t *p, ide_ioreg_t base, int *irq);
void ide_insw(ide_ioreg_t port, void *buf, int ns);
void ide_outsw(ide_ioreg_t port, void *buf, int ns);
-#undef insw
#define insw(port, buf, ns) do { \
if ( _machine != _MACH_Pmac && _machine != _MACH_apus ) \
/* this must be the same as insw in io.h!! */ \
@@ -38,6 +42,7 @@ void ide_outsw(ide_ioreg_t port, void *buf, int ns);
#ifdef __KERNEL__
+#include <linux/hdreg.h>
#include <linux/ioport.h>
#include <asm/io.h> /* so we can redefine insw/outsw */
@@ -94,9 +99,11 @@ static __inline__ int ide_default_irq(ide_ioreg_t base)
static __inline__ ide_ioreg_t ide_default_io_base(int index)
{
+#if defined(CONFIG_BLK_DEV_IDE_PMAC)
if (_machine == _MACH_Pmac) {
return pmac_ide_regbase[index];
}
+#endif
if (_machine == _MACH_mbx) return index;
if ( _machine == _MACH_chrp ) {
if (chrp_ide_ports_known == 0)
@@ -134,13 +141,76 @@ static __inline__ void ide_release_region (ide_ioreg_t from, unsigned int extent
release_region(from, extent);
}
-#define ide_fix_driveid(id) do { \
- int nh; \
- unsigned short *p = (unsigned short *) id; \
- if (( _machine == _MACH_Pmac ) || (_machine == _MACH_chrp)|| (_machine == _MACH_mbx) ) \
- for (nh = SECTOR_WORDS * 2; nh != 0; --nh, ++p) \
- *p = (*p << 8) + (*p >> 8); \
-} while (0)
+/* Convert the shorts/longs in hd_driveid from little to big endian;
+ chars are endian independant, of course, but strings need to be flipped.
+ (Despite what it says in drivers/block/ide.h, they come up as little endian...)
+ Changes to linux/hdreg.h may require changes here. */
+static __inline__ void ide_fix_driveid (struct hd_driveid *id) {
+ if (( _machine == _MACH_Pmac ) || (_machine == _MACH_chrp)|| (_machine == _MACH_mbx) ) {
+ int i;
+ unsigned short *stringcast;
+ id->config = __le16_to_cpu(id->config);
+ id->cyls = __le16_to_cpu(id->cyls);
+ id->reserved2 = __le16_to_cpu(id->reserved2);
+ id->heads = __le16_to_cpu(id->heads);
+ id->track_bytes = __le16_to_cpu(id->track_bytes);
+ id->sector_bytes = __le16_to_cpu(id->sector_bytes);
+ id->sectors = __le16_to_cpu(id->sectors);
+ id->vendor0 = __le16_to_cpu(id->vendor0);
+ id->vendor1 = __le16_to_cpu(id->vendor1);
+ id->vendor2 = __le16_to_cpu(id->vendor2);
+ stringcast = (unsigned short *)&id->serial_no[0];
+ for (i=0; i<(20/2); i++)
+ stringcast[i] = __le16_to_cpu(stringcast[i]);
+ id->buf_type = __le16_to_cpu(id->buf_type);
+ id->buf_size = __le16_to_cpu(id->buf_size);
+ id->ecc_bytes = __le16_to_cpu(id->ecc_bytes);
+ stringcast = (unsigned short *)&id->fw_rev[0];
+ for (i=0; i<(8/2); i++)
+ stringcast[i] = __le16_to_cpu(stringcast[i]);
+ stringcast = (unsigned short *)&id->model[0];
+ for (i=0; i<(40/2); i++)
+ stringcast[i] = __le16_to_cpu(stringcast[i]);
+ id->dword_io = __le16_to_cpu(id->dword_io);
+ id->reserved50 = __le16_to_cpu(id->reserved50);
+ id->field_valid = __le16_to_cpu(id->field_valid);
+ id->cur_cyls = __le16_to_cpu(id->cur_cyls);
+ id->cur_heads = __le16_to_cpu(id->cur_heads);
+ id->cur_sectors = __le16_to_cpu(id->cur_sectors);
+ id->cur_capacity0 = __le16_to_cpu(id->cur_capacity0);
+ id->cur_capacity1 = __le16_to_cpu(id->cur_capacity1);
+ id->lba_capacity = __le32_to_cpu(id->lba_capacity);
+ id->dma_1word = __le16_to_cpu(id->dma_1word);
+ id->dma_mword = __le16_to_cpu(id->dma_mword);
+ id->eide_pio_modes = __le16_to_cpu(id->eide_pio_modes);
+ id->eide_dma_min = __le16_to_cpu(id->eide_dma_min);
+ id->eide_dma_time = __le16_to_cpu(id->eide_dma_time);
+ id->eide_pio = __le16_to_cpu(id->eide_pio);
+ id->eide_pio_iordy = __le16_to_cpu(id->eide_pio_iordy);
+ id->word69 = __le16_to_cpu(id->word69);
+ id->word70 = __le16_to_cpu(id->word70);
+ id->word71 = __le16_to_cpu(id->word71);
+ id->word72 = __le16_to_cpu(id->word72);
+ id->word73 = __le16_to_cpu(id->word73);
+ id->word74 = __le16_to_cpu(id->word74);
+ id->word75 = __le16_to_cpu(id->word75);
+ id->word76 = __le16_to_cpu(id->word76);
+ id->word77 = __le16_to_cpu(id->word77);
+ id->word78 = __le16_to_cpu(id->word78);
+ id->word79 = __le16_to_cpu(id->word79);
+ id->word80 = __le16_to_cpu(id->word80);
+ id->word81 = __le16_to_cpu(id->word81);
+ id->word82 = __le16_to_cpu(id->word82);
+ id->word83 = __le16_to_cpu(id->word83);
+ id->word84 = __le16_to_cpu(id->word84);
+ id->word85 = __le16_to_cpu(id->word85);
+ id->word86 = __le16_to_cpu(id->word86);
+ id->word87 = __le16_to_cpu(id->word87);
+ id->dma_ultra = __le16_to_cpu(id->dma_ultra);
+ for (i=0; i<167; i++)
+ id->reserved[i] = __le16_to_cpu(id->reserved[i]);
+ }
+}
#undef insw
diff --git a/include/asm-ppc/io.h b/include/asm-ppc/io.h
index 8f26f192c..da5219e39 100644
--- a/include/asm-ppc/io.h
+++ b/include/asm-ppc/io.h
@@ -22,9 +22,6 @@
#define PMAC_ISA_MEM_BASE 0
#define PMAC_PCI_DRAM_OFFSET 0
-#define APUS_ISA_IO_BASE 0
-#define APUS_ISA_MEM_BASE 0
-#define APUS_PCI_DRAM_OFFSET 0
#define CHRP_ISA_IO_BASE 0xf8000000
#define CHRP_ISA_MEM_BASE 0xf7000000
#define CHRP_PCI_DRAM_OFFSET 0
@@ -38,26 +35,32 @@
#define _ISA_MEM_BASE 0
#define PCI_DRAM_OFFSET 0x80000000
#else /* CONFIG_MBX8xx */
+#ifdef CONFIG_APUS
+#define _IO_BASE 0
+#define _ISA_MEM_BASE 0
+#define PCI_DRAM_OFFSET 0
+#else
extern unsigned long isa_io_base;
extern unsigned long isa_mem_base;
extern unsigned long pci_dram_offset;
#define _IO_BASE isa_io_base
#define _ISA_MEM_BASE isa_mem_base
#define PCI_DRAM_OFFSET pci_dram_offset
+#endif /* CONFIG_APUS */
#endif /* CONFIG_MBX8xx */
-#define readb(addr) (*(volatile unsigned char *) (addr))
-#define writeb(b,addr) ((*(volatile unsigned char *) (addr)) = (b))
+#define readb(addr) in_8((volatile unsigned char *)(addr))
+#define writeb(b,addr) out_8((volatile unsigned char *)(addr), (b))
#if defined(CONFIG_APUS)
#define readw(addr) (*(volatile unsigned short *) (addr))
#define readl(addr) (*(volatile unsigned int *) (addr))
#define writew(b,addr) ((*(volatile unsigned short *) (addr)) = (b))
#define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))
#else
-#define readw(addr) ld_le16((volatile unsigned short *)(addr))
-#define readl(addr) ld_le32((volatile unsigned *)addr)
-#define writew(b,addr) st_le16((volatile unsigned short *)(addr),(b))
-#define writel(b,addr) st_le32((volatile unsigned *)(addr),(b))
+#define readw(addr) in_le16((volatile unsigned short *)(addr))
+#define readl(addr) in_le32((volatile unsigned *)addr)
+#define writew(b,addr) out_le16((volatile unsigned short *)(addr),(b))
+#define writel(b,addr) out_le32((volatile unsigned *)(addr),(b))
#endif
#define insb(port, buf, ns) _insb((unsigned char *)((port)+_IO_BASE), (buf), (ns))
@@ -120,6 +123,7 @@ extern void _outsl_ns(volatile unsigned long *port, const void *buf, int nl);
extern void *__ioremap(unsigned long address, unsigned long size,
unsigned long flags);
extern void *ioremap(unsigned long address, unsigned long size);
+#define ioremap_nocache(addr, size) ioremap((addr), (size))
extern void iounmap(void *addr);
extern unsigned long iopa(unsigned long addr);
#ifdef CONFIG_APUS
@@ -177,22 +181,6 @@ extern inline void * phys_to_virt(unsigned long address)
#endif
}
-static inline int check_signature(unsigned long io_addr,
- const unsigned char *signature, int length)
-{
- int retval = 0;
- do {
- if (readb(io_addr) != *signature)
- goto out;
- io_addr++;
- signature++;
- length--;
- } while (length);
- retval = 1;
-out:
- return retval;
-}
-
#endif /* __KERNEL__ */
/*
@@ -202,8 +190,9 @@ out:
*/
extern inline void eieio(void)
{
- __asm__ __volatile__ ("eieio" : : : "memory" );
+ __asm__ __volatile__ ("eieio" : : : "memory");
}
+#define iobarrier() eieio()
/*
* 8, 16 and 32 bit, big and little endian I/O operations, with barrier.
@@ -212,26 +201,21 @@ extern inline int in_8(volatile unsigned char *addr)
{
int ret;
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- ret = *addr;
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("lbz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
return ret;
}
extern inline void out_8(volatile unsigned char *addr, int val)
{
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- *addr = val;
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("stb%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
}
extern inline int in_le16(volatile unsigned short *addr)
{
int ret;
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- ret = ld_le16(addr);
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("lhbrx %0,0,%1; eieio" : "=r" (ret) :
+ "r" (addr), "m" (*addr));
return ret;
}
@@ -239,58 +223,65 @@ extern inline int in_be16(volatile unsigned short *addr)
{
int ret;
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- ret = *addr;
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("lhz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
return ret;
}
extern inline void out_le16(volatile unsigned short *addr, int val)
{
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- st_le16(addr, val);
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("sthbrx %1,0,%2; eieio" : "=m" (*addr) :
+ "r" (val), "r" (addr));
}
extern inline void out_be16(volatile unsigned short *addr, int val)
{
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- *addr = val;
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("sth%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
}
extern inline unsigned in_le32(volatile unsigned *addr)
{
unsigned ret;
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- ret = ld_le32(addr);
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("lwbrx %0,0,%1; eieio" : "=r" (ret) :
+ "r" (addr), "m" (*addr));
return ret;
}
-extern inline int in_be32(volatile unsigned *addr)
+extern inline unsigned in_be32(volatile unsigned *addr)
{
- int ret;
+ unsigned ret;
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- ret = *addr;
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("lwz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
return ret;
}
extern inline void out_le32(volatile unsigned *addr, int val)
{
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- st_le32(addr, val);
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("stwbrx %1,0,%2; eieio" : "=m" (*addr) :
+ "r" (val), "r" (addr));
}
extern inline void out_be32(volatile unsigned *addr, int val)
{
- __asm__ __volatile__ ("" : "=m" (*addr) : "0" (*addr) );
- *addr = val;
- __asm__ __volatile__ ("eieio" : "=m" (*addr) : "0" (*addr) );
+ __asm__ __volatile__("stw%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
}
+#ifdef __KERNEL__
+static inline int check_signature(unsigned long io_addr,
+ const unsigned char *signature, int length)
+{
+ int retval = 0;
+ do {
+ if (readb(io_addr) != *signature)
+ goto out;
+ io_addr++;
+ signature++;
+ length--;
+ } while (length);
+ retval = 1;
+out:
+ return retval;
+}
+#endif /* __KERNEL__ */
+
#endif
diff --git a/include/asm-ppc/irq.h b/include/asm-ppc/irq.h
index be13bd34a..661b2c007 100644
--- a/include/asm-ppc/irq.h
+++ b/include/asm-ppc/irq.h
@@ -8,7 +8,11 @@
#ifndef CONFIG_8xx
#ifdef CONFIG_APUS
+#define enable_irq m68k_enable_irq
+#define disable_irq m68k_disable_irq
#include <asm-m68k/irq.h>
+#undef enable_irq
+#undef disable_irq
#else /* CONFIG_APUS */
/*
@@ -16,7 +20,8 @@
* so it is the max of them all - which happens to be powermac
* at present (G3 powermacs have 64).
*/
-#define NR_IRQS 64
+#define NR_IRQS 128
+
#endif /* CONFIG_APUS */
#define NUM_8259_INTERRUPTS 16
@@ -76,9 +81,10 @@ static __inline__ int irq_cannonicalize(int irq)
* My personal preference is CPM at level 2, which puts it above the
* MBX PCI/ISA/IDE interrupts.
*/
-#define PIT_INTERRUPT SIU_LEVEL0
-#define CPM_INTERRUPT SIU_LEVEL2
-#define DEC_INTERRUPT SIU_LEVEL7
+#define PIT_INTERRUPT SIU_LEVEL0
+#define CPM_INTERRUPT SIU_LEVEL2
+#define PCMCIA_INTERRUPT SIU_LEVEL6
+#define DEC_INTERRUPT SIU_LEVEL7
/* Some internal interrupt registers use an 8-bit mask for the interrupt
* level instead of a number.
@@ -95,6 +101,10 @@ static __inline__ int irq_cannonicalize(int irq)
#define STOP_ABRT_INT SIU_IRQ7 /* Stop/Abort header pin */
#endif /* CONFIG_MBX */
+#ifdef CONFIG_FADS
+#define FEC_INTERRUPT SIU_LEVEL1 /* FEC interrupt */
+#endif
+
/* always the same on MBX -- Cort */
static __inline__ int irq_cannonicalize(int irq)
{
diff --git a/include/asm-ppc/linux_logo.h b/include/asm-ppc/linux_logo.h
index 33ad40f64..09bf34089 100644
--- a/include/asm-ppc/linux_logo.h
+++ b/include/asm-ppc/linux_logo.h
@@ -11,6 +11,15 @@
* (i.e. linux_logo_{red,green,blue}[0] is color 0x20)
*/
+#include <linux/config.h>
+#ifdef CONFIG_APUS
+#include <asm-m68k/linux_logo.h>
+
+#undef linux_logo_banner
+#define linux_logo_banner "Linux/PPC version " UTS_RELEASE
+
+#else
+
#include <linux/init.h>
#define linux_logo_banner "Linux/PPC version " UTS_RELEASE
@@ -39,3 +48,4 @@ extern unsigned char linux_logo16_blue[];
extern unsigned char linux_logo16[];
#endif
+#endif /* CONFIG_APUS */
diff --git a/include/asm-ppc/mbx.h b/include/asm-ppc/mbx.h
index f81c64b8c..1d8d91039 100644
--- a/include/asm-ppc/mbx.h
+++ b/include/asm-ppc/mbx.h
@@ -55,8 +55,8 @@ typedef struct bd_info {
#define NVRAM_SIZE ((uint)(1 * 1024 * 1024))
#define MBX_CSR_ADDR ((uint)0xfa100000)
#define MBX_CSR_SIZE ((uint)(1 * 1024 * 1024))
-#define MBX_IMAP_ADDR ((uint)0xfa200000)
-#define MBX_IMAP_SIZE ((uint)(64 * 1024))
+#define IMAP_ADDR ((uint)0xfa200000)
+#define IMAP_SIZE ((uint)(64 * 1024))
#define PCI_CSR_ADDR ((uint)0xfa210000)
#define PCI_CSR_SIZE ((uint)(64 * 1024))
#endif
diff --git a/include/asm-ppc/mediabay.h b/include/asm-ppc/mediabay.h
index 85146e69a..04792d15e 100644
--- a/include/asm-ppc/mediabay.h
+++ b/include/asm-ppc/mediabay.h
@@ -14,20 +14,15 @@
#ifdef __KERNEL__
void media_bay_init(void);
-int check_media_bay(int what);
-int media_bay_task(void *);
+int check_media_bay(struct device_node *which_bay, int what);
+int check_media_bay_by_base(unsigned long base, int what);
-extern int media_bay_present; /* 1 if this machine has a media bay */
+/* Number of bays in the machine or 0 */
+extern int media_bay_count;
-/*
- * The following give information about the IDE interface
- * of the media bay: the base virtual address and IRQ number,
- * and the index that the IDE driver has assigned to it
- * (or -1 if it is not currently registered with the driver).
- */
-extern unsigned long mb_cd_base;
-extern int mb_cd_irq;
-extern int mb_cd_index;
+/* called by pmac-ide.c to register IDE controller for media bay */
+extern int media_bay_set_ide_infos(struct device_node* which_bay,
+ unsigned long base, int irq, int index);
#endif /* __KERNEL__ */
#endif /* _PPC_MEDIABAY_H */
diff --git a/include/asm-ppc/mmu_context.h b/include/asm-ppc/mmu_context.h
index 0f06f16fe..5b2bdc932 100644
--- a/include/asm-ppc/mmu_context.h
+++ b/include/asm-ppc/mmu_context.h
@@ -68,7 +68,7 @@ do { \
/*
* We're finished using the context for an address space.
*/
-#define destroy_context(mm) ((mm)->context = NO_CONTEXT)
+#define destroy_context(mm) do { } while (0)
/*
* After we have set current->mm to a new value, this activates
diff --git a/include/asm-ppc/namei.h b/include/asm-ppc/namei.h
index 3f87dc9ea..a4b277b40 100644
--- a/include/asm-ppc/namei.h
+++ b/include/asm-ppc/namei.h
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.3 1997/09/06 09:27:42 ralf Exp $
+/* $Id: namei.h,v 1.4 1998/12/08 20:52:03 ralf Exp $
* linux/include/asm-ppc/namei.h
* Adapted from linux/include/asm-alpha/namei.h
*
@@ -13,7 +13,7 @@
* Look at asm-sparc/namei.h for details.
*/
-#define __prefix_lookup_dentry(name, follow_link) \
+#define __prefix_lookup_dentry(name, lookup_flags) \
do {} while (0)
#endif /* __PPC_NAMEI_H */
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h
index 96ccf6544..d0c0673b3 100644
--- a/include/asm-ppc/pgtable.h
+++ b/include/asm-ppc/pgtable.h
@@ -618,8 +618,6 @@ extern void cache_push(__u32 addr, int length);
extern int mm_end_of_chunk (unsigned long addr, int len);
extern unsigned long iopa(unsigned long addr);
extern unsigned long mm_ptov(unsigned long addr) __attribute__ ((const));
-#define VTOP(addr) (iopa((unsigned long)(addr)))
-#define PTOV(addr) (mm_ptov((unsigned long)(addr)))
/* Values for nocacheflag and cmode */
/* These are not used by the APUS kernel_map, but prevents
@@ -635,6 +633,11 @@ extern unsigned long mm_ptov(unsigned long addr) __attribute__ ((const));
extern unsigned long kernel_map(unsigned long paddr, unsigned long size,
int nocacheflag, unsigned long *memavailp );
+/*
+ * Set cache mode of (kernel space) address range.
+ */
+extern void kernel_set_cachemode (unsigned long address, unsigned long size,
+ unsigned int cmode);
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
#define PageSkip(page) (0)
diff --git a/include/asm-ppc/pmu.h b/include/asm-ppc/pmu.h
index 672aeed2e..ee04ae2a8 100644
--- a/include/asm-ppc/pmu.h
+++ b/include/asm-ppc/pmu.h
@@ -54,6 +54,9 @@ void pmu_poll(void);
void pmu_enable_backlight(int on);
+void pmu_restart(void);
+void pmu_shutdown(void);
+
/*
* Stuff for putting the powerbook to sleep and waking it again.
*/
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index cfa71b568..a3e06e566 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -25,9 +25,9 @@
#define MSR_LE (1<<0) /* Little-Endian enable */
#ifdef CONFIG_APUS
-#define MSR_ MSR_ME|MSR_FE0|MSR_FE1|MSR_IP|MSR_RI
+#define MSR_ MSR_ME|MSR_IP|MSR_RI
#else
-#define MSR_ MSR_ME|MSR_FE0|MSR_FE1|MSR_RI
+#define MSR_ MSR_ME|MSR_RI
#endif
#define MSR_KERNEL MSR_|MSR_IR|MSR_DR
#define MSR_USER MSR_KERNEL|MSR_PR|MSR_EE
@@ -64,6 +64,7 @@
#define _MACH_chrp 4 /* chrp machine */
#define _MACH_mbx 8 /* Motorola MBX board */
#define _MACH_apus 16 /* amiga with phase5 powerup */
+#define _MACH_fads 32 /* Motorola FADS board */
/* see residual.h for these */
#define _PREP_Motorola 0x01 /* motorola prep */
@@ -193,6 +194,13 @@ n:
#define have_of (0)
#endif /* CONFIG_MBX */
+#ifdef CONFIG_FADS
+#define _machine (_MACH_fads)
+#define is_prep (0)
+#define is_chrp (0)
+#define have_of (0)
+#endif /* CONFIG_FADS */
+
#ifdef CONFIG_APUS
#define _machine (_MACH_apus)
#define is_prep (0)
diff --git a/include/asm-ppc/prom.h b/include/asm-ppc/prom.h
index 9dd860981..018da94fd 100644
--- a/include/asm-ppc/prom.h
+++ b/include/asm-ppc/prom.h
@@ -8,10 +8,7 @@
typedef void *phandle;
typedef void *ihandle;
-#ifndef FB_MAX
-#define FB_MAX 8 /* I don't want to include the whole console stuff */
-#endif
-extern char *prom_display_paths[FB_MAX];
+extern char *prom_display_paths[];
extern unsigned int prom_num_displays;
struct address_range {
@@ -65,17 +62,19 @@ struct prom_args;
typedef void (*prom_entry)(struct prom_args *);
/* Prototypes */
-void abort(void);
-void prom_init(int, int, prom_entry);
-void finish_device_tree(void);
-struct device_node *find_devices(const char *name);
-struct device_node *find_type_devices(const char *type);
-struct device_node *find_path_device(const char *path);
-struct device_node *find_compatible_devices(const char *type,
- const char *compat);
-struct device_node *find_phandle(phandle);
-unsigned char *get_property(struct device_node *node, const char *name,
- int *lenp);
-void print_properties(struct device_node *node);
-int call_rtas(const char *service, int nargs, int nret,
- unsigned long *outputs, ...);
+extern void abort(void);
+extern void prom_init(int, int, prom_entry);
+extern void prom_print(const char *msg);
+extern void finish_device_tree(void);
+extern struct device_node *find_devices(const char *name);
+extern struct device_node *find_type_devices(const char *type);
+extern struct device_node *find_path_device(const char *path);
+extern struct device_node *find_compatible_devices(const char *type,
+ const char *compat);
+extern struct device_node *find_phandle(phandle);
+extern int device_is_compatible(struct device_node *device, const char* compat);
+extern unsigned char *get_property(struct device_node *node, const char *name,
+ int *lenp);
+extern void print_properties(struct device_node *node);
+extern int call_rtas(const char *service, int nargs, int nret,
+ unsigned long *outputs, ...);
diff --git a/include/asm-ppc/smp.h b/include/asm-ppc/smp.h
index fcbaa0076..4fb817a8e 100644
--- a/include/asm-ppc/smp.h
+++ b/include/asm-ppc/smp.h
@@ -13,7 +13,22 @@
#ifndef __ASSEMBLY__
-extern unsigned long cpu_present_map;
+extern int first_cpu_booted;
+extern unsigned long smp_proc_in_lock[NR_CPUS];
+
+extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
+extern void smp_store_cpu_info(int id);
+
+#define NO_PROC_ID 0xFF /* No processor magic marker */
+#define PROC_CHANGE_PENALTY 2000
+
+/* 1 to 1 mapping on PPC -- Cort */
+#define cpu_logical_map(cpu) (cpu)
+extern int cpu_number_map[NR_CPUS];
+extern volatile unsigned long cpu_callin_map[NR_CPUS];
+
+#define hard_smp_processor_id() (0)
+#define smp_processor_id() (current->processor)
/* per processor PPC parameters we need. */
struct cpuinfo_PPC {
@@ -32,45 +47,13 @@ struct klock_info_struct {
};
extern struct klock_info_struct klock_info;
-
#define KLOCK_HELD 0xffffffff
#define KLOCK_CLEAR 0x0
-#define PROC_CHANGE_PENALTY 20
-
-extern __volatile__ int cpu_number_map[NR_CPUS];
-extern __volatile__ int __cpu_logical_map[NR_CPUS];
-extern unsigned long smp_proc_in_lock[NR_CPUS];
-
-extern __inline__ int cpu_logical_map(int cpu)
-{
- return __cpu_logical_map[cpu];
-}
-
-extern __inline__ int hard_smp_processor_id(void)
-{
- int cpuid = 0;
- /* assume cpu # 0 for now */
- return cpuid;
-}
-
-#define smp_processor_id() (current->processor)
-
-extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
-
#endif /* __ASSEMBLY__ */
#else /* !(__SMP__) */
-#ifndef __ASSEMBLY__
-extern __inline__ int cpu_logical_map(int cpu)
-{
- return cpu;
-}
-#endif
-#endif /* !(__SMP__) */
-
-#define NO_PROC_ID 0xFF /* No processor magic marker */
-extern void smp_store_cpu_info(int id);
+#endif /* !(__SMP__) */
#endif /* !(_PPC_SMP_H) */
diff --git a/include/asm-ppc/softirq.h b/include/asm-ppc/softirq.h
index 712616bd1..739b22580 100644
--- a/include/asm-ppc/softirq.h
+++ b/include/asm-ppc/softirq.h
@@ -1,26 +1,12 @@
-/*
- * Software interrupts..
- */
-
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <asm/atomic.h>
#include <asm/hardirq.h>
-/*
- * The locking mechanism for base handlers, to prevent re-entrancy,
- * is entirely private to an implementation, it should not be
- * referenced at all outside of this file.
- */
-#define get_active_bhs() (bh_mask & bh_active)
-
-#ifndef __SMP__
-
-extern int __ppc_bh_counter;
-
-#define synchronize_bh() do { } while (0)
+extern unsigned int local_bh_count[NR_CPUS];
+#define get_active_bhs() (bh_mask & bh_active)
#define clear_active_bhs(x) atomic_clear_mask((x),&bh_active)
extern inline void init_bh(int nr, void (*routine)(void))
@@ -41,115 +27,83 @@ extern inline void mark_bh(int nr)
set_bit(nr, &bh_active);
}
+#ifdef __SMP__
/*
- * These use a mask count to correctly handle
- * nested disable/enable calls
+ * The locking mechanism for base handlers, to prevent re-entrancy,
+ * is entirely private to an implementation, it should not be
+ * referenced at all outside of this file.
*/
-extern inline void disable_bh(int nr)
+extern atomic_t global_bh_lock;
+extern atomic_t global_bh_count;
+
+extern void synchronize_bh(void);
+
+static inline void start_bh_atomic(void)
{
- bh_mask &= ~(1 << nr);
- bh_mask_count[nr]++;
+ atomic_inc(&global_bh_lock);
+ synchronize_bh();
}
-extern inline void enable_bh(int nr)
+static inline void end_bh_atomic(void)
{
- if (!--bh_mask_count[nr])
- bh_mask |= 1 << nr;
+ atomic_dec(&global_bh_lock);
}
+/* These are for the IRQs testing the lock */
+static inline int softirq_trylock(int cpu)
+{
+ if (!test_and_set_bit(0,&global_bh_count)) {
+ if (atomic_read(&global_bh_lock) == 0) {
+ ++local_bh_count[cpu];
+ return 1;
+ }
+ clear_bit(0,&global_bh_count);
+ }
+ return 0;
+}
+
+static inline void softirq_endlock(int cpu)
+{
+ local_bh_count[cpu]--;
+ clear_bit(0,&global_bh_count);
+}
+
+#else /* __SMP__ */
extern inline void start_bh_atomic(void)
{
- __ppc_bh_counter++;
+ local_bh_count[smp_processor_id()]++;
barrier();
}
extern inline void end_bh_atomic(void)
{
barrier();
- __ppc_bh_counter--;
+ local_bh_count[smp_processor_id()]--;
}
/* These are for the irq's testing the lock */
-#define softirq_trylock(cpu) (__ppc_bh_counter? 0: ((__ppc_bh_counter=1),1))
-#define softirq_endlock(cpu) (__ppc_bh_counter = 0)
+#define softirq_trylock(cpu) (local_bh_count[cpu] ? 0 : (local_bh_count[cpu]=1))
+#define softirq_endlock(cpu) (local_bh_count[cpu] = 0)
+#define synchronize_bh() do { } while (0)
-#else /* __SMP__ */
+#endif /* __SMP__ */
-extern atomic_t __ppc_bh_counter;
-
-#define start_bh_atomic() \
- do { atomic_inc(&__ppc_bh_counter); synchronize_irq(); } while(0)
-
-#define end_bh_atomic() atomic_dec(&__ppc_bh_counter)
-
-#define synchronize_bh() do { } while (0) /* XXX implement SMP version --Cort */
-
-#include <asm/spinlock.h>
-
-extern spinlock_t global_bh_lock;
-
-#define init_bh(nr, routine) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_base[ent] = routine; \
- bh_mask_count[ent] = 0; \
- bh_mask |= 1 << ent; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define remove_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_base[ent] = NULL; \
- bh_mask &= ~(1 << ent); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define mark_bh(nr) \
-do { unsigned long flags; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_active |= (1 << nr); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define disable_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_mask &= ~(1 << ent); \
- bh_mask_count[ent]++; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define enable_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- if (!--bh_mask_count[ent]) \
- bh_mask |= 1 << ent; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define softirq_trylock(cpu) \
-({ \
- int ret = 1; \
- if(atomic_add_return(1, &__ppc_bh_counter) != 1) { \
- atomic_dec(&__ppc_bh_counter); \
- ret = 0; \
- } \
- ret; \
-})
-#define softirq_endlock(cpu) atomic_dec(&__ppc_bh_counter)
-#define clear_active_bhs(mask) \
-do { unsigned long flags; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_active &= ~(mask); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
+/*
+ * These use a mask count to correctly handle
+ * nested disable/enable calls
+ */
+extern inline void disable_bh(int nr)
+{
+ bh_mask &= ~(1 << nr);
+ bh_mask_count[nr]++;
+ synchronize_bh();
+}
-#endif /* __SMP__ */
+extern inline void enable_bh(int nr)
+{
+ if (!--bh_mask_count[nr])
+ bh_mask |= 1 << nr;
+}
#endif
diff --git a/include/asm-ppc/system.h b/include/asm-ppc/system.h
index 978fb2ab8..32d01e7f2 100644
--- a/include/asm-ppc/system.h
+++ b/include/asm-ppc/system.h
@@ -53,14 +53,15 @@ extern void hard_reset_now(void);
extern void poweroff_now(void);
extern int _get_PVR(void);
extern long _get_L2CR(void);
+extern void _set_L2CR(unsigned long);
extern void via_cuda_init(void);
extern void pmac_nvram_init(void);
extern void read_rtc_time(void);
extern void pmac_find_display(void);
extern void giveup_fpu(void);
extern void smp_giveup_fpu(struct task_struct *);
-extern void cvt_fd(float *from, double *to);
-extern void cvt_df(double *from, float *to);
+extern void cvt_fd(float *from, double *to, unsigned long *fpscr);
+extern void cvt_df(double *from, float *to, unsigned long *fpscr);
struct device_node;
extern void note_scsi_host(struct device_node *, void *);
diff --git a/include/asm-ppc/termios.h b/include/asm-ppc/termios.h
index b5e8c78df..c6385d4a7 100644
--- a/include/asm-ppc/termios.h
+++ b/include/asm-ppc/termios.h
@@ -175,6 +175,13 @@ struct termio {
#define N_SLIP 1
#define N_MOUSE 2
#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6 /* X.25 async */
+#define N_6PACK 7
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-ppc/types.h b/include/asm-ppc/types.h
index 1c9e605da..6f95c17e6 100644
--- a/include/asm-ppc/types.h
+++ b/include/asm-ppc/types.h
@@ -1,8 +1,6 @@
#ifndef _PPC_TYPES_H
#define _PPC_TYPES_H
-typedef unsigned short umode_t;
-
/*
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
@@ -27,6 +25,8 @@ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+typedef unsigned short umode_t;
+
typedef signed char s8;
typedef unsigned char u8;
diff --git a/include/asm-ppc/uaccess.h b/include/asm-ppc/uaccess.h
index 65ca165b7..b22b81511 100644
--- a/include/asm-ppc/uaccess.h
+++ b/include/asm-ppc/uaccess.h
@@ -211,12 +211,9 @@ extern int __copy_tofrom_user(void *to, const void *from, unsigned long size);
extern inline unsigned long
copy_from_user(void *to, const void *from, unsigned long n)
{
- unsigned long res = n;
- if (access_ok(VERIFY_READ, from, n)) {
- res = __copy_tofrom_user(to, from, n);
- if (res) memset((char *)to + n - res, 0, res);
- }
- return res;
+ if (access_ok(VERIFY_READ, from, n))
+ return __copy_tofrom_user(to, from, n);
+ return n;
}
extern inline unsigned long
diff --git a/include/asm-ppc/unistd.h b/include/asm-ppc/unistd.h
index 2a0f9f16b..5e8c3910e 100644
--- a/include/asm-ppc/unistd.h
+++ b/include/asm-ppc/unistd.h
@@ -5,7 +5,6 @@
* This file contains the system call numbers.
*/
-#define __NR_setup 0 /* used only by init, to get system going */
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
@@ -57,7 +56,7 @@
#define __NR_geteuid 49
#define __NR_getegid 50
#define __NR_acct 51
-#define __NR_phys 52
+#define __NR_umount2 52
#define __NR_lock 53
#define __NR_ioctl 54
#define __NR_fcntl 55
@@ -181,13 +180,19 @@
#define __NR_rt_sigaction 173
#define __NR_rt_sigprocmask 174
#define __NR_rt_sigpending 175
-#define __NR_rt_sigtimedwait 176
-#define __NR_rt_sigqueueinfo 177
-#define __NR_rt_sigsuspend 178
-#define __NR_pread 179
-#define __NR_pwrite 180
-#define __NR_chown 181
-#define __NR_getcwd 182
+#define __NR_rt_sigtimedwait 176
+#define __NR_rt_sigqueueinfo 177
+#define __NR_rt_sigsuspend 178
+#define __NR_pread 179
+#define __NR_pwrite 180
+#define __NR_chown 181
+#define __NR_getcwd 182
+#define __NR_capget 183
+#define __NR_capset 184
+#define __NR_sigaltstack 185
+#define __NR_sendfile 186
+#define __NR_getpmsg 187 /* some people actually want streams */
+#define __NR_putpmsg 188 /* some people actually want streams */
#define __NR(n) #n
@@ -387,7 +392,6 @@ static inline long kernel_thread(int (*fn)(void *), void * arg, unsigned long fl
#define __NR__exit __NR_exit
static inline _syscall0(int,idle)
static inline _syscall0(int,pause)
-static inline _syscall1(int,setup,int,magic)
static inline _syscall0(int,sync)
static inline _syscall0(pid_t,setsid)
static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
diff --git a/include/asm-ppc/vga.h b/include/asm-ppc/vga.h
index d82388831..1ab739772 100644
--- a/include/asm-ppc/vga.h
+++ b/include/asm-ppc/vga.h
@@ -21,8 +21,11 @@ extern inline u16 scr_readw(u16 *addr)
return ld_le16(addr);
}
-#define VGA_MAP_MEM(x) (x + _ISA_MEM_BASE)
+#define VT_BUF_HAVE_MEMCPYF
+#define scr_memcpyw_from memcpy
+#define scr_memcpyw_to memcpy
+#define VGA_MAP_MEM(x) (x + _ISA_MEM_BASE)
#define vga_readb(x) (*(x))
#define vga_writeb(x,y) (*(y) = (x))
diff --git a/include/asm-sparc/asm_offsets.h b/include/asm-sparc/asm_offsets.h
index d2f9a582b..655987dd5 100644
--- a/include/asm-sparc/asm_offsets.h
+++ b/include/asm-sparc/asm_offsets.h
@@ -74,78 +74,78 @@
#define ASIZ_task_tarray_ptr 0x00000004
#define AOFF_task_wait_chldexit 0x0000008c
#define ASIZ_task_wait_chldexit 0x00000004
-#define AOFF_task_timeout 0x00000090
-#define ASIZ_task_timeout 0x00000004
-#define AOFF_task_policy 0x00000094
+#define AOFF_task_policy 0x00000090
#define ASIZ_task_policy 0x00000004
-#define AOFF_task_rt_priority 0x00000098
+#define AOFF_task_rt_priority 0x00000094
#define ASIZ_task_rt_priority 0x00000004
-#define AOFF_task_it_real_value 0x0000009c
+#define AOFF_task_it_real_value 0x00000098
#define ASIZ_task_it_real_value 0x00000004
-#define AOFF_task_it_prof_value 0x000000a0
+#define AOFF_task_it_prof_value 0x0000009c
#define ASIZ_task_it_prof_value 0x00000004
-#define AOFF_task_it_virt_value 0x000000a4
+#define AOFF_task_it_virt_value 0x000000a0
#define ASIZ_task_it_virt_value 0x00000004
-#define AOFF_task_it_real_incr 0x000000a8
+#define AOFF_task_it_real_incr 0x000000a4
#define ASIZ_task_it_real_incr 0x00000004
-#define AOFF_task_it_prof_incr 0x000000ac
+#define AOFF_task_it_prof_incr 0x000000a8
#define ASIZ_task_it_prof_incr 0x00000004
-#define AOFF_task_it_virt_incr 0x000000b0
+#define AOFF_task_it_virt_incr 0x000000ac
#define ASIZ_task_it_virt_incr 0x00000004
-#define AOFF_task_real_timer 0x000000b4
+#define AOFF_task_real_timer 0x000000b0
#define ASIZ_task_real_timer 0x00000014
-#define AOFF_task_times 0x000000c8
+#define AOFF_task_times 0x000000c4
#define ASIZ_task_times 0x00000010
-#define AOFF_task_start_time 0x000000d8
+#define AOFF_task_start_time 0x000000d4
#define ASIZ_task_start_time 0x00000004
-#define AOFF_task_per_cpu_utime 0x000000dc
+#define AOFF_task_per_cpu_utime 0x000000d8
#define ASIZ_task_per_cpu_utime 0x00000004
-#define AOFF_task_min_flt 0x000000e4
+#define AOFF_task_min_flt 0x000000e0
#define ASIZ_task_min_flt 0x00000004
-#define AOFF_task_maj_flt 0x000000e8
+#define AOFF_task_maj_flt 0x000000e4
#define ASIZ_task_maj_flt 0x00000004
-#define AOFF_task_nswap 0x000000ec
+#define AOFF_task_nswap 0x000000e8
#define ASIZ_task_nswap 0x00000004
-#define AOFF_task_cmin_flt 0x000000f0
+#define AOFF_task_cmin_flt 0x000000ec
#define ASIZ_task_cmin_flt 0x00000004
-#define AOFF_task_cmaj_flt 0x000000f4
+#define AOFF_task_cmaj_flt 0x000000f0
#define ASIZ_task_cmaj_flt 0x00000004
-#define AOFF_task_cnswap 0x000000f8
+#define AOFF_task_cnswap 0x000000f4
#define ASIZ_task_cnswap 0x00000004
-#define AOFF_task_swap_address 0x00000100
+#define AOFF_task_swap_address 0x000000fc
#define ASIZ_task_swap_address 0x00000004
-#define AOFF_task_old_maj_flt 0x00000104
+#define AOFF_task_old_maj_flt 0x00000100
#define ASIZ_task_old_maj_flt 0x00000004
-#define AOFF_task_dec_flt 0x00000108
+#define AOFF_task_dec_flt 0x00000104
#define ASIZ_task_dec_flt 0x00000004
-#define AOFF_task_swap_cnt 0x0000010c
+#define AOFF_task_swap_cnt 0x00000108
#define ASIZ_task_swap_cnt 0x00000004
-#define AOFF_task_uid 0x00000110
+#define AOFF_task_uid 0x0000010c
#define ASIZ_task_uid 0x00000002
-#define AOFF_task_euid 0x00000112
+#define AOFF_task_euid 0x0000010e
#define ASIZ_task_euid 0x00000002
-#define AOFF_task_suid 0x00000114
+#define AOFF_task_suid 0x00000110
#define ASIZ_task_suid 0x00000002
-#define AOFF_task_fsuid 0x00000116
+#define AOFF_task_fsuid 0x00000112
#define ASIZ_task_fsuid 0x00000002
-#define AOFF_task_gid 0x00000118
+#define AOFF_task_gid 0x00000114
#define ASIZ_task_gid 0x00000002
-#define AOFF_task_egid 0x0000011a
+#define AOFF_task_egid 0x00000116
#define ASIZ_task_egid 0x00000002
-#define AOFF_task_sgid 0x0000011c
+#define AOFF_task_sgid 0x00000118
#define ASIZ_task_sgid 0x00000002
-#define AOFF_task_fsgid 0x0000011e
+#define AOFF_task_fsgid 0x0000011a
#define ASIZ_task_fsgid 0x00000002
-#define AOFF_task_ngroups 0x00000120
+#define AOFF_task_ngroups 0x0000011c
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x00000124
+#define AOFF_task_groups 0x00000120
#define ASIZ_task_groups 0x00000040
-#define AOFF_task_cap_effective 0x00000164
+#define AOFF_task_cap_effective 0x00000160
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x00000168
+#define AOFF_task_cap_inheritable 0x00000164
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x0000016c
+#define AOFF_task_cap_permitted 0x00000168
#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_user 0x0000016c
+#define ASIZ_task_user 0x00000004
#define AOFF_task_rlim 0x00000170
#define ASIZ_task_rlim 0x00000050
#define AOFF_task_used_math 0x000001c0
@@ -169,20 +169,20 @@
#define AOFF_task_mm 0x00000578
#define ASIZ_task_mm 0x00000004
#define AOFF_task_sigmask_lock 0x0000057c
-#define ASIZ_task_sigmask_lock 0x00000000
-#define AOFF_task_sig 0x0000057c
+#define ASIZ_task_sigmask_lock 0x00000001
+#define AOFF_task_sig 0x00000580
#define ASIZ_task_sig 0x00000004
-#define AOFF_task_signal 0x00000580
+#define AOFF_task_signal 0x00000584
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000588
+#define AOFF_task_blocked 0x0000058c
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x00000590
+#define AOFF_task_sigqueue 0x00000594
#define ASIZ_task_sigqueue 0x00000004
-#define AOFF_task_sigqueue_tail 0x00000594
+#define AOFF_task_sigqueue_tail 0x00000598
#define ASIZ_task_sigqueue_tail 0x00000004
-#define AOFF_task_sas_ss_sp 0x00000598
+#define AOFF_task_sas_ss_sp 0x0000059c
#define ASIZ_task_sas_ss_sp 0x00000004
-#define AOFF_task_sas_ss_size 0x0000059c
+#define AOFF_task_sas_ss_size 0x000005a0
#define ASIZ_task_sas_ss_size 0x00000004
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000004
@@ -347,78 +347,78 @@
#define ASIZ_task_tarray_ptr 0x00000004
#define AOFF_task_wait_chldexit 0x0000008c
#define ASIZ_task_wait_chldexit 0x00000004
-#define AOFF_task_timeout 0x00000090
-#define ASIZ_task_timeout 0x00000004
-#define AOFF_task_policy 0x00000094
+#define AOFF_task_policy 0x00000090
#define ASIZ_task_policy 0x00000004
-#define AOFF_task_rt_priority 0x00000098
+#define AOFF_task_rt_priority 0x00000094
#define ASIZ_task_rt_priority 0x00000004
-#define AOFF_task_it_real_value 0x0000009c
+#define AOFF_task_it_real_value 0x00000098
#define ASIZ_task_it_real_value 0x00000004
-#define AOFF_task_it_prof_value 0x000000a0
+#define AOFF_task_it_prof_value 0x0000009c
#define ASIZ_task_it_prof_value 0x00000004
-#define AOFF_task_it_virt_value 0x000000a4
+#define AOFF_task_it_virt_value 0x000000a0
#define ASIZ_task_it_virt_value 0x00000004
-#define AOFF_task_it_real_incr 0x000000a8
+#define AOFF_task_it_real_incr 0x000000a4
#define ASIZ_task_it_real_incr 0x00000004
-#define AOFF_task_it_prof_incr 0x000000ac
+#define AOFF_task_it_prof_incr 0x000000a8
#define ASIZ_task_it_prof_incr 0x00000004
-#define AOFF_task_it_virt_incr 0x000000b0
+#define AOFF_task_it_virt_incr 0x000000ac
#define ASIZ_task_it_virt_incr 0x00000004
-#define AOFF_task_real_timer 0x000000b4
+#define AOFF_task_real_timer 0x000000b0
#define ASIZ_task_real_timer 0x00000014
-#define AOFF_task_times 0x000000c8
+#define AOFF_task_times 0x000000c4
#define ASIZ_task_times 0x00000010
-#define AOFF_task_start_time 0x000000d8
+#define AOFF_task_start_time 0x000000d4
#define ASIZ_task_start_time 0x00000004
-#define AOFF_task_per_cpu_utime 0x000000dc
+#define AOFF_task_per_cpu_utime 0x000000d8
#define ASIZ_task_per_cpu_utime 0x00000080
-#define AOFF_task_min_flt 0x000001dc
+#define AOFF_task_min_flt 0x000001d8
#define ASIZ_task_min_flt 0x00000004
-#define AOFF_task_maj_flt 0x000001e0
+#define AOFF_task_maj_flt 0x000001dc
#define ASIZ_task_maj_flt 0x00000004
-#define AOFF_task_nswap 0x000001e4
+#define AOFF_task_nswap 0x000001e0
#define ASIZ_task_nswap 0x00000004
-#define AOFF_task_cmin_flt 0x000001e8
+#define AOFF_task_cmin_flt 0x000001e4
#define ASIZ_task_cmin_flt 0x00000004
-#define AOFF_task_cmaj_flt 0x000001ec
+#define AOFF_task_cmaj_flt 0x000001e8
#define ASIZ_task_cmaj_flt 0x00000004
-#define AOFF_task_cnswap 0x000001f0
+#define AOFF_task_cnswap 0x000001ec
#define ASIZ_task_cnswap 0x00000004
-#define AOFF_task_swap_address 0x000001f8
+#define AOFF_task_swap_address 0x000001f4
#define ASIZ_task_swap_address 0x00000004
-#define AOFF_task_old_maj_flt 0x000001fc
+#define AOFF_task_old_maj_flt 0x000001f8
#define ASIZ_task_old_maj_flt 0x00000004
-#define AOFF_task_dec_flt 0x00000200
+#define AOFF_task_dec_flt 0x000001fc
#define ASIZ_task_dec_flt 0x00000004
-#define AOFF_task_swap_cnt 0x00000204
+#define AOFF_task_swap_cnt 0x00000200
#define ASIZ_task_swap_cnt 0x00000004
-#define AOFF_task_uid 0x00000208
+#define AOFF_task_uid 0x00000204
#define ASIZ_task_uid 0x00000002
-#define AOFF_task_euid 0x0000020a
+#define AOFF_task_euid 0x00000206
#define ASIZ_task_euid 0x00000002
-#define AOFF_task_suid 0x0000020c
+#define AOFF_task_suid 0x00000208
#define ASIZ_task_suid 0x00000002
-#define AOFF_task_fsuid 0x0000020e
+#define AOFF_task_fsuid 0x0000020a
#define ASIZ_task_fsuid 0x00000002
-#define AOFF_task_gid 0x00000210
+#define AOFF_task_gid 0x0000020c
#define ASIZ_task_gid 0x00000002
-#define AOFF_task_egid 0x00000212
+#define AOFF_task_egid 0x0000020e
#define ASIZ_task_egid 0x00000002
-#define AOFF_task_sgid 0x00000214
+#define AOFF_task_sgid 0x00000210
#define ASIZ_task_sgid 0x00000002
-#define AOFF_task_fsgid 0x00000216
+#define AOFF_task_fsgid 0x00000212
#define ASIZ_task_fsgid 0x00000002
-#define AOFF_task_ngroups 0x00000218
+#define AOFF_task_ngroups 0x00000214
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x0000021c
+#define AOFF_task_groups 0x00000218
#define ASIZ_task_groups 0x00000040
-#define AOFF_task_cap_effective 0x0000025c
+#define AOFF_task_cap_effective 0x00000258
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x00000260
+#define AOFF_task_cap_inheritable 0x0000025c
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x00000264
+#define AOFF_task_cap_permitted 0x00000260
#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_user 0x00000264
+#define ASIZ_task_user 0x00000004
#define AOFF_task_rlim 0x00000268
#define ASIZ_task_rlim 0x00000050
#define AOFF_task_used_math 0x000002b8
@@ -442,20 +442,20 @@
#define AOFF_task_mm 0x00000670
#define ASIZ_task_mm 0x00000004
#define AOFF_task_sigmask_lock 0x00000674
-#define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig 0x00000678
+#define ASIZ_task_sigmask_lock 0x00000008
+#define AOFF_task_sig 0x0000067c
#define ASIZ_task_sig 0x00000004
-#define AOFF_task_signal 0x0000067c
+#define AOFF_task_signal 0x00000680
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000684
+#define AOFF_task_blocked 0x00000688
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x0000068c
+#define AOFF_task_sigqueue 0x00000690
#define ASIZ_task_sigqueue 0x00000004
-#define AOFF_task_sigqueue_tail 0x00000690
+#define AOFF_task_sigqueue_tail 0x00000694
#define ASIZ_task_sigqueue_tail 0x00000004
-#define AOFF_task_sas_ss_sp 0x00000694
+#define AOFF_task_sas_ss_sp 0x00000698
#define ASIZ_task_sas_ss_sp 0x00000004
-#define AOFF_task_sas_ss_size 0x00000698
+#define AOFF_task_sas_ss_size 0x0000069c
#define ASIZ_task_sas_ss_size 0x00000004
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000004
diff --git a/include/asm-sparc/audioio.h b/include/asm-sparc/audioio.h
index 93e8c33dd..ca5e06538 100644
--- a/include/asm-sparc/audioio.h
+++ b/include/asm-sparc/audioio.h
@@ -88,6 +88,7 @@ typedef struct audio_info {
#define AUDIO_ENCODING_ULAW (1) /* u-law encoding */
#define AUDIO_ENCODING_ALAW (2) /* A-law encoding */
#define AUDIO_ENCODING_LINEAR (3) /* Linear PCM encoding */
+#define AUDIO_ENCODING_FLOAT (4) /* IEEE float (-1. <-> +1.) */
#define AUDIO_ENCODING_DVI (104) /* DVI ADPCM */
#define AUDIO_ENCODING_LINEAR8 (105) /* 8 bit UNSIGNED */
#define AUDIO_ENCODING_LINEARLE (106) /* Linear PCM LE encoding */
@@ -139,8 +140,7 @@ typedef struct audio_info {
#define AUDIO_LINE_IN 0x02 /* input from line in */
#define AUDIO_CD 0x04 /* input from on-board CD inputs */
#define AUDIO_INTERNAL_CD_IN AUDIO_CD /* input from internal CDROM */
-/* Supposedly an undocumented feature of the 4231 */
-#define AUDIO_ANALOG_LOOPBACK 0x40
+#define AUDIO_ANALOG_LOOPBACK 0x40 /* input from output */
/*
@@ -227,22 +227,10 @@ typedef struct audio_device {
* if the hardware supports this. The argument is TRUE to set loopback,
* FALSE to reset to normal operation. If the hardware does not support
* internal loopback, the ioctl should fail with EINVAL.
+ * Causes ADC data to be digitally mixed in and sent to the DAC.
*/
#define AUDIO_DIAG_LOOPBACK _IOW('A', 101, int)
-#ifdef notneeded
-/*
- * Structure sent up as a M_PROTO message on trace streams
- */
-typedef struct audtrace_hdr audtrace_hdr_t;
-struct audtrace_hdr {
- unsigned int seq; /* Sequence number (per-aud_stream) */
- int type; /* device-dependent */
- struct timeval timestamp;
- char _f[8]; /* filler */
-};
-#endif
-
/*
* Linux kernel internal implementation.
*/
@@ -257,48 +245,72 @@ struct audtrace_hdr {
#define SDF_OPEN_WRITE 0x00000001
#define SDF_OPEN_READ 0x00000002
+struct sparcaudio_ringbuffer
+{
+ __u8 *rb_start, *rb_end; /* start, end of this memory buffer */
+ __u8 *rb_in, *rb_out; /* input, output pointers */
+
+ int rb_fragsize; /* size of an audio frag */
+ int rb_numfrags; /* number of frags */
+
+ int rb_count, rb_hiwat, rb_lowat; /* bytes in use, hi/lo wat points */
+
+ int rb_bufsize; /* total size of buffer */
+};
+
struct sparcaudio_driver
{
const char * name;
struct sparcaudio_operations *ops;
void *private;
unsigned long flags;
+ struct strevent *sd_siglist;
+ /* duplex: 0=simplex, 1=duplex, 2=loop */
+ int sd_sigflags, duplex;
+
+ /* Which audio device are we? */
+ int index;
/* This device */
struct linux_sbus_device *dev;
-
+
/* Processes blocked on open() sit here. */
struct wait_queue *open_wait;
/* Task queue for this driver's bottom half. */
struct tq_struct tqueue;
+ /* Start of ring buffer support */
+ __u8 *input_buffer, *output_buffer;
+
/* Support for a circular queue of output buffers. */
__u8 **output_buffers;
- size_t *output_sizes, output_size;
- int num_output_buffers, output_front, output_rear;
- int output_count, output_active, playing_count;
+ size_t *output_sizes, output_size, output_buffer_size;
+ int num_output_buffers, output_front, output_rear, output_offset;
+ int output_count, output_active, playing_count, output_eof;
struct wait_queue *output_write_wait, *output_drain_wait;
+ char *output_notify;
/* Support for a circular queue of input buffers. */
__u8 **input_buffers;
- int input_offset;
- int num_input_buffers, input_front, input_rear;
+ size_t *input_sizes, input_size, input_buffer_size;
+ int num_input_buffers, input_front, input_rear, input_offset;
int input_count, input_active, recording_count;
struct wait_queue *input_read_wait;
+
+ /* Hack to make it look like we support variable size buffers. */
+ int buffer_size;
};
struct sparcaudio_operations
{
int (*open)(struct inode *, struct file *, struct sparcaudio_driver *);
- void (*release)(struct inode *, struct file *, struct
- sparcaudio_driver *);
- int (*ioctl)(struct inode *, struct file *, unsigned int,
- unsigned long, struct sparcaudio_driver *);
+ void (*release)(struct inode *, struct file *, struct sparcaudio_driver *);
+ int (*ioctl)(struct inode *, struct file *, unsigned int, unsigned long,
+ struct sparcaudio_driver *);
/* Ask driver to begin playing a buffer. */
- void (*start_output)(struct sparcaudio_driver *, __u8 *,
- unsigned long);
+ void (*start_output)(struct sparcaudio_driver *, __u8 *, unsigned long);
/* Ask driver to stop playing a buffer. */
void (*stop_output)(struct sparcaudio_driver *);
@@ -382,35 +394,125 @@ struct sparcaudio_operations
/* Get and set output mute */
int (*set_output_muted)(struct sparcaudio_driver *, int);
int (*get_output_muted)(struct sparcaudio_driver *);
+
+ /* Get and set output pause */
+ int (*set_output_pause)(struct sparcaudio_driver *, int);
+ int (*get_output_pause)(struct sparcaudio_driver *);
+
+ /* Get and set input pause */
+ int (*set_input_pause)(struct sparcaudio_driver *, int);
+ int (*get_input_pause)(struct sparcaudio_driver *);
+
+ /* Get and set output samples */
+ int (*set_output_samples)(struct sparcaudio_driver *, int);
+ int (*get_output_samples)(struct sparcaudio_driver *);
+
+ /* Get and set input samples */
+ int (*set_input_samples)(struct sparcaudio_driver *, int);
+ int (*get_input_samples)(struct sparcaudio_driver *);
+
+ /* Get and set output error */
+ int (*set_output_error)(struct sparcaudio_driver *, int);
+ int (*get_output_error)(struct sparcaudio_driver *);
+
+ /* Get and set input error */
+ int (*set_input_error)(struct sparcaudio_driver *, int);
+ int (*get_input_error)(struct sparcaudio_driver *);
+
+ /* Get supported encodings */
+ int (*get_formats)(struct sparcaudio_driver *);
};
-extern int register_sparcaudio_driver(struct sparcaudio_driver *);
-extern int unregister_sparcaudio_driver(struct sparcaudio_driver *);
+extern int register_sparcaudio_driver(struct sparcaudio_driver *, int);
+extern int unregister_sparcaudio_driver(struct sparcaudio_driver *, int);
extern void sparcaudio_output_done(struct sparcaudio_driver *, int);
-extern void sparcaudio_input_done(struct sparcaudio_driver *);
+extern void sparcaudio_input_done(struct sparcaudio_driver *, int);
extern int sparcaudio_init(void);
extern int amd7930_init(void);
extern int cs4231_init(void);
#endif
+/* Mixer helper ioctls */
+#define right(a) (((a >> 8) & 0xff) % 101)
+#define left(a) ((a & 0xff) % 101)
+
/* Macros to convert between mixer stereo volumes and gain (mono) */
-#define s_to_m(a) (((((a) >> 8) & 0x7f) + ((a) & 0x7f)) / 2)
-#define m_to_s(a) (((a) << 8) + (a))
+#define s_to_m(a) ((((left(a) + right(a)) * 255) / 200) % 256)
+#define m_to_s(a) ((a * 100 / 255) + ((a * 100 / 255) << 8))
/* convert mixer stereo volume to balance */
-#define s_to_b(a) (AUDIO_RIGHT_BALANCE * ((((a) >> 8) & 0xff) / (((((a) >> 8) & 0xff) + ((a) & 0xff)) / 2)))
+#define s_to_b(a) (s_to_g(a) == 0) ? 32 : ((left(a) * AUDIO_RIGHT_BALANCE / (left(a) + right(a))))
/* convert mixer stereo volume to audio gain */
-#define s_to_g(a) (((((a) >> 8) & 0xff) + ((a) & 0xff)) / 2)
+#define s_to_g(a) ((((right(a) + left(a)) * 255) / 200) % 256)
/* convert gain a and balance b to mixer volume */
-#define b_to_s(a,b) ((a * (b / AUDIO_RIGHT_BALANCE) << 8) + (a * (1 - (b / AUDIO_RIGHT_BALANCE))))
+#define b_to_s(a,b) (((((b * a * 200) / (AUDIO_RIGHT_BALANCE * 255)) % 100) << 8) + ((((AUDIO_RIGHT_BALANCE - b) * a * 200) / (AUDIO_RIGHT_BALANCE * 255)) % 100))
+
+/* Device minor numbers */
#define SPARCAUDIO_MIXER_MINOR 0
-#define SPARCAUDIO_DSP16_MINOR 1
+/* No sequencer (1) */
+/* No midi (2) */
#define SPARCAUDIO_DSP_MINOR 3
#define SPARCAUDIO_AUDIO_MINOR 4
-#define SPARCAUDIO_AUDIOCTL_MINOR 5
+#define SPARCAUDIO_DSP16_MINOR 5
#define SPARCAUDIO_STATUS_MINOR 6
+#define SPARCAUDIO_AUDIOCTL_MINOR 7
+/* No sequencer l2 (8) */
+/* No sound processor (9) */
+
+/* allocate 2^SPARCAUDIO_DEVICE_SHIFT minors per audio device */
+#define SPARCAUDIO_DEVICE_SHIFT 4
+
+/* With the coming of dummy devices this should perhaps be as high as 5? */
+#define SPARCAUDIO_MAX_DEVICES 3
+
+/* Streams crap for realaudio */
+
+typedef
+struct strevent {
+ struct strevent *se_next; /* next event for this stream or NULL*/
+ struct strevent *se_prev; /* previous event for this stream or last
+ * event if this is the first one*/
+ pid_t se_pid; /* process to be signaled */
+ short se_evs; /* events wanted */
+} strevent_t;
+
+typedef
+struct stdata
+{
+ struct stdata *sd_next ; /* all stdatas are linked together */
+ struct stdata *sd_prev ;
+ struct strevent *sd_siglist; /* processes to be sent SIGPOLL */
+ int sd_sigflags; /* logical OR of all siglist events */
+} stdata_t;
+
+#define I_NREAD _IOR('S',01, int)
+#define I_NREAD_SOLARIS (('S'<<8)|1)
+
+#define I_FLUSH _IO('S',05)
+#define I_FLUSH_SOLARIS (('S'<<8)|5)
+#define FLUSHR 1 /* flush read queue */
+#define FLUSHW 2 /* flush write queue */
+#define FLUSHRW 3 /* flush both queues */
+
+#define I_SETSIG _IO('S',011)
+#define I_SETSIG_SOLARIS (('S'<<8)|11)
+#define S_INPUT 0x01
+#define S_HIPRI 0x02
+#define S_OUTPUT 0x04
+#define S_MSG 0x08
+#define S_ERROR 0x0010
+#define S_HANGUP 0x0020
+#define S_RDNORM 0x0040
+#define S_WRNORM S_OUTPUT
+#define S_RDBAND 0x0080
+#define S_WRBAND 0x0100
+#define S_BANDURG 0x0200
+#define S_ALL 0x03FF
+
+#define I_GETSIG _IOR('S',012,int)
+#define I_GETSIG_SOLARIS (('S'<<8)|12)
#endif
diff --git a/include/asm-sparc/bitops.h b/include/asm-sparc/bitops.h
index 7c3e4d0da..fbaa0f005 100644
--- a/include/asm-sparc/bitops.h
+++ b/include/asm-sparc/bitops.h
@@ -1,4 +1,4 @@
-/* $Id: bitops.h,v 1.51 1998/07/26 03:05:37 davem Exp $
+/* $Id: bitops.h,v 1.54 1998/09/21 05:07:34 jj Exp $
* bitops.h: Bit string operations on the Sparc.
*
* Copyright 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -108,7 +108,7 @@ extern __inline__ unsigned long test_and_set_bit(unsigned long nr, __SMPVOL void
: "0" (mask), "r" (ADDR)
: "g3", "g4", "g5", "g7", "cc");
- return mask;
+ return mask != 0;
}
extern __inline__ void set_bit(unsigned long nr, __SMPVOL void *addr)
@@ -131,7 +131,7 @@ extern __inline__ unsigned long test_and_clear_bit(unsigned long nr, __SMPVOL vo
: "0" (mask), "r" (ADDR)
: "g3", "g4", "g5", "g7", "cc");
- return mask;
+ return mask != 0;
}
extern __inline__ void clear_bit(unsigned long nr, __SMPVOL void *addr)
@@ -154,7 +154,7 @@ extern __inline__ unsigned long test_and_change_bit(unsigned long nr, __SMPVOL v
: "0" (mask), "r" (ADDR)
: "g3", "g4", "g5", "g7", "cc");
- return mask;
+ return mask != 0;
}
extern __inline__ void change_bit(unsigned long nr, __SMPVOL void *addr)
diff --git a/include/asm-sparc/dma.h b/include/asm-sparc/dma.h
index cb45374d6..7c502a17a 100644
--- a/include/asm-sparc/dma.h
+++ b/include/asm-sparc/dma.h
@@ -1,4 +1,4 @@
-/* $Id: dma.h,v 1.26 1998/04/13 07:27:05 davem Exp $
+/* $Id: dma.h,v 1.28 1998/10/26 20:03:09 davem Exp $
* include/asm-sparc/dma.h
*
* Copyright 1995 (C) David S. Miller (davem@caip.rutgers.edu)
@@ -15,6 +15,22 @@
#include <asm/sbus.h>
#include <asm/delay.h>
#include <asm/oplib.h>
+#include <asm/system.h>
+#include <asm/spinlock.h>
+
+extern spinlock_t dma_spin_lock;
+
+static __inline__ unsigned long claim_dma_lock(void)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&dma_spin_lock, flags);
+ return flags;
+}
+
+static __inline__ void release_dma_lock(unsigned long flags)
+{
+ spin_unlock_irqrestore(&dma_spin_lock, flags);
+}
/* These are irrelevant for Sparc DMA, but we leave it in so that
* things can compile.
diff --git a/include/asm-sparc/ebus.h b/include/asm-sparc/ebus.h
new file mode 100644
index 000000000..2c8aa9fc6
--- /dev/null
+++ b/include/asm-sparc/ebus.h
@@ -0,0 +1,101 @@
+/* $Id: ebus.h,v 1.1 1998/09/22 05:54:41 jj Exp $
+ * ebus.h: PCI to Ebus pseudo driver software state.
+ *
+ * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
+ *
+ * Adopted for sparc by V. Roganov and G. Raiko.
+ */
+
+#ifndef __SPARC_EBUS_H
+#define __SPARC_EBUS_H
+
+#include <asm/oplib.h>
+
+struct linux_ebus_child {
+ struct linux_ebus_child *next;
+ struct linux_ebus_device *parent;
+ struct linux_ebus *bus;
+ int prom_node;
+ char prom_name[64];
+ unsigned long base_address[PROMREG_MAX];
+ int num_addrs;
+ unsigned int irqs[PROMINTR_MAX];
+ int num_irqs;
+};
+
+struct linux_ebus_device {
+ struct linux_ebus_device *next;
+ struct linux_ebus_child *children;
+ struct linux_ebus *bus;
+ int prom_node;
+ char prom_name[64];
+ unsigned long base_address[PROMREG_MAX];
+ int num_addrs;
+ unsigned int irqs[PROMINTR_MAX];
+ int num_irqs;
+};
+
+struct linux_ebus {
+ struct linux_ebus *next;
+ struct linux_ebus_device *devices;
+ struct linux_pbm_info *parent;
+ struct pci_dev *self;
+ int prom_node;
+ char prom_name[64];
+ struct linux_prom_ebus_ranges ebus_ranges[PROMREG_MAX];
+ int num_ebus_ranges;
+};
+
+struct linux_ebus_dma {
+ unsigned int dcsr;
+ unsigned int dacr;
+ unsigned int dbcr;
+};
+
+#define EBUS_DCSR_INT_PEND 0x00000001
+#define EBUS_DCSR_ERR_PEND 0x00000002
+#define EBUS_DCSR_DRAIN 0x00000004
+#define EBUS_DCSR_INT_EN 0x00000010
+#define EBUS_DCSR_RESET 0x00000080
+#define EBUS_DCSR_WRITE 0x00000100
+#define EBUS_DCSR_EN_DMA 0x00000200
+#define EBUS_DCSR_CYC_PEND 0x00000400
+#define EBUS_DCSR_DIAG_RD_DONE 0x00000800
+#define EBUS_DCSR_DIAG_WR_DONE 0x00001000
+#define EBUS_DCSR_EN_CNT 0x00002000
+#define EBUS_DCSR_TC 0x00004000
+#define EBUS_DCSR_DIS_CSR_DRN 0x00010000
+#define EBUS_DCSR_BURST_SZ_MASK 0x000c0000
+#define EBUS_DCSR_BURST_SZ_1 0x00080000
+#define EBUS_DCSR_BURST_SZ_4 0x00000000
+#define EBUS_DCSR_BURST_SZ_8 0x00040000
+#define EBUS_DCSR_BURST_SZ_16 0x000c0000
+#define EBUS_DCSR_DIAG_EN 0x00100000
+#define EBUS_DCSR_DIS_ERR_PEND 0x00400000
+#define EBUS_DCSR_TCI_DIS 0x00800000
+#define EBUS_DCSR_EN_NEXT 0x01000000
+#define EBUS_DCSR_DMA_ON 0x02000000
+#define EBUS_DCSR_A_LOADED 0x04000000
+#define EBUS_DCSR_NA_LOADED 0x08000000
+#define EBUS_DCSR_DEV_ID_MASK 0xf0000000
+
+extern struct linux_ebus *ebus_chain;
+
+extern void ebus_init(void);
+
+#define for_each_ebus(bus) \
+ for((bus) = ebus_chain; (bus); (bus) = (bus)->next)
+
+#define for_each_ebusdev(dev, bus) \
+ for((dev) = (bus)->devices; (dev); (dev) = (dev)->next)
+
+#define for_each_edevchild(dev, child) \
+ for((child) = (dev)->children; (child); (child) = (child)->next)
+
+/* P3: Actually unused in sparc */
+#define for_all_ebusdev(dev, bus) \
+ for ((bus) = ebus_chain, ((dev) = (bus) ? (bus)->devices : 0); \
+ (bus); ((dev) = (dev)->next ? (dev)->next : \
+ ((bus) = (bus)->next, (bus) ? (bus)->devices : 0)))
+
+#endif /* !(__SPARC_EBUS_H) */
diff --git a/include/asm-sparc/elf.h b/include/asm-sparc/elf.h
index fb680d30f..acc8f418e 100644
--- a/include/asm-sparc/elf.h
+++ b/include/asm-sparc/elf.h
@@ -1,4 +1,4 @@
-/* $Id: elf.h,v 1.17 1998/05/11 08:40:10 davem Exp $ */
+/* $Id: elf.h,v 1.20 1998/09/14 09:11:10 davem Exp $ */
#ifndef __ASMSPARC_ELF_H
#define __ASMSPARC_ELF_H
@@ -10,12 +10,51 @@
#include <asm/ptrace.h>
#include <asm/mbus.h>
+/* For the most part we present code dumps in the format
+ * Solaris does.
+ */
typedef unsigned long elf_greg_t;
-
-#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
+#define ELF_NGREG 38
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-typedef unsigned long elf_fpregset_t;
+/* Format is:
+ * G0 --> G7
+ * O0 --> O7
+ * L0 --> L7
+ * I0 --> I7
+ * PSR, PC, nPC, Y, WIM, TBR
+ */
+#define ELF_CORE_COPY_REGS(__elf_regs, __pt_regs) \
+do { unsigned long *dest = &(__elf_regs[0]); \
+ struct pt_regs *src = (__pt_regs); \
+ unsigned long *sp; \
+ memcpy(&dest[0], &src->u_regs[0], \
+ sizeof(unsigned long) * 16); \
+ /* Don't try this at home kids... */ \
+ set_fs(USER_DS); \
+ sp = (unsigned long *) src->u_regs[14]; \
+ copy_from_user(&dest[16], sp, \
+ sizeof(unsigned long) * 16); \
+ set_fs(KERNEL_DS); \
+ dest[32] = src->psr; \
+ dest[33] = src->pc; \
+ dest[34] = src->npc; \
+ dest[35] = src->y; \
+ dest[36] = dest[37] = 0; /* XXX */ \
+} while(0);
+
+typedef struct {
+ union {
+ unsigned long pr_regs[32];
+ double pr_dregs[16];
+ } pr_fr;
+ unsigned long __unused;
+ unsigned long pr_fsr;
+ unsigned char pr_qcnt;
+ unsigned char pr_q_entrysize;
+ unsigned char pr_en;
+ unsigned int pr_q[64];
+} elf_fpregset_t;
/*
* This is used to ensure we don't load something for the wrong architecture.
@@ -42,7 +81,7 @@ typedef unsigned long elf_fpregset_t;
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
-#define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
+#define ELF_ET_DYN_BASE (0x08000000)
/* This yields a mask that user programs can use to figure out what
instruction set this cpu supports. This can NOT be done in userspace
diff --git a/include/asm-sparc/fbio.h b/include/asm-sparc/fbio.h
index 443e3b184..41329f311 100644
--- a/include/asm-sparc/fbio.h
+++ b/include/asm-sparc/fbio.h
@@ -35,6 +35,7 @@
/* Does not seem to be listed in the Sun file either */
#define FBTYPE_CREATOR 22
+#define FBTYPE_PCI_IGA1682 23
/* fbio ioctls */
/* Returned by FBIOGTYPE */
diff --git a/include/asm-sparc/fcntl.h b/include/asm-sparc/fcntl.h
index 775a800d4..84367de40 100644
--- a/include/asm-sparc/fcntl.h
+++ b/include/asm-sparc/fcntl.h
@@ -1,4 +1,4 @@
-/* $Id: fcntl.h,v 1.9 1997/02/04 07:29:20 davem Exp $ */
+/* $Id: fcntl.h,v 1.11 1998/10/26 20:03:10 davem Exp $ */
#ifndef _SPARC_FCNTL_H
#define _SPARC_FCNTL_H
@@ -17,6 +17,8 @@
#define O_NONBLOCK 0x4000
#define O_NDELAY (0x0004 | O_NONBLOCK)
#define O_NOCTTY 0x8000 /* not fcntl */
+#define O_DIRECTORY 0x10000 /* must be a directory */
+#define O_NOFOLLOW 0x20000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-sparc/floppy.h b/include/asm-sparc/floppy.h
index 2c57f09d3..a653498c9 100644
--- a/include/asm-sparc/floppy.h
+++ b/include/asm-sparc/floppy.h
@@ -75,10 +75,6 @@ static struct sun_floppy_ops sun_fdops;
#define FLOPPY_MOTOR_MASK 0x10
-/* It's all the same... */
-#define virt_to_bus(x) (x)
-#define bus_to_virt(x) (x)
-
/* XXX This isn't really correct. XXX */
#define get_dma_residue(x) (0)
@@ -322,6 +318,8 @@ static int sun_floppy_init(void)
"floppy",
fd_regs[0].which_io,
0x0);
+ release_region((long)sun_fdc & PAGE_MASK,
+ (((long)sun_fdc & ~PAGE_MASK) + fd_regs[0].reg_size + PAGE_SIZE - 1) & PAGE_MASK);
/* Last minute sanity check... */
if(sun_fdc->status_82072 == 0xff) {
sun_fdc = NULL;
diff --git a/include/asm-sparc/hardirq.h b/include/asm-sparc/hardirq.h
index 8b0f4f9e2..359ad6e4d 100644
--- a/include/asm-sparc/hardirq.h
+++ b/include/asm-sparc/hardirq.h
@@ -1,6 +1,7 @@
/* hardirq.h: 32-bit Sparc hard IRQ support.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
+ * Copyright (C) 1998 Anton Blanchard (anton@progsoc.uts.edu.au)
*/
#ifndef __SPARC_HARDIRQ_H
@@ -9,19 +10,25 @@
#include <linux/tasks.h>
extern unsigned int local_irq_count[NR_CPUS];
-#define in_interrupt() (local_irq_count[smp_processor_id()] != 0)
+
+/*
+ * Are we in an interrupt context? Either doing bottom half
+ * or hardware interrupt processing?
+ */
+#define in_interrupt() ({ int __cpu = smp_processor_id(); \
+ (local_irq_count[__cpu] + local_bh_count[__cpu] != 0); })
#ifndef __SMP__
#define hardirq_trylock(cpu) (local_irq_count[cpu] == 0)
-#define hardirq_endlock(cpu) do { } while(0)
+#define hardirq_endlock(cpu) do { } while (0)
#define hardirq_enter(cpu) (local_irq_count[cpu]++)
#define hardirq_exit(cpu) (local_irq_count[cpu]--)
-#define synchronize_irq() do { } while(0)
+#define synchronize_irq() barrier()
-#else /* __SMP__ */
+#else
#include <asm/atomic.h>
#include <asm/spinlock.h>
@@ -32,37 +39,33 @@ extern unsigned char global_irq_holder;
extern spinlock_t global_irq_lock;
extern atomic_t global_irq_count;
-#define release_irqlock(cpu) \
-do { if(global_irq_holder == (unsigned char) cpu) { \
- global_irq_holder = NO_PROC_ID; \
- spin_unlock(&global_irq_lock); \
- } \
-} while(0)
-
-/* Ordering of the counter bumps is _deadly_ important. */
-#define hardirq_enter(cpu) \
- do { ++local_irq_count[cpu]; atomic_inc(&global_irq_count); } while(0)
-
-#define hardirq_exit(cpu) \
- do { atomic_dec(&global_irq_count); --local_irq_count[cpu]; } while(0)
-
-#define hardirq_trylock(cpu) \
-({ unsigned long flags; int ret = 1; \
- __save_flags(flags); \
- __cli(); \
- if(atomic_add_return(1, &global_irq_count) != 1 || \
- *(((unsigned char *)(&global_irq_lock)))) { \
- atomic_dec(&global_irq_count); \
- __restore_flags(flags); \
- ret = 0; \
- } else { \
- ++local_irq_count[cpu]; \
- __sti(); \
- } \
- ret; \
-})
-
-#define hardirq_endlock(cpu) do { __cli(); hardirq_exit(cpu); __sti(); } while(0)
+static inline void release_irqlock(int cpu)
+{
+ /* if we didn't own the irq lock, just ignore.. */
+ if (global_irq_holder == (unsigned char) cpu) {
+ global_irq_holder = NO_PROC_ID;
+ spin_unlock(&global_irq_lock);
+ }
+}
+
+static inline void hardirq_enter(int cpu)
+{
+ ++local_irq_count[cpu];
+ atomic_inc(&global_irq_count);
+}
+
+static inline void hardirq_exit(int cpu)
+{
+ atomic_dec(&global_irq_count);
+ --local_irq_count[cpu];
+}
+
+static inline int hardirq_trylock(int cpu)
+{
+ return !atomic_read(&global_irq_count) && !*(((volatile unsigned char *)(&global_irq_lock)));
+}
+
+#define hardirq_endlock(cpu) do { } while (0)
extern void synchronize_irq(void);
diff --git a/include/asm-sparc/io-unit.h b/include/asm-sparc/io-unit.h
index d76219df4..aac5f374c 100644
--- a/include/asm-sparc/io-unit.h
+++ b/include/asm-sparc/io-unit.h
@@ -7,6 +7,7 @@
#include <asm/page.h>
#include <asm/spinlock.h>
+#include <asm/pgtable.h>
/* The io-unit handles all virtual to physical address translations
* that occur between the SBUS and physical memory. Access by
@@ -50,4 +51,8 @@ struct iounit_struct {
#define IOUNIT_BMAPM_START IOUNIT_BMAP2_END
#define IOUNIT_BMAPM_END ((IOUNIT_DMA_SIZE - IOUNIT_DVMA_SIZE) >> PAGE_SHIFT)
+extern __u32 iounit_map_dma_init(struct linux_sbus *, int);
+#define iounit_map_dma_finish(sbus, addr, len) mmu_release_scsi_one(addr, len, sbus)
+extern __u32 iounit_map_dma_page(__u32, void *, struct linux_sbus *);
+
#endif /* !(_SPARC_IO_UNIT_H) */
diff --git a/include/asm-sparc/io.h b/include/asm-sparc/io.h
index 93e5fde77..a26453b2f 100644
--- a/include/asm-sparc/io.h
+++ b/include/asm-sparc/io.h
@@ -1,4 +1,4 @@
-/* $Id: io.h,v 1.15 1998/01/30 10:59:51 jj Exp $ */
+/* $Id: io.h,v 1.18 1998/09/21 05:07:17 jj Exp $ */
#ifndef __SPARC_IO_H
#define __SPARC_IO_H
@@ -15,77 +15,84 @@
* space only works on sun4's
*/
-extern __inline__ unsigned long inb_local(unsigned long addr)
+#define virt_to_bus virt_to_phys
+
+extern __inline__ unsigned flip_dword (unsigned d) {
+ return ((d&0xff)<<24) | (((d>>8)&0xff)<<16) | (((d>>16)&0xff)<<8)| ((d>>24)&0xff);
+}
+
+extern __inline__ unsigned short flip_word (unsigned short d) {
+ return ((d&0xff) << 8) | ((d>>8)&0xff);
+}
+
+extern __inline__ unsigned long readb(unsigned long addr)
{
- return 0;
+ return *(volatile unsigned char*)addr;
}
-extern __inline__ void outb_local(unsigned char b, unsigned long addr)
+extern __inline__ unsigned long readw(unsigned long addr)
{
- return;
+ return flip_word(*(volatile unsigned short*)addr);
}
-extern __inline__ unsigned long inb(unsigned long addr)
+extern __inline__ unsigned long readl(unsigned long addr)
{
- return 0;
+ return flip_dword(*(volatile unsigned long*)addr);
}
-extern __inline__ unsigned long inw(unsigned long addr)
+extern __inline__ void writeb(unsigned short b, unsigned long addr)
{
- return 0;
+ *(volatile unsigned char*)addr = b;
}
-extern __inline__ unsigned long inl(unsigned long addr)
+extern __inline__ void writew(unsigned short b, unsigned long addr)
{
- return 0;
+ *(volatile unsigned short*)addr = flip_word(b);
}
-extern __inline__ void outb(unsigned char b, unsigned long addr)
+extern __inline__ void writel(unsigned int b, unsigned long addr)
{
- return;
+ *(volatile unsigned long*)addr = flip_dword(b);
}
-extern __inline__ void outw(unsigned short b, unsigned long addr)
+extern __inline__ unsigned long inb_local(unsigned long addr)
{
- return;
+ return readb(addr);
}
-extern __inline__ void outl(unsigned int b, unsigned long addr)
+extern __inline__ void outb_local(unsigned char b, unsigned long addr)
{
- return;
+ return writeb(b,addr);
}
-/*
- * Memory functions
- */
-extern __inline__ unsigned long readb(unsigned long addr)
+extern __inline__ unsigned long inb(unsigned long addr)
{
- return 0;
+ return readb(addr);
}
-extern __inline__ unsigned long readw(unsigned long addr)
+extern __inline__ unsigned long inw(unsigned long addr)
{
- return 0;
+ return readw(addr);
}
-extern __inline__ unsigned long readl(unsigned long addr)
+extern __inline__ unsigned long inl(unsigned long addr)
{
- return 0;
+ return readl(addr);
}
-extern __inline__ void writeb(unsigned short b, unsigned long addr)
+extern __inline__ void outb(unsigned char b, unsigned long addr)
{
- return;
+ return writeb(b,addr);
}
-extern __inline__ void writew(unsigned short b, unsigned long addr)
+extern __inline__ void outw(unsigned short b, unsigned long addr)
{
- return;
+ return writew(b,addr);
}
-extern __inline__ void writel(unsigned int b, unsigned long addr)
+extern __inline__ void outl(unsigned int b, unsigned long addr)
{
- return;
+ return writel(b,addr);
}
#define inb_p inb
diff --git a/include/asm-sparc/ioctls.h b/include/asm-sparc/ioctls.h
index 5cd982c28..080be851c 100644
--- a/include/asm-sparc/ioctls.h
+++ b/include/asm-sparc/ioctls.h
@@ -108,6 +108,8 @@
#define TIOCSERGETLSR 0x5459 /* Get line status register */
#define TIOCSERGETMULTI 0x545A /* Get multiport config */
#define TIOCSERSETMULTI 0x545B /* Set multiport config */
+#define TIOCMIWAIT 0x545C /* Wait input */
+#define TIOCGICOUNT 0x545D /* Read serial port inline interrupt counts */
/* Kernel definitions */
#ifdef __KERNEL__
diff --git a/include/asm-sparc/keyboard.h b/include/asm-sparc/keyboard.h
new file mode 100644
index 000000000..9dd63c3cb
--- /dev/null
+++ b/include/asm-sparc/keyboard.h
@@ -0,0 +1,52 @@
+/* $Id: keyboard.h,v 1.1 1998/09/22 05:54:42 jj Exp $
+ * linux/include/asm-sparc/keyboard.h
+ *
+ * sparc64 Created Aug 29 1997 by Eddie C. Dost (ecd@skynet.be)
+ */
+
+/*
+ * This file contains the Ultra/PCI architecture specific keyboard definitions
+ */
+
+#ifndef _SPARC_KEYBOARD_H
+#define _SPARC_KEYBOARD_H 1
+
+#ifdef __KERNEL__
+
+#define KEYBOARD_IRQ 13
+#define DISABLE_KBD_DURING_INTERRUPTS 0
+
+extern int pcikbd_setkeycode(unsigned int scancode, unsigned int keycode);
+extern int pcikbd_getkeycode(unsigned int scancode);
+extern int pcikbd_pretranslate(unsigned char scancode, char raw_mode);
+extern int pcikbd_translate(unsigned char scancode, unsigned char *keycode,
+ char raw_mode);
+extern char pcikbd_unexpected_up(unsigned char keycode);
+extern void pcikbd_leds(unsigned char leds);
+extern void pcikbd_init_hw(void);
+extern unsigned char pcikbd_sysrq_xlate[128];
+
+#define kbd_setkeycode pcikbd_setkeycode
+#define kbd_getkeycode pcikbd_getkeycode
+#define kbd_pretranslate pcikbd_pretranslate
+#define kbd_translate pcikbd_translate
+#define kbd_unexpected_up pcikbd_unexpected_up
+#define kbd_leds pcikbd_leds
+#define kbd_init_hw pcikbd_init_hw
+#define kbd_sysrq_xlate pcikbd_sysrq_xlate
+#define kbd_init pcikbd_init
+
+#define compute_shiftstate pci_compute_shiftstate
+#define keyboard_wait_for_keypress pci_wait_for_keypress
+#define getkeycode pci_getkeycode
+#define setkeycode pci_setkeycode
+#define getledstate pci_getledstate
+#define setledstate pci_setledstate
+#define register_leds pci_register_leds
+
+/* #define SYSRQ_KEY 0x54 */ /* sparc64 */
+#define SYSRQ_KEY 0x63 /* sparc */
+
+#endif /* __KERNEL__ */
+
+#endif /* !(_SPARC_KEYBOARD_H) */
diff --git a/include/asm-sparc/linux_logo.h b/include/asm-sparc/linux_logo.h
index 2d400d9fd..456c97350 100644
--- a/include/asm-sparc/linux_logo.h
+++ b/include/asm-sparc/linux_logo.h
@@ -1,4 +1,4 @@
-/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:40 jj Exp $
+/* $Id: linux_logo.h,v 1.6 1998/08/20 04:44:39 ecd Exp $
* include/asm-sparc/linux_logo.h: This is a linux logo
* to be displayed on boot.
*
@@ -1026,10 +1026,10 @@ unsigned char linux_logo_bw[] __initdata = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
-unsigned char linux_logo16_red[0];
-unsigned char linux_logo16_green[0];
-unsigned char linux_logo16_blue[0];
-unsigned char linux_logo16[0];
+unsigned char linux_logo16_red[1];
+unsigned char linux_logo16_green[1];
+unsigned char linux_logo16_blue[1];
+unsigned char linux_logo16[1];
#else
diff --git a/include/asm-sparc/mostek.h b/include/asm-sparc/mostek.h
index 407869348..e83d44d3c 100644
--- a/include/asm-sparc/mostek.h
+++ b/include/asm-sparc/mostek.h
@@ -1,4 +1,4 @@
-/* $Id: mostek.h,v 1.9 1998/07/28 16:53:25 jj Exp $
+/* $Id: mostek.h,v 1.10 1998/08/18 15:03:11 davem Exp $
* mostek.h: Describes the various Mostek time of day clock registers.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
diff --git a/include/asm-sparc/namei.h b/include/asm-sparc/namei.h
index 401e80820..29f672eb5 100644
--- a/include/asm-sparc/namei.h
+++ b/include/asm-sparc/namei.h
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.11 1998/01/15 12:58:24 jj Exp $
+/* $Id: namei.h,v 1.12 1998/10/28 08:13:42 jj Exp $
* linux/include/asm-sparc/namei.h
*
* Routines to handle famous /usr/gnemul/s*.
@@ -12,7 +12,7 @@
#define SPARC_SOL_EMUL "usr/gnemul/solaris/"
static inline struct dentry *
-__sparc_lookup_dentry(const char *name, int follow_link)
+__sparc_lookup_dentry(const char *name, int lookup_flags)
{
struct dentry *base;
char *emul;
@@ -29,18 +29,20 @@ __sparc_lookup_dentry(const char *name, int follow_link)
return NULL;
}
- base = lookup_dentry (emul, dget (current->fs->root), 1);
+ base = lookup_dentry (emul,
+ dget (current->fs->root),
+ (LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_SLASHOK));
if (IS_ERR (base)) return NULL;
- base = lookup_dentry (name, base, follow_link);
+ base = lookup_dentry (name, base, lookup_flags);
if (IS_ERR (base)) return NULL;
if (!base->d_inode) {
struct dentry *fromroot;
- fromroot = lookup_dentry (name, dget (current->fs->root), follow_link);
+ fromroot = lookup_dentry (name, dget (current->fs->root), lookup_flags);
if (IS_ERR (fromroot)) return base;
@@ -55,9 +57,9 @@ __sparc_lookup_dentry(const char *name, int follow_link)
return base;
}
-#define __prefix_lookup_dentry(name, follow_link) \
+#define __prefix_lookup_dentry(name, lookup_flags) \
if (current->personality) { \
- dentry = __sparc_lookup_dentry (name, follow_link); \
+ dentry = __sparc_lookup_dentry (name, lookup_flags); \
if (dentry) return dentry; \
}
diff --git a/include/asm-sparc/openprom.h b/include/asm-sparc/openprom.h
index 91f5ffb68..c88dc02a1 100644
--- a/include/asm-sparc/openprom.h
+++ b/include/asm-sparc/openprom.h
@@ -1,4 +1,4 @@
-/* $Id: openprom.h,v 1.20 1997/04/10 06:41:06 davem Exp $ */
+/* $Id: openprom.h,v 1.23 1998/09/21 05:07:26 jj Exp $ */
#ifndef __SPARC_OPENPROM_H
#define __SPARC_OPENPROM_H
@@ -205,6 +205,55 @@ struct linux_prom_ranges {
unsigned int or_size;
};
+/* Ranges and reg properties are a bit different for PCI. */
+struct linux_prom_pci_registers {
+ /*
+ * We don't know what information this field contain.
+ * We guess, PCI device function is in bits 15:8
+ * So, ...
+ */
+ unsigned int which_io; /* Let it be which_io */
+
+ unsigned int phys_hi;
+ unsigned int phys_lo;
+
+ unsigned int size_hi;
+ unsigned int size_lo;
+};
+
+struct linux_prom_pci_ranges {
+ unsigned int child_phys_hi; /* Only certain bits are encoded here. */
+ unsigned int child_phys_mid;
+ unsigned int child_phys_lo;
+
+ unsigned int parent_phys_hi;
+ unsigned int parent_phys_lo;
+
+ unsigned int size_hi;
+ unsigned int size_lo;
+};
+
+struct linux_prom_pci_assigned_addresses {
+ unsigned int which_io;
+
+ unsigned int phys_hi;
+ unsigned int phys_lo;
+
+ unsigned int size_hi;
+ unsigned int size_lo;
+};
+
+struct linux_prom_ebus_ranges {
+ unsigned int child_phys_hi;
+ unsigned int child_phys_lo;
+
+ unsigned int parent_phys_hi;
+ unsigned int parent_phys_mid;
+ unsigned int parent_phys_lo;
+
+ unsigned int size;
+};
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(__SPARC_OPENPROM_H) */
diff --git a/include/asm-sparc/oplib.h b/include/asm-sparc/oplib.h
index 2d1094b07..396f9ef07 100644
--- a/include/asm-sparc/oplib.h
+++ b/include/asm-sparc/oplib.h
@@ -1,4 +1,4 @@
-/* $Id: oplib.h,v 1.19 1998/01/30 10:59:53 jj Exp $
+/* $Id: oplib.h,v 1.20 1998/09/17 11:05:25 jj Exp $
* oplib.h: Describes the interface and available routines in the
* Linux Prom library.
*
@@ -280,6 +280,9 @@ extern char *prom_firstprop(int node, char *buffer);
*/
extern char *prom_nextprop(int node, char *prev_property, char *buffer);
+/* Returns phandle of the path specified */
+extern int prom_finddevice(char *name);
+
/* Returns 1 if the specified node has given property. */
extern int prom_node_has_property(int node, char *property);
diff --git a/include/asm-sparc/pbm.h b/include/asm-sparc/pbm.h
new file mode 100644
index 000000000..a8ef7cc72
--- /dev/null
+++ b/include/asm-sparc/pbm.h
@@ -0,0 +1,56 @@
+/* $Id: pbm.h,v 1.1 1998/09/22 05:54:44 jj Exp $
+ * pbm.h: PCI bus module pseudo driver software state
+ * Adopted from sparc64 by V. Roganov and G. Raiko
+ *
+ * Original header:
+ * pbm.h: U2P PCI bus module pseudo driver software state.
+ *
+ * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
+ */
+
+#ifndef __SPARC_PBM_H
+#define __SPARC_PBM_H
+
+#include <linux/pci.h>
+#include <asm/oplib.h>
+
+struct linux_pbm_info;
+
+/* This is what we use to determine what the PROM has assigned so
+ * far, so that we can perform assignments for addresses which
+ * were not taken care of by OBP. See psycho.c for details.
+ * Per-PBM these are ordered by start address.
+ */
+struct pci_vma {
+ struct pci_vma *next;
+ struct linux_pbm_info *pbm;
+ unsigned int start;
+ unsigned int end;
+ unsigned int offset;
+ unsigned int _pad;
+};
+
+struct linux_pbm_info {
+ struct pci_vma *IO_assignments;
+ struct pci_vma *MEM_assignments;
+ int prom_node;
+ char prom_name[64];
+ struct linux_prom_pci_ranges pbm_ranges[PROMREG_MAX];
+ int num_pbm_ranges;
+
+ /* Now things for the actual PCI bus probes. */
+ unsigned int pci_first_busno;
+ unsigned int pci_last_busno;
+ struct pci_bus pci_bus;
+};
+
+/* PCI devices which are not bridges have this placed in their pci_dev
+ * sysdata member. This makes OBP aware PCI device drivers easier to
+ * code.
+ */
+struct pcidev_cookie {
+ struct linux_pbm_info *pbm;
+ int prom_node;
+};
+
+#endif /* !(__SPARC_PBM_H) */
diff --git a/include/asm-sparc/pcic.h b/include/asm-sparc/pcic.h
new file mode 100644
index 000000000..c0d4dbbf8
--- /dev/null
+++ b/include/asm-sparc/pcic.h
@@ -0,0 +1,106 @@
+/* $Id: pcic.h,v 1.1 1998/09/22 05:54:39 jj Exp $
+ * pcic.h: JavaEngine 1 specific PCI definitions.
+ *
+ * Copyright (C) 1998 V. Roganov and G. Raiko
+ */
+
+#ifndef __SPARC_PCIC_H
+#define __SPARC_PCIC_H
+
+#include <linux/types.h>
+#include <linux/smp.h>
+#include <linux/smp_lock.h>
+#include <linux/pci.h>
+#include <asm/pbm.h>
+
+struct linux_pcic {
+ unsigned long pcic_regs;
+ unsigned long pcic_io;
+ unsigned long pcic_io_phys;
+ unsigned long pcic_mapped_io;
+ unsigned long pcic_config_space_addr;
+ unsigned long pcic_config_space_data;
+ struct linux_pbm_info pbm;
+};
+
+extern unsigned long pcic_alloc_io(unsigned long* addr);
+extern void pcic_probe(void);
+extern void sun4m_pci_init_IRQ(void);
+
+/* Size of PCI Space */
+#define PCI_SPACE_SIZE 0x1000000 /* 16 MB */
+
+/* PCIC Register Set. */
+#define PCI_DIAGNOSTIC_0 0x40 /* 32 bits */
+#define PCI_SIZE_0 0x44 /* 32 bits */
+#define PCI_SIZE_1 0x48 /* 32 bits */
+#define PCI_SIZE_2 0x4c /* 32 bits */
+#define PCI_SIZE_3 0x50 /* 32 bits */
+#define PCI_SIZE_4 0x54 /* 32 bits */
+#define PCI_SIZE_5 0x58 /* 32 bits */
+#define PCI_PIO_CONTROL 0x60 /* 8 bits */
+#define PCI_DVMA_CONTROL 0x62 /* 8 bits */
+#define PCI_DVMA_CONTROL_INACTIVITY_REQ (1<<0)
+#define PCI_DVMA_CONTROL_IOTLB_ENABLE (1<<0)
+#define PCI_DVMA_CONTROL_IOTLB_DISABLE 0
+#define PCI_DVMA_CONTROL_INACTIVITY_ACK (1<<4)
+#define PCI_INTERRUPT_CONTROL 0x63 /* 8 bits */
+#define PCI_CPU_INTERRUPT_PENDING 0x64 /* 32 bits */
+#define PCI_DIAGNOSTIC_1 0x68 /* 16 bits */
+#define PCI_SOFTWARE_INT_CLEAR 0x6a /* 16 bits */
+#define PCI_SOFTWARE_INT_SET 0x6e /* 16 bits */
+#define PCI_SYS_INT_PENDING 0x70 /* 32 bits */
+#define PCI_SYS_INT_TARGET_MASK 0x74 /* 32 bits */
+#define PCI_SYS_INT_TARGET_MASK_CLEAR 0x78 /* 32 bits */
+#define PCI_SYS_INT_TARGET_MASK_SET 0x7c /* 32 bits */
+#define PCI_SYS_INT_PENDING_CLEAR 0x83 /* 8 bits */
+#define PCI_IOTLB_CONTROL 0x84 /* 8 bits */
+#define PCI_INT_SELECT_LO 0x88 /* 16 bits */
+#define PCI_ARBITRATION_SELECT 0x8a /* 16 bits */
+#define PCI_INT_SELECT_HI 0x8c /* 16 bits */
+#define PCI_HW_INT_OUTPUT 0x8e /* 16 bits */
+#define PCI_IOTLB_RAM_INPUT 0x90 /* 32 bits */
+#define PCI_IOTLB_CAM_INPUT 0x94 /* 32 bits */
+#define PCI_IOTLB_RAM_OUTPUT 0x98 /* 32 bits */
+#define PCI_IOTLB_CAM_OUTPUT 0x9c /* 32 bits */
+#define PCI_SMBAR0 0xa0 /* 8 bits */
+#define PCI_MSIZE0 0xa1 /* 8 bits */
+#define PCI_PMBAR0 0xa2 /* 8 bits */
+#define PCI_SMBAR1 0xa4 /* 8 bits */
+#define PCI_MSIZE1 0xa5 /* 8 bits */
+#define PCI_PMBAR1 0xa6 /* 8 bits */
+#define PCI_SIBAR 0xa8 /* 8 bits */
+#define PCI_SIBAR_ADDRESS_MASK 0xf
+#define PCI_ISIZE 0xa9 /* 8 bits */
+#define PCI_ISIZE_16M 0xf
+#define PCI_ISIZE_32M 0xe
+#define PCI_ISIZE_64M 0xc
+#define PCI_ISIZE_128M 0x8
+#define PCI_ISIZE_256M 0x0
+#define PCI_PIBAR 0xaa /* 8 bits */
+#define PCI_CPU_COUNTER_LIMIT_HI 0xac /* 32 bits */
+#define PCI_CPU_COUNTER_LIMIT_LO 0xb0 /* 32 bits */
+#define PCI_CPU_COUNTER_LIMIT 0xb4 /* 32 bits */
+#define PCI_SYS_LIMIT 0xb8 /* 32 bits */
+#define PCI_SYS_COUNTER 0xbc /* 32 bits */
+#define PCI_SYS_COUNTER_OVERFLOW (1<<31) /* Limit reached */
+#define PCI_SYS_LIMIT_PSEUDO 0xc0 /* 32 bits */
+#define PCI_USER_TIMER_CONTROL 0xc4 /* 8 bits */
+#define PCI_USER_TIMER_CONFIG 0xc5 /* 8 bits */
+#define PCI_COUNTER_IRQ 0xc6 /* 8 bits */
+#define PCI_COUNTER_IRQ_SET(sys_irq, cpu_irq) ((((sys_irq) & 0xf) << 4) | \
+ ((cpu_irq) & 0xf))
+#define PCI_COUNTER_IRQ_SYS(v) (((v) >> 4) & 0xf)
+#define PCI_COUNTER_IRQ_CPU(v) ((v) & 0xf)
+#define PCI_PIO_ERROR_COMMAND 0xc7 /* 8 bits */
+#define PCI_PIO_ERROR_ADDRESS 0xc8 /* 32 bits */
+#define PCI_IOTLB_ERROR_ADDRESS 0xcc /* 32 bits */
+#define PCI_SYS_STATUS 0xd0 /* 8 bits */
+#define PCI_SYS_STATUS_RESET_ENABLE (1<<0)
+#define PCI_SYS_STATUS_RESET (1<<1)
+#define PCI_SYS_STATUS_WATCHDOG_RESET (1<<4)
+#define PCI_SYS_STATUS_PCI_RESET (1<<5)
+#define PCI_SYS_STATUS_PCI_RESET_ENABLE (1<<6)
+#define PCI_SYS_STATUS_PCI_SATTELITE_MODE (1<<7)
+
+#endif /* !(__SPARC_PCIC_H) */
diff --git a/include/asm-sparc/perfctr.h b/include/asm-sparc/perfctr.h
new file mode 100644
index 000000000..67756e808
--- /dev/null
+++ b/include/asm-sparc/perfctr.h
@@ -0,0 +1,101 @@
+/*----------------------------------------
+ PERFORMANCE INSTRUMENTATION
+ Guillaume Thouvenin 08/10/98
+ David S. Miller 10/06/98
+ ---------------------------------------*/
+#ifndef PERF_COUNTER_API
+#define PERF_COUNTER_API
+
+/* sys_perfctr() interface. First arg is operation code
+ * from enumeration below. The meaning of further arguments
+ * are determined by the operation code.
+ *
+ * int sys_perfctr(int opcode, unsigned long arg0,
+ * unsigned long arg1, unsigned long arg2)
+ *
+ * Pointers which are passed by the user are pointers to 64-bit
+ * integers.
+ *
+ * Once enabled, performance counter state is retained until the
+ * process either exits or performs an exec. That is, performance
+ * counters remain enabled for fork/clone children.
+ */
+enum perfctr_opcode {
+ /* Enable UltraSparc performance counters, ARG0 is pointer
+ * to 64-bit accumulator for D0 counter in PIC, ARG1 is pointer
+ * to 64-bit accumulator for D1 counter. ARG2 is a pointer to
+ * the initial PCR register value to use.
+ */
+ PERFCTR_ON,
+
+ /* Disable UltraSparc performance counters. The PCR is written
+ * with zero and the user counter accumulator pointers and
+ * working PCR register value are forgotten.
+ */
+ PERFCTR_OFF,
+
+ /* Add current D0 and D1 PIC values into user pointers given
+ * in PERFCTR_ON operation. The PIC is cleared before returning.
+ */
+ PERFCTR_READ,
+
+ /* Clear the PIC register. */
+ PERFCTR_CLRPIC,
+
+ /* Begin using a new PCR value, the pointer to which is passed
+ * in ARG0. The PIC is also cleared after the new PCR value is
+ * written.
+ */
+ PERFCTR_SETPCR,
+
+ /* Store in pointer given in ARG0 the current PCR register value
+ * being used.
+ */
+ PERFCTR_GETPCR
+};
+
+/* I don't want the kernel's namespace to be polluted with this
+ * stuff when this file is included. --DaveM
+ */
+#ifndef __KERNEL__
+
+#define PRIV 0x00000001
+#define USR 0x00000002
+#define SYS 0x00000004
+
+/* Pic.S0 Selection Bit Field Encoding */
+#define CYCLE_CNT 0x00000000
+#define INSTR_CNT 0x00000010
+#define DISPATCH0_IC_MISS 0x00000020
+#define DISPATCH0_STOREBUF 0x00000030
+#define IC_REF 0x00000080
+#define DC_RD 0x00000090
+#define DC_WR 0x000000A0
+#define LOAD_USE 0x000000B0
+#define EC_REF 0x000000C0
+#define EC_WRITE_HIT_RDO 0x000000D0
+#define EC_SNOOP_INV 0x000000E0
+#define EC_RD_HIT 0x000000F0
+
+/* Pic.S1 Selection Bit Field Encoding */
+#define CYCLE_CNT_D1 0x00000000
+#define INSTR_CNT_D1 0x00000800
+#define DISPATCH0_IC_MISPRED 0x00001000
+#define DISPATCH0_FP_USE 0x00001800
+#define IC_HIT 0x00004000
+#define DC_RD_HIT 0x00004800
+#define DC_WR_HIT 0x00005000
+#define LOAD_USE_RAW 0x00005800
+#define EC_HIT 0x00006000
+#define EC_WB 0x00006800
+#define EC_SNOOP_CB 0x00007000
+#define EC_IT_HIT 0x00007800
+
+struct vcounter_struct {
+ unsigned long long vcnt0;
+ unsigned long long vcnt1;
+};
+
+#endif /* !(__KERNEL__) */
+
+#endif /* !(PERF_COUNTER_API) */
diff --git a/include/asm-sparc/shmparam.h b/include/asm-sparc/shmparam.h
index 54420d89d..174984e11 100644
--- a/include/asm-sparc/shmparam.h
+++ b/include/asm-sparc/shmparam.h
@@ -1,4 +1,4 @@
-/* $Id: shmparam.h,v 1.3 1995/11/25 02:32:42 davem Exp $ */
+/* $Id: shmparam.h,v 1.4 1998/09/28 07:15:01 jj Exp $ */
#ifndef _ASMSPARC_SHMPARAM_H
#define _ASMSPARC_SHMPARAM_H
@@ -34,7 +34,7 @@
* SHMMAX <= (PAGE_SIZE << _SHM_IDX_BITS).
*/
-#define SHMMAX (1024 * 1024) /* max shared seg size (bytes) */
+#define SHMMAX 0x1000000 /* 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) */ \
diff --git a/include/asm-sparc/sigcontext.h b/include/asm-sparc/sigcontext.h
index ec6107408..3c85783f1 100644
--- a/include/asm-sparc/sigcontext.h
+++ b/include/asm-sparc/sigcontext.h
@@ -1,4 +1,4 @@
-/* $Id: sigcontext.h,v 1.12 1997/03/03 16:51:52 jj Exp $ */
+/* $Id: sigcontext.h,v 1.13 1998/10/06 09:28:35 jj Exp $ */
#ifndef __SPARC_SIGCONTEXT_H
#define __SPARC_SIGCONTEXT_H
@@ -52,6 +52,16 @@ typedef struct {
} si_fpqueue [16];
} __siginfo_fpu_t;
+/* This magic should be in g_upper[0] for all upper parts
+ to be valid.
+ This is generated by sparc64 only, but for 32bit processes,
+ so we define it here as well. */
+#define SIGINFO_EXTRA_V8PLUS_MAGIC 0x130e269
+typedef struct {
+ unsigned int g_upper[8];
+ unsigned int o_upper[8];
+} siginfo_extra_v8plus_t;
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(__SPARC_SIGCONTEXT_H) */
diff --git a/include/asm-sparc/siginfo.h b/include/asm-sparc/siginfo.h
index 0a666b4e2..f20a5a81c 100644
--- a/include/asm-sparc/siginfo.h
+++ b/include/asm-sparc/siginfo.h
@@ -1,4 +1,4 @@
-/* $Id: siginfo.h,v 1.2 1998/07/30 11:31:49 davem Exp $
+/* $Id: siginfo.h,v 1.3 1998/08/26 10:33:29 davem Exp $
* siginfo.c:
*/
diff --git a/include/asm-sparc/smp.h b/include/asm-sparc/smp.h
index 3cbb49c86..91afa0840 100644
--- a/include/asm-sparc/smp.h
+++ b/include/asm-sparc/smp.h
@@ -65,6 +65,9 @@ void smp_callin(void);
void smp_boot_cpus(void);
void smp_store_cpu_info(int);
+int smp_bogo_info(char *buf);
+int smp_info(char *buf);
+
BTFIXUPDEF_CALL(void, smp_cross_call, smpfunc_t, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)
BTFIXUPDEF_CALL(void, smp_message_pass, int, int, unsigned long, int)
BTFIXUPDEF_CALL(int, __smp_processor_id, void)
@@ -74,12 +77,6 @@ BTFIXUPDEF_BLACKBOX(load_current)
#define smp_cross_call(func,arg1,arg2,arg3,arg4,arg5) BTFIXUP_CALL(smp_cross_call)(func,arg1,arg2,arg3,arg4,arg5)
#define smp_message_pass(target,msg,data,wait) BTFIXUP_CALL(smp_message_pass)(target,msg,data,wait)
-BTFIXUPDEF_CALL(int, smp_bogo_info, char *)
-BTFIXUPDEF_CALL(int, smp_info, char *)
-
-#define smp_bogo_info(buf) BTFIXUP_CALL(smp_bogo_info)(buf)
-#define smp_info(buf) BTFIXUP_CALL(smp_info)(buf)
-
extern __inline__ void xc0(smpfunc_t func) { smp_cross_call(func, 0, 0, 0, 0, 0); }
extern __inline__ void xc1(smpfunc_t func, unsigned long arg1)
{ smp_cross_call(func, arg1, 0, 0, 0, 0); }
@@ -153,11 +150,12 @@ extern __inline__ int hard_smp_processor_id(void)
#else
extern __inline__ int hard_smp_processor_id(void)
{
- int cpuid __asm__ ("g2");
+ int cpuid;
__asm__ __volatile__("mov %%o7, %%g1\n\t"
"call ___f___smp_processor_id\n\t"
- " nop\n\t" : "=r"(cpuid) : : "g1");
+ " nop\n\t"
+ "mov %%g2, %0\n\t" : "=r"(cpuid) : : "g1", "g2");
return cpuid;
}
#endif
@@ -184,8 +182,7 @@ extern __inline__ int hard_smp_processor_id(void)
#define SMP_FROM_INT 1
#define SMP_FROM_SYSCALL 2
-
-#else /* !(__SMP__) */
+#endif /* !(__SMP__) */
#define NO_PROC_ID 0xFF
diff --git a/include/asm-sparc/softirq.h b/include/asm-sparc/softirq.h
index 50fbc20e7..80c5d2e3e 100644
--- a/include/asm-sparc/softirq.h
+++ b/include/asm-sparc/softirq.h
@@ -1,133 +1,173 @@
/* softirq.h: 32-bit Sparc soft IRQ support.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
+ * Copyright (C) 1998 Anton Blanchard (anton@progsoc.uts.edu.au)
*/
#ifndef __SPARC_SOFTIRQ_H
#define __SPARC_SOFTIRQ_H
#include <asm/atomic.h>
+#include <asm/smp.h>
#include <asm/hardirq.h>
-/* The locking mechanism for base handlers, to prevent re-entrancy,
- * is entirely private to an implementation, it should not be
- * referenced at all outside of this file.
- */
+extern unsigned int local_bh_count[NR_CPUS];
+
#define get_active_bhs() (bh_mask & bh_active)
#ifdef __SMP__
-extern atomic_t __sparc_bh_counter;
-
-#define start_bh_atomic() \
- do { atomic_inc(&__sparc_bh_counter); synchronize_irq(); } while(0)
-
-#define end_bh_atomic() atomic_dec(&__sparc_bh_counter)
-
-#include <asm/spinlock.h>
-
-extern spinlock_t global_bh_lock;
-
-#define init_bh(nr, routine) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_base[ent] = routine; \
- bh_mask_count[ent] = 0; \
- bh_mask |= 1 << ent; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define remove_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_base[ent] = NULL; \
- bh_mask &= ~(1 << ent); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define mark_bh(nr) \
-do { unsigned long flags; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_active |= (1 << nr); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define disable_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_mask &= ~(1 << ent); \
- bh_mask_count[ent]++; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define enable_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- if (!--bh_mask_count[ent]) \
- bh_mask |= 1 << ent; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define softirq_trylock(cpu) \
-({ \
- int ret = 1; \
- if(atomic_add_return(1, &__sparc_bh_counter) != 1) { \
- atomic_dec(&__sparc_bh_counter); \
- ret = 0; \
- } \
- ret; \
-})
-#define softirq_endlock(cpu) atomic_dec(&__sparc_bh_counter)
-#define clear_active_bhs(mask) \
-do { unsigned long flags; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_active &= ~(mask); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#else /* !(__SMP__) */
-
-extern int __sparc_bh_counter;
-
-#define start_bh_atomic() do { __sparc_bh_counter++; barrier(); } while(0)
-#define end_bh_atomic() do { barrier(); __sparc_bh_counter--; } while(0)
-
-#define softirq_trylock(cpu) (__sparc_bh_counter ? 0 : (__sparc_bh_counter=1))
-#define softirq_endlock(cpu) (__sparc_bh_counter = 0)
-#define clear_active_bhs(x) (bh_active &= ~(x))
-#define synchronize_bh() do { } while (0) /* XXX implement SMP version -DaveM */
-
-#define init_bh(nr, routine) \
-do { int ent = nr; \
- bh_base[ent] = routine; \
- bh_mask_count[ent] = 0; \
- bh_mask |= 1 << ent; \
-} while(0)
-
-#define remove_bh(nr) \
-do { int ent = nr; \
- bh_base[ent] = NULL; \
- bh_mask &= ~(1 << ent); \
-} while(0)
+/*
+ * The locking mechanism for base handlers, to prevent re-entrancy,
+ * is entirely private to an implementation, it should not be
+ * referenced at all outside of this file.
+ */
+extern atomic_t global_bh_lock;
+extern atomic_t global_bh_count;
+extern spinlock_t sparc_bh_lock;
+
+extern void synchronize_bh(void);
+
+static inline void clear_active_bhs(unsigned int mask)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&sparc_bh_lock, flags);
+ bh_active &= ~(mask);
+ spin_unlock_irqrestore(&sparc_bh_lock, flags);
+}
+
+extern inline void init_bh(int nr, void (*routine)(void))
+{
+ unsigned long flags;
+ spin_lock_irqsave(&sparc_bh_lock, flags);
+ bh_base[nr] = routine;
+ bh_mask_count[nr] = 0;
+ bh_mask |= 1 << nr;
+ spin_unlock_irqrestore(&sparc_bh_lock, flags);
+}
+
+extern inline void remove_bh(int nr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&sparc_bh_lock, flags);
+ bh_base[nr] = NULL;
+ bh_mask &= ~(1 << nr);
+ spin_unlock_irqrestore(&sparc_bh_lock, flags);
+}
+
+extern inline void mark_bh(int nr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&sparc_bh_lock, flags);
+ bh_active |= (1 << nr);
+ spin_unlock_irqrestore(&sparc_bh_lock, flags);
+}
+
+/*
+ * These use a mask count to correctly handle
+ * nested disable/enable calls
+ */
+extern inline void disable_bh(int nr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&sparc_bh_lock, flags);
+ bh_mask &= ~(1 << nr);
+ bh_mask_count[nr]++;
+ spin_unlock_irqrestore(&sparc_bh_lock, flags);
+ synchronize_bh();
+}
+
+extern inline void enable_bh(int nr)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&sparc_bh_lock, flags);
+ if (!--bh_mask_count[nr])
+ bh_mask |= 1 << nr;
+ spin_unlock_irqrestore(&sparc_bh_lock, flags);
+}
+
+static inline void start_bh_atomic(void)
+{
+ atomic_inc(&global_bh_lock);
+ synchronize_bh();
+}
+
+static inline void end_bh_atomic(void)
+{
+ atomic_dec(&global_bh_lock);
+}
+
+/* These are for the IRQs testing the lock */
+static inline int softirq_trylock(int cpu)
+{
+ if (atomic_add_return(1, &global_bh_count) == 1) {
+ if (atomic_read(&global_bh_lock) == 0) {
+ ++local_bh_count[cpu];
+ return 1;
+ }
+ }
+ atomic_dec(&global_bh_count);
+ return 0;
+}
+
+static inline void softirq_endlock(int cpu)
+{
+ local_bh_count[cpu]--;
+ atomic_dec(&global_bh_count);
+}
+
+#else
+#define clear_active_bhs(x) (bh_active &= ~(x))
#define mark_bh(nr) (bh_active |= (1 << (nr)))
-#define disable_bh(nr) \
-do { int ent = nr; \
- bh_mask &= ~(1 << ent); \
- bh_mask_count[ent]++; \
-} while(0)
+/* These are for the irq's testing the lock */
+#define softirq_trylock(cpu) (local_bh_count[cpu] ? 0 : (local_bh_count[cpu]=1))
+#define softirq_endlock(cpu) (local_bh_count[cpu] = 0)
+#define synchronize_bh() barrier()
-#define enable_bh(nr) \
-do { int ent = nr; \
- if (!--bh_mask_count[ent]) \
- bh_mask |= 1 << ent; \
-} while(0)
-
-#endif /* __SMP__ */
-
-#endif /* __SPARC_SOFTIRQ_H */
+/*
+ * These use a mask count to correctly handle
+ * nested disable/enable calls
+ */
+extern inline void disable_bh(int nr)
+{
+ bh_mask &= ~(1 << nr);
+ bh_mask_count[nr]++;
+ synchronize_bh();
+}
+
+extern inline void enable_bh(int nr)
+{
+ if (!--bh_mask_count[nr])
+ bh_mask |= 1 << nr;
+}
+
+extern inline void init_bh(int nr, void (*routine)(void))
+{
+ bh_base[nr] = routine;
+ bh_mask_count[nr] = 0;
+ bh_mask |= 1 << nr;
+}
+
+extern inline void remove_bh(int nr)
+{
+ bh_base[nr] = NULL;
+ bh_mask &= ~(1 << nr);
+}
+
+extern inline void start_bh_atomic(void)
+{
+ local_bh_count[0]++;
+ barrier();
+}
+
+extern inline void end_bh_atomic(void)
+{
+ barrier();
+ local_bh_count[0]--;
+}
+
+#endif /* SMP */
+
+#endif /* __SPARC_SOFTIRQ_H */
diff --git a/include/asm-sparc/spinlock.h b/include/asm-sparc/spinlock.h
index 1683df48e..e58ffe605 100644
--- a/include/asm-sparc/spinlock.h
+++ b/include/asm-sparc/spinlock.h
@@ -10,13 +10,8 @@
#ifndef __SMP__
-#if (__GNUC__ > 2) || (__GNUC_MINOR__ >= 8)
- typedef struct { } spinlock_t;
- #define SPIN_LOCK_UNLOCKED { }
-#else
- typedef unsigned char spinlock_t;
- #define SPIN_LOCK_UNLOCKED 0
-#endif
+typedef unsigned char spinlock_t;
+#define SPIN_LOCK_UNLOCKED 0
#define spin_lock_init(lock) do { } while(0)
#define spin_lock(lock) do { } while(0)
@@ -39,8 +34,8 @@
* irq-safe write-lock, but readers can get non-irqsafe
* read-locks.
*/
-typedef struct { } rwlock_t;
-#define RW_LOCK_UNLOCKED { }
+typedef struct { volatile unsigned int lock; } rwlock_t;
+#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
#define read_lock(lock) do { } while(0)
#define read_unlock(lock) do { } while(0)
@@ -61,7 +56,7 @@ typedef struct { } rwlock_t;
#include <asm/psr.h>
/* Define this to use the verbose/debugging versions in arch/sparc/lib/debuglocks.c */
-/* #define SPIN_LOCK_DEBUG */
+#define SPIN_LOCK_DEBUG
#ifdef SPIN_LOCK_DEBUG
struct _spinlock_debug {
@@ -70,71 +65,73 @@ struct _spinlock_debug {
};
typedef struct _spinlock_debug spinlock_t;
-#define SPIN_LOCK_UNLOCKED { 0, 0 }
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 0 }
#define spin_lock_init(lp) do { (lp)->owner_pc = 0; (lp)->lock = 0; } while(0)
-#define spin_unlock_wait(lp) \
-do { barrier(); \
-} while(*(volatile unsigned char *)(&(lp)->lock))
+#define spin_unlock_wait(lp) do { barrier(); } while(*(volatile unsigned char *)(&(lp)->lock))
-extern void _spin_lock(spinlock_t *lock);
+extern void _do_spin_lock(spinlock_t *lock, char *str);
extern int _spin_trylock(spinlock_t *lock);
-extern void _spin_unlock(spinlock_t *lock);
-extern void _spin_lock_irq(spinlock_t *lock);
-extern void _spin_unlock_irq(spinlock_t *lock);
-extern void _spin_lock_irqsave(spinlock_t *lock);
-extern void _spin_unlock_irqrestore(spinlock_t *lock);
-
-#define spin_lock(lp) _spin_lock(lp)
-#define spin_trylock(lp) _spin_trylock(lp)
-#define spin_unlock(lp) _spin_unlock(lp)
-#define spin_lock_irq(lp) _spin_lock_irq(lp)
-#define spin_unlock_irq(lp) _spin_unlock_irq(lp)
-#define spin_lock_irqsave(lp, flags) do { __save_and_cli(flags); \
- _spin_lock_irqsave(lp); } while (0)
-#define spin_unlock_irqrestore(lp, flags) do { _spin_unlock_irqrestore(lp); \
- __restore_flags(flags); } while(0)
+extern void _do_spin_unlock(spinlock_t *lock);
+
+#define spin_trylock(lp) _spin_trylock(lp)
+
+#define spin_lock(lock) _do_spin_lock(lock, "spin_lock")
+#define spin_lock_irq(lock) do { __cli(); _do_spin_lock(lock, "spin_lock_irq"); } while(0)
+#define spin_lock_irqsave(lock, flags) do { __save_and_cli(flags); _do_spin_lock(lock, "spin_lock_irqsave"); } while(0)
+
+#define spin_unlock(lock) _do_spin_unlock(lock)
+#define spin_unlock_irq(lock) do { _do_spin_unlock(lock); __sti(); } while(0)
+#define spin_unlock_irqrestore(lock, flags) do { _do_spin_unlock(lock); __restore_flags(flags); } while(0)
struct _rwlock_debug {
volatile unsigned int lock;
unsigned long owner_pc;
+ unsigned long reader_pc[NCPUS];
};
typedef struct _rwlock_debug rwlock_t;
-#define RW_LOCK_UNLOCKED { 0, 0 }
-
-extern void _read_lock(rwlock_t *rw);
-extern void _read_unlock(rwlock_t *rw);
-extern void _write_lock(rwlock_t *rw);
-extern void _write_unlock(rwlock_t *rw);
-extern void _read_lock_irq(rwlock_t *rw);
-extern void _read_unlock_irq(rwlock_t *rw);
-extern void _write_lock_irq(rwlock_t *rw);
-extern void _write_unlock_irq(rwlock_t *rw);
-extern void _read_lock_irqsave(rwlock_t *rw);
-extern void _read_unlock_irqrestore(rwlock_t *rw);
-extern void _write_lock_irqsave(rwlock_t *rw);
-extern void _write_unlock_irqrestore(rwlock_t *rw);
-
-#define read_lock(rw) _read_lock(rw)
-#define read_unlock(rw) _read_unlock(rw)
-#define write_lock(rw) _write_lock(rw)
-#define write_unlock(rw) _write_unlock(rw)
-#define read_lock_irq(rw) _read_lock_irq(rw)
-#define read_unlock_irq(rw) _read_unlock_irq(rw)
-#define write_lock_irq(rw) _write_lock_irq(rw)
-#define write_unlock_irq(rw) _write_unlock_irq(rw)
-
-#define read_lock_irqsave(rw, flags) \
-do { __save_and_cli(flags); _read_lock_irqsave(rw); } while (0)
-
-#define read_unlock_irqrestore(rw, flags) do { _read_unlock_irqrestore(rw); \
- __restore_flags(flags); } while(0)
-
-#define write_lock_irqsave(rw, flags) \
-do { __save_and_cli(flags); _write_lock_irqsave(rw); } while(0)
-
-#define write_unlock_irqrestore(rw, flags) do { _write_unlock_irqrestore(rw); \
- __restore_flags(flags); } while(0)
+#define RW_LOCK_UNLOCKED (rwlock_t) { 0, 0, {0} }
+
+extern void _do_read_lock(rwlock_t *rw, char *str);
+extern void _do_read_unlock(rwlock_t *rw, char *str);
+extern void _do_write_lock(rwlock_t *rw, char *str);
+extern void _do_write_unlock(rwlock_t *rw);
+
+#define read_lock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_read_lock(lock, "read_lock"); \
+ __restore_flags(flags); \
+} while(0)
+#define read_lock_irq(lock) do { __cli(); _do_read_lock(lock, "read_lock_irq"); } while(0)
+#define read_lock_irqsave(lock, flags) do { __save_and_cli(flags); _do_read_lock(lock, "read_lock_irqsave"); } while(0)
+
+#define read_unlock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_read_unlock(lock, "read_unlock"); \
+ __restore_flags(flags); \
+} while(0)
+#define read_unlock_irq(lock) do { _do_read_unlock(lock, "read_unlock_irq"); __sti() } while(0)
+#define read_unlock_irqrestore(lock, flags) do { _do_read_unlock(lock, "read_unlock_irqrestore"); __restore_flags(flags); } while(0)
+
+#define write_lock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_write_lock(lock, "write_lock"); \
+ __restore_flags(flags); \
+} while(0)
+#define write_lock_irq(lock) do { __cli(); _do_write_lock(lock, "write_lock_irq"); } while(0)
+#define write_lock_irqsave(lock, flags) do { __save_and_cli(flags); _do_write_lock(lock, "write_lock_irqsave"); } while(0)
+
+#define write_unlock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_write_unlock(lock); \
+ __restore_flags(flags); \
+} while(0)
+#define write_unlock_irq(lock) do { _do_write_unlock(lock); __sti(); } while(0)
+#define write_unlock_irqrestore(lock, flags) do { _do_write_unlock(lock); __restore_flags(flags); } while(0)
#else /* !SPIN_LOCK_DEBUG */
@@ -263,23 +260,21 @@ extern __inline__ void spin_unlock_irqrestore(spinlock_t *lock, unsigned long fl
*/
typedef struct { volatile unsigned int lock; } rwlock_t;
-#define RW_LOCK_UNLOCKED { 0 }
+#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
/* Sort of like atomic_t's on Sparc, but even more clever.
*
* ------------------------------------
- * | 16-bit counter | clock | wlock | rwlock_t
+ * | 24-bit counter | wlock | rwlock_t
* ------------------------------------
- * 31 16 15 8 7 0
+ * 31 8 7 0
*
- * wlock signifies the one writer is in, the clock protects
- * counter bumping, however a reader must acquire wlock
- * before he can bump the counter on a read_lock().
- * Similarly a writer, once he has the wlock, must await
- * for the top 24 bits to all clear before he can finish
- * going in (this includes the clock of course).
+ * wlock signifies the one writer is in or somebody is updating
+ * counter. For a writer, if he successfully acquires the wlock,
+ * but counter is non-zero, he has to release the lock and wait,
+ * till both counter and wlock are zero.
*
- * Unfortunately this scheme limits us to ~65,000 cpus.
+ * Unfortunately this scheme limits us to ~16,000,000 cpus.
*/
extern __inline__ void _read_lock(rwlock_t *rw)
{
@@ -308,7 +303,7 @@ extern __inline__ void _read_unlock(rwlock_t *rw)
__asm__ __volatile__("
mov %%o7, %%g4
call ___rw_read_exit
- ldstub [%%g1 + 2], %%g2
+ ldstub [%%g1 + 3], %%g2
" : /* no outputs */
: "r" (lp)
: "g2", "g4", "g7", "memory", "cc");
diff --git a/include/asm-sparc/system.h b/include/asm-sparc/system.h
index 01ed7659e..6dc074c78 100644
--- a/include/asm-sparc/system.h
+++ b/include/asm-sparc/system.h
@@ -1,4 +1,4 @@
-/* $Id: system.h,v 1.69 1998/04/24 12:30:19 davem Exp $ */
+/* $Id: system.h,v 1.71 1998/10/13 03:51:06 jj Exp $ */
#include <linux/config.h>
#ifndef __SPARC_SYSTEM_H
@@ -151,7 +151,7 @@ extern __inline__ void __cli(void)
__asm__ __volatile__("
rd %%psr, %0
- nop; nop; nop;
+ nop; nop; nop; /* Sun4m + Cypress + SMP bug */
or %0, %1, %0
wr %0, 0x0, %%psr
nop; nop; nop
@@ -166,7 +166,7 @@ extern __inline__ void __sti(void)
__asm__ __volatile__("
rd %%psr, %0
- nop; nop; nop;
+ nop; nop; nop; /* Sun4m + Cypress + SMP bug */
andn %0, %1, %0
wr %0, 0x0, %%psr
nop; nop; nop
@@ -189,7 +189,7 @@ extern __inline__ unsigned long swap_pil(unsigned long __new_psr)
__asm__ __volatile__("
rd %%psr, %0
- nop; nop; nop;
+ nop; nop; nop; /* Sun4m + Cypress + SMP bug */
and %0, %2, %%g1
and %1, %2, %%g2
xorcc %%g1, %%g2, %%g0
@@ -211,7 +211,7 @@ extern __inline__ unsigned long read_psr_and_cli(void)
__asm__ __volatile__("
rd %%psr, %0
- nop; nop; nop;
+ nop; nop; nop; /* Sun4m + Cypress + SMP bug */
or %0, %1, %%g1
wr %%g1, 0x0, %%psr
nop; nop; nop
@@ -235,18 +235,16 @@ extern __inline__ unsigned long read_psr_and_cli(void)
extern unsigned char global_irq_holder;
-#define save_flags(x) \
-do { ((x) = ((global_irq_holder == (unsigned char) smp_processor_id()) ? 1 : \
- ((getipl() & PSR_PIL) ? 2 : 0))); } while(0)
-
#define save_and_cli(flags) do { save_flags(flags); cli(); } while(0)
#ifdef DEBUG_IRQLOCK
extern void __global_cli(void);
extern void __global_sti(void);
+extern unsigned long __global_save_flags(void);
extern void __global_restore_flags(unsigned long flags);
#define cli() __global_cli()
#define sti() __global_sti()
+#define save_flags(flags) ((flags)=__global_save_flags())
#define restore_flags(flags) __global_restore_flags(flags)
#else
diff --git a/include/asm-sparc/termios.h b/include/asm-sparc/termios.h
index 3c681a7b1..aeefe28e4 100644
--- a/include/asm-sparc/termios.h
+++ b/include/asm-sparc/termios.h
@@ -1,4 +1,4 @@
-/* $Id: termios.h,v 1.26 1998/04/12 06:27:19 davem Exp $ */
+/* $Id: termios.h,v 1.27 1998/10/04 06:50:13 davem Exp $ */
#ifndef _SPARC_TERMIOS_H
#define _SPARC_TERMIOS_H
@@ -63,6 +63,9 @@ struct winsize {
#define N_AX25 5
#define N_X25 6
#define N_6PACK 7
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-sparc/timer.h b/include/asm-sparc/timer.h
index f1b41f7e4..843ff4b7c 100644
--- a/include/asm-sparc/timer.h
+++ b/include/asm-sparc/timer.h
@@ -1,4 +1,4 @@
-/* $Id: timer.h,v 1.17 1998/04/24 12:30:19 davem Exp $
+/* $Id: timer.h,v 1.20 1998/09/21 05:07:37 jj Exp $
* timer.h: Definitions for the timer chips on the Sparc.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -11,6 +11,7 @@
#include <asm/system.h> /* For NCPUS */
#include <asm/sun4paddr.h>
+#include <asm/btfixup.h>
/* Timer structures. The interrupt timer has two properties which
* are the counter (which is handled in do_timer in sched.c) and the limit.
@@ -102,4 +103,8 @@ extern struct sun4d_timer_regs *sun4d_timers;
extern __volatile__ unsigned int *master_l10_counter;
extern __volatile__ unsigned int *master_l10_limit;
+/* FIXME: Make do_[gs]ettimeofday btfixup calls */
+BTFIXUPDEF_CALL(void, bus_do_settimeofday, struct timeval *tv)
+#define bus_do_settimeofday(tv) BTFIXUP_CALL(bus_do_settimeofday)(tv)
+
#endif /* !(_SPARC_TIMER_H) */
diff --git a/include/asm-sparc/turbosparc.h b/include/asm-sparc/turbosparc.h
index b3cdc7d78..094573025 100644
--- a/include/asm-sparc/turbosparc.h
+++ b/include/asm-sparc/turbosparc.h
@@ -1,4 +1,4 @@
-/* $Id: turbosparc.h,v 1.1 1997/07/18 06:29:12 ralf Exp $
+/* $Id: turbosparc.h,v 1.2 1998/10/19 19:40:01 ralf Exp $
* turbosparc.h: Defines specific to the TurboSparc module.
* This is SRMMU stuff.
*
@@ -74,8 +74,10 @@ extern __inline__ void turbosparc_inv_data_tag(unsigned long addr)
extern __inline__ void turbosparc_flush_icache(void)
{
- __asm__ __volatile__("sta %%g0, [%%g0] %0\n\t" : :
- "i" (ASI_M_IC_FLCLEAR));
+ unsigned long addr;
+
+ for(addr = 0; addr < 0x4000; addr += 0x20)
+ turbosparc_inv_insn_tag(addr);
}
extern __inline__ void turbosparc_flush_dcache(void)
@@ -88,7 +90,12 @@ extern __inline__ void turbosparc_flush_dcache(void)
extern __inline__ void turbosparc_idflash_clear(void)
{
- turbosparc_flush_icache(); turbosparc_flush_dcache();
+ unsigned long addr;
+
+ for(addr = 0; addr < 0x4000; addr += 0x20) {
+ turbosparc_inv_insn_tag(addr);
+ turbosparc_inv_data_tag(addr);
+ }
}
extern __inline__ void turbosparc_set_ccreg(unsigned long regval)
diff --git a/include/asm-sparc/uaccess.h b/include/asm-sparc/uaccess.h
index 3f4a58601..a2affc181 100644
--- a/include/asm-sparc/uaccess.h
+++ b/include/asm-sparc/uaccess.h
@@ -1,4 +1,4 @@
-/* $Id: uaccess.h,v 1.15 1998/02/05 14:19:54 jj Exp $
+/* $Id: uaccess.h,v 1.17 1998/09/16 12:25:29 jj Exp $
* uaccess.h: User space memore access functions.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -324,8 +324,6 @@ __kernel_size_t __copy_size = (__kernel_size_t) (n); \
__kernel_size_t __copy_res; \
if(__copy_size && __access_ok((unsigned long)__copy_from, __copy_size)) { \
__copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \
-if(__copy_res) \
-memset((char *)__copy_to + __copy_size - __copy_res, 0, __copy_res); \
} else __copy_res = __copy_size; \
__copy_res; })
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h
index dae8e0ac3..501197be4 100644
--- a/include/asm-sparc/unistd.h
+++ b/include/asm-sparc/unistd.h
@@ -1,4 +1,4 @@
-/* $Id: unistd.h,v 1.42 1998/07/28 13:08:35 jj Exp $ */
+/* $Id: unistd.h,v 1.48 1998/10/07 01:27:50 davem Exp $ */
#ifndef _SPARC_UNISTD_H
#define _SPARC_UNISTD_H
@@ -16,7 +16,6 @@
* Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu)
*/
-#define __NR_setup 0 /* Used only by init, to get system going. */
#define __NR_exit 1 /* Common */
#define __NR_fork 2 /* Common */
#define __NR_read 3 /* Common */
@@ -29,12 +28,12 @@
#define __NR_unlink 10 /* Common */
#define __NR_execv 11 /* SunOS Specific */
#define __NR_chdir 12 /* Common */
-/* #define __NR_ni_syscall 13 ENOSYS under SunOS */
+#define __NR_chown 13 /* Common */
#define __NR_mknod 14 /* Common */
#define __NR_chmod 15 /* Common */
-#define __NR_chown 16 /* Common */
+#define __NR_lchown 16 /* Common */
#define __NR_brk 17 /* Common */
-/* #define __NR_ni_syscall 18 ENOSYS under SunOS */
+/* #define __NR_ni_syscall 18 RESERVED for sparc64 perf-counter syscall */
#define __NR_lseek 19 /* Common */
#define __NR_getpid 20 /* Common */
#define __NR_capget 21 /* Linux Specific */
@@ -164,8 +163,8 @@
#define __NR_setrlimit 145 /* Common */
#define __NR_killpg 146 /* SunOS Specific */
#define __NR_prctl 147 /* ENOSYS under SunOS */
-/* #define __NR_ni_syscall 148 ENOSYS under SunOS */
-/* #define __NR_ni_syscall 149 ENOSYS under SunOS */
+#define __NR_pciconfig_read 148 /* ENOSYS under SunOS */
+#define __NR_pciconfig_write 149 /* ENOSYS under SunOS */
#define __NR_getsockname 150 /* Common */
#define __NR_getmsg 151 /* SunOS Specific */
#define __NR_putmsg 152 /* SunOS Specific */
@@ -426,7 +425,6 @@ return -1; \
#define __NR__exit __NR_exit
static __inline__ _syscall0(int,idle)
static __inline__ _syscall0(int,pause)
-static __inline__ _syscall1(int,setup,int,magic)
static __inline__ _syscall0(int,sync)
static __inline__ _syscall0(pid_t,setsid)
static __inline__ _syscall3(int,write,int,fd,__const__ char *,buf,off_t,count)
diff --git a/include/asm-sparc64/asm_offsets.h b/include/asm-sparc64/asm_offsets.h
index bc1bdb8dc..52f6a9ee0 100644
--- a/include/asm-sparc64/asm_offsets.h
+++ b/include/asm-sparc64/asm_offsets.h
@@ -74,78 +74,78 @@
#define ASIZ_task_tarray_ptr 0x00000008
#define AOFF_task_wait_chldexit 0x000000e8
#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_timeout 0x000000f0
-#define ASIZ_task_timeout 0x00000008
-#define AOFF_task_policy 0x000000f8
+#define AOFF_task_policy 0x000000f0
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x00000100
+#define AOFF_task_rt_priority 0x000000f8
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x00000108
+#define AOFF_task_it_real_value 0x00000100
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x00000110
+#define AOFF_task_it_prof_value 0x00000108
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x00000118
+#define AOFF_task_it_virt_value 0x00000110
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x00000120
+#define AOFF_task_it_real_incr 0x00000118
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000128
+#define AOFF_task_it_prof_incr 0x00000120
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000130
+#define AOFF_task_it_virt_incr 0x00000128
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000138
+#define AOFF_task_real_timer 0x00000130
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000160
+#define AOFF_task_times 0x00000158
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000180
+#define AOFF_task_start_time 0x00000178
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000188
+#define AOFF_task_per_cpu_utime 0x00000180
#define ASIZ_task_per_cpu_utime 0x00000008
-#define AOFF_task_min_flt 0x00000198
+#define AOFF_task_min_flt 0x00000190
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x000001a0
+#define AOFF_task_maj_flt 0x00000198
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x000001a8
+#define AOFF_task_nswap 0x000001a0
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x000001b0
+#define AOFF_task_cmin_flt 0x000001a8
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x000001b8
+#define AOFF_task_cmaj_flt 0x000001b0
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x000001c0
+#define AOFF_task_cnswap 0x000001b8
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_swap_address 0x000001d0
+#define AOFF_task_swap_address 0x000001c8
#define ASIZ_task_swap_address 0x00000008
-#define AOFF_task_old_maj_flt 0x000001d8
+#define AOFF_task_old_maj_flt 0x000001d0
#define ASIZ_task_old_maj_flt 0x00000008
-#define AOFF_task_dec_flt 0x000001e0
+#define AOFF_task_dec_flt 0x000001d8
#define ASIZ_task_dec_flt 0x00000008
-#define AOFF_task_swap_cnt 0x000001e8
+#define AOFF_task_swap_cnt 0x000001e0
#define ASIZ_task_swap_cnt 0x00000008
-#define AOFF_task_uid 0x000001f0
+#define AOFF_task_uid 0x000001e8
#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000001f4
+#define AOFF_task_euid 0x000001ec
#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000001f8
+#define AOFF_task_suid 0x000001f0
#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000001fc
+#define AOFF_task_fsuid 0x000001f4
#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x00000200
+#define AOFF_task_gid 0x000001f8
#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x00000204
+#define AOFF_task_egid 0x000001fc
#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x00000208
+#define AOFF_task_sgid 0x00000200
#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x0000020c
+#define AOFF_task_fsgid 0x00000204
#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_ngroups 0x00000210
+#define AOFF_task_ngroups 0x00000208
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x00000214
+#define AOFF_task_groups 0x0000020c
#define ASIZ_task_groups 0x00000080
-#define AOFF_task_cap_effective 0x00000294
+#define AOFF_task_cap_effective 0x0000028c
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x00000298
+#define AOFF_task_cap_inheritable 0x00000290
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x0000029c
+#define AOFF_task_cap_permitted 0x00000294
#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_user 0x00000298
+#define ASIZ_task_user 0x00000008
#define AOFF_task_rlim 0x000002a0
#define ASIZ_task_rlim 0x000000a0
#define AOFF_task_used_math 0x00000340
@@ -161,29 +161,30 @@
#define AOFF_task_semsleeping 0x00000368
#define ASIZ_task_semsleeping 0x00000008
#define AOFF_task_tss 0x00000370
-#define ASIZ_task_tss 0x00000440
-#define AOFF_task_fs 0x000007b0
+#define ASIZ_task_tss 0x00000470
+#define AOFF_task_fs 0x000007e0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x000007b8
+#define AOFF_task_files 0x000007e8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x000007c0
+#define AOFF_task_mm 0x000007f0
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sigmask_lock 0x000007c8
-#define ASIZ_task_sigmask_lock 0x00000000
-#define AOFF_task_sig 0x000007c8
+#define AOFF_task_sigmask_lock 0x000007f8
+#define ASIZ_task_sigmask_lock 0x00000001
+#define AOFF_task_sig 0x00000800
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x000007d0
+#define AOFF_task_signal 0x00000808
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x000007d8
+#define AOFF_task_blocked 0x00000810
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x000007e0
+#define AOFF_task_sigqueue 0x00000818
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x000007e8
+#define AOFF_task_sigqueue_tail 0x00000820
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_sas_ss_sp 0x000007f0
+#define AOFF_task_sas_ss_sp 0x00000828
#define ASIZ_task_sas_ss_sp 0x00000008
-#define AOFF_task_sas_ss_size 0x000007f8
+#define AOFF_task_sas_ss_size 0x00000830
#define ASIZ_task_sas_ss_size 0x00000008
+#define ASIZ_task 0x00000840
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_cache 0x00000008
@@ -232,6 +233,7 @@
#define ASIZ_mm_cpu_vm_mask 0x00000008
#define AOFF_mm_segments 0x000000b8
#define ASIZ_mm_segments 0x00000008
+#define ASIZ_mm 0x000000c0
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
#define AOFF_thread_wstate 0x00000008
@@ -262,17 +264,30 @@
#define ASIZ_thread_sig_address 0x00000008
#define AOFF_thread_sig_desc 0x000003f0
#define ASIZ_thread_sig_desc 0x00000008
-#define AOFF_thread_fpdepth 0x000003f8
+#define AOFF_thread_user_cntd0 0x000003f8
+#define ASIZ_thread_user_cntd0 0x00000008
+#define AOFF_thread_user_cntd1 0x00000400
+#define ASIZ_thread_user_cntd1 0x00000008
+#define AOFF_thread_kernel_cntd0 0x00000408
+#define ASIZ_thread_kernel_cntd0 0x00000008
+#define AOFF_thread_kernel_cntd1 0x00000410
+#define ASIZ_thread_kernel_cntd1 0x00000008
+#define AOFF_thread_pcr_reg 0x00000418
+#define ASIZ_thread_pcr_reg 0x00000008
+#define AOFF_thread_fpdepth 0x00000420
#define ASIZ_thread_fpdepth 0x00000001
-#define AOFF_thread_fpsaved 0x000003f9
+#define AOFF_thread_fpsaved 0x00000421
#define ASIZ_thread_fpsaved 0x00000007
-#define AOFF_thread_gsr 0x00000400
+#define AOFF_thread_gsr 0x00000428
#define ASIZ_thread_gsr 0x00000007
-#define AOFF_thread_xfsr 0x00000408
+#define AOFF_thread_xfsr 0x00000430
#define ASIZ_thread_xfsr 0x00000038
+#define ASIZ_thread 0x00000470
#else /* __SMP__ */
+#ifndef SPIN_LOCK_DEBUG
+
#define AOFF_task_state 0x00000000
#define ASIZ_task_state 0x00000008
#define AOFF_task_flags 0x00000008
@@ -343,78 +358,78 @@
#define ASIZ_task_tarray_ptr 0x00000008
#define AOFF_task_wait_chldexit 0x000000e8
#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_timeout 0x000000f0
-#define ASIZ_task_timeout 0x00000008
-#define AOFF_task_policy 0x000000f8
+#define AOFF_task_policy 0x000000f0
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x00000100
+#define AOFF_task_rt_priority 0x000000f8
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x00000108
+#define AOFF_task_it_real_value 0x00000100
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x00000110
+#define AOFF_task_it_prof_value 0x00000108
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x00000118
+#define AOFF_task_it_virt_value 0x00000110
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x00000120
+#define AOFF_task_it_real_incr 0x00000118
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000128
+#define AOFF_task_it_prof_incr 0x00000120
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000130
+#define AOFF_task_it_virt_incr 0x00000128
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000138
+#define AOFF_task_real_timer 0x00000130
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000160
+#define AOFF_task_times 0x00000158
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000180
+#define AOFF_task_start_time 0x00000178
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000188
+#define AOFF_task_per_cpu_utime 0x00000180
#define ASIZ_task_per_cpu_utime 0x00000100
-#define AOFF_task_min_flt 0x00000388
+#define AOFF_task_min_flt 0x00000380
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x00000390
+#define AOFF_task_maj_flt 0x00000388
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x00000398
+#define AOFF_task_nswap 0x00000390
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x000003a0
+#define AOFF_task_cmin_flt 0x00000398
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x000003a8
+#define AOFF_task_cmaj_flt 0x000003a0
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x000003b0
+#define AOFF_task_cnswap 0x000003a8
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_swap_address 0x000003c0
+#define AOFF_task_swap_address 0x000003b8
#define ASIZ_task_swap_address 0x00000008
-#define AOFF_task_old_maj_flt 0x000003c8
+#define AOFF_task_old_maj_flt 0x000003c0
#define ASIZ_task_old_maj_flt 0x00000008
-#define AOFF_task_dec_flt 0x000003d0
+#define AOFF_task_dec_flt 0x000003c8
#define ASIZ_task_dec_flt 0x00000008
-#define AOFF_task_swap_cnt 0x000003d8
+#define AOFF_task_swap_cnt 0x000003d0
#define ASIZ_task_swap_cnt 0x00000008
-#define AOFF_task_uid 0x000003e0
+#define AOFF_task_uid 0x000003d8
#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000003e4
+#define AOFF_task_euid 0x000003dc
#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000003e8
+#define AOFF_task_suid 0x000003e0
#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000003ec
+#define AOFF_task_fsuid 0x000003e4
#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x000003f0
+#define AOFF_task_gid 0x000003e8
#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x000003f4
+#define AOFF_task_egid 0x000003ec
#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000003f8
+#define AOFF_task_sgid 0x000003f0
#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x000003fc
+#define AOFF_task_fsgid 0x000003f4
#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_ngroups 0x00000400
+#define AOFF_task_ngroups 0x000003f8
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x00000404
+#define AOFF_task_groups 0x000003fc
#define ASIZ_task_groups 0x00000080
-#define AOFF_task_cap_effective 0x00000484
+#define AOFF_task_cap_effective 0x0000047c
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x00000488
+#define AOFF_task_cap_inheritable 0x00000480
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x0000048c
+#define AOFF_task_cap_permitted 0x00000484
#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_user 0x00000488
+#define ASIZ_task_user 0x00000008
#define AOFF_task_rlim 0x00000490
#define ASIZ_task_rlim 0x000000a0
#define AOFF_task_used_math 0x00000530
@@ -430,29 +445,312 @@
#define AOFF_task_semsleeping 0x00000558
#define ASIZ_task_semsleeping 0x00000008
#define AOFF_task_tss 0x00000560
-#define ASIZ_task_tss 0x00000440
-#define AOFF_task_fs 0x000009a0
+#define ASIZ_task_tss 0x00000470
+#define AOFF_task_fs 0x000009d0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x000009a8
+#define AOFF_task_files 0x000009d8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x000009b0
+#define AOFF_task_mm 0x000009e0
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sigmask_lock 0x000009b8
+#define AOFF_task_sigmask_lock 0x000009e8
#define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig 0x000009c0
+#define AOFF_task_sig 0x000009f0
+#define ASIZ_task_sig 0x00000008
+#define AOFF_task_signal 0x000009f8
+#define ASIZ_task_signal 0x00000008
+#define AOFF_task_blocked 0x00000a00
+#define ASIZ_task_blocked 0x00000008
+#define AOFF_task_sigqueue 0x00000a08
+#define ASIZ_task_sigqueue 0x00000008
+#define AOFF_task_sigqueue_tail 0x00000a10
+#define ASIZ_task_sigqueue_tail 0x00000008
+#define AOFF_task_sas_ss_sp 0x00000a18
+#define ASIZ_task_sas_ss_sp 0x00000008
+#define AOFF_task_sas_ss_size 0x00000a20
+#define ASIZ_task_sas_ss_size 0x00000008
+#define ASIZ_task 0x00000a30
+#define AOFF_mm_mmap 0x00000000
+#define ASIZ_mm_mmap 0x00000008
+#define AOFF_mm_mmap_cache 0x00000008
+#define ASIZ_mm_mmap_cache 0x00000008
+#define AOFF_mm_pgd 0x00000010
+#define ASIZ_mm_pgd 0x00000008
+#define AOFF_mm_count 0x00000018
+#define ASIZ_mm_count 0x00000004
+#define AOFF_mm_map_count 0x0000001c
+#define ASIZ_mm_map_count 0x00000004
+#define AOFF_mm_mmap_sem 0x00000020
+#define ASIZ_mm_mmap_sem 0x00000010
+#define AOFF_mm_context 0x00000030
+#define ASIZ_mm_context 0x00000008
+#define AOFF_mm_start_code 0x00000038
+#define ASIZ_mm_start_code 0x00000008
+#define AOFF_mm_end_code 0x00000040
+#define ASIZ_mm_end_code 0x00000008
+#define AOFF_mm_start_data 0x00000048
+#define ASIZ_mm_start_data 0x00000008
+#define AOFF_mm_end_data 0x00000050
+#define ASIZ_mm_end_data 0x00000008
+#define AOFF_mm_start_brk 0x00000058
+#define ASIZ_mm_start_brk 0x00000008
+#define AOFF_mm_brk 0x00000060
+#define ASIZ_mm_brk 0x00000008
+#define AOFF_mm_start_stack 0x00000068
+#define ASIZ_mm_start_stack 0x00000008
+#define AOFF_mm_arg_start 0x00000070
+#define ASIZ_mm_arg_start 0x00000008
+#define AOFF_mm_arg_end 0x00000078
+#define ASIZ_mm_arg_end 0x00000008
+#define AOFF_mm_env_start 0x00000080
+#define ASIZ_mm_env_start 0x00000008
+#define AOFF_mm_env_end 0x00000088
+#define ASIZ_mm_env_end 0x00000008
+#define AOFF_mm_rss 0x00000090
+#define ASIZ_mm_rss 0x00000008
+#define AOFF_mm_total_vm 0x00000098
+#define ASIZ_mm_total_vm 0x00000008
+#define AOFF_mm_locked_vm 0x000000a0
+#define ASIZ_mm_locked_vm 0x00000008
+#define AOFF_mm_def_flags 0x000000a8
+#define ASIZ_mm_def_flags 0x00000008
+#define AOFF_mm_cpu_vm_mask 0x000000b0
+#define ASIZ_mm_cpu_vm_mask 0x00000008
+#define AOFF_mm_segments 0x000000b8
+#define ASIZ_mm_segments 0x00000008
+#define ASIZ_mm 0x000000c0
+#define AOFF_thread_ksp 0x00000000
+#define ASIZ_thread_ksp 0x00000008
+#define AOFF_thread_wstate 0x00000008
+#define ASIZ_thread_wstate 0x00000002
+#define AOFF_thread_cwp 0x0000000a
+#define ASIZ_thread_cwp 0x00000002
+#define AOFF_thread_flags 0x0000000c
+#define ASIZ_thread_flags 0x00000002
+#define AOFF_thread_ctx 0x0000000e
+#define ASIZ_thread_ctx 0x00000002
+#define AOFF_thread_w_saved 0x00000010
+#define ASIZ_thread_w_saved 0x00000002
+#define AOFF_thread_new_signal 0x00000012
+#define ASIZ_thread_new_signal 0x00000002
+#define AOFF_thread____pad 0x00000014
+#define ASIZ_thread____pad 0x00000004
+#define AOFF_thread_current_ds 0x00000018
+#define ASIZ_thread_current_ds 0x00000008
+#define AOFF_thread_kregs 0x00000020
+#define ASIZ_thread_kregs 0x00000008
+#define AOFF_thread_utraps 0x00000028
+#define ASIZ_thread_utraps 0x00000008
+#define AOFF_thread_reg_window 0x00000030
+#define ASIZ_thread_reg_window 0x00000380
+#define AOFF_thread_rwbuf_stkptrs 0x000003b0
+#define ASIZ_thread_rwbuf_stkptrs 0x00000038
+#define AOFF_thread_sig_address 0x000003e8
+#define ASIZ_thread_sig_address 0x00000008
+#define AOFF_thread_sig_desc 0x000003f0
+#define ASIZ_thread_sig_desc 0x00000008
+#define AOFF_thread_user_cntd0 0x000003f8
+#define ASIZ_thread_user_cntd0 0x00000008
+#define AOFF_thread_user_cntd1 0x00000400
+#define ASIZ_thread_user_cntd1 0x00000008
+#define AOFF_thread_kernel_cntd0 0x00000408
+#define ASIZ_thread_kernel_cntd0 0x00000008
+#define AOFF_thread_kernel_cntd1 0x00000410
+#define ASIZ_thread_kernel_cntd1 0x00000008
+#define AOFF_thread_pcr_reg 0x00000418
+#define ASIZ_thread_pcr_reg 0x00000008
+#define AOFF_thread_fpdepth 0x00000420
+#define ASIZ_thread_fpdepth 0x00000001
+#define AOFF_thread_fpsaved 0x00000421
+#define ASIZ_thread_fpsaved 0x00000007
+#define AOFF_thread_gsr 0x00000428
+#define ASIZ_thread_gsr 0x00000007
+#define AOFF_thread_xfsr 0x00000430
+#define ASIZ_thread_xfsr 0x00000038
+#define ASIZ_thread 0x00000470
+
+#else /* SPIN_LOCK_DEBUG */
+
+#define AOFF_task_state 0x00000000
+#define ASIZ_task_state 0x00000008
+#define AOFF_task_flags 0x00000008
+#define ASIZ_task_flags 0x00000008
+#define AOFF_task_sigpending 0x00000010
+#define ASIZ_task_sigpending 0x00000004
+#define AOFF_task_addr_limit 0x00000018
+#define ASIZ_task_addr_limit 0x00000008
+#define AOFF_task_exec_domain 0x00000020
+#define ASIZ_task_exec_domain 0x00000008
+#define AOFF_task_need_resched 0x00000028
+#define ASIZ_task_need_resched 0x00000008
+#define AOFF_task_counter 0x00000030
+#define ASIZ_task_counter 0x00000008
+#define AOFF_task_priority 0x00000038
+#define ASIZ_task_priority 0x00000008
+#define AOFF_task_has_cpu 0x00000040
+#define ASIZ_task_has_cpu 0x00000004
+#define AOFF_task_processor 0x00000044
+#define ASIZ_task_processor 0x00000004
+#define AOFF_task_last_processor 0x00000048
+#define ASIZ_task_last_processor 0x00000004
+#define AOFF_task_lock_depth 0x0000004c
+#define ASIZ_task_lock_depth 0x00000004
+#define AOFF_task_next_task 0x00000050
+#define ASIZ_task_next_task 0x00000008
+#define AOFF_task_prev_task 0x00000058
+#define ASIZ_task_prev_task 0x00000008
+#define AOFF_task_next_run 0x00000060
+#define ASIZ_task_next_run 0x00000008
+#define AOFF_task_prev_run 0x00000068
+#define ASIZ_task_prev_run 0x00000008
+#define AOFF_task_binfmt 0x00000070
+#define ASIZ_task_binfmt 0x00000008
+#define AOFF_task_exit_code 0x00000078
+#define ASIZ_task_exit_code 0x00000004
+#define AOFF_task_exit_signal 0x0000007c
+#define ASIZ_task_exit_signal 0x00000004
+#define AOFF_task_pdeath_signal 0x00000080
+#define ASIZ_task_pdeath_signal 0x00000004
+#define AOFF_task_personality 0x00000088
+#define ASIZ_task_personality 0x00000008
+#define AOFF_task_pid 0x00000094
+#define ASIZ_task_pid 0x00000004
+#define AOFF_task_pgrp 0x00000098
+#define ASIZ_task_pgrp 0x00000004
+#define AOFF_task_tty_old_pgrp 0x0000009c
+#define ASIZ_task_tty_old_pgrp 0x00000004
+#define AOFF_task_session 0x000000a0
+#define ASIZ_task_session 0x00000004
+#define AOFF_task_leader 0x000000a4
+#define ASIZ_task_leader 0x00000004
+#define AOFF_task_p_opptr 0x000000a8
+#define ASIZ_task_p_opptr 0x00000008
+#define AOFF_task_p_pptr 0x000000b0
+#define ASIZ_task_p_pptr 0x00000008
+#define AOFF_task_p_cptr 0x000000b8
+#define ASIZ_task_p_cptr 0x00000008
+#define AOFF_task_p_ysptr 0x000000c0
+#define ASIZ_task_p_ysptr 0x00000008
+#define AOFF_task_p_osptr 0x000000c8
+#define ASIZ_task_p_osptr 0x00000008
+#define AOFF_task_pidhash_next 0x000000d0
+#define ASIZ_task_pidhash_next 0x00000008
+#define AOFF_task_pidhash_pprev 0x000000d8
+#define ASIZ_task_pidhash_pprev 0x00000008
+#define AOFF_task_tarray_ptr 0x000000e0
+#define ASIZ_task_tarray_ptr 0x00000008
+#define AOFF_task_wait_chldexit 0x000000e8
+#define ASIZ_task_wait_chldexit 0x00000008
+#define AOFF_task_policy 0x000000f0
+#define ASIZ_task_policy 0x00000008
+#define AOFF_task_rt_priority 0x000000f8
+#define ASIZ_task_rt_priority 0x00000008
+#define AOFF_task_it_real_value 0x00000100
+#define ASIZ_task_it_real_value 0x00000008
+#define AOFF_task_it_prof_value 0x00000108
+#define ASIZ_task_it_prof_value 0x00000008
+#define AOFF_task_it_virt_value 0x00000110
+#define ASIZ_task_it_virt_value 0x00000008
+#define AOFF_task_it_real_incr 0x00000118
+#define ASIZ_task_it_real_incr 0x00000008
+#define AOFF_task_it_prof_incr 0x00000120
+#define ASIZ_task_it_prof_incr 0x00000008
+#define AOFF_task_it_virt_incr 0x00000128
+#define ASIZ_task_it_virt_incr 0x00000008
+#define AOFF_task_real_timer 0x00000130
+#define ASIZ_task_real_timer 0x00000028
+#define AOFF_task_times 0x00000158
+#define ASIZ_task_times 0x00000020
+#define AOFF_task_start_time 0x00000178
+#define ASIZ_task_start_time 0x00000008
+#define AOFF_task_per_cpu_utime 0x00000180
+#define ASIZ_task_per_cpu_utime 0x00000100
+#define AOFF_task_min_flt 0x00000380
+#define ASIZ_task_min_flt 0x00000008
+#define AOFF_task_maj_flt 0x00000388
+#define ASIZ_task_maj_flt 0x00000008
+#define AOFF_task_nswap 0x00000390
+#define ASIZ_task_nswap 0x00000008
+#define AOFF_task_cmin_flt 0x00000398
+#define ASIZ_task_cmin_flt 0x00000008
+#define AOFF_task_cmaj_flt 0x000003a0
+#define ASIZ_task_cmaj_flt 0x00000008
+#define AOFF_task_cnswap 0x000003a8
+#define ASIZ_task_cnswap 0x00000008
+#define AOFF_task_swap_address 0x000003b8
+#define ASIZ_task_swap_address 0x00000008
+#define AOFF_task_old_maj_flt 0x000003c0
+#define ASIZ_task_old_maj_flt 0x00000008
+#define AOFF_task_dec_flt 0x000003c8
+#define ASIZ_task_dec_flt 0x00000008
+#define AOFF_task_swap_cnt 0x000003d0
+#define ASIZ_task_swap_cnt 0x00000008
+#define AOFF_task_uid 0x000003d8
+#define ASIZ_task_uid 0x00000004
+#define AOFF_task_euid 0x000003dc
+#define ASIZ_task_euid 0x00000004
+#define AOFF_task_suid 0x000003e0
+#define ASIZ_task_suid 0x00000004
+#define AOFF_task_fsuid 0x000003e4
+#define ASIZ_task_fsuid 0x00000004
+#define AOFF_task_gid 0x000003e8
+#define ASIZ_task_gid 0x00000004
+#define AOFF_task_egid 0x000003ec
+#define ASIZ_task_egid 0x00000004
+#define AOFF_task_sgid 0x000003f0
+#define ASIZ_task_sgid 0x00000004
+#define AOFF_task_fsgid 0x000003f4
+#define ASIZ_task_fsgid 0x00000004
+#define AOFF_task_ngroups 0x000003f8
+#define ASIZ_task_ngroups 0x00000004
+#define AOFF_task_groups 0x000003fc
+#define ASIZ_task_groups 0x00000080
+#define AOFF_task_cap_effective 0x0000047c
+#define ASIZ_task_cap_effective 0x00000004
+#define AOFF_task_cap_inheritable 0x00000480
+#define ASIZ_task_cap_inheritable 0x00000004
+#define AOFF_task_cap_permitted 0x00000484
+#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_user 0x00000488
+#define ASIZ_task_user 0x00000008
+#define AOFF_task_rlim 0x00000490
+#define ASIZ_task_rlim 0x000000a0
+#define AOFF_task_used_math 0x00000530
+#define ASIZ_task_used_math 0x00000002
+#define AOFF_task_comm 0x00000532
+#define ASIZ_task_comm 0x00000010
+#define AOFF_task_link_count 0x00000544
+#define ASIZ_task_link_count 0x00000004
+#define AOFF_task_tty 0x00000548
+#define ASIZ_task_tty 0x00000008
+#define AOFF_task_semundo 0x00000550
+#define ASIZ_task_semundo 0x00000008
+#define AOFF_task_semsleeping 0x00000558
+#define ASIZ_task_semsleeping 0x00000008
+#define AOFF_task_tss 0x00000560
+#define ASIZ_task_tss 0x00000470
+#define AOFF_task_fs 0x000009d0
+#define ASIZ_task_fs 0x00000008
+#define AOFF_task_files 0x000009d8
+#define ASIZ_task_files 0x00000008
+#define AOFF_task_mm 0x000009e0
+#define ASIZ_task_mm 0x00000008
+#define AOFF_task_sigmask_lock 0x000009e8
+#define ASIZ_task_sigmask_lock 0x0000000c
+#define AOFF_task_sig 0x000009f8
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x000009c8
+#define AOFF_task_signal 0x00000a00
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x000009d0
+#define AOFF_task_blocked 0x00000a08
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x000009d8
+#define AOFF_task_sigqueue 0x00000a10
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x000009e0
+#define AOFF_task_sigqueue_tail 0x00000a18
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_sas_ss_sp 0x000009e8
+#define AOFF_task_sas_ss_sp 0x00000a20
#define ASIZ_task_sas_ss_sp 0x00000008
-#define AOFF_task_sas_ss_size 0x000009f0
+#define AOFF_task_sas_ss_size 0x00000a28
#define ASIZ_task_sas_ss_size 0x00000008
+#define ASIZ_task 0x00000a30
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_cache 0x00000008
@@ -501,6 +799,7 @@
#define ASIZ_mm_cpu_vm_mask 0x00000008
#define AOFF_mm_segments 0x000000b8
#define ASIZ_mm_segments 0x00000008
+#define ASIZ_mm 0x000000c0
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
#define AOFF_thread_wstate 0x00000008
@@ -531,14 +830,26 @@
#define ASIZ_thread_sig_address 0x00000008
#define AOFF_thread_sig_desc 0x000003f0
#define ASIZ_thread_sig_desc 0x00000008
-#define AOFF_thread_fpdepth 0x000003f8
+#define AOFF_thread_user_cntd0 0x000003f8
+#define ASIZ_thread_user_cntd0 0x00000008
+#define AOFF_thread_user_cntd1 0x00000400
+#define ASIZ_thread_user_cntd1 0x00000008
+#define AOFF_thread_kernel_cntd0 0x00000408
+#define ASIZ_thread_kernel_cntd0 0x00000008
+#define AOFF_thread_kernel_cntd1 0x00000410
+#define ASIZ_thread_kernel_cntd1 0x00000008
+#define AOFF_thread_pcr_reg 0x00000418
+#define ASIZ_thread_pcr_reg 0x00000008
+#define AOFF_thread_fpdepth 0x00000420
#define ASIZ_thread_fpdepth 0x00000001
-#define AOFF_thread_fpsaved 0x000003f9
+#define AOFF_thread_fpsaved 0x00000421
#define ASIZ_thread_fpsaved 0x00000007
-#define AOFF_thread_gsr 0x00000400
+#define AOFF_thread_gsr 0x00000428
#define ASIZ_thread_gsr 0x00000007
-#define AOFF_thread_xfsr 0x00000408
+#define AOFF_thread_xfsr 0x00000430
#define ASIZ_thread_xfsr 0x00000038
+#define ASIZ_thread 0x00000470
+#endif /* SPIN_LOCK_DEBUG */
#endif /* __SMP__ */
diff --git a/include/asm-sparc64/audioio.h b/include/asm-sparc64/audioio.h
index 8d3000ea9..ca5e06538 100644
--- a/include/asm-sparc64/audioio.h
+++ b/include/asm-sparc64/audioio.h
@@ -88,6 +88,7 @@ typedef struct audio_info {
#define AUDIO_ENCODING_ULAW (1) /* u-law encoding */
#define AUDIO_ENCODING_ALAW (2) /* A-law encoding */
#define AUDIO_ENCODING_LINEAR (3) /* Linear PCM encoding */
+#define AUDIO_ENCODING_FLOAT (4) /* IEEE float (-1. <-> +1.) */
#define AUDIO_ENCODING_DVI (104) /* DVI ADPCM */
#define AUDIO_ENCODING_LINEAR8 (105) /* 8 bit UNSIGNED */
#define AUDIO_ENCODING_LINEARLE (106) /* Linear PCM LE encoding */
@@ -139,8 +140,7 @@ typedef struct audio_info {
#define AUDIO_LINE_IN 0x02 /* input from line in */
#define AUDIO_CD 0x04 /* input from on-board CD inputs */
#define AUDIO_INTERNAL_CD_IN AUDIO_CD /* input from internal CDROM */
-/* Supposedly an undocumented feature of the 4231 */
-#define AUDIO_ANALOG_LOOPBACK 0x40
+#define AUDIO_ANALOG_LOOPBACK 0x40 /* input from output */
/*
@@ -227,22 +227,10 @@ typedef struct audio_device {
* if the hardware supports this. The argument is TRUE to set loopback,
* FALSE to reset to normal operation. If the hardware does not support
* internal loopback, the ioctl should fail with EINVAL.
+ * Causes ADC data to be digitally mixed in and sent to the DAC.
*/
#define AUDIO_DIAG_LOOPBACK _IOW('A', 101, int)
-#ifdef notneeded
-/*
- * Structure sent up as a M_PROTO message on trace streams
- */
-typedef struct audtrace_hdr audtrace_hdr_t;
-struct audtrace_hdr {
- unsigned int seq; /* Sequence number (per-aud_stream) */
- int type; /* device-dependent */
- struct timeval timestamp;
- char _f[8]; /* filler */
-};
-#endif
-
/*
* Linux kernel internal implementation.
*/
@@ -257,15 +245,34 @@ struct audtrace_hdr {
#define SDF_OPEN_WRITE 0x00000001
#define SDF_OPEN_READ 0x00000002
+struct sparcaudio_ringbuffer
+{
+ __u8 *rb_start, *rb_end; /* start, end of this memory buffer */
+ __u8 *rb_in, *rb_out; /* input, output pointers */
+
+ int rb_fragsize; /* size of an audio frag */
+ int rb_numfrags; /* number of frags */
+
+ int rb_count, rb_hiwat, rb_lowat; /* bytes in use, hi/lo wat points */
+
+ int rb_bufsize; /* total size of buffer */
+};
+
struct sparcaudio_driver
{
const char * name;
struct sparcaudio_operations *ops;
void *private;
unsigned long flags;
+ struct strevent *sd_siglist;
+ /* duplex: 0=simplex, 1=duplex, 2=loop */
+ int sd_sigflags, duplex;
+
+ /* Which audio device are we? */
+ int index;
- /* This device */
- struct linux_sbus_device *dev;
+ /* This device */
+ struct linux_sbus_device *dev;
/* Processes blocked on open() sit here. */
struct wait_queue *open_wait;
@@ -273,32 +280,37 @@ struct sparcaudio_driver
/* Task queue for this driver's bottom half. */
struct tq_struct tqueue;
+ /* Start of ring buffer support */
+ __u8 *input_buffer, *output_buffer;
+
/* Support for a circular queue of output buffers. */
__u8 **output_buffers;
- size_t *output_sizes, output_size;
- int num_output_buffers, output_front, output_rear;
- int output_count, output_active, playing_count;
+ size_t *output_sizes, output_size, output_buffer_size;
+ int num_output_buffers, output_front, output_rear, output_offset;
+ int output_count, output_active, playing_count, output_eof;
struct wait_queue *output_write_wait, *output_drain_wait;
+ char *output_notify;
/* Support for a circular queue of input buffers. */
__u8 **input_buffers;
- int input_offset;
- int num_input_buffers, input_front, input_rear;
+ size_t *input_sizes, input_size, input_buffer_size;
+ int num_input_buffers, input_front, input_rear, input_offset;
int input_count, input_active, recording_count;
struct wait_queue *input_read_wait;
+
+ /* Hack to make it look like we support variable size buffers. */
+ int buffer_size;
};
struct sparcaudio_operations
{
int (*open)(struct inode *, struct file *, struct sparcaudio_driver *);
- void (*release)(struct inode *, struct file *,
- struct sparcaudio_driver *);
- int (*ioctl)(struct inode *, struct file *, unsigned int,
- unsigned long, struct sparcaudio_driver *);
+ void (*release)(struct inode *, struct file *, struct sparcaudio_driver *);
+ int (*ioctl)(struct inode *, struct file *, unsigned int, unsigned long,
+ struct sparcaudio_driver *);
/* Ask driver to begin playing a buffer. */
- void (*start_output)(struct sparcaudio_driver *, __u8 *,
- unsigned long);
+ void (*start_output)(struct sparcaudio_driver *, __u8 *, unsigned long);
/* Ask driver to stop playing a buffer. */
void (*stop_output)(struct sparcaudio_driver *);
@@ -382,35 +394,125 @@ struct sparcaudio_operations
/* Get and set output mute */
int (*set_output_muted)(struct sparcaudio_driver *, int);
int (*get_output_muted)(struct sparcaudio_driver *);
+
+ /* Get and set output pause */
+ int (*set_output_pause)(struct sparcaudio_driver *, int);
+ int (*get_output_pause)(struct sparcaudio_driver *);
+
+ /* Get and set input pause */
+ int (*set_input_pause)(struct sparcaudio_driver *, int);
+ int (*get_input_pause)(struct sparcaudio_driver *);
+
+ /* Get and set output samples */
+ int (*set_output_samples)(struct sparcaudio_driver *, int);
+ int (*get_output_samples)(struct sparcaudio_driver *);
+
+ /* Get and set input samples */
+ int (*set_input_samples)(struct sparcaudio_driver *, int);
+ int (*get_input_samples)(struct sparcaudio_driver *);
+
+ /* Get and set output error */
+ int (*set_output_error)(struct sparcaudio_driver *, int);
+ int (*get_output_error)(struct sparcaudio_driver *);
+
+ /* Get and set input error */
+ int (*set_input_error)(struct sparcaudio_driver *, int);
+ int (*get_input_error)(struct sparcaudio_driver *);
+
+ /* Get supported encodings */
+ int (*get_formats)(struct sparcaudio_driver *);
};
-extern int register_sparcaudio_driver(struct sparcaudio_driver *);
-extern int unregister_sparcaudio_driver(struct sparcaudio_driver *);
+extern int register_sparcaudio_driver(struct sparcaudio_driver *, int);
+extern int unregister_sparcaudio_driver(struct sparcaudio_driver *, int);
extern void sparcaudio_output_done(struct sparcaudio_driver *, int);
-extern void sparcaudio_input_done(struct sparcaudio_driver *);
+extern void sparcaudio_input_done(struct sparcaudio_driver *, int);
extern int sparcaudio_init(void);
extern int amd7930_init(void);
extern int cs4231_init(void);
#endif
+/* Mixer helper ioctls */
+#define right(a) (((a >> 8) & 0xff) % 101)
+#define left(a) ((a & 0xff) % 101)
+
/* Macros to convert between mixer stereo volumes and gain (mono) */
-#define s_to_m(a) (((((a) >> 8) & 0x7f) + ((a) & 0x7f)) / 2)
-#define m_to_s(a) (((a) << 8) + (a))
+#define s_to_m(a) ((((left(a) + right(a)) * 255) / 200) % 256)
+#define m_to_s(a) ((a * 100 / 255) + ((a * 100 / 255) << 8))
/* convert mixer stereo volume to balance */
-#define s_to_b(a) (AUDIO_RIGHT_BALANCE * ((((a) >> 8) & 0xff) / (((((a) >> 8) & 0xff) + ((a) & 0xff)) / 2)))
+#define s_to_b(a) (s_to_g(a) == 0) ? 32 : ((left(a) * AUDIO_RIGHT_BALANCE / (left(a) + right(a))))
/* convert mixer stereo volume to audio gain */
-#define s_to_g(a) (((((a) >> 8) & 0xff) + ((a) & 0xff)) / 2)
+#define s_to_g(a) ((((right(a) + left(a)) * 255) / 200) % 256)
/* convert gain a and balance b to mixer volume */
-#define b_to_s(a,b) ((a * (b / AUDIO_RIGHT_BALANCE) << 8) + (a * (1 - (b / AUDIO_RIGHT_BALANCE))))
+#define b_to_s(a,b) (((((b * a * 200) / (AUDIO_RIGHT_BALANCE * 255)) % 100) << 8) + ((((AUDIO_RIGHT_BALANCE - b) * a * 200) / (AUDIO_RIGHT_BALANCE * 255)) % 100))
+
+/* Device minor numbers */
#define SPARCAUDIO_MIXER_MINOR 0
-#define SPARCAUDIO_DSP16_MINOR 1
+/* No sequencer (1) */
+/* No midi (2) */
#define SPARCAUDIO_DSP_MINOR 3
#define SPARCAUDIO_AUDIO_MINOR 4
-#define SPARCAUDIO_AUDIOCTL_MINOR 5
+#define SPARCAUDIO_DSP16_MINOR 5
#define SPARCAUDIO_STATUS_MINOR 6
+#define SPARCAUDIO_AUDIOCTL_MINOR 7
+/* No sequencer l2 (8) */
+/* No sound processor (9) */
+
+/* allocate 2^SPARCAUDIO_DEVICE_SHIFT minors per audio device */
+#define SPARCAUDIO_DEVICE_SHIFT 4
+
+/* With the coming of dummy devices this should perhaps be as high as 5? */
+#define SPARCAUDIO_MAX_DEVICES 3
+
+/* Streams crap for realaudio */
+
+typedef
+struct strevent {
+ struct strevent *se_next; /* next event for this stream or NULL*/
+ struct strevent *se_prev; /* previous event for this stream or last
+ * event if this is the first one*/
+ pid_t se_pid; /* process to be signaled */
+ short se_evs; /* events wanted */
+} strevent_t;
+
+typedef
+struct stdata
+{
+ struct stdata *sd_next ; /* all stdatas are linked together */
+ struct stdata *sd_prev ;
+ struct strevent *sd_siglist; /* processes to be sent SIGPOLL */
+ int sd_sigflags; /* logical OR of all siglist events */
+} stdata_t;
+
+#define I_NREAD _IOR('S',01, int)
+#define I_NREAD_SOLARIS (('S'<<8)|1)
+
+#define I_FLUSH _IO('S',05)
+#define I_FLUSH_SOLARIS (('S'<<8)|5)
+#define FLUSHR 1 /* flush read queue */
+#define FLUSHW 2 /* flush write queue */
+#define FLUSHRW 3 /* flush both queues */
+
+#define I_SETSIG _IO('S',011)
+#define I_SETSIG_SOLARIS (('S'<<8)|11)
+#define S_INPUT 0x01
+#define S_HIPRI 0x02
+#define S_OUTPUT 0x04
+#define S_MSG 0x08
+#define S_ERROR 0x0010
+#define S_HANGUP 0x0020
+#define S_RDNORM 0x0040
+#define S_WRNORM S_OUTPUT
+#define S_RDBAND 0x0080
+#define S_WRBAND 0x0100
+#define S_BANDURG 0x0200
+#define S_ALL 0x03FF
+
+#define I_GETSIG _IOR('S',012,int)
+#define I_GETSIG_SOLARIS (('S'<<8)|12)
#endif
diff --git a/include/asm-sparc64/dma.h b/include/asm-sparc64/dma.h
index aedfa7ddd..e6175ab4f 100644
--- a/include/asm-sparc64/dma.h
+++ b/include/asm-sparc64/dma.h
@@ -1,4 +1,4 @@
-/* $Id: dma.h,v 1.8 1998/04/13 07:27:06 davem Exp $
+/* $Id: dma.h,v 1.10 1998/10/27 23:28:50 davem Exp $
* include/asm-sparc64/dma.h
*
* Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu)
@@ -13,6 +13,18 @@
#include <asm/sbus.h>
#include <asm/delay.h>
#include <asm/oplib.h>
+#include <asm/spinlock.h>
+
+extern spinlock_t dma_spin_lock;
+
+#define claim_dma_lock() \
+({ unsigned long flags; \
+ spin_lock_irqsave(&dma_spin_lock, flags); \
+ flags; \
+})
+
+#define release_dma_lock(__flags) \
+ spin_unlock_irqrestore(&dma_spin_lock, __flags);
/* These are irrelevant for Sparc DMA, but we leave it in so that
* things can compile.
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h
index 509d5c254..521bfb72a 100644
--- a/include/asm-sparc64/elf.h
+++ b/include/asm-sparc64/elf.h
@@ -1,4 +1,4 @@
-/* $Id: elf.h,v 1.17 1998/03/23 10:07:06 jj Exp $ */
+/* $Id: elf.h,v 1.18 1998/09/09 05:36:08 davem Exp $ */
#ifndef __ASM_SPARC64_ELF_H
#define __ASM_SPARC64_ELF_H
@@ -9,13 +9,6 @@
#include <asm/ptrace.h>
#include <asm/processor.h>
-typedef unsigned long elf_greg_t;
-
-#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
-typedef unsigned long elf_fpregset_t;
-
/*
* These are used to set parameters in the core dumps.
*/
@@ -23,6 +16,18 @@ typedef unsigned long elf_fpregset_t;
#define ELF_ARCH EM_SPARCV9
#define ELF_CLASS ELFCLASS64
#define ELF_DATA ELFDATA2MSB
+
+typedef unsigned long elf_greg_t;
+
+#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+typedef struct {
+ unsigned long pr_regs[32];
+ unsigned long pr_fsr;
+ unsigned long pr_gsr;
+ unsigned long pr_fprs;
+} elf_fpregset_t;
#endif
/*
diff --git a/include/asm-sparc64/fcntl.h b/include/asm-sparc64/fcntl.h
index 1db734bed..e0352b8d9 100644
--- a/include/asm-sparc64/fcntl.h
+++ b/include/asm-sparc64/fcntl.h
@@ -1,4 +1,4 @@
-/* $Id: fcntl.h,v 1.3 1997/04/14 17:05:20 jj Exp $ */
+/* $Id: fcntl.h,v 1.5 1998/10/26 20:03:15 davem Exp $ */
#ifndef _SPARC64_FCNTL_H
#define _SPARC64_FCNTL_H
@@ -17,6 +17,8 @@
#define O_SYNC 0x2000
#define O_NONBLOCK 0x4000
#define O_NOCTTY 0x8000 /* not fcntl */
+#define O_DIRECTORY 0x10000 /* must be a directory */
+#define O_NOFOLLOW 0x20000 /* don't follow links */
#define F_DUPFD 0 /* dup */
#define F_GETFD 1 /* get f_flags */
diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h
index e90a7aca1..33550d4e1 100644
--- a/include/asm-sparc64/floppy.h
+++ b/include/asm-sparc64/floppy.h
@@ -1,4 +1,4 @@
-/* $Id: floppy.h,v 1.11 1998/05/22 14:33:39 jj Exp $
+/* $Id: floppy.h,v 1.16 1998/10/06 20:32:15 ecd Exp $
* asm-sparc64/floppy.h: Sparc specific parts of the Floppy driver.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -22,6 +22,14 @@
#include <asm/sbus.h>
#include <asm/irq.h>
+
+/*
+ * Define this to enable exchanging drive 0 and 1 if only drive 1 is
+ * probed on PCI machines.
+ */
+#undef PCI_FDC_SWAP_DRIVES
+
+
/* References:
* 1) Netbsd Sun floppy driver.
* 2) NCR 82077 controller manual
@@ -31,7 +39,7 @@ struct sun_flpy_controller {
volatile unsigned char status1_82077; /* Auxiliary Status reg. 1 */
volatile unsigned char status2_82077; /* Auxiliary Status reg. 2 */
volatile unsigned char dor_82077; /* Digital Output reg. */
- volatile unsigned char tapectl_82077; /* What the? Tape control reg? */
+ volatile unsigned char tapectl_82077; /* Tape Control reg */
volatile unsigned char status_82077; /* Main Status Register. */
#define drs_82077 status_82077 /* Digital Rate Select reg. */
volatile unsigned char data_82077; /* Data fifo. */
@@ -41,7 +49,7 @@ struct sun_flpy_controller {
};
/* You'll only ever find one controller on an Ultra anyways. */
-static struct sun_flpy_controller *sun_fdc = NULL;
+static struct sun_flpy_controller *sun_fdc = (struct sun_flpy_controller *)-1;
volatile unsigned char *fdc_status;
static struct linux_sbus_device *floppy_sdev = NULL;
@@ -96,19 +104,20 @@ static struct sun_floppy_ops sun_fdops;
/* XXX This isn't really correct. XXX */
#define get_dma_residue(x) (0)
-#define FLOPPY0_TYPE 4
-#define FLOPPY1_TYPE 0
-
/* Super paranoid... */
#undef HAVE_DISABLE_HLT
+static int sun_floppy_types[2] = { 0, 0 };
+
/* Here is where we catch the floppy driver trying to initialize,
* therefore this is where we call the PROM device tree probing
* routine etc. on the Sparc.
*/
-#define FDC1 sun_floppy_init()
+#define FLOPPY0_TYPE sun_floppy_init()
+#define FLOPPY1_TYPE sun_floppy_types[1]
-static int FDC2 = -1;
+#define FDC1 ((unsigned long)sun_fdc)
+static int FDC2 = -1;
#define N_FDC 1
#define N_DRIVE 8
@@ -269,8 +278,10 @@ static int sun_fd_eject(int drive)
#ifdef CONFIG_PCI
#include <asm/ebus.h>
+#include <asm/ns87303.h>
-static struct linux_ebus_dma *sun_fd_ebus_dma;
+static struct linux_ebus_dma *sun_pci_fd_ebus_dma;
+static int sun_pci_broken_drive = -1;
extern void floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs);
@@ -284,44 +295,81 @@ static void sun_pci_fd_outb(unsigned char val, unsigned long port)
outb(val, port);
}
+static void sun_pci_fd_broken_outb(unsigned char val, unsigned long port)
+{
+ /*
+ * XXX: Due to SUN's broken floppy connector on AX and AXi
+ * we need to turn on MOTOR_0 also, if the floppy is
+ * jumpered to DS1 (like most PC floppies are). I hope
+ * this does not hurt correct hardware like the AXmp.
+ * (Eddie, Sep 12 1998).
+ */
+ if (port == ((unsigned long)sun_fdc) + 2) {
+ if (((val & 0x03) == sun_pci_broken_drive) && (val & 0x20)) {
+ val |= 0x10;
+ }
+ }
+ outb(val, port);
+}
+
+#ifdef PCI_FDC_SWAP_DRIVES
+static void sun_pci_fd_lde_broken_outb(unsigned char val, unsigned long port)
+{
+ /*
+ * XXX: Due to SUN's broken floppy connector on AX and AXi
+ * we need to turn on MOTOR_0 also, if the floppy is
+ * jumpered to DS1 (like most PC floppies are). I hope
+ * this does not hurt correct hardware like the AXmp.
+ * (Eddie, Sep 12 1998).
+ */
+ if (port == ((unsigned long)sun_fdc) + 2) {
+ if (((val & 0x03) == sun_pci_broken_drive) && (val & 0x10)) {
+ val &= ~(0x03);
+ val |= 0x21;
+ }
+ }
+ outb(val, port);
+}
+#endif /* PCI_FDC_SWAP_DRIVES */
+
static void sun_pci_fd_reset_dma(void)
{
unsigned int dcsr;
- writel(EBUS_DCSR_RESET, &sun_fd_ebus_dma->dcsr);
+ writel(EBUS_DCSR_RESET, &sun_pci_fd_ebus_dma->dcsr);
dcsr = EBUS_DCSR_BURST_SZ_16 | EBUS_DCSR_TCI_DIS |
EBUS_DCSR_EN_CNT | EBUS_DCSR_INT_EN;
- writel(dcsr, (unsigned long)&sun_fd_ebus_dma->dcsr);
+ writel(dcsr, (unsigned long)&sun_pci_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_enable_dma(void)
{
unsigned int dcsr;
- dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_pci_fd_ebus_dma->dcsr);
dcsr |= EBUS_DCSR_EN_DMA;
- writel(dcsr, &sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_pci_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_disable_dma(void)
{
unsigned int dcsr;
- dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_pci_fd_ebus_dma->dcsr);
while (dcsr & EBUS_DCSR_DRAIN)
- dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_pci_fd_ebus_dma->dcsr);
dcsr &= ~(EBUS_DCSR_EN_DMA);
if (dcsr & EBUS_DCSR_ERR_PEND)
sun_pci_fd_reset_dma();
- writel(dcsr, &sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_pci_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_set_dma_mode(int mode)
{
unsigned int dcsr;
- dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_pci_fd_ebus_dma->dcsr);
dcsr |= EBUS_DCSR_EN_CNT | EBUS_DCSR_TC;
/*
* For EBus WRITE means to system memory, which is
@@ -331,41 +379,41 @@ static void sun_pci_fd_set_dma_mode(int mode)
dcsr &= ~(EBUS_DCSR_WRITE);
else
dcsr |= EBUS_DCSR_WRITE;
- writel(dcsr, &sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_pci_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_set_dma_count(int length)
{
- writel(length, &sun_fd_ebus_dma->dbcr);
+ writel(length, &sun_pci_fd_ebus_dma->dbcr);
}
static void sun_pci_fd_set_dma_addr(char *buffer)
{
unsigned int addr = virt_to_bus(buffer);
- writel(addr, &sun_fd_ebus_dma->dacr);
+ writel(addr, &sun_pci_fd_ebus_dma->dacr);
}
static unsigned int sun_pci_get_dma_residue(void)
{
- return readl(&sun_fd_ebus_dma->dbcr);
+ return readl(&sun_pci_fd_ebus_dma->dbcr);
}
static void sun_pci_fd_enable_irq(void)
{
unsigned int dcsr;
- dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_pci_fd_ebus_dma->dcsr);
dcsr |= EBUS_DCSR_INT_EN;
- writel(dcsr, &sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_pci_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_disable_irq(void)
{
unsigned int dcsr;
- dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_pci_fd_ebus_dma->dcsr);
dcsr &= ~(EBUS_DCSR_INT_EN);
- writel(dcsr, &sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_pci_fd_ebus_dma->dcsr);
}
static int sun_pci_fd_request_irq(void)
@@ -390,7 +438,101 @@ static int sun_pci_fd_eject(int drive)
{
return -EINVAL;
}
-#endif
+
+
+/*
+ * Floppy probing, we'd like to use /dev/fd0 for a single Floppy on PCI,
+ * even if this is configured using DS1, thus looks like /dev/fd1 with
+ * the cabling used in Ultras.
+ */
+#define DOR (port + 2)
+#define MSR (port + 4)
+#define FIFO (port + 5)
+
+static void sun_pci_fd_out_byte(unsigned long port, unsigned char val,
+ unsigned long reg)
+{
+ unsigned char status;
+ int timeout = 1000;
+
+ while (!((status = inb(MSR)) & 0x80) && --timeout)
+ udelay(100);
+ outb(val, reg);
+}
+
+static unsigned char sun_pci_fd_sensei(unsigned long port)
+{
+ unsigned char result[2] = { 0x70, 0x00 };
+ unsigned char status;
+ int i = 0;
+
+ sun_pci_fd_out_byte(port, 0x08, FIFO);
+ do {
+ int timeout = 1000;
+
+ while (!((status = inb(MSR)) & 0x80) && --timeout)
+ udelay(100);
+
+ if (!timeout)
+ break;
+
+ if ((status & 0xf0) == 0xd0)
+ result[i++] = inb(FIFO);
+ else
+ break;
+ } while (i < 2);
+
+ return result[0];
+}
+
+static void sun_pci_fd_reset(unsigned long port)
+{
+ unsigned char mask = 0x00;
+ unsigned char status;
+ int timeout = 10000;
+
+ outb(0x80, MSR);
+ do {
+ status = sun_pci_fd_sensei(port);
+ if ((status & 0xc0) == 0xc0)
+ mask |= 1 << (status & 0x03);
+ else
+ udelay(100);
+ } while ((mask != 0x0f) && --timeout);
+}
+
+static int sun_pci_fd_test_drive(unsigned long port, int drive)
+{
+ unsigned char status, data;
+ int timeout = 1000;
+ int ready;
+
+ sun_pci_fd_reset(port);
+
+ data = (0x10 << drive) | 0x0c | drive;
+ sun_pci_fd_out_byte(port, data, DOR);
+
+ sun_pci_fd_out_byte(port, 0x07, FIFO);
+ sun_pci_fd_out_byte(port, drive & 0x03, FIFO);
+
+ do {
+ udelay(100);
+ status = sun_pci_fd_sensei(port);
+ } while (((status & 0xc0) == 0x80) && --timeout);
+
+ if (!timeout)
+ ready = 0;
+ else
+ ready = (status & 0x10) ? 0 : 1;
+
+ sun_pci_fd_reset(port);
+ return ready;
+}
+#undef FIFO
+#undef MSR
+#undef DOR
+
+#endif /* CONFIG_PCI */
static struct linux_prom_registers fd_regs[2];
@@ -400,6 +542,11 @@ __initfunc(static unsigned long sun_floppy_init(void))
int fd_node, num_regs;
struct linux_sbus *bus;
struct linux_sbus_device *sdev = NULL;
+ static int initialized = 0;
+
+ if (initialized)
+ return sun_floppy_types[0];
+ initialized = 1;
for_all_sbusdev (sdev, bus) {
if (!strcmp(sdev->prom_name, "SUNW,fdtwo"))
@@ -421,23 +568,27 @@ __initfunc(static unsigned long sun_floppy_init(void))
}
ebus_done:
if (!edev)
- return -1;
+ return 0;
- prom_getproperty(edev->prom_node, "status", state, sizeof(state));
+ prom_getproperty(edev->prom_node, "status",
+ state, sizeof(state));
if(!strncmp(state, "disabled", 8))
- return -1;
+ return 0;
- if (check_region(edev->base_address[1], sizeof(struct linux_ebus_dma))) {
- printk("sun_floppy_init: can't get region %016lx (%d)\n",
- edev->base_address[1], (int)sizeof(struct linux_ebus_dma));
- return -1;
+ if (check_region(edev->base_address[1],
+ sizeof(struct linux_ebus_dma))) {
+ printk("sun_floppy_init: can't get region at %016lx\n",
+ edev->base_address[1]);
+ return 0;
}
- request_region(edev->base_address[1], sizeof(struct linux_ebus_dma), "floppy DMA");
+ request_region(edev->base_address[1],
+ sizeof(struct linux_ebus_dma), "floppy DMA");
sun_fdc = (struct sun_flpy_controller *)edev->base_address[0];
FLOPPY_IRQ = edev->irqs[0];
- sun_fd_ebus_dma = (struct linux_ebus_dma *)edev->base_address[1];
+ sun_pci_fd_ebus_dma = (struct linux_ebus_dma *)
+ edev->base_address[1];
sun_pci_fd_reset_dma();
sun_fdops.fd_inb = sun_pci_fd_inb;
@@ -461,27 +612,104 @@ __initfunc(static unsigned long sun_floppy_init(void))
fdc_status = &sun_fdc->status_82077;
FLOPPY_MOTOR_MASK = 0xf0;
- return (unsigned long)sun_fdc;
+ /*
+ * XXX: Find out on which machines this is really needed.
+ */
+ if (1) {
+ sun_pci_broken_drive = 1;
+ sun_fdops.fd_outb = sun_pci_fd_broken_outb;
+ }
+
+ allowed_drive_mask = 0;
+ if (sun_pci_fd_test_drive((unsigned long)sun_fdc, 0))
+ sun_floppy_types[0] = 4;
+ if (sun_pci_fd_test_drive((unsigned long)sun_fdc, 1))
+ sun_floppy_types[1] = 4;
+
+#ifdef PCI_FDC_SWAP_DRIVES
+ /*
+ * If only Floppy 1 is present, swap drives.
+ */
+ if (!sun_floppy_types[0] && sun_floppy_types[1]) {
+ unsigned long config = 0;
+ unsigned char tmp;
+
+ for_each_ebus(ebus) {
+ for_each_ebusdev(edev, ebus) {
+ if (!strcmp(edev->prom_name, "ecpp")) {
+ config = edev->base_address[1];
+ goto config_done;
+ }
+ }
+ }
+ config_done:
+
+ /*
+ * Sanity check, is this really the NS87303?
+ */
+ switch (config & 0x3ff) {
+ case 0x02e:
+ case 0x15c:
+ case 0x26e:
+ case 0x398:
+ break;
+ default:
+ config = 0;
+ }
+
+ if (!config)
+ return sun_floppy_types[0];
+
+ /*
+ * Set the drive exchange bit in FCR on NS87303,
+ * make shure other bits are sane before doing so.
+ */
+ tmp = ns87303_readb(config, FER);
+ tmp &= ~(FER_EDM);
+ ns87303_writeb(config, FER, tmp);
+ tmp = ns87303_readb(config, ASC);
+ tmp &= ~(ASC_DRV2_SEL);
+ ns87303_writeb(config, ASC, tmp);
+ tmp = ns87303_readb(config, FCR);
+ tmp |= FCR_LDE;
+ ns87303_writeb(config, FCR, tmp);
+
+ tmp = sun_floppy_types[0];
+ sun_floppy_types[0] = sun_floppy_types[1];
+ sun_floppy_types[1] = tmp;
+
+ if (sun_pci_broken_drive != -1) {
+ sun_pci_broken_drive = 1 - sun_pci_broken_drive;
+ sun_fdops.fd_outb = sun_pci_fd_lde_broken_outb;
+ }
+ }
+#endif /* PCI_FDC_SWAP_DRIVES */
+
+ return sun_floppy_types[0];
#else
- return -1;
+ return 0;
#endif
}
fd_node = sdev->prom_node;
prom_getproperty(fd_node, "status", state, sizeof(state));
if(!strncmp(state, "disabled", 8))
- return -1;
- num_regs = prom_getproperty(fd_node, "reg", (char *) fd_regs, sizeof(fd_regs));
+ return 0;
+ num_regs = prom_getproperty(fd_node, "reg", (char *) fd_regs,
+ sizeof(fd_regs));
num_regs = (num_regs / sizeof(fd_regs[0]));
prom_apply_sbus_ranges(sdev->my_bus, fd_regs, num_regs, sdev);
- /* We cannot do sparc_alloc_io here: it does request_region, which is the generic
- floppy driver trying to do once again */
- sun_fdc = (struct sun_flpy_controller *) (PAGE_OFFSET + fd_regs[0].phys_addr +
- (((unsigned long)fd_regs[0].which_io) << 32));
+ /*
+ * We cannot do sparc_alloc_io here: it does request_region,
+ * which the generic floppy driver tries to do once again.
+ */
+ sun_fdc = (struct sun_flpy_controller *)
+ (PAGE_OFFSET + fd_regs[0].phys_addr +
+ (((unsigned long)fd_regs[0].which_io) << 32));
/* Last minute sanity check... */
if(sun_fdc->status1_82077 == 0xff) {
- sun_fdc = NULL;
- return -1;
+ sun_fdc = (struct sun_flpy_controller *)-1;
+ return 0;
}
sun_fdops.fd_inb = sun_82077_fd_inb;
@@ -503,10 +731,13 @@ __initfunc(static unsigned long sun_floppy_init(void))
sun_fdops.fd_eject = sun_fd_eject;
fdc_status = &sun_fdc->status_82077;
- /* printk("DOR @0x%p\n", &sun_fdc->dor_82077); */ /* P3 */
/* Success... */
- return (unsigned long)sun_fdc;
+ allowed_drive_mask = 0x01;
+ sun_floppy_types[0] = 4;
+ sun_floppy_types[1] = 0;
+
+ return sun_floppy_types[0];
}
#endif /* !(__ASM_SPARC64_FLOPPY_H) */
diff --git a/include/asm-sparc64/hardirq.h b/include/asm-sparc64/hardirq.h
index 5ca51ac77..6ab9ef7ec 100644
--- a/include/asm-sparc64/hardirq.h
+++ b/include/asm-sparc64/hardirq.h
@@ -1,6 +1,6 @@
/* hardirq.h: 64-bit Sparc hard IRQ support.
*
- * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
+ * Copyright (C) 1997, 1998 David S. Miller (davem@caip.rutgers.edu)
*/
#ifndef __SPARC64_HARDIRQ_H
@@ -13,7 +13,12 @@ extern unsigned int local_irq_count;
#else
#define local_irq_count (cpu_data[smp_processor_id()].irq_count)
#endif
-#define in_interrupt() (local_irq_count != 0)
+
+/*
+ * Are we in an interrupt context? Either doing bottom half
+ * or hardware interrupt processing?
+ */
+#define in_interrupt() ((local_irq_count + local_bh_count) != 0)
#ifndef __SMP__
@@ -23,7 +28,7 @@ extern unsigned int local_irq_count;
#define hardirq_enter(cpu) (local_irq_count++)
#define hardirq_exit(cpu) (local_irq_count--)
-#define synchronize_irq() do { } while(0)
+#define synchronize_irq() barrier()
#else /* (__SMP__) */
@@ -47,7 +52,7 @@ static inline void release_irqlock(int cpu)
static inline void hardirq_enter(int cpu)
{
- ++cpu_data[cpu].irq_count;
+ ++(cpu_data[cpu].irq_count);
atomic_inc(&global_irq_count);
membar("#StoreLoad | #StoreStore");
}
@@ -56,31 +61,16 @@ static inline void hardirq_exit(int cpu)
{
membar("#StoreStore | #LoadStore");
atomic_dec(&global_irq_count);
- --cpu_data[cpu].irq_count;
+ --(cpu_data[cpu].irq_count);
}
static inline int hardirq_trylock(int cpu)
{
- unsigned long flags;
-
- __save_and_cli(flags);
- atomic_inc(&global_irq_count);
- if(atomic_read(&global_irq_count) != 1 ||
- (*(((unsigned char *)(&global_irq_lock)))) != 0) {
- atomic_dec(&global_irq_count);
- __restore_flags(flags);
- return 0;
- }
- ++cpu_data[cpu].irq_count;
- return 1;
+ return (! atomic_read(&global_irq_count) &&
+ ! spin_is_locked (&global_irq_lock));
}
-static inline void hardirq_endlock(int cpu)
-{
- __cli();
- hardirq_exit(cpu);
- __sti();
-}
+#define hardirq_endlock(cpu) do { } while (0)
extern void synchronize_irq(void);
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h
index 8ac583281..503acdb27 100644
--- a/include/asm-sparc64/ide.h
+++ b/include/asm-sparc64/ide.h
@@ -1,4 +1,4 @@
-/* $Id: ide.h,v 1.9 1998/05/08 21:05:28 davem Exp $
+/* $Id: ide.h,v 1.11 1998/08/12 22:19:37 ecd Exp $
* ide.h: Ultra/PCI specific IDE glue.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
@@ -10,6 +10,8 @@
#ifdef __KERNEL__
+#include <asm/pgtable.h>
+
typedef unsigned long ide_ioreg_t;
#undef MAX_HWIFS
@@ -116,24 +118,19 @@ static __inline__ int ide_ack_intr(ide_ioreg_t status_port, ide_ioreg_t irq_port
#define insw(port, buf, nr) ide_insw((port), (buf), (nr))
#define outsw(port, buf, nr) ide_outsw((port), (buf), (nr))
-/* We need to use L1 cache bypassing to prevent dcache alias
- * inconsistencies with user space. -DaveM
- */
static __inline__ void ide_insw(unsigned long port,
void *dst,
unsigned long count)
{
volatile unsigned short *data_port;
- u16 *ps = (u16 *)__pa(dst);
+ unsigned long end = (unsigned long)dst + count;
+ u16 *ps = dst;
u32 *pi;
data_port = (volatile unsigned short *)port;
if(((u64)ps) & 0x2) {
- __asm__ __volatile__("stha %0, [%1] %2"
- : /* no outputs */
- : "r" (*data_port), "r" (ps++),
- "i" (ASI_PHYS_USE_EC));
+ *ps++ = *data_port;
count--;
}
pi = (u32 *)ps;
@@ -142,18 +139,14 @@ static __inline__ void ide_insw(unsigned long port,
w = (*data_port) << 16;
w |= (*data_port);
- __asm__ __volatile__("stwa %0, [%1] %2"
- : /* no outputs */
- : "r" (w), "r" (pi++),
- "i" (ASI_PHYS_USE_EC));
+ *pi++ = w;
count -= 2;
}
ps = (u16 *)pi;
if(count)
- __asm__ __volatile__("stha %0, [%1] %2"
- : /* no outputs */
- : "r" (*data_port), "r" (ps),
- "i" (ASI_PHYS_USE_EC));
+ *ps++ = *data_port;
+
+ __flush_dcache_range((unsigned long)dst, end);
}
static __inline__ void ide_outsw(unsigned long port,
@@ -161,37 +154,30 @@ static __inline__ void ide_outsw(unsigned long port,
unsigned long count)
{
volatile unsigned short *data_port;
- const u16 *ps = (const u16 *)__pa(src);
+ unsigned long end = (unsigned long)src + count;
+ const u16 *ps = src;
const u32 *pi;
data_port = (volatile unsigned short *)port;
if(((u64)src) & 0x2) {
- u16 w;
- __asm__ __volatile__("lduha [%1] %2, %0"
- : "=r" (w)
- : "r" (ps++), "i" (ASI_PHYS_USE_EC));
- *data_port = w;
+ *data_port = *ps++;
count--;
}
pi = (const u32 *)ps;
while(count >= 2) {
u32 w;
- __asm__ __volatile__("lduwa [%1] %2, %0"
- : "=r" (w)
- : "r" (pi++), "i" (ASI_PHYS_USE_EC));
+
+ w = *pi++;
*data_port = (w >> 16);
*data_port = w;
count -= 2;
}
ps = (const u16 *)pi;
- if(count) {
- u16 w;
- __asm__ __volatile__("lduha [%1] %2, %0"
- : "=r" (w)
- : "r" (ps++), "i" (ASI_PHYS_USE_EC));
- *data_port = w;
- }
+ if(count)
+ *data_port = *ps;
+
+ __flush_dcache_range((unsigned long)src, end);
}
#define T_CHAR (0x0000) /* char: don't touch */
diff --git a/include/asm-sparc64/io.h b/include/asm-sparc64/io.h
index a6bdff9a3..c9e3c8460 100644
--- a/include/asm-sparc64/io.h
+++ b/include/asm-sparc64/io.h
@@ -1,4 +1,4 @@
-/* $Id: io.h,v 1.18 1998/07/12 12:07:43 ecd Exp $ */
+/* $Id: io.h,v 1.19 1998/08/23 05:41:46 ecd Exp $ */
#ifndef __SPARC64_IO_H
#define __SPARC64_IO_H
@@ -127,7 +127,10 @@ extern void insl(unsigned long addr, void *dst, unsigned long count);
#define writew(w, addr) outw((w), (unsigned long)(addr))
#define writel(l, addr) outl((l), (unsigned long)(addr))
-/* Memcpy to/from I/O space is just a regular memory operation on Ultra as well. */
+/*
+ * Memcpy to/from I/O space is just a regular memory operation on
+ * Ultra as well.
+ */
/*
* FIXME: Write faster routines using ASL_*L for this.
@@ -170,7 +173,7 @@ memcpy_toio(void *dst, const void *src, __kernel_size_t n)
#if 0 /* XXX Not exactly, we need to use ASI_*L from/to the I/O end,
* XXX so these are disabled until we code that stuff.
*/
-#define eth_io_copy_and_sum(a,b,c,d) eth_copy_and_sum((a),((char *)(b)),(c),(d))
+#define eth_io_copy_and_sum(a,b,c,d) eth_copy_and_sum((a),((char *)(b)),(c),(d))
#endif
static inline int check_signature(unsigned long io_addr,
@@ -187,22 +190,39 @@ out:
return retval;
}
-extern void sparc_ultra_mapioaddr (unsigned long physaddr, unsigned long virt_addr,
- int bus, int rdonly);
-extern void sparc_ultra_unmapioaddr (unsigned long virt_addr);
+/*
+ * On the sparc we have the whole physical IO address space mapped at all
+ * times, so ioremap() and iounmap() do not need to do anything.
+ */
+extern __inline__ void *ioremap(unsigned long offset, unsigned long size)
+{
+ return __va(offset);
+}
+
+extern __inline__ void iounmap(void *addr)
+{
+}
+
+
+extern void sparc_ultra_mapioaddr(unsigned long physaddr,
+ unsigned long virt_addr,
+ int bus, int rdonly);
+extern void sparc_ultra_unmapioaddr(unsigned long virt_addr);
-extern __inline__ void mapioaddr (unsigned long physaddr, unsigned long virt_addr,
- int bus, int rdonly)
+extern __inline__ void mapioaddr(unsigned long physaddr,
+ unsigned long virt_addr,
+ int bus, int rdonly)
{
- sparc_ultra_mapioaddr (physaddr, virt_addr, bus, rdonly);
+ sparc_ultra_mapioaddr(physaddr, virt_addr, bus, rdonly);
}
extern __inline__ void unmapioaddr(unsigned long virt_addr)
{
- sparc_ultra_unmapioaddr (virt_addr);
+ sparc_ultra_unmapioaddr(virt_addr);
}
-extern void *sparc_alloc_io (u32 pa, void *va, int sz, char *name, u32 io, int rdonly);
+extern void *sparc_alloc_io(u32 pa, void *va, int sz, char *name,
+ u32 io, int rdonly);
extern void sparc_free_io (void *va, int sz);
extern void *sparc_dvma_malloc (int sz, char *name, __u32 *dvma_addr);
diff --git a/include/asm-sparc64/ioctl.h b/include/asm-sparc64/ioctl.h
index 8e61043a8..2bf31343d 100644
--- a/include/asm-sparc64/ioctl.h
+++ b/include/asm-sparc64/ioctl.h
@@ -1,4 +1,4 @@
-/* $Id: ioctl.h,v 1.1 1996/12/02 00:05:36 davem Exp $ */
+/* $Id: ioctl.h,v 1.2 1998/10/15 05:40:38 jj Exp $ */
#ifndef _SPARC64_IOCTL_H
#define _SPARC64_IOCTL_H
@@ -40,4 +40,12 @@
#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
+/* ...and for the PCMCIA... */
+
+#define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
+#define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
+#define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
+#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
+#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
+
#endif /* !(_SPARC64_IOCTL_H) */
diff --git a/include/asm-sparc64/mmu_context.h b/include/asm-sparc64/mmu_context.h
index 1d8a9f7ee..7fa368638 100644
--- a/include/asm-sparc64/mmu_context.h
+++ b/include/asm-sparc64/mmu_context.h
@@ -1,4 +1,4 @@
-/* $Id: mmu_context.h,v 1.26 1998/07/31 10:42:38 jj Exp $ */
+/* $Id: mmu_context.h,v 1.32 1998/10/13 14:03:52 davem Exp $ */
#ifndef __SPARC64_MMU_CONTEXT_H
#define __SPARC64_MMU_CONTEXT_H
@@ -25,25 +25,47 @@ extern void get_new_mmu_context(struct mm_struct *mm);
/* Initialize/destroy the context related info for a new mm_struct
* instance.
*/
-#define init_new_context(mm) ((mm)->context = NO_CONTEXT)
-#define destroy_context(mm) do { \
- if ((mm)->context != NO_CONTEXT) { \
+#define init_new_context(__mm) ((__mm)->context = NO_CONTEXT)
+
+/* Kernel threads like rpciod and nfsd drop their mm, and then use
+ * init_mm, when this happens we must make sure the tsk->tss.ctx is
+ * updated as well. Otherwise we have disasters relating to
+ * set_fs/get_fs usage later on.
+ *
+ * Also we can only clear the mmu_context_bmap bit when this is
+ * the final reference to the address space.
+ */
+#define destroy_context(__mm) do { \
+ if ((__mm)->context != NO_CONTEXT && \
+ atomic_read(&(__mm)->count) == 1) { \
spin_lock(&scheduler_lock); \
- if (!(((mm)->context ^ tlb_context_cache) & CTX_VERSION_MASK)) \
- clear_bit((mm)->context & ~(CTX_VERSION_MASK), \
+ if (!(((__mm)->context ^ tlb_context_cache) & CTX_VERSION_MASK))\
+ clear_bit((__mm)->context & ~(CTX_VERSION_MASK), \
mmu_context_bmap); \
spin_unlock(&scheduler_lock); \
- (mm)->context = NO_CONTEXT; \
+ (__mm)->context = NO_CONTEXT; \
+ if(current->mm == (__mm)) { \
+ current->tss.ctx = 0; \
+ spitfire_set_secondary_context(0); \
+ __asm__ __volatile__("flush %g6"); \
+ } \
} \
} while (0)
-extern __inline__ void get_mmu_context(struct task_struct *tsk)
+/* This routine must called with interrupts off,
+ * this is necessary to guarentee that the current->tss.ctx
+ * to CPU secontary context register relationship is maintained
+ * when traps can happen.
+ *
+ * Also the caller must flush the current set of user windows
+ * to the stack (if necessary) before we get here.
+ */
+extern __inline__ void __get_mmu_context(struct task_struct *tsk)
{
register unsigned long paddr asm("o5");
register unsigned long pgd_cache asm("o4");
struct mm_struct *mm = tsk->mm;
- flushw_user();
if(!(tsk->tss.flags & SPARC_FLAG_KTHREAD) &&
!(tsk->flags & PF_EXITING)) {
unsigned long ctx = tlb_context_cache;
@@ -65,28 +87,42 @@ extern __inline__ void get_mmu_context(struct task_struct *tsk)
spitfire_set_secondary_context(tsk->tss.ctx);
__asm__ __volatile__("flush %g6");
paddr = __pa(mm->pgd);
- if(tsk->tss.flags & SPARC_FLAG_32BIT)
+ if((tsk->tss.flags & (SPARC_FLAG_32BIT|SPARC_FLAG_KTHREAD)) ==
+ (SPARC_FLAG_32BIT))
pgd_cache = (unsigned long) mm->pgd[0];
else
pgd_cache = 0;
__asm__ __volatile__("
- rdpr %%pstate, %%o3
- wrpr %%o3, %2, %%pstate
+ rdpr %%pstate, %%o2
+ andn %%o2, %2, %%o3
+ wrpr %%o3, %5, %%pstate
mov %4, %%g4
mov %0, %%g7
stxa %1, [%%g4] %3
- wrpr %%o3, 0x0, %%pstate
+ wrpr %%o2, 0x0, %%pstate
" : /* no outputs */
- : "r" (paddr), "r" (pgd_cache), "i" (PSTATE_MG|PSTATE_IE),
- "i" (ASI_DMMU), "i" (TSB_REG)
- : "o3");
+ : "r" (paddr), "r" (pgd_cache), "i" (PSTATE_IE),
+ "i" (ASI_DMMU), "i" (TSB_REG), "i" (PSTATE_MG)
+ : "o2", "o3");
}
+/* Now we define this as a do nothing macro, because the only
+ * generic user right now is the scheduler, and we handle all
+ * the atomicity issues by having switch_to() call the above
+ * function itself.
+ */
+#define get_mmu_context(x) do { } while(0)
+
/*
* After we have set current->mm to a new value, this activates
* the context for the new mm so we see the new mappings.
*/
-#define activate_context(tsk) get_mmu_context(tsk)
+#define activate_context(__tsk) \
+do { flushw_user(); \
+ spin_lock(&scheduler_lock); \
+ __get_mmu_context(__tsk); \
+ spin_unlock(&scheduler_lock); \
+} while(0)
#endif /* !(__ASSEMBLY__) */
diff --git a/include/asm-sparc64/namei.h b/include/asm-sparc64/namei.h
index 2c9c88ce2..1e2124797 100644
--- a/include/asm-sparc64/namei.h
+++ b/include/asm-sparc64/namei.h
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.12 1998/03/13 17:38:13 jj Exp $
+/* $Id: namei.h,v 1.13 1998/10/28 08:13:49 jj Exp $
* linux/include/asm-sparc64/namei.h
*
* Routines to handle famous /usr/gnemul/s*.
@@ -12,7 +12,7 @@
#define SPARC_SOL_EMUL "usr/gnemul/solaris/"
static inline struct dentry *
-__sparc64_lookup_dentry(const char *name, int follow_link)
+__sparc64_lookup_dentry(const char *name, int lookup_flags)
{
struct dentry *base;
char *emul;
@@ -29,18 +29,20 @@ __sparc64_lookup_dentry(const char *name, int follow_link)
return NULL;
}
- base = lookup_dentry (emul, dget (current->fs->root), 1);
+ base = lookup_dentry (emul,
+ dget (current->fs->root),
+ (LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_SLASHOK));
if (IS_ERR (base)) return NULL;
- base = lookup_dentry (name, base, follow_link);
+ base = lookup_dentry (name, base, lookup_flags);
if (IS_ERR (base)) return NULL;
if (!base->d_inode) {
struct dentry *fromroot;
- fromroot = lookup_dentry (name, dget (current->fs->root), follow_link);
+ fromroot = lookup_dentry (name, dget (current->fs->root), lookup_flags);
if (IS_ERR (fromroot)) return base;
@@ -55,9 +57,9 @@ __sparc64_lookup_dentry(const char *name, int follow_link)
return base;
}
-#define __prefix_lookup_dentry(name, follow_link) \
+#define __prefix_lookup_dentry(name, lookup_flags) \
if (current->personality) { \
- dentry = __sparc64_lookup_dentry (name, follow_link); \
+ dentry = __sparc64_lookup_dentry (name, lookup_flags); \
if (dentry) return dentry; \
}
diff --git a/include/asm-sparc64/ns87303.h b/include/asm-sparc64/ns87303.h
index 92b3d689c..cfd159a5a 100644
--- a/include/asm-sparc64/ns87303.h
+++ b/include/asm-sparc64/ns87303.h
@@ -1,4 +1,4 @@
-/* $Id: ns87303.h,v 1.1 1997/10/14 13:30:37 ecd Exp $
+/* $Id: ns87303.h,v 1.2 1998/09/13 15:38:50 ecd Exp $
* ns87303.h: Configuration Register Description for the
* National Semiconductor PC87303 (SuperIO).
*
@@ -26,6 +26,9 @@
#define CS1CF0 0x0c
#define CS1CF1 0x0d
+/* Function Enable Register (FER) bits */
+#define FER_EDM 0x10 /* Encoded Drive and Motor pin information */
+
/* Function Address Register (FAR) bits */
#define FAR_LPT_MASK 0x03
#define FAR_LPTB 0x00
@@ -39,6 +42,7 @@
/* of the parallel port */
/* Function Control Register (FCR) bits */
+#define FCR_LDE 0x10 /* Logical Drive Exchange */
#define FCR_ZWS_ENA 0x20 /* Enable short host read/write in ECP/EPP */
/* Printer Controll Register (PCR) bits */
@@ -55,6 +59,7 @@
/* Advanced SuperIO Config Register (ASC) bits */
#define ASC_LPT_IRQ7 0x01 /* Allways use IRQ7 for LPT */
+#define ASC_DRV2_SEL 0x02 /* Logical Drive Exchange controlled by TDR */
#ifdef __KERNEL__
diff --git a/include/asm-sparc64/oplib.h b/include/asm-sparc64/oplib.h
index 6b2852c29..a878a3ea6 100644
--- a/include/asm-sparc64/oplib.h
+++ b/include/asm-sparc64/oplib.h
@@ -1,4 +1,4 @@
-/* $Id: oplib.h,v 1.8 1997/07/24 12:15:15 davem Exp $
+/* $Id: oplib.h,v 1.9 1998/10/06 20:56:05 ecd Exp $
* oplib.h: Describes the interface and available routines in the
* Linux Prom library.
*
@@ -117,8 +117,8 @@ extern void prom_halt(void) __attribute__ ((noreturn));
* kernel is still active, the prom will call this routine.
*
*/
-typedef void (*sync_func_t)(long *cmd);
-extern void prom_setsync(sync_func_t func_ptr);
+typedef int (*callback_func_t)(long *cmd);
+extern void prom_setcallback(callback_func_t func_ptr);
/* Acquire the IDPROM of the root node in the prom device tree. This
* gets passed a buffer where you would like it stuffed. The return value
diff --git a/include/asm-sparc64/page.h b/include/asm-sparc64/page.h
index fe33651cf..0894bb90d 100644
--- a/include/asm-sparc64/page.h
+++ b/include/asm-sparc64/page.h
@@ -1,4 +1,4 @@
-/* $Id: page.h,v 1.23 1998/06/12 14:54:33 jj Exp $ */
+/* $Id: page.h,v 1.24 1998/10/20 03:09:16 jj Exp $ */
#ifndef _SPARC64_PAGE_H
#define _SPARC64_PAGE_H
@@ -18,7 +18,7 @@
#ifndef __ASSEMBLY__
-#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
+extern void clear_page(unsigned long page);
extern void copy_page(unsigned long to, unsigned long from);
/* GROSS, defining this makes gcc pass these types as aggregates,
diff --git a/include/asm-sparc64/perfctr.h b/include/asm-sparc64/perfctr.h
new file mode 100644
index 000000000..67756e808
--- /dev/null
+++ b/include/asm-sparc64/perfctr.h
@@ -0,0 +1,101 @@
+/*----------------------------------------
+ PERFORMANCE INSTRUMENTATION
+ Guillaume Thouvenin 08/10/98
+ David S. Miller 10/06/98
+ ---------------------------------------*/
+#ifndef PERF_COUNTER_API
+#define PERF_COUNTER_API
+
+/* sys_perfctr() interface. First arg is operation code
+ * from enumeration below. The meaning of further arguments
+ * are determined by the operation code.
+ *
+ * int sys_perfctr(int opcode, unsigned long arg0,
+ * unsigned long arg1, unsigned long arg2)
+ *
+ * Pointers which are passed by the user are pointers to 64-bit
+ * integers.
+ *
+ * Once enabled, performance counter state is retained until the
+ * process either exits or performs an exec. That is, performance
+ * counters remain enabled for fork/clone children.
+ */
+enum perfctr_opcode {
+ /* Enable UltraSparc performance counters, ARG0 is pointer
+ * to 64-bit accumulator for D0 counter in PIC, ARG1 is pointer
+ * to 64-bit accumulator for D1 counter. ARG2 is a pointer to
+ * the initial PCR register value to use.
+ */
+ PERFCTR_ON,
+
+ /* Disable UltraSparc performance counters. The PCR is written
+ * with zero and the user counter accumulator pointers and
+ * working PCR register value are forgotten.
+ */
+ PERFCTR_OFF,
+
+ /* Add current D0 and D1 PIC values into user pointers given
+ * in PERFCTR_ON operation. The PIC is cleared before returning.
+ */
+ PERFCTR_READ,
+
+ /* Clear the PIC register. */
+ PERFCTR_CLRPIC,
+
+ /* Begin using a new PCR value, the pointer to which is passed
+ * in ARG0. The PIC is also cleared after the new PCR value is
+ * written.
+ */
+ PERFCTR_SETPCR,
+
+ /* Store in pointer given in ARG0 the current PCR register value
+ * being used.
+ */
+ PERFCTR_GETPCR
+};
+
+/* I don't want the kernel's namespace to be polluted with this
+ * stuff when this file is included. --DaveM
+ */
+#ifndef __KERNEL__
+
+#define PRIV 0x00000001
+#define USR 0x00000002
+#define SYS 0x00000004
+
+/* Pic.S0 Selection Bit Field Encoding */
+#define CYCLE_CNT 0x00000000
+#define INSTR_CNT 0x00000010
+#define DISPATCH0_IC_MISS 0x00000020
+#define DISPATCH0_STOREBUF 0x00000030
+#define IC_REF 0x00000080
+#define DC_RD 0x00000090
+#define DC_WR 0x000000A0
+#define LOAD_USE 0x000000B0
+#define EC_REF 0x000000C0
+#define EC_WRITE_HIT_RDO 0x000000D0
+#define EC_SNOOP_INV 0x000000E0
+#define EC_RD_HIT 0x000000F0
+
+/* Pic.S1 Selection Bit Field Encoding */
+#define CYCLE_CNT_D1 0x00000000
+#define INSTR_CNT_D1 0x00000800
+#define DISPATCH0_IC_MISPRED 0x00001000
+#define DISPATCH0_FP_USE 0x00001800
+#define IC_HIT 0x00004000
+#define DC_RD_HIT 0x00004800
+#define DC_WR_HIT 0x00005000
+#define LOAD_USE_RAW 0x00005800
+#define EC_HIT 0x00006000
+#define EC_WB 0x00006800
+#define EC_SNOOP_CB 0x00007000
+#define EC_IT_HIT 0x00007800
+
+struct vcounter_struct {
+ unsigned long long vcnt0;
+ unsigned long long vcnt1;
+};
+
+#endif /* !(__KERNEL__) */
+
+#endif /* !(PERF_COUNTER_API) */
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h
index 2bc6695b7..d1d319bab 100644
--- a/include/asm-sparc64/pgtable.h
+++ b/include/asm-sparc64/pgtable.h
@@ -1,4 +1,4 @@
-/* $Id: pgtable.h,v 1.85 1998/08/04 20:51:33 davem Exp $
+/* $Id: pgtable.h,v 1.96 1998/10/27 23:28:42 davem Exp $
* pgtable.h: SpitFire page table operations.
*
* Copyright 1996,1997 David S. Miller (davem@caip.rutgers.edu)
@@ -169,9 +169,11 @@ extern void *sparc_init_alloc(unsigned long *kbrk, unsigned long size);
#define flush_cache_range(mm, start, end) flushw_user()
#define flush_cache_page(vma, page) flushw_user()
-/* This operation in unnecessary on the SpitFire since D-CACHE is write-through. */
-#define flush_page_to_ram(page) do { } while (0)
+/* These operations are unnecessary on the SpitFire since D-CACHE is write-through. */
#define flush_icache_range(start, end) do { } while (0)
+#define flush_page_to_ram(page) do { } while (0)
+
+extern void __flush_dcache_range(unsigned long start, unsigned long end);
extern void __flush_cache_all(void);
@@ -376,7 +378,7 @@ extern __inline__ pgd_t *get_pgd_fast(void)
if(ret) {
struct page *page = mem_map + MAP_NR(ret);
- clear_page(ret);
+ memset(ret, 0, PAGE_SIZE);
(unsigned long)page->pprev_hash = 2;
(unsigned long *)page->next_hash = pgd_quicklist;
pgd_quicklist = (unsigned long *)page;
@@ -406,7 +408,7 @@ extern __inline__ pgd_t *get_pgd_fast(void)
} else {
ret = (unsigned long *) __get_free_page(GFP_KERNEL);
if(ret)
- clear_page(ret);
+ memset(ret, 0, PAGE_SIZE);
}
return (pgd_t *)ret;
}
@@ -517,18 +519,22 @@ extern pgd_t swapper_pg_dir[1];
extern inline void SET_PAGE_DIR(struct task_struct *tsk, pgd_t *pgdir)
{
- if(pgdir != swapper_pg_dir && tsk == current) {
+ if(pgdir != swapper_pg_dir && tsk->mm == current->mm) {
register unsigned long paddr asm("o5");
paddr = __pa(pgdir);
__asm__ __volatile__ ("
rdpr %%pstate, %%o4
wrpr %%o4, %1, %%pstate
+ mov %3, %%g4
mov %0, %%g7
+ stxa %%g0, [%%g4] %2
wrpr %%o4, 0x0, %%pstate
" : /* No outputs */
- : "r" (paddr), "i" (PSTATE_MG|PSTATE_IE)
+ : "r" (paddr), "i" (PSTATE_MG|PSTATE_IE),
+ "i" (ASI_DMMU), "i" (TSB_REG)
: "o4");
+ flush_tlb_mm(current->mm);
}
}
@@ -555,33 +561,53 @@ extern void mmu_release_scsi_sgl(struct mmu_sglist *sg, int sz, struct linux_sbu
#define mmu_lockarea(vaddr, len) (vaddr)
#define mmu_unlockarea(vaddr, len) do { } while(0)
+/* There used to be some funny code here which tried to guess which
+ * TLB wanted the mapping, that wasn't accurate enough to justify it's
+ * existance. The real way to do that is to have each TLB miss handler
+ * pass in a distinct code to do_sparc64_fault() and do it more accurately
+ * there.
+ *
+ * What we do need to handle here is prevent I-cache corruption. The
+ * deal is that the I-cache snoops stores from other CPUs and all DMA
+ * activity, however stores from the local processor are not snooped.
+ * The dynamic linker and our signal handler mechanism take care of
+ * the cases where they write into instruction space, but when a page
+ * is copied in the kernel and then executed in user-space is not handled
+ * right. This leads to corruptions if things are "just right", consider
+ * the following scenerio:
+ * 1) Process 1 frees up a page that was used for the PLT of libc in
+ * it's address space.
+ * 2) Process 2 writes into a page in the PLT of libc for the first
+ * time. do_wp_page() copies the page locally, the local I-cache of
+ * the processor does not notice the writes during the page copy.
+ * The new page used just so happens to be the one just freed in #1.
+ * 3) After the PLT write, later the cpu calls into an unresolved PLT
+ * entry, the CPU executes old instructions from process 1's PLT
+ * table.
+ * 4) Splat.
+ */
+extern void flush_icache_page(unsigned long phys_page);
#define update_mmu_cache(__vma, __address, _pte) \
-__asm__ __volatile__( \
- "rdpr %%pstate, %%g1\n\t" \
- "wrpr %%g1, %0, %%pstate\n\t" \
- "brz,pt %1, 1f\n\t" \
- " mov %2, %%g2\n\t" \
- "stxa %3, [%%g2] %5\n\t" \
- "ba,pt %%xcc, 2f\n\t" \
- " stxa %4, [%%g0] %6\n\t" \
-"1: stxa %3, [%%g2] %7\n\t" \
-" stxa %4, [%%g0] %8\n\t" \
-"2: wrpr %%g1, 0x0, %%pstate\n" \
- : /* no outputs */ \
- : "i" (PSTATE_IE), \
- "r" (((__vma)->vm_flags&(VM_READ|VM_WRITE|VM_EXEC))==(VM_READ|VM_EXEC)), \
- "i" (TLB_TAG_ACCESS), \
- "r" ((__address) | ((__vma)->vm_mm->context & 0x3ff)), \
- "r" (pte_val(_pte)), "i" (ASI_IMMU), "i" (ASI_ITLB_DATA_IN), \
- "i" (ASI_DMMU), "i" (ASI_DTLB_DATA_IN) \
- : "g1", "g2")
+do { \
+ unsigned short __flags = ((__vma)->vm_flags); \
+ if ((__flags & VM_EXEC) != 0 && \
+ ((pte_val(_pte) & (_PAGE_PRESENT | _PAGE_WRITE | _PAGE_MODIFIED)) == \
+ (_PAGE_PRESENT | _PAGE_WRITE | _PAGE_MODIFIED))) { \
+ flush_icache_page(pte_page(_pte) - page_offset); \
+ } \
+} while(0)
/* Make a non-present pseudo-TTE. */
extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
{ pte_t pte; pte_val(pte) = (type<<PAGE_SHIFT)|(offset<<(PAGE_SHIFT+8)); return pte; }
extern inline pte_t mk_pte_io(unsigned long page, pgprot_t prot, int space)
-{ pte_t pte; pte_val(pte) = ((page) | pgprot_val(prot) | _PAGE_E) & ~(unsigned long)_PAGE_CACHE; return pte; }
+{
+ pte_t pte;
+ pte_val(pte) = ((page) | pgprot_val(prot) | _PAGE_E) & ~(unsigned long)_PAGE_CACHE;
+ pte_val(pte) |= (((unsigned long)space) << 32);
+ return pte;
+}
#define SWP_TYPE(entry) (((entry>>PAGE_SHIFT) & 0xff))
#define SWP_OFFSET(entry) ((entry) >> (PAGE_SHIFT+8))
@@ -620,6 +646,9 @@ extern void module_unmap (void *addr);
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
#define PageSkip(page) (test_bit(PG_skip, &(page)->flags))
+extern int io_remap_page_range(unsigned long from, unsigned long offset,
+ unsigned long size, pgprot_t prot, int space);
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(_SPARC64_PGTABLE_H) */
diff --git a/include/asm-sparc64/posix_types.h b/include/asm-sparc64/posix_types.h
index 98b4125a6..2acf3e421 100644
--- a/include/asm-sparc64/posix_types.h
+++ b/include/asm-sparc64/posix_types.h
@@ -7,7 +7,7 @@
* assume GCC is being used.
*/
-#if __GNUC_MINOR__ > 7
+#if (__GNUC__ > 2) || (__GNUC_MINOR__ >= 8)
typedef unsigned long int __kernel_size_t;
#else
typedef unsigned long long __kernel_size_t;
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h
index ab4348216..a2574758a 100644
--- a/include/asm-sparc64/processor.h
+++ b/include/asm-sparc64/processor.h
@@ -1,4 +1,4 @@
-/* $Id: processor.h,v 1.49 1998/07/31 10:42:40 jj Exp $
+/* $Id: processor.h,v 1.51 1998/10/21 03:21:19 davem Exp $
* include/asm-sparc64/processor.h
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -61,6 +61,11 @@ struct thread_struct {
unsigned long sig_address __attribute__ ((aligned (8)));
unsigned long sig_desc;
+ /* Performance counter state */
+ u64 *user_cntd0, *user_cntd1;
+ u64 kernel_cntd0, kernel_cntd1;
+ u64 pcr_reg;
+
unsigned char fpdepth;
unsigned char fpsaved[7];
unsigned char gsr[7];
@@ -74,6 +79,7 @@ struct thread_struct {
#define SPARC_FLAG_NEWSIGNALS 0x040 /* task wants new-style signals */
#define SPARC_FLAG_32BIT 0x080 /* task is older 32-bit binary */
#define SPARC_FLAG_NEWCHILD 0x100 /* task is just-spawned child process */
+#define SPARC_FLAG_PERFCTR 0x200 /* task has performance counters active */
#define INIT_MMAP { &init_mm, 0xfffff80000000000, 0xfffff80001000000, \
PAGE_SHARED , VM_READ | VM_WRITE | VM_EXEC, NULL, &init_mm.mmap }
@@ -91,6 +97,8 @@ struct thread_struct {
{ 0, 0, 0, 0, 0, 0, 0, }, \
/* sig_address, sig_desc */ \
0, 0, \
+/* user_cntd0, user_cndd1, kernel_cntd0, kernel_cntd0, pcr_reg */ \
+ 0, 0, 0, 0, 0, \
/* fpdepth, fpsaved, gsr, xfsr */ \
0, { 0 }, { 0 }, { 0 }, \
}
diff --git a/include/asm-sparc64/psrcompat.h b/include/asm-sparc64/psrcompat.h
index 22e9da3d6..12fa4871a 100644
--- a/include/asm-sparc64/psrcompat.h
+++ b/include/asm-sparc64/psrcompat.h
@@ -1,4 +1,4 @@
-/* $Id: psrcompat.h,v 1.4 1997/06/20 11:54:39 davem Exp $ */
+/* $Id: psrcompat.h,v 1.5 1998/10/06 09:28:39 jj Exp $ */
#ifndef _SPARC64_PSRCOMPAT_H
#define _SPARC64_PSRCOMPAT_H
@@ -21,21 +21,24 @@
#define PSR_VERS 0x0f000000 /* cpu-version field */
#define PSR_IMPL 0xf0000000 /* cpu-implementation field */
+#define PSR_V8PLUS 0xff000000 /* fake impl/ver, meaning a 64bit CPU is present */
+#define PSR_XCC 0x000f0000 /* if PSR_V8PLUS, this is %xcc */
+
extern inline unsigned int tstate_to_psr(unsigned long tstate)
{
- unsigned long vers;
-
- __asm__ __volatile__("rdpr %%ver, %0" : "=r" (vers));
return ((tstate & TSTATE_CWP) |
PSR_S |
((tstate & TSTATE_ICC) >> 12) |
- (((vers << 8) >> 32) & PSR_IMPL) |
- (((vers << 24) >> 36) & PSR_VERS));
+ ((tstate & TSTATE_XCC) >> 20) |
+ PSR_V8PLUS);
}
extern inline unsigned long psr_to_tstate_icc(unsigned int psr)
{
- return ((unsigned long)(psr & PSR_ICC)) << 12;
+ unsigned long tstate = ((unsigned long)(psr & PSR_ICC)) << 12;
+ if ((psr & (PSR_VERS|PSR_IMPL)) == PSR_V8PLUS)
+ tstate |= ((unsigned long)(psr & PSR_XCC)) << 20;
+ return tstate;
}
#endif /* !(_SPARC64_PSRCOMPAT_H) */
diff --git a/include/asm-sparc64/sab82532.h b/include/asm-sparc64/sab82532.h
index 09146f39e..169e88d02 100644
--- a/include/asm-sparc64/sab82532.h
+++ b/include/asm-sparc64/sab82532.h
@@ -1,4 +1,4 @@
-/* $Id: sab82532.h,v 1.3 1997/09/03 11:55:04 ecd Exp $
+/* $Id: sab82532.h,v 1.4 1998/10/25 23:04:29 ecd Exp $
* sab82532.h: Register Definitions for the Siemens SAB82532 DUSCC
*
* Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
@@ -143,7 +143,7 @@ struct sab82532 {
int xmit_fifo_size;
int recv_fifo_size;
int custom_divisor;
- int quot;
+ int baud;
int x_char;
int close_delay;
unsigned short closing_wait;
diff --git a/include/asm-sparc64/semaphore.h b/include/asm-sparc64/semaphore.h
index 4a5912bb9..b0eb13911 100644
--- a/include/asm-sparc64/semaphore.h
+++ b/include/asm-sparc64/semaphore.h
@@ -24,17 +24,24 @@ extern void __up(struct semaphore * sem);
#define wake_one_more(sem) atomic_inc(&sem->waking);
-#define waking_non_zero(sem) \
-({ unsigned long flags; \
- int ret = 0; \
- save_and_cli(flags); \
- if (atomic_read(&sem->waking) > 0) { \
- atomic_dec(&sem->waking); \
- ret = 1; \
- } \
- restore_flags(flags); \
- ret; \
-})
+static __inline__ int waking_non_zero(struct semaphore *sem)
+{
+ int ret;
+
+ __asm__ __volatile__("
+1: ldsw [%1], %%g5
+ brlez,pt %%g5, 2f
+ mov 0, %0
+ sub %%g5, 1, %%g7
+ cas [%1], %%g5, %%g7
+ cmp %%g5, %%g7
+ bne,pn %%icc, 1b
+ mov 1, %0
+2:" : "=r" (ret)
+ : "r" (&((sem)->waking))
+ : "g5", "g7", "cc", "memory");
+ return ret;
+}
extern __inline__ void down(struct semaphore * sem)
{
diff --git a/include/asm-sparc64/shmparam.h b/include/asm-sparc64/shmparam.h
index 3b90c34b1..1179fd258 100644
--- a/include/asm-sparc64/shmparam.h
+++ b/include/asm-sparc64/shmparam.h
@@ -1,4 +1,4 @@
-/* $Id: shmparam.h,v 1.2 1997/08/04 16:16:55 davem Exp $ */
+/* $Id: shmparam.h,v 1.3 1998/09/28 07:15:03 jj Exp $ */
#ifndef _ASMSPARC64_SHMPARAM_H
#define _ASMSPARC64_SHMPARAM_H
@@ -36,7 +36,7 @@
* SHMMAX <= (PAGE_SIZE << _SHM_IDX_BITS).
*/
-#define SHMMAX (1024 * 1024) /* max shared seg size (bytes) */
+#define SHMMAX 0x1000000 /* 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) */ \
diff --git a/include/asm-sparc64/sigcontext.h b/include/asm-sparc64/sigcontext.h
index 102e73385..4ce040a78 100644
--- a/include/asm-sparc64/sigcontext.h
+++ b/include/asm-sparc64/sigcontext.h
@@ -1,4 +1,4 @@
-/* $Id: sigcontext.h,v 1.10 1997/12/11 15:16:11 jj Exp $ */
+/* $Id: sigcontext.h,v 1.11 1998/10/06 09:28:37 jj Exp $ */
#ifndef __SPARC64_SIGCONTEXT_H
#define __SPARC64_SIGCONTEXT_H
@@ -77,6 +77,14 @@ typedef struct {
unsigned long si_fprs;
} __siginfo_fpu_t;
+/* This magic should be in g_upper[0] for all upper parts
+ to be valid. */
+#define SIGINFO_EXTRA_V8PLUS_MAGIC 0x130e269
+typedef struct {
+ unsigned int g_upper[8];
+ unsigned int o_upper[8];
+} siginfo_extra_v8plus_t;
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(__SPARC64_SIGCONTEXT_H) */
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h
index 1a07cd850..f15e6e769 100644
--- a/include/asm-sparc64/smp.h
+++ b/include/asm-sparc64/smp.h
@@ -34,16 +34,16 @@ extern struct prom_cpuinfo linux_cpus[NR_CPUS];
struct cpuinfo_sparc {
/* Dcache line 1 */
unsigned long irq_count;
+ unsigned long bh_count;
unsigned int multiplier;
unsigned int counter;
- unsigned long pgcache_size;
- unsigned long pgdcache_size;
+ unsigned long udelay_val;
/* Dcache line 2 */
- unsigned long *pgd_cache;
+ unsigned long pgcache_size;
unsigned long *pte_cache;
- unsigned long udelay_val;
- unsigned long dummy;
+ unsigned long pgdcache_size;
+ unsigned long *pgd_cache;
};
extern struct cpuinfo_sparc cpu_data[NR_CPUS];
@@ -93,7 +93,7 @@ extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
#define PROC_CHANGE_PENALTY 20
-#else /* !(__SMP__) */
+#endif /* !(__SMP__) */
#define NO_PROC_ID 0xFF
diff --git a/include/asm-sparc64/smplock.h b/include/asm-sparc64/smplock.h
index e62326a10..88a9e8bd1 100644
--- a/include/asm-sparc64/smplock.h
+++ b/include/asm-sparc64/smplock.h
@@ -3,6 +3,7 @@
*
* Default SMP lock implementation
*/
+#include <linux/sched.h>
#include <linux/interrupt.h>
#include <asm/spinlock.h>
@@ -36,14 +37,14 @@ do { \
* so we only need to worry about other
* CPU's.
*/
-extern __inline__ void lock_kernel(void)
-{
- if (!++current->lock_depth)
- spin_lock(&kernel_flag);
-}
+#define lock_kernel() \
+do { \
+ if (!++current->lock_depth) \
+ spin_lock(&kernel_flag); \
+} while(0)
-extern __inline__ void unlock_kernel(void)
-{
- if (--current->lock_depth < 0)
- spin_unlock(&kernel_flag);
-}
+#define unlock_kernel() \
+do { \
+ if (--current->lock_depth < 0) \
+ spin_unlock(&kernel_flag); \
+} while(0)
diff --git a/include/asm-sparc64/softirq.h b/include/asm-sparc64/softirq.h
index 0e1a6b589..a8de6fb1d 100644
--- a/include/asm-sparc64/softirq.h
+++ b/include/asm-sparc64/softirq.h
@@ -1,6 +1,6 @@
/* softirq.h: 64-bit Sparc soft IRQ support.
*
- * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
+ * Copyright (C) 1997, 1998 David S. Miller (davem@caip.rutgers.edu)
*/
#ifndef __SPARC64_SOFTIRQ_H
@@ -9,129 +9,121 @@
#include <asm/atomic.h>
#include <asm/hardirq.h>
+#ifndef __SMP__
+extern unsigned int local_bh_count;
+#else
+#define local_bh_count (cpu_data[smp_processor_id()].bh_count)
+#endif
+
/* The locking mechanism for base handlers, to prevent re-entrancy,
* is entirely private to an implementation, it should not be
* referenced at all outside of this file.
*/
#define get_active_bhs() (bh_mask & bh_active)
+#define clear_active_bhs(mask) \
+ __asm__ __volatile__( \
+"1: ldx [%1], %%g7\n" \
+" andn %%g7, %0, %%g5\n" \
+" casx [%1], %%g7, %%g5\n" \
+" cmp %%g7, %%g5\n" \
+" bne,pn %%xcc, 1b\n" \
+" nop" \
+ : /* no outputs */ \
+ : "HIr" (mask), "r" (&bh_active) \
+ : "g5", "g7", "cc", "memory")
+
+extern inline void init_bh(int nr, void (*routine)(void))
+{
+ bh_base[nr] = routine;
+ bh_mask_count[nr] = 0;
+ bh_mask |= 1 << nr;
+}
+
+extern inline void remove_bh(int nr)
+{
+ bh_base[nr] = NULL;
+ bh_mask &= ~(1 << nr);
+}
+
+extern inline void mark_bh(int nr)
+{
+ set_bit(nr, &bh_active);
+}
#ifndef __SMP__
-extern int __sparc64_bh_counter;
-
-#define softirq_trylock(cpu) (__sparc64_bh_counter ? 0 : (__sparc64_bh_counter=1))
-#define softirq_endlock(cpu) (__sparc64_bh_counter = 0)
-#define clear_active_bhs(x) (bh_active &= ~(x))
-#define synchronize_bh() do { } while (0) /* XXX implement SMP version -DaveM */
-
-#define init_bh(nr, routine) \
-do { int ent = nr; \
- bh_base[ent] = routine; \
- bh_mask_count[ent] = 0; \
- bh_mask |= 1 << ent; \
-} while(0)
-
-#define remove_bh(nr) \
-do { int ent = nr; \
- bh_base[ent] = NULL; \
- bh_mask &= ~(1 << ent); \
-} while(0)
+extern inline void start_bh_atomic(void)
+{
+ local_bh_count++;
+ barrier();
+}
-#define mark_bh(nr) (bh_active |= (1 << (nr)))
+extern inline void end_bh_atomic(void)
+{
+ barrier();
+ local_bh_count--;
+}
-#define disable_bh(nr) \
-do { int ent = nr; \
- bh_mask &= ~(1 << ent); \
- bh_mask_count[ent]++; \
- barrier(); \
-} while(0)
-
-#define enable_bh(nr) \
-do { int ent = nr; \
- barrier(); \
- if (!--bh_mask_count[ent]) \
- bh_mask |= 1 << ent; \
-} while(0)
-
-#define start_bh_atomic() do { __sparc64_bh_counter++; barrier(); } while(0)
-
-#define end_bh_atomic() do { barrier(); __sparc64_bh_counter--; } while(0)
+/* These are for the irq's testing the lock */
+#define softirq_trylock(cpu) (local_bh_count ? 0 : (local_bh_count=1))
+#define softirq_endlock(cpu) (local_bh_count = 0)
+#define synchronize_bh() barrier()
#else /* (__SMP__) */
-extern atomic_t __sparc64_bh_counter;
-
-#define start_bh_atomic() \
- do { atomic_inc(&__sparc64_bh_counter); synchronize_irq(); } while(0)
-
-#define end_bh_atomic() atomic_dec(&__sparc64_bh_counter)
-
-#include <asm/spinlock.h>
-
-extern spinlock_t global_bh_lock;
-
-#define init_bh(nr, routine) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_base[ent] = routine; \
- bh_mask_count[ent] = 0; \
- bh_mask |= 1 << ent; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define remove_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_base[ent] = NULL; \
- bh_mask &= ~(1 << ent); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define mark_bh(nr) \
-do { unsigned long flags; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_active |= (1 << nr); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define disable_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_mask &= ~(1 << ent); \
- bh_mask_count[ent]++; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define enable_bh(nr) \
-do { unsigned long flags; \
- int ent = nr; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- if (!--bh_mask_count[ent]) \
- bh_mask |= 1 << ent; \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
-
-#define softirq_trylock(cpu) \
-({ \
- int ret = 1; \
- if(atomic_add_return(1, &__sparc64_bh_counter) != 1) { \
- atomic_dec(&__sparc64_bh_counter); \
- ret = 0; \
- } \
- ret; \
-})
-#define softirq_endlock(cpu) atomic_dec(&__sparc64_bh_counter)
-#define clear_active_bhs(mask) \
-do { unsigned long flags; \
- spin_lock_irqsave(&global_bh_lock, flags); \
- bh_active &= ~(mask); \
- spin_unlock_irqrestore(&global_bh_lock, flags); \
-} while(0)
+extern atomic_t global_bh_lock;
+extern spinlock_t global_bh_count;
+
+extern void synchronize_bh(void);
+
+static inline void start_bh_atomic(void)
+{
+ atomic_inc(&global_bh_lock);
+ synchronize_bh();
+}
+
+static inline void end_bh_atomic(void)
+{
+ atomic_dec(&global_bh_lock);
+}
+
+/* These are for the IRQs testing the lock */
+static inline int softirq_trylock(int cpu)
+{
+ if (spin_trylock(&global_bh_count)) {
+ if (atomic_read(&global_bh_lock) == 0) {
+ ++(cpu_data[cpu].bh_count);
+ return 1;
+ }
+ spin_unlock(&global_bh_count);
+ }
+ return 0;
+}
+
+static inline void softirq_endlock(int cpu)
+{
+ (cpu_data[cpu].bh_count)--;
+ spin_unlock(&global_bh_count);
+}
#endif /* (__SMP__) */
+/*
+ * These use a mask count to correctly handle
+ * nested disable/enable calls
+ */
+extern inline void disable_bh(int nr)
+{
+ bh_mask &= ~(1 << nr);
+ bh_mask_count[nr]++;
+ synchronize_bh();
+}
+
+extern inline void enable_bh(int nr)
+{
+ if (!--bh_mask_count[nr])
+ bh_mask |= 1 << nr;
+}
+
#endif /* !(__SPARC64_SOFTIRQ_H) */
diff --git a/include/asm-sparc64/spinlock.h b/include/asm-sparc64/spinlock.h
index 4e2dd6b8c..5f65fc78f 100644
--- a/include/asm-sparc64/spinlock.h
+++ b/include/asm-sparc64/spinlock.h
@@ -10,13 +10,8 @@
#ifndef __SMP__
-#if (__GNUC__ > 2) || (__GNUC_MINOR__ >= 8)
- typedef struct { } spinlock_t;
- #define SPIN_LOCK_UNLOCKED { }
-#else
- typedef unsigned char spinlock_t;
- #define SPIN_LOCK_UNLOCKED 0
-#endif
+typedef unsigned char spinlock_t;
+#define SPIN_LOCK_UNLOCKED 0
#define spin_lock_init(lock) do { } while(0)
#define spin_lock(lock) do { } while(0)
@@ -39,8 +34,8 @@
* irq-safe write-lock, but readers can get non-irqsafe
* read-locks.
*/
-typedef struct { } rwlock_t;
-#define RW_LOCK_UNLOCKED { }
+typedef unsigned long rwlock_t;
+#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
#define read_lock(lock) do { } while(0)
#define read_unlock(lock) do { } while(0)
@@ -58,6 +53,11 @@ typedef struct { } rwlock_t;
#else /* !(__SMP__) */
+/* To get debugging spinlocks which detect and catch
+ * deadlock situations, set DEBUG_SPINLOCKS in the sparc64
+ * specific makefile and rebuild your kernel.
+ */
+
/* All of these locking primitives are expected to work properly
* even in an RMO memory model, which currently is what the kernel
* runs in.
@@ -71,10 +71,13 @@ typedef struct { } rwlock_t;
* must be pre-V9 branches.
*/
+#ifndef SPIN_LOCK_DEBUG
+
typedef unsigned char spinlock_t;
#define SPIN_LOCK_UNLOCKED 0
#define spin_lock_init(lock) (*((unsigned char *)(lock)) = 0)
+#define spin_is_locked(lock) (*((volatile unsigned char *)(lock)) != 0)
#define spin_unlock_wait(lock) \
do { membar("#LoadLoad"); \
@@ -177,8 +180,42 @@ extern __inline__ void spin_unlock_irqrestore(spinlock_t *lock, unsigned long fl
: "memory");
}
+#else /* !(SPIN_LOCK_DEBUG) */
+
+typedef struct {
+ unsigned char lock;
+ unsigned int owner_pc, owner_cpu;
+} spinlock_t;
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 0, NO_PROC_ID }
+#define spin_lock_init(__lock) \
+do { (__lock)->lock = 0; \
+ (__lock)->owner_pc = 0; \
+ (__lock)->owner_cpu = NO_PROC_ID; \
+} while(0)
+#define spin_is_locked(__lock) (*((volatile unsigned char *)(&((__lock)->lock))) != 0)
+#define spin_unlock_wait(__lock) \
+do { \
+ membar("#LoadLoad"); \
+} while(*((volatile unsigned char *)(&((__lock)->lock))))
+
+extern void _do_spin_lock (spinlock_t *lock, char *str);
+extern void _do_spin_unlock (spinlock_t *lock);
+extern int _spin_trylock (spinlock_t *lock);
+
+#define spin_trylock(lp) _spin_trylock(lp)
+#define spin_lock(lock) _do_spin_lock(lock, "spin_lock")
+#define spin_lock_irq(lock) do { __cli(); _do_spin_lock(lock, "spin_lock_irq"); } while(0)
+#define spin_lock_irqsave(lock, flags) do { __save_and_cli(flags); _do_spin_lock(lock, "spin_lock_irqsave"); } while(0)
+#define spin_unlock(lock) _do_spin_unlock(lock)
+#define spin_unlock_irq(lock) do { _do_spin_unlock(lock); __sti(); } while(0)
+#define spin_unlock_irqrestore(lock, flags) do { _do_spin_unlock(lock); __restore_flags(flags); } while(0)
+
+#endif /* SPIN_LOCK_DEBUG */
+
/* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */
+#ifndef SPIN_LOCK_DEBUG
+
typedef unsigned long rwlock_t;
#define RW_LOCK_UNLOCKED 0
@@ -278,6 +315,58 @@ extern __inline__ void write_unlock(rwlock_t *rw)
#define write_unlock_irqrestore(lock, flags) \
do { write_unlock(lock); __restore_flags(flags); } while (0)
+#else /* !(SPIN_LOCK_DEBUG) */
+
+typedef struct {
+ unsigned long lock;
+ unsigned int writer_pc, writer_cpu;
+ unsigned int reader_pc[4];
+} rwlock_t;
+#define RW_LOCK_UNLOCKED (rwlock_t) { 0, 0, NO_PROC_ID, { 0, 0, 0, 0 } }
+
+extern void _do_read_lock(rwlock_t *rw, char *str);
+extern void _do_read_unlock(rwlock_t *rw, char *str);
+extern void _do_write_lock(rwlock_t *rw, char *str);
+extern void _do_write_unlock(rwlock_t *rw);
+
+#define read_lock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_read_lock(lock, "read_lock"); \
+ __restore_flags(flags); \
+} while(0)
+#define read_lock_irq(lock) do { __cli(); _do_read_lock(lock, "read_lock_irq"); } while(0)
+#define read_lock_irqsave(lock, flags) do { __save_and_cli(flags); _do_read_lock(lock, "read_lock_irqsave"); } while(0)
+
+#define read_unlock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_read_unlock(lock, "read_unlock"); \
+ __restore_flags(flags); \
+} while(0)
+#define read_unlock_irq(lock) do { _do_read_unlock(lock, "read_unlock_irq"); __sti() } while(0)
+#define read_unlock_irqrestore(lock, flags) do { _do_read_unlock(lock, "read_unlock_irqrestore"); __restore_flags(flags); } while(0)
+
+#define write_lock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_write_lock(lock, "write_lock"); \
+ __restore_flags(flags); \
+} while(0)
+#define write_lock_irq(lock) do { __cli(); _do_write_lock(lock, "write_lock_irq"); } while(0)
+#define write_lock_irqsave(lock, flags) do { __save_and_cli(flags); _do_write_lock(lock, "write_lock_irqsave"); } while(0)
+
+#define write_unlock(lock) \
+do { unsigned long flags; \
+ __save_and_cli(flags); \
+ _do_write_unlock(lock); \
+ __restore_flags(flags); \
+} while(0)
+#define write_unlock_irq(lock) do { _do_write_unlock(lock); __sti(); } while(0)
+#define write_unlock_irqrestore(lock, flags) do { _do_write_unlock(lock); __restore_flags(flags); } while(0)
+
+#endif /* SPIN_LOCK_DEBUG */
+
#endif /* __SMP__ */
#endif /* !(__ASSEMBLY__) */
diff --git a/include/asm-sparc64/string.h b/include/asm-sparc64/string.h
index b5293acd9..c1a67071f 100644
--- a/include/asm-sparc64/string.h
+++ b/include/asm-sparc64/string.h
@@ -1,4 +1,4 @@
-/* $Id: string.h,v 1.11 1998/06/12 14:54:35 jj Exp $
+/* $Id: string.h,v 1.14 1998/10/20 03:09:18 jj Exp $
* string.h: External definitions for optimized assembly string
* routines for the Linux Kernel.
*
@@ -65,23 +65,7 @@ extern inline void *__nonconstant_memcpy(void *to, const void *from, __kernel_si
#define __HAVE_ARCH_MEMSET
-extern inline void *__constant_c_and_count_memset(void *s, char c, __kernel_size_t count)
-{
- extern __kernel_size_t __bzero(void *, __kernel_size_t);
- extern void *__bzero_1page(void *);
-
- if(!c) {
- if (count == 8192)
- __bzero_1page(s);
- else
- __bzero(s, count);
- } else {
- __memset(s, c, count);
- }
- return s;
-}
-
-extern inline void *__constant_c_memset(void *s, char c, __kernel_size_t count)
+extern inline void *__constant_memset(void *s, char c, __kernel_size_t count)
{
extern __kernel_size_t __bzero(void *, __kernel_size_t);
@@ -100,10 +84,9 @@ extern inline void *__nonconstant_memset(void *s, char c, __kernel_size_t count)
#undef memset
#define memset(s, c, count) \
-(__builtin_constant_p(c) ? (__builtin_constant_p(count) ? \
- __constant_c_and_count_memset((s), (c), (count)) : \
- __constant_c_memset((s), (c), (count))) \
- : __nonconstant_memset((s), (c), (count)))
+(__builtin_constant_p(c) ? \
+ __constant_memset((s), (c), (count)) : \
+ __nonconstant_memset((s), (c), (count)))
#define __HAVE_ARCH_MEMSCAN
@@ -128,6 +111,20 @@ extern inline void *__nonconstant_memset(void *s, char c, __kernel_size_t count)
/* Now the str*() stuff... */
#define __HAVE_ARCH_STRLEN
+extern __kernel_size_t __strlen(const char *);
+
+#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+extern __kernel_size_t strlen(const char *);
+#else /* !EGCS */
+/* Ugly but it works around a bug in our original sparc64-linux-gcc. */
+#undef strlen
+#define strlen(__arg0) \
+({ int __strlen_res = __strlen(__arg0) + 1; \
+ __strlen_res -= 1; \
+ __strlen_res; \
+})
+#endif /* !EGCS */
+
#define __HAVE_ARCH_STRNCMP
extern int __strncmp(const char *, const char *, __kernel_size_t);
diff --git a/include/asm-sparc64/system.h b/include/asm-sparc64/system.h
index 55072c93b..6212bd223 100644
--- a/include/asm-sparc64/system.h
+++ b/include/asm-sparc64/system.h
@@ -1,4 +1,4 @@
-/* $Id: system.h,v 1.42 1998/07/29 01:32:51 davem Exp $ */
+/* $Id: system.h,v 1.47 1998/10/21 03:21:20 davem Exp $ */
#ifndef __SPARC64_SYSTEM_H
#define __SPARC64_SYSTEM_H
@@ -76,24 +76,17 @@ extern unsigned long empty_zero_page;
#else
#ifndef __ASSEMBLY__
-extern unsigned char global_irq_holder;
-#endif
-
-#define save_flags(x) \
-do { ((x) = ((global_irq_holder == (unsigned char) smp_processor_id()) ? 1 : \
- ((getipl() != 0) ? 2 : 0))); } while(0)
-
-#define save_and_cli(flags) do { save_flags(flags); cli(); } while(0)
-
-#ifndef __ASSEMBLY__
extern void __global_cli(void);
extern void __global_sti(void);
+extern unsigned long __global_save_flags(void);
extern void __global_restore_flags(unsigned long flags);
#endif
#define cli() __global_cli()
#define sti() __global_sti()
+#define save_flags(x) ((x) = __global_save_flags())
#define restore_flags(flags) __global_restore_flags(flags)
+#define save_and_cli(flags) do { save_flags(flags); cli(); } while(0)
#endif
@@ -107,6 +100,12 @@ extern void __global_restore_flags(unsigned long flags);
#define flushw_all() __asm__ __volatile__("flushw")
+/* Performance counter register access. */
+#define read_pcr(__p) __asm__ __volatile__("rd %%pcr, %0" : "=r" (__p))
+#define write_pcr(__p) __asm__ __volatile__("wr %0, 0x0, %%pcr" : : "r" (__p));
+#define read_pic(__p) __asm__ __volatile__("rd %%pic, %0" : "=r" (__p))
+#define reset_pic() __asm__ __volatile__("wr %g0, 0x0, %pic");
+
#ifndef __ASSEMBLY__
extern void synchronize_user_stack(void);
@@ -141,12 +140,22 @@ extern __inline__ void flushw_user(void)
* not reference %g6.
*/
#define switch_to(prev, next) \
-do { save_and_clear_fpu(); \
- (next)->mm->cpu_vm_mask |= (1UL << smp_processor_id()); \
+do { if (current->tss.flags & SPARC_FLAG_PERFCTR) { \
+ unsigned long __tmp; \
+ read_pcr(__tmp); \
+ current->tss.pcr_reg = __tmp; \
+ read_pic(__tmp); \
+ current->tss.kernel_cntd0 += (unsigned int)(__tmp); \
+ current->tss.kernel_cntd1 += ((__tmp) >> 32); \
+ } \
+ save_and_clear_fpu(); \
__asm__ __volatile__( \
- "rdpr %%pstate, %%g2\n\t" \
- "wrpr %%g2, 0x3, %%pstate\n\t" \
"flushw\n\t" \
+ "wrpr %g0, 0x94, %pstate\n\t"); \
+ __get_mmu_context(next); \
+ (next)->mm->cpu_vm_mask |= (1UL << smp_processor_id()); \
+ __asm__ __volatile__( \
+ "wrpr %%g0, 0x95, %%pstate\n\t" \
"stx %%l0, [%%sp + 2047 + 0x60]\n\t" \
"stx %%l1, [%%sp + 2047 + 0x68]\n\t" \
"stx %%i6, [%%sp + 2047 + 0x70]\n\t" \
@@ -168,10 +177,12 @@ do { save_and_clear_fpu(); \
"ldx [%%sp + 2047 + 0x68], %%l1\n\t" \
"ldx [%%sp + 2047 + 0x70], %%i6\n\t" \
"ldx [%%sp + 2047 + 0x78], %%i7\n\t" \
+ "wrpr %%g0, 0x94, %%pstate\n\t" \
+ "mov %%l2, %%g6\n\t" \
"wrpr %%g0, 0x96, %%pstate\n\t" \
"andcc %%o7, 0x100, %%g0\n\t" \
"bne,pn %%icc, ret_from_syscall\n\t" \
- " mov %%l2, %%g6\n\t" \
+ " nop\n\t" \
: \
: "r" (next), \
"i" ((const unsigned long)(&((struct task_struct *)0)->tss.wstate)), \
@@ -182,6 +193,11 @@ do { save_and_clear_fpu(); \
"l2", "l3", "l4", "l5", "l6", "l7", \
"i0", "i1", "i2", "i3", "i4", "i5", \
"o0", "o1", "o2", "o3", "o4", "o5", "o7"); \
+ /* If you fuck with this, update ret_from_syscall code too. */ \
+ if (current->tss.flags & SPARC_FLAG_PERFCTR) { \
+ write_pcr(current->tss.pcr_reg); \
+ reset_pic(); \
+ } \
} while(0)
extern __inline__ unsigned long xchg32(__volatile__ unsigned int *m, unsigned int val)
diff --git a/include/asm-sparc64/termios.h b/include/asm-sparc64/termios.h
index 8a972984b..767722d4c 100644
--- a/include/asm-sparc64/termios.h
+++ b/include/asm-sparc64/termios.h
@@ -1,4 +1,4 @@
-/* $Id: termios.h,v 1.5 1998/04/12 06:27:22 davem Exp $ */
+/* $Id: termios.h,v 1.6 1998/10/04 06:50:15 davem Exp $ */
#ifndef _SPARC64_TERMIOS_H
#define _SPARC64_TERMIOS_H
@@ -63,6 +63,9 @@ struct winsize {
#define N_AX25 5
#define N_X25 6
#define N_6PACK 7
+#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
+#define N_R3964 9 /* Reserved for Simatic R3964 module */
+#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
#ifdef __KERNEL__
diff --git a/include/asm-sparc64/ttable.h b/include/asm-sparc64/ttable.h
index 9d2434618..2cd04004a 100644
--- a/include/asm-sparc64/ttable.h
+++ b/include/asm-sparc64/ttable.h
@@ -1,4 +1,4 @@
-/* $Id: ttable.h,v 1.8 1998/06/12 14:54:32 jj Exp $ */
+/* $Id: ttable.h,v 1.10 1998/09/25 01:09:45 davem Exp $ */
#ifndef _SPARC64_TTABLE_H
#define _SPARC64_TTABLE_H
@@ -72,26 +72,6 @@
sethi %hi(systbl), %l7; \
nop; nop; nop;
-#define ACCESS_EXCEPTION_TRAP(routine) \
- rdpr %pstate, %g1; \
- wrpr %g1, PSTATE_MG|PSTATE_AG, %pstate; \
- ba,pt %xcc, etrap; \
- rd %pc, %g7; \
- call routine; \
- add %sp, STACK_BIAS + REGWIN_SZ, %o0; \
- ba,pt %xcc, rtrap; \
- clr %l6;
-
-#define ACCESS_EXCEPTION_TRAPTL1(routine) \
- rdpr %pstate, %g1; \
- wrpr %g1, PSTATE_MG|PSTATE_AG, %pstate; \
- ba,pt %xcc, etraptl1; \
- rd %pc, %g7; \
- call routine; \
- add %sp, STACK_BIAS + REGWIN_SZ, %o0; \
- ba,pt %xcc, rtrap; \
- clr %l6;
-
#define INDIRECT_SOLARIS_SYSCALL(num) \
sethi %hi(109f), %g7; \
ba,pt %xcc, etrap; \
@@ -205,7 +185,8 @@
stxa %i6, [%sp + STACK_BIAS + 0x70] %asi; \
stxa %i7, [%sp + STACK_BIAS + 0x78] %asi; \
saved; retry; nop; nop; nop; nop; nop; nop; \
- nop; nop; nop; nop; nop; \
+ nop; nop; nop; nop; \
+ b,a,pt %xcc, spill_fixup_dax; \
b,a,pt %xcc, spill_fixup_mna; \
b,a,pt %xcc, spill_fixup;
@@ -230,7 +211,8 @@
stwa %i6, [%sp + 0x38] %asi; \
stwa %i7, [%sp + 0x3c] %asi; \
saved; retry; nop; nop; nop; nop; \
- nop; nop; nop; nop; nop; nop; \
+ nop; nop; nop; nop; nop; \
+ b,a,pt %xcc, spill_fixup_dax; \
b,a,pt %xcc, spill_fixup_mna; \
b,a,pt %xcc, spill_fixup;
@@ -292,7 +274,8 @@
ldxa [%sp + STACK_BIAS + 0x70] %asi, %i6; \
ldxa [%sp + STACK_BIAS + 0x78] %asi, %i7; \
restored; retry; nop; nop; nop; nop; nop; nop; \
- nop; nop; nop; nop; nop; \
+ nop; nop; nop; nop; \
+ b,a,pt %xcc, fill_fixup_dax; \
b,a,pt %xcc, fill_fixup_mna; \
b,a,pt %xcc, fill_fixup;
@@ -317,7 +300,8 @@
lduwa [%sp + 0x38] %asi, %i6; \
lduwa [%sp + 0x3c] %asi, %i7; \
restored; retry; nop; nop; nop; nop; \
- nop; nop; nop; nop; nop; nop; \
+ nop; nop; nop; nop; nop; \
+ b,a,pt %xcc, fill_fixup_dax; \
b,a,pt %xcc, fill_fixup_mna; \
b,a,pt %xcc, fill_fixup;
diff --git a/include/asm-sparc64/uaccess.h b/include/asm-sparc64/uaccess.h
index ec80bb5dc..93c14ae3f 100644
--- a/include/asm-sparc64/uaccess.h
+++ b/include/asm-sparc64/uaccess.h
@@ -1,4 +1,4 @@
-/* $Id: uaccess.h,v 1.25 1998/04/28 08:23:34 davem Exp $ */
+/* $Id: uaccess.h,v 1.28 1998/10/11 06:58:34 davem Exp $ */
#ifndef _ASM_UACCESS_H
#define _ASM_UACCESS_H
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
index 960d3a01b..2db3c1547 100644
--- a/include/asm-sparc64/unistd.h
+++ b/include/asm-sparc64/unistd.h
@@ -1,4 +1,4 @@
-/* $Id: unistd.h,v 1.20 1998/07/28 13:08:40 jj Exp $ */
+/* $Id: unistd.h,v 1.23 1998/10/07 01:28:02 davem Exp $ */
#ifndef _SPARC64_UNISTD_H
#define _SPARC64_UNISTD_H
@@ -16,7 +16,6 @@
* Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu)
*/
-#define __NR_setup 0 /* Used only by init, to get system going. */
#define __NR_exit 1 /* Common */
#define __NR_fork 2 /* Common */
#define __NR_read 3 /* Common */
@@ -29,12 +28,12 @@
#define __NR_unlink 10 /* Common */
#define __NR_execv 11 /* SunOS Specific */
#define __NR_chdir 12 /* Common */
-/* #define __NR_ni_syscall 13 ENOSYS under SunOS */
+#define __NR_chown 13 /* Common */
#define __NR_mknod 14 /* Common */
#define __NR_chmod 15 /* Common */
-#define __NR_chown 16 /* Common */
+#define __NR_lchown 16 /* Common */
#define __NR_brk 17 /* Common */
-/* #define __NR_ni_syscall 18 ENOSYS under SunOS */
+#define __NR_perfctr 18 /* Performance counter operations */
#define __NR_lseek 19 /* Common */
#define __NR_getpid 20 /* Common */
#define __NR_capget 21 /* Linux Specific */
@@ -414,7 +413,6 @@ return -1; \
#define __NR__exit __NR_exit
static __inline__ _syscall0(int,idle)
static __inline__ _syscall0(int,pause)
-static __inline__ _syscall1(int,setup,int,magic)
static __inline__ _syscall0(int,sync)
static __inline__ _syscall0(pid_t,setsid)
static __inline__ _syscall3(int,write,int,fd,__const__ char *,buf,off_t,count)
diff --git a/include/asm-sparc64/visasm.h b/include/asm-sparc64/visasm.h
index e1de6a384..2cf9e320c 100644
--- a/include/asm-sparc64/visasm.h
+++ b/include/asm-sparc64/visasm.h
@@ -1,4 +1,4 @@
-/* $Id: visasm.h,v 1.2 1998/06/19 12:14:47 jj Exp $ */
+/* $Id: visasm.h,v 1.3 1998/09/04 01:59:48 ecd Exp $ */
#ifndef _SPARC64_VISASM_H
#define _SPARC64_VISASM_H
@@ -10,7 +10,7 @@
#include <asm/pstate.h>
#include <asm/ptrace.h>
-#define AOFF_task_fpregs ((AOFF_task_sigmask_lock + 285)&~255)
+#define AOFF_task_fpregs (((ASIZ_task) + 255) & ~255)
/* Clobbers %o5, %g1, %g2, %g3, %g7, %icc, %xcc */
diff --git a/include/linux/acct.h b/include/linux/acct.h
index e1c96a4c1..e20b18399 100644
--- a/include/linux/acct.h
+++ b/include/linux/acct.h
@@ -76,8 +76,10 @@ struct acct
#include <linux/config.h>
#ifdef CONFIG_BSD_PROCESS_ACCT
+extern void acct_auto_close(kdev_t dev);
extern int acct_process(long exitcode);
#else
+#define acct_auto_close(x) do { } while (0)
#define acct_process(x) do { } while (0)
#endif
diff --git a/include/linux/apm_bios.h b/include/linux/apm_bios.h
index f0b7a5793..a478c0c66 100644
--- a/include/linux/apm_bios.h
+++ b/include/linux/apm_bios.h
@@ -3,7 +3,7 @@
/*
* Include file for the interface to an APM BIOS
- * Copyright 1994, 1995 Stephen Rothwell (Stephen.Rothwell@pd.necisa.oz.au)
+ * Copyright 1994-1998 Stephen Rothwell (Stephen.Rothwell@canb.auug.org.au)
*
* 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
@@ -14,8 +14,6 @@
* 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.
- *
- * $Id: apm_bios.h,v 0.9 1995/03/09 13:50:05 sfr Exp $
*/
typedef unsigned short apm_event_t;
@@ -79,11 +77,12 @@ struct apm_bios_struct {
extern struct apm_bios_info apm_bios_info;
extern void apm_bios_init(void);
+extern void apm_setup(char *, int *);
extern int apm_register_callback(int (*callback)(apm_event_t));
extern void apm_unregister_callback(int (*callback)(apm_event_t));
-extern int apm_set_power_state(ushort state);
+extern void apm_power_off(void);
extern int apm_display_blank(void);
extern int apm_display_unblank(void);
diff --git a/include/linux/auto_fs.h b/include/linux/auto_fs.h
index 2b25d2902..9a0ddd6c4 100644
--- a/include/linux/auto_fs.h
+++ b/include/linux/auto_fs.h
@@ -22,6 +22,27 @@
#define AUTOFS_PROTO_VERSION 3
+/*
+ * Architectures where both 32- and 64-bit binaries can be executed
+ * on 64-bit kernels need this. This keeps the structure format
+ * uniform, and makes sure the wait_queue_token isn't too big to be
+ * passed back down to the kernel.
+ *
+ * This assumes that on these architectures:
+ * mode 32 bit 64 bit
+ * -------------------------
+ * int 32 bit 32 bit
+ * long 32 bit 64 bit
+ *
+ * If so, 32-bit user-space code should be backwards compatible.
+ */
+
+#if defined(__sparc__) || defined(__mips__)
+typedef unsigned int autofs_wqt_t;
+#else
+typedef unsigned long autofs_wqt_t;
+#endif
+
enum autofs_packet_type {
autofs_ptype_missing, /* Missing entry (mount request) */
autofs_ptype_expire, /* Expire entry (umount request) */
@@ -34,7 +55,7 @@ struct autofs_packet_hdr {
struct autofs_packet_missing {
struct autofs_packet_hdr hdr;
- unsigned long wait_queue_token;
+ autofs_wqt_t wait_queue_token;
int len;
char name[NAME_MAX+1];
};
diff --git a/include/linux/blk.h b/include/linux/blk.h
index e069791f2..e0d904fc1 100644
--- a/include/linux/blk.h
+++ b/include/linux/blk.h
@@ -147,13 +147,13 @@ static void floppy_off(unsigned int nr);
#define DEVICE_ON(device)
#define DEVICE_OFF(device)
-#elif (MAJOR_NR == SCSI_DISK_MAJOR)
+#elif (SCSI_DISK_MAJOR(MAJOR_NR))
#define DEVICE_NAME "scsidisk"
#define DEVICE_INTR do_sd
#define TIMEOUT_VALUE (2*HZ)
#define DEVICE_REQUEST do_sd_request
-#define DEVICE_NR(device) (MINOR(device) >> 4)
+#define DEVICE_NR(device) (((MAJOR(device) & SD_MAJOR_MASK) << (8 - 4)) + (MINOR(device) >> 4))
#define DEVICE_ON(device)
#define DEVICE_OFF(device)
diff --git a/include/linux/capability.h b/include/linux/capability.h
index 3f5260c02..07248ac5d 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -38,9 +38,19 @@ typedef struct __user_cap_data_struct {
#ifdef __KERNEL__
+/* #define STRICT_CAP_T_TYPECHECKS */
+
+#ifdef STRICT_CAP_T_TYPECHECKS
+
typedef struct kernel_cap_struct {
__u32 cap;
} kernel_cap_t;
+
+#else
+
+typedef __u32 kernel_cap_t;
+
+#endif
#define _USER_CAP_HEADER_SIZE (2*sizeof(__u32))
#define _KERNEL_CAP_T_SIZE (sizeof(kernel_cap_t))
@@ -259,51 +269,63 @@ typedef struct kernel_cap_struct {
/*
* Internal kernel functions only
*/
+
+#ifdef STRICT_CAP_T_TYPECHECKS
+
+#define to_cap_t(x) { x }
+#define cap_t(x) (x).cap
+
+#else
+
+#define to_cap_t(x) (x)
+#define cap_t(x) (x)
+
+#endif
-#define CAP_EMPTY_SET { 0 }
-#define CAP_FULL_SET { ~0 }
-#define CAP_INIT_EFF_SET { ~0 & ~CAP_TO_MASK(CAP_SETPCAP) }
-#define CAP_INIT_INH_SET { ~0 & ~CAP_TO_MASK(CAP_SETPCAP) }
+#define CAP_EMPTY_SET to_cap_t(0)
+#define CAP_FULL_SET to_cap_t(~0)
+#define CAP_INIT_EFF_SET to_cap_t(~0 & ~CAP_TO_MASK(CAP_SETPCAP))
+#define CAP_INIT_INH_SET to_cap_t(~0 & ~CAP_TO_MASK(CAP_SETPCAP))
#define CAP_TO_MASK(x) (1 << (x))
-#define cap_raise(c, flag) ((c).cap |= CAP_TO_MASK(flag))
-#define cap_lower(c, flag) ((c).cap &= ~CAP_TO_MASK(flag))
-#define cap_raised(c, flag) ((c).cap & CAP_TO_MASK(flag))
+#define cap_raise(c, flag) (cap_t(c) |= CAP_TO_MASK(flag))
+#define cap_lower(c, flag) (cap_t(c) &= ~CAP_TO_MASK(flag))
+#define cap_raised(c, flag) (cap_t(c) & CAP_TO_MASK(flag))
static inline kernel_cap_t cap_combine(kernel_cap_t a, kernel_cap_t b)
{
kernel_cap_t dest;
- dest.cap = a.cap | b.cap;
+ cap_t(dest) = cap_t(a) | cap_t(b);
return dest;
}
static inline kernel_cap_t cap_intersect(kernel_cap_t a, kernel_cap_t b)
{
kernel_cap_t dest;
- dest.cap = a.cap & b.cap;
+ cap_t(dest) = cap_t(a) & cap_t(b);
return dest;
}
static inline kernel_cap_t cap_drop(kernel_cap_t a, kernel_cap_t drop)
{
kernel_cap_t dest;
- dest.cap = a.cap & ~drop.cap;
+ cap_t(dest) = cap_t(a) & ~cap_t(drop);
return dest;
}
static inline kernel_cap_t cap_invert(kernel_cap_t c)
{
kernel_cap_t dest;
- dest.cap = ~c.cap;
+ cap_t(dest) = ~cap_t(c);
return dest;
}
-#define cap_isclear(c) (!(c).cap)
-#define cap_issubset(a,set) (!((a).cap & ~(set).cap))
+#define cap_isclear(c) (!cap_t(c))
+#define cap_issubset(a,set) (!(cap_t(a) & ~cap_t(set)))
-#define cap_clear(c) do { (c).cap = 0; } while(0)
-#define cap_set_full(c) do { (c).cap = ~0; } while(0)
-#define cap_mask(c,mask) do { (c).cap &= (mask).cap; } while(0)
+#define cap_clear(c) do { cap_t(c) = 0; } while(0)
+#define cap_set_full(c) do { cap_t(c) = ~0; } while(0)
+#define cap_mask(c,mask) do { cap_t(c) &= cap_t(mask); } while(0)
#define cap_is_fs_cap(c) (CAP_TO_MASK(c) & CAP_FS_MASK)
diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h
index 8448fc6ca..9b8a9c3c6 100644
--- a/include/linux/cdrom.h
+++ b/include/linux/cdrom.h
@@ -5,6 +5,8 @@
* 1994, 1995 Eberhard Moenkeberg, emoenke@gwdg.de
* 1996 David van Leeuwen, david@tm.tno.nl
* 1997, 1998 Erik Andersen, andersee@debian.org
+ * 1998 Jens Axboe, axboe@image.dk and
+ * Chris Zwilling, chris@cloudnet.com
*/
#ifndef _LINUX_CDROM_H
@@ -415,6 +417,14 @@ extern struct file_operations cdrom_fops;
extern int register_cdrom(struct cdrom_device_info *cdi);
extern int unregister_cdrom(struct cdrom_device_info *cdi);
+typedef struct {
+ int data;
+ int audio;
+ int cdi;
+ int xa;
+ long error;
+} tracktype;
+extern void cdrom_count_tracks(struct cdrom_device_info *cdi,tracktype* tracks);
#endif /* End of kernel only stuff */
#endif /* _LINUX_CDROM_H */
diff --git a/include/linux/console.h b/include/linux/console.h
index 0fdb484d6..35bc9984b 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -54,15 +54,11 @@ extern struct consw compat_con; /* console wrapper */
extern struct consw prom_con; /* SPARC PROM console */
void take_over_console(struct consw *sw, int first, int last, int deflt);
-
-/* flag bits */
-#define CON_INITED (1)
+void give_up_console(struct consw *sw);
/* scroll */
#define SM_UP (1)
#define SM_DOWN (2)
-#define SM_LEFT (3)
-#define SM_RIGHT (4)
/* cursor */
#define CM_DRAW (1)
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h
index dafd1c299..0f664086a 100644
--- a/include/linux/console_struct.h
+++ b/include/linux/console_struct.h
@@ -19,7 +19,6 @@ struct vc_data {
struct consw *vc_sw;
unsigned short *vc_screenbuf; /* In-memory character/attribute buffer */
unsigned int vc_screenbuf_size;
- unsigned short vc_video_erase_char; /* Background erase character */
unsigned char vc_attr; /* Current attributes */
unsigned char vc_def_color; /* Default colors */
unsigned char vc_color; /* Foreground & background */
@@ -28,6 +27,8 @@ struct vc_data {
unsigned char vc_halfcolor; /* Color for half intensity mode */
unsigned short vc_complement_mask; /* [#] Xor mask for mouse pointer */
unsigned short vc_hi_font_mask; /* [#] Attribute set for upper 256 chars of font or 0 if not supported */
+ unsigned short vc_video_erase_char; /* Background erase character */
+ unsigned short vc_s_complement_mask; /* Saved mouse pointer mask */
unsigned int vc_x, vc_y; /* Cursor position */
unsigned int vc_top, vc_bottom; /* Scrolling region */
unsigned int vc_state; /* Escape sequence parser state */
@@ -104,3 +105,5 @@ extern struct vc vc_cons [MAX_NR_CONSOLES];
#define CUR_SWMASK 0xfff0
#define CUR_DEFAULT CUR_UNDERLINE
+
+#define CON_IS_VISIBLE(conp) (*conp->vc_display_fg == conp)
diff --git a/include/linux/cyclades.h b/include/linux/cyclades.h
index e7c8a38f0..41d57b959 100644
--- a/include/linux/cyclades.h
+++ b/include/linux/cyclades.h
@@ -757,9 +757,9 @@ struct cyclades_port {
/* Custom Registers */
#define CyPLX_VER (0x3400)
-#define PLX_9050 0x11
-#define PLX_9060 0x12
-#define PLX_9080 0x13
+#define PLX_9050 0x0b
+#define PLX_9060 0x0c
+#define PLX_9080 0x0d
/***************************************************************************/
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index b546fb5af..93b863695 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -27,7 +27,7 @@ struct qstr {
#define init_name_hash() 0
/* partial hash update function. Assume roughly 4 bits per character */
-static __inline__ unsigned long partial_name_hash(unsigned char c, unsigned long prevhash)
+static __inline__ unsigned long partial_name_hash(unsigned long c, unsigned long prevhash)
{
prevhash = (prevhash << 4) | (prevhash >> (8*sizeof(unsigned long)-4));
return prevhash ^ c;
diff --git a/include/linux/errqueue.h b/include/linux/errqueue.h
new file mode 100644
index 000000000..4a16756d9
--- /dev/null
+++ b/include/linux/errqueue.h
@@ -0,0 +1,42 @@
+#ifndef _LINUX_ERRQUEUE_H
+#define _LINUX_ERRQUEUE_H 1
+
+#include <linux/config.h>
+
+struct sock_extended_err
+{
+ __u32 ee_errno;
+ __u8 ee_origin;
+ __u8 ee_type;
+ __u8 ee_code;
+ __u8 ee_pad;
+ __u32 ee_info;
+ __u32 ee_data;
+};
+
+#define SO_EE_ORIGIN_NONE 0
+#define SO_EE_ORIGIN_LOCAL 1
+#define SO_EE_ORIGIN_ICMP 2
+#define SO_EE_ORIGIN_ICMP6 3
+
+#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1))
+
+#ifdef __KERNEL__
+#define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb))
+
+struct sock_exterr_skb
+{
+ union {
+ struct inet_skb_parm h4;
+#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
+ struct inet6_skb_parm h6;
+#endif
+ } header;
+ struct sock_extended_err ee;
+ u16 addr_offset;
+ u16 port;
+};
+
+#endif
+
+#endif
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
index 6d4205c97..96b1d1955 100644
--- a/include/linux/ext2_fs.h
+++ b/include/linux/ext2_fs.h
@@ -520,6 +520,7 @@ struct ext2_dir_entry_2 {
extern int ext2_permission (struct inode *, int);
/* balloc.c */
+extern int ext2_group_sparse(int group);
extern int ext2_new_block (const struct inode *, unsigned long,
__u32 *, __u32 *, int *);
extern void ext2_free_blocks (const struct inode *, unsigned long,
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 7c631b44a..cb5618a56 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -57,6 +57,14 @@
#define FB_ACCEL_SUN_CREATOR 11 /* Sun Creator/Creator3D */
#define FB_ACCEL_SUN_CGSIX 12 /* Sun cg6 */
#define FB_ACCEL_SUN_LEO 13 /* Sun leo/zx */
+#define FB_ACCEL_IMS_TWINTURBO 14 /* IMS Twin Turbo */
+#define FB_ACCEL_3DLABS_PERMEDIA2 15 /* 3Dlabs Permedia 2 */
+#define FB_ACCEL_MATROX_MGA2064W 16 /* Matrox MGA2064W (Millenium) */
+#define FB_ACCEL_MATROX_MGA1064SG 17 /* Matrox MGA1064SG (Mystique) */
+#define FB_ACCEL_MATROX_MGA2164W 18 /* Matrox MGA2164W (Millenium II) */
+#define FB_ACCEL_MATROX_MGA2164W_AGP 19 /* Matrox MGA2164W (Millenium II) */
+#define FB_ACCEL_MATROX_MGAG100 20 /* Matrox G100 (Productiva G100) */
+#define FB_ACCEL_MATROX_MGAG200 21 /* Matrox G200 (Myst, Mill, ...) */
struct fb_fix_screeninfo {
char id[16]; /* identification string eg "TT Builtin" */
@@ -99,6 +107,7 @@ struct fb_bitfield {
/* values */
#define FB_ACTIVATE_VBL 16 /* activate values on next vbl */
#define FB_CHANGE_CMAP_VBL 32 /* change colormap on vbl */
+#define FB_ACTIVATE_ALL 64 /* change all VCs on this fb */
#define FB_ACCELF_TEXT 1 /* text mode acceleration */
@@ -230,56 +239,59 @@ struct fb_ops {
*/
struct display {
- /* Filled in by the frame buffer device */
+ /* Filled in by the frame buffer device */
- struct fb_var_screeninfo var; /* variable infos. yoffset and vmode */
- /* are updated by fbcon.c */
- struct fb_cmap cmap; /* colormap */
- char *screen_base; /* pointer to top of virtual screen */
+ struct fb_var_screeninfo var; /* variable infos. yoffset and vmode */
+ /* are updated by fbcon.c */
+ struct fb_cmap cmap; /* colormap */
+ char *screen_base; /* pointer to top of virtual screen */
/* (virtual address) */
- int visual;
- int type; /* see FB_TYPE_* */
- int type_aux; /* Interleave for interleaved Planes */
- u_short ypanstep; /* zero if no hardware ypan */
- u_short ywrapstep; /* zero if no hardware ywrap */
- u_long line_length; /* length of a line in bytes */
- u_short can_soft_blank; /* zero if no hardware blanking */
- u_short inverse; /* != 0 text black on white as default */
+ int visual;
+ int type; /* see FB_TYPE_* */
+ int type_aux; /* Interleave for interleaved Planes */
+ u_short ypanstep; /* zero if no hardware ypan */
+ u_short ywrapstep; /* zero if no hardware ywrap */
+ u_long line_length; /* length of a line in bytes */
+ u_short can_soft_blank; /* zero if no hardware blanking */
+ u_short inverse; /* != 0 text black on white as default */
+ struct display_switch *dispsw; /* low level operations */
+ void *dispsw_data; /* optional dispsw helper data */
#if 0
- struct fb_fix_cursorinfo fcrsr;
- struct fb_var_cursorinfo *vcrsr;
- struct fb_cursorstate crsrstate;
+ struct fb_fix_cursorinfo fcrsr;
+ struct fb_var_cursorinfo *vcrsr;
+ struct fb_cursorstate crsrstate;
#endif
- /* Filled in by the low-level console driver */
-
- struct vc_data *conp; /* pointer to console data */
- struct fb_info *fb_info; /* frame buffer for this console */
- int vrows; /* number of virtual rows */
- unsigned short cursor_x; /* current cursor position */
- unsigned short cursor_y;
- int fgcol; /* text colors */
- int bgcol;
- u_long next_line; /* offset to one line below */
- u_long next_plane; /* offset to next plane */
- u_char *fontdata; /* Font associated to this display */
- unsigned short fontheightlog;
- unsigned short fontwidthlog;
- unsigned short fontheight;
- unsigned short fontwidth;
- int userfont; /* != 0 if fontdata kmalloc()ed */
- struct display_switch *dispsw; /* low level operations */
- u_short scrollmode; /* Scroll Method */
- short yscroll; /* Hardware scrolling */
- unsigned char fgshift, bgshift;
- unsigned short charmask; /* 0xff or 0x1ff */
+ /* Filled in by the low-level console driver */
+
+ struct vc_data *conp; /* pointer to console data */
+ struct fb_info *fb_info; /* frame buffer for this console */
+ int vrows; /* number of virtual rows */
+ unsigned short cursor_x; /* current cursor position */
+ unsigned short cursor_y;
+ int fgcol; /* text colors */
+ int bgcol;
+ u_long next_line; /* offset to one line below */
+ u_long next_plane; /* offset to next plane */
+ u_char *fontdata; /* Font associated to this display */
+ unsigned short _fontheightlog;
+ unsigned short _fontwidthlog;
+ unsigned short _fontheight;
+ unsigned short _fontwidth;
+ int userfont; /* != 0 if fontdata kmalloc()ed */
+ u_short scrollmode; /* Scroll Method */
+ short yscroll; /* Hardware scrolling */
+ unsigned char fgshift, bgshift;
+ unsigned short charmask; /* 0xff or 0x1ff */
};
struct fb_info {
char modename[40]; /* default video mode */
int node;
+ int flags;
+#define FBINFO_FLAG_MODULE 1 /* Low-level driver is a module */
struct fb_ops *fbops;
struct fb_monspecs monspecs;
struct display *disp; /* initial display variable */
@@ -297,6 +309,11 @@ struct fb_info {
/* From here on everything is device dependent */
};
+#ifdef MODULE
+#define FBINFO_FLAG_DEFAULT FBINFO_FLAG_MODULE
+#else
+#define FBINFO_FLAG_DEFAULT 0
+#endif
/*
* This structure abstracts from the underlying hardware. It is not
@@ -321,8 +338,8 @@ struct fbgen_hwswitch {
int (*pan_display)(const struct fb_var_screeninfo *var,
struct fb_info_gen *info);
int (*blank)(int blank_mode, struct fb_info_gen *info);
- struct display_switch *(*get_dispsw)(const void *par,
- struct fb_info_gen *info);
+ void (*set_dispsw)(const void *par, struct display *disp,
+ struct fb_info_gen *info);
};
struct fb_info_gen {
@@ -394,14 +411,13 @@ extern struct display fb_display[MAX_NR_CONSOLES];
extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to,
int fsfromto);
-extern int fb_get_cmap(struct fb_cmap *cmap, struct fb_var_screeninfo *var,
- int kspc, int (*getcolreg)(u_int, u_int *, u_int *,
- u_int *, u_int *,
- struct fb_info *),
+extern int fb_get_cmap(struct fb_cmap *cmap, int kspc,
+ int (*getcolreg)(u_int, u_int *, u_int *, u_int *,
+ u_int *, struct fb_info *),
struct fb_info *fb_info);
-extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_var_screeninfo *var,
- int kspc, int (*setcolreg)(u_int, u_int, u_int, u_int,
- u_int, struct fb_info *),
+extern int fb_set_cmap(struct fb_cmap *cmap, int kspc,
+ int (*setcolreg)(u_int, u_int, u_int, u_int, u_int,
+ struct fb_info *),
struct fb_info *fb_info);
extern struct fb_cmap *fb_default_cmap(int len);
extern void fb_invert_cmaps(void);
@@ -462,31 +478,6 @@ struct fb_cursorstate {
#define FB_CURSOR_ON 1
#define FB_CURSOR_FLASH 2
-#define FBCMD_DRAWLINE 0x4621
-#define FBCMD_MOVE 0x4622
-
-#define FB_LINE_XOR 1
-#define FB_LINE_BOX 2
-#define FB_LINE_FILLED 4
-
-struct fb_line {
- __s32 start_x;
- __s32 start_y;
- __s32 end_x;
- __s32 end_y;
- __u32 color;
- __u32 option;
-};
-
-struct fb_move {
- __s32 src_x;
- __s32 src_y;
- __s32 dest_x;
- __s32 dest_y;
- __u32 height;
- __u32 width;
-};
-
#endif /* Preliminary */
#endif /* _LINUX_FB_H */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 8a2b4478f..3a38d6f86 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -114,19 +114,27 @@ extern int max_super_blocks, nr_super_blocks;
* ioctl() that is not currently implemented.
*
* Exception: MS_RDONLY is always applied to the entire file system.
+ *
+ * Unfortunately, it is possible to change a filesystems flags with it mounted
+ * with files in use. This means that all of the inodes will not have their
+ * i_flags updated. Hence, i_flags no longer inherit the superblock mount
+ * flags, so these have to be checked separately. -- rmk@arm.uk.linux.org
*/
+#define __IS_FLG(inode,flg) (((inode)->i_sb && (inode)->i_sb->s_flags & (flg)) \
+ || (inode)->i_flags & (flg))
+
#define IS_RDONLY(inode) (((inode)->i_sb) && ((inode)->i_sb->s_flags & MS_RDONLY))
-#define IS_NOSUID(inode) ((inode)->i_flags & MS_NOSUID)
-#define IS_NODEV(inode) ((inode)->i_flags & MS_NODEV)
-#define IS_NOEXEC(inode) ((inode)->i_flags & MS_NOEXEC)
-#define IS_SYNC(inode) ((inode)->i_flags & MS_SYNCHRONOUS)
-#define IS_MANDLOCK(inode) ((inode)->i_flags & MS_MANDLOCK)
-
-#define IS_QUOTAINIT(inode) ((inode)->i_flags & S_QUOTA)
-#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
-#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
-#define IS_NOATIME(inode) ((inode)->i_flags & MS_NOATIME)
-#define IS_NODIRATIME(inode) ((inode)->i_flags & MS_NODIRATIME)
+#define IS_NOSUID(inode) __IS_FLG(inode, MS_NOSUID)
+#define IS_NODEV(inode) __IS_FLG(inode, MS_NODEV)
+#define IS_NOEXEC(inode) __IS_FLG(inode, MS_NOEXEC)
+#define IS_SYNC(inode) __IS_FLG(inode, MS_SYNCHRONOUS)
+#define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
+
+#define IS_QUOTAINIT(inode) ((inode)->i_flags & S_QUOTA)
+#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
+#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
+#define IS_NOATIME(inode) __IS_FLG(inode, MS_NOATIME)
+#define IS_NODIRATIME(inode) __IS_FLG(inode, MS_NODIRATIME)
/* the read-only stuff doesn't really belong here, but any other place is
probably as bad and I don't want to create yet another include file. */
@@ -349,6 +357,7 @@ struct inode {
unsigned long i_version;
unsigned long i_nrpages;
struct semaphore i_sem;
+ struct semaphore i_atomic_write;
struct inode_operations *i_op;
struct super_block *i_sb;
struct wait_queue *i_wait;
@@ -480,39 +489,6 @@ extern void posix_unblock_lock(struct file_lock *);
#include <linux/stat.h>
-#define FLOCK_VERIFY_READ 1
-#define FLOCK_VERIFY_WRITE 2
-
-extern int locks_mandatory_locked(struct inode *inode);
-extern int locks_mandatory_area(int read_write, struct inode *inode,
- struct file *filp, loff_t offset,
- size_t count);
-
-extern inline int locks_verify_locked(struct inode *inode)
-{
- /* Candidates for mandatory locking have the setgid bit set
- * but no group execute bit - an otherwise meaningless combination.
- */
- if (IS_MANDLOCK(inode) &&
- (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
- return (locks_mandatory_locked(inode));
- return (0);
-}
-
-extern inline int locks_verify_area(int read_write, struct inode *inode,
- struct file *filp, loff_t offset,
- size_t count)
-{
- /* Candidates for mandatory locking have the setgid bit set
- * but no group execute bit - an otherwise meaningless combination.
- */
- if (IS_MANDLOCK(inode) &&
- (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
- return (locks_mandatory_area(read_write, inode, filp, offset,
- count));
- return (0);
-}
-
struct fasync_struct {
int magic;
int fa_fd;
@@ -626,15 +602,14 @@ struct inode_operations {
int (*rename) (struct inode *, struct dentry *,
struct inode *, struct dentry *);
int (*readlink) (struct dentry *, char *,int);
- struct dentry * (*follow_link) (struct dentry *, struct dentry *);
+ struct dentry * (*follow_link) (struct dentry *, struct dentry *, unsigned int);
int (*readpage) (struct file *, struct page *);
int (*writepage) (struct file *, struct page *);
int (*bmap) (struct inode *,int);
void (*truncate) (struct inode *);
int (*permission) (struct inode *, int);
int (*smap) (struct inode *,int);
- int (*updatepage) (struct file *, struct page *, const char *,
- unsigned long, unsigned int, int);
+ int (*updatepage) (struct file *, struct page *, unsigned long, unsigned int, int);
int (*revalidate) (struct dentry *);
};
@@ -672,6 +647,41 @@ struct file_system_type {
extern int register_filesystem(struct file_system_type *);
extern int unregister_filesystem(struct file_system_type *);
+
+#define FLOCK_VERIFY_READ 1
+#define FLOCK_VERIFY_WRITE 2
+
+extern int locks_mandatory_locked(struct inode *inode);
+extern int locks_mandatory_area(int read_write, struct inode *inode,
+ struct file *filp, loff_t offset,
+ size_t count);
+
+extern inline int locks_verify_locked(struct inode *inode)
+{
+ /* Candidates for mandatory locking have the setgid bit set
+ * but no group execute bit - an otherwise meaningless combination.
+ */
+ if (IS_MANDLOCK(inode) &&
+ (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
+ return (locks_mandatory_locked(inode));
+ return (0);
+}
+
+extern inline int locks_verify_area(int read_write, struct inode *inode,
+ struct file *filp, loff_t offset,
+ size_t count)
+{
+ /* Candidates for mandatory locking have the setgid bit set
+ * but no group execute bit - an otherwise meaningless combination.
+ */
+ if (IS_MANDLOCK(inode) &&
+ (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
+ return (locks_mandatory_area(read_write, inode, filp, offset,
+ count));
+ return (0);
+}
+
+
/* fs/open.c */
asmlinkage int sys_open(const char *, int, int);
@@ -680,6 +690,7 @@ extern int do_truncate(struct dentry *, unsigned long);
extern int get_unused_fd(void);
extern void put_unused_fd(unsigned int);
extern int close_fp(struct file *, fl_owner_t id);
+extern struct file *filp_open(const char *, int, int);
extern char * getname(const char * filename);
extern void putname(char * name);
@@ -787,8 +798,8 @@ extern ino_t find_inode_number(struct dentry *, struct qstr *);
#define PTR_ERR(ptr) ((long)(ptr))
#define IS_ERR(ptr) ((unsigned long)(ptr) > (unsigned long)(-1000))
-extern struct dentry * lookup_dentry(const char *, struct dentry *, int);
-extern struct dentry * __namei(const char *, int);
+extern struct dentry * lookup_dentry(const char *, struct dentry *, unsigned int);
+extern struct dentry * __namei(const char *, unsigned int);
#define namei(pathname) __namei(pathname, 1)
#define lnamei(pathname) __namei(pathname, 0)
diff --git a/include/linux/hdreg.h b/include/linux/hdreg.h
index bb343ac2e..79d657a0d 100644
--- a/include/linux/hdreg.h
+++ b/include/linux/hdreg.h
@@ -42,6 +42,7 @@
#define WIN_RESTORE 0x10
#define WIN_READ 0x20
#define WIN_WRITE 0x30
+#define WIN_WRITE_VERIFY 0x3C
#define WIN_VERIFY 0x40
#define WIN_FORMAT 0x50
#define WIN_INIT 0x60
@@ -62,6 +63,9 @@
#define WIN_READDMA 0xc8 /* read sectors using DMA transfers */
#define WIN_WRITEDMA 0xca /* write sectors using DMA transfers */
+#define WIN_READ_BUFFER 0xE4 /* force read only 1 sector */
+#define WIN_WRITE_BUFFER 0xE8 /* force write only 1 sector */
+
#define WIN_SMART 0xb0 /* self-monitoring and reporting */
/* Additional drive command codes used by ATAPI devices. */
@@ -85,6 +89,7 @@
#define MARK_ERR 0x01 /* Bad address mark */
#define TRK0_ERR 0x02 /* couldn't find track 0 */
#define ABRT_ERR 0x04 /* Command aborted */
+#define MCR_ERR 0x08 /* media change request */
#define ID_ERR 0x10 /* ID field not found */
#define ECC_ERR 0x40 /* Uncorrectable ECC error */
#define BBD_ERR 0x80 /* pre-EIDE meaning: block marked bad */
diff --git a/include/linux/hfs_fs.h b/include/linux/hfs_fs.h
index 9b43579c0..eaae0ecc5 100644
--- a/include/linux/hfs_fs.h
+++ b/include/linux/hfs_fs.h
@@ -104,10 +104,10 @@
*/
#define hfs_h_to_mtime(ARG) htonl((hfs_s32)ntohl(ARG)+3029529600U)
#define hfs_m_to_htime(ARG) ((hfs_s32)htonl(ntohl(ARG)-3029529600U))
-#define hfs_h_to_utime(ARG) ((hfs_s32)ntohl(ARG)+946684800U)
-#define hfs_u_to_htime(ARG) ((hfs_s32)htonl((ARG)-946684800U))
-#define hfs_u_to_mtime(ARG) htonl((ARG)+2082844800U)
-#define hfs_m_to_utime(ARG) (ntohl(ARG)-2082844800U)
+#define hfs_h_to_utime(ARG) ((hfs_s32)hfs_to_utc(ntohl(ARG)+946684800U))
+#define hfs_u_to_htime(ARG) ((hfs_s32)htonl(hfs_from_utc(ARG)-946684800U))
+#define hfs_u_to_mtime(ARG) htonl(hfs_from_utc(ARG)+2082844800U)
+#define hfs_m_to_utime(ARG) (hfs_to_utc(ntohl(ARG)-2082844800U))
/*======== Data structures kept in memory ========*/
diff --git a/include/linux/hfs_sysdep.h b/include/linux/hfs_sysdep.h
index 22e2ac66b..00cc64008 100644
--- a/include/linux/hfs_sysdep.h
+++ b/include/linux/hfs_sysdep.h
@@ -25,6 +25,7 @@
#include <asm/byteorder.h>
#include <asm/unaligned.h>
+extern struct timezone sys_tz;
#undef offsetof
#define offsetof(TYPE, MEMB) ((size_t) &((TYPE *)0)->MEMB)
@@ -68,8 +69,24 @@ extern inline void hfs_free(void *ptr, unsigned int size) {
}
+/* handle conversion between times.
+ *
+ * NOTE: hfs+ doesn't need this. also, we don't use tz_dsttime as that's
+ * not a good thing to do. instead, we depend upon tz_minuteswest
+ * having the correct daylight savings correction.
+ */
+extern inline hfs_u32 hfs_from_utc(hfs_s32 time)
+{
+ return time - sys_tz.tz_minuteswest*60;
+}
+
+extern inline hfs_s32 hfs_to_utc(hfs_u32 time)
+{
+ return time + sys_tz.tz_minuteswest*60;
+}
+
extern inline hfs_u32 hfs_time(void) {
- return htonl(CURRENT_TIME+2082844800U);
+ return htonl(hfs_from_utc(CURRENT_TIME)+2082844800U);
}
diff --git a/include/linux/hippidevice.h b/include/linux/hippidevice.h
index 467798a19..f3b3310e3 100644
--- a/include/linux/hippidevice.h
+++ b/include/linux/hippidevice.h
@@ -49,6 +49,7 @@ extern void hippi_header_cache_update(struct hh_cache *hh,
extern int hippi_header_parse(struct sk_buff *skb, unsigned char *haddr);
extern void hippi_net_init(void);
+void hippi_setup(struct device *dev);
extern struct device *init_hippi_dev(struct device *, int);
#endif
diff --git a/include/linux/if.h b/include/linux/if.h
index a5fdf3aed..cd5f31391 100644
--- a/include/linux/if.h
+++ b/include/linux/if.h
@@ -43,7 +43,9 @@
#define IFF_PORTSEL 0x2000 /* can set media type */
#define IFF_AUTOMEDIA 0x4000 /* auto media select active */
-#define IFF_NODYNARP 0x8000 /* use static ARP only (HIPPI) */
+#define IFF_DYNAMIC 0x8000 /* dialup device with changing addresses*/
+
+#ifdef __KERNEL__
/*
* The ifaddr structure contains information about one address
* of an interface. They are maintained by the different address
@@ -66,6 +68,8 @@ struct ifaddr
#define ifa_broadaddr ifa_ifu.ifu_broadaddr /* broadcast address */
#define ifa_dstaddr ifa_ifu.ifu_dstaddr /* other end of link */
+#endif /* __KERNEL__ */
+
/*
* Device mapping structure. I'd just gone off and designed a
* beautiful scheme using only loadable modules with arguments
@@ -115,7 +119,7 @@ struct ifreq
struct ifmap ifru_map;
char ifru_slave[IFNAMSIZ]; /* Just fits the size */
char ifru_newname[IFNAMSIZ];
- __kernel_caddr_t ifru_data;
+ char * ifru_data;
} ifr_ifru;
};
@@ -148,7 +152,7 @@ struct ifconf
int ifc_len; /* size of buffer */
union
{
- __kernel_caddr_t ifcu_buf;
+ char * ifcu_buf;
struct ifreq *ifcu_req;
} ifc_ifcu;
};
diff --git a/include/linux/if_pppvar.h b/include/linux/if_pppvar.h
index cf70fe655..a85b33cd1 100644
--- a/include/linux/if_pppvar.h
+++ b/include/linux/if_pppvar.h
@@ -42,7 +42,7 @@
*/
/*
- * ==FILEVERSION 980704==
+ * ==FILEVERSION 981004==
*
* NOTE TO MAINTAINERS:
* If you modify this file at all, please set the above date.
@@ -80,6 +80,7 @@ struct ppp {
struct slcompress *slcomp; /* for TCP header compression */
struct sk_buff_head xmt_q; /* frames to send from pppd */
struct sk_buff_head rcv_q; /* frames for pppd to read */
+ unsigned long xmit_busy; /* bit 0 set when xmitter busy */
/* Information specific to using ppp on async serial lines. */
struct tty_struct *tty; /* ptr to TTY structure */
diff --git a/include/linux/in.h b/include/linux/in.h
index 2cc007a43..0dc2231a4 100644
--- a/include/linux/in.h
+++ b/include/linux/in.h
@@ -57,17 +57,18 @@ struct in_addr {
#define IP_RETOPTS 7
#define IP_PKTINFO 8
#define IP_PKTOPTIONS 9
-#define IP_PMTUDISC 10
+#define IP_MTU_DISCOVER 10
#define IP_RECVERR 11
#define IP_RECVTTL 12
#define IP_RECVTOS 13
+#define IP_MTU 14
/* BSD compatibility */
#define IP_RECVRETOPTS IP_RETOPTS
-/* IP_PMTUDISC values */
-#define IP_PMTUDISC_WANT 0 /* Use per route hints */
-#define IP_PMTUDISC_DONT 1 /* Never send DF frames */
+/* IP_MTU_DISCOVER values */
+#define IP_PMTUDISC_DONT 0 /* Never send DF frames */
+#define IP_PMTUDISC_WANT 1 /* Use per route hints */
#define IP_PMTUDISC_DO 2 /* Always DF */
#define IP_MULTICAST_IF 32
diff --git a/include/linux/in6.h b/include/linux/in6.h
index b63918419..50f9d2d72 100644
--- a/include/linux/in6.h
+++ b/include/linux/in6.h
@@ -149,5 +149,13 @@ struct ipv6_mreq {
#define IPV6_ADD_MEMBERSHIP 20
#define IPV6_DROP_MEMBERSHIP 21
#define IPV6_ROUTER_ALERT 22
+#define IPV6_MTU_DISCOVER 23
+#define IPV6_MTU 24
+#define IPV6_RECVERR 25
+
+/* IPV6_MTU_DISCOVER values */
+#define IPV6_PMTUDISC_DONT 0
+#define IPV6_PMTUDISC_WANT 1
+#define IPV6_PMTUDISC_DO 2
#endif
diff --git a/include/linux/ip.h b/include/linux/ip.h
index f09175b4e..6675cee95 100644
--- a/include/linux/ip.h
+++ b/include/linux/ip.h
@@ -67,29 +67,13 @@
#define MAXTTL 255
#define IPDEFTTL 64
-struct timestamp {
- __u8 len;
- __u8 ptr;
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- __u8 flags:4,
- overflow:4;
-#elif defined(__BIG_ENDIAN_BITFIELD)
- __u8 overflow:4,
- flags:4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
- __u32 data[9];
-};
+/* struct timestamp, struct route and MAX_ROUTES are removed.
-
-#define MAX_ROUTE 16
-
-struct route {
- char route_size;
- char pointer;
- unsigned long route[MAX_ROUTE];
-};
+ REASONS: it is clear that nobody used them because:
+ - MAX_ROUTES value was wrong.
+ - "struct route" was wrong.
+ - "struct timestamp" had fatally misaligned bitfields and was completely unusable.
+ */
#define IPOPT_OPTVAL 0
#define IPOPT_OLEN 1
@@ -102,7 +86,7 @@ struct route {
#define IPOPT_TS_TSONLY 0 /* timestamps only */
#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
-#define IPOPT_TS_PRESPEC 2 /* specified modules only */
+#define IPOPT_TS_PRESPEC 3 /* specified modules only */
struct ip_options {
__u32 faddr; /* Saved first hop address */
diff --git a/include/linux/ip_fw.h b/include/linux/ip_fw.h
index eeaa1eb5f..f36ec7e6f 100644
--- a/include/linux/ip_fw.h
+++ b/include/linux/ip_fw.h
@@ -22,11 +22,13 @@
#ifndef _IP_FWCHAINS_H
#define _IP_FWCHAINS_H
+#ifdef __KERNEL__
#include <linux/icmp.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
+#endif /* __KERNEL__ */
#define IP_FW_MAX_LABEL_LENGTH 8
typedef char ip_chainlabel[IP_FW_MAX_LABEL_LENGTH+1];
@@ -91,11 +93,9 @@ struct ip_fwuser
#define IP_FW_CREATECHAIN (IP_FW_BASE_CTL+9) /* Takes ip_chainlabel */
#define IP_FW_DELETECHAIN (IP_FW_BASE_CTL+10) /* Takes ip_chainlabel */
#define IP_FW_POLICY (IP_FW_BASE_CTL+11) /* Takes ip_fwpolicy */
-/* Masquerade controls */
-#define IP_FW_MASQ_INSERT (IP_FW_BASE_CTL+12)
-#define IP_FW_MASQ_ADD (IP_FW_BASE_CTL+13)
-#define IP_FW_MASQ_DEL (IP_FW_BASE_CTL+14)
-#define IP_FW_MASQ_FLUSH (IP_FW_BASE_CTL+15)
+/* Masquerade control, only 1 optname */
+
+#define IP_FW_MASQ_CTL (IP_FW_BASE_CTL+12) /* General ip_masq ctl */
/* Builtin chain labels */
#define IP_FW_LABEL_FORWARD "forward"
@@ -167,23 +167,7 @@ struct ip_fwpolicy
* timeouts for ip masquerading
*/
-struct ip_fw_masq;
-
-/* Masquerading stuff */
-#define IP_FW_MASQCTL_MAX 256
-#define IP_MASQ_MOD_NMAX 32
-
-struct ip_fw_masqctl
-{
- int mctl_action;
- union {
- struct {
- char name[IP_MASQ_MOD_NMAX];
- char data[1];
- } mod;
- } u;
-};
-
+extern int ip_fw_masq_timeouts(void *, int);
/*
@@ -202,7 +186,7 @@ extern void ip_fw_init(void);
#endif /* 2.1.x */
extern int ip_fw_ctl(int, void *, int);
#ifdef CONFIG_IP_MASQUERADE
-extern int ip_masq_ctl(int, void *, int);
+extern int ip_masq_uctl(int, char *, int);
#endif
#endif /* KERNEL */
diff --git a/include/linux/ip_masq.h b/include/linux/ip_masq.h
new file mode 100644
index 000000000..ac7ca606e
--- /dev/null
+++ b/include/linux/ip_masq.h
@@ -0,0 +1,137 @@
+/*
+ * IP_MASQ user space control interface
+ * $Id: ip_masq.h,v 1.1 1998/08/29 23:50:56 davem Exp $
+ */
+
+#ifndef _LINUX_IP_MASQ_H
+#define _LINUX_IP_MASQ_H
+
+#ifdef __KERNEL__
+#include <linux/types.h>
+#include <linux/stddef.h>
+#else
+#include <sys/types.h>
+#include <stddef.h>
+#endif
+
+struct ip_masq_user {
+ int protocol;
+ u_int16_t sport, dport, mport;
+ u_int32_t saddr, daddr, maddr;
+ u_int32_t rt_daddr; /* dst address to use for rt query */
+ u_int32_t rt_saddr;
+ u_int32_t ip_tos; /* TOS */
+ unsigned timeout; /* in ticks (HZ per sec) */
+ unsigned flags;
+ int fd; /* NOT IMPL: attach tunnel to this fd */
+ int state; /* NOT IMPL: return conn state */
+};
+
+#define IP_MASQ_USER_F_LISTEN 0x01 /* put entry to LISTEN state */
+#define IP_MASQ_USER_F_DEAD 0x02 /* mark as DEAD */
+#define IP_MASQ_USER_F_FORCE 0x04 /* force operation */
+
+struct ip_masq_timeout {
+ int protocol;
+ union {
+ struct {
+ unsigned established;
+ unsigned syn_sent;
+ unsigned syn_recv;
+ unsigned fin_wait;
+ unsigned time_wait;
+ unsigned close;
+ unsigned close_wait;
+ unsigned last_ack;
+ unsigned listen;
+ } tcp;
+ unsigned udp;
+ unsigned icmp;
+ } u;
+};
+
+/*
+ * AUTOFW stuff
+ */
+#define IP_FWD_RANGE 1
+#define IP_FWD_PORT 2
+#define IP_FWD_DIRECT 3
+
+#define IP_AUTOFW_ACTIVE 1
+#define IP_AUTOFW_USETIME 2
+#define IP_AUTOFW_SECURE 4
+
+
+/* WARNING: bitwise equal to ip_autofw in net/ip_autofw.h */
+struct ip_autofw_user {
+ void * next;
+ u_int16_t type;
+ u_int16_t low;
+ u_int16_t hidden;
+ u_int16_t high;
+ u_int16_t visible;
+ u_int16_t protocol;
+ u_int32_t lastcontact;
+ u_int32_t where;
+ u_int16_t ctlproto;
+ u_int16_t ctlport;
+ u_int16_t flags;
+ /* struct timer_list timer; */
+};
+
+/*
+ * PORTFW stuff
+ */
+struct ip_portfw_user {
+ u_int16_t protocol; /* Which protocol are we talking? */
+ u_int32_t laddr, raddr; /* Remote address */
+ u_int16_t lport, rport; /* Local and remote port */
+ int pref; /* Preference value */
+};
+
+/*
+ * MARKFW stuff
+ */
+struct ip_markfw_user {
+ u_int32_t fwmark; /* Firewalling mark */
+ u_int32_t raddr; /* remote port */
+ u_int16_t rport; /* remote port */
+ u_int16_t dummy; /* Make up to multiple of 4 */
+ int pref; /* Preference value */
+};
+
+#define IP_FW_MASQCTL_MAX 256
+#define IP_MASQ_TNAME_MAX 32
+
+struct ip_masq_ctl {
+ int m_target;
+ int m_cmd;
+ char m_tname[IP_MASQ_TNAME_MAX];
+ union {
+ struct ip_portfw_user portfw_user;
+ struct ip_autofw_user autofw_user;
+ struct ip_markfw_user markfw_user;
+ struct ip_masq_user user;
+ unsigned char m_raw[IP_FW_MASQCTL_MAX];
+ } u;
+};
+
+#define IP_MASQ_CTL_BSIZE (offsetof (struct ip_masq_ctl,u))
+
+#define IP_MASQ_TARGET_CORE 1
+#define IP_MASQ_TARGET_MOD 2 /* masq_mod is selected by "name" */
+#define IP_MASQ_TARGET_USER 3
+#define IP_MASQ_TARGET_LAST 4
+
+#define IP_MASQ_CMD_NONE 0
+#define IP_MASQ_CMD_INSERT 1
+#define IP_MASQ_CMD_ADD 2
+#define IP_MASQ_CMD_SET 3
+#define IP_MASQ_CMD_DEL 4
+#define IP_MASQ_CMD_GET 5
+#define IP_MASQ_CMD_FLUSH 6
+#define IP_MASQ_CMD_LIST 7
+#define IP_MASQ_CMD_ENABLE 8
+#define IP_MASQ_CMD_DISABLE 9
+
+#endif /* _LINUX_IP_MASQ_H */
diff --git a/include/linux/joystick.h b/include/linux/joystick.h
index 513801cbe..c1794ca29 100644
--- a/include/linux/joystick.h
+++ b/include/linux/joystick.h
@@ -2,18 +2,54 @@
#define _LINUX_JOYSTICK_H
/*
- * /usr/include/linux/joystick.h Version 1.0.9
+ * /usr/include/linux/joystick.h Version 1.2
*
* Copyright (C) 1996-1998 Vojtech Pavlik
*/
+/*
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Should you need to contact me, the author, you can do so either by
+ * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
+ * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
+ */
+
#include <asm/types.h>
+#include <linux/module.h>
/*
* Version
*/
-#define JS_VERSION 0x00010008L
+#define JS_VERSION 0x01020d
+
+/*
+ * Types and constants for reading from /dev/js
+ */
+
+#define JS_EVENT_BUTTON 0x01 /* button pressed/released */
+#define JS_EVENT_AXIS 0x02 /* joystick moved */
+#define JS_EVENT_INIT 0x80 /* initial state of device */
+
+struct js_event {
+ __u32 time; /* event timestamp in miliseconds */
+ __s16 value; /* value */
+ __u8 type; /* event type */
+ __u8 number; /* axis/button number */
+};
/*
* IOCTL commands for joystick driver
@@ -23,9 +59,10 @@
#define JSIOCGAXES _IOR('j', 0x11, __u8) /* get number of axes */
#define JSIOCGBUTTONS _IOR('j', 0x12, __u8) /* get number of buttons */
+#define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) /* get identifier string */
-#define JSIOCSCORR _IOW('j', 0x21, struct js_corr[4]) /* set correction values */
-#define JSIOCGCORR _IOR('j', 0x22, struct js_corr[4]) /* get correction values */
+#define JSIOCSCORR _IOW('j', 0x21, struct js_corr) /* set correction values */
+#define JSIOCGCORR _IOR('j', 0x22, struct js_corr) /* get correction values */
/*
* Types and constants for get/set correction
@@ -36,45 +73,227 @@
struct js_corr {
__s32 coef[8];
- __u16 prec;
+ __s16 prec;
__u16 type;
};
/*
- * Types and constants for reading from /dev/js
+ * v0.x compatibility definitions
*/
-#define JS_EVENT_BUTTON 0x01 /* button pressed/released */
-#define JS_EVENT_AXIS 0x02 /* joystick moved */
-#define JS_EVENT_INIT 0x80 /* initial state of device at open time */
+#define JS_RETURN sizeof(struct JS_DATA_TYPE)
+#define JS_TRUE 1
+#define JS_FALSE 0
+#define JS_X_0 0x01
+#define JS_Y_0 0x02
+#define JS_X_1 0x04
+#define JS_Y_1 0x08
+#define JS_MAX 2
-struct js_event {
- __u32 time; /* event timestamp in miliseconds since open */
- __s16 value; /* value */
- __u8 type; /* type of event, see above */
- __u8 number; /* axis/button number */
+#define JS_DEF_TIMEOUT 0x1300
+#define JS_DEF_CORR 0
+#define JS_DEF_TIMELIMIT 10L
+
+#define JS_SET_CAL 1
+#define JS_GET_CAL 2
+#define JS_SET_TIMEOUT 3
+#define JS_GET_TIMEOUT 4
+#define JS_SET_TIMELIMIT 5
+#define JS_GET_TIMELIMIT 6
+#define JS_GET_ALL 7
+#define JS_SET_ALL 8
+
+struct JS_DATA_TYPE {
+ int buttons;
+ int x;
+ int y;
+};
+
+struct JS_DATA_SAVE_TYPE {
+ int JS_TIMEOUT;
+ int BUSY;
+ long JS_EXPIRETIME;
+ long JS_TIMELIMIT;
+ struct JS_DATA_TYPE JS_SAVE;
+ struct JS_DATA_TYPE JS_CORR;
};
/*
- * Backward (version 0.x) compatibility definitions
+ * Internal definitions
*/
-#define JS_RETURN sizeof(struct JS_DATA_TYPE)
-#define JS_TRUE 1
-#define JS_FALSE 0
-#define JS_X_0 0x01 /* bit mask for x-axis js0 */
-#define JS_Y_0 0x02 /* bit mask for y-axis js0 */
-#define JS_X_1 0x04 /* bit mask for x-axis js1 */
-#define JS_Y_1 0x08 /* bit mask for y-axis js1 */
-#define JS_MAX 2 /* max number of joysticks */
+#ifdef __KERNEL__
-struct JS_DATA_TYPE {
- int buttons; /* immediate button state */
- int x; /* immediate x axis value */
- int y; /* immediate y axis value */
+#define JS_BUFF_SIZE 64 /* output buffer size */
+
+#include <linux/version.h>
+
+#ifndef KERNEL_VERSION
+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+#endif
+
+#ifndef LINUX_VERSION_CODE
+#error "You need to use at least 2.0 Linux kernel."
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,0,0)
+#error "You need to use at least 2.0 Linux kernel."
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+#define JS_HAS_RDTSC (current_cpu_data.x86_capability & 0x10)
+#include <linux/init.h>
+#else
+#ifdef MODULE
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,35)
+#define JS_HAS_RDTSC (x86_capability & 0x10)
+#else
+#define JS_HAS_RDTSC 0
+#endif
+#else
+#define JS_HAS_RDTSC (x86_capability & 0x10)
+#endif
+#define __initdata
+#define __init
+#define __cli cli
+#define __save_flags(flags) save_flags(flags)
+#define __restore_flags(flags) restore_flags(flags)
+#define spin_lock_irqsave(x, flags) do { save_flags(flags); cli(); } while (0)
+#define spin_unlock_irqrestore(x, flags) restore_flags(flags)
+#define spin_lock_init(x) do { } while (0)
+typedef struct { int something; } spinlock_t;
+#define SPIN_LOCK_UNLOCKED { 0 }
+#define MODULE_AUTHOR(x)
+#define MODULE_PARM(x,y)
+#define MODULE_SUPPORTED_DEVICE(x)
+#define signal_pending(x) (((x)->signal) & ~((x)->blocked))
+#endif
+
+/*
+ * Parport stuff
+ */
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
+#define USE_PARPORT
+#endif
+
+#ifdef USE_PARPORT
+#include <linux/parport.h>
+#define JS_PAR_DATA_IN(y) parport_read_data(y->port)
+#define JS_PAR_DATA_OUT(x,y) parport_write_data(y->port, x)
+#define JS_PAR_STATUS(y) parport_read_status(y->port)
+#define JS_PAR_CTRL_IN(y) parport_read_control(y->port)
+#define JS_PAR_CTRL_OUT(x,y) parport_write_control(y->port, x)
+#define JS_PAR_ECTRL_OUT(x,y) parport_write_econtrol(y->port, x)
+#else
+#define JS_PAR_DATA_IN(y) inb(y)
+#define JS_PAR_DATA_OUT(x,y) outb(x,y)
+#define JS_PAR_STATUS(y) inb(y+1)
+#define JS_PAR_CTRL_IN(y) inb(y+2)
+#define JS_PAR_CTRL_OUT(x,y) outb(x,y+2)
+#define JS_PAR_ECTRL_OUT(x,y) outb(x,y+0x402)
+#endif
+
+#define JS_PAR_STATUS_INVERT (0x80)
+#define JS_PAR_CTRL_INVERT (0x04)
+
+/*
+ * Internal types
+ */
+
+struct js_dev;
+
+typedef int (*js_read_func)(void *info, int **axes, int **buttons);
+typedef unsigned int (*js_time_func)(void);
+typedef int (*js_delta_func)(unsigned int x, unsigned int y);
+typedef int (*js_ops_func)(struct js_dev *dev);
+
+struct js_data {
+ int *axes;
+ int *buttons;
};
+struct js_dev {
+ struct js_dev *next;
+ struct js_list *list;
+ struct js_port *port;
+ struct wait_queue *wait;
+ struct js_data cur;
+ struct js_data new;
+ struct js_corr *corr;
+ struct js_event buff[JS_BUFF_SIZE];
+ js_ops_func open;
+ js_ops_func close;
+ int ahead;
+ int bhead;
+ int tail;
+ int num_axes;
+ int num_buttons;
+ char *name;
+};
+
+struct js_list {
+ struct js_list *next;
+ struct js_dev *dev;
+ int tail;
+ int startup;
+};
+
+struct js_port {
+ struct js_port *next;
+ struct js_port *prev;
+ js_read_func read;
+ struct js_dev **devs;
+ int **axes;
+ int **buttons;
+ struct js_corr **corr;
+ void *info;
+ int ndevs;
+};
+
+/*
+ * Sub-module interface
+ */
+
+extern unsigned int js_time_speed;
+extern js_time_func js_get_time;
+extern js_delta_func js_delta;
+
+extern unsigned int js_time_speed_a;
+extern js_time_func js_get_time_a;
+extern js_delta_func js_delta_a;
+
+extern struct js_port *js_register_port(struct js_port *port, void *info,
+ int devs, int infos, js_read_func read);
+extern struct js_port *js_unregister_port(struct js_port *port);
+
+extern int js_register_device(struct js_port *port, int number, int axes,
+ int buttons, char *name, js_ops_func open, js_ops_func close);
+extern void js_unregister_device(struct js_dev *dev);
+
+/*
+ * Kernel interface
+ */
extern int js_init(void);
+extern int js_am_init(void);
+extern int js_an_init(void);
+extern int js_as_init(void);
+extern int js_console_init(void);
+extern int js_db9_init(void);
+extern int js_gr_init(void);
+extern int js_l4_init(void);
+extern int js_lt_init(void);
+extern int js_sw_init(void);
+extern int js_tm_init(void);
+
+extern void js_am_setup(char *str, int *ints);
+extern void js_an_setup(char *str, int *ints);
+extern void js_as_setup(char *str, int *ints);
+extern void js_console_setup(char *str, int *ints);
+extern void js_db9_setup(char *str, int *ints);
+extern void js_l4_setup(char *str, int *ints);
+
+#endif /* __KERNEL__ */
#endif /* _LINUX_JOYSTICK_H */
diff --git a/include/linux/kbd_ll.h b/include/linux/kbd_ll.h
index 26a30c12a..d83f9ea8a 100644
--- a/include/linux/kbd_ll.h
+++ b/include/linux/kbd_ll.h
@@ -9,9 +9,4 @@ extern struct pt_regs *kbd_pt_regs;
void handle_scancode(unsigned char scancode);
-/*
- * Interface for to the host specific interupt setup code
- */
-void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs);
-
#endif /* _KBD_LL_H */
diff --git a/include/linux/kbdcntrlr.h b/include/linux/kbdcntrlr.h
deleted file mode 100644
index 520e73892..000000000
--- a/include/linux/kbdcntrlr.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Keyboard controller definitions.
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- */
-#ifndef __LINUX_KBDCTRLR_H
-#define __LINUX_KBDCTRLR_H
-
-/*
- * keyboard controller registers
- */
-#define KBD_STATUS_REG (unsigned int) 0x64
-#define KBD_CNTL_REG (unsigned int) 0x64
-#define KBD_DATA_REG (unsigned int) 0x60
-/*
- * controller commands
- */
-#define KBD_READ_MODE (unsigned int) 0x20
-#define KBD_WRITE_MODE (unsigned int) 0x60
-#define KBD_SELF_TEST (unsigned int) 0xAA
-#define KBD_SELF_TEST2 (unsigned int) 0xAB
-#define KBD_CNTL_ENABLE (unsigned int) 0xAE
-/*
- * keyboard commands
- */
-#define KBD_ENABLE (unsigned int) 0xF4
-#define KBD_DISABLE (unsigned int) 0xF5
-#define KBD_RESET (unsigned int) 0xFF
-/*
- * keyboard replies
- */
-#define KBD_ACK (unsigned int) 0xFA
-#define KBD_POR (unsigned int) 0xAA
-/*
- * status register bits
- */
-#define KBD_OBF (unsigned int) 0x01
-#define KBD_IBF (unsigned int) 0x02
-#define KBD_GTO (unsigned int) 0x40
-#define KBD_PERR (unsigned int) 0x80
-/*
- * keyboard controller mode register bits
- */
-#define KBD_EKI (unsigned int) 0x01
-#define KBD_SYS (unsigned int) 0x04
-#define KBD_DMS (unsigned int) 0x20
-#define KBD_KCC (unsigned int) 0x40
-
-/*
- * Had to increase this value - the speed ratio host cpu/keyboard
- * processor on some MIPS machines make the controller initialization
- * fail otherwise. -- Ralf
- */
-#define TIMEOUT_CONST 1000000
-
-/*
- * These will be the new keyboard controller access macros. I don't use
- * them yet since I want to talk about some details with Linus first.
- */
-#define kbd_read_control() kbd_inb_p(0x64)
-#define kbd_read_status() kbd_inb_p(0x64)
-#define kbd_read_data() kbd_inb_p(0x60)
-#define kbd_write_data() kbd_inb_p(0x60)
-
-#endif /* __LINUX_KBDCTRLR_H */
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index e1358f13e..1111b19b4 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -11,7 +11,8 @@
#include <linux/linkage.h>
/* Optimization barrier */
-#define barrier() __asm__("": : :"memory")
+/* The "volatile" is due to gcc bugs */
+#define barrier() __asm__ __volatile__("": : :"memory")
#define INT_MAX ((int)(~0U>>1))
#define UINT_MAX (~0U)
@@ -46,6 +47,7 @@ NORET_TYPE void panic(const char * fmt, ...)
NORET_TYPE void do_exit(long error_code)
ATTRIB_NORET;
extern unsigned long simple_strtoul(const char *,char **,unsigned int);
+extern long simple_strtol(const char *,char **,unsigned int);
extern int sprintf(char * buf, const char * fmt, ...);
extern int vsprintf(char *buf, const char *, va_list);
diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index cd5cdb349..190202f05 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -2,9 +2,15 @@
#define _LINUX_LINKAGE_H
#ifdef __cplusplus
-#define asmlinkage extern "C"
+#define CPP_ASMLINKAGE extern "C"
#else
-#define asmlinkage
+#define CPP_ASMLINKAGE
+#endif
+
+#if defined __i386__ && (__GNUC__ > 2 || __GNUC_MINOR__ > 7)
+#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
+#else
+#define asmlinkage CPP_ASMLINKAGE
#endif
#define SYMBOL_NAME_STR(X) #X
@@ -36,7 +42,7 @@
#ifdef __ASSEMBLY__
#define ALIGN __ALIGN
-#define ALIGN_STRING __ALIGN_STRING
+#define ALIGN_STR __ALIGN_STR
#define ENTRY(name) \
.globl SYMBOL_NAME(name); \
diff --git a/include/linux/linux_logo.h b/include/linux/linux_logo.h
index 07cde4f87..9aa712eb4 100644
--- a/include/linux/linux_logo.h
+++ b/include/linux/linux_logo.h
@@ -1,9 +1,9 @@
-/* $Id: linux_logo.h,v 1.3 1998/07/06 15:51:16 jj Exp $
+/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:58 jj Exp $
* include/linux/linux_logo.h: This is a linux logo
* to be displayed on boot.
*
* Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu)
- * Copyright (C) 1996 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
+ * Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
*
* You can put anything here, but:
* LINUX_LOGO_COLORS has to be less than 224
@@ -18,904 +18,905 @@
* but should contain %s to display the version
*/
-#if LINUX_LOGO_COLORS == 221
+#if LINUX_LOGO_COLORS == 214
unsigned char linux_logo_red[] __initdata = {
- 0xF3, 0xF6, 0xF8, 0xF7, 0xEF, 0xE7, 0xE5, 0xE3,
- 0xCA, 0xD4, 0xDD, 0xC8, 0xC7, 0xC4, 0xC2, 0xE5,
- 0xF1, 0xED, 0xEE, 0xE6, 0xC6, 0xDA, 0xDD, 0xE5,
- 0xD9, 0xC6, 0xE3, 0xD0, 0xC6, 0xBA, 0xB0, 0xB6,
- 0xBB, 0xBE, 0xB9, 0xB8, 0xB3, 0xB2, 0xB0, 0xAD,
- 0xAC, 0xA9, 0xA8, 0xA6, 0xA4, 0xA1, 0xA0, 0x9D,
- 0xA0, 0x9F, 0x9E, 0x9C, 0x9B, 0x99, 0x9A, 0x99,
- 0x98, 0x95, 0x96, 0x94, 0x93, 0x92, 0x8F, 0x8D,
- 0x8C, 0x8A, 0x87, 0x86, 0x83, 0x81, 0x0D, 0x03,
- 0x66, 0x44, 0x24, 0x08, 0xD6, 0xE6, 0xE9, 0xE6,
- 0xE7, 0xCA, 0xDC, 0xDB, 0xD5, 0xD0, 0xC9, 0xE2,
- 0xD5, 0xC6, 0xC4, 0xB3, 0xB2, 0xB9, 0xA9, 0x9A,
- 0xB2, 0x9D, 0xE8, 0xEC, 0xF5, 0xF5, 0xF4, 0xF4,
- 0xEC, 0xEE, 0xF0, 0xF5, 0xE0, 0xD6, 0xC5, 0xC2,
- 0xD9, 0xD5, 0xD8, 0xD6, 0xF6, 0xF4, 0xED, 0xEC,
- 0xEB, 0xF1, 0xF6, 0xF5, 0xF5, 0xEE, 0xEF, 0xEC,
- 0xE7, 0xE3, 0xE6, 0xD6, 0xDD, 0xC3, 0xD6, 0xD7,
- 0xCD, 0xCA, 0xC3, 0xAC, 0x95, 0x99, 0xB7, 0xA3,
- 0x8B, 0x88, 0x95, 0x8A, 0x94, 0xD2, 0xCC, 0xC4,
- 0xA8, 0x8E, 0x8F, 0xAE, 0xB8, 0xAC, 0xB6, 0xB4,
- 0xAD, 0xA5, 0xA0, 0x9B, 0x8B, 0xA3, 0x94, 0x87,
- 0x85, 0x89, 0x53, 0x80, 0x7D, 0x7C, 0x7A, 0x78,
- 0x76, 0x71, 0x73, 0x6E, 0x6B, 0x67, 0x65, 0x62,
- 0x4B, 0x5B, 0x5F, 0x53, 0x56, 0x52, 0x4F, 0x46,
- 0x42, 0x0F, 0x75, 0x78, 0x7D, 0x72, 0x5F, 0x6E,
- 0x7A, 0x75, 0x6A, 0x58, 0x48, 0x4F, 0x00, 0x2B,
- 0x37, 0x3E, 0x32, 0x33, 0x25, 0x2C, 0x3B, 0x11,
- 0x1D, 0x14, 0x06, 0x02, 0x00
+ 0x02, 0x9E, 0xE9, 0xC4, 0x50, 0xC9, 0xC4, 0xE9,
+ 0x65, 0xE3, 0xC2, 0x25, 0xA4, 0xEC, 0x90, 0xA6,
+ 0xC4, 0x6A, 0xD1, 0xF3, 0x12, 0xED, 0xA0, 0xC2,
+ 0xB8, 0xD5, 0xDB, 0xD2, 0x3E, 0x16, 0xEB, 0x54,
+ 0xA9, 0xCD, 0xF5, 0x0A, 0xBA, 0xB3, 0xDC, 0x74,
+ 0xCE, 0xF6, 0xD3, 0xC5, 0xEA, 0xB8, 0xED, 0x5E,
+ 0xE5, 0x26, 0xF4, 0xA9, 0x82, 0x94, 0xE6, 0x38,
+ 0xF2, 0x0F, 0x7F, 0x49, 0xE5, 0xF4, 0xD3, 0xC3,
+ 0xC2, 0x1E, 0xD5, 0xC6, 0xA4, 0xFA, 0x0A, 0xBA,
+ 0xD4, 0xEB, 0xEA, 0xEC, 0xA8, 0xBC, 0xB4, 0xDC,
+ 0x84, 0xE4, 0xCE, 0xEC, 0x92, 0xCD, 0xDC, 0x8B,
+ 0xCC, 0x1E, 0xF6, 0xB2, 0x60, 0x2A, 0x96, 0x52,
+ 0x0F, 0xBD, 0xFA, 0xCC, 0xB8, 0x7A, 0x4C, 0xD2,
+ 0x06, 0xEF, 0x44, 0x64, 0xF4, 0xBA, 0xCE, 0xE6,
+ 0x8A, 0x6F, 0x3C, 0x70, 0x7C, 0x9C, 0xBA, 0xDF,
+ 0x2C, 0x4D, 0x3B, 0xCA, 0xDE, 0xCE, 0xEE, 0x46,
+ 0x6A, 0xAC, 0x96, 0xE5, 0x96, 0x7A, 0xBA, 0xB6,
+ 0xE2, 0x7E, 0xAA, 0xC5, 0x96, 0x9E, 0xC2, 0xAA,
+ 0xDA, 0x35, 0xB6, 0x82, 0x88, 0xBE, 0xC2, 0x9E,
+ 0xB4, 0xD5, 0xDA, 0x9C, 0xA0, 0xD0, 0xA8, 0xC7,
+ 0x72, 0xF2, 0xDB, 0x76, 0xDC, 0xBE, 0xAA, 0xF4,
+ 0x87, 0x2F, 0x53, 0x8E, 0x36, 0xCE, 0xE6, 0xCA,
+ 0xCB, 0xE4, 0xD6, 0xAA, 0x42, 0x5D, 0xB4, 0x59,
+ 0x1C, 0xC8, 0x96, 0x6C, 0xDA, 0xCE, 0xE6, 0xCB,
+ 0x96, 0x16, 0xFA, 0xBE, 0xAE, 0xFE, 0x6E, 0xD6,
+ 0xCE, 0xB6, 0xE5, 0xED, 0xDB, 0xDC, 0xF4, 0x72,
+ 0x1F, 0xAE, 0xE6, 0xC2, 0xCA, 0xC4
};
unsigned char linux_logo_green[] __initdata = {
- 0xF3, 0xF6, 0xF8, 0xF7, 0xEF, 0xE7, 0xE5, 0xE3,
- 0xCA, 0xD4, 0xDD, 0xC8, 0xC7, 0xC4, 0xC2, 0xD3,
- 0xDA, 0xD4, 0xD7, 0xCC, 0xC1, 0xCC, 0xCB, 0xC9,
- 0xC5, 0xBC, 0xBC, 0xBB, 0xB7, 0xA5, 0xB0, 0xB6,
- 0xBB, 0xBE, 0xB9, 0xB8, 0xB3, 0xB2, 0xAD, 0xAD,
- 0xAC, 0xA9, 0xA8, 0xA6, 0xA4, 0xA1, 0xA0, 0x95,
- 0xA0, 0x9F, 0x9E, 0x9C, 0x9B, 0x99, 0x9A, 0x99,
- 0x98, 0x95, 0x96, 0x94, 0x93, 0x92, 0x8F, 0x8D,
- 0x8C, 0x8A, 0x87, 0x86, 0x83, 0x81, 0x08, 0x02,
- 0x53, 0x2E, 0x19, 0x06, 0xC6, 0xC8, 0xCF, 0xBD,
- 0xB3, 0xB6, 0xB4, 0xAB, 0xA5, 0xA3, 0x9B, 0xB6,
- 0xA7, 0x99, 0x92, 0xA4, 0x9E, 0x9D, 0x98, 0x8C,
- 0x8A, 0x86, 0xCD, 0xCC, 0xC9, 0xD7, 0xCA, 0xC4,
- 0xCA, 0xC3, 0xC7, 0xC3, 0xC8, 0xB4, 0x91, 0x8E,
- 0x8A, 0x82, 0x87, 0x85, 0xBD, 0xBF, 0xB6, 0xBC,
- 0xAE, 0xB7, 0xBC, 0xB8, 0xBF, 0xB6, 0xBC, 0xB5,
- 0xAB, 0xA6, 0xAD, 0xB2, 0xA5, 0x87, 0x9C, 0x96,
- 0x95, 0x8E, 0x87, 0x8F, 0x86, 0x86, 0x8E, 0x80,
- 0x7A, 0x70, 0x7B, 0x78, 0x78, 0x7F, 0x77, 0x6F,
- 0x70, 0x76, 0x59, 0x77, 0x68, 0x64, 0x7B, 0x7C,
- 0x75, 0x6D, 0x77, 0x69, 0x65, 0x5F, 0x5B, 0x54,
- 0x4F, 0x5B, 0x39, 0x80, 0x7D, 0x7C, 0x7A, 0x78,
- 0x76, 0x71, 0x73, 0x6E, 0x6B, 0x67, 0x65, 0x62,
- 0x4B, 0x5B, 0x5F, 0x53, 0x56, 0x52, 0x4F, 0x46,
- 0x42, 0x0B, 0x69, 0x66, 0x64, 0x57, 0x4A, 0x4E,
- 0x55, 0x4B, 0x46, 0x3B, 0x30, 0x33, 0x00, 0x2B,
- 0x37, 0x3E, 0x32, 0x33, 0x25, 0x2C, 0x29, 0x0D,
- 0x1D, 0x14, 0x06, 0x02, 0x00
+ 0x02, 0x88, 0xC4, 0x85, 0x44, 0xA2, 0xA8, 0xE5,
+ 0x65, 0xA6, 0xC2, 0x24, 0xA4, 0xB4, 0x62, 0x86,
+ 0x94, 0x44, 0xD2, 0xB6, 0x12, 0xD4, 0x73, 0x96,
+ 0x92, 0x95, 0xB2, 0xC2, 0x36, 0x0E, 0xBC, 0x54,
+ 0x75, 0xA5, 0xF5, 0x0A, 0xB2, 0x83, 0xC2, 0x74,
+ 0x9B, 0xBD, 0xA2, 0xCA, 0xDA, 0x8C, 0xCB, 0x42,
+ 0xAC, 0x12, 0xDA, 0x7B, 0x54, 0x94, 0xD2, 0x24,
+ 0xBE, 0x06, 0x65, 0x33, 0xBB, 0xBC, 0xAB, 0x8C,
+ 0x92, 0x1E, 0x9B, 0xB6, 0x6E, 0xFB, 0x04, 0xA2,
+ 0xC8, 0xBD, 0xAD, 0xEC, 0x92, 0xBC, 0x7B, 0x9D,
+ 0x84, 0xC4, 0xC4, 0xB4, 0x6C, 0x93, 0xA3, 0x5E,
+ 0x8D, 0x13, 0xD6, 0x82, 0x4C, 0x2A, 0x7A, 0x5A,
+ 0x0D, 0x82, 0xBB, 0xCC, 0x8B, 0x6A, 0x3C, 0xBE,
+ 0x06, 0xC4, 0x44, 0x45, 0xDB, 0x96, 0xB6, 0xDE,
+ 0x8A, 0x4D, 0x3C, 0x5A, 0x7C, 0x9C, 0xAA, 0xCB,
+ 0x1C, 0x4D, 0x2E, 0xB2, 0xBE, 0xAA, 0xDE, 0x3E,
+ 0x6A, 0xAC, 0x82, 0xE5, 0x72, 0x62, 0x92, 0x9E,
+ 0xCA, 0x4A, 0x8E, 0xBE, 0x86, 0x6B, 0xAA, 0x9A,
+ 0xBE, 0x34, 0xAB, 0x76, 0x6E, 0x9A, 0x9E, 0x62,
+ 0x76, 0xCE, 0xD3, 0x92, 0x7C, 0xB8, 0x7E, 0xC6,
+ 0x5E, 0xE2, 0xC3, 0x54, 0xAA, 0x9E, 0x8A, 0xCA,
+ 0x63, 0x2D, 0x3B, 0x8E, 0x1A, 0x9E, 0xC2, 0xA6,
+ 0xCB, 0xDC, 0xD6, 0x8E, 0x26, 0x5C, 0xB4, 0x45,
+ 0x1C, 0xB8, 0x6E, 0x4C, 0xBC, 0xAE, 0xD6, 0x92,
+ 0x63, 0x16, 0xF6, 0x8C, 0x7A, 0xFE, 0x6E, 0xBA,
+ 0xC6, 0x86, 0xAA, 0xAE, 0xDB, 0xA4, 0xD4, 0x56,
+ 0x0E, 0x6E, 0xB6, 0xB2, 0xBE, 0xBE
};
unsigned char linux_logo_blue[] __initdata = {
- 0xF3, 0xF6, 0xF8, 0xF7, 0xEF, 0xEE, 0xE5, 0xDE,
- 0xD7, 0xD3, 0xDD, 0xC8, 0xC7, 0xC4, 0xC2, 0xB5,
- 0xB0, 0xA6, 0xAC, 0x9B, 0xB5, 0xB5, 0xAE, 0x84,
- 0x90, 0xA9, 0x81, 0x8D, 0x96, 0x86, 0xB0, 0xB6,
- 0xBB, 0xBE, 0xB9, 0xB8, 0xB3, 0xB2, 0xA7, 0xAD,
- 0xAC, 0xA9, 0xA8, 0xA6, 0xA4, 0xA1, 0xA5, 0x87,
- 0xA0, 0x9F, 0x9E, 0x9C, 0x9B, 0x9A, 0x9A, 0x99,
- 0x98, 0x95, 0x96, 0x94, 0x93, 0x92, 0x8F, 0x8D,
- 0x8C, 0x8A, 0x87, 0x86, 0x83, 0x81, 0xC8, 0xD7,
- 0x9B, 0x8E, 0x8C, 0xB2, 0x77, 0x77, 0x4E, 0x77,
- 0x69, 0x71, 0x78, 0x6B, 0x65, 0x66, 0x64, 0x59,
- 0x5C, 0x5A, 0x48, 0x72, 0x7B, 0x6B, 0x67, 0x6E,
- 0x42, 0x5B, 0x29, 0x36, 0x25, 0x10, 0x17, 0x14,
- 0x19, 0x16, 0x13, 0x0E, 0x08, 0x2E, 0x2E, 0x3D,
- 0x24, 0x24, 0x24, 0x24, 0x13, 0x12, 0x14, 0x14,
- 0x0E, 0x08, 0x0D, 0x0F, 0x08, 0x0D, 0x0E, 0x08,
- 0x08, 0x0C, 0x06, 0x06, 0x07, 0x16, 0x07, 0x0E,
- 0x08, 0x0A, 0x07, 0x0D, 0x2D, 0x3E, 0x09, 0x4E,
- 0x68, 0x52, 0x56, 0x58, 0x4B, 0x22, 0x20, 0x20,
- 0x27, 0x39, 0x28, 0x19, 0x1E, 0x1E, 0x08, 0x06,
- 0x07, 0x09, 0x08, 0x08, 0x05, 0x1D, 0x1F, 0x17,
- 0x18, 0x06, 0x79, 0x80, 0x7D, 0x7C, 0x7A, 0x78,
- 0x76, 0x71, 0x73, 0x6E, 0x6B, 0x68, 0x65, 0x62,
- 0x4B, 0x5B, 0x5F, 0x55, 0x56, 0x52, 0x4F, 0x46,
- 0x42, 0x5A, 0x14, 0x23, 0x3D, 0x2B, 0x21, 0x14,
- 0x06, 0x04, 0x03, 0x07, 0x09, 0x13, 0x2A, 0x3A,
- 0x37, 0x3E, 0x32, 0x33, 0x25, 0x2C, 0x07, 0x09,
- 0x1D, 0x14, 0x06, 0x02, 0x00
+ 0x04, 0x28, 0x10, 0x0B, 0x14, 0x14, 0x74, 0xC7,
+ 0x64, 0x0E, 0xC3, 0x24, 0xA4, 0x0C, 0x10, 0x20,
+ 0x0D, 0x04, 0xD1, 0x0D, 0x13, 0x22, 0x0A, 0x40,
+ 0x14, 0x0C, 0x11, 0x94, 0x0C, 0x08, 0x0B, 0x56,
+ 0x09, 0x47, 0xF4, 0x0B, 0x9C, 0x07, 0x54, 0x74,
+ 0x0F, 0x0C, 0x0F, 0xC7, 0x6C, 0x14, 0x14, 0x11,
+ 0x0B, 0x04, 0x12, 0x0C, 0x05, 0x94, 0x94, 0x0A,
+ 0x34, 0x09, 0x14, 0x08, 0x2F, 0x15, 0x19, 0x11,
+ 0x28, 0x0C, 0x0B, 0x94, 0x08, 0xFA, 0x08, 0x7C,
+ 0xBC, 0x15, 0x0A, 0xEC, 0x64, 0xBB, 0x0A, 0x0C,
+ 0x84, 0x2C, 0xA0, 0x15, 0x10, 0x0D, 0x0B, 0x0E,
+ 0x0A, 0x07, 0x10, 0x3C, 0x24, 0x2C, 0x28, 0x5C,
+ 0x0A, 0x0D, 0x0A, 0xC1, 0x22, 0x4C, 0x10, 0x94,
+ 0x04, 0x0F, 0x45, 0x08, 0x31, 0x54, 0x3C, 0xBC,
+ 0x8C, 0x09, 0x3C, 0x18, 0x7C, 0x9C, 0x7C, 0x91,
+ 0x0C, 0x4D, 0x17, 0x74, 0x0C, 0x48, 0x9C, 0x3C,
+ 0x6A, 0xAC, 0x5C, 0xE3, 0x29, 0x3C, 0x2C, 0x7C,
+ 0x6C, 0x04, 0x14, 0xA9, 0x74, 0x07, 0x2C, 0x74,
+ 0x4C, 0x34, 0x97, 0x5C, 0x38, 0x0C, 0x5C, 0x04,
+ 0x0C, 0xBA, 0xBC, 0x78, 0x18, 0x88, 0x24, 0xC2,
+ 0x3C, 0xB4, 0x87, 0x0C, 0x14, 0x4C, 0x3C, 0x10,
+ 0x17, 0x2C, 0x0A, 0x8C, 0x04, 0x1C, 0x44, 0x2C,
+ 0xCD, 0xD8, 0xD4, 0x34, 0x0C, 0x5B, 0xB4, 0x1E,
+ 0x1D, 0xAC, 0x24, 0x18, 0x20, 0x5C, 0xB4, 0x1C,
+ 0x09, 0x14, 0xFC, 0x0C, 0x10, 0xFC, 0x6C, 0x7C,
+ 0xB4, 0x1C, 0x15, 0x17, 0xDB, 0x18, 0x21, 0x24,
+ 0x04, 0x04, 0x44, 0x8C, 0x8C, 0xB7
};
unsigned char linux_logo[] __initdata = {
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x57,
- 0x58, 0x58, 0x59, 0x5C, 0x5D, 0x5F, 0x60, 0x61,
- 0x62, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x5E, 0x5E,
- 0x5E, 0x5D, 0x5D, 0x5C, 0x5D, 0x5B, 0x58, 0x58,
- 0x58, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x58,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x57,
- 0x54, 0x56, 0x57, 0x67, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x67, 0x4C,
- 0x4A, 0x49, 0x4A, 0x49, 0x4A, 0x49, 0x49, 0x4A,
- 0x4A, 0x4B, 0x4B, 0x4B, 0x4C, 0x50, 0x51, 0x52,
- 0x54, 0x54, 0x56, 0x57, 0x57, 0x57, 0x57, 0x58,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x58, 0x56, 0x56, 0x53,
- 0x52, 0x53, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0xFB, 0xFB,
- 0x4B, 0x4B, 0x4B, 0x4A, 0x49, 0x4A, 0x4A, 0x49,
- 0x49, 0x49, 0x48, 0x49, 0x49, 0x4A, 0x4A, 0x4B,
- 0x4C, 0x4D, 0x52, 0x54, 0x56, 0x55, 0x57, 0x58,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50,
- 0x50, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xF4, 0xFB,
- 0xFC, 0x67, 0x53, 0x50, 0x4D, 0x4C, 0x4C, 0x4C,
- 0x4B, 0x4A, 0x4A, 0x48, 0x49, 0x48, 0x48, 0x49,
- 0x49, 0x49, 0x4B, 0x4C, 0x50, 0x52, 0x53, 0x56,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x55, 0x54, 0x53, 0x51, 0x51, 0x50, 0x4C, 0x4D,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF4, 0xD2, 0xD7, 0xF5,
- 0xFC, 0xFC, 0x5D, 0x5D, 0x5C, 0x5C, 0x59, 0x58,
- 0x58, 0x56, 0x52, 0x4C, 0x4B, 0x4A, 0x4A, 0x48,
- 0x48, 0x48, 0x48, 0x48, 0x49, 0x4B, 0x4D, 0x51,
- 0x54, 0x56, 0x58, 0x57, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x57, 0x55, 0x54,
- 0x53, 0x52, 0x51, 0x4D, 0x4D, 0x4D, 0x50, 0x50,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF4, 0x64, 0xD9, 0xF5,
- 0xF9, 0xFC, 0xFC, 0x64, 0x63, 0x62, 0x61, 0x61,
- 0x61, 0x60, 0x5E, 0x5B, 0x5A, 0x54, 0x52, 0x4C,
- 0x4B, 0x49, 0x49, 0x47, 0x47, 0x48, 0x49, 0x4B,
- 0x4C, 0x51, 0x53, 0x56, 0x57, 0x58, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x57, 0x57, 0x55, 0x53, 0x53,
- 0x51, 0x50, 0x50, 0x50, 0x50, 0x50, 0x53, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF4, 0xF5, 0xF9, 0xFC,
- 0xFC, 0xFC, 0xFC, 0x64, 0x64, 0x64, 0x64, 0x64,
- 0x64, 0x64, 0x64, 0x63, 0x61, 0x61, 0x5E, 0x59,
- 0x55, 0x52, 0x4C, 0x4A, 0x49, 0x47, 0x48, 0x48,
- 0x49, 0x4B, 0x4D, 0x51, 0x54, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x58, 0x55, 0x54, 0x54, 0x52, 0x51,
- 0x51, 0x51, 0x51, 0x51, 0x53, 0x54, 0x59, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xF7, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x60, 0x60, 0x60, 0x61,
- 0x62, 0x63, 0x64, 0x64, 0x65, 0x65, 0x64, 0x63,
- 0x61, 0x5E, 0x59, 0x56, 0x4D, 0x4B, 0x48, 0x48,
- 0x48, 0x48, 0x49, 0x4B, 0x50, 0x53, 0x56, 0x56,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x56, 0x54, 0x53, 0x52, 0x51, 0x51,
- 0x51, 0x52, 0x53, 0x55, 0x59, 0x5D, 0x5E, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFB, 0xFB, 0xFB, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x4C, 0x4E, 0x51, 0x52,
- 0x57, 0x5A, 0x5E, 0x60, 0x61, 0x63, 0x65, 0xCB,
- 0x64, 0x64, 0x63, 0x60, 0x5C, 0x57, 0x50, 0x4B,
- 0x48, 0x47, 0x47, 0x47, 0x4A, 0x4C, 0x52, 0x53,
- 0x54, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x55, 0x54, 0x53, 0x53, 0x51, 0x52, 0x52, 0x53,
- 0x53, 0x57, 0x5A, 0x5D, 0x5E, 0x5E, 0x60, 0xFC,
- 0xFC, 0xFC, 0xFB, 0xF9, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFA, 0xF9, 0xF5, 0xFB, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0x45, 0x3F, 0x3F,
- 0x45, 0x48, 0x4B, 0x4D, 0x54, 0x5A, 0x5E, 0x61,
- 0x63, 0xCB, 0xCB, 0x65, 0x64, 0x62, 0x5E, 0x57,
- 0x50, 0x4B, 0x48, 0x47, 0x47, 0x48, 0x4B, 0x4D,
- 0x51, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x55,
- 0x54, 0x54, 0x53, 0x53, 0x52, 0x53, 0x54, 0x57,
- 0x59, 0x5C, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0xFC,
- 0xFC, 0xFA, 0xFC, 0xFA, 0xE0, 0xFC, 0xFC, 0xFC,
- 0xFB, 0xFB, 0xFB, 0xDF, 0xD8, 0xF9, 0xE0, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0x4C, 0x4A, 0x48,
- 0x48, 0x3E, 0x44, 0x43, 0x3F, 0x47, 0x4B, 0x52,
- 0x5A, 0x5E, 0x62, 0x64, 0xCB, 0xCB, 0x64, 0x61,
- 0x5E, 0x57, 0x4D, 0x49, 0x47, 0x47, 0x48, 0x4A,
- 0x4C, 0x52, 0x54, 0x56, 0x57, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x55,
- 0x54, 0x53, 0x53, 0x54, 0x54, 0x55, 0x58, 0x5B,
- 0x5C, 0x5D, 0x5E, 0x5D, 0x5D, 0x5B, 0x58, 0xFC,
- 0xFC, 0xD8, 0x4C, 0x60, 0xFC, 0xF5, 0xFC, 0xFC,
- 0xFC, 0xF7, 0x5F, 0x48, 0x48, 0x2C, 0xF8, 0xF9,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x4B, 0x4A, 0x49,
- 0x49, 0x49, 0x49, 0x47, 0x3E, 0x44, 0x42, 0x3F,
- 0x3E, 0x4B, 0x54, 0x5C, 0x61, 0x64, 0xCB, 0xCB,
- 0x64, 0x61, 0x5D, 0x53, 0x4B, 0x49, 0x47, 0x47,
- 0x49, 0x4B, 0x50, 0x53, 0x56, 0x57, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x55, 0x55, 0x54,
- 0x53, 0x53, 0x54, 0x56, 0x58, 0x5A, 0x5B, 0x5D,
- 0x5D, 0x5D, 0x5C, 0x5A, 0x54, 0x52, 0x4C, 0xFC,
- 0xF7, 0x4E, 0x2D, 0x29, 0x4E, 0xFC, 0xFC, 0xFC,
- 0xFB, 0x5F, 0x26, 0x24, 0x20, 0x2E, 0x65, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x45, 0x3F, 0x45,
- 0x3E, 0x47, 0x47, 0x47, 0x47, 0x47, 0x3E, 0x44,
- 0x43, 0x40, 0x44, 0x49, 0x51, 0x5C, 0x62, 0x64,
- 0xCB, 0xCB, 0x63, 0x60, 0x58, 0x50, 0x49, 0x48,
- 0x48, 0x48, 0x4A, 0x4D, 0x53, 0x54, 0x57, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x55, 0x54, 0x54, 0x54,
- 0x54, 0x54, 0x55, 0x57, 0x59, 0x5B, 0x5C, 0x5D,
- 0x5C, 0x5A, 0x54, 0x51, 0x4C, 0x4C, 0x54, 0xFC,
- 0xF9, 0x23, 0xDB, 0x2D, 0x23, 0xFA, 0xFB, 0xFA,
- 0xF5, 0x27, 0x21, 0xD9, 0xF8, 0x20, 0x21, 0xFB,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x5D, 0x58, 0x55,
- 0x50, 0x48, 0x45, 0x43, 0x44, 0x44, 0x45, 0x45,
- 0x3E, 0x3F, 0x43, 0x41, 0x3F, 0x48, 0x52, 0x5D,
- 0x63, 0x65, 0xCB, 0x65, 0x61, 0x5D, 0x52, 0x4B,
- 0x48, 0x47, 0x47, 0x49, 0x4C, 0x51, 0x54, 0x57,
- 0x57, 0x57, 0x57, 0x57, 0x55, 0x54, 0x54, 0x54,
- 0x54, 0x58, 0x5A, 0x59, 0x5B, 0x5B, 0x5B, 0x5A,
- 0x55, 0x52, 0x4D, 0x4D, 0x55, 0x5B, 0x5D, 0xFC,
- 0xF1, 0xF9, 0xFC, 0xD4, 0x21, 0xCC, 0xF7, 0xF8,
- 0xF2, 0x21, 0xD9, 0xFC, 0xF2, 0xFB, 0x21, 0x45,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0xD1, 0xD0, 0xCD,
- 0xCC, 0x63, 0x5E, 0x58, 0x50, 0x47, 0x43, 0x3F,
- 0x3F, 0x3F, 0x3F, 0x3F, 0x40, 0x41, 0x3F, 0x4A,
- 0x56, 0x5E, 0x64, 0xCB, 0x65, 0x63, 0x5E, 0x56,
- 0x4C, 0x48, 0x47, 0x47, 0x49, 0x4C, 0x51, 0x54,
- 0x58, 0x57, 0x57, 0x57, 0x57, 0x55, 0x54, 0x54,
- 0x57, 0x5A, 0x5A, 0x5C, 0x5B, 0x5A, 0x58, 0x54,
- 0x51, 0x4C, 0x55, 0x5D, 0x5D, 0x5B, 0x54, 0xFC,
- 0xF0, 0xF9, 0xFC, 0x65, 0x45, 0xCD, 0xFB, 0xFB,
- 0xF8, 0x26, 0xFB, 0xFC, 0xFC, 0xFC, 0x21, 0x27,
- 0xFB, 0xFC, 0xFC, 0xFC, 0xFB, 0xD7, 0x35, 0x34,
- 0x2F, 0x35, 0x36, 0x2F, 0x2F, 0x36, 0x2F, 0x2F,
- 0x36, 0x36, 0x35, 0x35, 0x43, 0x42, 0x41, 0x2E,
- 0x45, 0x4C, 0x5B, 0x62, 0x65, 0xCC, 0x64, 0x60,
- 0x58, 0x4D, 0x49, 0x47, 0x47, 0x49, 0x4C, 0x51,
- 0x58, 0x57, 0x57, 0x57, 0x57, 0x57, 0x55, 0x57,
- 0x58, 0x5A, 0x5A, 0x5B, 0x5A, 0x55, 0x54, 0x51,
- 0x53, 0x5C, 0x5D, 0x5D, 0x54, 0x4B, 0x4D, 0xFC,
- 0xFC, 0x44, 0xFC, 0xFB, 0x7B, 0xAB, 0xA8, 0xAE,
- 0xAB, 0x7F, 0xFC, 0xFC, 0xFB, 0xFB, 0x22, 0x2A,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x36, 0x2F, 0x30, 0x30,
- 0x32, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x2F, 0x2F, 0x40, 0x41,
- 0x2E, 0x40, 0x48, 0x56, 0x5F, 0x64, 0xCC, 0x65,
- 0x61, 0x59, 0x50, 0x49, 0x47, 0x47, 0x49, 0x4C,
- 0x5A, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58,
- 0x5A, 0x5A, 0x5A, 0x58, 0x55, 0x52, 0x51, 0x5A,
- 0x5D, 0x5D, 0x57, 0x4C, 0x51, 0x54, 0x5D, 0xFC,
- 0xFC, 0x2A, 0xFC, 0xC9, 0xAA, 0x8B, 0x8A, 0x8C,
- 0xAB, 0x8C, 0x8C, 0xFB, 0xFB, 0x23, 0x20, 0xF1,
- 0xFC, 0xFC, 0xFC, 0x3B, 0x33, 0x33, 0x32, 0x32,
- 0x31, 0x32, 0x30, 0x32, 0x32, 0x32, 0x32, 0x30,
- 0x31, 0x31, 0x31, 0x32, 0x33, 0x33, 0x3C, 0x41,
- 0x41, 0x2E, 0x2D, 0x45, 0x4D, 0x5D, 0x63, 0xCC,
- 0x65, 0x62, 0x5D, 0x51, 0x49, 0x47, 0x47, 0x4A,
- 0x59, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58,
- 0x5A, 0x5A, 0x58, 0x55, 0x53, 0x53, 0x5C, 0x5E,
- 0x59, 0x51, 0x4E, 0x54, 0x59, 0x5E, 0x62, 0xFC,
- 0xFC, 0xDB, 0xAA, 0xA1, 0x95, 0x9C, 0x8C, 0x88,
- 0x82, 0x83, 0x83, 0x8C, 0x88, 0xAE, 0xB9, 0xFB,
- 0xFC, 0xFC, 0xFC, 0x3C, 0x3B, 0x72, 0x38, 0x33,
- 0x33, 0x33, 0x31, 0x33, 0x31, 0x31, 0x31, 0x31,
- 0x33, 0x33, 0x38, 0x33, 0x72, 0x3B, 0x44, 0x2E,
- 0x41, 0x2E, 0x2E, 0x2D, 0x43, 0x4B, 0x5B, 0x63,
- 0xCB, 0xCC, 0x63, 0x5D, 0x51, 0x49, 0x47, 0x49,
- 0x5C, 0x58, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58,
- 0x58, 0x58, 0x57, 0x53, 0x58, 0x5D, 0x5E, 0x55,
- 0x51, 0x53, 0x58, 0x5E, 0x60, 0x63, 0x64, 0xFC,
- 0xFC, 0xC0, 0xA6, 0x9D, 0x8B, 0x9C, 0x8C, 0x8C,
- 0x6E, 0x83, 0x88, 0x8C, 0x8C, 0x8C, 0x83, 0xE8,
- 0xFB, 0xFC, 0xFC, 0xFC, 0x33, 0x70, 0x70, 0x6F,
- 0x6F, 0x6F, 0x6F, 0x3A, 0x6F, 0x6D, 0x6F, 0x6F,
- 0x70, 0x6F, 0x6F, 0x70, 0x6F, 0x32, 0x5A, 0x48,
- 0x41, 0x2D, 0x2D, 0x2D, 0x2C, 0x41, 0x49, 0x5A,
- 0x62, 0xCB, 0xCB, 0x63, 0x5D, 0x50, 0x49, 0x4A,
- 0x5C, 0x58, 0x58, 0x57, 0x55, 0x57, 0x57, 0x57,
- 0x57, 0x55, 0x56, 0x59, 0x5E, 0x5C, 0x52, 0x53,
- 0x55, 0x5B, 0x5E, 0x61, 0x63, 0x64, 0x63, 0xFC,
- 0xE8, 0xBF, 0xA4, 0x99, 0x9C, 0x8C, 0x88, 0x88,
- 0x6E, 0x88, 0x8C, 0x8C, 0x8C, 0xC2, 0xA6, 0xC4,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x36, 0x3A, 0x6F, 0x70,
- 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
- 0x70, 0x70, 0x70, 0x70, 0x37, 0x32, 0xCD, 0x5E,
- 0x4C, 0x43, 0x2C, 0x2D, 0x2D, 0x2C, 0x2E, 0x47,
- 0x57, 0x61, 0x65, 0xCC, 0x63, 0x5C, 0x50, 0x4D,
- 0x5C, 0x5A, 0x57, 0x55, 0x55, 0x55, 0x58, 0x58,
- 0x55, 0x54, 0x5B, 0x5E, 0x5D, 0x53, 0x53, 0x55,
- 0x5D, 0x5E, 0x61, 0x61, 0x61, 0x61, 0x5E, 0xFC,
- 0xEA, 0xBE, 0xA4, 0x9B, 0x8B, 0x85, 0x8C, 0x6E,
- 0x8C, 0x8C, 0x8C, 0xA3, 0xAA, 0xA4, 0xA4, 0xE9,
- 0xFB, 0xFC, 0xFC, 0xFC, 0x36, 0x6D, 0x70, 0x73,
- 0x70, 0x70, 0x70, 0x73, 0x73, 0x73, 0x73, 0x70,
- 0x70, 0x70, 0x73, 0x70, 0x37, 0x38, 0xD1, 0xCF,
- 0x61, 0x4D, 0x44, 0x2C, 0x2D, 0x2E, 0x2C, 0x2E,
- 0x3E, 0x56, 0x61, 0xCB, 0xCC, 0x62, 0x5B, 0x57,
- 0x59, 0x58, 0x55, 0x54, 0x54, 0x55, 0x58, 0x58,
- 0x58, 0x5B, 0x5E, 0x5B, 0x53, 0x55, 0x55, 0x5C,
- 0x5E, 0x61, 0x61, 0x60, 0x5D, 0x5A, 0x4E, 0xFC,
- 0xFC, 0xEA, 0xAA, 0x9C, 0x8A, 0x85, 0x82, 0x8C,
- 0x8C, 0xA8, 0xEB, 0xA8, 0xA4, 0xA4, 0xAA, 0xFC,
- 0xFC, 0xFC, 0x64, 0xFB, 0x39, 0x31, 0x72, 0x78,
- 0x73, 0x78, 0x73, 0x74, 0x74, 0x74, 0x74, 0x73,
- 0x78, 0x70, 0x73, 0x73, 0x33, 0xCC, 0xD2, 0xD1,
- 0xCE, 0x62, 0x53, 0x3F, 0x2D, 0x2D, 0x41, 0x2C,
- 0x2E, 0x3E, 0x56, 0x62, 0xCB, 0xCB, 0x61, 0x5D,
- 0x54, 0x54, 0x54, 0x54, 0x56, 0x58, 0x58, 0x58,
- 0x5C, 0x5E, 0x5A, 0x55, 0x58, 0x58, 0x5B, 0x5E,
- 0x61, 0x5E, 0x5D, 0x5A, 0x52, 0x55, 0xCD, 0xFC,
- 0xFC, 0x34, 0xC9, 0xE8, 0xA8, 0xAE, 0xC2, 0xE8,
- 0xC3, 0xA6, 0xA7, 0xA6, 0xAA, 0x78, 0x2E, 0x42,
- 0xFC, 0xFC, 0xD2, 0x64, 0xF8, 0x31, 0x72, 0x73,
- 0x73, 0x73, 0x73, 0x74, 0x75, 0x75, 0x74, 0x73,
- 0x73, 0x73, 0x73, 0x72, 0x33, 0x5C, 0x64, 0xD2,
- 0xD1, 0xCF, 0x63, 0x54, 0x3F, 0x2C, 0x41, 0x41,
- 0x2C, 0x2E, 0x47, 0x58, 0x63, 0xCB, 0xCB, 0x62,
- 0x52, 0x53, 0x53, 0x56, 0x58, 0x58, 0x5A, 0x5B,
- 0x5E, 0x5A, 0x57, 0x58, 0x58, 0x58, 0x60, 0x60,
- 0x5D, 0x5A, 0x55, 0x4E, 0x64, 0xD2, 0xD1, 0xFC,
- 0xFC, 0x41, 0x3E, 0xC1, 0xC0, 0xA3, 0xA6, 0xA7,
- 0xA7, 0xA9, 0xAA, 0xB8, 0x2E, 0x3F, 0x2C, 0x41,
- 0xFC, 0xFC, 0xF7, 0xCE, 0xCD, 0x36, 0x72, 0x73,
- 0x74, 0x75, 0x78, 0x75, 0x75, 0x75, 0x74, 0x74,
- 0x74, 0x74, 0x78, 0x72, 0x6D, 0x49, 0x59, 0xCB,
- 0xD1, 0xD1, 0xD2, 0xCB, 0x56, 0x3F, 0x2C, 0x41,
- 0x40, 0x2D, 0x2E, 0x49, 0x5B, 0x64, 0xCC, 0x64,
- 0x51, 0x53, 0x53, 0x55, 0x58, 0x59, 0x5B, 0x5E,
- 0x59, 0x58, 0x58, 0x58, 0x55, 0x60, 0x60, 0x5C,
- 0x5A, 0x53, 0x5B, 0xD0, 0xD3, 0xD3, 0xD3, 0xFB,
- 0xFC, 0x40, 0x41, 0x45, 0xC4, 0xC0, 0xBE, 0xBE,
- 0xC1, 0xC0, 0x3C, 0x47, 0x2E, 0x21, 0x22, 0x20,
- 0x65, 0xFC, 0xFC, 0xFC, 0xFC, 0x6D, 0x72, 0x75,
- 0x78, 0x76, 0x75, 0x79, 0x76, 0x76, 0x76, 0x76,
- 0x75, 0x75, 0x75, 0x72, 0x6D, 0x2E, 0x48, 0x5D,
- 0xCE, 0xD1, 0xD4, 0xD3, 0xCB, 0x56, 0x43, 0x2C,
- 0x42, 0x43, 0x2E, 0x2E, 0x4A, 0x5D, 0x64, 0x64,
- 0x50, 0x52, 0x56, 0x58, 0x5C, 0x5D, 0x5E, 0x5D,
- 0x5A, 0x58, 0x58, 0x55, 0x61, 0x60, 0x58, 0x58,
- 0x4E, 0x61, 0xD1, 0xD4, 0xD4, 0xD1, 0xEE, 0xFC,
- 0xFC, 0x2B, 0x29, 0x2E, 0x3F, 0xB0, 0xAD, 0x81,
- 0x46, 0x2D, 0x46, 0x2C, 0x24, 0x22, 0x22, 0x23,
- 0x25, 0xFC, 0xFC, 0xFC, 0xFC, 0x6E, 0x73, 0x76,
- 0x76, 0x79, 0x79, 0x79, 0x76, 0x76, 0x79, 0x76,
- 0x79, 0x79, 0x79, 0x74, 0x3F, 0x41, 0x2C, 0x48,
- 0x5F, 0xCF, 0xD5, 0xD7, 0xD6, 0xCD, 0x57, 0x40,
- 0x2E, 0x3F, 0x44, 0x2E, 0x41, 0x4C, 0x60, 0x61,
- 0x51, 0x53, 0x58, 0x5C, 0x5D, 0x5E, 0x5D, 0x5C,
- 0x58, 0x57, 0x54, 0x5F, 0x5E, 0x55, 0x55, 0x52,
- 0x64, 0xD4, 0xD5, 0xD4, 0xD1, 0x5D, 0xFA, 0xFB,
- 0xF4, 0x21, 0x24, 0x41, 0x40, 0x44, 0x2E, 0x2E,
- 0x42, 0x41, 0x2A, 0x24, 0x22, 0x22, 0x22, 0x22,
- 0x23, 0xD9, 0xFC, 0xFC, 0xFC, 0xFC, 0xE5, 0xB8,
- 0x8F, 0x8F, 0x7A, 0x8F, 0x7A, 0x8F, 0x7A, 0x8F,
- 0x8F, 0x8F, 0xB8, 0xE5, 0x3F, 0x3E, 0x43, 0x2C,
- 0x48, 0x61, 0xD1, 0xD7, 0xD9, 0xD7, 0xD0, 0x57,
- 0x41, 0x2E, 0x3E, 0x44, 0x2D, 0x40, 0x52, 0x5D,
- 0x53, 0x55, 0x59, 0x5D, 0x5E, 0x5E, 0x5D, 0x5A,
- 0x57, 0x53, 0x5E, 0x5E, 0x54, 0x53, 0x54, 0x65,
- 0xD5, 0xD6, 0xD4, 0xCE, 0x53, 0xFB, 0xF9, 0xFC,
- 0x24, 0x22, 0x23, 0x23, 0x41, 0x42, 0x2E, 0x40,
- 0x2B, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x23, 0x23, 0xFC, 0xFC, 0xFC, 0xFC, 0xE7, 0xBD,
- 0xB5, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0xB5, 0xC6, 0xEB, 0x2D, 0x47, 0x4A, 0x47,
- 0x2C, 0x3E, 0x61, 0xD4, 0xDC, 0xDC, 0xDA, 0xCF,
- 0x54, 0x41, 0x41, 0x3E, 0x45, 0x2C, 0x3F, 0x4A,
- 0x58, 0x5A, 0x5C, 0x5F, 0x60, 0x5E, 0x5D, 0x57,
- 0x51, 0x5D, 0x5D, 0x51, 0x53, 0x53, 0xCB, 0xD5,
- 0xD6, 0xD5, 0x63, 0x55, 0xFC, 0xFC, 0xFC, 0x2C,
- 0x23, 0x22, 0x23, 0x22, 0x20, 0x2D, 0x2C, 0x26,
- 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x21, 0xF0, 0xFC, 0xFC, 0xFC, 0xE2, 0xC6,
- 0xB5, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
- 0x93, 0x93, 0xC7, 0xE3, 0x3E, 0x2E, 0x49, 0x52,
- 0x4C, 0x41, 0x44, 0x62, 0xD6, 0xDE, 0xDE, 0xD9,
- 0xD0, 0x51, 0x2E, 0x40, 0x47, 0x44, 0x2C, 0x42,
- 0x5D, 0x5D, 0x5F, 0x60, 0x60, 0x5D, 0x57, 0x51,
- 0x58, 0x5D, 0x4E, 0x52, 0x55, 0x64, 0xD5, 0xD6,
- 0xD4, 0x61, 0x59, 0x6B, 0xFC, 0xFC, 0xFC, 0x21,
- 0x23, 0x22, 0x23, 0x22, 0x23, 0x21, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x21, 0x24, 0xFC, 0xFC, 0xFC, 0xE2, 0xC7,
- 0xB5, 0x90, 0x93, 0x93, 0x93, 0x90, 0x93, 0x93,
- 0x90, 0xB5, 0xC8, 0xE4, 0x5F, 0x45, 0x2E, 0x4D,
- 0x57, 0x57, 0x44, 0x43, 0x63, 0xDA, 0xDF, 0xDF,
- 0xD9, 0xCE, 0x4C, 0x2C, 0x3F, 0x3E, 0x40, 0x40,
- 0x60, 0x5E, 0x61, 0x61, 0x5E, 0x5B, 0x53, 0x52,
- 0x5C, 0x52, 0x52, 0x55, 0x61, 0xD4, 0xD5, 0xD1,
- 0x5E, 0x5B, 0x5C, 0xFB, 0xFC, 0xFC, 0x2A, 0x21,
- 0x23, 0x22, 0x23, 0x22, 0x22, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0xFB, 0xFC, 0xFC, 0xB3, 0xC8,
- 0xB5, 0x90, 0x92, 0xB5, 0x93, 0x93, 0xB5, 0x93,
- 0x92, 0xB5, 0xC8, 0xB9, 0xD0, 0x5E, 0x44, 0x40,
- 0x52, 0x58, 0x57, 0x48, 0x40, 0x63, 0xD9, 0xE0,
- 0xE0, 0xD9, 0xCB, 0x49, 0x2D, 0x3F, 0x45, 0x3F,
- 0x63, 0x61, 0x62, 0x60, 0x5E, 0x55, 0x4D, 0x59,
- 0x53, 0x4E, 0x54, 0x5D, 0xD2, 0xD4, 0xD2, 0x5E,
- 0x5C, 0x5D, 0xFC, 0xFC, 0xFC, 0xF8, 0x29, 0x23,
- 0x23, 0x23, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x23, 0x22, 0x22, 0x23, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0xF0, 0xFC, 0xFC, 0xB3, 0xC7,
- 0xB5, 0x93, 0xB5, 0x93, 0x93, 0x91, 0x93, 0x93,
- 0x91, 0xB5, 0xC7, 0xAD, 0xD6, 0xD2, 0x5E, 0x3F,
- 0x3F, 0x57, 0x57, 0x58, 0x4A, 0x41, 0x64, 0xDC,
- 0xF1, 0xDF, 0xDA, 0x61, 0x45, 0x2E, 0x43, 0x47,
- 0xCB, 0x63, 0x62, 0x5F, 0x58, 0x51, 0x53, 0x54,
- 0x4C, 0x52, 0x5C, 0xCD, 0xD3, 0xD2, 0x60, 0x5D,
- 0x5D, 0xFB, 0xFC, 0xFC, 0xFC, 0xDB, 0x49, 0x24,
- 0x21, 0x23, 0x23, 0x22, 0x26, 0x26, 0x2A, 0x24,
- 0x22, 0x23, 0x22, 0x21, 0x24, 0x26, 0x26, 0x2A,
- 0x29, 0x2B, 0x24, 0x25, 0xFC, 0xFC, 0xB3, 0xC5,
- 0x91, 0x91, 0x92, 0x91, 0x92, 0x92, 0x93, 0x93,
- 0x91, 0x93, 0xC6, 0xAD, 0xDC, 0xD9, 0xD4, 0x60,
- 0x43, 0x45, 0x58, 0x58, 0x57, 0x4B, 0x43, 0xCC,
- 0xDD, 0xF1, 0xD8, 0xD5, 0x5D, 0x43, 0x41, 0x47,
- 0xCD, 0x63, 0x62, 0x5D, 0x54, 0x4C, 0x55, 0x4B,
- 0x51, 0x58, 0x62, 0xD0, 0xD0, 0x62, 0x5D, 0x5D,
- 0x67, 0xFC, 0xFC, 0xFC, 0xFC, 0x58, 0x4E, 0x28,
- 0x2A, 0x20, 0x23, 0x22, 0x23, 0x2A, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x23, 0x25, 0x2A, 0x2E, 0x2D,
- 0x2E, 0x2E, 0x2E, 0x23, 0xFA, 0xFC, 0xB2, 0xBD,
- 0xB5, 0x90, 0x91, 0x93, 0x92, 0x90, 0x91, 0x93,
- 0x92, 0x91, 0xBD, 0xAD, 0xDE, 0xE0, 0xD8, 0xD7,
- 0x61, 0x40, 0x48, 0x58, 0x58, 0x58, 0x48, 0x44,
- 0xCF, 0xDE, 0xE0, 0xDD, 0xD0, 0x52, 0x41, 0x45,
- 0xCD, 0x63, 0x61, 0x58, 0x4D, 0x51, 0x4C, 0x4B,
- 0x54, 0x5D, 0xCC, 0xCE, 0x63, 0x61, 0x5D, 0x5D,
- 0xFB, 0xFC, 0xFC, 0xFC, 0xFC, 0x4B, 0x27, 0x21,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x24, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x20,
- 0x27, 0x2B, 0x41, 0x2B, 0x23, 0xFC, 0xB2, 0xB6,
- 0x93, 0x90, 0x92, 0xB5, 0x92, 0x90, 0xB5, 0x90,
- 0x92, 0x93, 0xBC, 0xAD, 0xDC, 0xF1, 0xF3, 0xF0,
- 0xD9, 0x61, 0x41, 0x4A, 0x58, 0x57, 0x57, 0x44,
- 0x49, 0xD2, 0xDD, 0xD8, 0xDA, 0x63, 0x4A, 0x45,
- 0xCC, 0x63, 0x5E, 0x52, 0x4B, 0x4C, 0x49, 0x51,
- 0x5C, 0x61, 0xCD, 0x65, 0x63, 0x5E, 0x4E, 0xCF,
- 0xFB, 0xFB, 0xF0, 0xFC, 0xD2, 0x2A, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x26, 0x41, 0x27, 0xF9, 0x81, 0xB7,
- 0xB5, 0x91, 0x92, 0xB5, 0x91, 0xB5, 0x93, 0xB5,
- 0x93, 0xB6, 0xB7, 0xB9, 0xCB, 0xD8, 0xF3, 0xF2,
- 0xF2, 0xDB, 0x61, 0x2D, 0x51, 0x58, 0x57, 0x58,
- 0x41, 0x51, 0xD4, 0xDB, 0xDC, 0xD1, 0x5B, 0x4C,
- 0xCB, 0x62, 0x59, 0x4C, 0x4A, 0x49, 0x4B, 0x55,
- 0x60, 0x64, 0xCC, 0x64, 0x5E, 0x55, 0x60, 0xE1,
- 0xFB, 0xF8, 0xFC, 0xFC, 0x21, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x21, 0x24, 0x2D, 0x21, 0xB4, 0xBB,
- 0xB6, 0xB5, 0xB6, 0xB7, 0xB7, 0xB7, 0xB7, 0xB6,
- 0xB6, 0xB6, 0xBB, 0xB9, 0x45, 0xCB, 0xDF, 0xF3,
- 0xF3, 0xF3, 0xDB, 0x5E, 0x2C, 0x51, 0x58, 0x58,
- 0x52, 0x2D, 0x5C, 0xD4, 0xD9, 0xD5, 0x63, 0x58,
- 0x64, 0x60, 0x53, 0x49, 0x4A, 0x49, 0x52, 0x5C,
- 0x63, 0xCD, 0xCD, 0x63, 0x5C, 0x4E, 0x65, 0xFC,
- 0xFC, 0xF5, 0xFC, 0xD2, 0x23, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x21, 0x22, 0x25, 0x29, 0xB3, 0xC7,
- 0xB5, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
- 0xB6, 0xB5, 0xC7, 0xAD, 0x57, 0x3F, 0xCB, 0xF0,
- 0xF3, 0xF3, 0xF2, 0xD9, 0x58, 0x41, 0x4C, 0x58,
- 0x57, 0x47, 0x42, 0x62, 0xD4, 0xD4, 0xCC, 0x60,
- 0x63, 0x5D, 0x50, 0x47, 0x48, 0x4B, 0x58, 0x60,
- 0xCC, 0xCE, 0xCD, 0x60, 0x53, 0x5C, 0x62, 0xFB,
- 0xF9, 0xFC, 0xFC, 0x21, 0x23, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x23, 0x23, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x23, 0x22, 0x23, 0x81, 0xC7,
- 0xB7, 0xB7, 0xBC, 0xB7, 0xBC, 0xBC, 0xBC, 0xB7,
- 0xB7, 0xB7, 0xC8, 0x80, 0x58, 0x57, 0x40, 0xCE,
- 0xF3, 0xF2, 0xF2, 0xF0, 0xD5, 0x4C, 0x3F, 0x4B,
- 0x52, 0x50, 0x2D, 0x4B, 0x64, 0xD2, 0xCC, 0x61,
- 0x60, 0x58, 0x4A, 0x47, 0x47, 0x4C, 0x59, 0x64,
- 0xD0, 0xD0, 0x64, 0x59, 0x49, 0x5D, 0xFB, 0xFC,
- 0xD9, 0xFC, 0xD6, 0x23, 0x22, 0x22, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x23, 0x21, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x23, 0x22, 0x23, 0xB4, 0xC8,
- 0xBD, 0xB7, 0xBD, 0xBC, 0xBD, 0xC5, 0xBC, 0xC5,
- 0xBC, 0xBD, 0xC7, 0xAC, 0x58, 0x57, 0x58, 0x2C,
- 0xD1, 0xF0, 0xF3, 0xF3, 0xE0, 0xCD, 0x45, 0x3E,
- 0x48, 0x4B, 0x3F, 0x41, 0x56, 0x64, 0x65, 0x62,
- 0x5D, 0x52, 0x47, 0x48, 0x48, 0x53, 0x60, 0xCC,
- 0xD2, 0xD0, 0x63, 0x52, 0x4E, 0x53, 0xFB, 0xFB,
- 0xFC, 0xFC, 0x23, 0x23, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x23, 0x20, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x23, 0x22, 0xB4, 0xC7,
- 0xC5, 0xBC, 0xC5, 0xBD, 0xC5, 0xC5, 0xBD, 0xC5,
- 0xBC, 0xC6, 0xC7, 0xB9, 0x58, 0x57, 0x58, 0x57,
- 0x2D, 0xD4, 0xF1, 0xF2, 0xF0, 0xD9, 0x5D, 0x47,
- 0x48, 0x3F, 0x42, 0x2C, 0x48, 0x5C, 0x5F, 0x60,
- 0x58, 0x50, 0x47, 0x4A, 0x49, 0x55, 0x63, 0xD0,
- 0xD2, 0xCD, 0x5D, 0x49, 0x4E, 0xE1, 0xFC, 0xF0,
- 0xFC, 0xF8, 0x22, 0x22, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x20, 0x21, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x23, 0x23, 0x22, 0xC4, 0xC8,
- 0xBD, 0xBD, 0xC6, 0xBD, 0xC6, 0xC6, 0xC5, 0xC6,
- 0xBD, 0xC6, 0xC7, 0xE4, 0x54, 0x57, 0x58, 0x57,
- 0x57, 0x43, 0xD7, 0xE0, 0xF1, 0xD8, 0xCD, 0x4B,
- 0x4A, 0x47, 0x42, 0x2C, 0x3F, 0x4D, 0x58, 0x5C,
- 0x52, 0x4B, 0x48, 0x4B, 0x4A, 0x58, 0xCB, 0xD3,
- 0xD2, 0xCD, 0x58, 0x47, 0x4A, 0xFC, 0xFC, 0xFB,
- 0xFC, 0x2B, 0x22, 0x22, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x26, 0x21, 0x21, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x23, 0x22, 0x23, 0xE5, 0xC8,
- 0xBA, 0xC5, 0xC6, 0xC6, 0xC6, 0xC7, 0xC6, 0xC7,
- 0xC5, 0xC6, 0xC8, 0xE5, 0x2E, 0x54, 0x58, 0x57,
- 0x57, 0x4C, 0x4D, 0xDA, 0xD8, 0xD8, 0xD4, 0x5C,
- 0x4B, 0x4B, 0x3F, 0x42, 0x44, 0x4A, 0x51, 0x58,
- 0x4B, 0x48, 0x4B, 0x51, 0x4D, 0x5F, 0xD0, 0xD1,
- 0xD0, 0x64, 0x51, 0x44, 0x6B, 0xFC, 0xFB, 0xFC,
- 0xFC, 0x21, 0x23, 0x22, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x23, 0x26, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0xE5, 0xED,
- 0xE7, 0xBA, 0xC8, 0xC6, 0xC6, 0xC6, 0xC6, 0xC7,
- 0xC7, 0xE5, 0xED, 0xE6, 0x61, 0x41, 0x52, 0x58,
- 0x58, 0x57, 0x45, 0x5E, 0xD7, 0xDD, 0xD5, 0x60,
- 0x4B, 0x4C, 0x48, 0x4D, 0x4D, 0x50, 0x4D, 0x56,
- 0x4A, 0x3E, 0x53, 0x53, 0x52, 0x63, 0xD3, 0xD0,
- 0xCE, 0x60, 0x4A, 0x45, 0xFC, 0xFC, 0xF7, 0xFC,
- 0xFC, 0x21, 0x23, 0x23, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x21, 0x2A, 0x20, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x21, 0x23, 0xEB, 0xF6,
- 0xF6, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
- 0xF6, 0xF6, 0xF6, 0xE6, 0xDB, 0x58, 0x45, 0x4B,
- 0x58, 0x57, 0x4D, 0x4B, 0x64, 0xD4, 0xD0, 0x5C,
- 0x48, 0x51, 0x4C, 0x5D, 0x5E, 0x5C, 0x56, 0x59,
- 0x3E, 0x4A, 0x58, 0x54, 0x52, 0x65, 0xD3, 0xD0,
- 0xCF, 0x5D, 0x48, 0xFC, 0xFC, 0xFC, 0xFA, 0xFC,
- 0xFC, 0x21, 0x22, 0x23, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x21, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x21, 0x4F, 0xE6, 0xC6,
- 0xC6, 0xBD, 0xC6, 0xBD, 0xBD, 0xBD, 0xBD, 0xC6,
- 0xC5, 0xBA, 0xC7, 0xE6, 0xF2, 0xD4, 0x49, 0x4B,
- 0x3E, 0x4D, 0x52, 0x3E, 0x52, 0x63, 0x64, 0x56,
- 0x48, 0x54, 0x4D, 0x61, 0xCC, 0xCC, 0x60, 0x60,
- 0x47, 0x4D, 0x5C, 0x53, 0x58, 0xCF, 0xD1, 0xCF,
- 0xD0, 0x59, 0x45, 0xFC, 0xFC, 0xFC, 0xEF, 0xF9,
- 0xFC, 0x21, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x23, 0x4F, 0xE4, 0xB9,
- 0xAF, 0x80, 0x80, 0x8E, 0x8E, 0x8E, 0x8E, 0x8F,
- 0x80, 0xB4, 0xB9, 0xE4, 0x7F, 0xDE, 0x61, 0x52,
- 0x54, 0x48, 0x3F, 0x43, 0x4D, 0x56, 0x59, 0x4B,
- 0x3E, 0x58, 0x53, 0x61, 0xD3, 0xD4, 0xCF, 0xCD,
- 0x4C, 0x58, 0x5F, 0x53, 0x5E, 0xD3, 0xD0, 0xCE,
- 0xCE, 0x52, 0x3F, 0xFC, 0xFC, 0xFC, 0xF7, 0x65,
- 0xFA, 0x22, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x21, 0x2A, 0x23, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x23, 0x22, 0x23, 0x22, 0x21, 0xB1, 0xE4, 0xE6,
- 0x7C, 0xB1, 0x7C, 0xB1, 0xB2, 0xB2, 0xB3, 0x3D,
- 0xB3, 0x3C, 0xE5, 0xB3, 0xB0, 0xF1, 0xD0, 0x58,
- 0x5D, 0x4D, 0x40, 0x41, 0x48, 0x51, 0x4C, 0x3F,
- 0x3F, 0x4D, 0x5A, 0x5A, 0xD5, 0xD9, 0xD7, 0xD4,
- 0x57, 0x5E, 0x61, 0x4C, 0x63, 0xD4, 0xCF, 0xCE,
- 0xCB, 0x4D, 0x4A, 0xFC, 0xFC, 0xFC, 0xFC, 0xF0,
- 0xFB, 0x22, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x23, 0x22, 0x23, 0x23, 0xB1, 0x81, 0x7D,
- 0x39, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x7C, 0xB2, 0xB0, 0xDF, 0xD2, 0x57,
- 0x60, 0x59, 0x5B, 0x59, 0x52, 0x4C, 0x4A, 0x40,
- 0x42, 0x4A, 0x53, 0x4D, 0xD2, 0xDE, 0xDE, 0xD9,
- 0x5E, 0x5E, 0x60, 0x4A, 0xCD, 0xD1, 0xCF, 0xCE,
- 0x63, 0x49, 0x5C, 0xFB, 0xE8, 0x89, 0x9F, 0xFC,
- 0xD6, 0x21, 0x21, 0x23, 0x22, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x21, 0x2A, 0x22, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x7F, 0xB9,
- 0x71, 0x6C, 0x38, 0x38, 0x33, 0x33, 0x33, 0x38,
- 0x38, 0x71, 0xAD, 0xE4, 0xD3, 0xDA, 0xCC, 0x52,
- 0x63, 0x60, 0xCE, 0xD4, 0xCF, 0x60, 0x4C, 0x40,
- 0x3F, 0x45, 0x4B, 0x5A, 0xCB, 0xD8, 0xDE, 0xDC,
- 0x5E, 0x5E, 0x5F, 0x4C, 0xD2, 0xD2, 0xCF, 0xCF,
- 0x61, 0x45, 0x5E, 0xA7, 0x9D, 0x95, 0x8B, 0x99,
- 0xFC, 0x41, 0x21, 0x23, 0x23, 0x22, 0x23, 0x22,
- 0x23, 0x22, 0x23, 0x2A, 0x23, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x77, 0x77, 0xF6,
- 0xFC, 0x7D, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D,
- 0x7D, 0xFC, 0x47, 0x64, 0xD0, 0xD0, 0x5D, 0x4B,
- 0x62, 0xCC, 0xD1, 0xDE, 0xDE, 0xD4, 0x5E, 0x43,
- 0x3F, 0x3E, 0x48, 0x53, 0x58, 0xDB, 0xD8, 0xDC,
- 0x5E, 0x5E, 0x5E, 0x53, 0xD4, 0xD2, 0xD0, 0xD0,
- 0x5E, 0x49, 0xA7, 0xA6, 0x89, 0x95, 0x8B, 0x9C,
- 0x9C, 0xFB, 0xD4, 0x22, 0x22, 0x22, 0x22, 0x23,
- 0x22, 0x23, 0x23, 0x2A, 0x22, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x23, 0x22, 0x23, 0x23, 0x98, 0x8C, 0x8C, 0x88,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8,
- 0xE9, 0x9C, 0x48, 0x5C, 0xD0, 0xCB, 0x48, 0x49,
- 0x5B, 0xCB, 0xCD, 0xE0, 0xF1, 0xDD, 0xD0, 0x4A,
- 0x41, 0x47, 0x45, 0x4C, 0x48, 0xD7, 0xDE, 0xDC,
- 0x5E, 0x5E, 0x5A, 0x58, 0xD1, 0xD0, 0xD0, 0xD2,
- 0x5C, 0x55, 0xA7, 0xA6, 0x87, 0x86, 0x89, 0x94,
- 0x9C, 0xA9, 0xFC, 0xF4, 0x22, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x2A, 0x21, 0x23, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x23, 0x22, 0x23, 0xA4, 0x89, 0x8C, 0xAA,
- 0xFB, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF7,
- 0x85, 0x88, 0x8D, 0x59, 0x64, 0x63, 0x47, 0x3E,
- 0x4C, 0x60, 0x61, 0xE0, 0xF0, 0xDF, 0xD9, 0x5D,
- 0x2E, 0x3E, 0x3E, 0x47, 0x4D, 0xCD, 0xDE, 0xDC,
- 0x5D, 0x5C, 0x51, 0x5D, 0xD1, 0xD2, 0xD2, 0xD4,
- 0x5A, 0xBE, 0xA7, 0x98, 0x8A, 0x8A, 0xA0, 0x8B,
- 0x86, 0x86, 0xF7, 0xFC, 0xF7, 0x26, 0x23, 0x23,
- 0x22, 0x22, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x21, 0x21, 0x21, 0xA1, 0x98, 0x9F, 0xBF,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xA7,
- 0x8C, 0x86, 0x8D, 0x59, 0x5E, 0x5D, 0x3F, 0x3E,
- 0x47, 0x53, 0x63, 0xD9, 0xF0, 0xF1, 0xDE, 0xD0,
- 0x43, 0x3E, 0x47, 0x45, 0x4A, 0x5B, 0xDC, 0xDA,
- 0x5D, 0x59, 0x49, 0x5F, 0xD1, 0xD2, 0xD3, 0xB9,
- 0xA5, 0xA7, 0x98, 0x9B, 0x96, 0x9D, 0x89, 0x89,
- 0x8B, 0x9C, 0x9D, 0xFC, 0xFC, 0xFC, 0x26, 0x22,
- 0x23, 0x23, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x22, 0x22, 0x29, 0x2D, 0x99, 0x99, 0xA2, 0xAA,
- 0xC4, 0xFB, 0xFC, 0xFC, 0xFC, 0xF6, 0xBF, 0xA2,
- 0x9C, 0x9C, 0x8E, 0xDC, 0xCD, 0x51, 0x41, 0x3E,
- 0x45, 0x49, 0x58, 0xCD, 0xE0, 0xE0, 0xD8, 0xDA,
- 0x4C, 0x4A, 0x45, 0x45, 0x48, 0x47, 0xDA, 0xDA,
- 0x5C, 0x58, 0x44, 0x69, 0xA9, 0x98, 0xA4, 0xA6,
- 0xA1, 0xA4, 0x99, 0x9E, 0x9D, 0x8B, 0x8A, 0x97,
- 0x87, 0x9A, 0x8A, 0xC2, 0xFC, 0xFC, 0xFC, 0x4D,
- 0x21, 0x21, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0x22,
- 0x21, 0x22, 0x2D, 0x34, 0xA4, 0xA2, 0xA2, 0xA9,
- 0xBF, 0xC0, 0xC3, 0xC1, 0xC0, 0xBE, 0xA6, 0x9D,
- 0x99, 0x87, 0xA2, 0xF1, 0xDC, 0x64, 0x42, 0x45,
- 0x47, 0x3E, 0x49, 0x4C, 0xDD, 0xDF, 0xD8, 0xDB,
- 0x5E, 0x4C, 0x48, 0x45, 0x45, 0x41, 0xD1, 0xD6,
- 0x5A, 0x55, 0x3F, 0xA7, 0xA1, 0x98, 0x9F, 0x99,
- 0x9F, 0x9D, 0x9A, 0x95, 0x8B, 0x97, 0x89, 0x8A,
- 0x88, 0x94, 0x9C, 0x8C, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xF4, 0x21, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x22, 0x23,
- 0x23, 0x23, 0x2C, 0x2C, 0xA8, 0xA2, 0xA4, 0xA4,
- 0xA9, 0xAA, 0xAA, 0xAA, 0xA9, 0xA6, 0x98, 0x9C,
- 0x8B, 0x88, 0x98, 0x8D, 0xD8, 0xD6, 0x4E, 0x47,
- 0x47, 0x49, 0x47, 0x3F, 0xDA, 0xDD, 0xDE, 0xDD,
- 0xCC, 0x4A, 0x4B, 0x3E, 0x45, 0x43, 0x61, 0xD4,
- 0x56, 0x51, 0x44, 0xA4, 0x9B, 0x8B, 0x9C, 0x9A,
- 0xA0, 0xA2, 0x98, 0x98, 0x8B, 0x8B, 0x98, 0x98,
- 0x84, 0x8B, 0x94, 0x8A, 0xA4, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xF2, 0x21, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x23, 0x23, 0x23, 0x23,
- 0x23, 0x22, 0x2C, 0x2D, 0xC0, 0xA4, 0xA2, 0xA4,
- 0xA4, 0xA6, 0xA6, 0xA6, 0xA4, 0xA2, 0x9F, 0x89,
- 0x8B, 0x9C, 0x9C, 0x8B, 0x68, 0xDB, 0x5F, 0x4B,
- 0x3E, 0x49, 0x4B, 0x3E, 0xCC, 0xDA, 0xDC, 0xDD,
- 0xD3, 0x49, 0x52, 0x48, 0x45, 0x45, 0x53, 0xD0,
- 0x51, 0x4A, 0x44, 0xA4, 0x9B, 0x8B, 0x9C, 0xA0,
- 0x9B, 0x86, 0x89, 0x98, 0x89, 0x8A, 0x96, 0x8A,
- 0x9C, 0x89, 0x89, 0x9C, 0x8C, 0xF6, 0xFC, 0xFC,
- 0xFC, 0xFC, 0x21, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x22, 0x23,
- 0x22, 0x21, 0x2B, 0x34, 0xC0, 0xA8, 0xA4, 0xA2,
- 0xA2, 0x98, 0xA1, 0xA0, 0x98, 0x9F, 0x95, 0x8A,
- 0x94, 0xA1, 0x8A, 0x84, 0x9B, 0x68, 0xCC, 0x49,
- 0x4A, 0x47, 0x4C, 0x4B, 0x51, 0xD3, 0xDA, 0xDC,
- 0xD5, 0x56, 0x56, 0x4A, 0x3E, 0x45, 0x48, 0x63,
- 0x4A, 0x47, 0x3E, 0xA7, 0x98, 0x9D, 0x9E, 0x8B,
- 0x95, 0x9B, 0x89, 0x86, 0x9B, 0x8B, 0x89, 0x84,
- 0x9A, 0xA1, 0x95, 0x9A, 0x8C, 0xA4, 0xFC, 0xFC,
- 0xFC, 0xFA, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x22, 0x23,
- 0x21, 0x23, 0x2C, 0xF6, 0xBF, 0xA9, 0xA2, 0x99,
- 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9B, 0x87, 0x8B,
- 0x9C, 0x86, 0x9C, 0x8A, 0x87, 0x87, 0x89, 0x51,
- 0x54, 0x47, 0x4B, 0x50, 0x4B, 0xCF, 0xD6, 0xDC,
- 0xD5, 0x60, 0x54, 0x52, 0x48, 0x45, 0x40, 0x5A,
- 0x45, 0x43, 0x47, 0xA7, 0x98, 0x9B, 0x95, 0x95,
- 0x9A, 0x87, 0x98, 0x98, 0x8A, 0x86, 0x87, 0x9E,
- 0x9B, 0x95, 0x9D, 0x9D, 0x99, 0x85, 0xA6, 0xFA,
- 0xF2, 0x21, 0x23, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x22, 0x22,
- 0x21, 0x24, 0xFB, 0xF7, 0xBF, 0xA6, 0xA2, 0x99,
- 0x97, 0x89, 0x86, 0x89, 0x9C, 0x96, 0x9E, 0x94,
- 0x89, 0x99, 0x98, 0x89, 0x9E, 0x9B, 0x89, 0x8B,
- 0x58, 0x4B, 0x4A, 0x52, 0x48, 0xCC, 0xD3, 0xDA,
- 0xD3, 0x65, 0x4C, 0x58, 0x49, 0x3E, 0x2E, 0x4D,
- 0x40, 0x41, 0x45, 0xA9, 0xA1, 0x9B, 0x9E, 0x9C,
- 0x95, 0x8A, 0x94, 0x89, 0x96, 0x87, 0x9C, 0x9A,
- 0x84, 0x9D, 0x9C, 0x9E, 0x9A, 0x9C, 0x9D, 0xBB,
- 0x23, 0x23, 0x22, 0x22, 0x21, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x23, 0x22, 0x21, 0x23, 0x23,
- 0x24, 0xFC, 0xFC, 0xF6, 0xBF, 0xA6, 0x9F, 0x99,
- 0x89, 0x95, 0x87, 0x94, 0x9D, 0x9E, 0x97, 0x9E,
- 0x95, 0x9B, 0x89, 0x95, 0x95, 0x9B, 0x89, 0x87,
- 0x5D, 0x56, 0x3E, 0x51, 0x3E, 0x60, 0xCF, 0xD3,
- 0xD2, 0xCD, 0x5C, 0x49, 0x4B, 0x3E, 0x2C, 0x48,
- 0x3E, 0x43, 0x3E, 0xA9, 0xA1, 0x9B, 0x97, 0x94,
- 0x95, 0x9A, 0x9C, 0x87, 0x87, 0x9B, 0x9C, 0x95,
- 0x9D, 0x89, 0x9A, 0x89, 0x9E, 0x9E, 0x8C, 0xA6,
- 0x20, 0x23, 0x23, 0x22, 0x23, 0x22, 0x23, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x21, 0x21, 0x20, 0x40,
- 0xFC, 0xFC, 0xFC, 0xEC, 0xBE, 0xA4, 0x9F, 0x99,
- 0x95, 0x9F, 0xA0, 0x88, 0x9D, 0x8B, 0x97, 0x95,
- 0x87, 0x95, 0x96, 0x95, 0x97, 0x94, 0x94, 0x98,
- 0xD3, 0x4C, 0x47, 0x4D, 0x42, 0x4C, 0x60, 0xCC,
- 0xCE, 0xD0, 0x65, 0x4B, 0x47, 0x44, 0x2B, 0x45,
- 0x4B, 0x47, 0x49, 0xA7, 0xA1, 0x9A, 0x97, 0x89,
- 0x95, 0x97, 0x97, 0x9E, 0x89, 0x95, 0x89, 0x9C,
- 0x87, 0x95, 0x97, 0x99, 0x95, 0x99, 0x9F, 0xA4,
- 0xC4, 0x21, 0x21, 0x23, 0x21, 0x23, 0x23, 0x23,
- 0x23, 0x23, 0x23, 0x23, 0x21, 0x20, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEA, 0xAA, 0xA6, 0xA2, 0x99,
- 0x8B, 0x9A, 0x95, 0x9E, 0x9E, 0x9A, 0x94, 0x87,
- 0x94, 0x94, 0x89, 0x94, 0x9B, 0x9B, 0xA7, 0xDC,
- 0xDB, 0x65, 0x2E, 0x3E, 0x43, 0x44, 0x49, 0x58,
- 0x63, 0xD3, 0xD3, 0x5E, 0x42, 0x42, 0x2D, 0x40,
- 0x54, 0x4C, 0x4A, 0xA7, 0xA0, 0x99, 0x9B, 0x94,
- 0xA0, 0x8A, 0x9B, 0x9D, 0x87, 0x95, 0x94, 0x8B,
- 0x8A, 0x98, 0x9C, 0x8A, 0x9B, 0x99, 0xA2, 0xA6,
- 0xBF, 0xEC, 0x2A, 0x20, 0x21, 0x23, 0x21, 0x20,
- 0x20, 0x20, 0x20, 0x4C, 0xF9, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEB, 0xAA, 0xA4, 0x9F, 0x9C,
- 0x8B, 0x9B, 0x88, 0x84, 0x9E, 0x9D, 0x96, 0x94,
- 0x94, 0x9A, 0x9B, 0x9B, 0xA4, 0xD5, 0xCD, 0xDE,
- 0xF1, 0xDA, 0x4C, 0x2D, 0x41, 0x2B, 0x42, 0x4C,
- 0x5E, 0xD4, 0xD7, 0xCD, 0x49, 0x2E, 0x2E, 0x41,
- 0x5E, 0x57, 0xA7, 0xA6, 0xA7, 0xA4, 0xA2, 0x98,
- 0x9D, 0x9C, 0xA1, 0x99, 0x9D, 0x88, 0x8B, 0x9C,
- 0x8A, 0x9C, 0x9C, 0x94, 0x9C, 0x89, 0xA0, 0xA6,
- 0xAA, 0xEB, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFB, 0xE9, 0xAA, 0xA6, 0xA2, 0x8B,
- 0x8B, 0x8A, 0x86, 0x9B, 0x9C, 0x98, 0xA0, 0x9B,
- 0x9B, 0x84, 0xA7, 0xB4, 0x61, 0xD1, 0xD2, 0xE0,
- 0xF1, 0xDC, 0x61, 0x2D, 0x2E, 0x3F, 0x56, 0x62,
- 0x5D, 0xD4, 0xD9, 0xD3, 0x54, 0x41, 0x41, 0x44,
- 0xCB, 0x60, 0x52, 0xA9, 0xA9, 0xA9, 0xA7, 0xA6,
- 0xA6, 0xA4, 0xA4, 0xA2, 0xA2, 0x9D, 0x95, 0x89,
- 0x9C, 0x8A, 0x9E, 0x9C, 0x8A, 0x9E, 0xA0, 0xA8,
- 0xC0, 0xE9, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xE9, 0xAA, 0xA6, 0xA0, 0x99,
- 0x9C, 0x8B, 0x9A, 0x84, 0x9B, 0x9B, 0x98, 0x98,
- 0xA9, 0xB9, 0x49, 0x57, 0xCB, 0xD4, 0xD3, 0xF1,
- 0xD8, 0xDA, 0xCE, 0x3F, 0x41, 0x4B, 0x5D, 0xCB,
- 0x5E, 0xD6, 0xDB, 0xD6, 0x5D, 0x43, 0x3F, 0x49,
- 0xD1, 0xCC, 0x4F, 0xDD, 0xC3, 0xBB, 0xBF, 0xAA,
- 0xAA, 0xA9, 0xAA, 0xA8, 0xA8, 0xA6, 0xA6, 0xA2,
- 0x9C, 0x9F, 0x9B, 0x9A, 0x9D, 0xA2, 0xA8, 0xAA,
- 0xC1, 0xEA, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEA, 0xC0, 0xAA, 0xA6, 0xA2,
- 0xA2, 0x99, 0xA0, 0xA0, 0xA4, 0xA7, 0xA9, 0xC0,
- 0x67, 0x49, 0x54, 0x60, 0xD0, 0xD4, 0xCC, 0xDF,
- 0xD9, 0xD5, 0xD2, 0x3E, 0x47, 0x56, 0x60, 0xCD,
- 0x5D, 0xD9, 0xD9, 0xD6, 0x61, 0x3F, 0x47, 0x52,
- 0xD6, 0xD3, 0x62, 0x4D, 0x40, 0x4A, 0x57, 0xCA,
- 0xC3, 0xC1, 0xC1, 0xC0, 0xBF, 0xBF, 0xAA, 0xAA,
- 0xA6, 0xA4, 0xA4, 0xA4, 0xA6, 0xA8, 0xBE, 0xC1,
- 0xC9, 0xEB, 0xFB, 0xFB, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
- 0xFC, 0xFC, 0xFC, 0xEB, 0xC3, 0xC0, 0xAA, 0xA8,
- 0xA6, 0xA6, 0xA6, 0xA9, 0xAA, 0xC0, 0xE8, 0xD0,
- 0xD2, 0x4C, 0x5E, 0x64, 0xD0, 0xD1, 0x5F, 0xD9,
- 0xD5, 0xD1, 0xD0, 0x48, 0x52, 0x5C, 0x64, 0xCD,
- 0x5C, 0xDC, 0xD7, 0xD5, 0x62, 0x3F, 0x4C, 0x53,
- 0xDA, 0xD7, 0xCE, 0x56, 0x40, 0x4B, 0x52, 0x56,
- 0xCE, 0xDF, 0x6A, 0xEB, 0xE9, 0xC9, 0xC3, 0xC0,
- 0xC0, 0xBF, 0xBE, 0xAA, 0xBF, 0xC0, 0xC3, 0xC9,
- 0xEA, 0xF6, 0xEE, 0x58, 0x57, 0x5E, 0xD6, 0xD0,
- 0xD2, 0x61, 0xCB, 0xD6, 0xD6, 0xD4, 0xDF, 0xF3,
- 0xF2, 0xDD, 0xD7, 0xEB, 0xC9, 0xC1, 0xC0, 0xBF,
- 0xAA, 0xAA, 0xAA, 0xBE, 0xC3, 0xF0, 0xD2, 0xD2,
- 0xD2, 0x51, 0x62, 0xCC, 0xD0, 0xCC, 0x61, 0xD3,
- 0xCF, 0xCE, 0xD2, 0x48, 0x5A, 0x61, 0xCC, 0xCE,
- 0x5F, 0xD9, 0xD5, 0xD1, 0x63, 0x44, 0x56, 0x56,
- 0xDC, 0xD9, 0xD4, 0x5E, 0x42, 0x4A, 0x4C, 0x57,
- 0x5D, 0xD8, 0xE0, 0xD8, 0xDC, 0xCB, 0x66, 0xEC,
- 0xE8, 0xC3, 0xC3, 0xC3, 0xC3, 0xC9, 0xE8, 0xEA,
- 0xF6, 0x50, 0x3E, 0x58, 0x57, 0x5A, 0xD6, 0xD4,
- 0xCC, 0x4B, 0x53, 0x5C, 0x64, 0xD1, 0xDF, 0xF3,
- 0xF1, 0xDE, 0xD9, 0xF6, 0xEB, 0xC9, 0xC1, 0xC1,
- 0xC0, 0xC0, 0xC1, 0xC9, 0xF0, 0xD6, 0xCD, 0xD6,
- 0xD3, 0x53, 0xCB, 0xCF, 0xCD, 0x5F, 0x5F, 0xCE,
- 0xCF, 0xCD, 0xD0, 0x47, 0x5F, 0xCB, 0xCE, 0xCD,
- 0x63, 0xD6, 0xD3, 0xD1, 0x63, 0x3F, 0x58, 0x58,
- 0xDB, 0xDC, 0xDA, 0x65, 0x3E, 0x49, 0x49, 0x4D,
- 0x49, 0xDC, 0xDF, 0xE0, 0xDE, 0xD5, 0x47, 0x47,
- 0x46, 0x6B, 0xEB, 0xEA, 0xE9, 0xEA, 0xEB, 0xF6,
- 0xD0, 0x57, 0x57, 0x47, 0x47, 0x5B, 0xD4, 0xD4,
- 0xCD, 0x44, 0x3E, 0x4B, 0x50, 0x4B, 0x51, 0xD5,
- 0xDB, 0xD8, 0xDE, 0x4B, 0xF6, 0xF6, 0xEA, 0xE9,
- 0xE8, 0xEA, 0xEB, 0x67, 0x5E, 0xCC, 0xD6, 0xDC,
- 0xD5, 0x58, 0xCE, 0xCE, 0x62, 0x50, 0xCC, 0xD3,
- 0xD2, 0xCD, 0xCD, 0x4B, 0x64, 0xCE, 0xCE, 0x64,
- 0xCC, 0xD3, 0xD2, 0xD2, 0x61, 0x47, 0x5D, 0x5C,
- 0xDD, 0xDD, 0xD9, 0xD1, 0x4C, 0x47, 0x49, 0x4A,
- 0x4B, 0xD1, 0xD8, 0xE0, 0xDF, 0xDD, 0x5D, 0x4A,
- 0x48, 0x52, 0x51, 0x3F, 0xF6, 0xEC, 0xE0, 0xE0,
- 0xD3, 0x5E, 0x5F, 0x50, 0x4B, 0x50, 0xCB, 0xCE,
- 0x64, 0x45, 0x4C, 0x57, 0x57, 0x58, 0x52, 0xD6,
- 0xD3, 0xDE, 0xDF, 0xD1, 0x3E, 0x4B, 0xF6, 0xF6,
- 0xEC, 0x66, 0x53, 0x43, 0x56, 0xD1, 0xD9, 0xDE,
- 0xD4, 0x5E, 0xCE, 0xCC, 0x5B, 0x2C, 0xD4, 0xD5,
- 0xD2, 0xD0, 0x63, 0x5D, 0xCD, 0xD0, 0xCD, 0x5E,
- 0xD0, 0xCF, 0xCE, 0xD2, 0x5E, 0x50, 0x60, 0x5D,
- 0xDE, 0xDD, 0xDC, 0xD7, 0x5D, 0x45, 0x47, 0x3E,
- 0x4B, 0x5E, 0xDE, 0xDF, 0xE0, 0xD8, 0xCF, 0x3E,
- 0x45, 0x51, 0x58, 0x42, 0xCB, 0xDA, 0xDE, 0xD8,
- 0xD2, 0x61, 0xCC, 0xCF, 0xD6, 0xDA, 0xDA, 0xD5,
- 0xD0, 0x50, 0x44, 0x57, 0x57, 0x58, 0x45, 0xD1,
- 0xD1, 0xD7, 0xDF, 0xDF, 0xD7, 0xCF, 0x64, 0x60,
- 0xCE, 0xCE, 0xCE, 0x63, 0xCF, 0xDA, 0xDE, 0xD9,
- 0xCF, 0x63, 0xCD, 0x63, 0x4D, 0x4B, 0xD6, 0xD5,
- 0xCE, 0xD3, 0x60, 0xCB, 0xD0, 0xD0, 0x65, 0x47,
- 0xD0, 0xCC, 0xCC, 0xD1, 0x59, 0x5D, 0x63, 0x5E,
- 0xDD, 0xDD, 0xDE, 0xDC, 0xCB, 0x40, 0x48, 0x45,
- 0x3E, 0x3E, 0xD9, 0xDF, 0xE0, 0xDF, 0xDA, 0x51,
- 0x4C, 0x48, 0x56, 0x4C, 0x5B, 0xD2, 0xDA, 0xDB,
- 0xCB, 0x5F, 0xD0, 0xCC, 0xDC, 0xF0, 0xF3, 0xE0,
- 0xDD, 0xCC, 0x41, 0x50, 0x57, 0x57, 0x4B, 0x5D,
- 0xD3, 0xD1, 0xDE, 0xDF, 0xDE, 0xD7, 0xD0, 0xD0,
- 0xD5, 0xD6, 0xD6, 0xCE, 0xD7, 0xDC, 0xDA, 0xD5,
- 0x60, 0x63, 0x64, 0x5E, 0x47, 0x61, 0xD5, 0xD2,
- 0xCF, 0xD0, 0x59, 0xCD, 0xD1, 0xCF, 0x61, 0x4D,
- 0xCC, 0xCE, 0xCD, 0xD0, 0x52, 0x61, 0x64, 0x60,
- 0xDA, 0xDE, 0xDE, 0xDD, 0xD1, 0x4B, 0x4A, 0x45,
- 0x3E, 0x41, 0xCD, 0xDE, 0xE0, 0xF1, 0xDE, 0x63,
- 0x4A, 0x4A, 0x4A, 0x4B, 0x50, 0xCB, 0xD4, 0xD7,
- 0x5E, 0x54, 0x62, 0xD3, 0xD4, 0xF0, 0xF3, 0xF3,
- 0xF2, 0xDE, 0x61, 0x40, 0x49, 0x56, 0x4D, 0x3E,
- 0x4B, 0xCE, 0xD9, 0xD8, 0xD9, 0xD5, 0xCF, 0xD2,
- 0xD6, 0xD6, 0xD1, 0xD1, 0xD7, 0xD5, 0xCF, 0xD0,
- 0x54, 0x64, 0x63, 0x56, 0x2C, 0xCB, 0xD1, 0xCC,
- 0xD3, 0xCD, 0x54, 0xCF, 0xD1, 0xCE, 0x5E, 0x5C,
- 0xCE, 0xCE, 0xCE, 0xCB, 0x4B, 0x63, 0xCC, 0x61,
- 0xD4, 0xDC, 0xDE, 0xDE, 0xDA, 0x5D, 0x45, 0x45,
- 0x48, 0x3F, 0x52, 0xD9, 0xD8, 0xDF, 0xDF, 0xD2,
- 0x52, 0x4B, 0x3E, 0x2E, 0x47, 0x60, 0xCF, 0xD3,
- 0x59, 0x48, 0x50, 0x5E, 0xCC, 0xDE, 0xF2, 0xF2,
- 0xF3, 0xF3, 0xDD, 0x5D, 0x3E, 0x48, 0x47, 0x47,
- 0x58, 0xD1, 0xDA, 0xDA, 0xD5, 0xD1, 0xCD, 0xD2,
- 0xD3, 0xCF, 0xD3, 0xD1, 0xCD, 0xD3, 0xD2, 0x5E,
- 0x52, 0x64, 0x60, 0x4B, 0x45, 0x61, 0xCD, 0xD3,
- 0xD3, 0x64, 0x61, 0xD0, 0xD0, 0x64, 0x45, 0x63,
- 0xD0, 0xCE, 0xD0, 0x60, 0x56, 0xCB, 0xCC, 0x62,
- 0xCE, 0xDA, 0xDE, 0xD8, 0xDD, 0xCC, 0x45, 0x49,
- 0x3E, 0x47, 0x42, 0xD1, 0xDC, 0xD8, 0xD8, 0xD3,
- 0x5D, 0x4C, 0x49, 0x3F, 0x47, 0x59, 0xCD, 0xCF,
- 0x59, 0x2E, 0x48, 0x47, 0x52, 0x63, 0xF0, 0xF2,
- 0xF3, 0xF3, 0xF2, 0xDA, 0x52, 0x4B, 0x52, 0x58,
- 0x5E, 0x63, 0xD0, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE,
- 0xCF, 0x65, 0x61, 0xD6, 0xD6, 0xD6, 0xCB, 0x4B,
- 0x61, 0x62, 0x5D, 0x43, 0x4B, 0x61, 0xD0, 0xD4,
- 0xD1, 0x61, 0xCE, 0xD2, 0xCD, 0x5E, 0x4A, 0xCE,
- 0xD0, 0xCC, 0xD0, 0x59, 0x61, 0xCC, 0xCC, 0x62,
- 0xD1, 0xD5, 0xDE, 0xD8, 0xDD, 0xCF, 0x4B, 0x4A,
- 0x45, 0x3E, 0x2D, 0xCB, 0xDC, 0xDE, 0xD8, 0xD5,
- 0x60, 0x54, 0x51, 0x4C, 0x4D, 0x5C, 0xCC, 0xCE,
- 0x5A, 0x2C, 0x50, 0x53, 0x3E, 0x59, 0xD8, 0xF3,
- 0xF2, 0xF3, 0xF3, 0xE0, 0x5E, 0x4A, 0x4C, 0x53,
- 0x5E, 0x63, 0xCC, 0xCC, 0xCC, 0xCD, 0xCF, 0xD3,
- 0x62, 0x53, 0xD6, 0xD6, 0xD6, 0xD6, 0x5B, 0x48,
- 0x64, 0x63, 0x59, 0x44, 0x57, 0x63, 0xD2, 0xD3,
- 0xD0, 0x5E, 0xD0, 0xD1, 0xCB, 0x58, 0x4C, 0xCF,
- 0xCF, 0xCE, 0xCE, 0x57, 0x63, 0xCC, 0xCD, 0x57,
+ 0xBF, 0x95, 0x90, 0xCB, 0x95, 0xA1, 0x2C, 0x2C,
+ 0x95, 0x55, 0xCB, 0x90, 0xCB, 0x95, 0x2C, 0x95,
+ 0xCB, 0x47, 0x94, 0x95, 0xA1, 0xD6, 0xD6, 0x2C,
+ 0x90, 0x47, 0x70, 0x2C, 0x6D, 0x2A, 0x6D, 0xD6,
+ 0xA1, 0x2C, 0x55, 0x95, 0x2C, 0x2C, 0x55, 0x55,
+ 0x95, 0xA1, 0xA1, 0xA1, 0x6D, 0xBF, 0x2A, 0x2A,
+ 0xBF, 0x83, 0xBF, 0x95, 0x90, 0xCB, 0x95, 0xA1,
+ 0x2C, 0x2C, 0x95, 0x55, 0xCB, 0x90, 0xCB, 0x95,
+ 0x2C, 0x95, 0xCB, 0x47, 0x94, 0x95, 0xA1, 0xD6,
+ 0xD6, 0x2C, 0x90, 0x47, 0x70, 0x2C, 0x6D, 0x2A,
+ 0x95, 0x47, 0x47, 0x90, 0x2C, 0x2C, 0x2C, 0x95,
+ 0x55, 0x55, 0xCB, 0x90, 0xCB, 0x55, 0x55, 0xCB,
+ 0x47, 0xE6, 0x70, 0x95, 0xD6, 0xD6, 0xA1, 0x2C,
+ 0x55, 0x55, 0x95, 0xD6, 0x6D, 0xD6, 0xA1, 0x2C,
+ 0x2C, 0x95, 0x55, 0x95, 0x95, 0x95, 0x2C, 0x2C,
+ 0xA1, 0xA1, 0x2C, 0x2C, 0xA1, 0xD6, 0xD6, 0xD6,
+ 0xD6, 0xD6, 0x95, 0x47, 0x47, 0x90, 0x2C, 0x2C,
+ 0x2C, 0x95, 0x55, 0x55, 0xCB, 0x90, 0xCB, 0x55,
+ 0x55, 0xCB, 0x47, 0xE6, 0x70, 0x95, 0xD6, 0xD6,
+ 0xA1, 0x2C, 0x55, 0x55, 0x95, 0xD6, 0x6D, 0xD6,
+ 0x90, 0x47, 0x47, 0x70, 0x2C, 0xA1, 0x2C, 0x95,
+ 0x55, 0x55, 0x90, 0xCB, 0x55, 0x55, 0x55, 0x70,
+ 0x94, 0x70, 0x95, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C,
+ 0x95, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C,
+ 0x95, 0x55, 0xCB, 0x95, 0xD6, 0xA1, 0x2C, 0x95,
+ 0xA1, 0xD6, 0xD6, 0xA1, 0xA1, 0xD6, 0xA1, 0xA1,
+ 0xA1, 0x2C, 0x90, 0x47, 0x47, 0x70, 0x2C, 0xA1,
+ 0x2C, 0x95, 0x55, 0x55, 0x90, 0xCB, 0x55, 0x55,
+ 0x55, 0x70, 0x94, 0x70, 0x95, 0xA1, 0xD6, 0xD6,
+ 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0xD6, 0xD6, 0xA1,
+ 0x94, 0xA0, 0x47, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+ 0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0xCB,
+ 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C,
+ 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x95,
+ 0x55, 0x55, 0x2C, 0x3F, 0x80, 0x20, 0x88, 0x88,
+ 0x88, 0x20, 0x88, 0xB1, 0x2C, 0xA1, 0x2C, 0x2C,
+ 0x95, 0xCB, 0x94, 0xA0, 0x47, 0x55, 0x2C, 0xD6,
+ 0xA1, 0x95, 0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55,
+ 0xCB, 0xCB, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6,
+ 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C,
+ 0x55, 0x55, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x95, 0x2C, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x95,
+ 0x55, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
+ 0x2C, 0x94, 0x80, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x88, 0x92, 0xA1, 0x95,
+ 0x55, 0x90, 0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6,
+ 0xA1, 0x2C, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x95, 0x2C, 0xD6, 0xD6, 0xD6, 0xA1,
+ 0x2C, 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95,
+ 0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0x95,
+ 0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55, 0x2C, 0x2C,
+ 0xA1, 0xD6, 0xA1, 0xA1, 0x2C, 0x2C, 0x95, 0x55,
+ 0x55, 0x55, 0x95, 0x95, 0x2C, 0x95, 0x95, 0xD6,
+ 0xB1, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x80, 0x34, 0x88, 0x43, 0x47,
+ 0x95, 0xCB, 0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6,
+ 0xA1, 0x95, 0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55,
+ 0x2C, 0x2C, 0xA1, 0xD6, 0xA1, 0xA1, 0xA1, 0x2C,
+ 0x55, 0x55, 0x55, 0x55, 0x2C, 0x95, 0x2C, 0x2C,
+ 0x55, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x55,
+ 0x90, 0x70, 0x90, 0x55, 0x95, 0x95, 0xA1, 0xA1,
+ 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x95, 0x95,
+ 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xD5,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x88, 0x7D, 0x3F, 0xB1, 0x80, 0x20,
+ 0x99, 0x2C, 0x55, 0x55, 0x95, 0x2C, 0xA1, 0xA1,
+ 0x2C, 0x55, 0x90, 0x70, 0x90, 0x55, 0x95, 0x95,
+ 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C,
+ 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1, 0x95, 0xCB,
+ 0x70, 0x94, 0x90, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
+ 0x2C, 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0xA1, 0x88,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xB1, 0x47, 0xD5, 0x7D, 0x43,
+ 0x20, 0x70, 0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
+ 0x95, 0xCB, 0x70, 0x94, 0x90, 0x55, 0x95, 0xA1,
+ 0xA1, 0xA1, 0x2C, 0x95, 0x2C, 0x2C, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95,
+ 0x95, 0x90, 0x55, 0x2C, 0xD6, 0xD6, 0x2C, 0x90,
+ 0x94, 0x70, 0x55, 0x95, 0x2C, 0xD6, 0xD6, 0xA1,
+ 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x95, 0x55, 0x55,
+ 0xCB, 0xCB, 0xCB, 0x55, 0xCB, 0x55, 0x47, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x88, 0xB1, 0x3F, 0x92, 0x2B, 0x80,
+ 0x20, 0x80, 0xD6, 0x70, 0x55, 0x2C, 0xD6, 0xD6,
+ 0x2C, 0x90, 0x94, 0x70, 0x55, 0x95, 0x2C, 0xD6,
+ 0xD6, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x95,
+ 0x95, 0x55, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x55,
+ 0xD6, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x55, 0x70,
+ 0x94, 0x55, 0x95, 0xA1, 0xA1, 0xA1, 0xA1, 0x95,
+ 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0xCB, 0x90,
+ 0x70, 0x90, 0xCB, 0x55, 0x55, 0xA1, 0xD8, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x88, 0xD8, 0xE1, 0x88, 0x20, 0x20,
+ 0x88, 0x88, 0xE6, 0x55, 0x2C, 0xA1, 0xD6, 0xA1,
+ 0x55, 0x70, 0x94, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
+ 0xA1, 0x95, 0x55, 0x55, 0x95, 0x95, 0x55, 0x55,
+ 0x90, 0x90, 0x90, 0x90, 0xCB, 0x55, 0x55, 0x55,
+ 0xD6, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0xCB, 0x70,
+ 0x70, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x55,
+ 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x95, 0x2C, 0x95, 0x2C, 0xD6, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x80, 0xD6, 0xA1, 0xD6, 0xD6, 0xA1,
+ 0xCB, 0x70, 0x70, 0x95, 0x2C, 0xA1, 0xA1, 0x2C,
+ 0x2C, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xD6, 0xA1, 0xA1, 0xA1, 0xA1, 0x55, 0x70, 0x94,
+ 0xCB, 0x95, 0xA1, 0xA1, 0x2C, 0x95, 0xCB, 0x55,
+ 0x90, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x95, 0xA1,
+ 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x95, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x88, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x88, 0x95, 0xA1, 0xA1, 0xA1, 0x55,
+ 0x70, 0x94, 0xCB, 0x95, 0xA1, 0xA1, 0x2C, 0x95,
+ 0xCB, 0xCB, 0x90, 0xCB, 0x55, 0x55, 0x55, 0x55,
+ 0x95, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
+ 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0xCB, 0x70, 0x70,
+ 0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x70, 0x90, 0xCB,
+ 0xCB, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x2C, 0xD6,
+ 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x70, 0x20, 0x20,
+ 0x88, 0x43, 0xD8, 0x43, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x88, 0x88, 0x43, 0x2B, 0xD8, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x3F, 0x2C, 0x95, 0x95, 0xCB,
+ 0x70, 0x70, 0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x90,
+ 0x90, 0xCB, 0x55, 0xCB, 0x55, 0xCB, 0x55, 0x95,
+ 0x2C, 0xD6, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C,
+ 0xA1, 0x95, 0x95, 0x55, 0xCB, 0x70, 0x90, 0x55,
+ 0x2C, 0x2C, 0x2C, 0x55, 0x70, 0x70, 0x55, 0x95,
+ 0x95, 0xCB, 0x90, 0x90, 0x90, 0x95, 0x2C, 0xA1,
+ 0xD6, 0xD6, 0x2C, 0x2C, 0x95, 0x70, 0x20, 0x20,
+ 0x80, 0x2B, 0x34, 0x2B, 0x88, 0x20, 0x20, 0x20,
+ 0x88, 0xB1, 0x28, 0x28, 0x2B, 0x7D, 0x80, 0x20,
+ 0x20, 0x20, 0x20, 0x92, 0x95, 0x55, 0xCB, 0x70,
+ 0x90, 0x55, 0x2C, 0x2C, 0x2C, 0x55, 0x70, 0x70,
+ 0x55, 0x95, 0x55, 0x55, 0x90, 0x90, 0x90, 0x55,
+ 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x95,
+ 0xA1, 0x95, 0x55, 0xCB, 0x90, 0x70, 0xCB, 0x95,
+ 0xA1, 0x95, 0x95, 0xCB, 0x90, 0xCB, 0x95, 0x2C,
+ 0x95, 0x70, 0x70, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
+ 0x2C, 0x2C, 0x55, 0xCB, 0x55, 0x90, 0x20, 0x34,
+ 0x90, 0x6D, 0x70, 0xD8, 0x43, 0x20, 0x20, 0x88,
+ 0x3F, 0x55, 0xA1, 0x2A, 0xD6, 0x7D, 0x43, 0x20,
+ 0x20, 0x20, 0x88, 0x7D, 0x55, 0xCB, 0x90, 0x70,
+ 0xCB, 0x95, 0xA1, 0x95, 0x95, 0xCB, 0x70, 0xCB,
+ 0x95, 0xA1, 0x95, 0x70, 0x70, 0xCB, 0x55, 0x2C,
+ 0xA1, 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x55, 0x95,
+ 0x2C, 0x55, 0x90, 0x70, 0x94, 0x90, 0x95, 0x2C,
+ 0x2C, 0x95, 0xCB, 0x90, 0x55, 0x95, 0xA1, 0xA1,
+ 0x95, 0x90, 0x90, 0x95, 0xA1, 0xD6, 0xD6, 0x6D,
+ 0xA1, 0x95, 0x55, 0xCB, 0x55, 0xCB, 0x20, 0x99,
+ 0xBF, 0xA3, 0xA3, 0x90, 0x20, 0x20, 0x20, 0x92,
+ 0x83, 0x6B, 0x6B, 0x6B, 0xA3, 0x70, 0x88, 0x20,
+ 0x20, 0x20, 0x20, 0x2B, 0x90, 0x70, 0x94, 0x90,
+ 0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x90, 0x55, 0x95,
+ 0xA1, 0x2C, 0x55, 0x90, 0x90, 0x95, 0xA1, 0xD6,
+ 0xD6, 0x6D, 0xA1, 0x95, 0x55, 0xCB, 0x55, 0x55,
+ 0x2C, 0x55, 0x70, 0x70, 0x94, 0x90, 0x95, 0x2C,
+ 0x2C, 0x55, 0xCB, 0xCB, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x55, 0x55, 0x95, 0xA1, 0x6D, 0xBF, 0x6D, 0xD6,
+ 0x95, 0x55, 0x90, 0xCB, 0x55, 0x95, 0x88, 0x95,
+ 0x2C, 0x3F, 0x6D, 0x6B, 0x34, 0x20, 0x20, 0x47,
+ 0x65, 0xD6, 0xE1, 0x3F, 0x2A, 0x6B, 0x2B, 0x20,
+ 0x20, 0x20, 0x20, 0x43, 0x70, 0x70, 0x94, 0x90,
+ 0x95, 0x2C, 0x2C, 0x55, 0x55, 0x55, 0x95, 0x2C,
+ 0xA1, 0x2C, 0x55, 0xCB, 0x95, 0xA1, 0x6D, 0xBF,
+ 0x6D, 0xD6, 0x2C, 0x55, 0x90, 0xCB, 0x95, 0x95,
+ 0x95, 0x55, 0x70, 0x94, 0x70, 0x55, 0x2C, 0xA1,
+ 0x2C, 0x55, 0xCB, 0x55, 0x2C, 0x95, 0x2C, 0x95,
+ 0x95, 0x95, 0xA1, 0x6D, 0xBF, 0x2A, 0xD6, 0x95,
+ 0x70, 0x94, 0x94, 0x70, 0x55, 0x55, 0x20, 0xBF,
+ 0xC9, 0xB1, 0x99, 0x42, 0xB1, 0x61, 0x7D, 0x94,
+ 0x65, 0xB1, 0x88, 0x99, 0xD5, 0xE5, 0x7F, 0x20,
+ 0x20, 0x20, 0x20, 0x43, 0x70, 0x94, 0x70, 0x55,
+ 0x2C, 0xA1, 0x2C, 0x55, 0x90, 0x55, 0x2C, 0x95,
+ 0x2C, 0x95, 0x95, 0x2C, 0xA1, 0x6D, 0xBF, 0xBF,
+ 0xD6, 0x55, 0x70, 0x94, 0x94, 0x70, 0xCB, 0x55,
+ 0x55, 0xCB, 0x70, 0x94, 0x70, 0x95, 0xA1, 0xA1,
+ 0x95, 0x55, 0x55, 0x95, 0x2C, 0x95, 0x95, 0x95,
+ 0x95, 0xA1, 0x6D, 0x2A, 0x2A, 0xD6, 0x55, 0x94,
+ 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x95, 0x20, 0x2A,
+ 0xD8, 0x43, 0xC9, 0x83, 0x98, 0x79, 0x34, 0x9F,
+ 0x6B, 0x43, 0x20, 0x88, 0x2B, 0x65, 0xA0, 0x20,
+ 0x20, 0x20, 0x20, 0xE1, 0x70, 0x94, 0x70, 0x95,
+ 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x95, 0x2C, 0x95,
+ 0x95, 0x95, 0x95, 0xA1, 0x6D, 0xBF, 0x2A, 0xD6,
+ 0x55, 0x94, 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x55,
+ 0x94, 0x70, 0x94, 0x47, 0x70, 0x95, 0x2C, 0x2C,
+ 0x95, 0xCB, 0x95, 0x2C, 0x2C, 0xA1, 0x2C, 0x2C,
+ 0xA1, 0xD6, 0x6D, 0x6D, 0xA1, 0xCB, 0x47, 0x28,
+ 0xE6, 0x47, 0x70, 0x55, 0x95, 0xA1, 0x20, 0x2C,
+ 0x7F, 0x88, 0xF0, 0xC6, 0x25, 0x5E, 0xCF, 0x2F,
+ 0xE7, 0x9A, 0x20, 0x88, 0x99, 0x65, 0x3F, 0x20,
+ 0x20, 0x20, 0x20, 0x34, 0x94, 0x47, 0x70, 0x95,
+ 0xA1, 0x2C, 0x55, 0xCB, 0x95, 0x2C, 0x2C, 0xA1,
+ 0x2C, 0x2C, 0xA1, 0xD6, 0x6D, 0x6D, 0xA1, 0xCB,
+ 0x94, 0x28, 0xA0, 0x47, 0x70, 0x55, 0x95, 0x95,
+ 0x47, 0x70, 0x90, 0x94, 0x70, 0x95, 0xA1, 0x2C,
+ 0x55, 0x55, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C,
+ 0xA1, 0x6D, 0x2A, 0xD6, 0x55, 0x47, 0x28, 0x28,
+ 0x47, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0x20, 0x28,
+ 0xEC, 0x86, 0xBE, 0x48, 0x3E, 0x3E, 0x3A, 0x25,
+ 0x4E, 0xAE, 0x93, 0xD7, 0xEC, 0xD1, 0x34, 0x20,
+ 0x20, 0x20, 0x20, 0x43, 0x55, 0x94, 0x70, 0x95,
+ 0xA1, 0xA1, 0x55, 0xCB, 0x2C, 0xA1, 0xA1, 0xA1,
+ 0xA1, 0x2C, 0xA1, 0x6D, 0x6D, 0xD6, 0x55, 0x47,
+ 0x28, 0x28, 0x47, 0x70, 0x55, 0x95, 0x2C, 0x2C,
+ 0x95, 0x95, 0x55, 0x90, 0xCB, 0x2C, 0xA1, 0xA1,
+ 0x55, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0xA1, 0x2C,
+ 0xD6, 0x6D, 0x6D, 0xA1, 0x70, 0x28, 0xD5, 0xE6,
+ 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0x20, 0xE1,
+ 0x26, 0x84, 0x76, 0x73, 0x9C, 0x22, 0x4E, 0x35,
+ 0x8C, 0x7A, 0x4E, 0xDC, 0x8E, 0x7E, 0x3D, 0x88,
+ 0x20, 0x20, 0x20, 0x88, 0x2C, 0x90, 0x90, 0x95,
+ 0xA1, 0x2C, 0x55, 0x55, 0x2C, 0xD6, 0xD6, 0xD6,
+ 0x2C, 0x2C, 0xD6, 0x2A, 0x6D, 0x2C, 0x70, 0x28,
+ 0xD5, 0xE6, 0x70, 0x55, 0x95, 0xA1, 0x2C, 0xA1,
+ 0xBF, 0xA1, 0x95, 0xCB, 0xCB, 0x2C, 0xA1, 0xA1,
+ 0x95, 0x95, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C, 0x95,
+ 0xD6, 0x6D, 0xD6, 0x95, 0x94, 0x28, 0xE6, 0x70,
+ 0x55, 0x95, 0xA1, 0xA1, 0xA1, 0xD6, 0x20, 0x57,
+ 0xE4, 0xDF, 0x50, 0x3E, 0x22, 0x4E, 0x35, 0x8C,
+ 0x8C, 0x52, 0x52, 0x7A, 0x4E, 0x58, 0xD7, 0x20,
+ 0x20, 0x20, 0x20, 0x88, 0x2C, 0xCB, 0x55, 0x2C,
+ 0xA1, 0xA1, 0x95, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
+ 0x2C, 0x95, 0xA1, 0x6D, 0x6D, 0x95, 0x47, 0xA0,
+ 0xE6, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0xA1,
+ 0xD2, 0x95, 0x55, 0x90, 0x55, 0x2C, 0xD6, 0xA1,
+ 0x95, 0x95, 0xA1, 0xD6, 0xD6, 0x2C, 0x95, 0x2C,
+ 0xA1, 0x6D, 0xA1, 0x55, 0x94, 0x47, 0x94, 0xCB,
+ 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6, 0x59, 0xC8,
+ 0xE3, 0x76, 0x2D, 0x3E, 0x22, 0x4E, 0x8C, 0x35,
+ 0x52, 0x52, 0xEE, 0x3A, 0x4D, 0xED, 0x24, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x28, 0xCB, 0x55, 0x2C,
+ 0xD6, 0xA1, 0x95, 0x95, 0xA1, 0xD6, 0xA1, 0x2C,
+ 0x95, 0x2C, 0xD6, 0x6D, 0xA1, 0x55, 0x94, 0xE6,
+ 0x70, 0xCB, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
+ 0xD0, 0x94, 0x94, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
+ 0x55, 0x95, 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x2C,
+ 0xA1, 0xD6, 0x2C, 0x70, 0x94, 0x94, 0x94, 0x94,
+ 0x70, 0x55, 0xA1, 0xD6, 0xA1, 0xD6, 0x88, 0x77,
+ 0x38, 0xC4, 0x3E, 0x69, 0x4E, 0x35, 0x8C, 0xEE,
+ 0x35, 0x89, 0x30, 0x30, 0x4A, 0x48, 0x3C, 0x20,
+ 0x20, 0x88, 0x20, 0x20, 0xD8, 0x2C, 0x55, 0x2C,
+ 0xD6, 0xA1, 0x95, 0x95, 0x2C, 0xD6, 0xA1, 0x2C,
+ 0x95, 0x2C, 0xA1, 0xD6, 0x2C, 0x90, 0x94, 0x47,
+ 0x94, 0x94, 0x70, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+ 0x95, 0x28, 0x47, 0x90, 0x95, 0x2C, 0xA1, 0x2C,
+ 0x95, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C,
+ 0xA1, 0xA1, 0x55, 0x70, 0x94, 0x47, 0x94, 0x94,
+ 0x70, 0x2C, 0xD6, 0xD6, 0x2C, 0xA1, 0x43, 0x98,
+ 0x54, 0x48, 0x3E, 0x22, 0x35, 0xEE, 0xEE, 0x9C,
+ 0x4D, 0x45, 0x75, 0x4A, 0xDF, 0x7B, 0x3D, 0x20,
+ 0xD8, 0x28, 0x2B, 0x88, 0x20, 0x95, 0x95, 0x2C,
+ 0xA1, 0x2C, 0x55, 0x55, 0x2C, 0xA1, 0xD6, 0xA1,
+ 0x2C, 0x95, 0xA1, 0x2C, 0x55, 0x70, 0x94, 0x94,
+ 0x94, 0x94, 0x70, 0x95, 0xD6, 0xD6, 0x2C, 0x95,
+ 0x70, 0x28, 0x47, 0x55, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x95, 0x95, 0x95, 0xA1, 0xA1, 0xA1, 0x95, 0x55,
+ 0x95, 0x95, 0x55, 0x70, 0x70, 0x70, 0x94, 0x70,
+ 0x55, 0xD6, 0x6D, 0xD6, 0x95, 0x2C, 0x20, 0x43,
+ 0xBB, 0xC8, 0x36, 0x30, 0x30, 0x38, 0x45, 0x6E,
+ 0xE3, 0x75, 0x78, 0x37, 0xBD, 0xD9, 0x3F, 0x20,
+ 0x88, 0xD5, 0x70, 0xB1, 0x88, 0xA0, 0x95, 0x2C,
+ 0x2C, 0xA1, 0x95, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
+ 0x2C, 0x55, 0x95, 0x2C, 0x55, 0x70, 0x70, 0x70,
+ 0x94, 0x70, 0x55, 0xD6, 0x6D, 0x6D, 0x95, 0x55,
+ 0x94, 0x47, 0x70, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x55,
+ 0x55, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
+ 0xA1, 0x6D, 0x4B, 0xD6, 0x55, 0xD6, 0x20, 0xD8,
+ 0xD6, 0x67, 0xDA, 0x4D, 0xED, 0x62, 0x78, 0x78,
+ 0x23, 0x84, 0x67, 0xF5, 0x4B, 0xBF, 0x90, 0x88,
+ 0x88, 0x2B, 0x47, 0x99, 0x20, 0x43, 0xD6, 0x2C,
+ 0x2C, 0xA1, 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1,
+ 0x95, 0x95, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x95, 0xD6, 0x6D, 0xBF, 0xD6, 0x55, 0xCB,
+ 0x55, 0x55, 0x55, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0x2C, 0x2C, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x95,
+ 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0x6D, 0x2A, 0x2A, 0xA1, 0x55, 0x55, 0x20, 0xD8,
+ 0x6D, 0xAB, 0x96, 0x7E, 0x64, 0x53, 0x36, 0x36,
+ 0xC6, 0x63, 0x6D, 0xD0, 0x6B, 0xE5, 0xA3, 0x7D,
+ 0x20, 0x88, 0x80, 0x88, 0x20, 0x20, 0xC9, 0xA1,
+ 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0xA1, 0xA1, 0xA1,
+ 0x95, 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0xA1, 0x6D, 0xBF, 0x6D, 0xA1, 0x55, 0x55,
+ 0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0xA1, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x95,
+ 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xD6,
+ 0x6D, 0x6D, 0xA1, 0x55, 0x2C, 0xD8, 0x20, 0xB1,
+ 0xA3, 0x4B, 0x6D, 0xD9, 0xA7, 0x6C, 0xAF, 0xB2,
+ 0x6D, 0x2A, 0x83, 0x42, 0xE5, 0xE5, 0x65, 0x2C,
+ 0x20, 0x20, 0x88, 0x20, 0x20, 0x20, 0x88, 0x95,
+ 0x2C, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x95, 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1,
+ 0xD6, 0xD6, 0x6D, 0x6D, 0xA1, 0x55, 0xCB, 0x55,
+ 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x95, 0x2C,
+ 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95,
+ 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xA1,
+ 0xA1, 0x2C, 0x55, 0x55, 0x28, 0x88, 0x43, 0x2A,
+ 0xE5, 0xA3, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+ 0xBF, 0xA3, 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0x65,
+ 0xB1, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xD8,
+ 0xD6, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x2C,
+ 0x95, 0x95, 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1,
+ 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x90, 0x90, 0x55,
+ 0x90, 0xCB, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95,
+ 0x2C, 0x2C, 0x95, 0x55, 0x95, 0x95, 0x95, 0x55,
+ 0x55, 0xCB, 0x55, 0x2C, 0x95, 0x95, 0x95, 0x95,
+ 0x55, 0x90, 0x90, 0x90, 0xE1, 0x43, 0x28, 0xE5,
+ 0xE5, 0x65, 0xD0, 0x6D, 0x6D, 0x6D, 0x2A, 0xD2,
+ 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xD6, 0x20, 0x20, 0x20, 0x20, 0x20, 0x88, 0x88,
+ 0xD5, 0x2C, 0x2C, 0x2C, 0x95, 0x55, 0x95, 0x95,
+ 0x95, 0x55, 0x55, 0xCB, 0x55, 0x95, 0x2C, 0x95,
+ 0x95, 0x95, 0x55, 0x90, 0x70, 0x70, 0x70, 0x90,
+ 0x70, 0x70, 0xCB, 0x55, 0x55, 0x95, 0x95, 0x95,
+ 0x2C, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0xCB,
+ 0x70, 0x70, 0x70, 0xCB, 0x90, 0x90, 0x70, 0x94,
+ 0x94, 0x94, 0x2C, 0x80, 0x20, 0xE1, 0xA3, 0xE5,
+ 0xE5, 0xE5, 0x42, 0xEC, 0xD0, 0x83, 0xA3, 0x65,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0x65, 0x7D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x88, 0x2C, 0x95, 0x95, 0x95, 0x55, 0x55, 0x55,
+ 0x55, 0xCB, 0x70, 0x70, 0x90, 0x90, 0x90, 0x90,
+ 0x70, 0x94, 0x94, 0x94, 0x70, 0x70, 0x70, 0x70,
+ 0x70, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95, 0x95,
+ 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x90, 0x70, 0x90, 0x55, 0x55, 0xCB, 0x70, 0x94,
+ 0x94, 0x95, 0xD8, 0x20, 0x88, 0x70, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0x47, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xE1, 0x6D, 0x2C, 0x95, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x90, 0x70, 0x70, 0x55, 0x55, 0xCB,
+ 0x70, 0x94, 0x94, 0x94, 0x70, 0x90, 0x70, 0x94,
+ 0x55, 0x2C, 0x2C, 0x2C, 0x95, 0x2C, 0x95, 0x95,
+ 0x2C, 0x2C, 0x2C, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0xCB, 0xCB, 0x95, 0x2C, 0x2C, 0x95, 0x55, 0x90,
+ 0x55, 0x99, 0x20, 0x20, 0xE1, 0xA3, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xD6, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x2B, 0x6D, 0x95, 0x95, 0x55, 0x55,
+ 0x55, 0x55, 0xCB, 0x55, 0x95, 0x2C, 0x2C, 0x95,
+ 0x55, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x90, 0x70,
+ 0x2C, 0xD6, 0xD6, 0x2C, 0x2C, 0x95, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95,
+ 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0x55, 0x95,
+ 0xE6, 0x88, 0x20, 0x20, 0x3F, 0xA3, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0x42, 0xA3, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x88, 0x2B, 0xD6, 0x95, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x95,
+ 0x55, 0x55, 0x95, 0x95, 0x95, 0x55, 0x55, 0x55,
+ 0xA1, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x2C,
+ 0x2C, 0x2C, 0x95, 0x2C, 0x95, 0x95, 0x55, 0x95,
+ 0x95, 0x2C, 0x2C, 0x2C, 0x95, 0xCB, 0xCB, 0x94,
+ 0x20, 0x20, 0x20, 0x20, 0xE6, 0x83, 0x65, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0x6B, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0x6B, 0xA3, 0xD2,
+ 0xD2, 0x6B, 0xC9, 0x20, 0x20, 0x88, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x88, 0x8A, 0xA1, 0x95, 0x95,
+ 0x95, 0x55, 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0xCB,
+ 0xCB, 0x55, 0x95, 0x95, 0x95, 0x55, 0x55, 0x95,
+ 0x6D, 0x6D, 0x6D, 0xD6, 0xA1, 0x2C, 0x2C, 0x95,
+ 0x2C, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x55, 0x70, 0x70, 0x2C, 0x80,
+ 0x88, 0x20, 0x20, 0x80, 0x94, 0xD6, 0x32, 0x6B,
+ 0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xA3, 0xD2, 0xD0, 0xBF, 0x2A,
+ 0x2A, 0xD0, 0x6D, 0x34, 0x20, 0xE1, 0x88, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x88, 0xA1, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x55, 0x70, 0x70,
+ 0x70, 0x90, 0xCB, 0xCB, 0xCB, 0x95, 0x95, 0x2C,
+ 0xD0, 0x6D, 0xD6, 0xD6, 0xA1, 0xA1, 0xA1, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x55, 0x95,
+ 0x95, 0x2C, 0x95, 0x55, 0xCB, 0xCB, 0x95, 0x88,
+ 0x20, 0x20, 0x88, 0xD8, 0x2C, 0xD1, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x65, 0x65, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0xEC,
+ 0xBF, 0x2A, 0xEC, 0x95, 0x20, 0x34, 0x2B, 0xE1,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x99, 0x95, 0x55,
+ 0x55, 0x55, 0x95, 0x95, 0x95, 0x55, 0xCB, 0xCB,
+ 0x55, 0x55, 0xCB, 0xCB, 0xCB, 0x55, 0x95, 0x95,
+ 0x32, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
+ 0xA1, 0x95, 0x95, 0x95, 0x55, 0xCB, 0xCB, 0x55,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x55, 0x99, 0x20,
+ 0xE1, 0xE1, 0x43, 0x47, 0x6B, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0x42, 0xEC, 0xBF, 0xA3, 0x8A, 0x20, 0x88, 0xD8,
+ 0x2B, 0x20, 0x20, 0x20, 0x88, 0x88, 0x2C, 0xCB,
+ 0xCB, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x55, 0x95,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x95,
+ 0x6D, 0x55, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x95,
+ 0x2C, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0xA1, 0x34, 0x20,
+ 0xC9, 0x20, 0xE1, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xA3, 0x83, 0x6D, 0x20, 0x88, 0x88,
+ 0x2B, 0x34, 0x20, 0x20, 0x20, 0x88, 0xD5, 0x55,
+ 0x55, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
+ 0x95, 0x95, 0x95, 0x95, 0x55, 0x55, 0x95, 0x95,
+ 0x2C, 0x55, 0xCB, 0x55, 0xCB, 0x55, 0x55, 0x95,
+ 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x95, 0x95, 0x55, 0x95, 0x2C, 0x20, 0xD8,
+ 0xE1, 0x20, 0x70, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x65, 0xA3, 0x92, 0x43, 0x7D,
+ 0xD8, 0xC9, 0x88, 0x20, 0x20, 0x20, 0x43, 0xD6,
+ 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x55, 0x95, 0x2C,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95, 0x2C,
+ 0xA1, 0x55, 0x55, 0x55, 0x55, 0x95, 0x95, 0x55,
+ 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0xA1, 0x2C,
+ 0xA1, 0x2C, 0x2C, 0x95, 0x2C, 0x99, 0x88, 0xB1,
+ 0x20, 0xD8, 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x34, 0x8A,
+ 0xC9, 0x34, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x90,
+ 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x95, 0x95, 0x2C,
+ 0x2C, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0xD6, 0x2C, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x55, 0xCB, 0x55, 0x2C, 0x2C, 0xA1, 0x2C, 0xA1,
+ 0xA1, 0xA1, 0x2C, 0x2C, 0x6D, 0x43, 0xD8, 0x80,
+ 0x88, 0xCB, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x32, 0x80, 0xE1,
+ 0x80, 0x20, 0xB1, 0x20, 0x20, 0x20, 0x20, 0xC9,
+ 0xD6, 0xA1, 0xA1, 0xA1, 0x2C, 0xA1, 0x2C, 0x2C,
+ 0x2C, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95, 0x55,
+ 0xD6, 0x95, 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x2C,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0x95, 0xCB, 0x20, 0xC9, 0x20,
+ 0xE1, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xD8, 0x20,
+ 0x20, 0x20, 0x2B, 0x43, 0x20, 0x20, 0x20, 0x88,
+ 0xD6, 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x55,
+ 0x95, 0x55, 0x55, 0xCB, 0x55, 0xCB, 0xCB, 0x55,
+ 0x2C, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0x95,
+ 0x55, 0x95, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95,
+ 0x55, 0xCB, 0x70, 0xCB, 0xC9, 0x80, 0x2B, 0x20,
+ 0xA0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x92, 0x20,
+ 0x20, 0x20, 0xE1, 0xD8, 0x20, 0x20, 0x20, 0x20,
+ 0x95, 0x95, 0x55, 0xCB, 0x90, 0x90, 0x70, 0x90,
+ 0x90, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x55, 0x95,
+ 0x95, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x95, 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x55,
+ 0x90, 0x47, 0xA0, 0x55, 0x20, 0x2B, 0x43, 0x88,
+ 0x6D, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x28, 0x20,
+ 0x20, 0x20, 0xE1, 0xE1, 0x20, 0x20, 0x20, 0x20,
+ 0x28, 0x55, 0x90, 0x47, 0xA0, 0x47, 0x94, 0x70,
+ 0x55, 0x95, 0x95, 0x55, 0xCB, 0x55, 0x55, 0x2C,
+ 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x55,
+ 0x94, 0xE6, 0x70, 0x2B, 0x88, 0x2B, 0x88, 0xE1,
+ 0x65, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x47, 0x20,
+ 0x20, 0x20, 0xE1, 0x34, 0x20, 0x20, 0x20, 0x20,
+ 0xB1, 0x95, 0x94, 0xE6, 0xA0, 0x47, 0x70, 0x55,
+ 0x2C, 0xA1, 0x2C, 0x55, 0x90, 0xCB, 0x2C, 0xD6,
+ 0x6D, 0xA1, 0x2C, 0x95, 0x95, 0xA1, 0x2C, 0xA1,
+ 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x55,
+ 0x70, 0xE6, 0x70, 0x20, 0x20, 0x7D, 0x20, 0x8A,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x65, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x94, 0x20,
+ 0x20, 0x20, 0xD8, 0x88, 0x20, 0x20, 0x20, 0x20,
+ 0xD8, 0x2C, 0x94, 0x47, 0x47, 0x90, 0x95, 0x95,
+ 0xA1, 0x6D, 0xA1, 0x90, 0x94, 0x55, 0x2C, 0xD6,
+ 0xD0, 0xA1, 0x95, 0x95, 0x2C, 0x2C, 0xA1, 0x2C,
+ 0x95, 0x95, 0x55, 0x55, 0x55, 0x95, 0x2C, 0x2C,
+ 0xCB, 0x95, 0xD8, 0x20, 0x20, 0xB1, 0x88, 0x28,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE2, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
+ 0x20, 0x20, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x88, 0xD6, 0x55, 0x47, 0x94, 0x55, 0x2C, 0xA1,
+ 0xA1, 0xD6, 0x95, 0x94, 0x94, 0x55, 0xD6, 0x6D,
+ 0xBF, 0x95, 0x90, 0xCB, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x55, 0x95, 0xCB, 0x90, 0x90, 0x95, 0x2C, 0x95,
+ 0x90, 0x70, 0x20, 0x20, 0x34, 0x8A, 0x20, 0x94,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
+ 0x20, 0x88, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x88, 0xD6, 0xCB, 0x47, 0x94, 0x55, 0xA1, 0xD6,
+ 0xD6, 0x2C, 0xCB, 0x47, 0x70, 0xA1, 0x6D, 0x2A,
+ 0x95, 0x47, 0x47, 0x70, 0x95, 0xA1, 0x2C, 0x95,
+ 0x55, 0x55, 0x90, 0x90, 0x55, 0x55, 0x55, 0x90,
+ 0x47, 0xD5, 0x20, 0x20, 0x80, 0xD5, 0x43, 0xCB,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
+ 0x20, 0x80, 0x34, 0x20, 0x20, 0x20, 0x88, 0x20,
+ 0x20, 0x2C, 0x47, 0xE6, 0x70, 0x2C, 0xD6, 0xD6,
+ 0xA1, 0x2C, 0x55, 0xCB, 0x95, 0xA1, 0x6D, 0xD6,
+ 0x90, 0x47, 0x47, 0x90, 0x2C, 0xA1, 0x2C, 0x95,
+ 0x55, 0x55, 0x90, 0x90, 0x55, 0x55, 0x55, 0x70,
+ 0x94, 0x8A, 0x20, 0x88, 0x88, 0xE1, 0xD8, 0x95,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE2, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x47, 0x20,
+ 0x43, 0x7D, 0x43, 0x80, 0x88, 0x20, 0x20, 0x20,
+ 0x88, 0xCB, 0x94, 0x70, 0x55, 0xA1, 0xD6, 0xD6,
+ 0xA1, 0x2C, 0x2C, 0x95, 0xA1, 0xA1, 0xD6, 0xA1,
+ 0x94, 0xE6, 0x47, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+ 0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0xCB,
+ 0x55, 0xA0, 0x43, 0x86, 0x86, 0x43, 0xD8, 0xCB,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x3F, 0x80,
+ 0xD8, 0x80, 0x88, 0x34, 0xD8, 0x2B, 0xD8, 0x20,
+ 0x99, 0x90, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6,
+ 0xA1, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C,
+ 0x55, 0x55, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x95, 0x44, 0xBC, 0x3E, 0x5D, 0xD3, 0x79, 0x92,
+ 0xA3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x65, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0x9A, 0x34,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x99, 0xE1,
+ 0x70, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xD6, 0xA1,
+ 0x2C, 0x95, 0x55, 0x55, 0x95, 0x95, 0x95, 0x95,
+ 0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0x95,
+ 0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55, 0x2C, 0x2C,
+ 0x32, 0x9D, 0xEB, 0x5D, 0x69, 0x49, 0x84, 0xF0,
+ 0xB1, 0xEC, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xC1, 0x4E, 0x21, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0xC9, 0xD8,
+ 0xBB, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
+ 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C,
+ 0x55, 0xCB, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x55,
+ 0x90, 0x70, 0x90, 0x55, 0x95, 0x95, 0x6D, 0xD0,
+ 0xC2, 0x48, 0x6A, 0x49, 0x69, 0x82, 0x5D, 0x2F,
+ 0x59, 0x7D, 0xBF, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xEA, 0xC7, 0x7E, 0x66,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x43, 0x5A,
+ 0x46, 0x27, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x95,
+ 0x95, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1, 0x95, 0x55,
+ 0x94, 0x94, 0x2C, 0x2A, 0x72, 0x3B, 0x56, 0xDD,
+ 0xDF, 0x29, 0x5D, 0x49, 0x89, 0x5D, 0x3E, 0x69,
+ 0x93, 0x66, 0x34, 0xA1, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x65, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xEA, 0x3E, 0x5A, 0x66,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x5B, 0x73,
+ 0x89, 0x4C, 0xBF, 0x2C, 0x95, 0x2C, 0x2C, 0x95,
+ 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
+ 0x2C, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0x2C, 0xCB,
+ 0x70, 0x55, 0xE7, 0x60, 0x4A, 0x48, 0xCD, 0x4A,
+ 0x29, 0x73, 0x5D, 0x82, 0x49, 0x49, 0x49, 0x49,
+ 0x3A, 0x57, 0x88, 0x88, 0x70, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0x42, 0x73, 0x50, 0xBE, 0x79,
+ 0x20, 0x20, 0x20, 0x20, 0x66, 0xCC, 0x37, 0x9C,
+ 0x3E, 0xCE, 0xBF, 0x95, 0x95, 0x95, 0x2C, 0x95,
+ 0x95, 0x55, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0x55,
+ 0xA1, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x55, 0x94,
+ 0x94, 0xE8, 0x60, 0xC4, 0x3E, 0x2D, 0x2D, 0x2D,
+ 0x33, 0x5D, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x89, 0xAA, 0x59, 0x20, 0x20, 0x28, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xEC, 0x4A, 0x2D, 0x50, 0x78, 0x2E,
+ 0x57, 0x51, 0xF0, 0x57, 0x31, 0x4D, 0x50, 0x2D,
+ 0x5D, 0xF2, 0xA1, 0x2C, 0x95, 0x95, 0x55, 0x55,
+ 0x90, 0x90, 0x70, 0x90, 0xCB, 0x55, 0x55, 0x55,
+ 0x6D, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0x55, 0x94,
+ 0x70, 0xB9, 0x75, 0x50, 0x3E, 0x49, 0x49, 0x49,
+ 0x5D, 0x82, 0x49, 0x49, 0x82, 0x49, 0x49, 0x49,
+ 0x89, 0x69, 0x4F, 0x20, 0x20, 0x20, 0x8A, 0x42,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0x83, 0x4A, 0x3A, 0x50, 0x62, 0x23,
+ 0x81, 0xB8, 0xB8, 0xE9, 0x5F, 0x29, 0x33, 0x5D,
+ 0x5D, 0x73, 0xE8, 0xCB, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xD6, 0xA1, 0xA1, 0xA1, 0xA1, 0x55, 0x70, 0x70,
+ 0xCB, 0x68, 0x75, 0x50, 0x82, 0x49, 0x49, 0x49,
+ 0x5D, 0x49, 0x49, 0x5D, 0x49, 0x49, 0x5D, 0x82,
+ 0x69, 0x5D, 0x25, 0xF0, 0x20, 0x20, 0x20, 0xE1,
+ 0x2A, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0x4B, 0xF4, 0xDF, 0x50, 0x73, 0x76, 0x48,
+ 0x75, 0xDF, 0x75, 0x62, 0xC4, 0x33, 0x82, 0x49,
+ 0x5D, 0x5D, 0xA8, 0xF5, 0x55, 0x55, 0x55, 0x55,
+ 0x2C, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
+ 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0xCB, 0x70, 0x70,
+ 0x95, 0x83, 0x5F, 0xEA, 0x2D, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x5D, 0x49, 0x22, 0x5A, 0x79, 0x20, 0x20, 0x20,
+ 0x80, 0xD2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0x65, 0xD0, 0x63, 0x5F, 0x29, 0x2D, 0x2D, 0xEA,
+ 0x29, 0x29, 0x76, 0x50, 0x2D, 0x82, 0x49, 0x49,
+ 0x3E, 0x49, 0x5C, 0xB0, 0xBA, 0x95, 0x55, 0x55,
+ 0x2C, 0xA1, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C,
+ 0xA1, 0x95, 0x95, 0x55, 0xCB, 0x70, 0x70, 0x55,
+ 0x2C, 0x83, 0x60, 0x76, 0x5D, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x5D, 0x89, 0xDC, 0x8B, 0x20, 0x20, 0x20,
+ 0x20, 0x95, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE2, 0x32, 0x85, 0xE3, 0x29, 0x2D, 0x33, 0x2D,
+ 0x2D, 0x2D, 0x6A, 0x2D, 0x33, 0x5D, 0x49, 0x82,
+ 0x49, 0x49, 0x82, 0x73, 0x5C, 0x9E, 0x2C, 0x55,
+ 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x95,
+ 0x2C, 0x95, 0x55, 0xCB, 0x90, 0x90, 0xCB, 0x95,
+ 0x2C, 0x6D, 0x41, 0x6F, 0x3E, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x82, 0x3E, 0x4E, 0x38, 0xCA, 0x20, 0x20,
+ 0x20, 0x55, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x65,
+ 0x42, 0xA0, 0xD4, 0xE3, 0x29, 0x2D, 0x82, 0x5D,
+ 0x5D, 0x82, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x3E, 0x49, 0x49, 0x49, 0x5C, 0x56, 0xD6,
+ 0xA1, 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x55, 0x95,
+ 0xA1, 0x55, 0x90, 0x70, 0x94, 0x70, 0x95, 0x2C,
+ 0x2C, 0xD6, 0xDD, 0x6F, 0x33, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x5D, 0x5D, 0x82, 0x69, 0x22, 0x62, 0x80, 0x34,
+ 0x94, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0xE5, 0x65, 0x6B,
+ 0xD5, 0x88, 0x5B, 0xE3, 0x29, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x49, 0x49, 0x49, 0x82,
+ 0x49, 0x49, 0x89, 0x49, 0x82, 0x49, 0x71, 0xBA,
+ 0x6D, 0x6D, 0xA1, 0x95, 0x55, 0xCB, 0x55, 0x55,
+ 0x2C, 0x55, 0x70, 0x70, 0x70, 0x90, 0x95, 0xA1,
+ 0x2C, 0xA1, 0x41, 0x76, 0x5D, 0x5D, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x5D, 0x82, 0x5D, 0x89, 0x5E, 0x96, 0x65,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0x65, 0xEC, 0xB1,
+ 0x20, 0x20, 0xCA, 0x23, 0x29, 0x33, 0x49, 0x5D,
+ 0x49, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49, 0x82,
+ 0x49, 0x82, 0x5D, 0x5D, 0x5D, 0x2D, 0x5C, 0x8F,
+ 0x6D, 0xD6, 0x2C, 0x55, 0x90, 0xCB, 0x95, 0x95,
+ 0x95, 0x55, 0x70, 0x94, 0x70, 0x55, 0x2C, 0xA1,
+ 0x95, 0xE8, 0x5F, 0x76, 0x33, 0x5D, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x3E, 0x9C, 0x2F, 0x68,
+ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+ 0x65, 0xE5, 0x65, 0xE5, 0x6B, 0x90, 0x80, 0x20,
+ 0x20, 0x20, 0x4F, 0x81, 0x50, 0x3E, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x69, 0x69, 0x49, 0x5D, 0x2D, 0xC4, 0x46, 0xA3,
+ 0xD6, 0x55, 0x70, 0x94, 0x94, 0x70, 0xCB, 0x55,
+ 0x55, 0xCB, 0x70, 0x47, 0x70, 0x95, 0xA1, 0xA1,
+ 0x95, 0xBD, 0x75, 0x2D, 0x33, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x5D, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x5D, 0x2D, 0xB5, 0xDB,
+ 0xD6, 0x65, 0xE5, 0x65, 0xE5, 0xE5, 0x65, 0xE5,
+ 0x65, 0x65, 0x6B, 0x95, 0x2B, 0x88, 0x20, 0x20,
+ 0x20, 0x20, 0x8B, 0x81, 0x29, 0x33, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x3E, 0x3E, 0x5E, 0x41, 0x97, 0x27, 0xD6,
+ 0x55, 0x94, 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x55,
+ 0x94, 0x70, 0x94, 0x94, 0x70, 0x55, 0xA1, 0x2C,
+ 0x6D, 0xC5, 0x39, 0x6A, 0x5D, 0x5D, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x3E, 0xEA, 0x30, 0x77,
+ 0xE1, 0xC9, 0x94, 0x2C, 0xD6, 0xD6, 0xA1, 0x55,
+ 0x47, 0x9F, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x80, 0x91, 0x81, 0x6A, 0x2D, 0x49, 0x49,
+ 0x49, 0x5D, 0x5D, 0x49, 0x49, 0x5D, 0x5D, 0x82,
+ 0xEB, 0x4A, 0x41, 0xC2, 0x8F, 0xF5, 0xA1, 0x55,
+ 0x94, 0x28, 0xA0, 0x47, 0x70, 0x55, 0x95, 0x95,
+ 0x47, 0x70, 0x70, 0x94, 0x90, 0x95, 0xA1, 0x2C,
+ 0xE8, 0xA6, 0x39, 0x76, 0x50, 0x50, 0x2D, 0x2D,
+ 0x3E, 0x3E, 0x5D, 0x3E, 0x5D, 0x5D, 0x49, 0x82,
+ 0x49, 0x49, 0x49, 0x82, 0x82, 0x50, 0x75, 0xE0,
+ 0x57, 0x20, 0x88, 0x88, 0x20, 0x20, 0x88, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x79, 0x91, 0x81, 0x76, 0x33, 0x49, 0x49,
+ 0x5D, 0x82, 0x49, 0x49, 0x3E, 0x6A, 0xEA, 0x29,
+ 0xDF, 0x97, 0xBF, 0x6D, 0x6D, 0xD6, 0x55, 0x47,
+ 0x28, 0x28, 0x47, 0x70, 0x55, 0x95, 0x2C, 0x2C,
+ 0x95, 0x95, 0x55, 0x90, 0x90, 0x95, 0xA1, 0xA1,
+ 0xD6, 0x26, 0x45, 0x81, 0x5F, 0x30, 0x48, 0x6F,
+ 0x6F, 0x29, 0x29, 0x6A, 0x2D, 0x2D, 0x5D, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x2D, 0x76, 0x6E, 0x77,
+ 0x5B, 0x66, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x79, 0xA9, 0xB8, 0x39, 0x50, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x3E, 0x2D, 0x29, 0x76, 0xCD, 0x37,
+ 0xB9, 0xA1, 0xA1, 0x6D, 0x6D, 0x2C, 0x94, 0x28,
+ 0xD5, 0xE6, 0x70, 0x55, 0x95, 0xA1, 0x2C, 0xA1,
+ 0xBF, 0xA1, 0x95, 0xCB, 0x55, 0x95, 0xA1, 0x2C,
+ 0x95, 0x83, 0xDE, 0x87, 0xB6, 0xBE, 0x40, 0x6E,
+ 0x81, 0x81, 0x78, 0x78, 0x39, 0x6F, 0xEA, 0x2D,
+ 0x2D, 0x33, 0x33, 0x33, 0x76, 0x30, 0x64, 0x54,
+ 0x5B, 0x66, 0x20, 0x20, 0x66, 0x20, 0x88, 0x20,
+ 0x20, 0x20, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x88, 0x34, 0x8B, 0xF1, 0x23, 0x6F, 0x50, 0x2D,
+ 0x2D, 0x6A, 0x29, 0x6F, 0x78, 0x84, 0x9B, 0xD2,
+ 0x2C, 0x2C, 0xD6, 0x6D, 0x6D, 0x2C, 0x47, 0xA0,
+ 0xE6, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0xA1,
+ 0xD2, 0x95, 0x55, 0xCB, 0x55, 0x2C, 0xD6, 0xA1,
+ 0x95, 0x95, 0xA1, 0xD6, 0x6D, 0x6D, 0xBA, 0xF3,
+ 0x8D, 0x36, 0x74, 0x36, 0xF1, 0xB8, 0x23, 0x78,
+ 0x62, 0x4A, 0x29, 0x62, 0x23, 0xF1, 0x54, 0x31,
+ 0x57, 0x2B, 0x90, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C, 0xCB,
+ 0xE6, 0x7D, 0xCA, 0xB7, 0xB8, 0x75, 0x6F, 0x6F,
+ 0x76, 0x6F, 0x78, 0x81, 0x53, 0xBD, 0x6D, 0x2C,
+ 0x95, 0x95, 0xA1, 0x6D, 0xA1, 0x55, 0x94, 0xE6,
+ 0x70, 0xCB, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
+ 0xD0, 0x94, 0x94, 0x90, 0x95, 0x2C, 0xD6, 0xA1,
+ 0x95, 0x55, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x2C,
+ 0xD6, 0x68, 0xAB, 0x6C, 0xA4, 0x77, 0x77, 0xAD,
+ 0x40, 0x53, 0x6E, 0x40, 0xB7, 0x54, 0x31, 0xD7,
+ 0xAC, 0xD6, 0x55, 0x55, 0x95, 0x95, 0x95, 0x55,
+ 0x95, 0x2C, 0x2C, 0xA1, 0x95, 0x95, 0x2C, 0xA1,
+ 0x6D, 0xD2, 0x7C, 0x54, 0xAD, 0x40, 0x6E, 0x81,
+ 0x81, 0x6E, 0x36, 0xDA, 0xE8, 0xD6, 0xD6, 0x2C,
+ 0x2C, 0x2C, 0xA1, 0xD6, 0x95, 0x90, 0x94, 0x47,
+ 0x94, 0x94, 0x70, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+ 0x95, 0x28, 0x47, 0x90, 0x95, 0x2C, 0xA1, 0x2C,
+ 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0xA1, 0x55, 0x70, 0x95, 0x2C, 0xB2, 0xB4,
+ 0xC3, 0xC3, 0x54, 0x54, 0xA9, 0x31, 0xCA, 0x2A,
+ 0x95, 0x90, 0x55, 0x95, 0x2C, 0xA1, 0x2C, 0x95,
+ 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xD6,
+ 0x6D, 0x2A, 0xB2, 0x4F, 0x31, 0x2E, 0xE0, 0xAD,
+ 0xB7, 0xC8, 0xB4, 0xF5, 0x2C, 0xA1, 0xA1, 0xA1,
+ 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0x70, 0x94, 0x94,
+ 0x94, 0x94, 0x70, 0x95, 0xD6, 0xD6, 0x2C, 0x95,
+ 0x94, 0x28, 0x47, 0xCB, 0x95, 0x2C, 0xA1, 0xA1,
+ 0x95, 0x55, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x95,
+ 0x95, 0x2C, 0x55, 0x70, 0x70, 0x70, 0x94, 0x2C,
+ 0x63, 0xBB, 0xA5, 0xD7, 0xCA, 0xB3, 0x6D, 0x2C,
+ 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x95, 0x95,
+ 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0xD6, 0x2C, 0x70, 0x95, 0xAC, 0xC0, 0xDB, 0xEF,
+ 0xEF, 0xA2, 0xE8, 0x95, 0x95, 0xA1, 0xD6, 0xA1,
+ 0x95, 0x55, 0x2C, 0x95, 0x55, 0x70, 0x70, 0x70,
+ 0x94, 0x70, 0x55, 0xD6, 0x6D, 0x6D, 0x95, 0x55,
+ 0x70, 0x47, 0x70, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x55,
+ 0x55, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95,
+ 0xA1, 0xF5, 0xBF, 0xBF, 0xA1, 0x95, 0x95, 0x95,
+ 0x95, 0x55, 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x95,
+ 0x95, 0x95, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0xA1,
+ 0x2C, 0x55, 0x70, 0x94, 0x90, 0x2C, 0x6D, 0x6D,
+ 0x6D, 0xA1, 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1,
+ 0x2C, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x95, 0xD6, 0x6D, 0xBF, 0xD6, 0x55, 0xCB,
+ 0x55, 0x55, 0x55, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0xA1, 0x95, 0x2C, 0xA1, 0xA1, 0xA1, 0x2C, 0x95,
+ 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+ 0x6D, 0xBF, 0x6D, 0x2C, 0x55, 0x55, 0x95, 0x95,
+ 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x95,
+ 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
+ 0xA1, 0x95, 0xCB, 0xCB, 0x95, 0x95, 0x2C, 0x2C,
+ 0x2C, 0xA1, 0x2C, 0x2C, 0x2C, 0xA1, 0xA1, 0x2C,
+ 0x2C, 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0xA1, 0x6D, 0xBF, 0x6D, 0xA1, 0x55, 0x55,
+ 0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x95,
+ 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xD6,
+ 0x6D, 0x6D, 0xA1, 0x95, 0xCB, 0x55, 0x95, 0x55,
+ 0x90, 0x70, 0xCB, 0xCB, 0x90, 0xCB, 0x95, 0x95,
+ 0x2C, 0x2C, 0xA1, 0xD6, 0xA1, 0xA1, 0xA1, 0xA1,
+ 0xA1, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0xA1, 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C,
+ 0x2C, 0x95, 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1,
+ 0xD6, 0xD6, 0x6D, 0x6D, 0xA1, 0x55, 0xCB, 0x55
};
+#endif
+
+#ifdef INCLUDE_LINUX_LOGOBW
+
unsigned char linux_logo_bw[] __initdata = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F,
diff --git a/include/linux/loop.h b/include/linux/loop.h
index 75f6cc704..d276911c0 100644
--- a/include/linux/loop.h
+++ b/include/linux/loop.h
@@ -1,6 +1,8 @@
#ifndef _LINUX_LOOP_H
#define _LINUX_LOOP_H
+#include <linux/kdev_t.h>
+
/*
* include/linux/loop.h
*
@@ -25,22 +27,25 @@ struct loop_device {
int lo_encrypt_key_size;
int lo_flags;
int (*transfer)(struct loop_device *, int cmd,
- char *raw_buf, char *loop_buf, int size);
+ char *raw_buf, char *loop_buf, int size,
+ int real_block);
char lo_name[LO_NAME_SIZE];
char lo_encrypt_key[LO_KEY_SIZE];
-#ifdef DES_AVAILABLE
- des_key_schedule lo_des_key;
- unsigned long lo_des_init[2];
-#endif
-#ifdef IDEA_AVAILABLE
- idea_key lo_idea_en_key;
- idea_key lo_idea_de_key;
-#endif
+ __u32 lo_init[2];
+ uid_t lo_key_owner; /* Who set the key */
+ int (*ioctl)(struct loop_device *, int cmd,
+ unsigned long arg);
+
struct file * lo_backing_file;
+ void *key_data;
+ char key_reserved[48]; /* for use by the filter modules */
};
typedef int (* transfer_proc_t)(struct loop_device *, int cmd,
- char *raw_buf, char *loop_buf, int size);
+ char *raw_buf, char *loop_buf, int size,
+ int real_block);
+
+#endif /* __KERNEL__ */
/*
* Loop flags
@@ -48,7 +53,20 @@ typedef int (* transfer_proc_t)(struct loop_device *, int cmd,
#define LO_FLAGS_DO_BMAP 0x00000001
#define LO_FLAGS_READ_ONLY 0x00000002
-#endif /* __KERNEL__ */
+/*
+ * Note that this structure gets the wrong offsets when directly used
+ * from a glibc program, because glibc has a 32bit dev_t.
+ * Prevent people from shooting in their own foot.
+ */
+#if __GLIBC__ >= 2 && !defined(dev_t)
+#error "Wrong dev_t in loop.h"
+#endif
+
+/*
+ * This uses kdev_t because glibc currently has no appropiate
+ * conversion version for the loop ioctls.
+ * The situation is very unpleasant
+ */
struct loop_info {
int lo_number; /* ioctl r/o */
@@ -66,15 +84,40 @@ struct loop_info {
};
/*
- * Loop encryption types --- LO_CRYPT_IDEA isn't supported yet
+ * Loop filter types
*/
-#define LO_CRYPT_NONE 0
-#define LO_CRYPT_XOR 1
-#define LO_CRYPT_DES 2
-#define LO_CRYPT_IDEA 3
-#define MAX_LO_CRYPT 4
+#define LO_CRYPT_NONE 0
+#define LO_CRYPT_XOR 1
+#define LO_CRYPT_DES 2
+#define LO_CRYPT_FISH2 3 /* Brand new Twofish encryption */
+#define LO_CRYPT_BLOW 4
+#define LO_CRYPT_CAST128 5
+#define LO_CRYPT_IDEA 6
+#define LO_CRYPT_DUMMY 9
+#define LO_CRYPT_SKIPJACK 10
+#define MAX_LO_CRYPT 20
+#ifdef __KERNEL__
+/* Support for loadable transfer modules */
+struct loop_func_table {
+ int number; /* filter type */
+ int (*transfer)(struct loop_device *lo, int cmd,
+ char *raw_buf, char *loop_buf, int size,
+ int real_block);
+ int (*init)(struct loop_device *, struct loop_info *);
+ /* release is called from loop_unregister_transfer or clr_fd */
+ int (*release)(struct loop_device *);
+ int (*ioctl)(struct loop_device *, int cmd, unsigned long arg);
+ /* lock and unlock manage the module use counts */
+ void (*lock)(struct loop_device *);
+ void (*unlock)(struct loop_device *);
+};
+
+int loop_register_transfer(struct loop_func_table *funcs);
+int loop_unregister_transfer(int number);
+
+#endif
/*
* IOCTL commands --- we will commandeer 0x4C ('L')
*/
diff --git a/include/linux/lp.h b/include/linux/lp.h
index 937df9386..a60d29860 100644
--- a/include/linux/lp.h
+++ b/include/linux/lp.h
@@ -25,10 +25,9 @@
#define LP_NOPA 0x0010
#define LP_ERR 0x0020
#define LP_ABORT 0x0040
-#ifdef LP_NEED_CAREFUL
-#define LP_CAREFUL 0x0080
-#endif
+#define LP_CAREFUL 0x0080 /* obsoleted -arca */
#define LP_ABORTOPEN 0x0100
+#define LP_TRUST_IRQ 0x0200
/* timeout for each character. This is relative to bus cycles -- it
* is the count in a busy loop. THIS IS THE VALUE TO CHANGE if you
@@ -41,13 +40,10 @@
#define LP_INIT_CHAR 1000
/* The parallel port specs apparently say that there needs to be
- * a .5usec wait before and after the strobe. Since there are wildly
- * different computers running linux, I can't come up with a perfect
- * value, but since it worked well on most printers before without,
- * I'll initialize it to 0.
+ * a .5usec wait before and after the strobe.
*/
-#define LP_INIT_WAIT 0
+#define LP_INIT_WAIT 1
/* This is the amount of time that the driver waits for the printer to
* catch up when the printer's buffer appears to be filled. If you
@@ -70,11 +66,10 @@
or 0 for polling (no IRQ) */
#define LPGETIRQ 0x0606 /* get the current IRQ number */
#define LPWAIT 0x0608 /* corresponds to LP_INIT_WAIT */
-#ifdef LP_NEED_CAREFUL
+/* NOTE: LPCAREFUL is obsoleted and it' s always the default right now -arca */
#define LPCAREFUL 0x0609 /* call with TRUE arg to require out-of-paper, off-
line, and error indicators good on all writes,
FALSE to ignore them. Default is ignore. */
-#endif
#define LPABORTOPEN 0x060a /* call with TRUE arg to abort open() on error,
FALSE to ignore error. Default is ignore. */
#define LPGETSTATUS 0x060b /* return LP_S(minor) */
@@ -83,6 +78,7 @@
#define LPGETSTATS 0x060d /* get statistics (struct lp_stats) */
#endif
#define LPGETFLAGS 0x060e /* get status flags */
+#define LPTRUSTIRQ 0x060f /* set/unset the LP_TRUST_IRQ flag */
/* timeout for printk'ing a timeout, in jiffies (100ths of a second).
This is also used for re-checking error conditions if LP_ABORT is
@@ -96,7 +92,7 @@
#define LP_TIME(minor) lp_table[(minor)].time /* wait time */
#define LP_WAIT(minor) lp_table[(minor)].wait /* strobe wait */
#define LP_IRQ(minor) lp_table[(minor)].dev->port->irq /* interrupt # */
- /* 0 means polled */
+ /* PARPORT_IRQ_NONE means polled */
#ifdef LP_STATS
#define LP_STAT(minor) lp_table[(minor)].stats /* statistics area */
#endif
@@ -117,7 +113,7 @@ struct lp_stats {
struct lp_struct {
struct pardevice *dev;
- int flags;
+ unsigned long flags;
unsigned int chars;
unsigned int time;
unsigned int wait;
diff --git a/include/linux/lp_m68k.h b/include/linux/lp_m68k.h
index f87bf4eff..cddecc98d 100644
--- a/include/linux/lp_m68k.h
+++ b/include/linux/lp_m68k.h
@@ -128,7 +128,7 @@ extern struct lp_struct *lp_table[MAX_LP];
extern unsigned int lp_irq;
void lp_interrupt(int dev);
-int lp_init(void);
+int lp_m68k_init(void);
int register_parallel(struct lp_struct *, int);
void unregister_parallel(int);
diff --git a/include/linux/major.h b/include/linux/major.h
index 83c3a7f21..cdff8ea74 100644
--- a/include/linux/major.h
+++ b/include/linux/major.h
@@ -28,7 +28,7 @@
#define LP_MAJOR 6
#define VCS_MAJOR 7
#define LOOP_MAJOR 7
-#define SCSI_DISK_MAJOR 8
+#define SCSI_DISK0_MAJOR 8
#define SCSI_TAPE_MAJOR 9
#define MD_MAJOR 9
#define MISC_MAJOR 10
@@ -83,6 +83,14 @@
#define IDE4_MAJOR 56
#define IDE5_MAJOR 57
+#define SCSI_DISK1_MAJOR 65
+#define SCSI_DISK2_MAJOR 66
+#define SCSI_DISK3_MAJOR 67
+#define SCSI_DISK4_MAJOR 68
+#define SCSI_DISK5_MAJOR 69
+#define SCSI_DISK6_MAJOR 70
+#define SCSI_DISK7_MAJOR 71
+
#define SPECIALIX_NORMAL_MAJOR 75
#define SPECIALIX_CALLOUT_MAJOR 76
@@ -94,8 +102,11 @@
* Tests for SCSI devices.
*/
+#define SCSI_DISK_MAJOR(M) ((M) == SCSI_DISK0_MAJOR || \
+ ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR))
+
#define SCSI_BLK_MAJOR(M) \
- ((M) == SCSI_DISK_MAJOR \
+ (SCSI_DISK_MAJOR(M) \
|| (M) == SCSI_CDROM_MAJOR)
static __inline__ int scsi_blk_major(int m) {
diff --git a/include/linux/mca.h b/include/linux/mca.h
index a8df76379..9dc61d00b 100644
--- a/include/linux/mca.h
+++ b/include/linux/mca.h
@@ -27,7 +27,7 @@ they all have sufficient number of POS registers to cover 8. */
See Documentation/mca.txt or one of the existing drivers for
more information.
*/
-#define MCA_NOTFOUND -1
+#define MCA_NOTFOUND (-1)
#define MCA_INTEGSCSI (MCA_MAX_SLOT_NR)
#define MCA_INTEGVIDEO (MCA_MAX_SLOT_NR+1)
@@ -40,11 +40,16 @@ specify a starting slot beyond zero, to deal with detecting multiple
devices. Returns MCA_NOTFOUND if id not found. Also checks the
integrated adapters. */
extern int mca_find_adapter( int id, int start );
+extern int mca_find_unused_adapter( int id, int start );
/* adapter state info - returns 0 if no */
extern int mca_isadapter( int slot );
extern int mca_isenabled( int slot );
+extern int mca_is_adapter_used( int slot );
+extern int mca_mark_as_used( int slot );
+extern void mca_mark_as_unused( int slot );
+
/* gets a byte out of POS register (stored in memory) */
extern unsigned char mca_read_stored_pos( int slot, int reg );
@@ -88,4 +93,8 @@ extern unsigned char mca_read_pos( int slot, int reg );
/* write a byte to the specified POS register. */
extern void mca_write_pos( int slot, int reg, unsigned char byte );
+/* Should only be called by the NMI interrupt handler, this will do some
+fancy stuff to figure out what might have generated a NMI. */
+extern void mca_handle_nmi( void );
+
#endif /* _LINUX_MCA_H */
diff --git a/include/linux/minix_fs.h b/include/linux/minix_fs.h
index 6b9b6d649..3a0635946 100644
--- a/include/linux/minix_fs.h
+++ b/include/linux/minix_fs.h
@@ -113,14 +113,7 @@ extern struct buffer_head * minix_getblk(struct inode *, int, int);
extern struct buffer_head * minix_bread(struct inode *, int, int);
extern void minix_truncate(struct inode *);
-extern void minix_put_super(struct super_block *);
-extern struct super_block *minix_read_super(struct super_block *,void *,int);
extern int init_minix_fs(void);
-extern void minix_write_super(struct super_block *);
-extern int minix_remount (struct super_block * sb, int * flags, char * data);
-extern void minix_read_inode(struct inode *);
-extern void minix_write_inode(struct inode *);
-extern int minix_statfs(struct super_block *, struct statfs *, int);
extern int minix_sync_inode(struct inode *);
extern int minix_sync_file(struct file *, struct dentry *);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 60c0ab8f9..b413095d3 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -3,7 +3,6 @@
#include <linux/sched.h>
#include <linux/errno.h>
-#include <linux/kernel.h>
#ifdef __KERNEL__
@@ -118,7 +117,7 @@ typedef struct page {
unsigned long offset;
struct page *next_hash;
atomic_t count;
- unsigned int age;
+ unsigned int unused;
unsigned long flags; /* atomic flags, some possibly updated asynchronously */
struct wait_queue *wait;
struct page **pprev_hash;
@@ -227,8 +226,6 @@ typedef struct page {
* For choosing which pages to swap out, inode pages carry a
* page->referenced bit, which is set any time the system accesses
* that page through the (inode,offset) hash table.
- * There is also the page->age counter, which implements a linear
- * decay (why not an exponential decay?), see swapctl.h.
*/
extern mem_map_t * mem_map;
@@ -254,12 +251,6 @@ extern inline unsigned long get_free_page(int gfp_mask)
/* memory.c & swap.c*/
-/*
- * Decide if we should try to do some swapout..
- */
-extern int free_memory_available(void);
-extern struct wait_queue * kswapd_wait;
-
#define free_page(addr) free_pages((addr),0)
extern void FASTCALL(free_pages(unsigned long addr, unsigned long order));
extern void FASTCALL(__free_page(struct page *));
@@ -278,7 +269,7 @@ extern int remap_page_range(unsigned long from, unsigned long to, unsigned long
extern int zeromap_page_range(unsigned long from, unsigned long size, pgprot_t prot);
extern int vmap_page_range (unsigned long from, unsigned long size, unsigned long vaddr);
extern void vmtruncate(struct inode * inode, unsigned long offset);
-extern void handle_mm_fault(struct task_struct *tsk,struct vm_area_struct *vma, unsigned long address, int write_access);
+extern int handle_mm_fault(struct task_struct *tsk,struct vm_area_struct *vma, unsigned long address, int write_access);
extern void make_pages_present(unsigned long addr, unsigned long end);
extern int pgt_cache_water[2];
@@ -341,6 +332,11 @@ extern void put_cached_page(unsigned long);
#define GFP_LEVEL_MASK 0xf
+/*
+ * Decide if we should try to do some swapout..
+ */
+extern int free_memory_available(void);
+
/* vma is the first one with address < vma->vm_end,
* and even address < vma->vm_start. Have to extend vma. */
static inline int expand_stack(struct vm_area_struct * vma, unsigned long address)
@@ -391,6 +387,31 @@ static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * m
return vma;
}
+#define buffer_under_min() ((buffermem >> PAGE_SHIFT) * 100 < \
+ buffer_mem.min_percent * num_physpages)
+#define buffer_under_borrow() ((buffermem >> PAGE_SHIFT) * 100 < \
+ buffer_mem.borrow_percent * num_physpages)
+#define buffer_under_max() ((buffermem >> PAGE_SHIFT) * 100 < \
+ buffer_mem.max_percent * num_physpages)
+#define buffer_over_min() ((buffermem >> PAGE_SHIFT) * 100 > \
+ buffer_mem.min_percent * num_physpages)
+#define buffer_over_borrow() ((buffermem >> PAGE_SHIFT) * 100 > \
+ buffer_mem.borrow_percent * num_physpages)
+#define buffer_over_max() ((buffermem >> PAGE_SHIFT) * 100 > \
+ buffer_mem.max_percent * num_physpages)
+#define pgcache_under_min() (page_cache_size * 100 < \
+ page_cache.min_percent * num_physpages)
+#define pgcache_under_borrow() (page_cache_size * 100 < \
+ page_cache.borrow_percent * num_physpages)
+#define pgcache_under_max() (page_cache_size * 100 < \
+ page_cache.max_percent * num_physpages)
+#define pgcache_over_min() (page_cache_size * 100 > \
+ page_cache.min_percent * num_physpages)
+#define pgcache_over_borrow() (page_cache_size * 100 > \
+ page_cache.borrow_percent * num_physpages)
+#define pgcache_over_max() (page_cache_size * 100 > \
+ page_cache.max_percent * num_physpages)
+
#endif /* __KERNEL__ */
#endif
diff --git a/include/linux/msg.h b/include/linux/msg.h
index d63a388ca..2be627198 100644
--- a/include/linux/msg.h
+++ b/include/linux/msg.h
@@ -3,6 +3,10 @@
#include <linux/ipc.h>
+/* ipcs ctl commands */
+#define MSG_STAT 11
+#define MSG_INFO 12
+
/* msgrcv options */
#define MSG_NOERROR 010000 /* no error if message is too big */
#define MSG_EXCEPT 020000 /* recv any msg except of specified type.*/
@@ -54,10 +58,6 @@ struct msginfo {
#define __MSGSEG ((MSGPOOL*1024)/ MSGSSZ) /* max no. of segments */
#define MSGSEG (__MSGSEG <= 0xffff ? __MSGSEG : 0xffff)
-/* ipcs ctl commands */
-#define MSG_STAT 11
-#define MSG_INFO 12
-
#ifdef __KERNEL__
/* one msg structure for each message */
diff --git a/include/linux/nbd.h b/include/linux/nbd.h
index 0b3114431..45b060291 100644
--- a/include/linux/nbd.h
+++ b/include/linux/nbd.h
@@ -35,7 +35,6 @@ nbd_end_request(struct request *req)
}
#define MAX_NBD 128
-#endif
struct nbd_device {
int refcnt;
@@ -51,6 +50,7 @@ struct nbd_device {
struct request *tail;
struct semaphore queue_lock;
};
+#endif
/* This now IS in some kind of include file... */
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index b72ad4ed1..9a9297cac 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -101,31 +101,29 @@ struct nfs_wreq {
struct dentry * wb_dentry; /* dentry referenced */
struct inode * wb_inode; /* inode referenced */
struct page * wb_page; /* page to be written */
+ struct wait_queue * wb_wait; /* wait for completion */
unsigned int wb_offset; /* offset within page */
unsigned int wb_bytes; /* dirty range */
+ unsigned int wb_count; /* user count */
+ int wb_status;
pid_t wb_pid; /* owner process */
unsigned short wb_flags; /* status flags */
struct nfs_writeargs wb_args; /* NFS RPC stuff */
struct nfs_fattr wb_fattr; /* file attributes */
};
-#define wb_status wb_task.tk_status
#define WB_NEXT(req) ((struct nfs_wreq *) ((req)->wb_list.next))
/*
* Various flags for wb_flags
*/
-#define NFS_WRITE_WANTLOCK 0x0001 /* needs to lock page */
-#define NFS_WRITE_LOCKED 0x0002 /* holds lock on page */
#define NFS_WRITE_CANCELLED 0x0004 /* has been cancelled */
#define NFS_WRITE_UNCOMMITTED 0x0008 /* written but uncommitted (NFSv3) */
#define NFS_WRITE_INVALIDATE 0x0010 /* invalidate after write */
#define NFS_WRITE_INPROGRESS 0x0100 /* RPC call in progress */
#define NFS_WRITE_COMPLETE 0x0200 /* RPC call completed */
-#define WB_WANTLOCK(req) ((req)->wb_flags & NFS_WRITE_WANTLOCK)
-#define WB_HAVELOCK(req) ((req)->wb_flags & NFS_WRITE_LOCKED)
#define WB_CANCELLED(req) ((req)->wb_flags & NFS_WRITE_CANCELLED)
#define WB_UNCOMMITTED(req) ((req)->wb_flags & NFS_WRITE_UNCOMMITTED)
#define WB_INVALIDATE(req) ((req)->wb_flags & NFS_WRITE_INVALIDATE)
@@ -214,14 +212,24 @@ extern int nfs_lock(struct file *, int, struct file_lock *);
* linux/fs/nfs/write.c
*/
extern int nfs_writepage(struct file *, struct page *);
-extern int nfs_find_dentry_request(struct inode *, struct dentry *);
extern int nfs_check_failed_request(struct inode *);
extern int nfs_check_error(struct inode *);
-extern int nfs_flush_dirty_pages(struct inode *, pid_t, off_t, off_t);
+
+/*
+ * Try to write back everything synchronously (but check the
+ * return value!)
+ */
+extern int nfs_wb_all(struct inode *);
+extern int nfs_wb_page(struct inode *, struct page *);
+extern int nfs_wb_pid(struct inode *, pid_t);
+
+/*
+ * Invalidate write-backs, possibly trying to write them
+ * back first..
+ */
+extern void nfs_inval(struct inode *);
extern int nfs_truncate_dirty_pages(struct inode *, unsigned long);
-extern void nfs_invalidate_pages(struct inode *);
-extern int nfs_updatepage(struct file *, struct page *, const char *,
- unsigned long, unsigned int, int);
+extern int nfs_updatepage(struct file *, struct page *, unsigned long, unsigned int, int);
/*
* linux/fs/nfs/read.c
@@ -246,13 +254,10 @@ nfs_revalidate_inode(struct nfs_server *server, struct dentry *dentry)
return _nfs_revalidate_inode(server, dentry);
}
-extern struct nfs_wreq * nfs_failed_requests;
static inline int
nfs_write_error(struct inode *inode)
{
- if (nfs_failed_requests == NULL)
- return 0;
- return nfs_check_error(inode);
+ return NFS_WRITEBACK(inode) && nfs_check_error(inode);
}
/* NFS root */
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h
index 69144d1d8..3370208ae 100644
--- a/include/linux/nfsd/export.h
+++ b/include/linux/nfsd/export.h
@@ -86,7 +86,7 @@ struct svc_client * exp_getclient(struct sockaddr_in *sin);
void exp_putclient(struct svc_client *clp);
struct svc_export * exp_get(struct svc_client *clp, kdev_t dev, ino_t ino);
int exp_rootfh(struct svc_client *, kdev_t, ino_t,
- struct knfs_fh *);
+ char *path, struct knfs_fh *);
int nfserrno(int errno);
void exp_nlmdetach(void);
diff --git a/include/linux/nfsd/syscall.h b/include/linux/nfsd/syscall.h
index 896ead46b..019d33f76 100644
--- a/include/linux/nfsd/syscall.h
+++ b/include/linux/nfsd/syscall.h
@@ -32,8 +32,8 @@
#define NFSCTL_EXPORT 3 /* export a file system. */
#define NFSCTL_UNEXPORT 4 /* unexport a file system. */
#define NFSCTL_UGIDUPDATE 5 /* update a client's uid/gid map. */
-#define NFSCTL_GETFH 6 /* get an fh (used by mountd) */
-
+#define NFSCTL_GETFH 6 /* get an fh by ino (used by mountd) */
+#define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */
/* SVC */
struct nfsctl_svc {
@@ -81,6 +81,13 @@ struct nfsctl_fhparm {
int gf_version;
};
+/* GETFD */
+struct nfsctl_fdparm {
+ struct sockaddr gd_addr;
+ char gd_path[NFS_MAXPATHLEN+1];
+ int gd_version;
+};
+
/*
* This is the argument union.
*/
@@ -92,6 +99,7 @@ struct nfsctl_arg {
struct nfsctl_export u_export;
struct nfsctl_uidmap u_umap;
struct nfsctl_fhparm u_getfh;
+ struct nfsctl_fdparm u_getfd;
unsigned int u_debug;
} u;
#define ca_svc u.u_svc
@@ -99,6 +107,7 @@ struct nfsctl_arg {
#define ca_export u.u_export
#define ca_umap u.u_umap
#define ca_getfh u.u_getfh
+#define ca_getfd u.u_getfd
#define ca_authd u.u_authd
#define ca_debug u.u_debug
};
diff --git a/include/linux/openpic.h b/include/linux/openpic.h
index 1b6102a2f..ea3123483 100644
--- a/include/linux/openpic.h
+++ b/include/linux/openpic.h
@@ -327,7 +327,7 @@ extern u_char *OpenPIC_InitSenses;
*/
/* Global Operations */
-extern void openpic_init(void);
+extern void openpic_init(int);
extern void openpic_reset(void);
extern void openpic_enable_8259_pass_through(void);
extern void openpic_disable_8259_pass_through(void);
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 9af62e4a2..667f214e1 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -83,8 +83,6 @@ static inline void remove_page_from_hash_queue(struct page * page)
static inline void __add_page_to_hash_queue(struct page * page, struct page **p)
{
page_cache_size++;
- set_bit(PG_referenced, &page->flags);
- page->age = PAGE_AGE_VALUE;
if((page->next_hash = *p) != NULL)
(*p)->pprev_hash = &page->next_hash;
*p = page;
diff --git a/include/linux/parport.h b/include/linux/parport.h
index 269fb574c..3adbc5ab3 100644
--- a/include/linux/parport.h
+++ b/include/linux/parport.h
@@ -123,7 +123,7 @@ struct parport_operations {
void (*enable_irq)(struct parport *);
void (*disable_irq)(struct parport *);
- int (*examine_irq)(struct parport *);
+ void (*interrupt)(int, void *, struct pt_regs *);
void (*inc_use_count)(void);
void (*dec_use_count)(void);
@@ -206,7 +206,9 @@ struct parport {
void *private_data; /* for lowlevel driver */
int number; /* port index - the `n' in `parportn' */
- spinlock_t lock;
+ spinlock_t pardevice_lock;
+ spinlock_t waitlist_lock;
+ rwlock_t cad_lock;
};
/* parport_register_port registers a new parallel port at the given address (if
@@ -234,10 +236,9 @@ struct parport *parport_enumerate(void);
/* parport_register_device declares that a device is connected to a port, and
* tells the kernel all it needs to know.
- * pf is the preemption function (may be NULL for a transient driver)
- * kf is the wake-up function (may be NULL for a transient driver)
+ * pf is the preemption function (may be NULL for no callback)
+ * kf is the wake-up function (may be NULL for no callback)
* irq_func is the interrupt handler (may be NULL for no interrupts)
- * Only one lurking driver can be used on a given port.
* handle is a user pointer that gets handed to callback functions.
*/
struct pardevice *parport_register_device(struct parport *port,
@@ -273,7 +274,7 @@ extern void parport_release(struct pardevice *dev);
/* parport_yield relinquishes the port if it would be helpful to other
* drivers. The return value is the same as for parport_claim.
*/
-extern __inline__ unsigned int parport_yield(struct pardevice *dev)
+extern __inline__ int parport_yield(struct pardevice *dev)
{
unsigned long int timeslip = (jiffies - dev->time);
if ((dev->port->waithead == NULL) || (timeslip < dev->timeslice))
@@ -285,7 +286,7 @@ extern __inline__ unsigned int parport_yield(struct pardevice *dev)
/* parport_yield_blocking is the same but uses parport_claim_or_block
* instead of parport_claim.
*/
-extern __inline__ unsigned int parport_yield_blocking(struct pardevice *dev)
+extern __inline__ int parport_yield_blocking(struct pardevice *dev)
{
unsigned long int timeslip = (jiffies - dev->time);
if ((dev->port->waithead == NULL) || (timeslip < dev->timeslice))
@@ -294,11 +295,31 @@ extern __inline__ unsigned int parport_yield_blocking(struct pardevice *dev)
return parport_claim_or_block(dev);
}
+/*
+ * Lowlevel drivers _can_ call this support function to handle irqs.
+ */
+extern __inline__ void parport_generic_irq(int irq, struct parport *port,
+ struct pt_regs *regs)
+{
+ read_lock(&port->cad_lock);
+ if (!port->cad)
+ goto out_unlock;
+ if (port->cad->irq_func)
+ port->cad->irq_func(irq, port->cad->private, regs);
+ else
+ printk(KERN_ERR "%s: irq%d happened with irq_func NULL "
+ "with %s as cad!\n", port->name, irq, port->cad->name);
+ out_unlock:
+ read_unlock(&port->cad_lock);
+}
+
/* Flags used to identify what a device does. */
-#define PARPORT_DEV_TRAN 0x0000 /* We're transient. */
-#define PARPORT_DEV_LURK 0x0001 /* We lurk. */
+#define PARPORT_DEV_TRAN 0 /* WARNING !! DEPRECATED !! */
+#define PARPORT_DEV_LURK (1<<0) /* WARNING !! DEPRECATED !! */
+#define PARPORT_DEV_EXCL (1<<1) /* Need exclusive access. */
-#define PARPORT_FLAG_COMA 1
+#define PARPORT_FLAG_COMA (1<<0)
+#define PARPORT_FLAG_EXCL (1<<1) /* EXCL driver registered. */
extern void parport_parse_irqs(int, const char *[], int irqval[]);
extern int parport_ieee1284_nibble_mode_ok(struct parport *, unsigned char);
diff --git a/include/linux/parport_pc.h b/include/linux/parport_pc.h
index b61a970a7..65d8209e5 100644
--- a/include/linux/parport_pc.h
+++ b/include/linux/parport_pc.h
@@ -132,8 +132,6 @@ extern int parport_pc_ecp_read_block(struct parport *p, void *buf, size_t length
extern int parport_pc_ecp_write_block(struct parport *p, void *buf, size_t length, void (*fn)(struct parport *, void *, size_t), void *handle);
-extern int parport_pc_examine_irq(struct parport *p);
-
extern void parport_pc_inc_use_count(void);
extern void parport_pc_dec_use_count(void);
diff --git a/include/linux/pc_keyb.h b/include/linux/pc_keyb.h
new file mode 100644
index 000000000..651bf4b19
--- /dev/null
+++ b/include/linux/pc_keyb.h
@@ -0,0 +1,124 @@
+/*
+ * include/linux/pc_keyb.h
+ *
+ * PC Keyboard And Keyboard Controller
+ *
+ * (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+/*
+ * Configuration Switches
+ */
+
+#undef KBD_REPORT_ERR /* Report keyboard errors */
+#define KBD_REPORT_UNKN /* Report unknown scan codes */
+#define KBD_REPORT_TIMEOUTS /* Report keyboard timeouts */
+#undef KBD_IS_FOCUS_9000 /* We have the brain-damaged FOCUS-9000 keyboard */
+#undef INITIALIZE_MOUSE /* Define if your PS/2 mouse needs initialization. */
+
+
+
+#define KBD_INIT_TIMEOUT 1000 /* Timeout in ms for initializing the keyboard */
+#define KBC_TIMEOUT 250 /* Timeout in ms for sending to keyboard controller */
+#define KBD_TIMEOUT 1000 /* Timeout in ms for keyboard command acknowledge */
+
+/*
+ * Internal variables of the driver
+ */
+
+extern unsigned char pckbd_read_mask;
+extern unsigned char aux_device_present;
+
+/*
+ * Keyboard Controller Registers on normal PCs.
+ */
+
+#define KBD_STATUS_REG 0x64 /* Status register (R) */
+#define KBD_CNTL_REG 0x64 /* Controller command register (W) */
+#define KBD_DATA_REG 0x60 /* Keyboard data register (R/W) */
+
+/*
+ * Keyboard Controller Commands
+ */
+
+#define KBD_CCMD_READ_MODE 0x20 /* Read mode bits */
+#define KBD_CCMD_WRITE_MODE 0x60 /* Write mode bits */
+#define KBD_CCMD_GET_VERSION 0xA1 /* Get controller version */
+#define KBD_CCMD_MOUSE_DISABLE 0xA7 /* Disable mouse interface */
+#define KBD_CCMD_MOUSE_ENABLE 0xA8 /* Enable mouse interface */
+#define KBD_CCMD_TEST_MOUSE 0xA9 /* Mouse interface test */
+#define KBD_CCMD_SELF_TEST 0xAA /* Controller self test */
+#define KBD_CCMD_KBD_TEST 0xAB /* Keyboard interface test */
+#define KBD_CCMD_KBD_DISABLE 0xAD /* Keyboard interface disable */
+#define KBD_CCMD_KBD_ENABLE 0xAE /* Keyboard interface enable */
+#define KBD_CCMD_WRITE_MOUSE 0xD4 /* Write the following byte to the mouse */
+
+/*
+ * Keyboard Commands
+ */
+
+#define KBD_CMD_SET_LEDS 0xED /* Set keyboard leds */
+#define KBD_CMD_SET_RATE 0xF3 /* Set typematic rate */
+#define KBD_CMD_ENABLE 0xF4 /* Enable scanning */
+#define KBD_CMD_DISABLE 0xF5 /* Disable scanning */
+#define KBD_CMD_RESET 0xFF /* Reset */
+
+/*
+ * Keyboard Replies
+ */
+
+#define KBD_REPLY_POR 0xAA /* Power on reset */
+#define KBD_REPLY_ACK 0xFA /* Command ACK */
+#define KBD_REPLY_RESEND 0xFE /* Command NACK, send the cmd again */
+
+/*
+ * Status Register Bits
+ */
+
+#define KBD_STAT_OBF 0x01 /* Keyboard output buffer full */
+#define KBD_STAT_IBF 0x02 /* Keyboard input buffer full */
+#define KBD_STAT_SELFTEST 0x04 /* Self test successful */
+#define KBD_STAT_CMD 0x08 /* Last write was a command write (0=data) */
+#define KBD_STAT_UNLOCKED 0x10 /* Zero if keyboard locked */
+#define KBD_STAT_MOUSE_OBF 0x20 /* Mouse output buffer full */
+#define KBD_STAT_GTO 0x40 /* General receive/xmit timeout */
+#define KBD_STAT_PERR 0x80 /* Parity error */
+
+#define AUX_STAT_OBF (KBD_STAT_OBF | KBD_STAT_MOUSE_OBF)
+
+/*
+ * Controller Mode Register Bits
+ */
+
+#define KBD_MODE_KBD_INT 0x01 /* Keyboard data generate IRQ1 */
+#define KBD_MODE_MOUSE_INT 0x02 /* Mouse data generate IRQ12 */
+#define KBD_MODE_SYS 0x04 /* The system flag (?) */
+#define KBD_MODE_NO_KEYLOCK 0x08 /* The keylock doesn't affect the keyboard if set */
+#define KBD_MODE_DISABLE_KBD 0x10 /* Disable keyboard interface */
+#define KBD_MODE_DISABLE_MOUSE 0x20 /* Disable mouse interface */
+#define KBD_MODE_KCC 0x40 /* Scan code conversion to PC format */
+#define KBD_MODE_RFU 0x80
+
+/*
+ * Mouse Commands
+ */
+
+#define AUX_SET_RES 0xE8 /* Set resolution */
+#define AUX_SET_SCALE11 0xE6 /* Set 1:1 scaling */
+#define AUX_SET_SCALE21 0xE7 /* Set 2:1 scaling */
+#define AUX_GET_SCALE 0xE9 /* Get scaling factor */
+#define AUX_SET_STREAM 0xEA /* Set stream mode */
+#define AUX_SET_SAMPLE 0xF3 /* Set sample rate */
+#define AUX_ENABLE_DEV 0xF4 /* Enable aux device */
+#define AUX_DISABLE_DEV 0xF5 /* Disable aux device */
+#define AUX_RESET 0xFF /* Reset aux device */
+
+#define AUX_BUF_SIZE 2048
+
+struct aux_queue {
+ unsigned long head;
+ unsigned long tail;
+ struct wait_queue *proc_list;
+ struct fasync_struct *fasync;
+ unsigned char buf[AUX_BUF_SIZE];
+};
diff --git a/include/linux/pci.h b/include/linux/pci.h
index f2231c90a..539586e40 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1,5 +1,5 @@
/*
- * $Id: pci.h,v 1.84 1998/08/17 23:06:43 cort Exp $
+ * $Id: pci.h,v 1.87 1998/10/11 15:13:12 mj Exp $
*
* PCI defines and function prototypes
* Copyright 1994, Drew Eckhardt
@@ -467,6 +467,7 @@
#define PCI_DEVICE_ID_OPTI_82C701 0xc701
#define PCI_DEVICE_ID_OPTI_82C814 0xc814
#define PCI_DEVICE_ID_OPTI_82C822 0xc822
+#define PCI_DEVICE_ID_OPTI_82C861 0xc861
#define PCI_DEVICE_ID_OPTI_82C825 0xd568
#define PCI_VENDOR_ID_SGS 0x104a
@@ -482,8 +483,10 @@
#define PCI_DEVICE_ID_TI_TVP4010 0x3d04
#define PCI_DEVICE_ID_TI_TVP4020 0x3d07
#define PCI_DEVICE_ID_TI_PCI1130 0xac12
+#define PCI_DEVICE_ID_TI_PCI1031 0xac13
#define PCI_DEVICE_ID_TI_PCI1131 0xac15
#define PCI_DEVICE_ID_TI_PCI1250 0xac16
+#define PCI_DEVICE_ID_TI_PCI1220 0xac17
#define PCI_VENDOR_ID_OAK 0x104e
#define PCI_DEVICE_ID_OAK_OTI107 0x0107
@@ -601,6 +604,7 @@
#define PCI_DEVICE_ID_DATABOOK_87144 0xb106
#define PCI_VENDOR_ID_PLX 0x10b5
+#define PCI_DEVICE_ID_PLX_9050 0x9050
#define PCI_DEVICE_ID_PLX_9060 0x9060
#define PCI_DEVICE_ID_PLX_9060ES 0x906E
#define PCI_DEVICE_ID_PLX_9060SD 0x906D
@@ -611,6 +615,7 @@
#define PCI_DEVICE_ID_MADGE_C155S 0x1001
#define PCI_VENDOR_ID_3COM 0x10b7
+#define PCI_DEVICE_ID_3COM_3C985 0x0001
#define PCI_DEVICE_ID_3COM_3C339 0x3390
#define PCI_DEVICE_ID_3COM_3C590 0x5900
#define PCI_DEVICE_ID_3COM_3C595TX 0x5950
@@ -703,6 +708,9 @@
#define PCI_DEVICE_ID_INIT_320P 0x9100
#define PCI_DEVICE_ID_INIT_360P 0x9500
+#define PCI_VENDOR_ID_TTI 0x1103
+#define PCI_DEVICE_ID_TTI_HPT343 0x0003
+
#define PCI_VENDOR_ID_VIA 0x1106
#define PCI_DEVICE_ID_VIA_82C505 0x0505
#define PCI_DEVICE_ID_VIA_82C561 0x0561
@@ -809,9 +817,13 @@
#define PCI_DEVICE_ID_TOSHIBA_TOPIC97 0x060f
#define PCI_VENDOR_ID_RICOH 0x1180
+#define PCI_DEVICE_ID_RICOH_RL5C465 0x0465
#define PCI_DEVICE_ID_RICOH_RL5C466 0x0466
+#define PCI_DEVICE_ID_RICOH_RL5C475 0x0475
+#define PCI_DEVICE_ID_RICOH_RL5C478 0x0478
#define PCI_VENDOR_ID_ARTOP 0x1191
+#define PCI_DEVICE_ID_ARTOP_ATP8400 0x0004
#define PCI_DEVICE_ID_ARTOP_ATP850UF 0x0005
#define PCI_VENDOR_ID_ZEITNET 0x1193
@@ -834,6 +846,7 @@
#define PCI_DEVICE_ID_ATT_L56XMF 0x0440
#define PCI_VENDOR_ID_SPECIALIX 0x11cb
+#define PCI_DEVICE_ID_SPECIALIX_IO8 0x2000
#define PCI_DEVICE_ID_SPECIALIX_XIO 0x4000
#define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000
@@ -876,7 +889,10 @@
#define PCI_DEVICE_ID_ESSENTIAL_ROADRUNNER 0x0001
#define PCI_VENDOR_ID_O2 0x1217
+#define PCI_DEVICE_ID_O2_6729 0x6729
+#define PCI_DEVICE_ID_O2_6730 0x673a
#define PCI_DEVICE_ID_O2_6832 0x6832
+#define PCI_DEVICE_ID_O2_6836 0x6836
#define PCI_VENDOR_ID_3DFX 0x121a
#define PCI_DEVICE_ID_3DFX_VOODOO 0x0001
@@ -966,6 +982,9 @@
#define PCI_DEVICE_ID_S3_ViRGE_MXPMV 0x8c03
#define PCI_DEVICE_ID_S3_SONICVIBES 0xca00
+#define PCI_VENDOR_ID_GENROCO 0x5555
+#define PCI_DEVICE_ID_GENROCO_HFP832 0x0003
+
#define PCI_VENDOR_ID_INTEL 0x8086
#define PCI_DEVICE_ID_INTEL_82375 0x0482
#define PCI_DEVICE_ID_INTEL_82424 0x0483
@@ -1011,6 +1030,7 @@
#define PCI_DEVICE_ID_ADAPTEC_7850 0x5078
#define PCI_DEVICE_ID_ADAPTEC_7855 0x5578
#define PCI_DEVICE_ID_ADAPTEC_5800 0x5800
+#define PCI_DEVICE_ID_ADAPTEC_1480A 0x6075
#define PCI_DEVICE_ID_ADAPTEC_7860 0x6078
#define PCI_DEVICE_ID_ADAPTEC_7861 0x6178
#define PCI_DEVICE_ID_ADAPTEC_7870 0x7078
@@ -1026,6 +1046,12 @@
#define PCI_DEVICE_ID_ADAPTEC_7884 0x8478
#define PCI_DEVICE_ID_ADAPTEC_1030 0x8b78
+#define PCI_VENDOR_ID_ADAPTEC2 0x9005
+#define PCI_DEVICE_ID_ADAPTEC2_2940U2 0x0010
+#define PCI_DEVICE_ID_ADAPTEC2_7890 0x001f
+#define PCI_DEVICE_ID_ADAPTEC2_3940U2 0x0050
+#define PCI_DEVICE_ID_ADAPTEC2_7896 0x005f
+
#define PCI_VENDOR_ID_ATRONICS 0x907f
#define PCI_DEVICE_ID_ATRONICS_2015 0x2015
diff --git a/include/linux/poll.h b/include/linux/poll.h
index c4065bc12..7cafbfbad 100644
--- a/include/linux/poll.h
+++ b/include/linux/poll.h
@@ -103,7 +103,7 @@ void zero_fd_set(unsigned long nr, unsigned long *fdset)
memset(fdset, 0, nr);
}
-extern int do_select(int n, fd_set_buffer *fds, unsigned long timeout);
+extern int do_select(int n, fd_set_buffer *fds, long *timeout);
#endif /* KERNEL */
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
index 7d4badcd0..d12e05650 100644
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -2,7 +2,6 @@
#define _LINUX_PROC_FS_H
#include <linux/config.h>
-#include <linux/fs.h>
#include <linux/malloc.h>
/*
@@ -23,6 +22,7 @@ enum root_directory_inos {
PROC_CPUINFO,
PROC_PCI,
PROC_MCA,
+ PROC_NUBUS,
PROC_SELF, /* will change inode # */
PROC_NET,
PROC_SCSI,
@@ -142,6 +142,7 @@ enum net_directory_inos {
PROC_NET_NETSTAT,
PROC_NET_IPFW_CHAINS,
PROC_NET_IPFW_CHAIN_NAMES,
+ PROC_NET_AT_AARP,
PROC_NET_LAST
};
@@ -173,6 +174,7 @@ enum scsi_directory_inos {
PROC_SCSI_ULTRASTOR,
PROC_SCSI_7000FASST,
PROC_SCSI_IBMMCA,
+ PROC_SCSI_FD_MCS,
PROC_SCSI_EATA2X,
PROC_SCSI_DC390T,
PROC_SCSI_AM53C974,
@@ -332,7 +334,7 @@ static inline int proc_scsi_unregister(struct proc_dir_entry *driver, int x)
{
extern void scsi_init_free(char *ptr, unsigned int size);
- if(x <= PROC_SCSI_FILE)
+ if(x < PROC_SCSI_FILE)
return(proc_unregister(proc_scsi, x));
else {
struct proc_dir_entry **p = &driver->subdir, *dp;
@@ -349,6 +351,7 @@ static inline int proc_scsi_unregister(struct proc_dir_entry *driver, int x)
}
}
+extern struct dentry_operations proc_dentry_operations;
extern struct super_block *proc_read_super(struct super_block *,void *,int);
extern int init_proc_fs(void);
extern struct inode * proc_get_inode(struct super_block *, int, struct proc_dir_entry *);
diff --git a/include/linux/quota.h b/include/linux/quota.h
index 014685f4f..c0945f60b 100644
--- a/include/linux/quota.h
+++ b/include/linux/quota.h
@@ -165,19 +165,23 @@ struct dqstats {
#define DQ_FAKE 0x40 /* no limits only usage */
struct dquot {
+ struct dquot *dq_next; /* Pointer to next dquot */
+ struct dquot **dq_pprev;
+ struct list_head dq_free; /* free list element */
+ struct dquot *dq_hash_next; /* Pointer to next in dquot_hash */
+ struct dquot **dq_hash_pprev; /* Pointer to previous in dquot_hash */
+ struct wait_queue *dq_wait; /* Pointer to waitqueue */
+ int dq_count; /* Reference count */
+
+ /* fields after this point are cleared when invalidating */
+ struct vfsmount *dq_mnt; /* VFS_mount_point this applies to */
unsigned int dq_id; /* ID this applies to (uid, gid) */
- short dq_type; /* Type of quota */
kdev_t dq_dev; /* Device this applies to */
+ short dq_type; /* Type of quota */
short dq_flags; /* See DQ_* */
- short dq_count; /* Reference count */
- unsigned long dq_referenced; /* Number of times this dquot was referenced during its lifetime */
- struct vfsmount *dq_mnt; /* VFS_mount_point this applies to */
+ unsigned long dq_referenced; /* Number of times this dquot was
+ referenced during its lifetime */
struct dqblk dq_dqb; /* Diskquota usage */
- struct wait_queue *dq_wait; /* Pointer to waitqueue */
- struct dquot *dq_next; /* Pointer to next dquot */
- struct dquot *dq_hash_next; /* Pointer to next in dquot_hash */
- struct dquot **dq_hash_pprev; /* Pointer to previous in dquot_hash */
- struct dquot **dq_pprev;
};
#define NODQUOT (struct dquot *)NULL
diff --git a/include/linux/rose.h b/include/linux/rose.h
index 69d592f67..c7b4b184c 100644
--- a/include/linux/rose.h
+++ b/include/linux/rose.h
@@ -9,6 +9,8 @@
#define ROSE_MTU 251
+#define ROSE_MAX_DIGIS 6
+
#define ROSE_DEFER 1
#define ROSE_T1 2
#define ROSE_T2 3
@@ -24,6 +26,7 @@
#define SIOCRSACCEPT (SIOCPROTOPRIVATE+3)
#define SIOCRSCLRRT (SIOCPROTOPRIVATE+4)
#define SIOCRSGL2CALL (SIOCPROTOPRIVATE+5)
+#define SIOCRSGFACILITIES (SIOCPROTOPRIVATE+6)
#define ROSE_DTE_ORIGINATED 0x00
#define ROSE_NUMBER_BUSY 0x01
@@ -48,6 +51,14 @@ struct sockaddr_rose {
ax25_address srose_digi;
};
+struct full_sockaddr_rose {
+ sa_family_t srose_family;
+ rose_address srose_addr;
+ ax25_address srose_call;
+ unsigned int srose_ndigis;
+ ax25_address srose_digis[ROSE_MAX_DIGIS];
+};
+
struct rose_route_struct {
rose_address address;
unsigned short mask;
@@ -62,4 +73,15 @@ struct rose_cause_struct {
unsigned char diagnostic;
};
+struct rose_facilities_struct {
+ rose_address source_addr, dest_addr;
+ ax25_address source_call, dest_call;
+ unsigned char source_ndigis, dest_ndigis;
+ ax25_address source_digis[ROSE_MAX_DIGIS];
+ ax25_address dest_digis[ROSE_MAX_DIGIS];
+ unsigned int rand;
+ rose_address fail_addr;
+ ax25_address fail_call;
+};
+
#endif
diff --git a/include/linux/sched.h b/include/linux/sched.h
index e46e22263..da5be1f10 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -20,7 +20,6 @@ extern unsigned long event;
#include <linux/tty.h>
#include <linux/sem.h>
#include <linux/signal.h>
-#include <linux/capability.h>
#include <linux/securebits.h>
/*
@@ -65,11 +64,9 @@ extern int nr_running, nr_tasks;
extern int last_pid;
#include <linux/fs.h>
-#include <linux/signal.h>
#include <linux/time.h>
#include <linux/param.h>
#include <linux/resource.h>
-#include <linux/ptrace.h>
#include <linux/timer.h>
#include <asm/processor.h>
@@ -119,9 +116,10 @@ extern void sched_init(void);
extern void show_state(void);
extern void trap_init(void);
+#define MAX_SCHEDULE_TIMEOUT LONG_MAX
+extern signed long FASTCALL(schedule_timeout(signed long timeout));
asmlinkage void schedule(void);
-
/*
* Open file table structure
*/
@@ -258,7 +256,7 @@ struct task_struct {
struct task_struct **tarray_ptr;
struct wait_queue *wait_chldexit; /* for wait4() */
- unsigned long timeout, policy, rt_priority;
+ unsigned long policy, rt_priority;
unsigned long it_real_value, it_prof_value, it_virt_value;
unsigned long it_real_incr, it_prof_incr, it_virt_incr;
struct timer_list real_timer;
@@ -322,7 +320,7 @@ struct task_struct {
#define PF_MEMALLOC 0x00000800 /* Allocating memory */
#define PF_USEDFPU 0x00100000 /* task used FPU this quantum (SMP) */
-#define PF_DTRACE 0x00200000 /* delayed trace (used on m68k) */
+#define PF_DTRACE 0x00200000 /* delayed trace (used on m68k, i386) */
/*
* Limit the stack by to some sane default: root can always
@@ -348,7 +346,7 @@ struct task_struct {
/* pidhash */ NULL, NULL, \
/* tarray */ &task[0], \
/* chld wait */ NULL, \
-/* timeout */ 0,SCHED_OTHER,0,0,0,0,0,0,0, \
+/* timeout */ SCHED_OTHER,0,0,0,0,0,0,0, \
/* timer */ { NULL, NULL, 0, 0, it_real_fn }, \
/* utime */ {0,0,0,0},0, \
/* per CPU times */ {0, }, {0, }, \
@@ -458,6 +456,8 @@ extern unsigned long prof_shift;
extern void FASTCALL(__wake_up(struct wait_queue ** p, unsigned int mode));
extern void FASTCALL(sleep_on(struct wait_queue ** p));
extern void FASTCALL(interruptible_sleep_on(struct wait_queue ** p));
+extern long FASTCALL(interruptible_sleep_on_timeout(struct wait_queue ** p,
+ signed long timeout));
extern void FASTCALL(wake_up_process(struct task_struct * tsk));
#define wake_up(x) __wake_up((x),TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE)
diff --git a/include/linux/sdladrv.h b/include/linux/sdladrv.h
index af18e4b9f..23ae8a1e2 100644
--- a/include/linux/sdladrv.h
+++ b/include/linux/sdladrv.h
@@ -33,7 +33,7 @@ typedef struct sdlahw
unsigned fwid; /* firmware ID */
unsigned port; /* adapter I/O port base */
int irq; /* interrupt request level */
- unsigned long dpmbase; /* dual-port memory base */
+ void * dpmbase; /* dual-port memory base */
unsigned dpmsize; /* dual-port memory size */
unsigned pclk; /* CPU clock rate, kHz */
unsigned long memory; /* memory size */
diff --git a/include/linux/selection.h b/include/linux/selection.h
index 45a14a4b3..45e4712b4 100644
--- a/include/linux/selection.h
+++ b/include/linux/selection.h
@@ -21,7 +21,6 @@ extern void mouse_report(struct tty_struct * tty, int butt, int mrx, int mry);
#define video_num_columns (vc_cons[currcons].d->vc_cols)
#define video_num_lines (vc_cons[currcons].d->vc_rows)
#define video_size_row (vc_cons[currcons].d->vc_size_row)
-#define video_screen_size (vc_cons[currcons].d->vc_screenbuf_size)
#define can_do_color (vc_cons[currcons].d->vc_can_do_color)
extern int console_blanked;
@@ -31,7 +30,6 @@ extern int default_red[];
extern int default_grn[];
extern int default_blu[];
-extern void do_unblank_screen(void);
extern unsigned short *screen_pos(int currcons, int w_offset, int viewed);
extern u16 screen_glyph(int currcons, int offset);
extern void complement_pos(int currcons, int offset);
diff --git a/include/linux/serial.h b/include/linux/serial.h
index 91cd5eca3..766222e7a 100644
--- a/include/linux/serial.h
+++ b/include/linux/serial.h
@@ -42,11 +42,11 @@ struct serial_struct {
#define PORT_16450 2
#define PORT_16550 3
#define PORT_16550A 4
-#define PORT_CIRRUS 5
+#define PORT_CIRRUS 5 /* usurped by cyclades.c */
#define PORT_16650 6
#define PORT_16650V2 7
#define PORT_16750 8
-#define PORT_STARTECH 9
+#define PORT_STARTECH 9 /* usurped by cyclades.c */
#define PORT_MAX 9
struct serial_uart_config {
@@ -87,7 +87,7 @@ struct serial_uart_config {
#define ASYNC_LOW_LATENCY 0x2000 /* Request low latency behaviour */
-#define ASYNC_FLAGS 0x2FFF /* Possible legal async flags */
+#define ASYNC_FLAGS 0x3FFF /* Possible legal async flags */
#define ASYNC_USR_MASK 0x3430 /* Legal flags that non-privileged
* users can set or reset */
diff --git a/include/linux/serial167.h b/include/linux/serial167.h
new file mode 100644
index 000000000..9f01f3618
--- /dev/null
+++ b/include/linux/serial167.h
@@ -0,0 +1,175 @@
+/*
+ * serial167.h
+ *
+ * Richard Hirst [richard@sleepie.demon.co.uk]
+ *
+ * Based on cyclades.h
+ */
+
+struct cyclades_monitor {
+ unsigned long int_count;
+ unsigned long char_count;
+ unsigned long char_max;
+ unsigned long char_last;
+};
+
+/*
+ * This is our internal structure for each serial port's state.
+ *
+ * Many fields are paralleled by the structure used by the serial_struct
+ * structure.
+ *
+ * For definitions of the flags field, see tty.h
+ */
+
+struct cyclades_port {
+ int magic;
+ int type;
+ int card;
+ int line;
+ int flags; /* defined in tty.h */
+ struct tty_struct *tty;
+ int read_status_mask;
+ int timeout;
+ int xmit_fifo_size;
+ int cor1,cor2,cor3,cor4,cor5,cor6,cor7;
+ int tbpr,tco,rbpr,rco;
+ int ignore_status_mask;
+ int close_delay;
+ int IER; /* Interrupt Enable Register */
+ int event;
+ unsigned long last_active;
+ int count; /* # of fd on device */
+ int x_char; /* to be pushed out ASAP */
+ int x_break;
+ int blocked_open; /* # of blocked opens */
+ long session; /* Session of opening process */
+ long pgrp; /* pgrp of opening process */
+ unsigned char *xmit_buf;
+ int xmit_head;
+ int xmit_tail;
+ int xmit_cnt;
+ int default_threshold;
+ int default_timeout;
+ struct tq_struct tqueue;
+ struct termios normal_termios;
+ struct termios callout_termios;
+ struct wait_queue *open_wait;
+ struct wait_queue *close_wait;
+ struct cyclades_monitor mon;
+};
+
+#define CYCLADES_MAGIC 0x4359
+
+#define CYGETMON 0x435901
+#define CYGETTHRESH 0x435902
+#define CYSETTHRESH 0x435903
+#define CYGETDEFTHRESH 0x435904
+#define CYSETDEFTHRESH 0x435905
+#define CYGETTIMEOUT 0x435906
+#define CYSETTIMEOUT 0x435907
+#define CYGETDEFTIMEOUT 0x435908
+#define CYSETDEFTIMEOUT 0x435909
+
+/*
+ * Events are used to schedule things to happen at timer-interrupt
+ * time, instead of at cy interrupt time.
+ */
+#define Cy_EVENT_READ_PROCESS 0
+#define Cy_EVENT_WRITE_WAKEUP 1
+#define Cy_EVENT_HANGUP 2
+#define Cy_EVENT_BREAK 3
+#define Cy_EVENT_OPEN_WAKEUP 4
+
+
+
+#define CyMaxChipsPerCard 1
+
+/**** cd2401 registers ****/
+
+#define CyGFRCR (0x81)
+#define CyCCR (0x13)
+#define CyCLR_CHAN (0x40)
+#define CyINIT_CHAN (0x20)
+#define CyCHIP_RESET (0x10)
+#define CyENB_XMTR (0x08)
+#define CyDIS_XMTR (0x04)
+#define CyENB_RCVR (0x02)
+#define CyDIS_RCVR (0x01)
+#define CyCAR (0xee)
+#define CyIER (0x11)
+#define CyMdmCh (0x80)
+#define CyRxExc (0x20)
+#define CyRxData (0x08)
+#define CyTxMpty (0x02)
+#define CyTxRdy (0x01)
+#define CyLICR (0x26)
+#define CyRISR (0x89)
+#define CyTIMEOUT (0x80)
+#define CySPECHAR (0x70)
+#define CyOVERRUN (0x08)
+#define CyPARITY (0x04)
+#define CyFRAME (0x02)
+#define CyBREAK (0x01)
+#define CyREOIR (0x84)
+#define CyTEOIR (0x85)
+#define CyMEOIR (0x86)
+#define CyNOTRANS (0x08)
+#define CyRFOC (0x30)
+#define CyRDR (0xf8)
+#define CyTDR (0xf8)
+#define CyMISR (0x8b)
+#define CyRISR (0x89)
+#define CyTISR (0x8a)
+#define CyMSVR1 (0xde)
+#define CyMSVR2 (0xdf)
+#define CyDSR (0x80)
+#define CyDCD (0x40)
+#define CyCTS (0x20)
+#define CyDTR (0x02)
+#define CyRTS (0x01)
+#define CyRTPRL (0x25)
+#define CyRTPRH (0x24)
+#define CyCOR1 (0x10)
+#define CyPARITY_NONE (0x00)
+#define CyPARITY_E (0x40)
+#define CyPARITY_O (0xC0)
+#define Cy_5_BITS (0x04)
+#define Cy_6_BITS (0x05)
+#define Cy_7_BITS (0x06)
+#define Cy_8_BITS (0x07)
+#define CyCOR2 (0x17)
+#define CyETC (0x20)
+#define CyCtsAE (0x02)
+#define CyCOR3 (0x16)
+#define Cy_1_STOP (0x02)
+#define Cy_2_STOP (0x04)
+#define CyCOR4 (0x15)
+#define CyREC_FIFO (0x0F) /* Receive FIFO threshold */
+#define CyCOR5 (0x14)
+#define CyCOR6 (0x18)
+#define CyCOR7 (0x07)
+#define CyRBPR (0xcb)
+#define CyRCOR (0xc8)
+#define CyTBPR (0xc3)
+#define CyTCOR (0xc0)
+#define CySCHR1 (0x1f)
+#define CySCHR2 (0x1e)
+#define CyTPR (0xda)
+#define CyPILR1 (0xe3)
+#define CyPILR2 (0xe0)
+#define CyPILR3 (0xe1)
+#define CyCMR (0x1b)
+#define CyASYNC (0x02)
+#define CyLICR (0x26)
+#define CyLIVR (0x09)
+#define CySCRL (0x23)
+#define CySCRH (0x22)
+#define CyTFTC (0x80)
+
+
+/* max number of chars in the FIFO */
+
+#define CyMAX_CHAR_FIFO 12
+
+/***************************************************************************/
diff --git a/include/linux/shm.h b/include/linux/shm.h
index 50a7b772c..819e346a4 100644
--- a/include/linux/shm.h
+++ b/include/linux/shm.h
@@ -14,8 +14,13 @@ struct shmid_ds {
__kernel_ipc_pid_t shm_cpid; /* pid of creator */
__kernel_ipc_pid_t shm_lpid; /* pid of last operator */
unsigned short shm_nattch; /* no. of current attaches */
+};
+
+struct shmid_kernel
+{
+ struct shmid_ds u;
/* the following are private */
- unsigned short shm_npages; /* size of segment (pages) */
+ unsigned long shm_npages; /* size of segment (pages) */
unsigned long *shm_pages; /* array of ptrs to frames -> SHMMAX */
struct vm_area_struct *attaches; /* descriptors for attaches */
};
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index c242c0907..2089a9710 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -106,6 +106,12 @@ struct sk_buff {
__u32 shapestamp; /* Stamp for shaper */
__u16 shapepend; /* Pending */
#endif
+
+#if defined(CONFIG_HIPPI)
+ union{
+ __u32 ifield;
+ } private;
+#endif
};
/* These are just the default values. This is run time configurable.
diff --git a/include/linux/socket.h b/include/linux/socket.h
index 511e92426..f1e8dcfaf 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -238,6 +238,7 @@ struct ucred {
/* TCP options - this way around because someone left a set in the c library includes */
#define TCP_NODELAY 1
#define TCP_MAXSEG 2
+#define TCP_CORK 3 /* Linux specific (for use with sendfile) */
#ifdef __KERNEL__
extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len);
@@ -250,6 +251,7 @@ extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
extern int verify_iovec(struct msghdr *m, struct iovec *iov, char *address, int mode);
extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
+extern void memcpy_tokerneliovec(struct iovec *iov, unsigned char *kdata, int len);
extern int move_addr_to_user(void *kaddr, int klen, void *uaddr, int *ulen);
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);
diff --git a/include/linux/soundcard.h b/include/linux/soundcard.h
index deb73e6fd..52ff06b5f 100644
--- a/include/linux/soundcard.h
+++ b/include/linux/soundcard.h
@@ -771,6 +771,8 @@ typedef struct copr_msg {
#define SOUND_MIXER_CAPS 0xfc
# define SOUND_CAP_EXCL_INPUT 0x00000001 /* Only one recording source at a time */
#define SOUND_MIXER_STEREODEVS 0xfb /* Mixer channels supporting stereo */
+#define SOUND_MIXER_OUTSRC 0xfa /* Arg contains a bit for each input source to output */
+#define SOUND_MIXER_OUTMASK 0xf9 /* Arg contains a bit for each supported input source to output */
/* Device mask bits */
diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h
index 3bea6651d..f374af3f4 100644
--- a/include/linux/sunrpc/auth.h
+++ b/include/linux/sunrpc/auth.h
@@ -14,6 +14,8 @@
#include <linux/config.h>
#include <linux/sunrpc/sched.h>
+/* size of the nodename buffer */
+#define UNX_MAXNODENAME 32
/*
* Client user credentials
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index 98a250051..d0be5f044 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -52,6 +52,9 @@ struct rpc_clnt {
struct rpc_portmap cl_pmap; /* port mapping */
struct rpc_wait_queue cl_bindwait; /* waiting on getport() */
+
+ int cl_nodelen; /* nodename length */
+ char cl_nodename[UNX_MAXNODENAME];
};
#define cl_timeout cl_xprt->timeout
#define cl_prog cl_pmap.pm_prog
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h
index e076098c4..8563307a8 100644
--- a/include/linux/sunrpc/svcsock.h
+++ b/include/linux/sunrpc/svcsock.h
@@ -51,7 +51,7 @@ struct svc_sock {
*/
int svc_makesock(struct svc_serv *, int, unsigned short);
void svc_delete_socket(struct svc_sock *);
-int svc_recv(struct svc_serv *, struct svc_rqst *);
+int svc_recv(struct svc_serv *, struct svc_rqst *, long);
int svc_send(struct svc_rqst *);
void svc_drop(struct svc_rqst *);
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 0bcb6f6ed..d4fcf03b8 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -79,7 +79,7 @@ extern void swap_after_unlock_page (unsigned long entry);
/* linux/mm/page_alloc.c */
extern void swap_in(struct task_struct *, struct vm_area_struct *,
- unsigned long, pte_t *, unsigned long, int);
+ pte_t *, unsigned long, int);
/* linux/mm/swap_state.c */
@@ -87,8 +87,9 @@ extern void show_swap_cache_info(void);
extern int add_to_swap_cache(struct page *, unsigned long);
extern int swap_duplicate(unsigned long);
extern int swap_check_entry(unsigned long);
-extern struct page * read_swap_cache_async(unsigned long, unsigned long, int);
-#define read_swap_cache(entry, addr) read_swap_cache_async(entry, addr, 1);
+extern struct page * read_swap_cache_async(unsigned long, int);
+#define read_swap_cache(entry) read_swap_cache_async(entry, 1);
+extern int FASTCALL(swap_count(unsigned long));
/*
* Make these inline later once they are working properly.
*/
@@ -106,8 +107,8 @@ struct swap_list_t {
int next; /* swapfile to be used next */
};
extern struct swap_list_t swap_list;
-int sys_swapoff(const char *);
-int sys_swapon(const char *, int);
+asmlinkage int sys_swapoff(const char *);
+asmlinkage int sys_swapon(const char *, int);
/*
* vm_ops not present page codes for shared memory.
@@ -146,14 +147,20 @@ extern inline unsigned long in_swap_cache(struct page *page)
*/
static inline int is_page_shared(struct page *page)
{
- int count = atomic_read(&page->count);
+ unsigned int count;
if (PageReserved(page))
return 1;
- if (page->inode == &swapper_inode)
- count--;
+ count = atomic_read(&page->count);
+ if (PageSwapCache(page))
+ {
+ /* PARANOID */
+ if (page->inode != &swapper_inode)
+ panic("swap cache page has wrong inode\n");
+ count += swap_count(page->offset) - 2;
+ }
if (PageFreeAfter(page))
count--;
- return (count > 1);
+ return count > 1;
}
#endif /* __KERNEL__*/
diff --git a/include/linux/swapctl.h b/include/linux/swapctl.h
index fcc5615f8..54fb59381 100644
--- a/include/linux/swapctl.h
+++ b/include/linux/swapctl.h
@@ -94,32 +94,6 @@ static inline int AGE_CLUSTER_SIZE(int resources)
return n;
}
-static inline void touch_page(struct page *page)
-{
- if (page->age < (MAX_PAGE_AGE - PAGE_ADVANCE))
- page->age += PAGE_ADVANCE;
- else
- page->age = MAX_PAGE_AGE;
-}
-
-static inline void age_page(struct page *page)
-{
- if (page->age > PAGE_DECLINE)
- page->age -= PAGE_DECLINE;
- else
- page->age = 0;
-}
-
-static inline int age_of(unsigned long addr)
-{
- return mem_map[MAP_NR(addr)].age;
-}
-
-static inline void set_page_new(unsigned long addr)
-{
- mem_map[MAP_NR(addr)].age = PAGE_INITIAL_AGE;
-}
-
#endif /* __KERNEL */
#endif /* _LINUX_SWAPCTL_H */
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index c310573ee..20e3b9abf 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -44,99 +44,103 @@ struct __sysctl_args {
/* For internal pattern-matching use only: */
#ifdef __KERNEL__
-#define CTL_ANY -1 /* Matches any name */
+#define CTL_ANY -1 /* Matches any name */
#define CTL_NONE 0
#endif
enum
{
-/*1*/ CTL_KERN=1, /* General kernel info and control */
- CTL_VM, /* VM management */
- CTL_NET, /* Networking */
- CTL_PROC, /* Process info */
- CTL_FS, /* Filesystems */
- CTL_DEBUG, /* Debugging */
-/*7*/ CTL_DEV, /* Devices */
+ CTL_KERN=1, /* General kernel info and control */
+ CTL_VM=2, /* VM management */
+ CTL_NET=3, /* Networking */
+ CTL_PROC=4, /* Process info */
+ CTL_FS=5, /* Filesystems */
+ CTL_DEBUG=6, /* Debugging */
+ CTL_DEV=7, /* Devices */
};
/* CTL_KERN names: */
enum
{
-/*1*/ KERN_OSTYPE=1, /* string: system version */
- KERN_OSRELEASE, /* string: system release */
- KERN_OSREV, /* int: system revision */
- KERN_VERSION, /* string: compile time info */
- KERN_SECUREMASK, /* struct: maximum rights mask */
- KERN_PROF, /* table: profiling information */
- KERN_NODENAME,
-/*8*/ KERN_DOMAINNAME,
-/*14*/ KERN_SECURELVL=14, /* int: system security level */
- KERN_PANIC, /* int: panic timeout */
-/*16*/ KERN_REALROOTDEV, /* real root device to mount after initrd */
-/*19*/ KERN_JAVA_INTERPRETER=19,/* path to Java(tm) interpreter */
-/*20*/ KERN_JAVA_APPLETVIEWER, /* path to Java(tm) appletviewer */
- KERN_SPARC_REBOOT, /* reboot command on Sparc */
- KERN_CTLALTDEL, /* int: allow ctl-alt-del to reboot */
- KERN_PRINTK, /* sturct: control printk logging parameters */
- KERN_NAMETRANS, /* Name translation */
- KERN_PPC_HTABRECLAIM, /* turn htab reclaimation on/off on PPC */
- KERN_PPC_ZEROPAGED, /* turn idle page zeroing on/off on PPC */
- KERN_PPC_POWERSAVE_NAP, /* use nap mode for power saving */
- KERN_MODPROBE,
-/*29*/ KERN_SG_BIG_BUFF
+ KERN_OSTYPE=1, /* string: system version */
+ KERN_OSRELEASE=2, /* string: system release */
+ KERN_OSREV=3, /* int: system revision */
+ KERN_VERSION=4, /* string: compile time info */
+ KERN_SECUREMASK=5, /* struct: maximum rights mask */
+ KERN_PROF=6, /* table: profiling information */
+ KERN_NODENAME=7,
+ KERN_DOMAINNAME=8,
+
+ KERN_SECURELVL=14, /* int: system security level */
+ KERN_PANIC=15, /* int: panic timeout */
+ KERN_REALROOTDEV=16, /* real root device to mount after initrd */
+
+ KERN_JAVA_INTERPRETER=19, /* path to Java(tm) interpreter */
+ KERN_JAVA_APPLETVIEWER=20, /* path to Java(tm) appletviewer */
+ KERN_SPARC_REBOOT=21, /* reboot command on Sparc */
+ KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */
+ KERN_PRINTK=23, /* struct: control printk logging parameters */
+ KERN_NAMETRANS=24, /* Name translation */
+ KERN_PPC_HTABRECLAIM=25, /* turn htab reclaimation on/off on PPC */
+ KERN_PPC_ZEROPAGED=26, /* turn idle page zeroing on/off on PPC */
+ KERN_PPC_POWERSAVE_NAP=27, /* use nap mode for power saving */
+ KERN_MODPROBE=28,
+ KERN_SG_BIG_BUFF=29,
+ KERN_ACCT=30, /* BSD process accounting parameters */
+ KERN_PPC_L2CR=31, /* l2cr register on PPC */
};
/* CTL_VM names: */
enum
{
-/*1*/ VM_SWAPCTL=1, /* struct: Set vm swapping control */
- VM_SWAPOUT, /* int: Background pageout interval */
- VM_FREEPG, /* struct: Set free page thresholds */
- VM_BDFLUSH, /* struct: Control buffer cache flushing */
- VM_OVERCOMMIT_MEMORY, /* Turn off the virtual memory safety limit */
- VM_BUFFERMEM, /* struct: Set buffer memory thresholds */
- VM_PAGECACHE, /* struct: Set cache memory thresholds */
- VM_PAGERDAEMON, /* struct: Control kswapd behaviour */
-/*9*/ VM_PGT_CACHE /* struct: Set page table cache parameters */
+ VM_SWAPCTL=1, /* struct: Set vm swapping control */
+ VM_SWAPOUT=2, /* int: Background pageout interval */
+ VM_FREEPG=3, /* struct: Set free page thresholds */
+ VM_BDFLUSH=4, /* struct: Control buffer cache flushing */
+ VM_OVERCOMMIT_MEMORY=5, /* Turn off the virtual memory safety limit */
+ VM_BUFFERMEM=6, /* struct: Set buffer memory thresholds */
+ VM_PAGECACHE=7, /* struct: Set cache memory thresholds */
+ VM_PAGERDAEMON=8, /* struct: Control kswapd behaviour */
+ VM_PGT_CACHE=9 /* struct: Set page table cache parameters */
};
/* CTL_NET names: */
enum
{
-/*1*/ NET_CORE=1,
- NET_ETHER,
- NET_802,
- NET_UNIX,
- NET_IPV4,
- NET_IPX,
- NET_ATALK,
- NET_NETROM,
- NET_AX25,
-/*10*/ NET_BRIDGE,
- NET_ROSE,
- NET_IPV6,
- NET_X25,
- NET_TR,
-/*15*/ NET_DECNET
+ NET_CORE=1,
+ NET_ETHER=2,
+ NET_802=3,
+ NET_UNIX=4,
+ NET_IPV4=5,
+ NET_IPX=6,
+ NET_ATALK=7,
+ NET_NETROM=8,
+ NET_AX25=9,
+ NET_BRIDGE=10,
+ NET_ROSE=11,
+ NET_IPV6=12,
+ NET_X25=13,
+ NET_TR=14,
+ NET_DECNET=15
};
/* /proc/sys/net/core */
enum
{
-/*1*/ NET_CORE_WMEM_MAX=1,
- NET_CORE_RMEM_MAX,
- NET_CORE_WMEM_DEFAULT,
- NET_CORE_RMEM_DEFAULT,
- NET_CORE_DESTROY_DELAY,
- NET_CORE_MAX_BACKLOG,
- NET_CORE_FASTROUTE,
- NET_CORE_MSG_COST,
- NET_CORE_MSG_BURST,
-/*10*/ NET_CORE_OPTMEM_MAX,
+ NET_CORE_WMEM_MAX=1,
+ NET_CORE_RMEM_MAX=2,
+ NET_CORE_WMEM_DEFAULT=3,
+ NET_CORE_RMEM_DEFAULT=4,
+/* was NET_CORE_DESTROY_DELAY */
+ NET_CORE_MAX_BACKLOG=6,
+ NET_CORE_FASTROUTE=7,
+ NET_CORE_MSG_COST=8,
+ NET_CORE_MSG_BURST=9,
+ NET_CORE_OPTMEM_MAX=10,
};
/* /proc/sys/net/ethernet */
@@ -147,144 +151,143 @@ enum
enum
{
-/*1*/ NET_UNIX_DESTROY_DELAY=1,
-/*2*/ NET_UNIX_DELETE_DELAY,
+ NET_UNIX_DESTROY_DELAY=1,
+ NET_UNIX_DELETE_DELAY=2,
};
/* /proc/sys/net/ipv4 */
enum
{
/* v2.0 compatibile variables */
-/*8*/ NET_IPV4_FORWARD = 8,
- NET_IPV4_DYNADDR = 9,
-
-/*16*/ NET_IPV4_CONF = 16,
- NET_IPV4_NEIGH = 17,
- NET_IPV4_ROUTE = 18,
- NET_IPV4_FIB_HASH = 19,
-
-/*32*/ NET_IPV4_TCP_HOE_RETRANSMITS=32,
- NET_IPV4_TCP_TIMESTAMPS,
- NET_IPV4_TCP_WINDOW_SCALING,
- NET_IPV4_TCP_SACK,
- NET_IPV4_TCP_RETRANS_COLLAPSE,
- NET_IPV4_DEFAULT_TTL,
- NET_IPV4_AUTOCONFIG,
- NET_IPV4_NO_PMTU_DISC,
-/*40*/ NET_IPV4_TCP_SYN_RETRIES,
- NET_IPV4_IPFRAG_HIGH_THRESH,
- NET_IPV4_IPFRAG_LOW_THRESH,
- NET_IPV4_IPFRAG_TIME,
- NET_IPV4_TCP_MAX_KA_PROBES,
- NET_IPV4_TCP_KEEPALIVE_TIME,
- NET_IPV4_TCP_KEEPALIVE_PROBES,
- NET_IPV4_TCP_RETRIES1,
- NET_IPV4_TCP_RETRIES2,
- NET_IPV4_TCP_FIN_TIMEOUT,
-/*50*/ NET_IPV4_IP_MASQ_DEBUG,
- NET_TCP_SYNCOOKIES,
- NET_TCP_STDURG,
- NET_TCP_RFC1337,
- NET_TCP_SYN_TAILDROP,
- NET_TCP_MAX_SYN_BACKLOG,
- NET_IPV4_LOCAL_PORT_RANGE,
- NET_IPV4_ICMP_ECHO_IGNORE_ALL,
- NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS,
- NET_IPV4_ICMP_SOURCEQUENCH_RATE,
-/*60*/ NET_IPV4_ICMP_DESTUNREACH_RATE,
- NET_IPV4_ICMP_TIMEEXCEED_RATE,
- NET_IPV4_ICMP_PARAMPROB_RATE,
-/*63*/ NET_IPV4_ICMP_ECHOREPLY_RATE,
+ NET_IPV4_FORWARD=8,
+ NET_IPV4_DYNADDR=9,
+
+ NET_IPV4_CONF=16,
+ NET_IPV4_NEIGH=17,
+ NET_IPV4_ROUTE=18,
+ NET_IPV4_FIB_HASH=19,
+
+ NET_IPV4_TCP_TIMESTAMPS=33,
+ NET_IPV4_TCP_WINDOW_SCALING=34,
+ NET_IPV4_TCP_SACK=35,
+ NET_IPV4_TCP_RETRANS_COLLAPSE=36,
+ NET_IPV4_DEFAULT_TTL=37,
+ NET_IPV4_AUTOCONFIG=38,
+ NET_IPV4_NO_PMTU_DISC=39,
+ NET_IPV4_TCP_SYN_RETRIES=40,
+ NET_IPV4_IPFRAG_HIGH_THRESH=41,
+ NET_IPV4_IPFRAG_LOW_THRESH=42,
+ NET_IPV4_IPFRAG_TIME=43,
+ NET_IPV4_TCP_MAX_KA_PROBES=44,
+ NET_IPV4_TCP_KEEPALIVE_TIME=45,
+ NET_IPV4_TCP_KEEPALIVE_PROBES=46,
+ NET_IPV4_TCP_RETRIES1=47,
+ NET_IPV4_TCP_RETRIES2=48,
+ NET_IPV4_TCP_FIN_TIMEOUT=49,
+ NET_IPV4_IP_MASQ_DEBUG=50,
+ NET_TCP_SYNCOOKIES=51,
+ NET_TCP_STDURG=52,
+ NET_TCP_RFC1337=53,
+ NET_TCP_SYN_TAILDROP=54,
+ NET_TCP_MAX_SYN_BACKLOG=55,
+ NET_IPV4_LOCAL_PORT_RANGE=56,
+ NET_IPV4_ICMP_ECHO_IGNORE_ALL=57,
+ NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58,
+ NET_IPV4_ICMP_SOURCEQUENCH_RATE=59,
+ NET_IPV4_ICMP_DESTUNREACH_RATE=60,
+ NET_IPV4_ICMP_TIMEEXCEED_RATE=61,
+ NET_IPV4_ICMP_PARAMPROB_RATE=62,
+ NET_IPV4_ICMP_ECHOREPLY_RATE=63,
};
enum {
-/*1*/ NET_IPV4_ROUTE_FLUSH = 1,
- NET_IPV4_ROUTE_MIN_DELAY,
- NET_IPV4_ROUTE_MAX_DELAY,
- NET_IPV4_ROUTE_GC_THRESH,
- NET_IPV4_ROUTE_MAX_SIZE,
- NET_IPV4_ROUTE_GC_MIN_INTERVAL,
- NET_IPV4_ROUTE_GC_TIMEOUT,
- NET_IPV4_ROUTE_GC_INTERVAL,
- NET_IPV4_ROUTE_REDIRECT_LOAD,
-/*10*/ NET_IPV4_ROUTE_REDIRECT_NUMBER,
- NET_IPV4_ROUTE_REDIRECT_SILENCE,
- NET_IPV4_ROUTE_ERROR_COST,
- NET_IPV4_ROUTE_ERROR_BURST,
-/*14*/ NET_IPV4_ROUTE_GC_ELASTICITY,
+ NET_IPV4_ROUTE_FLUSH=1,
+ NET_IPV4_ROUTE_MIN_DELAY=2,
+ NET_IPV4_ROUTE_MAX_DELAY=3,
+ NET_IPV4_ROUTE_GC_THRESH=4,
+ NET_IPV4_ROUTE_MAX_SIZE=5,
+ NET_IPV4_ROUTE_GC_MIN_INTERVAL=6,
+ NET_IPV4_ROUTE_GC_TIMEOUT=7,
+ NET_IPV4_ROUTE_GC_INTERVAL=8,
+ NET_IPV4_ROUTE_REDIRECT_LOAD=9,
+ NET_IPV4_ROUTE_REDIRECT_NUMBER=10,
+ NET_IPV4_ROUTE_REDIRECT_SILENCE=11,
+ NET_IPV4_ROUTE_ERROR_COST=12,
+ NET_IPV4_ROUTE_ERROR_BURST=13,
+ NET_IPV4_ROUTE_GC_ELASTICITY=14,
};
enum
{
-/*-2*/ NET_PROTO_CONF_ALL = -2,
-/*-3*/ NET_PROTO_CONF_DEFAULT = -3,
+ NET_PROTO_CONF_ALL=-2,
+ NET_PROTO_CONF_DEFAULT=-3,
/* And device ifindices ... */
};
enum
{
-/*1*/ NET_IPV4_CONF_FORWARDING = 1,
- NET_IPV4_CONF_MC_FORWARDING,
- NET_IPV4_CONF_PROXY_ARP,
- NET_IPV4_CONF_ACCEPT_REDIRECTS,
- NET_IPV4_CONF_SECURE_REDIRECTS,
- NET_IPV4_CONF_SEND_REDIRECTS,
- NET_IPV4_CONF_SHARED_MEDIA,
- NET_IPV4_CONF_RP_FILTER,
- NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE,
-/*10*/ NET_IPV4_CONF_BOOTP_RELAY,
-/*11*/ NET_IPV4_CONF_LOG_MARTIANS,
+ NET_IPV4_CONF_FORWARDING=1,
+ NET_IPV4_CONF_MC_FORWARDING=2,
+ NET_IPV4_CONF_PROXY_ARP=3,
+ NET_IPV4_CONF_ACCEPT_REDIRECTS=4,
+ NET_IPV4_CONF_SECURE_REDIRECTS=5,
+ NET_IPV4_CONF_SEND_REDIRECTS=6,
+ NET_IPV4_CONF_SHARED_MEDIA=7,
+ NET_IPV4_CONF_RP_FILTER=8,
+ NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9,
+ NET_IPV4_CONF_BOOTP_RELAY=10,
+ NET_IPV4_CONF_LOG_MARTIANS=11,
};
/* /proc/sys/net/ipv6 */
enum {
-/*16*/ NET_IPV6_CONF = 16,
- NET_IPV6_NEIGH = 17,
-/*18*/ NET_IPV6_ROUTE = 18,
+ NET_IPV6_CONF=16,
+ NET_IPV6_NEIGH=17,
+ NET_IPV6_ROUTE=18,
};
enum {
-/*1*/ NET_IPV6_ROUTE_FLUSH = 1,
- NET_IPV6_ROUTE_GC_THRESH,
- NET_IPV6_ROUTE_MAX_SIZE,
- NET_IPV6_ROUTE_GC_MIN_INTERVAL,
- NET_IPV6_ROUTE_GC_TIMEOUT,
- NET_IPV6_ROUTE_GC_INTERVAL,
-/*7*/ NET_IPV6_ROUTE_GC_ELASTICITY,
+ NET_IPV6_ROUTE_FLUSH=1,
+ NET_IPV6_ROUTE_GC_THRESH=2,
+ NET_IPV6_ROUTE_MAX_SIZE=3,
+ NET_IPV6_ROUTE_GC_MIN_INTERVAL=4,
+ NET_IPV6_ROUTE_GC_TIMEOUT=5,
+ NET_IPV6_ROUTE_GC_INTERVAL=6,
+ NET_IPV6_ROUTE_GC_ELASTICITY=7,
};
enum {
-/*1*/ NET_IPV6_FORWARDING = 1,
- NET_IPV6_HOP_LIMIT,
- NET_IPV6_MTU,
- NET_IPV6_ACCEPT_RA,
- NET_IPV6_ACCEPT_REDIRECTS,
- NET_IPV6_AUTOCONF,
- NET_IPV6_DAD_TRANSMITS,
- NET_IPV6_RTR_SOLICITS,
- NET_IPV6_RTR_SOLICIT_INTERVAL,
-/*10*/ NET_IPV6_RTR_SOLICIT_DELAY,
+ NET_IPV6_FORWARDING=1,
+ NET_IPV6_HOP_LIMIT=2,
+ NET_IPV6_MTU=3,
+ NET_IPV6_ACCEPT_RA=4,
+ NET_IPV6_ACCEPT_REDIRECTS=5,
+ NET_IPV6_AUTOCONF=6,
+ NET_IPV6_DAD_TRANSMITS=7,
+ NET_IPV6_RTR_SOLICITS=8,
+ NET_IPV6_RTR_SOLICIT_INTERVAL=9,
+ NET_IPV6_RTR_SOLICIT_DELAY=10,
};
/* /proc/sys/net/<protocol>/neigh/<dev> */
enum {
-/*1*/ NET_NEIGH_MCAST_SOLICIT=1,
- NET_NEIGH_UCAST_SOLICIT,
- NET_NEIGH_APP_SOLICIT,
- NET_NEIGH_RETRANS_TIME,
- NET_NEIGH_REACHABLE_TIME,
- NET_NEIGH_DELAY_PROBE_TIME,
- NET_NEIGH_GC_STALE_TIME,
- NET_NEIGH_UNRES_QLEN,
- NET_NEIGH_PROXY_QLEN,
-/*10*/ NET_NEIGH_ANYCAST_DELAY,
- NET_NEIGH_PROXY_DELAY,
- NET_NEIGH_LOCKTIME,
- NET_NEIGH_GC_INTERVAL,
- NET_NEIGH_GC_THRESH1,
- NET_NEIGH_GC_THRESH2,
-/*16*/ NET_NEIGH_GC_THRESH3
+ NET_NEIGH_MCAST_SOLICIT=1,
+ NET_NEIGH_UCAST_SOLICIT=2,
+ NET_NEIGH_APP_SOLICIT=3,
+ NET_NEIGH_RETRANS_TIME=4,
+ NET_NEIGH_REACHABLE_TIME=5,
+ NET_NEIGH_DELAY_PROBE_TIME=6,
+ NET_NEIGH_GC_STALE_TIME=7,
+ NET_NEIGH_UNRES_QLEN=8,
+ NET_NEIGH_PROXY_QLEN=9,
+ NET_NEIGH_ANYCAST_DELAY=10,
+ NET_NEIGH_PROXY_DELAY=11,
+ NET_NEIGH_LOCKTIME=12,
+ NET_NEIGH_GC_INTERVAL=13,
+ NET_NEIGH_GC_THRESH1=14,
+ NET_NEIGH_GC_THRESH2=15,
+ NET_NEIGH_GC_THRESH3=16
};
/* /proc/sys/net/ipx */
@@ -292,83 +295,83 @@ enum {
/* /proc/sys/net/appletalk */
enum {
-/*1*/ NET_ATALK_AARP_EXPIRY_TIME = 1,
- NET_ATALK_AARP_TICK_TIME,
- NET_ATALK_AARP_RETRANSMIT_LIMIT,
-/*4*/ NET_ATALK_AARP_RESOLVE_TIME,
+ NET_ATALK_AARP_EXPIRY_TIME=1,
+ NET_ATALK_AARP_TICK_TIME=2,
+ NET_ATALK_AARP_RETRANSMIT_LIMIT=3,
+ NET_ATALK_AARP_RESOLVE_TIME=4,
};
/* /proc/sys/net/netrom */
enum {
-/*1*/ NET_NETROM_DEFAULT_PATH_QUALITY = 1,
- NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,
- NET_NETROM_NETWORK_TTL_INITIALISER,
- NET_NETROM_TRANSPORT_TIMEOUT,
- NET_NETROM_TRANSPORT_MAXIMUM_TRIES,
- NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,
- NET_NETROM_TRANSPORT_BUSY_DELAY,
- NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,
- NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,
-/*10*/ NET_NETROM_ROUTING_CONTROL,
-/*11*/ NET_NETROM_LINK_FAILS_COUNT
+ NET_NETROM_DEFAULT_PATH_QUALITY=1,
+ NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2,
+ NET_NETROM_NETWORK_TTL_INITIALISER=3,
+ NET_NETROM_TRANSPORT_TIMEOUT=4,
+ NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5,
+ NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6,
+ NET_NETROM_TRANSPORT_BUSY_DELAY=7,
+ NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
+ NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
+ NET_NETROM_ROUTING_CONTROL=10,
+ NET_NETROM_LINK_FAILS_COUNT=11
};
/* /proc/sys/net/ax25 */
enum {
-/*1*/ NET_AX25_IP_DEFAULT_MODE = 1,
- NET_AX25_DEFAULT_MODE,
- NET_AX25_BACKOFF_TYPE,
- NET_AX25_CONNECT_MODE,
- NET_AX25_STANDARD_WINDOW,
- NET_AX25_EXTENDED_WINDOW,
- NET_AX25_T1_TIMEOUT,
- NET_AX25_T2_TIMEOUT,
- NET_AX25_T3_TIMEOUT,
-/*10*/ NET_AX25_IDLE_TIMEOUT,
- NET_AX25_N2,
- NET_AX25_PACLEN,
- NET_AX25_PROTOCOL,
-/*14*/ NET_AX25_DAMA_SLAVE_TIMEOUT
+ NET_AX25_IP_DEFAULT_MODE=1,
+ NET_AX25_DEFAULT_MODE=2,
+ NET_AX25_BACKOFF_TYPE=3,
+ NET_AX25_CONNECT_MODE=4,
+ NET_AX25_STANDARD_WINDOW=5,
+ NET_AX25_EXTENDED_WINDOW=6,
+ NET_AX25_T1_TIMEOUT=7,
+ NET_AX25_T2_TIMEOUT=8,
+ NET_AX25_T3_TIMEOUT=9,
+ NET_AX25_IDLE_TIMEOUT=10,
+ NET_AX25_N2=11,
+ NET_AX25_PACLEN=12,
+ NET_AX25_PROTOCOL=13,
+ NET_AX25_DAMA_SLAVE_TIMEOUT=14
};
/* /proc/sys/net/rose */
enum {
-/*1*/ NET_ROSE_RESTART_REQUEST_TIMEOUT = 1,
- NET_ROSE_CALL_REQUEST_TIMEOUT,
- NET_ROSE_RESET_REQUEST_TIMEOUT,
- NET_ROSE_CLEAR_REQUEST_TIMEOUT,
- NET_ROSE_ACK_HOLD_BACK_TIMEOUT,
- NET_ROSE_ROUTING_CONTROL,
- NET_ROSE_LINK_FAIL_TIMEOUT,
- NET_ROSE_MAX_VCS,
- NET_ROSE_WINDOW_SIZE,
-/*10*/ NET_ROSE_NO_ACTIVITY_TIMEOUT,
+ NET_ROSE_RESTART_REQUEST_TIMEOUT=1,
+ NET_ROSE_CALL_REQUEST_TIMEOUT=2,
+ NET_ROSE_RESET_REQUEST_TIMEOUT=3,
+ NET_ROSE_CLEAR_REQUEST_TIMEOUT=4,
+ NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5,
+ NET_ROSE_ROUTING_CONTROL=6,
+ NET_ROSE_LINK_FAIL_TIMEOUT=7,
+ NET_ROSE_MAX_VCS=8,
+ NET_ROSE_WINDOW_SIZE=9,
+ NET_ROSE_NO_ACTIVITY_TIMEOUT=10,
};
/* /proc/sys/net/x25 */
enum {
-/*1*/ NET_X25_RESTART_REQUEST_TIMEOUT = 1,
- NET_X25_CALL_REQUEST_TIMEOUT,
- NET_X25_RESET_REQUEST_TIMEOUT,
- NET_X25_CLEAR_REQUEST_TIMEOUT,
-/*5*/ NET_X25_ACK_HOLD_BACK_TIMEOUT
+ NET_X25_RESTART_REQUEST_TIMEOUT=1,
+ NET_X25_CALL_REQUEST_TIMEOUT=2,
+ NET_X25_RESET_REQUEST_TIMEOUT=3,
+ NET_X25_CLEAR_REQUEST_TIMEOUT=4,
+ NET_X25_ACK_HOLD_BACK_TIMEOUT=5
};
/* /proc/sys/net/token-ring */
enum
{
-/*1*/ NET_TR_RIF_TIMEOUT=1
+ NET_TR_RIF_TIMEOUT=1
};
/* /proc/sys/net/decnet */
enum {
-/*1*/ NET_DECNET_DEF_T3_BROADCAST = 1,
- NET_DECNET_DEF_T3_POINTTOPOINT,
- NET_DECNET_DEF_T1,
- NET_DECNET_DEF_BCT1,
- NET_DECNET_CACHETIMEOUT,
-/*6*/ NET_DECNET_DEBUG_LEVEL
+ NET_DECNET_DEF_T3_BROADCAST=1,
+ NET_DECNET_DEF_T3_POINTTOPOINT=2,
+ NET_DECNET_DEF_T1=3,
+ NET_DECNET_DEF_BCT1=4,
+ NET_DECNET_CACHETIMEOUT=5,
+ NET_DECNET_DEBUG_LEVEL=6
};
/* CTL_PROC names: */
@@ -376,29 +379,29 @@ enum {
/* CTL_FS names: */
enum
{
-/*1*/ FS_NRINODE=1, /* int: current number of allocated inodes */
- FS_STATINODE,
- FS_MAXINODE, /* int: maximum number of inodes that can be allocated */
- FS_NRDQUOT, /* int: current number of allocated dquots */
- FS_MAXDQUOT, /* int: maximum number of dquots that can be allocated */
- FS_NRFILE, /* int: current number of allocated filedescriptors */
- FS_MAXFILE, /* int: maximum number of filedescriptors that can be allocated */
- FS_DENTRY,
- FS_NRSUPER, /* int: current number of allocated super_blocks */
-/*10*/ FS_MAXSUPER, /* int: maximum number of super_blocks that can be allocated */
+ FS_NRINODE=1, /* int:current number of allocated inodes */
+ FS_STATINODE=2,
+ FS_MAXINODE=3, /* int:maximum number of inodes that can be allocated */
+ FS_NRDQUOT=4, /* int:current number of allocated dquots */
+ FS_MAXDQUOT=5, /* int:maximum number of dquots that can be allocated */
+ FS_NRFILE=6, /* int:current number of allocated filedescriptors */
+ FS_MAXFILE=7, /* int:maximum number of filedescriptors that can be allocated */
+ FS_DENTRY=8,
+ FS_NRSUPER=9, /* int:current number of allocated super_blocks */
+ FS_MAXSUPER=10, /* int:maximum number of super_blocks that can be allocated */
};
/* CTL_DEBUG names: */
/* CTL_DEV names: */
enum {
-/*1*/ DEV_CDROM = 1,
-/*2*/ DEV_HWMON,
+ DEV_CDROM=1,
+ DEV_HWMON=2,
};
/* /proc/sys/dev/cdrom */
enum {
-/*1*/ DEV_CDROM_INFO = 1,
+ DEV_CDROM_INFO=1,
};
#ifdef __KERNEL__
diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h
index 00d40adca..76dab1072 100644
--- a/include/linux/sysv_fs.h
+++ b/include/linux/sysv_fs.h
@@ -37,28 +37,28 @@
as { byte2, byte3, byte0, byte1 }. We need conversions.
*/
-typedef unsigned long coh_ulong;
+typedef u32 coh_ulong;
-static inline coh_ulong to_coh_ulong (unsigned long x)
+static inline coh_ulong to_coh_ulong (u32 x)
{
return ((x & 0xffff) << 16) | ((x & 0xffff0000) >> 16);
}
-static inline unsigned long from_coh_ulong (coh_ulong x)
+static inline u32 from_coh_ulong (coh_ulong x)
{
return ((x & 0xffff) << 16) | ((x & 0xffff0000) >> 16);
}
/* inode numbers are 16 bit */
-typedef unsigned short sysv_ino_t;
+typedef u16 sysv_ino_t;
/* Block numbers are 24 bit, sometimes stored in 32 bit.
On Coherent FS, they are always stored in PDP-11 manner: the least
significant 16 bits come last.
*/
-typedef unsigned long sysv_zone_t;
+typedef u32 sysv_zone_t;
/* Among the blocks ... */
/* Xenix FS, Coherent FS: block 0 is the boot block, block 1 the super-block.
@@ -75,36 +75,36 @@ typedef unsigned long sysv_zone_t;
#define XENIX_NICINOD 100 /* number of inode cache entries */
#define XENIX_NICFREE 100 /* number of free block list chunk entries */
struct xenix_super_block {
- unsigned short s_isize; /* index of first data zone */
- unsigned long s_fsize __packed2__; /* total number of zones of this fs */
+ u16 s_isize; /* index of first data zone */
+ u32 s_fsize __packed2__; /* total number of zones of this fs */
/* the start of the free block list: */
- unsigned short s_nfree; /* number of free blocks in s_free, <= XENIX_NICFREE */
- unsigned long s_free[XENIX_NICFREE]; /* first free block list chunk */
+ u16 s_nfree; /* number of free blocks in s_free, <= XENIX_NICFREE */
+ u32 s_free[XENIX_NICFREE]; /* first free block list chunk */
/* the cache of free inodes: */
- unsigned short s_ninode; /* number of free inodes in s_inode, <= XENIX_NICINOD */
- sysv_ino_t s_inode[XENIX_NICINOD]; /* some free inodes */
+ u16 s_ninode; /* number of free inodes in s_inode, <= XENIX_NICINOD */
+ sysv_ino_t s_inode[XENIX_NICINOD]; /* some free inodes */
/* locks, not used by Linux: */
- char s_flock; /* lock during free block list manipulation */
- char s_ilock; /* lock during inode cache manipulation */
- char s_fmod; /* super-block modified flag */
- char s_ronly; /* flag whether fs is mounted read-only */
- unsigned long s_time __packed2__; /* time of last super block update */
- unsigned long s_tfree __packed2__; /* total number of free zones */
- unsigned short s_tinode; /* total number of free inodes */
- short s_dinfo[4]; /* device information ?? */
- char s_fname[6]; /* file system volume name */
- char s_fpack[6]; /* file system pack name */
- char s_clean; /* set to 0x46 when filesystem is properly unmounted */
- char s_fill[371];
- long s_magic; /* version of file system */
- long s_type; /* type of file system: 1 for 512 byte blocks
+ char s_flock; /* lock during free block list manipulation */
+ char s_ilock; /* lock during inode cache manipulation */
+ char s_fmod; /* super-block modified flag */
+ char s_ronly; /* flag whether fs is mounted read-only */
+ u32 s_time __packed2__; /* time of last super block update */
+ u32 s_tfree __packed2__; /* total number of free zones */
+ u16 s_tinode; /* total number of free inodes */
+ s16 s_dinfo[4]; /* device information ?? */
+ char s_fname[6]; /* file system volume name */
+ char s_fpack[6]; /* file system pack name */
+ char s_clean; /* set to 0x46 when filesystem is properly unmounted */
+ char s_fill[371];
+ s32 s_magic; /* version of file system */
+ s32 s_type; /* type of file system: 1 for 512 byte blocks
2 for 1024 byte blocks */
};
/* Xenix free list block on disk */
struct xenix_freelist_chunk {
- unsigned short fl_nfree; /* number of free blocks in fl_free, <= XENIX_NICFREE] */
- unsigned long fl_free[XENIX_NICFREE] __packed2__;
+ u16 fl_nfree; /* number of free blocks in fl_free, <= XENIX_NICFREE] */
+ u32 fl_free[XENIX_NICFREE] __packed2__;
};
/* SystemV FS comes in two variants:
@@ -116,116 +116,120 @@ struct xenix_freelist_chunk {
/* SystemV4 super-block data on disk */
struct sysv4_super_block {
- unsigned short s_isize; /* index of first data zone */
- unsigned long s_fsize; /* total number of zones of this fs */
+ u16 s_isize; /* index of first data zone */
+ u16 s_pad0;
+ u32 s_fsize; /* total number of zones of this fs */
/* the start of the free block list: */
- unsigned short s_nfree; /* number of free blocks in s_free, <= SYSV_NICFREE */
- unsigned long s_free[SYSV_NICFREE]; /* first free block list chunk */
+ u16 s_nfree; /* number of free blocks in s_free, <= SYSV_NICFREE */
+ u16 s_pad1;
+ u32 s_free[SYSV_NICFREE]; /* first free block list chunk */
/* the cache of free inodes: */
- unsigned short s_ninode; /* number of free inodes in s_inode, <= SYSV_NICINOD */
+ u16 s_ninode; /* number of free inodes in s_inode, <= SYSV_NICINOD */
+ u16 s_pad2;
sysv_ino_t s_inode[SYSV_NICINOD]; /* some free inodes */
/* locks, not used by Linux: */
- char s_flock; /* lock during free block list manipulation */
- char s_ilock; /* lock during inode cache manipulation */
- char s_fmod; /* super-block modified flag */
- char s_ronly; /* flag whether fs is mounted read-only */
- unsigned long s_time; /* time of last super block update */
- short s_dinfo[4]; /* device information ?? */
- unsigned long s_tfree; /* total number of free zones */
- unsigned short s_tinode; /* total number of free inodes */
- char s_fname[6]; /* file system volume name */
- char s_fpack[6]; /* file system pack name */
- long s_fill[12];
- long s_state; /* file system state: 0x7c269d38-s_time means clean */
- long s_magic; /* version of file system */
- long s_type; /* type of file system: 1 for 512 byte blocks
+ char s_flock; /* lock during free block list manipulation */
+ char s_ilock; /* lock during inode cache manipulation */
+ char s_fmod; /* super-block modified flag */
+ char s_ronly; /* flag whether fs is mounted read-only */
+ u32 s_time; /* time of last super block update */
+ s16 s_dinfo[4]; /* device information ?? */
+ u32 s_tfree; /* total number of free zones */
+ u16 s_tinode; /* total number of free inodes */
+ u16 s_pad3;
+ char s_fname[6]; /* file system volume name */
+ char s_fpack[6]; /* file system pack name */
+ s32 s_fill[12];
+ s32 s_state; /* file system state: 0x7c269d38-s_time means clean */
+ s32 s_magic; /* version of file system */
+ s32 s_type; /* type of file system: 1 for 512 byte blocks
2 for 1024 byte blocks */
};
/* SystemV4 free list block on disk */
struct sysv4_freelist_chunk {
- unsigned short fl_nfree; /* number of free blocks in fl_free, <= SYSV_NICFREE] */
- unsigned long fl_free[SYSV_NICFREE];
+ u16 fl_nfree; /* number of free blocks in fl_free, <= SYSV_NICFREE] */
+ u32 fl_free[SYSV_NICFREE];
};
/* SystemV2 super-block data on disk */
struct sysv2_super_block {
- unsigned short s_isize; /* index of first data zone */
- unsigned long s_fsize __packed2__; /* total number of zones of this fs */
+ u16 s_isize; /* index of first data zone */
+ u32 s_fsize __packed2__; /* total number of zones of this fs */
/* the start of the free block list: */
- unsigned short s_nfree; /* number of free blocks in s_free, <= SYSV_NICFREE */
- unsigned long s_free[SYSV_NICFREE]; /* first free block list chunk */
+ u16 s_nfree; /* number of free blocks in s_free, <= SYSV_NICFREE */
+ u32 s_free[SYSV_NICFREE]; /* first free block list chunk */
/* the cache of free inodes: */
- unsigned short s_ninode; /* number of free inodes in s_inode, <= SYSV_NICINOD */
+ u16 s_ninode; /* number of free inodes in s_inode, <= SYSV_NICINOD */
sysv_ino_t s_inode[SYSV_NICINOD]; /* some free inodes */
/* locks, not used by Linux: */
- char s_flock; /* lock during free block list manipulation */
- char s_ilock; /* lock during inode cache manipulation */
- char s_fmod; /* super-block modified flag */
- char s_ronly; /* flag whether fs is mounted read-only */
- unsigned long s_time __packed2__; /* time of last super block update */
- short s_dinfo[4]; /* device information ?? */
- unsigned long s_tfree __packed2__; /* total number of free zones */
- unsigned short s_tinode; /* total number of free inodes */
- char s_fname[6]; /* file system volume name */
- char s_fpack[6]; /* file system pack name */
- long s_fill[14];
- long s_state; /* file system state: 0xcb096f43 means clean */
- long s_magic; /* version of file system */
- long s_type; /* type of file system: 1 for 512 byte blocks
+ char s_flock; /* lock during free block list manipulation */
+ char s_ilock; /* lock during inode cache manipulation */
+ char s_fmod; /* super-block modified flag */
+ char s_ronly; /* flag whether fs is mounted read-only */
+ u32 s_time __packed2__; /* time of last super block update */
+ s16 s_dinfo[4]; /* device information ?? */
+ u32 s_tfree __packed2__; /* total number of free zones */
+ u16 s_tinode; /* total number of free inodes */
+ char s_fname[6]; /* file system volume name */
+ char s_fpack[6]; /* file system pack name */
+ s32 s_fill[14];
+ s32 s_state; /* file system state: 0xcb096f43 means clean */
+ s32 s_magic; /* version of file system */
+ s32 s_type; /* type of file system: 1 for 512 byte blocks
2 for 1024 byte blocks */
};
/* SystemV2 free list block on disk */
struct sysv2_freelist_chunk {
- unsigned short fl_nfree; /* number of free blocks in fl_free, <= SYSV_NICFREE] */
- unsigned long fl_free[SYSV_NICFREE] __packed2__;
+ u16 fl_nfree; /* number of free blocks in fl_free, <= SYSV_NICFREE] */
+ u32 fl_free[SYSV_NICFREE] __packed2__;
};
/* Coherent super-block data on disk */
#define COH_NICINOD 100 /* number of inode cache entries */
#define COH_NICFREE 64 /* number of free block list chunk entries */
struct coh_super_block {
- unsigned short s_isize; /* index of first data zone */
- coh_ulong s_fsize __packed2__; /* total number of zones of this fs */
+ u16 s_isize; /* index of first data zone */
+ coh_ulong s_fsize __packed2__; /* total number of zones of this fs */
/* the start of the free block list: */
- unsigned short s_nfree; /* number of free blocks in s_free, <= COH_NICFREE */
- coh_ulong s_free[COH_NICFREE] __packed2__; /* first free block list chunk */
+ u16 s_nfree; /* number of free blocks in s_free, <= COH_NICFREE */
+ coh_ulong s_free[COH_NICFREE] __packed2__; /* first free block list chunk */
/* the cache of free inodes: */
- unsigned short s_ninode; /* number of free inodes in s_inode, <= COH_NICINOD */
- sysv_ino_t s_inode[COH_NICINOD]; /* some free inodes */
+ u16 s_ninode; /* number of free inodes in s_inode, <= COH_NICINOD */
+ sysv_ino_t s_inode[COH_NICINOD]; /* some free inodes */
/* locks, not used by Linux: */
- char s_flock; /* lock during free block list manipulation */
- char s_ilock; /* lock during inode cache manipulation */
- char s_fmod; /* super-block modified flag */
- char s_ronly; /* flag whether fs is mounted read-only */
- coh_ulong s_time __packed2__; /* time of last super block update */
- coh_ulong s_tfree __packed2__; /* total number of free zones */
- unsigned short s_tinode; /* total number of free inodes */
- unsigned short s_interleave_m; /* interleave factor */
- unsigned short s_interleave_n;
- char s_fname[6]; /* file system volume name */
- char s_fpack[6]; /* file system pack name */
- unsigned long s_unique; /* zero, not used */
+ char s_flock; /* lock during free block list manipulation */
+ char s_ilock; /* lock during inode cache manipulation */
+ char s_fmod; /* super-block modified flag */
+ char s_ronly; /* flag whether fs is mounted read-only */
+ coh_ulong s_time __packed2__; /* time of last super block update */
+ coh_ulong s_tfree __packed2__; /* total number of free zones */
+ u16 s_tinode; /* total number of free inodes */
+ u16 s_interleave_m; /* interleave factor */
+ u16 s_interleave_n;
+ char s_fname[6]; /* file system volume name */
+ char s_fpack[6]; /* file system pack name */
+ u32 s_unique; /* zero, not used */
};
/* Coherent free list block on disk */
struct coh_freelist_chunk {
- unsigned short fl_nfree; /* number of free blocks in fl_free, <= COH_NICFREE] */
- unsigned long fl_free[COH_NICFREE] __packed2__;
+ u16 fl_nfree; /* number of free blocks in fl_free, <= COH_NICFREE] */
+ u32 fl_free[COH_NICFREE] __packed2__;
};
/* SystemV/Coherent inode data on disk */
struct sysv_inode {
- unsigned short i_mode;
- unsigned short i_nlink;
- unsigned short i_uid;
- unsigned short i_gid;
- unsigned long i_size;
+ u16 i_mode;
+ u16 i_nlink;
+ u16 i_uid;
+ u16 i_gid;
+ u32 i_size;
union { /* directories, regular files, ... */
- char i_addb[3*(10+1+1+1)+1]; /* zone numbers: max. 10 data blocks,
+ unsigned char i_addb[3*(10+1+1+1)+1]; /* zone numbers: max. 10 data blocks,
* then 1 indirection block,
* then 1 double indirection block,
* then 1 triple indirection block.
@@ -236,14 +240,14 @@ struct sysv_inode {
/* named pipes on Coherent */
struct {
char p_addp[30];
- short p_pnc;
- short p_prx;
- short p_pwx;
+ s16 p_pnc;
+ s16 p_prx;
+ s16 p_pwx;
} i_p;
} i_a;
- unsigned long i_atime; /* time of last access */
- unsigned long i_mtime; /* time of last modification */
- unsigned long i_ctime; /* time of creation */
+ u32 i_atime; /* time of last access */
+ u32 i_mtime; /* time of last modification */
+ u32 i_ctime; /* time of creation */
};
/* The admissible values for i_mode are listed in <linux/stat.h> :
@@ -301,7 +305,7 @@ extern inline unsigned short to_coh_imode(mode_t mode)
/* The number of inodes per block is
sb->sv_inodes_per_block = block_size / sizeof(struct sysv_inode) */
/* The number of indirect pointers per block is
- sb->sv_ind_per_block = block_size / sizeof(unsigned long) */
+ sb->sv_ind_per_block = block_size / sizeof(u32) */
/* SystemV/Coherent directory entry on disk */
diff --git a/include/linux/sysv_fs_i.h b/include/linux/sysv_fs_i.h
index 56a63f1ef..990b3543f 100644
--- a/include/linux/sysv_fs_i.h
+++ b/include/linux/sysv_fs_i.h
@@ -5,11 +5,11 @@
* SystemV/Coherent FS inode data in memory
*/
struct sysv_inode_info {
- unsigned long i_data[10+1+1+1]; /* zone numbers: max. 10 data blocks,
- * then 1 indirection block,
- * then 1 double indirection block,
- * then 1 triple indirection block.
- */
+ u32 i_data[10+1+1+1]; /* zone numbers: max. 10 data blocks,
+ * then 1 indirection block,
+ * then 1 double indirection block,
+ * then 1 triple indirection block.
+ */
};
#endif
diff --git a/include/linux/sysv_fs_sb.h b/include/linux/sysv_fs_sb.h
index 99a7c125d..df886f651 100644
--- a/include/linux/sysv_fs_sb.h
+++ b/include/linux/sysv_fs_sb.h
@@ -50,21 +50,21 @@ struct sysv_sb_info {
different superblock layout. */
char * s_sbd1; /* entire superblock data, for part 1 */
char * s_sbd2; /* entire superblock data, for part 2 */
- unsigned short *s_sb_fic_count; /* pointer to s_sbd->s_ninode */
- unsigned short *s_sb_fic_inodes; /* pointer to s_sbd->s_inode */
- unsigned short *s_sb_total_free_inodes; /* pointer to s_sbd->s_tinode */
- unsigned short *s_sb_flc_count; /* pointer to s_sbd->s_nfree */
- unsigned long *s_sb_flc_blocks; /* pointer to s_sbd->s_free */
- unsigned long *s_sb_total_free_blocks;/* pointer to s_sbd->s_tfree */
- unsigned long *s_sb_time; /* pointer to s_sbd->s_time */
- unsigned long *s_sb_state; /* pointer to s_sbd->s_state, only FSTYPE_SYSV */
+ u16 *s_sb_fic_count; /* pointer to s_sbd->s_ninode */
+ u16 *s_sb_fic_inodes; /* pointer to s_sbd->s_inode */
+ u16 *s_sb_total_free_inodes; /* pointer to s_sbd->s_tinode */
+ u16 *s_sb_flc_count; /* pointer to s_sbd->s_nfree */
+ u32 *s_sb_flc_blocks; /* pointer to s_sbd->s_free */
+ u32 *s_sb_total_free_blocks;/* pointer to s_sbd->s_tfree */
+ u32 *s_sb_time; /* pointer to s_sbd->s_time */
+ u32 *s_sb_state; /* pointer to s_sbd->s_state, only FSTYPE_SYSV */
/* We keep those superblock entities that don't change here;
this saves us an indirection and perhaps a conversion. */
- unsigned long s_firstinodezone; /* index of first inode zone */
- unsigned long s_firstdatazone; /* same as s_sbd->s_isize */
- unsigned long s_ninodes; /* total number of inodes */
- unsigned long s_ndatazones; /* total number of data zones */
- unsigned long s_nzones; /* same as s_sbd->s_fsize */
+ u32 s_firstinodezone; /* index of first inode zone */
+ u32 s_firstdatazone; /* same as s_sbd->s_isize */
+ u32 s_ninodes; /* total number of inodes */
+ u32 s_ndatazones; /* total number of data zones */
+ u32 s_nzones; /* same as s_sbd->s_fsize */
};
/* The fields s_ind_per_block_2_1, s_toobig_block are currently unused. */
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index eae70d918..9ee718102 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -71,7 +71,7 @@ enum {
};
#define TCP_STATE_MASK 0xF
-#define TCP_ACTION_FIN 1 << 7
+#define TCP_ACTION_FIN (1 << 7)
enum {
TCPF_ESTABLISHED = (1 << 1),
diff --git a/include/linux/time.h b/include/linux/time.h
index d60d8c776..d14feaaad 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -13,17 +13,27 @@ struct timespec {
#endif /* _STRUCT_TIMESPEC */
/*
- * change timeval to jiffies, trying to avoid the
+ * Change timeval to jiffies, trying to avoid the
* most obvious overflows..
+ *
+ * And some not so obvious.
+ *
+ * Note that we don't want to return MAX_LONG, because
+ * for various timeout reasons we often end up having
+ * to wait "jiffies+1" in order to guarantee that we wait
+ * at _least_ "jiffies" - so "jiffies+1" had better still
+ * be positive.
*/
+#define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
+
static __inline__ unsigned long
timespec_to_jiffies(struct timespec *value)
{
unsigned long sec = value->tv_sec;
long nsec = value->tv_nsec;
- if (sec > ((long)(~0UL >> 1) / HZ))
- return ~0UL >> 1;
+ if (sec >= (MAX_JIFFY_OFFSET / HZ))
+ return MAX_JIFFY_OFFSET;
nsec += 1000000000L / HZ - 1;
nsec /= 1000000000L / HZ;
return HZ * sec + nsec;
diff --git a/include/linux/timer.h b/include/linux/timer.h
index 64c461b2e..56f39893e 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -71,22 +71,26 @@ extern inline void init_timer(struct timer_list * timer)
timer->prev = NULL;
}
+extern inline int timer_pending(struct timer_list * timer)
+{
+ return timer->prev != NULL;
+}
+
/*
* These inlines deal with timer wrapping correctly. You are
* strongly encouraged to use them
* 1. Because people otherwise forget
* 2. Because if the timer wrap changes in future you wont have to
* alter your driver code.
+ *
+ * Do this with "<0" and ">=0" to only test the sign of the result. A
+ * good compiler would generate better code (and a really good compiler
+ * wouldn't care). Gcc is currently neither.
*/
+#define time_after(a,b) ((long)(b) - (long)(a) < 0)
+#define time_before(a,b) time_after(b,a)
-extern inline int time_before(unsigned long a, unsigned long b)
-{
- return((long)((a) - (b)) < 0L);
-}
-
-extern inline int time_after(unsigned long a, unsigned long b)
-{
- return((long)((a) - (b)) > 0L);
-}
+#define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0)
+#define time_before_eq(a,b) time_after_eq(b,a)
#endif
diff --git a/include/linux/tqueue.h b/include/linux/tqueue.h
index a2e1cb369..4d59ee872 100644
--- a/include/linux/tqueue.h
+++ b/include/linux/tqueue.h
@@ -97,19 +97,27 @@ extern __inline__ void queue_task(struct tq_struct *bh_pointer,
*/
extern __inline__ void run_task_queue(task_queue *list)
{
- struct tq_struct *p;
+ if (*list) {
+ unsigned long flags;
+ struct tq_struct *p;
- p = xchg(list,NULL);
- while (p) {
- void *arg;
- void (*f) (void *);
- struct tq_struct *save_p;
- arg = p -> data;
- f = p -> routine;
- save_p = p;
- p = p -> next;
- save_p -> sync = 0;
- (*f)(arg);
+ spin_lock_irqsave(&tqueue_lock, flags);
+ p = *list;
+ *list = NULL;
+ spin_unlock_irqrestore(&tqueue_lock, flags);
+
+ while (p) {
+ void *arg;
+ void (*f) (void *);
+ struct tq_struct *save_p;
+ arg = p -> data;
+ f = p -> routine;
+ save_p = p;
+ p = p -> next;
+ mb();
+ save_p -> sync = 0;
+ (*f)(arg);
+ }
}
}
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 755d0441c..f0e8e0656 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -9,7 +9,7 @@
* These constants are also useful for user-level apps (e.g., VC
* resizing).
*/
-#define MIN_NR_CONSOLES 1 /* must be at least 1 */
+#define MIN_NR_CONSOLES 1 /* must be at least 1 */
#define MAX_NR_CONSOLES 63 /* serial lines start at 64 */
#define MAX_NR_USER_CONSOLES 63 /* must be root to allocate above this */
/* Note: the ioctl VT_GETSTATE does not work for
@@ -87,7 +87,10 @@ struct screen_info {
unsigned char blue_pos; /* 0x2b */
unsigned char rsvd_size; /* 0x2c */
unsigned char rsvd_pos; /* 0x2d */
- /* 0x2e -- 0x3f reserved for future expansion */
+ unsigned short vesapm_seg; /* 0x2e */
+ unsigned short vesapm_off; /* 0x30 */
+ unsigned short pages; /* 0x32 */
+ /* 0x34 -- 0x3f reserved for future expansion */
};
extern struct screen_info screen_info;
@@ -353,11 +356,12 @@ extern int stli_init(void);
extern int riscom8_init(void);
extern int specialix_init(void);
extern int espserial_init(void);
+extern int macserial_init(void);
extern int tty_paranoia_check(struct tty_struct *tty, kdev_t device,
const char *routine);
extern char *tty_name(struct tty_struct *tty, char *buf);
-extern void tty_wait_until_sent(struct tty_struct * tty, int timeout);
+extern void tty_wait_until_sent(struct tty_struct * tty, long timeout);
extern int tty_check_change(struct tty_struct * tty);
extern void stop_tty(struct tty_struct * tty);
extern void start_tty(struct tty_struct * tty);
@@ -395,10 +399,6 @@ extern long serial_console_init(long kmem_start, long kmem_end);
extern int pcxe_open(struct tty_struct *tty, struct file *filp);
-/* console.c */
-
-extern void update_screen(int new_console);
-
/* printk.c */
extern void console_print(const char *);
diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h
index 1b8d98b22..0f5975b6e 100644
--- a/include/linux/ufs_fs.h
+++ b/include/linux/ufs_fs.h
@@ -16,6 +16,8 @@
*
* NeXTstep support added on February 5th 1998 by
* Niels Kristian Bech Jensen <nkbj@image.dk>.
+ *
+ * Write support by Daniel Pirkl <daniel.pirkl@email.cz>
*/
#ifndef __LINUX_UFS_FS_H
@@ -67,7 +69,7 @@
/* From here to next blank line, s_flags for ufs_sb_info */
/* endianness */
-#define UFS_BYTESEX 0x00000001 /* mask; leave room to 0xF */
+#define UFS_BYTESEX 0x00000001 /* mask; leave room to 0xF */
#if defined(__LITTLE_ENDIAN) || defined(__BIG_ENDIAN)
/* these are for sane architectures */
#define UFS_NATIVE_ENDIAN 0x00000000
@@ -91,20 +93,34 @@
#define UFS_ST_OLD 0x00000000
#define UFS_ST_44BSD 0x00000100
#define UFS_ST_SUN 0x00000200
-#define UFS_ST_NEXT 0x00000400
-/* filesystem flavors (combo of features) */
-#define UFS_FEATURES 0x00FFFFF0 /* room for extension */
-#define UFS_VANILLA 0x00000000
-#define UFS_OLD 0x00000000 /* 4.2BSD */
-#define UFS_44BSD 0x00000130
-#define UFS_HURD 0x00000130
-#define UFS_SUN 0x00000200
-#define UFS_NEXT 0x00000400
+/*cylinder group encoding */
+#define UFS_CG_MASK 0x00003000 /* mask for the following */
+#define UFS_CG_OLD 0x00000000
+#define UFS_CG_44BSD 0x00002000
+#define UFS_CG_SUN 0x00001000
/* fs_inodefmt options */
#define UFS_42INODEFMT -1
#define UFS_44INODEFMT 2
+/* mount options */
+#define UFS_MOUNT_ONERROR 0x0000000F
+#define UFS_MOUNT_ONERROR_PANIC 0x00000001
+#define UFS_MOUNT_ONERROR_LOCK 0x00000002
+#define UFS_MOUNT_ONERROR_UMOUNT 0x00000004
+#define UFS_MOUNT_ONERROR_REPAIR 0x00000008
+
+#define UFS_MOUNT_UFSTYPE 0x000000F0
+#define UFS_MOUNT_UFSTYPE_OLD 0x00000010
+#define UFS_MOUNT_UFSTYPE_44BSD 0x00000020
+#define UFS_MOUNT_UFSTYPE_SUN 0x00000040
+#define UFS_MOUNT_UFSTYPE_NEXT 0x00000080
+
+
+#define ufs_clear_opt(o,opt) o &= ~UFS_MOUNT_##opt
+#define ufs_set_opt(o,opt) o |= UFS_MOUNT_##opt
+#define ufs_test_opt(o,opt) ((o) & UFS_MOUNT_##opt)
+
/*
* MINFREE gives the minimum acceptable percentage of file system
* blocks which may be free. If the freelist drops below this level
@@ -202,6 +218,19 @@ struct ufs_timeval {
__s32 tv_usec;
};
+/*
+ * File types
+ */
+#define DT_UNKNOWN 0
+#define DT_FIFO 1
+#define DT_CHR 2
+#define DT_DIR 4
+#define DT_BLK 6
+#define DT_REG 8
+#define DT_LNK 10
+#define DT_SOCK 12
+#define DT_WHT 14
+
struct ufs_dir_entry {
__u32 d_ino; /* inode number of this entry */
__u16 d_reclen; /* length of this entry */
@@ -377,7 +406,15 @@ struct ufs_cylinder_group {
__u32 cg_iusedoff; /* (char) used inode map */
__u32 cg_freeoff; /* (u_char) free block map */
__u32 cg_nextfreeoff; /* (u_char) next available space */
- __u32 cg_sparecon[16]; /* reserved for future use */
+ union {
+ struct {
+ __u32 cg_clustersumoff; /* (u_int32) counts of avail clusters */
+ __u32 cg_clusteroff; /* (u_int8) free cluster map */
+ __u32 cg_nclusterblks; /* number of clusters this cg */
+ __u32 cg_sparecon[13]; /* reserved for future use */
+ } cg_44;
+ __u32 cg_sparecon[16]; /* reserved for future use */
+ } cg_u;
__u8 cg_space[1]; /* space for cylinder group maps */
/* actually longer */
};
@@ -393,7 +430,7 @@ struct ufs_inode {
__u16 ui_suid; /* 0x4 */
__u16 ui_sgid; /* 0x6 */
} oldids;
- __u32 ui_inumber; /* 0x4 lsf: inode number */
+ __u32 ui_inumber; /* 0x4 lsf: inode number */
__u32 ui_author; /* 0x4 GNU HURD: author */
} ui_u1;
__u64 ui_size; /* 0x8 */
@@ -412,22 +449,22 @@ struct ufs_inode {
__u32 ui_gen; /* 0x6c like ext2 i_version, for NFS support */
union {
struct {
- __u32 ui_shadow;/* 0x70 shadow inode with security data */
- __u32 ui_uid; /* 0x74 long EFT version of uid */
- __u32 ui_gid; /* 0x78 long EFT version of gid */
- __u32 ui_oeftflag;/* 0x7c reserved */
+ __u32 ui_shadow; /* 0x70 shadow inode with security data */
+ __u32 ui_uid; /* 0x74 long EFT version of uid */
+ __u32 ui_gid; /* 0x78 long EFT version of gid */
+ __u32 ui_oeftflag; /* 0x7c reserved */
} ui_sun;
struct {
- __u32 ui_uid; /* 0x70 File owner */
- __u32 ui_gid; /* 0x74 File group */
- __s32 ui_spare[2];/* 0x78 reserved */
+ __u32 ui_uid; /* 0x70 File owner */
+ __u32 ui_gid; /* 0x74 File group */
+ __s32 ui_spare[2]; /* 0x78 reserved */
} ui_44;
struct {
- __u32 ui_uid; /* 0x70 */
- __u32 ui_gid; /* 0x74 */
- __u16 ui_modeh;/* 0x78 mode high bits */
- __u16 ui_spare;/* 0x7A unused */
- __u32 ui_trans;/* 0x7c filesystem translator */
+ __u32 ui_uid; /* 0x70 */
+ __u32 ui_gid; /* 0x74 */
+ __u16 ui_modeh; /* 0x78 mode high bits */
+ __u16 ui_spare; /* 0x7A unused */
+ __u32 ui_trans; /* 0x7c filesystem translator */
} ui_hurd;
} ui_u3;
};
@@ -480,7 +517,6 @@ extern void ufs_read_inode (struct inode *);
extern void ufs_put_inode (struct inode *);
extern void ufs_write_inode (struct inode *);
extern int ufs_sync_inode (struct inode *);
-extern void ufs_print_inode (struct inode *);
extern void ufs_write_inode (struct inode *);
extern void ufs_delete_inode (struct inode *);
extern struct buffer_head * ufs_getfrag (struct inode *, unsigned, int, int *);
@@ -503,10 +539,8 @@ extern struct file_system_type ufs_fs_type;
extern void ufs_warning (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
extern void ufs_error (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
extern void ufs_panic (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
-
extern int init_ufs_fs(void);
extern void ufs_write_super (struct super_block *);
-extern void ufs_print_cylinder_stuff(struct ufs_cylinder_group *, __u32);
/* symlink.c */
extern struct inode_operations ufs_symlink_inode_operations;
diff --git a/include/linux/ufs_fs_i.h b/include/linux/ufs_fs_i.h
index e270b71aa..df4c75755 100644
--- a/include/linux/ufs_fs_i.h
+++ b/include/linux/ufs_fs_i.h
@@ -8,8 +8,6 @@
*
* NeXTstep support added on February 5th 1998 by
* Niels Kristian Bech Jensen <nkbj@image.dk>.
- *
- * write support by Daniel Pirkl <daniel.pirkl@email.cz>
*/
#ifndef _LINUX_UFS_FS_I_H
diff --git a/include/linux/ufs_fs_sb.h b/include/linux/ufs_fs_sb.h
index 3f89d4079..6ad0e0d96 100644
--- a/include/linux/ufs_fs_sb.h
+++ b/include/linux/ufs_fs_sb.h
@@ -8,8 +8,7 @@
*
* $Id: ufs_fs_sb.h,v 1.8 1998/05/06 12:04:40 jj Exp $
*
- * Write support by Daniel Pirkl (daniel.pirkl@email.cz)
- * Charles University (Prague), Faculty of Mathematics and Physics
+ * Write support by Daniel Pirkl <daniel.pirkl@email.cz>
*/
#ifndef __LINUX_UFS_FS_SB_H
@@ -41,8 +40,10 @@ struct ufs_cg_private_info {
__u32 c_iusedoff; /* (char) used inode map */
__u32 c_freeoff; /* (u_char) free block map */
__u32 c_nextfreeoff; /* (u_char) next available space */
+ __u32 c_clustersumoff;/* (u_int32) counts of avail clusters */
+ __u32 c_clusteroff; /* (u_int8) free cluster map */
+ __u32 c_nclusterblks; /* number of clusters this cg */
};
-
struct ufs_sb_private_info {
struct ufs_buffer_head s_ubh; /* buffer containing super block */
@@ -83,6 +84,7 @@ struct ufs_sb_private_info {
__u32 s_ipg; /* inodes per group */
__u32 s_fpg; /* fragments per group */
__u32 s_cpc; /* cyl per cycle in postbl */
+ __s32 s_contigsumsize;/* size of cluster summary array, 44bsd */
__s64 s_qbmask; /* ~usb_bmask */
__s64 s_qfmask; /* ~usb_fmask */
__s32 s_postblformat; /* format of positional layout tables */
@@ -102,11 +104,14 @@ struct ufs_sb_private_info {
__u32 s_nspb; /* number of sector per block */
__u32 s_inopf; /* inodes per fragment */
__u32 s_sbbase; /* offset of NeXTstep superblock */
+ __u32 s_bpf; /* bits per fragment */
+ __u32 s_bpfshift; /* bits per fragment shift*/
+ __u32 s_bpfmask; /* bits per fragment mask */
};
-#define UFS_MAX_GROUP_LOADED 1
-#define UFS_CGNO_EMPTY uspi->s_ncg
+#define UFS_MAX_GROUP_LOADED 8
+#define UFS_CGNO_EMPTY ((unsigned)-1)
struct ufs_sb_info {
struct ufs_sb_private_info * s_uspi;
@@ -119,6 +124,7 @@ struct ufs_sb_info {
struct ufs_cg_private_info * s_ucpi[UFS_MAX_GROUP_LOADED];
unsigned s_cgno[UFS_MAX_GROUP_LOADED];
unsigned short s_cg_loaded;
+ unsigned s_mount_opt;
};
/*
diff --git a/include/linux/umsdos_fs.h b/include/linux/umsdos_fs.h
index 7a170c115..14bdb829d 100644
--- a/include/linux/umsdos_fs.h
+++ b/include/linux/umsdos_fs.h
@@ -1,7 +1,9 @@
#ifndef LINUX_UMSDOS_FS_H
#define LINUX_UMSDOS_FS_H
-/* #define UMSDOS_DEBUG 1 */
+
+#define UMS_DEBUG 1 /* define for check_* functions */
+/*#define UMSDOS_DEBUG 1*/
#define UMSDOS_PARANOIA 1
#define UMSDOS_VERSION 0
diff --git a/include/linux/umsdos_fs.p b/include/linux/umsdos_fs.p
index 44a6eec2b..1bf76e560 100644
--- a/include/linux/umsdos_fs.p
+++ b/include/linux/umsdos_fs.p
@@ -2,32 +2,16 @@
void check_page_tables (void);
/* dir.c 22/06/95 00.22.12 */
-int compat_msdos_create(struct inode *dir,
- const char *name,
- int len,
- int mode,
- struct inode **inode);
int dummy_dir_read ( struct file *filp,
char *buf,
size_t size,
loff_t *count);
-void umsdos_lookup_patch_new(struct dentry *, struct umsdos_dirent *, off_t);
-void umsdos_lookup_patch (struct inode *dir,
- struct inode *inode,
- struct umsdos_dirent *entry,
- off_t emd_pos);
-int umsdos_dentry_to_entry (struct dentry *, struct umsdos_dirent *);
-int umsdos_inode2entry (struct inode *dir,
- struct inode *inode,
- struct umsdos_dirent *entry);
-int umsdos_locate_path (struct inode *inode, char *path);
+char * umsdos_d_path(struct dentry *, char *, int);
+void umsdos_lookup_patch_new(struct dentry *, struct umsdos_info *);
int umsdos_is_pseudodos (struct inode *dir, struct dentry *dentry);
-int umsdos_lookup_x (
- struct inode *dir,
- struct dentry *dentry,
- int nopseudo);
+int umsdos_lookup_x ( struct inode *dir, struct dentry *dentry, int nopseudo);
int UMSDOS_lookup(struct inode *, struct dentry *);
-struct dentry *umsdos_lookup_dentry(struct dentry *, char *, int);
+struct dentry *umsdos_lookup_dentry(struct dentry *, char *, int, int);
struct dentry *umsdos_solve_hlink (struct dentry *hlink);
@@ -51,7 +35,6 @@ ssize_t umsdos_emd_dir_read (struct file *filp,
struct dentry *umsdos_get_emd_dentry(struct dentry *);
int umsdos_have_emd(struct dentry *);
int umsdos_make_emd(struct dentry *);
-struct inode *umsdos_emd_dir_lookup (struct inode *dir, int creat);
int umsdos_emd_dir_readentry (struct file *, struct umsdos_dirent *);
int umsdos_newentry (struct dentry *, struct umsdos_info *);
int umsdos_newhidden (struct dentry *, struct umsdos_info *);
@@ -62,36 +45,19 @@ int umsdos_isempty (struct dentry *);
/* file.c 25/01/95 02.25.38 */
/* inode.c 12/06/95 09.49.40 */
-inline struct dentry *geti_dentry (struct inode *inode);
-void checkd_inode (struct inode *inode);
-void check_inode (struct inode *inode);
-void check_dentry (struct dentry *dentry);
-void check_dentry_path (struct dentry *dentry, const char *desc);
void fill_new_filp (struct file *filp, struct dentry *dentry);
-struct dentry *creat_dentry (const char *name,
- const int len,
- struct inode *inode,
- struct dentry *parent);
void UMSDOS_read_inode (struct inode *);
void UMSDOS_write_inode (struct inode *);
int UMSDOS_notify_change (struct dentry *, struct iattr *attr);
+int umsdos_notify_change_locked(struct dentry *, struct iattr *attr);
void UMSDOS_put_inode (struct inode *);
int UMSDOS_statfs (struct super_block *, struct statfs *, int);
struct super_block *UMSDOS_read_super (struct super_block *, void *, int);
void UMSDOS_put_super (struct super_block *);
-struct dentry *compat_umsdos_real_lookup (struct dentry *d_dir,
- const char *name,
- int len);
-int umsdos_real_lookup(struct inode *, struct dentry *);
void umsdos_setup_dir(struct dentry *);
-void umsdos_setup_dir_inode (struct inode *inode);
-void umsdos_set_dirinfo (struct inode *inode,
- struct inode *dir,
- off_t f_pos);
-int umsdos_isinit (struct inode *inode);
+void umsdos_set_dirinfo_new(struct dentry *, off_t);
void umsdos_patch_dentry_inode (struct dentry *, off_t);
-void umsdos_patch_inode (struct inode *, struct inode *, off_t);
int umsdos_get_dirowner (struct inode *inode, struct inode **result);
/* ioctl.c 22/06/95 00.22.08 */
@@ -99,6 +65,7 @@ int UMSDOS_ioctl_dir (struct inode *dir,
struct file *filp,
unsigned int cmd,
unsigned long data);
+
/* mangle.c 25/01/95 02.25.38 */
void umsdos_manglename (struct umsdos_info *info);
int umsdos_evalrecsize (int len);
@@ -138,9 +105,13 @@ int UMSDOS_rename (struct inode *old_dir,
struct dentry *new_dentry);
/* rdir.c 22/03/95 03.31.42 */
-int umsdos_rlookup_x (struct inode *dir,
- struct dentry *dentry,
- int nopseudo);
-int UMSDOS_rlookup (struct inode *dir,
- struct dentry *dentry);
+int umsdos_rlookup_x (struct inode *dir, struct dentry *dentry, int nopseudo);
+int UMSDOS_rlookup (struct inode *dir, struct dentry *dentry);
+
/* symlink.c 23/01/95 03.38.30 */
+
+/* check.c */
+void checkd_inode (struct inode *inode);
+void check_inode (struct inode *inode);
+void check_dentry (struct dentry *dentry);
+void check_dentry_path (struct dentry *dentry, const char *desc);
diff --git a/include/linux/umsdos_fs_i.h b/include/linux/umsdos_fs_i.h
index dea618561..111fd9137 100644
--- a/include/linux/umsdos_fs_i.h
+++ b/include/linux/umsdos_fs_i.h
@@ -62,12 +62,14 @@ struct umsdos_inode_info {
struct msdos_inode_info msdos_info;
struct pipe_inode_info pipe_info;
struct dir_locking_info dir_info;
- } u; /* Simply a filler, never referenced by fs/umsdos/... */
- unsigned long i_dir_owner; /* Inode of the dir which hold this entry */
- unsigned long i_emd_owner; /* Inode of the EMD file of i_dir_owner */
+ } u;
+ int i_patched; /* Inode has been patched */
+ int i_is_hlink; /* Resolved hardlink inode? */
+ unsigned long i_emd_owner; /* Is this the EMD file inode? */
off_t pos; /* Entry offset in the emd_owner file */
- /* The rest is used only if this inode describe a directory */
- unsigned long i_emd_dir; /* Inode of the EMD file of this inode */
+ /* The rest is used only if this inode describes a directory */
+ struct dentry *i_emd_dentry; /* EMD dentry for this directory */
+ unsigned long i_emd_dir; /* Inode of the EMD file */
};
#endif
diff --git a/include/linux/videodev.h b/include/linux/videodev.h
index e089d607e..7fe9f2d84 100644
--- a/include/linux/videodev.h
+++ b/include/linux/videodev.h
@@ -48,6 +48,7 @@ extern void video_unregister_device(struct video_device *);
#define VID_TYPE_SCALES 128 /* Scalable */
#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
+#define VID_TYPE_OUTPUT 1024 /* Can output video data */
struct video_capability
{
@@ -158,6 +159,9 @@ struct video_window
struct video_clip *clips; /* Set only */
int clipcount;
#define VIDEO_WINDOW_INTERLACE 1
+#define VIDEO_CLIP_BITMAP -1
+/* bitmap is 1024x625, a '1' bit represents a clipped pixel */
+#define VIDEO_CLIPMAP_SIZE (128 * 625)
};
struct video_capture
@@ -256,6 +260,7 @@ struct video_unit
#define VID_HARDWARE_RTRACK2 13
#define VID_HARDWARE_PERMEDIA2 14 /* Reserved for Permedia2 */
#define VID_HARDWARE_RIVA128 15 /* Reserved for RIVA 128 */
+#define VID_HARDWARE_PLANB 16 /* PowerMac motherboard video-in */
/*
* Initialiser list
diff --git a/include/linux/vt_buffer.h b/include/linux/vt_buffer.h
index a26c8090d..df0ee6ef1 100644
--- a/include/linux/vt_buffer.h
+++ b/include/linux/vt_buffer.h
@@ -16,9 +16,6 @@
#include <linux/config.h>
#ifdef CONFIG_VGA_CONSOLE
-#if !defined(CONFIG_FB) && !defined(CONFIG_FB_MODULE)
-#define VT_BUF_VRAM_ONLY
-#endif
#include <asm/vga.h>
#endif
diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h
index e4f48e908..e1b727680 100644
--- a/include/linux/vt_kern.h
+++ b/include/linux/vt_kern.h
@@ -35,27 +35,29 @@ void (*kd_mksound)(unsigned int hz, unsigned int ticks);
/* console.c */
struct console_font_op;
+struct consw;
-int vc_allocate(unsigned int console, int init);
+int vc_allocate(unsigned int console);
int vc_cons_allocated(unsigned int console);
int vc_resize(unsigned int lines, unsigned int cols,
unsigned int first, unsigned int last);
#define vc_resize_all(l, c) vc_resize(l, c, 0, MAX_NR_CONSOLES-1)
#define vc_resize_con(l, c, x) vc_resize(l, c, x, x)
void vc_disallocate(unsigned int console);
-void poke_blanked_console(void);
-void set_vesa_blanking(unsigned long arg);
-void vesa_blank(void);
-void vesa_powerdown(void);
void reset_palette(int currcons);
-void set_palette(void);
-void do_blank_screen(int nopowersave);
+void set_palette(int currcons);
+void do_blank_screen(int gfx_mode);
+void unblank_screen(void);
+void poke_blanked_console(void);
int con_font_op(int currcons, struct console_font_op *op);
int con_set_cmap(unsigned char *cmap);
int con_get_cmap(unsigned char *cmap);
void scrollback(int);
void scrollfront(int);
void update_region(int currcons, unsigned long start, int count);
+void redraw_screen(int new_console, int is_switch);
+#define update_screen(x) redraw_screen(x, 0)
+#define switch_screen(x) redraw_screen(x, 1)
struct tty_struct;
int tioclinux(struct tty_struct *tty, unsigned long arg);
@@ -75,6 +77,7 @@ int con_get_unimap(int currcons, ushort ct, ushort *uct, struct unipair *list);
int con_set_default_unimap(int currcons);
void con_free_unimap(int currcons);
void con_protect_unimap(int currcons, int rdonly);
+int con_copy_unimap(int dstcons, int srccons);
/* vt.c */
diff --git a/include/linux/wanrouter.h b/include/linux/wanrouter.h
index ed38830ce..fd63868f9 100644
--- a/include/linux/wanrouter.h
+++ b/include/linux/wanrouter.h
@@ -319,7 +319,7 @@ typedef struct wan_device
void* private; /* -> driver private data */
/****** hardware configuration ******/
unsigned ioport; /* adapter I/O port base #1 */
- unsigned long maddr; /* dual-port memory address */
+ void * maddr; /* dual-port memory address */
unsigned msize; /* dual-port memory size */
int irq; /* interrupt request level */
int dma; /* DMA request level */
diff --git a/include/linux/wavefront.h b/include/linux/wavefront.h
index 736fc2747..f5f4052d6 100644
--- a/include/linux/wavefront.h
+++ b/include/linux/wavefront.h
@@ -150,10 +150,6 @@ typedef unsigned char UCHAR8;
#define WF_MIDI_VIRTUAL_IS_EXTERNAL 0x2
#define WF_MIDI_IN_TO_SYNTH_DISABLED 0x4
-/* See wavefront.c for details */
-
-#define WAVEFRONT_MAX_DEVICES 1 /* How many WaveFront cards we can handle */
-
/* slot indexes for struct address_info: makes code a little more mnemonic */
#define WF_SYNTH_SLOT 0
@@ -502,11 +498,11 @@ typedef union wf_any {
wavefront_drum d;
} wavefront_any;
-/* Hannu Savolainen hoped that his "patch_info" struct in soundcard.h
- might work for other wavetable-based patch-loading situations.
- Alas, his fears were correct. The WaveFront doesn't even come with
- just "patches", but several different kinds of structures that
- control the process of generating sound.
+/* Hannu Solvainen hoped that his "patch_info" struct in soundcard.h
+ might work for other wave-table based patch loading situations.
+ Alas, his fears were correct. The WaveFront doesn't even come with
+ just "patches", but several different kind of structures that
+ control the sound generation process.
*/
typedef struct wf_patch_info {
@@ -662,7 +658,7 @@ typedef struct wf_fx_info {
/* Allow direct user-space control over FX memory/coefficient data.
In theory this could be used to download the FX microprogram,
- but it would be a little slower, and involve some weird code.
+ but it would be a little slower, and involve some wierd code.
*/
#define WFFX_MEMSET 69
diff --git a/include/linux/x25.h b/include/linux/x25.h
index 0435e9701..6f3f300b0 100644
--- a/include/linux/x25.h
+++ b/include/linux/x25.h
@@ -5,8 +5,6 @@
#ifndef X25_KERNEL_H
#define X25_KERNEL_H
-#define PF_X25 AF_X25
-
#define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0)
#define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1)
#define SIOCX25GFACILITIES (SIOCPROTOPRIVATE + 2)
diff --git a/include/linux/zorro.h b/include/linux/zorro.h
index e156b5bac..d2b68111f 100644
--- a/include/linux/zorro.h
+++ b/include/linux/zorro.h
@@ -399,6 +399,7 @@ typedef __u32 zorro_id;
#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_REG ZORRO_ID(VILLAGE_TRONIC, 0x17, 0)
#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z3 ZORRO_ID(VILLAGE_TRONIC, 0x18, 0)
#define ZORRO_PROD_VILLAGE_TRONIC_ARIADNE ZORRO_ID(VILLAGE_TRONIC, 0xC9, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_ARIADNE2 ZORRO_ID(VILLAGE_TRONIC, 0xCA, 0)
#define ZORRO_MANUF_UTILITIES_UNLIMITED 0x087B
#define ZORRO_PROD_UTILITIES_UNLIMITED_EMPLANT_DELUXE ZORRO_ID(UTILITIES_UNLIMITED, 0x15, 0)
@@ -427,8 +428,8 @@ typedef __u32 zorro_id;
#define ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE ZORRO_ID(M_TECH_GERMANY, 0x24, 0)
#define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_4 0x0891
-#define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_REG ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x01, 0)
-#define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_RAM ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x02, 0)
+#define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_RAM ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x01, 0)
+#define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_REG ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x02, 0)
#define ZORRO_MANUF_APOLLO_1 0x0892
#define ZORRO_PROD_APOLLO_A1200 ZORRO_ID(APOLLO_1, 0x01, 0)
diff --git a/include/net/ip.h b/include/net/ip.h
index 63ef8b0a2..52686031e 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -166,7 +166,7 @@ extern __inline__ void ip_send(struct sk_buff *skb)
ip_finish_output(skb);
}
-static __inline__
+extern __inline__
int ip_decrease_ttl(struct iphdr *iph)
{
u16 check = iph->check;
@@ -177,6 +177,14 @@ int ip_decrease_ttl(struct iphdr *iph)
return --iph->ttl;
}
+extern __inline__
+int ip_dont_fragment(struct sock *sk, struct dst_entry *dst)
+{
+ return (sk->ip_pmtudisc == IP_PMTUDISC_DO ||
+ (sk->ip_pmtudisc == IP_PMTUDISC_WANT &&
+ !(dst->mxlock&(1<<RTAX_MTU))));
+}
+
/*
* Map a multicast IP onto multicast MAC for type ethernet.
*/
@@ -233,7 +241,10 @@ extern int ip_setsockopt(struct sock *sk, int level, int optname, char *optval,
extern int ip_getsockopt(struct sock *sk, int level, int optname, char *optval, int *optlen);
extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *));
-extern int ipv4_backlog_rcv(struct sock *sk, struct sk_buff *skb);
-
+extern int ip_recv_error(struct sock *sk, struct msghdr *msg, int len);
+extern void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err,
+ u16 port, u32 info, u8 *payload);
+extern void ip_local_error(struct sock *sk, int err, u32 daddr, u16 dport,
+ u32 info);
#endif /* _IP_H */
diff --git a/include/net/ip_autofw.h b/include/net/ip_autofw.h
deleted file mode 100644
index feeec7bb1..000000000
--- a/include/net/ip_autofw.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <linux/types.h>
-#include <linux/kernel.h>
-
-#ifndef _IP_AUTOFW_H
-#define _IP_AUTOFW_H
-
-#define IP_AUTOFW_EXPIRE 15*HZ
-
-#define IP_FWD_RANGE 1
-#define IP_FWD_PORT 2
-#define IP_FWD_DIRECT 3
-
-#define IP_AUTOFW_ACTIVE 1
-#define IP_AUTOFW_USETIME 2
-#define IP_AUTOFW_SECURE 4
-
-struct ip_autofw {
- struct ip_autofw * next;
- __u16 type;
- __u16 low;
- __u16 hidden;
- __u16 high;
- __u16 visible;
- __u16 protocol;
- __u32 lastcontact;
- __u32 where;
- __u16 ctlproto;
- __u16 ctlport;
- __u16 flags;
- struct timer_list timer;
-};
-int ip_autofw_init(void);
-#endif /* _IP_AUTOFW_H */
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
index b79e4d0fb..5c8d6bf8e 100644
--- a/include/net/ip_fib.h
+++ b/include/net/ip_fib.h
@@ -27,17 +27,10 @@ struct kern_rta
void *rta_gw;
u32 *rta_priority;
void *rta_prefsrc;
-#ifdef CONFIG_RTNL_OLD_IFINFO
- unsigned *rta_window;
- unsigned *rta_rtt;
- unsigned *rta_mtu;
- unsigned char *rta_ifname;
-#else
struct rtattr *rta_mx;
struct rtattr *rta_mp;
unsigned char *rta_protoinfo;
unsigned char *rta_flow;
-#endif
struct rta_cacheinfo *rta_ci;
};
@@ -69,17 +62,12 @@ struct fib_info
unsigned fib_flags;
int fib_protocol;
u32 fib_prefsrc;
-#ifdef CONFIG_RTNL_OLD_IFINFO
- unsigned fib_mtu;
- unsigned fib_rtt;
- unsigned fib_window;
-#else
+ u32 fib_priority;
#define FIB_MAX_METRICS RTAX_RTT
unsigned fib_metrics[FIB_MAX_METRICS];
#define fib_mtu fib_metrics[RTAX_MTU-1]
#define fib_window fib_metrics[RTAX_WINDOW-1]
#define fib_rtt fib_metrics[RTAX_RTT-1]
-#endif
int fib_nhs;
#ifdef CONFIG_IP_ROUTE_MULTIPATH
int fib_power;
diff --git a/include/net/ip_masq.h b/include/net/ip_masq.h
index 716eea2ef..03c65fddc 100644
--- a/include/net/ip_masq.h
+++ b/include/net/ip_masq.h
@@ -2,7 +2,7 @@
* IP masquerading functionality definitions
*/
-#include <linux/config.h> /* for CONFIG_IP_MASQ_NDEBUG */
+#include <linux/config.h> /* for CONFIG_IP_MASQ_DEBUG */
#ifndef _IP_MASQ_H
#define _IP_MASQ_H
@@ -36,18 +36,27 @@
*/
#define MASQUERADE_EXPIRE_ICMP 125*HZ
-#define IP_MASQ_F_OUT_SEQ 0x01 /* must do output seq adjust */
-#define IP_MASQ_F_IN_SEQ 0x02 /* must do input seq adjust */
-#define IP_MASQ_F_NO_DPORT 0x04 /* no dport set yet */
-#define IP_MASQ_F_NO_DADDR 0x08 /* no daddr yet */
-#define IP_MASQ_F_HASHED 0x10 /* hashed entry */
-
-#define IP_MASQ_F_NO_SPORT 0x200 /* no sport set yet */
-#define IP_MASQ_F_NO_REPLY 0x800 /* no reply yet from outside */
-#define IP_MASQ_F_MPORT 0x1000 /* own mport specified */
+#define IP_MASQ_MOD_CTL 0x00
+#define IP_MASQ_USER_CTL 0x01
#ifdef __KERNEL__
+#define IP_MASQ_TAB_SIZE 256
+
+#define IP_MASQ_F_NO_DADDR 0x0001 /* no daddr yet */
+#define IP_MASQ_F_NO_DPORT 0x0002 /* no dport set yet */
+#define IP_MASQ_F_NO_SADDR 0x0004 /* no sport set yet */
+#define IP_MASQ_F_NO_SPORT 0x0008 /* no sport set yet */
+
+#define IP_MASQ_F_NO_REPLY 0x0010 /* no reply yet from outside */
+
+#define IP_MASQ_F_HASHED 0x0100 /* hashed entry */
+#define IP_MASQ_F_OUT_SEQ 0x0200 /* must do output seq adjust */
+#define IP_MASQ_F_IN_SEQ 0x0400 /* must do input seq adjust */
+
+#define IP_MASQ_F_MPORT 0x1000 /* own mport specified */
+#define IP_MASQ_F_USER 0x2000 /* from uspace */
+
/*
* Delta seq. info structure
* Each MASQ struct has 2 (output AND input seq. changes).
@@ -81,7 +90,8 @@ struct ip_masq {
};
/*
- * timeout values
+ * Timeout values
+ * ipchains holds a copy of this definition
*/
struct ip_fw_masq {
@@ -90,8 +100,13 @@ struct ip_fw_masq {
int udp_timeout;
};
-extern struct ip_fw_masq *ip_masq_expire;
-
+union ip_masq_tphdr {
+ unsigned char *raw;
+ struct udphdr *uh;
+ struct tcphdr *th;
+ struct icmphdr *icmph;
+ __u16 *portp;
+};
/*
* [0]: UDP free_ports
* [1]: TCP free_ports
@@ -121,7 +136,18 @@ extern void ip_masq_control_add(struct ip_masq *ms, struct ip_masq* ctl_ms);
extern void ip_masq_control_del(struct ip_masq *ms);
extern struct ip_masq * ip_masq_control_get(struct ip_masq *ms);
+struct ip_masq_ctl;
+
+struct ip_masq_hook {
+ int (*ctl)(int, struct ip_masq_ctl *, int);
+ int (*info)(char *, char **, off_t, int, int);
+};
+extern struct ip_masq *ip_masq_m_tab[IP_MASQ_TAB_SIZE];
+extern struct ip_masq *ip_masq_s_tab[IP_MASQ_TAB_SIZE];
+extern const char * ip_masq_state_name(int state);
+extern struct ip_masq_hook *ip_masq_user_hook;
+extern u32 ip_masq_select_addr(struct device *dev, u32 dst, int scope);
/*
*
* IP_MASQ_APP: IP application masquerading definitions
@@ -201,55 +227,26 @@ static __inline__ struct ip_masq * ip_masq_out_get_iph(const struct iphdr *iph)
extern void ip_masq_put(struct ip_masq *ms);
-/*
- * Locking stuff
- */
-
-
-static __inline__ void ip_masq_lock(atomic_t *lock, int rw)
-{
-#if 0
- if (rw)
-#endif
- start_bh_atomic();
- atomic_inc(lock);
-}
-
-static __inline__ void ip_masq_unlock(atomic_t *lock, int rw)
-{
- atomic_dec(lock);
-#if 0
- if (rw)
-#endif
- end_bh_atomic();
-}
-
+extern rwlock_t __ip_masq_lock;
+
+#ifdef __SMP__
+#define read_lock_bh(lock) do { start_bh_atomic(); read_lock(lock); \
+ } while (0)
+#define read_unlock_bh(lock) do { read_unlock(lock); end_bh_atomic(); \
+ } while (0)
+#define write_lock_bh(lock) do { start_bh_atomic(); write_lock(lock); \
+ } while (0)
+#define write_unlock_bh(lock) do { write_unlock(lock); end_bh_atomic(); \
+ } while (0)
+#else
+#define read_lock_bh(lock) start_bh_atomic()
+#define read_unlock_bh(lock) end_bh_atomic()
+#define write_lock_bh(lock) start_bh_atomic()
+#define write_unlock_bh(lock) end_bh_atomic()
+#endif
/*
- * Sleep-able lockzzz...
- */
-static __inline__ void ip_masq_lockz(atomic_t *lock, struct wait_queue ** waitq, int rw)
-{
- if (rw)
- while(atomic_read(lock)) sleep_on(waitq);
- ip_masq_lock(lock, rw);
-}
-
-static __inline__ void ip_masq_unlockz(atomic_t *lock, struct wait_queue ** waitq, int rw)
-{
- ip_masq_unlock(lock, rw);
- if (rw)
- wake_up(waitq);
-}
-
-/*
- * Perfect for winning races ... ;)
+ *
*/
-static __inline__ int ip_masq_nlocks(atomic_t *lock)
-{
- return atomic_read(lock);
-}
-
-extern atomic_t __ip_masq_lock;
/*
* Debugging stuff
@@ -257,7 +254,7 @@ extern atomic_t __ip_masq_lock;
extern int ip_masq_get_debug_level(void);
-#ifndef CONFIG_IP_MASQ_NDEBUG
+#ifdef CONFIG_IP_MASQ_DEBUG
#define IP_MASQ_DEBUG(level, msg...) do { \
if (level <= ip_masq_get_debug_level()) \
printk(KERN_DEBUG "IP_MASQ:" ## msg); \
@@ -279,6 +276,8 @@ extern int ip_masq_get_debug_level(void);
/*
* /proc/net entry
*/
+extern int ip_masq_proc_register(struct proc_dir_entry *);
+extern void ip_masq_proc_unregister(struct proc_dir_entry *);
extern int ip_masq_app_getinfo(char *buffer, char **start, off_t offset, int length, int dummy);
/*
diff --git a/include/net/ip_masq_mod.h b/include/net/ip_masq_mod.h
index 427421d9b..7cd9a7f32 100644
--- a/include/net/ip_masq_mod.h
+++ b/include/net/ip_masq_mod.h
@@ -14,11 +14,9 @@
#include <linux/proc_fs.h>
#include <net/ip_masq.h>
-enum {
- IP_MASQ_MOD_NOP,
- IP_MASQ_MOD_ACCEPT,
- IP_MASQ_MOD_REJECT
-};
+#define IP_MASQ_MOD_NOP 0
+#define IP_MASQ_MOD_ACCEPT 1
+#define IP_MASQ_MOD_REJECT -1
struct ip_masq_mod {
struct ip_masq_mod *next; /* next mod for addrs. lookups */
@@ -27,29 +25,32 @@ struct ip_masq_mod {
atomic_t refcnt;
atomic_t mmod_nent; /* number of entries */
struct proc_dir_entry *mmod_proc_ent;
- int (*mmod_ctl) (int optname, struct ip_fw_masqctl *, int optlen);
+ int (*mmod_ctl) (int optname, struct ip_masq_ctl *, int optlen);
int (*mmod_init) (void);
int (*mmod_done) (void);
- int (*mmod_in_rule) (struct iphdr *, __u16 *);
- int (*mmod_in_update) (struct iphdr *, struct ip_masq *);
- struct ip_masq * (*mmod_in_create) (struct iphdr *, __u16 *, __u32);
- int (*mmod_out_rule) (struct iphdr *, __u16 *);
- int (*mmod_out_update) (struct iphdr *, __u16 *, struct ip_masq *);
- struct ip_masq * (*mmod_out_create) (struct iphdr *, __u16 *, __u32);
+ int (*mmod_in_rule) (const struct sk_buff *, const struct iphdr *);
+ int (*mmod_in_update) (const struct sk_buff *, const struct iphdr *,
+ struct ip_masq *);
+ struct ip_masq * (*mmod_in_create) (const struct sk_buff *, const struct iphdr *, __u32);
+ int (*mmod_out_rule) (const struct sk_buff *, const struct iphdr *);
+ int (*mmod_out_update) (const struct sk_buff *, const struct iphdr *,
+ struct ip_masq *);
+ struct ip_masq * (*mmod_out_create) (const struct sk_buff *, const struct iphdr *, __u32);
};
/*
* Service routines (called from ip_masq.c)
*/
-int ip_masq_mod_out_rule(struct iphdr *iph, __u16 *portp);
-int ip_masq_mod_out_update(struct iphdr *iph, __u16 *portp, struct ip_masq *ms);
-struct ip_masq * ip_masq_mod_out_create(struct iphdr *iph, __u16 *portp, __u32 maddr);
-int ip_masq_mod_in_rule(struct iphdr *iph, __u16 *portp);
-int ip_masq_mod_in_update(struct iphdr *iph, __u16 *portp, struct ip_masq *ms);
-struct ip_masq * ip_masq_mod_in_create(struct iphdr *iph, __u16 *portp, __u32 maddr);
+int ip_masq_mod_out_rule(const struct sk_buff *, const struct iphdr *);
+int ip_masq_mod_out_update(const struct sk_buff *, const struct iphdr *, struct ip_masq *ms);
+struct ip_masq * ip_masq_mod_out_create(const struct sk_buff *, const struct iphdr *iph, __u32 maddr);
+
+int ip_masq_mod_in_rule(const struct sk_buff *, const struct iphdr *iph);
+int ip_masq_mod_in_update(const struct sk_buff *, const struct iphdr *iph, struct ip_masq *ms);
+struct ip_masq * ip_masq_mod_in_create(const struct sk_buff *, const struct iphdr *iph, __u32 maddr);
-extern int ip_masq_mod_ctl(int optname, struct ip_fw_masqctl *, int len);
+extern int ip_masq_mod_ctl(int optname, struct ip_masq_ctl *, int len);
/*
* ip_masq_mod registration functions
@@ -60,6 +61,13 @@ extern int ip_masq_mod_lkp_unlink(struct ip_masq_mod *mmod);
extern int ip_masq_mod_lkp_link(struct ip_masq_mod *mmod);
/*
+ * init functions protos
+ */
+extern int ip_portfw_init(void);
+extern int ip_markfw_init(void);
+extern int ip_autofw_init(void);
+
+/*
* Utility ...
*/
static __inline__ void ip_masq_mod_dec_nent(struct ip_masq_mod *mmod)
diff --git a/include/net/ip_portfw.h b/include/net/ip_portfw.h
deleted file mode 100644
index f2b51ea1c..000000000
--- a/include/net/ip_portfw.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _IP_PORTFW_H
-#define _IP_PORTFW_H
-
-#include <linux/types.h>
-
-#define IP_PORTFW_PORT_MIN 1
-#define IP_PORTFW_PORT_MAX 60999
-
-#ifdef __KERNEL__
-struct ip_portfw {
- struct list_head list;
- __u32 laddr, raddr;
- __u16 lport, rport;
- atomic_t pref_cnt; /* pref "counter" down to 0 */
- int pref; /* user set pref */
-};
-extern int ip_portfw_init(void);
-
-#endif /* __KERNEL__ */
-
-struct ip_portfw_edits {
- __u16 protocol; /* Which protocol are we talking? */
- __u32 laddr, raddr; /* Remote address */
- __u16 lport, rport; /* Local and remote port */
- __u16 dummy; /* Make up to multiple of 4 */
- int pref; /* Preference value */
-};
-
-#endif
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 03f30b644..118eec2e9 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -4,7 +4,7 @@
* Authors:
* Pedro Roque <roque@di.fc.ul.pt>
*
- * $Id: ipv6.h,v 1.13 1998/08/26 12:02:11 davem Exp $
+ * $Id: ipv6.h,v 1.14 1998/10/03 09:36:45 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -284,6 +284,11 @@ extern void ipv6_packet_cleanup(void);
extern void ipv6_netdev_notif_cleanup(void);
+extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len);
+extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, u16 port,
+ u32 info, u8 *payload);
+extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info);
+
#endif /* __KERNEL__ */
#endif /* _NET_IPV6_H */
diff --git a/include/net/rose.h b/include/net/rose.h
index 366168287..1c8684d2d 100644
--- a/include/net/rose.h
+++ b/include/net/rose.h
@@ -56,7 +56,7 @@ enum {
#define ROSE_DEFAULT_ROUTING 1 /* Default routing flag */
#define ROSE_DEFAULT_FAIL_TIMEOUT (120 * HZ) /* Time until link considered usable */
#define ROSE_DEFAULT_MAXVC 50 /* Maximum number of VCs per neighbour */
-#define ROSE_DEFAULT_WINDOW_SIZE 3 /* Default window size */
+#define ROSE_DEFAULT_WINDOW_SIZE 7 /* Default window size */
#define ROSE_MODULUS 8
#define ROSE_MAX_PACKET_SIZE 251 /* Maximum packet size */
@@ -72,6 +72,9 @@ enum {
#define FAC_NATIONAL_FLAGS 0x3F
#define FAC_NATIONAL_DEST_DIGI 0xE9
#define FAC_NATIONAL_SRC_DIGI 0xEB
+#define FAC_NATIONAL_FAIL_CALL 0xED
+#define FAC_NATIONAL_FAIL_ADD 0xEE
+#define FAC_NATIONAL_DIGIS 0xEF
#define FAC_CCITT_DEST_NSAP 0xC9
#define FAC_CCITT_SRC_NSAP 0xCB
@@ -111,19 +114,12 @@ struct rose_route {
unsigned int rand;
};
-struct rose_facilities {
- rose_address source_addr, dest_addr;
- ax25_address source_call, dest_call;
- unsigned char source_ndigis, dest_ndigis;
- ax25_address source_digi, dest_digi;
- unsigned int rand;
-};
-
typedef struct {
rose_address source_addr, dest_addr;
ax25_address source_call, dest_call;
unsigned char source_ndigis, dest_ndigis;
- ax25_address source_digi, dest_digi;
+ ax25_address source_digis[ROSE_MAX_DIGIS];
+ ax25_address dest_digis[ROSE_MAX_DIGIS];
struct rose_neigh *neighbour;
struct device *device;
unsigned int lci, rand;
@@ -131,7 +127,12 @@ typedef struct {
unsigned char cause, diagnostic;
unsigned short vs, vr, va, vl;
unsigned long t1, t2, t3, hb, idle;
+#ifdef M_BIT
+ unsigned short fraglen;
+ struct sk_buff_head frag_queue;
+#endif
struct sk_buff_head ack_queue;
+ struct rose_facilities_struct facilities;
struct timer_list timer;
struct timer_list idletimer;
struct sock *sk; /* Backlink to socket */
@@ -218,7 +219,7 @@ extern void rose_requeue_frames(struct sock *);
extern int rose_validate_nr(struct sock *, unsigned short);
extern void rose_write_internal(struct sock *, int);
extern int rose_decode(struct sk_buff *, int *, int *, int *, int *, int *);
-extern int rose_parse_facilities(struct sk_buff *, struct rose_facilities *);
+extern int rose_parse_facilities(unsigned char *, struct rose_facilities_struct *);
extern int rose_create_facilities(unsigned char *, rose_cb *);
extern void rose_disconnect(struct sock *, int, int, int);
diff --git a/include/net/scm.h b/include/net/scm.h
index 0c6a01542..98c2dc916 100644
--- a/include/net/scm.h
+++ b/include/net/scm.h
@@ -17,8 +17,6 @@ struct scm_cookie
struct ucred creds; /* Skb credentials */
struct scm_fp_list *fp; /* Passed files */
unsigned long seq; /* Connection seqno */
- struct file *file; /* file for socket */
- struct socket *sock; /* Passed socket */
};
extern void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm);
@@ -39,7 +37,6 @@ static __inline__ int scm_send(struct socket *sock, struct msghdr *msg,
scm->creds.uid = current->uid;
scm->creds.gid = current->gid;
scm->creds.pid = current->pid;
- scm->sock = sock;
if (msg->msg_controllen <= 0)
return 0;
return __scm_send(sock, msg, scm);
diff --git a/include/net/snmp.h b/include/net/snmp.h
index e38826d0b..cc8354b6c 100644
--- a/include/net/snmp.h
+++ b/include/net/snmp.h
@@ -176,6 +176,8 @@ struct linux_mib
unsigned long PruneCalled;
unsigned long RcvPruned;
unsigned long OfoPruned;
+ unsigned long OutOfWindowIcmps;
+ unsigned long LockDroppedIcmps;
};
#endif
diff --git a/include/net/sock.h b/include/net/sock.h
index ad27511c2..a9cc39260 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -139,6 +139,7 @@ struct ipv6_pinfo {
struct in6_addr *daddr_cache;
__u32 flow_lbl;
+ __u32 frag_size;
int hop_limit;
int mcast_hops;
int mcast_oif;
@@ -159,7 +160,9 @@ struct ipv6_pinfo {
} rxopt;
/* sockopt flags */
- __u8 mc_loop:1;
+ __u8 mc_loop:1,
+ recverr:1,
+ pmtudisc:2;
struct ipv6_mc_socklist *ipv6_mc_list;
__u32 dst_cookie;
@@ -238,6 +241,7 @@ struct tcp_opt {
* Slow start and congestion control (see also Nagle, and Karn & Partridge)
*/
__u32 snd_ssthresh; /* Slow start size threshold */
+ __u16 snd_cwnd_cnt; /* Linear increase counter */
__u8 dup_acks; /* Consequetive duplicate acks seen from other end */
__u8 delayed_acks;
__u16 user_mss; /* mss requested by user in ioctl */
@@ -531,7 +535,7 @@ struct proto {
struct sock *sklist_prev;
void (*close)(struct sock *sk,
- unsigned long timeout);
+ long timeout);
int (*connect)(struct sock *sk,
struct sockaddr *uaddr,
int addr_len);
@@ -841,20 +845,6 @@ extern __inline__ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
return 0;
}
-extern __inline__ int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
-{
- /* Cast skb->rcvbuf to unsigned... It's pointless, but reduces
- number of warnings when compiling with -W --ANK
- */
- if (atomic_read(&sk->rmem_alloc) + skb->truesize >= (unsigned)sk->rcvbuf)
- return -ENOMEM;
- skb_set_owner_r(skb, sk);
- __skb_queue_tail(&sk->receive_queue,skb);
- if (!sk->dead)
- sk->data_ready(sk,skb->len);
- return 0;
-}
-
extern __inline__ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
{
/* Cast skb->rcvbuf to unsigned... It's pointless, but reduces
@@ -863,7 +853,7 @@ extern __inline__ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
if (atomic_read(&sk->rmem_alloc) + skb->truesize >= (unsigned)sk->rcvbuf)
return -ENOMEM;
skb_set_owner_r(skb, sk);
- __skb_queue_tail(&sk->error_queue,skb);
+ skb_queue_tail(&sk->error_queue,skb);
if (!sk->dead)
sk->data_ready(sk,skb->len);
return 0;
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 3f305aa7e..2ebee4e0d 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -192,7 +192,7 @@ extern kmem_cache_t *tcp_timewait_cachep;
(((__u32)(__dport)<<16) | (__u32)(__sport))
#endif
-#if defined(__alpha__) || defined(__sparc_v9__)
+#if (BITS_PER_LONG == 64)
#ifdef __BIG_ENDIAN
#define TCP_V4_ADDR_COOKIE(__name, __saddr, __daddr) \
__u64 __name = (((__u64)(__saddr))<<32)|((__u64)(__daddr));
@@ -511,7 +511,7 @@ extern int tcp_timewait_state_process(struct tcp_tw_bucket *tw,
unsigned len);
extern void tcp_close(struct sock *sk,
- unsigned long timeout);
+ long timeout);
extern struct sock * tcp_accept(struct sock *sk, int flags);
extern unsigned int tcp_poll(struct file * file, struct socket *sock, struct poll_table_struct *wait);
extern void tcp_write_space(struct sock *sk);
@@ -675,7 +675,7 @@ static __inline__ u32 tcp_receive_window(struct tcp_opt *tp)
* scaling applied to the result. The caller does these things
* if necessary. This is a "raw" window selection.
*/
-extern u32 __tcp_select_window(struct sock *sk, u32 cur_win);
+extern u32 __tcp_select_window(struct sock *sk);
/* Chose a new window to advertise, update state in tcp_opt for the
* socket, and return result with RFC1323 scaling applied. The return
@@ -686,13 +686,20 @@ extern __inline__ u16 tcp_select_window(struct sock *sk)
{
struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
u32 cur_win = tcp_receive_window(tp);
- u32 new_win = __tcp_select_window(sk, cur_win);
+ u32 new_win = __tcp_select_window(sk);
/* Never shrink the offered window */
- if(new_win < cur_win)
+ if(new_win < cur_win) {
+ /* Danger Will Robinson!
+ * Don't update rcv_wup/rcv_wnd here or else
+ * we will not be able to advertise a zero
+ * window in time. --DaveM
+ */
new_win = cur_win;
- tp->rcv_wnd = new_win;
- tp->rcv_wup = tp->rcv_nxt;
+ } else {
+ tp->rcv_wnd = new_win;
+ tp->rcv_wup = tp->rcv_nxt;
+ }
/* RFC1323 scaling applied */
return new_win >> tp->rcv_wscale;
@@ -706,7 +713,7 @@ extern __inline__ int tcp_raise_window(struct sock *sk)
{
struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
u32 cur_win = tcp_receive_window(tp);
- u32 new_win = __tcp_select_window(sk, cur_win);
+ u32 new_win = __tcp_select_window(sk);
return (new_win && (new_win > (cur_win << 1)));
}
@@ -750,12 +757,6 @@ struct tcp_skb_cb {
#define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
-/* We store the congestion window as a packet count, shifted by
- * a factor so that implementing the 1/2 MSS ssthresh rules
- * is easy.
- */
-#define TCP_CWND_SHIFT 1
-
/* This determines how many packets are "in the network" to the best
* of our knowledge. In many cases it is conservative, but where
* detailed information is available from the receiver (via SACK
@@ -796,12 +797,15 @@ static __inline__ int tcp_snd_test(struct sock *sk, struct sk_buff *skb)
*
* Don't use the nagle rule for urgent data.
*/
- if (!sk->nonagle && skb->len < (tp->mss_cache >> 1) && tp->packets_out &&
- !(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_URG))
+ if ((sk->nonagle == 2 && (skb->len < tp->mss_cache)) ||
+ (!sk->nonagle &&
+ skb->len < (tp->mss_cache >> 1) &&
+ tp->packets_out &&
+ !(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_URG)))
nagle_check = 0;
return (nagle_check &&
- (tcp_packets_in_flight(tp) < (tp->snd_cwnd>>TCP_CWND_SHIFT)) &&
+ (tcp_packets_in_flight(tp) < tp->snd_cwnd) &&
!after(TCP_SKB_CB(skb)->end_seq, tp->snd_una + tp->snd_wnd) &&
tp->retransmits == 0);
}
diff --git a/include/video/fbcon-afb.h b/include/video/fbcon-afb.h
new file mode 100644
index 000000000..cbbcf0019
--- /dev/null
+++ b/include/video/fbcon-afb.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Amiga bitplanes (afb)
+ */
+
+#ifndef _VIDEO_FBCON_AFB_H
+#define _VIDEO_FBCON_AFB_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_AFB) || defined(CONFIG_FBCON_AFB_MODULE)
+#define FBCON_HAS_AFB
+#endif
+#else
+#if defined(CONFIG_FBCON_AFB)
+#define FBCON_HAS_AFB
+#endif
+#endif
+
+extern struct display_switch fbcon_afb;
+extern void fbcon_afb_setup(struct display *p);
+extern void fbcon_afb_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_afb_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_afb_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_afb_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_afb_revc(struct display *p, int xx, int yy);
+
+#endif
diff --git a/include/video/fbcon-cfb16.h b/include/video/fbcon-cfb16.h
new file mode 100644
index 000000000..3ccc7d7cd
--- /dev/null
+++ b/include/video/fbcon-cfb16.h
@@ -0,0 +1,34 @@
+/*
+ * FBcon low-level driver for 16 bpp packed pixel (cfb16)
+ */
+
+#ifndef _VIDEO_FBCON_CFB16_H
+#define _VIDEO_FBCON_CFB16_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_CFB16) || defined(CONFIG_FBCON_CFB16_MODULE)
+#define FBCON_HAS_CFB16
+#endif
+#else
+#if defined(CONFIG_FBCON_CFB16)
+#define FBCON_HAS_CFB16
+#endif
+#endif
+
+extern struct display_switch fbcon_cfb16;
+extern void fbcon_cfb16_setup(struct display *p);
+extern void fbcon_cfb16_bmove(struct display *p, int sy, int sx, int dy,
+ int dx, int height, int width);
+extern void fbcon_cfb16_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_cfb16_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_cfb16_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_cfb16_revc(struct display *p, int xx, int yy);
+extern void fbcon_cfb16_clear_margins(struct vc_data *conp, struct display *p,
+ int bottom_only);
+
+#endif /* _VIDEO_FBCON_CFB16_H */
diff --git a/include/video/fbcon-cfb2.h b/include/video/fbcon-cfb2.h
new file mode 100644
index 000000000..5ba68a5f0
--- /dev/null
+++ b/include/video/fbcon-cfb2.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for 2 bpp packed pixel (cfb2)
+ */
+
+#ifndef _VIDEO_FBCON_CFB2_H
+#define _VIDEO_FBCON_CFB2_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_CFB2) || defined(CONFIG_FBCON_CFB2_MODULE)
+#define FBCON_HAS_CFB2
+#endif
+#else
+#if defined(CONFIG_FBCON_CFB2)
+#define FBCON_HAS_CFB2
+#endif
+#endif
+
+extern struct display_switch fbcon_cfb2;
+extern void fbcon_cfb2_setup(struct display *p);
+extern void fbcon_cfb2_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_cfb2_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_cfb2_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_cfb2_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_cfb2_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_CFB2_H */
diff --git a/include/video/fbcon-cfb24.h b/include/video/fbcon-cfb24.h
new file mode 100644
index 000000000..77442e22d
--- /dev/null
+++ b/include/video/fbcon-cfb24.h
@@ -0,0 +1,34 @@
+/*
+ * FBcon low-level driver for 24 bpp packed pixel (cfb24)
+ */
+
+#ifndef _VIDEO_FBCON_CFB24_H
+#define _VIDEO_FBCON_CFB24_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_CFB24) || defined(CONFIG_FBCON_CFB24_MODULE)
+#define FBCON_HAS_CFB24
+#endif
+#else
+#if defined(CONFIG_FBCON_CFB24)
+#define FBCON_HAS_CFB24
+#endif
+#endif
+
+extern struct display_switch fbcon_cfb24;
+extern void fbcon_cfb24_setup(struct display *p);
+extern void fbcon_cfb24_bmove(struct display *p, int sy, int sx, int dy,
+ int dx, int height, int width);
+extern void fbcon_cfb24_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_cfb24_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_cfb24_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_cfb24_revc(struct display *p, int xx, int yy);
+extern void fbcon_cfb24_clear_margins(struct vc_data *conp, struct display *p,
+ int bottom_only);
+
+#endif /* _VIDEO_FBCON_CFB24_H */
diff --git a/include/video/fbcon-cfb32.h b/include/video/fbcon-cfb32.h
new file mode 100644
index 000000000..abac3baa2
--- /dev/null
+++ b/include/video/fbcon-cfb32.h
@@ -0,0 +1,34 @@
+/*
+ * FBcon low-level driver for 32 bpp packed pixel (cfb32)
+ */
+
+#ifndef _VIDEO_FBCON_CFB32_H
+#define _VIDEO_FBCON_CFB32_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_CFB32) || defined(CONFIG_FBCON_CFB32_MODULE)
+#define FBCON_HAS_CFB32
+#endif
+#else
+#if defined(CONFIG_FBCON_CFB32)
+#define FBCON_HAS_CFB32
+#endif
+#endif
+
+extern struct display_switch fbcon_cfb32;
+extern void fbcon_cfb32_setup(struct display *p);
+extern void fbcon_cfb32_bmove(struct display *p, int sy, int sx, int dy,
+ int dx, int height, int width);
+extern void fbcon_cfb32_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_cfb32_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_cfb32_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_cfb32_revc(struct display *p, int xx, int yy);
+extern void fbcon_cfb32_clear_margins(struct vc_data *conp, struct display *p,
+ int bottom_only);
+
+#endif /* _VIDEO_FBCON_CFB32_H */
diff --git a/include/video/fbcon-cfb4.h b/include/video/fbcon-cfb4.h
new file mode 100644
index 000000000..963befe5c
--- /dev/null
+++ b/include/video/fbcon-cfb4.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for 4 bpp packed pixel (cfb4)
+ */
+
+#ifndef _VIDEO_FBCON_CFB4_H
+#define _VIDEO_FBCON_CFB4_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_CFB4) || defined(CONFIG_FBCON_CFB4_MODULE)
+#define FBCON_HAS_CFB4
+#endif
+#else
+#if defined(CONFIG_FBCON_CFB4)
+#define FBCON_HAS_CFB4
+#endif
+#endif
+
+extern struct display_switch fbcon_cfb4;
+extern void fbcon_cfb4_setup(struct display *p);
+extern void fbcon_cfb4_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_cfb4_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_cfb4_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_cfb4_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_cfb4_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_CFB4_H */
diff --git a/include/video/fbcon-cfb8.h b/include/video/fbcon-cfb8.h
new file mode 100644
index 000000000..96189d0ac
--- /dev/null
+++ b/include/video/fbcon-cfb8.h
@@ -0,0 +1,34 @@
+/*
+ * FBcon low-level driver for 8 bpp packed pixel (cfb8)
+ */
+
+#ifndef _VIDEO_FBCON_CFB8_H
+#define _VIDEO_FBCON_CFB8_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_CFB8) || defined(CONFIG_FBCON_CFB8_MODULE)
+#define FBCON_HAS_CFB8
+#endif
+#else
+#if defined(CONFIG_FBCON_CFB8)
+#define FBCON_HAS_CFB8
+#endif
+#endif
+
+extern struct display_switch fbcon_cfb8;
+extern void fbcon_cfb8_setup(struct display *p);
+extern void fbcon_cfb8_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_cfb8_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_cfb8_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_cfb8_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_cfb8_revc(struct display *p, int xx, int yy);
+extern void fbcon_cfb8_clear_margins(struct vc_data *conp, struct display *p,
+ int bottom_only);
+
+#endif /* _VIDEO_FBCON_CFB8_H */
diff --git a/include/video/fbcon-ilbm.h b/include/video/fbcon-ilbm.h
new file mode 100644
index 000000000..80f9707f6
--- /dev/null
+++ b/include/video/fbcon-ilbm.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Amiga interleaved bitplanes (ilbm)
+ */
+
+#ifndef _VIDEO_FBCON_ILBM_H
+#define _VIDEO_FBCON_ILBM_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_ILBM) || defined(CONFIG_FBCON_ILBM_MODULE)
+#define FBCON_HAS_ILBM
+#endif
+#else
+#if defined(CONFIG_FBCON_ILBM)
+#define FBCON_HAS_ILBM
+#endif
+#endif
+
+extern struct display_switch fbcon_ilbm;
+extern void fbcon_ilbm_setup(struct display *p);
+extern void fbcon_ilbm_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_ilbm_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_ilbm_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_ilbm_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_ilbm_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_ILBM_H */
diff --git a/include/video/fbcon-iplan2p2.h b/include/video/fbcon-iplan2p2.h
new file mode 100644
index 000000000..b72868035
--- /dev/null
+++ b/include/video/fbcon-iplan2p2.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Atari interleaved bitplanes (2 planes) (iplan2p2)
+ */
+
+#ifndef _VIDEO_FBCON_IPLAN2P2_H
+#define _VIDEO_FBCON_IPLAN2P2_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P2_MODULE)
+#define FBCON_HAS_IPLAN2P2
+#endif
+#else
+#if defined(CONFIG_FBCON_IPLAN2P2)
+#define FBCON_HAS_IPLAN2P2
+#endif
+#endif
+
+extern struct display_switch fbcon_iplan2p2;
+extern void fbcon_iplan2p2_setup(struct display *p);
+extern void fbcon_iplan2p2_bmove(struct display *p, int sy, int sx, int dy,
+ int dx, int height, int width);
+extern void fbcon_iplan2p2_clear(struct vc_data *conp, struct display *p,
+ int sy, int sx, int height, int width);
+extern void fbcon_iplan2p2_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_iplan2p2_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_iplan2p2_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_IPLAN2P2_H */
diff --git a/include/video/fbcon-iplan2p4.h b/include/video/fbcon-iplan2p4.h
new file mode 100644
index 000000000..a70120204
--- /dev/null
+++ b/include/video/fbcon-iplan2p4.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Atari interleaved bitplanes (4 planes) (iplan2p4)
+ */
+
+#ifndef _VIDEO_FBCON_IPLAN2P4_H
+#define _VIDEO_FBCON_IPLAN2P4_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_IPLAN2P4) || defined(CONFIG_FBCON_IPLAN2P4_MODULE)
+#define FBCON_HAS_IPLAN2P4
+#endif
+#else
+#if defined(CONFIG_FBCON_IPLAN2P4)
+#define FBCON_HAS_IPLAN2P4
+#endif
+#endif
+
+extern struct display_switch fbcon_iplan2p4;
+extern void fbcon_iplan2p4_setup(struct display *p);
+extern void fbcon_iplan2p4_bmove(struct display *p, int sy, int sx, int dy,
+ int dx, int height, int width);
+extern void fbcon_iplan2p4_clear(struct vc_data *conp, struct display *p,
+ int sy, int sx, int height, int width);
+extern void fbcon_iplan2p4_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_iplan2p4_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_iplan2p4_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_IPLAN2P4_H */
diff --git a/include/video/fbcon-iplan2p8.h b/include/video/fbcon-iplan2p8.h
new file mode 100644
index 000000000..6691e18d6
--- /dev/null
+++ b/include/video/fbcon-iplan2p8.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Atari interleaved bitplanes (8 planes) (iplan2p8)
+ */
+
+#ifndef _VIDEO_FBCON_IPLAN2P8_H
+#define _VIDEO_FBCON_IPLAN2P8_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_IPLAN2P8) || defined(CONFIG_FBCON_IPLAN2P8_MODULE)
+#define FBCON_HAS_IPLAN2P8
+#endif
+#else
+#if defined(CONFIG_FBCON_IPLAN2P8)
+#define FBCON_HAS_IPLAN2P8
+#endif
+#endif
+
+extern struct display_switch fbcon_iplan2p8;
+extern void fbcon_iplan2p8_setup(struct display *p);
+extern void fbcon_iplan2p8_bmove(struct display *p, int sy, int sx, int dy,
+ int dx, int height, int width);
+extern void fbcon_iplan2p8_clear(struct vc_data *conp, struct display *p,
+ int sy, int sx, int height, int width);
+extern void fbcon_iplan2p8_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_iplan2p8_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_iplan2p8_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_IPLAN2P8_H */
diff --git a/include/video/fbcon-mac.h b/include/video/fbcon-mac.h
new file mode 100644
index 000000000..b275ff91b
--- /dev/null
+++ b/include/video/fbcon-mac.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Mac variable bpp packed pixels (mac)
+ */
+
+#ifndef _VIDEO_FBCON_MAC_H
+#define _VIDEO_FBCON_MAC_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_MAC) || defined(CONFIG_FBCON_MAC_MODULE)
+#define FBCON_HAS_MAC
+#endif
+#else
+#if defined(CONFIG_FBCON_MAC)
+#define FBCON_HAS_MAC
+#endif
+#endif
+
+extern struct display_switch fbcon_mac;
+extern void fbcon_mac_setup(struct display *p);
+extern void fbcon_mac_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_mac_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_mac_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_mac_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_mac_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_MAC_H */
diff --git a/include/video/fbcon-mfb.h b/include/video/fbcon-mfb.h
new file mode 100644
index 000000000..f74e63da2
--- /dev/null
+++ b/include/video/fbcon-mfb.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for Monochrome (mfb)
+ */
+
+#ifndef _VIDEO_FBCON_MFB_H
+#define _VIDEO_FBCON_MFB_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_MFB) || defined(CONFIG_FBCON_MFB_MODULE)
+#define FBCON_HAS_MFB
+#endif
+#else
+#if defined(CONFIG_FBCON_MFB)
+#define FBCON_HAS_MFB
+#endif
+#endif
+
+extern struct display_switch fbcon_mfb;
+extern void fbcon_mfb_setup(struct display *p);
+extern void fbcon_mfb_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_mfb_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_mfb_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_mfb_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_mfb_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_MFB_H */
diff --git a/include/video/fbcon-vga.h b/include/video/fbcon-vga.h
new file mode 100644
index 000000000..e7c7b2db0
--- /dev/null
+++ b/include/video/fbcon-vga.h
@@ -0,0 +1,32 @@
+/*
+ * FBcon low-level driver for VGA characters/attributes
+ */
+
+#ifndef _VIDEO_FBCON_VGA_H
+#define _VIDEO_FBCON_VGA_H
+
+#include <linux/config.h>
+
+#ifdef MODULE
+#if defined(CONFIG_FBCON_VGA) || defined(CONFIG_FBCON_VGA_MODULE)
+#define FBCON_HAS_VGA
+#endif
+#else
+#if defined(CONFIG_FBCON_VGA)
+#define FBCON_HAS_VGA
+#endif
+#endif
+
+extern struct display_switch fbcon_vga;
+extern void fbcon_vga_setup(struct display *p);
+extern void fbcon_vga_bmove(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+extern void fbcon_vga_clear(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width);
+extern void fbcon_vga_putc(struct vc_data *conp, struct display *p, int c,
+ int yy, int xx);
+extern void fbcon_vga_putcs(struct vc_data *conp, struct display *p,
+ const unsigned short *s, int count, int yy, int xx);
+extern void fbcon_vga_revc(struct display *p, int xx, int yy);
+
+#endif /* _VIDEO_FBCON_VGA_H */
diff --git a/include/video/fbcon.h b/include/video/fbcon.h
new file mode 100644
index 000000000..4145f56e3
--- /dev/null
+++ b/include/video/fbcon.h
@@ -0,0 +1,501 @@
+/*
+ * linux/drivers/video/fbcon.h -- Low level frame buffer based console driver
+ *
+ * Copyright (C) 1997 Geert Uytterhoeven
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+#ifndef _VIDEO_FBCON_H
+#define _VIDEO_FBCON_H
+
+#include <linux/config.h>
+#include <linux/console_struct.h>
+
+
+ /*
+ * `switch' for the Low Level Operations
+ */
+
+struct display_switch {
+ void (*setup)(struct display *p);
+ void (*bmove)(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+ /* for clear, conp may be NULL, which means use a blanking (black) color */
+ void (*clear)(struct vc_data *conp, struct display *p, int sy, int sx,
+ int height, int width);
+ void (*putc)(struct vc_data *conp, struct display *p, int c, int yy,
+ int xx);
+ void (*putcs)(struct vc_data *conp, struct display *p, const unsigned short *s,
+ int count, int yy, int xx);
+ void (*revc)(struct display *p, int xx, int yy);
+ void (*cursor)(struct display *p, int mode, int xx, int yy);
+ int (*set_font)(struct display *p, int width, int height);
+ void (*clear_margins)(struct vc_data *conp, struct display *p,
+ int bottom_only);
+ unsigned int fontwidthmask; /* 1 at (1 << (width - 1)) if width is supported */
+};
+
+extern struct display_switch fbcon_dummy;
+
+#define fontheight(p) ((p)->_fontheight)
+#define fontheightlog(p) ((p)->_fontheightlog)
+
+#ifdef CONFIG_FBCON_FONTWIDTH8_ONLY
+
+/* fontwidth w is supported by dispsw */
+#define FONTWIDTH(w) (1 << ((8) - 1))
+/* fontwidths w1-w2 inclusive are supported by dispsw */
+#define FONTWIDTHRANGE(w1,w2) FONTWIDTH(8)
+
+#define fontwidth(p) (8)
+#define fontwidthlog(p) (0)
+
+#else
+
+/* fontwidth w is supported by dispsw */
+#define FONTWIDTH(w) (1 << ((w) - 1))
+/* fontwidths w1-w2 inclusive are supported by dispsw */
+#define FONTWIDTHRANGE(w1,w2) (FONTWIDTH(w2+1) - FONTWIDTH(w1))
+
+#define fontwidth(p) ((p)->_fontwidth)
+#define fontwidthlog(p) ((p)->_fontwidthlog)
+
+#endif
+
+ /*
+ * Attribute Decoding
+ */
+
+/* Color */
+#define attr_fgcol(p,s) \
+ (((s) >> ((p)->fgshift)) & 0x0f)
+#define attr_bgcol(p,s) \
+ (((s) >> ((p)->bgshift)) & 0x0f)
+#define attr_bgcol_ec(p,conp) \
+ ((conp) ? (((conp)->vc_video_erase_char >> ((p)->bgshift)) & 0x0f) : 0)
+
+/* Monochrome */
+#define attr_bold(p,s) \
+ ((s) & 0x200)
+#define attr_reverse(p,s) \
+ (((s) & 0x800) ^ ((p)->inverse ? 0x800 : 0))
+#define attr_underline(p,s) \
+ ((s) & 0x400)
+#define attr_blink(p,s) \
+ ((s) & 0x8000)
+
+ /*
+ * Scroll Method
+ */
+
+/* Internal flags */
+#define __SCROLL_YPAN 0x001
+#define __SCROLL_YWRAP 0x002
+#define __SCROLL_YMOVE 0x003
+#define __SCROLL_YREDRAW 0x004
+#define __SCROLL_YMASK 0x00f
+#define __SCROLL_YFIXED 0x010
+#define __SCROLL_YNOMOVE 0x020
+#define __SCROLL_YPANREDRAW 0x040
+
+/* Only these should be used by the drivers */
+/* Which one should you use? If you have a fast card and slow bus,
+ then probably just 0 to indicate fbcon should choose between
+ YWRAP/YPAN+MOVE/YMOVE. On the other side, if you have a fast bus
+ and even better if your card can do fonting (1->8/32bit painting),
+ you should consider either SCROLL_YREDRAW (if your card is
+ able to do neither YPAN/YWRAP), or SCROLL_YNOMOVE.
+ The best is to test it with some real life scrolling (usually, not
+ all lines on the screen are filled completely with non-space characters,
+ and REDRAW performs much better on such lines, so don't cat a file
+ with every line covering all screen columns, it would not be the right
+ benchmark).
+ */
+#define SCROLL_YREDRAW (__SCROLL_YFIXED|__SCROLL_YREDRAW)
+#define SCROLL_YNOMOVE (__SCROLL_YNOMOVE|__SCROLL_YPANREDRAW)
+
+extern void fbcon_redraw_bmove(struct display *, int, int, int, int, int, int);
+
+
+/* ================================================================= */
+/* Utility Assembler Functions */
+/* ================================================================= */
+
+
+#if defined(__mc68000__)
+
+/* ====================================================================== */
+
+/* Those of a delicate disposition might like to skip the next couple of
+ * pages.
+ *
+ * These functions are drop in replacements for memmove and
+ * memset(_, 0, _). However their five instances add at least a kilobyte
+ * to the object file. You have been warned.
+ *
+ * Not a great fan of assembler for the sake of it, but I think
+ * that these routines are at least 10 times faster than their C
+ * equivalents for large blits, and that's important to the lowest level of
+ * a graphics driver. Question is whether some scheme with the blitter
+ * would be faster. I suspect not for simple text system - not much
+ * asynchrony.
+ *
+ * Code is very simple, just gruesome expansion. Basic strategy is to
+ * increase data moved/cleared at each step to 16 bytes to reduce
+ * instruction per data move overhead. movem might be faster still
+ * For more than 15 bytes, we try to align the write direction on a
+ * longword boundary to get maximum speed. This is even more gruesome.
+ * Unaligned read/write used requires 68020+ - think this is a problem?
+ *
+ * Sorry!
+ */
+
+
+/* ++roman: I've optimized Robert's original versions in some minor
+ * aspects, e.g. moveq instead of movel, let gcc choose the registers,
+ * use movem in some places...
+ * For other modes than 1 plane, lots of more such assembler functions
+ * were needed (e.g. the ones using movep or expanding color values).
+ */
+
+/* ++andreas: more optimizations:
+ subl #65536,d0 replaced by clrw d0; subql #1,d0 for dbcc
+ addal is faster than addaw
+ movep is rather expensive compared to ordinary move's
+ some functions rewritten in C for clarity, no speed loss */
+
+static __inline__ void *mymemclear_small(void *s, size_t count)
+{
+ if (!count)
+ return(0);
+
+ __asm__ __volatile__(
+ "lsrl #1,%1 ; jcc 1f ; moveb %2,%0@-\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; movew %2,%0@-\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; movel %2,%0@-\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; movel %2,%0@- ; movel %2,%0@-\n\t"
+ "1: subql #1,%1 ; jcs 3f\n\t"
+ "2: moveml %2/%3/%4/%5,%0@-\n\t"
+ "dbra %1,2b\n\t"
+ "3:"
+ : "=a" (s), "=d" (count)
+ : "d" (0), "d" (0), "d" (0), "d" (0),
+ "0" ((char *)s+count), "1" (count)
+ );
+
+ return(0);
+}
+
+
+static __inline__ void *mymemclear(void *s, size_t count)
+{
+ if (!count)
+ return(0);
+
+ if (count < 16) {
+ __asm__ __volatile__(
+ "lsrl #1,%1 ; jcc 1f ; clrb %0@+\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; clrw %0@+\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; clrl %0@+\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; clrl %0@+ ; clrl %0@+\n\t"
+ "1:"
+ : "=a" (s), "=d" (count)
+ : "0" (s), "1" (count)
+ );
+ } else {
+ long tmp;
+ __asm__ __volatile__(
+ "movel %1,%2\n\t"
+ "lsrl #1,%2 ; jcc 1f ; clrb %0@+ ; subqw #1,%1\n\t"
+ "lsrl #1,%2 ; jcs 2f\n\t" /* %0 increased=>bit 2 switched*/
+ "clrw %0@+ ; subqw #2,%1 ; jra 2f\n\t"
+ "1: lsrl #1,%2 ; jcc 2f\n\t"
+ "clrw %0@+ ; subqw #2,%1\n\t"
+ "2: movew %1,%2; lsrl #2,%1 ; jeq 6f\n\t"
+ "lsrl #1,%1 ; jcc 3f ; clrl %0@+\n\t"
+ "3: lsrl #1,%1 ; jcc 4f ; clrl %0@+ ; clrl %0@+\n\t"
+ "4: subql #1,%1 ; jcs 6f\n\t"
+ "5: clrl %0@+; clrl %0@+ ; clrl %0@+ ; clrl %0@+\n\t"
+ "dbra %1,5b ; clrw %1; subql #1,%1; jcc 5b\n\t"
+ "6: movew %2,%1; btst #1,%1 ; jeq 7f ; clrw %0@+\n\t"
+ "7: ; btst #0,%1 ; jeq 8f ; clrb %0@+\n\t"
+ "8:"
+ : "=a" (s), "=d" (count), "=d" (tmp)
+ : "0" (s), "1" (count)
+ );
+ }
+
+ return(0);
+}
+
+
+static __inline__ void *mymemset(void *s, size_t count)
+{
+ if (!count)
+ return(0);
+
+ __asm__ __volatile__(
+ "lsrl #1,%1 ; jcc 1f ; moveb %2,%0@-\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; movew %2,%0@-\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; movel %2,%0@-\n\t"
+ "1: lsrl #1,%1 ; jcc 1f ; movel %2,%0@- ; movel %2,%0@-\n\t"
+ "1: subql #1,%1 ; jcs 3f\n\t"
+ "2: moveml %2/%3/%4/%5,%0@-\n\t"
+ "dbra %1,2b\n\t"
+ "3:"
+ : "=a" (s), "=d" (count)
+ : "d" (-1), "d" (-1), "d" (-1), "d" (-1),
+ "0" ((char *) s + count), "1" (count)
+ );
+
+ return(0);
+}
+
+
+static __inline__ void *mymemmove(void *d, const void *s, size_t count)
+{
+ if (d < s) {
+ if (count < 16) {
+ __asm__ __volatile__(
+ "lsrl #1,%2 ; jcc 1f ; moveb %1@+,%0@+\n\t"
+ "1: lsrl #1,%2 ; jcc 1f ; movew %1@+,%0@+\n\t"
+ "1: lsrl #1,%2 ; jcc 1f ; movel %1@+,%0@+\n\t"
+ "1: lsrl #1,%2 ; jcc 1f ; movel %1@+,%0@+ ; movel %1@+,%0@+\n\t"
+ "1:"
+ : "=a" (d), "=a" (s), "=d" (count)
+ : "0" (d), "1" (s), "2" (count)
+ );
+ } else {
+ long tmp;
+ __asm__ __volatile__(
+ "movel %0,%3\n\t"
+ "lsrl #1,%3 ; jcc 1f ; moveb %1@+,%0@+ ; subqw #1,%2\n\t"
+ "lsrl #1,%3 ; jcs 2f\n\t" /* %0 increased=>bit 2 switched*/
+ "movew %1@+,%0@+ ; subqw #2,%2 ; jra 2f\n\t"
+ "1: lsrl #1,%3 ; jcc 2f\n\t"
+ "movew %1@+,%0@+ ; subqw #2,%2\n\t"
+ "2: movew %2,%-; lsrl #2,%2 ; jeq 6f\n\t"
+ "lsrl #1,%2 ; jcc 3f ; movel %1@+,%0@+\n\t"
+ "3: lsrl #1,%2 ; jcc 4f ; movel %1@+,%0@+ ; movel %1@+,%0@+\n\t"
+ "4: subql #1,%2 ; jcs 6f\n\t"
+ "5: movel %1@+,%0@+;movel %1@+,%0@+\n\t"
+ "movel %1@+,%0@+;movel %1@+,%0@+\n\t"
+ "dbra %2,5b ; clrw %2; subql #1,%2; jcc 5b\n\t"
+ "6: movew %+,%2; btst #1,%2 ; jeq 7f ; movew %1@+,%0@+\n\t"
+ "7: ; btst #0,%2 ; jeq 8f ; moveb %1@+,%0@+\n\t"
+ "8:"
+ : "=a" (d), "=a" (s), "=d" (count), "=d" (tmp)
+ : "0" (d), "1" (s), "2" (count)
+ );
+ }
+ } else {
+ if (count < 16) {
+ __asm__ __volatile__(
+ "lsrl #1,%2 ; jcc 1f ; moveb %1@-,%0@-\n\t"
+ "1: lsrl #1,%2 ; jcc 1f ; movew %1@-,%0@-\n\t"
+ "1: lsrl #1,%2 ; jcc 1f ; movel %1@-,%0@-\n\t"
+ "1: lsrl #1,%2 ; jcc 1f ; movel %1@-,%0@- ; movel %1@-,%0@-\n\t"
+ "1:"
+ : "=a" (d), "=a" (s), "=d" (count)
+ : "0" ((char *) d + count), "1" ((char *) s + count), "2" (count)
+ );
+ } else {
+ long tmp;
+ __asm__ __volatile__(
+ "movel %0,%3\n\t"
+ "lsrl #1,%3 ; jcc 1f ; moveb %1@-,%0@- ; subqw #1,%2\n\t"
+ "lsrl #1,%3 ; jcs 2f\n\t" /* %0 increased=>bit 2 switched*/
+ "movew %1@-,%0@- ; subqw #2,%2 ; jra 2f\n\t"
+ "1: lsrl #1,%3 ; jcc 2f\n\t"
+ "movew %1@-,%0@- ; subqw #2,%2\n\t"
+ "2: movew %2,%-; lsrl #2,%2 ; jeq 6f\n\t"
+ "lsrl #1,%2 ; jcc 3f ; movel %1@-,%0@-\n\t"
+ "3: lsrl #1,%2 ; jcc 4f ; movel %1@-,%0@- ; movel %1@-,%0@-\n\t"
+ "4: subql #1,%2 ; jcs 6f\n\t"
+ "5: movel %1@-,%0@-;movel %1@-,%0@-\n\t"
+ "movel %1@-,%0@-;movel %1@-,%0@-\n\t"
+ "dbra %2,5b ; clrw %2; subql #1,%2; jcc 5b\n\t"
+ "6: movew %+,%2; btst #1,%2 ; jeq 7f ; movew %1@-,%0@-\n\t"
+ "7: ; btst #0,%2 ; jeq 8f ; moveb %1@-,%0@-\n\t"
+ "8:"
+ : "=a" (d), "=a" (s), "=d" (count), "=d" (tmp)
+ : "0" ((char *) d + count), "1" ((char *) s + count), "2" (count)
+ );
+ }
+ }
+
+ return(0);
+}
+
+
+/* ++andreas: Simple and fast version of memmove, assumes size is
+ divisible by 16, suitable for moving the whole screen bitplane */
+static __inline__ void fast_memmove(char *dst, const char *src, size_t size)
+{
+ if (!size)
+ return;
+ if (dst < src)
+ __asm__ __volatile__
+ ("1:"
+ " moveml %0@+,%/d0/%/d1/%/a0/%/a1\n"
+ " moveml %/d0/%/d1/%/a0/%/a1,%1@\n"
+ " addql #8,%1; addql #8,%1\n"
+ " dbra %2,1b\n"
+ " clrw %2; subql #1,%2\n"
+ " jcc 1b"
+ : "=a" (src), "=a" (dst), "=d" (size)
+ : "0" (src), "1" (dst), "2" (size / 16 - 1)
+ : "d0", "d1", "a0", "a1", "memory");
+ else
+ __asm__ __volatile__
+ ("1:"
+ " subql #8,%0; subql #8,%0\n"
+ " moveml %0@,%/d0/%/d1/%/a0/%/a1\n"
+ " moveml %/d0/%/d1/%/a0/%/a1,%1@-\n"
+ " dbra %2,1b\n"
+ " clrw %2; subql #1,%2\n"
+ " jcc 1b"
+ : "=a" (src), "=a" (dst), "=d" (size)
+ : "0" (src + size), "1" (dst + size), "2" (size / 16 - 1)
+ : "d0", "d1", "a0", "a1", "memory");
+}
+
+#elif defined(CONFIG_SUN4)
+
+/* You may think that I'm crazy and that I should use generic
+ routines. No, I'm not: sun4's framebuffer crashes if we std
+ into it, so we cannot use memset. */
+
+static __inline__ void *sun4_memset(void *s, char val, size_t count)
+{
+ int i;
+ for(i=0; i<count;i++)
+ ((char *) s) [i] = val;
+ return s;
+}
+
+static __inline__ void *mymemset(void *s, size_t count)
+{
+ return sun4_memset(s, 255, count);
+}
+
+static __inline__ void *mymemclear(void *s, size_t count)
+{
+ return sun4_memset(s, 0, count);
+}
+
+static __inline__ void *mymemclear_small(void *s, size_t count)
+{
+ return sun4_memset(s, 0, count);
+}
+
+/* To be honest, this is slow_memmove :). But sun4 is crappy, so what we can do. */
+static __inline__ void fast_memmove(void *d, const void *s, size_t count)
+{
+ int i;
+ if (d<s) {
+ for (i=0; i<count; i++)
+ ((char *) d)[i] = ((char *) s)[i];
+ } else
+ for (i=0; i<count; i++)
+ ((char *) d)[count-i-1] = ((char *) s)[count-i-1];
+}
+
+static __inline__ void *mymemmove(char *dst, const char *src, size_t size)
+{
+ fast_memmove(dst, src, size);
+ return dst;
+}
+
+#else
+
+static __inline__ void *mymemclear_small(void *s, size_t count)
+{
+ return(memset(s, 0, count));
+}
+
+static __inline__ void *mymemclear(void *s, size_t count)
+{
+ return(memset(s, 0, count));
+}
+
+static __inline__ void *mymemset(void *s, size_t count)
+{
+ return(memset(s, 255, count));
+}
+
+#if defined(__i386__)
+
+static __inline__ void fast_memmove(void *d, const void *s, size_t count)
+{
+ if (d < s) {
+__asm__ __volatile__ (
+ "cld\n\t"
+ "shrl $1,%%ecx\n\t"
+ "jnc 1f\n\t"
+ "movsb\n"
+ "1:\tshrl $1,%%ecx\n\t"
+ "jnc 2f\n\t"
+ "movsw\n"
+ "2:\trep\n\t"
+ "movsl"
+ : /* no output */
+ :"c"(count),"D"((long)d),"S"((long)s)
+ :"cx","di","si","memory");
+ } else {
+__asm__ __volatile__ (
+ "std\n\t"
+ "shrl $1,%%ecx\n\t"
+ "jnc 1f\n\t"
+ "movb 3(%%esi),%%al\n\t"
+ "movb %%al,3(%%edi)\n\t"
+ "decl %%esi\n\t"
+ "decl %%edi\n"
+ "1:\tshrl $1,%%ecx\n\t"
+ "jnc 2f\n\t"
+ "movw 2(%%esi),%%ax\n\t"
+ "movw %%ax,2(%%edi)\n\t"
+ "decl %%esi\n\t"
+ "decl %%edi\n\t"
+ "decl %%esi\n\t"
+ "decl %%edi\n"
+ "2:\trep\n\t"
+ "movsl\n\t"
+ "cld"
+ : /* no output */
+ :"c"(count),"D"(count-4+(long)d),"S"(count-4+(long)s)
+ :"ax","cx","di","si","memory");
+ }
+}
+
+static __inline__ void *mymemmove(char *dst, const char *src, size_t size)
+{
+ fast_memmove(dst, src, size);
+ return dst;
+}
+
+#else /* !i386 */
+
+ /*
+ * Anyone who'd like to write asm functions for other CPUs?
+ * (Why are these functions better than those from include/asm/string.h?)
+ */
+
+static __inline__ void *mymemmove(void *d, const void *s, size_t count)
+{
+ return(memmove(d, s, count));
+}
+
+static __inline__ void fast_memmove(char *dst, const char *src, size_t size)
+{
+ memmove(dst, src, size);
+}
+
+#endif /* !i386 */
+
+#endif
+
+#endif /* _VIDEO_FBCON_H */
diff --git a/include/video/font.h b/include/video/font.h
new file mode 100644
index 000000000..bdb7fc4bf
--- /dev/null
+++ b/include/video/font.h
@@ -0,0 +1,66 @@
+/*
+ * font.h -- `Soft' font definitions
+ *
+ * Created 1995 by Geert Uytterhoeven
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+#ifndef _VIDEO_FONT_H
+#define _VIDEO_FONT_H
+
+#ifdef __ASSEMBLY__
+
+#ifdef __mc68000__
+#define FBCON_FONT_DESC_idx 0
+#define FBCON_FONT_DESC_name (FBCON_FONT_DESC_idx +4)
+#define FBCON_FONT_DESC_width (FBCON_FONT_DESC_name +4)
+#define FBCON_FONT_DESC_height (FBCON_FONT_DESC_width +4)
+#define FBCON_FONT_DESC_data (FBCON_FONT_DESC_height+4)
+#define FBCON_FONT_DESC_pref (FBCON_FONT_DESC_data +4)
+#endif
+
+#else /* __ASSEMBLY__ */
+
+#include <linux/types.h>
+
+struct fbcon_font_desc {
+ int idx;
+ char *name;
+ int width, height;
+ void *data;
+ int pref;
+};
+
+#define VGA8x8_IDX 0
+#define VGA8x16_IDX 1
+#define PEARL8x8_IDX 2
+#define VGA6x11_IDX 3
+#define SUN8x16_IDX 4
+#define SUN12x22_IDX 5
+#define ACORN8x8_IDX 6
+
+extern struct fbcon_font_desc font_vga_8x8,
+ font_vga_8x16,
+ font_pearl_8x8,
+ font_vga_6x11,
+ font_sun_8x16,
+ font_sun_12x22,
+ font_acorn_8x8;
+
+/* Find a font with a specific name */
+
+extern struct fbcon_font_desc *fbcon_find_font(char *name);
+
+/* Get the default font for a specific screen size */
+
+extern struct fbcon_font_desc *fbcon_get_default_font(int xres, int yres);
+
+/* Max. length for the name of a predefined font */
+#define MAX_FONT_NAME 32
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _VIDEO_FONT_H */
diff --git a/include/video/macmodes.h b/include/video/macmodes.h
new file mode 100644
index 000000000..c459987e3
--- /dev/null
+++ b/include/video/macmodes.h
@@ -0,0 +1,64 @@
+/*
+ * linux/drivers/video/macmodes.h -- Standard MacOS video modes
+ *
+ * Copyright (C) 1998 Geert Uytterhoeven
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive for
+ * more details.
+ */
+
+#ifndef _VIDEO_MACMODES_H
+#define _VIDEO_MACMODES_H
+
+ /*
+ * Video mode values.
+ * These are supposed to be the same as the values that Apple uses in
+ * MacOS.
+ */
+
+#define VMODE_NVRAM 0
+#define VMODE_512_384_60I 1 /* 512x384, 60Hz interlaced (NTSC) */
+#define VMODE_512_384_60 2 /* 512x384, 60Hz */
+#define VMODE_640_480_50I 3 /* 640x480, 50Hz interlaced (PAL) */
+#define VMODE_640_480_60I 4 /* 640x480, 60Hz interlaced (NTSC) */
+#define VMODE_640_480_60 5 /* 640x480, 60Hz (VGA) */
+#define VMODE_640_480_67 6 /* 640x480, 67Hz */
+#define VMODE_640_870_75P 7 /* 640x870, 75Hz (portrait) */
+#define VMODE_768_576_50I 8 /* 768x576, 50Hz (PAL full frame) */
+#define VMODE_800_600_56 9 /* 800x600, 56Hz */
+#define VMODE_800_600_60 10 /* 800x600, 60Hz */
+#define VMODE_800_600_72 11 /* 800x600, 72Hz */
+#define VMODE_800_600_75 12 /* 800x600, 75Hz */
+#define VMODE_832_624_75 13 /* 832x624, 75Hz */
+#define VMODE_1024_768_60 14 /* 1024x768, 60Hz */
+#define VMODE_1024_768_70 15 /* 1024x768, 70Hz (or 72Hz?) */
+#define VMODE_1024_768_75V 16 /* 1024x768, 75Hz (VESA) */
+#define VMODE_1024_768_75 17 /* 1024x768, 75Hz */
+#define VMODE_1152_870_75 18 /* 1152x870, 75Hz */
+#define VMODE_1280_960_75 19 /* 1280x960, 75Hz */
+#define VMODE_1280_1024_75 20 /* 1280x1024, 75Hz */
+#define VMODE_MAX 20
+#define VMODE_CHOOSE 99
+
+#define CMODE_NVRAM -1
+#define CMODE_8 0 /* 8 bits/pixel */
+#define CMODE_16 1 /* 16 (actually 15) bits/pixel */
+#define CMODE_32 2 /* 32 (actually 24) bits/pixel */
+
+
+extern int mac_vmode_to_var(int vmode, int cmode,
+ struct fb_var_screeninfo *var);
+extern int mac_var_to_vmode(const struct fb_var_screeninfo *var, int *vmode,
+ int *cmode);
+extern int mac_map_monitor_sense(int sense);
+
+
+ /*
+ * Addresses in NVRAM where video mode and pixel size are stored.
+ */
+
+#define NV_VMODE 0x140f
+#define NV_CMODE 0x1410
+
+#endif /* _VIDEO_MACMODES_H */
diff --git a/include/video/s3blit.h b/include/video/s3blit.h
new file mode 100644
index 000000000..b1db63187
--- /dev/null
+++ b/include/video/s3blit.h
@@ -0,0 +1,79 @@
+#ifndef _VIDEO_S3BLIT_H
+#define _VIDEO_S3BLIT_H
+
+/* s3 commands */
+#define S3_BITBLT 0xc011
+#define S3_TWOPOINTLINE 0x2811
+#define S3_FILLEDRECT 0x40b1
+
+#define S3_FIFO_EMPTY 0x0400
+#define S3_HDW_BUSY 0x0200
+
+/* Enhanced register mapping (MMIO mode) */
+
+#define S3_READ_SEL 0xbee8 /* offset f */
+#define S3_MULT_MISC 0xbee8 /* offset e */
+#define S3_ERR_TERM 0x92e8
+#define S3_FRGD_COLOR 0xa6e8
+#define S3_BKGD_COLOR 0xa2e8
+#define S3_PIXEL_CNTL 0xbee8 /* offset a */
+#define S3_FRGD_MIX 0xbae8
+#define S3_BKGD_MIX 0xb6e8
+#define S3_CUR_Y 0x82e8
+#define S3_CUR_X 0x86e8
+#define S3_DESTY_AXSTP 0x8ae8
+#define S3_DESTX_DIASTP 0x8ee8
+#define S3_MIN_AXIS_PCNT 0xbee8 /* offset 0 */
+#define S3_MAJ_AXIS_PCNT 0x96e8
+#define S3_CMD 0x9ae8
+#define S3_GP_STAT 0x9ae8
+#define S3_ADVFUNC_CNTL 0x4ae8
+#define S3_WRT_MASK 0xaae8
+#define S3_RD_MASK 0xaee8
+
+/* Enhanced register mapping (Packed MMIO mode, write only) */
+#define S3_ALT_CURXY 0x8100
+#define S3_ALT_CURXY2 0x8104
+#define S3_ALT_STEP 0x8108
+#define S3_ALT_STEP2 0x810c
+#define S3_ALT_ERR 0x8110
+#define S3_ALT_CMD 0x8118
+#define S3_ALT_MIX 0x8134
+#define S3_ALT_PCNT 0x8148
+#define S3_ALT_PAT 0x8168
+
+/* Drawing modes */
+#define S3_NOTCUR 0x0000
+#define S3_LOGICALZERO 0x0001
+#define S3_LOGICALONE 0x0002
+#define S3_LEAVEASIS 0x0003
+#define S3_NOTNEW 0x0004
+#define S3_CURXORNEW 0x0005
+#define S3_NOT_CURXORNEW 0x0006
+#define S3_NEW 0x0007
+#define S3_NOTCURORNOTNEW 0x0008
+#define S3_CURORNOTNEW 0x0009
+#define S3_NOTCURORNEW 0x000a
+#define S3_CURORNEW 0x000b
+#define S3_CURANDNEW 0x000c
+#define S3_NOTCURANDNEW 0x000d
+#define S3_CURANDNOTNEW 0x000e
+#define S3_NOTCURANDNOTNEW 0x000f
+
+#define S3_CRTC_ADR 0x03d4
+#define S3_CRTC_DATA 0x03d5
+
+#define S3_REG_LOCK2 0x39
+#define S3_HGC_MODE 0x45
+
+#define S3_HWGC_ORGX_H 0x46
+#define S3_HWGC_ORGX_L 0x47
+#define S3_HWGC_ORGY_H 0x48
+#define S3_HWGC_ORGY_L 0x49
+#define S3_HWGC_DX 0x4e
+#define S3_HWGC_DY 0x4f
+
+
+#define S3_LAW_CTL 0x58
+
+#endif /* _VIDEO_S3BLIT_H */
diff --git a/include/video/sbusfb.h b/include/video/sbusfb.h
new file mode 100644
index 000000000..2a6d91215
--- /dev/null
+++ b/include/video/sbusfb.h
@@ -0,0 +1,138 @@
+#include <linux/timer.h>
+#include <asm/sbus.h>
+#include <asm/oplib.h>
+#include <asm/fbio.h>
+
+#include <video/fbcon.h>
+
+struct bt_regs {
+ volatile unsigned int addr; /* address register */
+ volatile unsigned int color_map; /* color map */
+ volatile unsigned int control; /* control register */
+ volatile unsigned int cursor; /* cursor map register */
+};
+
+struct fb_info_creator {
+ struct ffb_fbc *fbc;
+ struct ffb_dac *dac;
+ int dac_rev;
+ int xy_margin;
+};
+struct fb_info_cgsix {
+ struct bt_regs *bt;
+ struct cg6_fbc *fbc;
+ struct cg6_thc *thc;
+ struct cg6_tec *tec;
+ volatile u32 *fhc;
+};
+struct fb_info_bwtwo {
+ struct bw2_regs *regs;
+};
+struct fb_info_cgthree {
+ struct cg3_regs *regs;
+};
+struct fb_info_tcx {
+ struct bt_regs *bt;
+ struct tcx_thc *thc;
+ struct tcx_tec *tec;
+ u32 *cplane;
+};
+struct fb_info_leo {
+ struct leo_lx_krn *lx_krn;
+ struct leo_lc_ss0_usr *lc_ss0_usr;
+ struct leo_ld_ss0 *ld_ss0;
+ struct leo_ld_ss1 *ld_ss1;
+ struct leo_cursor *cursor;
+ unsigned int extent;
+};
+struct fb_info_cgfourteen {
+ struct cg14_regs *regs;
+ struct cg14_cursor *cursor;
+ struct cg14_clut *clut;
+ int ramsize;
+ int mode;
+};
+
+struct cg_cursor {
+ char enable; /* cursor is enabled */
+ char mode; /* cursor mode */
+ struct fbcurpos cpos; /* position */
+ struct fbcurpos chot; /* hot-spot */
+ struct fbcurpos size; /* size of mask & image fields */
+ struct fbcurpos hwsize; /* hw max size */
+ int bits[2][128]; /* space for mask & image bits */
+ char color [6]; /* cursor colors */
+ struct timer_list timer; /* cursor timer */
+ int blink_rate; /* cursor blink rate */
+};
+
+struct sbus_mmap_map {
+ unsigned long voff;
+ unsigned long poff;
+ unsigned long size;
+};
+
+#define SBUS_MMAP_FBSIZE(n) (-n)
+#define SBUS_MMAP_EMPTY 0x80000000
+
+struct fb_info_sbusfb {
+ struct fb_info info;
+ struct fb_fix_screeninfo fix;
+ struct fb_var_screeninfo var;
+ struct display disp;
+ struct display_switch dispsw;
+ struct fbtype type;
+ struct linux_sbus_device *sbdp;
+ int prom_node, prom_parent;
+ union {
+ struct fb_info_creator ffb;
+ struct fb_info_cgsix cg6;
+ struct fb_info_bwtwo bw2;
+ struct fb_info_cgthree cg3;
+ struct fb_info_tcx tcx;
+ struct fb_info_leo leo;
+ struct fb_info_cgfourteen cg14;
+ } s;
+ unsigned char *color_map;
+ struct cg_cursor cursor;
+ unsigned char open;
+ unsigned char mmaped;
+ unsigned char blanked;
+ int x_margin;
+ int y_margin;
+ int vtconsole;
+ int consolecnt;
+ int graphmode;
+ int emulations[4];
+ struct sbus_mmap_map *mmap_map;
+ unsigned long physbase;
+ int iospace;
+ /* Methods */
+ void (*setup)(struct display *);
+ void (*setcursor)(struct fb_info_sbusfb *);
+ void (*setcurshape)(struct fb_info_sbusfb *);
+ void (*setcursormap)(struct fb_info_sbusfb *, unsigned char *, unsigned char *, unsigned char *);
+ void (*loadcmap)(struct fb_info_sbusfb *, struct display *, int, int);
+ void (*blank)(struct fb_info_sbusfb *);
+ void (*unblank)(struct fb_info_sbusfb *);
+ void (*margins)(struct fb_info_sbusfb *, struct display *, int, int);
+ void (*reset)(struct fb_info_sbusfb *);
+ void (*fill)(struct fb_info_sbusfb *, struct display *, int, int, unsigned short *);
+ void (*switch_from_graph)(struct fb_info_sbusfb *);
+ void (*restore_palette)(struct fb_info_sbusfb *);
+ int (*ioctl)(struct fb_info_sbusfb *, unsigned int, unsigned long);
+};
+
+extern char *creatorfb_init(struct fb_info_sbusfb *);
+extern char *cgsixfb_init(struct fb_info_sbusfb *);
+extern char *cgthreefb_init(struct fb_info_sbusfb *);
+extern char *tcxfb_init(struct fb_info_sbusfb *);
+extern char *leofb_init(struct fb_info_sbusfb *);
+extern char *bwtwofb_init(struct fb_info_sbusfb *);
+extern char *cgfourteenfb_init(struct fb_info_sbusfb *);
+
+#define sbusfbinfod(disp) ((struct fb_info_sbusfb *)(disp->fb_info))
+#define sbusfbinfo(info) ((struct fb_info_sbusfb *)(info))
+#define CM(i, j) [3*(i)+(j)]
+
+#define SBUSFBINIT_SIZECHANGE ((char *)-1)