]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Apr 2009 18:31:28 +0000 (11:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Apr 2009 18:31:28 +0000 (11:31 -0700)
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  tracing/filters: return proper error code when writing filter file
  tracing/filters: allow user input integer to be oct or hex
  tracing/filters: fix NULL pointer dereference
  tracing/filters: NIL-terminate user input filter
  ftrace: Output REC->var instead of __entry->var for trace format
  Make __stringify support variable argument macros too
  tracing: fix document references
  tracing: fix splice return too large
  tracing: update file->f_pos when splice(2) it
  tracing: allocate page when needed
  tracing: disable seeking for trace_pipe_raw

751 files changed:
Documentation/feature-removal-schedule.txt
Documentation/infiniband/ipoib.txt
MAINTAINERS
arch/Kconfig
arch/frv/include/asm/Kbuild [new file with mode: 0644]
arch/frv/include/asm/atomic.h [new file with mode: 0644]
arch/frv/include/asm/auxvec.h [new file with mode: 0644]
arch/frv/include/asm/ax88796.h [new file with mode: 0644]
arch/frv/include/asm/bitops.h [new file with mode: 0644]
arch/frv/include/asm/bug.h [new file with mode: 0644]
arch/frv/include/asm/bugs.h [new file with mode: 0644]
arch/frv/include/asm/busctl-regs.h [new file with mode: 0644]
arch/frv/include/asm/byteorder.h [new file with mode: 0644]
arch/frv/include/asm/cache.h [new file with mode: 0644]
arch/frv/include/asm/cacheflush.h [new file with mode: 0644]
arch/frv/include/asm/checksum.h [new file with mode: 0644]
arch/frv/include/asm/cpu-irqs.h [new file with mode: 0644]
arch/frv/include/asm/cpumask.h [new file with mode: 0644]
arch/frv/include/asm/cputime.h [new file with mode: 0644]
arch/frv/include/asm/current.h [new file with mode: 0644]
arch/frv/include/asm/delay.h [new file with mode: 0644]
arch/frv/include/asm/device.h [new file with mode: 0644]
arch/frv/include/asm/div64.h [new file with mode: 0644]
arch/frv/include/asm/dm9000.h [new file with mode: 0644]
arch/frv/include/asm/dma-mapping.h [new file with mode: 0644]
arch/frv/include/asm/dma.h [new file with mode: 0644]
arch/frv/include/asm/elf.h [new file with mode: 0644]
arch/frv/include/asm/emergency-restart.h [new file with mode: 0644]
arch/frv/include/asm/errno.h [new file with mode: 0644]
arch/frv/include/asm/fb.h [new file with mode: 0644]
arch/frv/include/asm/fcntl.h [new file with mode: 0644]
arch/frv/include/asm/fpu.h [new file with mode: 0644]
arch/frv/include/asm/ftrace.h [new file with mode: 0644]
arch/frv/include/asm/futex.h [new file with mode: 0644]
arch/frv/include/asm/gdb-stub.h [new file with mode: 0644]
arch/frv/include/asm/gpio-regs.h [new file with mode: 0644]
arch/frv/include/asm/hardirq.h [new file with mode: 0644]
arch/frv/include/asm/highmem.h [new file with mode: 0644]
arch/frv/include/asm/hw_irq.h [new file with mode: 0644]
arch/frv/include/asm/init.h [new file with mode: 0644]
arch/frv/include/asm/io.h [new file with mode: 0644]
arch/frv/include/asm/ioctl.h [new file with mode: 0644]
arch/frv/include/asm/ioctls.h [new file with mode: 0644]
arch/frv/include/asm/ipcbuf.h [new file with mode: 0644]
arch/frv/include/asm/irc-regs.h [new file with mode: 0644]
arch/frv/include/asm/irq.h [new file with mode: 0644]
arch/frv/include/asm/irq_regs.h [new file with mode: 0644]
arch/frv/include/asm/kdebug.h [new file with mode: 0644]
arch/frv/include/asm/kmap_types.h [new file with mode: 0644]
arch/frv/include/asm/linkage.h [new file with mode: 0644]
arch/frv/include/asm/local.h [new file with mode: 0644]
arch/frv/include/asm/math-emu.h [new file with mode: 0644]
arch/frv/include/asm/mb-regs.h [new file with mode: 0644]
arch/frv/include/asm/mb86943a.h [new file with mode: 0644]
arch/frv/include/asm/mb93091-fpga-irqs.h [new file with mode: 0644]
arch/frv/include/asm/mb93093-fpga-irqs.h [new file with mode: 0644]
arch/frv/include/asm/mb93493-irqs.h [new file with mode: 0644]
arch/frv/include/asm/mb93493-regs.h [new file with mode: 0644]
arch/frv/include/asm/mc146818rtc.h [new file with mode: 0644]
arch/frv/include/asm/mem-layout.h [new file with mode: 0644]
arch/frv/include/asm/mman.h [new file with mode: 0644]
arch/frv/include/asm/mmu.h [new file with mode: 0644]
arch/frv/include/asm/mmu_context.h [new file with mode: 0644]
arch/frv/include/asm/module.h [new file with mode: 0644]
arch/frv/include/asm/msgbuf.h [new file with mode: 0644]
arch/frv/include/asm/mutex.h [new file with mode: 0644]
arch/frv/include/asm/page.h [new file with mode: 0644]
arch/frv/include/asm/param.h [new file with mode: 0644]
arch/frv/include/asm/pci.h [new file with mode: 0644]
arch/frv/include/asm/percpu.h [new file with mode: 0644]
arch/frv/include/asm/pgalloc.h [new file with mode: 0644]
arch/frv/include/asm/pgtable.h [new file with mode: 0644]
arch/frv/include/asm/poll.h [new file with mode: 0644]
arch/frv/include/asm/posix_types.h [new file with mode: 0644]
arch/frv/include/asm/processor.h [new file with mode: 0644]
arch/frv/include/asm/ptrace.h [new file with mode: 0644]
arch/frv/include/asm/registers.h [new file with mode: 0644]
arch/frv/include/asm/resource.h [new file with mode: 0644]
arch/frv/include/asm/scatterlist.h [new file with mode: 0644]
arch/frv/include/asm/sections.h [new file with mode: 0644]
arch/frv/include/asm/segment.h [new file with mode: 0644]
arch/frv/include/asm/sembuf.h [new file with mode: 0644]
arch/frv/include/asm/serial-regs.h [new file with mode: 0644]
arch/frv/include/asm/serial.h [new file with mode: 0644]
arch/frv/include/asm/setup.h [new file with mode: 0644]
arch/frv/include/asm/shmbuf.h [new file with mode: 0644]
arch/frv/include/asm/shmparam.h [new file with mode: 0644]
arch/frv/include/asm/sigcontext.h [new file with mode: 0644]
arch/frv/include/asm/siginfo.h [new file with mode: 0644]
arch/frv/include/asm/signal.h [new file with mode: 0644]
arch/frv/include/asm/smp.h [new file with mode: 0644]
arch/frv/include/asm/socket.h [new file with mode: 0644]
arch/frv/include/asm/sockios.h [new file with mode: 0644]
arch/frv/include/asm/spinlock.h [new file with mode: 0644]
arch/frv/include/asm/spr-regs.h [new file with mode: 0644]
arch/frv/include/asm/stat.h [new file with mode: 0644]
arch/frv/include/asm/statfs.h [new file with mode: 0644]
arch/frv/include/asm/string.h [new file with mode: 0644]
arch/frv/include/asm/suspend.h [new file with mode: 0644]
arch/frv/include/asm/swab.h [new file with mode: 0644]
arch/frv/include/asm/system.h [new file with mode: 0644]
arch/frv/include/asm/termbits.h [new file with mode: 0644]
arch/frv/include/asm/termios.h [new file with mode: 0644]
arch/frv/include/asm/thread_info.h [new file with mode: 0644]
arch/frv/include/asm/timer-regs.h [new file with mode: 0644]
arch/frv/include/asm/timex.h [new file with mode: 0644]
arch/frv/include/asm/tlb.h [new file with mode: 0644]
arch/frv/include/asm/tlbflush.h [new file with mode: 0644]
arch/frv/include/asm/topology.h [new file with mode: 0644]
arch/frv/include/asm/types.h [new file with mode: 0644]
arch/frv/include/asm/uaccess.h [new file with mode: 0644]
arch/frv/include/asm/ucontext.h [new file with mode: 0644]
arch/frv/include/asm/unaligned.h [new file with mode: 0644]
arch/frv/include/asm/unistd.h [new file with mode: 0644]
arch/frv/include/asm/user.h [new file with mode: 0644]
arch/frv/include/asm/vga.h [new file with mode: 0644]
arch/frv/include/asm/virtconvert.h [new file with mode: 0644]
arch/frv/include/asm/xor.h [new file with mode: 0644]
arch/microblaze/Kconfig [new file with mode: 0644]
arch/microblaze/Kconfig.debug [new file with mode: 0644]
arch/microblaze/Makefile [new file with mode: 0644]
arch/microblaze/boot/Makefile [new file with mode: 0644]
arch/microblaze/configs/nommu_defconfig [new file with mode: 0644]
arch/microblaze/include/asm/Kbuild [new file with mode: 0644]
arch/microblaze/include/asm/atomic.h [new file with mode: 0644]
arch/microblaze/include/asm/auxvec.h [new file with mode: 0644]
arch/microblaze/include/asm/bitops.h [new file with mode: 0644]
arch/microblaze/include/asm/bug.h [new file with mode: 0644]
arch/microblaze/include/asm/bugs.h [new file with mode: 0644]
arch/microblaze/include/asm/byteorder.h [new file with mode: 0644]
arch/microblaze/include/asm/cache.h [new file with mode: 0644]
arch/microblaze/include/asm/cacheflush.h [new file with mode: 0644]
arch/microblaze/include/asm/checksum.h [new file with mode: 0644]
arch/microblaze/include/asm/clinkage.h [new file with mode: 0644]
arch/microblaze/include/asm/cpuinfo.h [new file with mode: 0644]
arch/microblaze/include/asm/cputable.h [new file with mode: 0644]
arch/microblaze/include/asm/cputime.h [new file with mode: 0644]
arch/microblaze/include/asm/current.h [new file with mode: 0644]
arch/microblaze/include/asm/delay.h [new file with mode: 0644]
arch/microblaze/include/asm/device.h [new file with mode: 0644]
arch/microblaze/include/asm/div64.h [new file with mode: 0644]
arch/microblaze/include/asm/dma-mapping.h [new file with mode: 0644]
arch/microblaze/include/asm/dma.h [new file with mode: 0644]
arch/microblaze/include/asm/elf.h [new file with mode: 0644]
arch/microblaze/include/asm/emergency-restart.h [new file with mode: 0644]
arch/microblaze/include/asm/entry.h [new file with mode: 0644]
arch/microblaze/include/asm/errno.h [new file with mode: 0644]
arch/microblaze/include/asm/exceptions.h [new file with mode: 0644]
arch/microblaze/include/asm/fcntl.h [new file with mode: 0644]
arch/microblaze/include/asm/flat.h [new file with mode: 0644]
arch/microblaze/include/asm/futex.h [new file with mode: 0644]
arch/microblaze/include/asm/gpio.h [new file with mode: 0644]
arch/microblaze/include/asm/hardirq.h [new file with mode: 0644]
arch/microblaze/include/asm/hw_irq.h [new file with mode: 0644]
arch/microblaze/include/asm/io.h [new file with mode: 0644]
arch/microblaze/include/asm/ioctl.h [new file with mode: 0644]
arch/microblaze/include/asm/ioctls.h [new file with mode: 0644]
arch/microblaze/include/asm/ipc.h [new file with mode: 0644]
arch/microblaze/include/asm/ipcbuf.h [new file with mode: 0644]
arch/microblaze/include/asm/irq.h [new file with mode: 0644]
arch/microblaze/include/asm/irq_regs.h [new file with mode: 0644]
arch/microblaze/include/asm/irqflags.h [new file with mode: 0644]
arch/microblaze/include/asm/kdebug.h [new file with mode: 0644]
arch/microblaze/include/asm/kmap_types.h [new file with mode: 0644]
arch/microblaze/include/asm/linkage.h [new file with mode: 0644]
arch/microblaze/include/asm/lmb.h [new file with mode: 0644]
arch/microblaze/include/asm/local.h [new file with mode: 0644]
arch/microblaze/include/asm/mman.h [new file with mode: 0644]
arch/microblaze/include/asm/mmu.h [new file with mode: 0644]
arch/microblaze/include/asm/mmu_context.h [new file with mode: 0644]
arch/microblaze/include/asm/module.h [new file with mode: 0644]
arch/microblaze/include/asm/msgbuf.h [new file with mode: 0644]
arch/microblaze/include/asm/mutex.h [new file with mode: 0644]
arch/microblaze/include/asm/namei.h [new file with mode: 0644]
arch/microblaze/include/asm/of_device.h [new file with mode: 0644]
arch/microblaze/include/asm/of_platform.h [new file with mode: 0644]
arch/microblaze/include/asm/page.h [new file with mode: 0644]
arch/microblaze/include/asm/param.h [new file with mode: 0644]
arch/microblaze/include/asm/pci-bridge.h [new file with mode: 0644]
arch/microblaze/include/asm/pci.h [new file with mode: 0644]
arch/microblaze/include/asm/percpu.h [new file with mode: 0644]
arch/microblaze/include/asm/pgalloc.h [new file with mode: 0644]
arch/microblaze/include/asm/pgtable.h [new file with mode: 0644]
arch/microblaze/include/asm/poll.h [new file with mode: 0644]
arch/microblaze/include/asm/posix_types.h [new file with mode: 0644]
arch/microblaze/include/asm/processor.h [new file with mode: 0644]
arch/microblaze/include/asm/prom.h [new file with mode: 0644]
arch/microblaze/include/asm/ptrace.h [new file with mode: 0644]
arch/microblaze/include/asm/pvr.h [new file with mode: 0644]
arch/microblaze/include/asm/registers.h [new file with mode: 0644]
arch/microblaze/include/asm/resource.h [new file with mode: 0644]
arch/microblaze/include/asm/scatterlist.h [new file with mode: 0644]
arch/microblaze/include/asm/sections.h [new file with mode: 0644]
arch/microblaze/include/asm/segment.h [new file with mode: 0644]
arch/microblaze/include/asm/selfmod.h [new file with mode: 0644]
arch/microblaze/include/asm/sembuf.h [new file with mode: 0644]
arch/microblaze/include/asm/serial.h [new file with mode: 0644]
arch/microblaze/include/asm/setup.h [new file with mode: 0644]
arch/microblaze/include/asm/shmbuf.h [new file with mode: 0644]
arch/microblaze/include/asm/shmparam.h [new file with mode: 0644]
arch/microblaze/include/asm/sigcontext.h [new file with mode: 0644]
arch/microblaze/include/asm/siginfo.h [new file with mode: 0644]
arch/microblaze/include/asm/signal.h [new file with mode: 0644]
arch/microblaze/include/asm/socket.h [new file with mode: 0644]
arch/microblaze/include/asm/sockios.h [new file with mode: 0644]
arch/microblaze/include/asm/stat.h [new file with mode: 0644]
arch/microblaze/include/asm/statfs.h [new file with mode: 0644]
arch/microblaze/include/asm/string.h [new file with mode: 0644]
arch/microblaze/include/asm/swab.h [new file with mode: 0644]
arch/microblaze/include/asm/syscalls.h [new file with mode: 0644]
arch/microblaze/include/asm/system.h [new file with mode: 0644]
arch/microblaze/include/asm/termbits.h [new file with mode: 0644]
arch/microblaze/include/asm/termios.h [new file with mode: 0644]
arch/microblaze/include/asm/thread_info.h [new file with mode: 0644]
arch/microblaze/include/asm/timex.h [new file with mode: 0644]
arch/microblaze/include/asm/tlb.h [new file with mode: 0644]
arch/microblaze/include/asm/tlbflush.h [new file with mode: 0644]
arch/microblaze/include/asm/topology.h [new file with mode: 0644]
arch/microblaze/include/asm/types.h [new file with mode: 0644]
arch/microblaze/include/asm/uaccess.h [new file with mode: 0644]
arch/microblaze/include/asm/ucontext.h [new file with mode: 0644]
arch/microblaze/include/asm/unaligned.h [new file with mode: 0644]
arch/microblaze/include/asm/unistd.h [new file with mode: 0644]
arch/microblaze/include/asm/user.h [new file with mode: 0644]
arch/microblaze/include/asm/vga.h [new file with mode: 0644]
arch/microblaze/include/asm/xor.h [new file with mode: 0644]
arch/microblaze/kernel/Makefile [new file with mode: 0644]
arch/microblaze/kernel/asm-offsets.c [new file with mode: 0644]
arch/microblaze/kernel/cpu/Makefile [new file with mode: 0644]
arch/microblaze/kernel/cpu/cache.c [new file with mode: 0644]
arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c [new file with mode: 0644]
arch/microblaze/kernel/cpu/cpuinfo-static.c [new file with mode: 0644]
arch/microblaze/kernel/cpu/cpuinfo.c [new file with mode: 0644]
arch/microblaze/kernel/cpu/mb.c [new file with mode: 0644]
arch/microblaze/kernel/cpu/pvr.c [new file with mode: 0644]
arch/microblaze/kernel/early_printk.c [new file with mode: 0644]
arch/microblaze/kernel/entry-nommu.S [new file with mode: 0644]
arch/microblaze/kernel/exceptions.c [new file with mode: 0644]
arch/microblaze/kernel/head.S [new file with mode: 0644]
arch/microblaze/kernel/heartbeat.c [new file with mode: 0644]
arch/microblaze/kernel/hw_exception_handler.S [new file with mode: 0644]
arch/microblaze/kernel/init_task.c [new file with mode: 0644]
arch/microblaze/kernel/intc.c [new file with mode: 0644]
arch/microblaze/kernel/irq.c [new file with mode: 0644]
arch/microblaze/kernel/microblaze_ksyms.c [new file with mode: 0644]
arch/microblaze/kernel/module.c [new file with mode: 0644]
arch/microblaze/kernel/of_device.c [new file with mode: 0644]
arch/microblaze/kernel/of_platform.c [new file with mode: 0644]
arch/microblaze/kernel/process.c [new file with mode: 0644]
arch/microblaze/kernel/prom.c [new file with mode: 0644]
arch/microblaze/kernel/prom_parse.c [new file with mode: 0644]
arch/microblaze/kernel/ptrace.c [new file with mode: 0644]
arch/microblaze/kernel/selfmod.c [new file with mode: 0644]
arch/microblaze/kernel/setup.c [new file with mode: 0644]
arch/microblaze/kernel/signal.c [new file with mode: 0644]
arch/microblaze/kernel/sys_microblaze.c [new file with mode: 0644]
arch/microblaze/kernel/syscall_table.S [new file with mode: 0644]
arch/microblaze/kernel/timer.c [new file with mode: 0644]
arch/microblaze/kernel/traps.c [new file with mode: 0644]
arch/microblaze/kernel/vmlinux.lds.S [new file with mode: 0644]
arch/microblaze/lib/Makefile [new file with mode: 0644]
arch/microblaze/lib/checksum.c [new file with mode: 0644]
arch/microblaze/lib/fastcopy.S [new file with mode: 0644]
arch/microblaze/lib/memcpy.c [new file with mode: 0644]
arch/microblaze/lib/memmove.c [new file with mode: 0644]
arch/microblaze/lib/memset.c [new file with mode: 0644]
arch/microblaze/lib/uaccess.c [new file with mode: 0644]
arch/microblaze/mm/Makefile [new file with mode: 0644]
arch/microblaze/mm/init.c [new file with mode: 0644]
arch/microblaze/platform/Kconfig.platform [new file with mode: 0644]
arch/microblaze/platform/Makefile [new file with mode: 0644]
arch/microblaze/platform/generic/Kconfig.auto [new file with mode: 0644]
arch/microblaze/platform/generic/Makefile [new file with mode: 0644]
arch/microblaze/platform/generic/system.dts [new file with mode: 0644]
arch/microblaze/platform/platform.c [new file with mode: 0644]
arch/mn10300/Makefile
arch/mn10300/include/asm/Kbuild [new file with mode: 0644]
arch/mn10300/include/asm/atomic.h [new file with mode: 0644]
arch/mn10300/include/asm/auxvec.h [new file with mode: 0644]
arch/mn10300/include/asm/bitops.h [new file with mode: 0644]
arch/mn10300/include/asm/bug.h [new file with mode: 0644]
arch/mn10300/include/asm/bugs.h [new file with mode: 0644]
arch/mn10300/include/asm/busctl-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/byteorder.h [new file with mode: 0644]
arch/mn10300/include/asm/cache.h [new file with mode: 0644]
arch/mn10300/include/asm/cacheflush.h [new file with mode: 0644]
arch/mn10300/include/asm/checksum.h [new file with mode: 0644]
arch/mn10300/include/asm/cpu-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/cputime.h [new file with mode: 0644]
arch/mn10300/include/asm/current.h [new file with mode: 0644]
arch/mn10300/include/asm/delay.h [new file with mode: 0644]
arch/mn10300/include/asm/device.h [new file with mode: 0644]
arch/mn10300/include/asm/div64.h [new file with mode: 0644]
arch/mn10300/include/asm/dma-mapping.h [new file with mode: 0644]
arch/mn10300/include/asm/dma.h [new file with mode: 0644]
arch/mn10300/include/asm/dmactl-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/elf.h [new file with mode: 0644]
arch/mn10300/include/asm/emergency-restart.h [new file with mode: 0644]
arch/mn10300/include/asm/errno.h [new file with mode: 0644]
arch/mn10300/include/asm/exceptions.h [new file with mode: 0644]
arch/mn10300/include/asm/fb.h [new file with mode: 0644]
arch/mn10300/include/asm/fcntl.h [new file with mode: 0644]
arch/mn10300/include/asm/fpu.h [new file with mode: 0644]
arch/mn10300/include/asm/frame.inc [new file with mode: 0644]
arch/mn10300/include/asm/ftrace.h [new file with mode: 0644]
arch/mn10300/include/asm/futex.h [new file with mode: 0644]
arch/mn10300/include/asm/gdb-stub.h [new file with mode: 0644]
arch/mn10300/include/asm/hardirq.h [new file with mode: 0644]
arch/mn10300/include/asm/highmem.h [new file with mode: 0644]
arch/mn10300/include/asm/hw_irq.h [new file with mode: 0644]
arch/mn10300/include/asm/intctl-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/io.h [new file with mode: 0644]
arch/mn10300/include/asm/ioctl.h [new file with mode: 0644]
arch/mn10300/include/asm/ioctls.h [new file with mode: 0644]
arch/mn10300/include/asm/ipc.h [new file with mode: 0644]
arch/mn10300/include/asm/ipcbuf.h [new file with mode: 0644]
arch/mn10300/include/asm/irq.h [new file with mode: 0644]
arch/mn10300/include/asm/irq_regs.h [new file with mode: 0644]
arch/mn10300/include/asm/kdebug.h [new file with mode: 0644]
arch/mn10300/include/asm/kmap_types.h [new file with mode: 0644]
arch/mn10300/include/asm/kprobes.h [new file with mode: 0644]
arch/mn10300/include/asm/linkage.h [new file with mode: 0644]
arch/mn10300/include/asm/local.h [new file with mode: 0644]
arch/mn10300/include/asm/mc146818rtc.h [new file with mode: 0644]
arch/mn10300/include/asm/mman.h [new file with mode: 0644]
arch/mn10300/include/asm/mmu.h [new file with mode: 0644]
arch/mn10300/include/asm/mmu_context.h [new file with mode: 0644]
arch/mn10300/include/asm/module.h [new file with mode: 0644]
arch/mn10300/include/asm/msgbuf.h [new file with mode: 0644]
arch/mn10300/include/asm/mutex.h [new file with mode: 0644]
arch/mn10300/include/asm/nmi.h [new file with mode: 0644]
arch/mn10300/include/asm/page.h [new file with mode: 0644]
arch/mn10300/include/asm/page_offset.h [new file with mode: 0644]
arch/mn10300/include/asm/param.h [new file with mode: 0644]
arch/mn10300/include/asm/pci.h [new file with mode: 0644]
arch/mn10300/include/asm/percpu.h [new file with mode: 0644]
arch/mn10300/include/asm/pgalloc.h [new file with mode: 0644]
arch/mn10300/include/asm/pgtable.h [new file with mode: 0644]
arch/mn10300/include/asm/pio-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/poll.h [new file with mode: 0644]
arch/mn10300/include/asm/posix_types.h [new file with mode: 0644]
arch/mn10300/include/asm/processor.h [new file with mode: 0644]
arch/mn10300/include/asm/ptrace.h [new file with mode: 0644]
arch/mn10300/include/asm/reset-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/resource.h [new file with mode: 0644]
arch/mn10300/include/asm/rtc-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/rtc.h [new file with mode: 0644]
arch/mn10300/include/asm/scatterlist.h [new file with mode: 0644]
arch/mn10300/include/asm/sections.h [new file with mode: 0644]
arch/mn10300/include/asm/sembuf.h [new file with mode: 0644]
arch/mn10300/include/asm/serial-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/serial.h [new file with mode: 0644]
arch/mn10300/include/asm/setup.h [new file with mode: 0644]
arch/mn10300/include/asm/shmbuf.h [new file with mode: 0644]
arch/mn10300/include/asm/shmparam.h [new file with mode: 0644]
arch/mn10300/include/asm/sigcontext.h [new file with mode: 0644]
arch/mn10300/include/asm/siginfo.h [new file with mode: 0644]
arch/mn10300/include/asm/signal.h [new file with mode: 0644]
arch/mn10300/include/asm/smp.h [new file with mode: 0644]
arch/mn10300/include/asm/socket.h [new file with mode: 0644]
arch/mn10300/include/asm/sockios.h [new file with mode: 0644]
arch/mn10300/include/asm/spinlock.h [new file with mode: 0644]
arch/mn10300/include/asm/stat.h [new file with mode: 0644]
arch/mn10300/include/asm/statfs.h [new file with mode: 0644]
arch/mn10300/include/asm/string.h [new file with mode: 0644]
arch/mn10300/include/asm/swab.h [new file with mode: 0644]
arch/mn10300/include/asm/system.h [new file with mode: 0644]
arch/mn10300/include/asm/termbits.h [new file with mode: 0644]
arch/mn10300/include/asm/termios.h [new file with mode: 0644]
arch/mn10300/include/asm/thread_info.h [new file with mode: 0644]
arch/mn10300/include/asm/timer-regs.h [new file with mode: 0644]
arch/mn10300/include/asm/timex.h [new file with mode: 0644]
arch/mn10300/include/asm/tlb.h [new file with mode: 0644]
arch/mn10300/include/asm/tlbflush.h [new file with mode: 0644]
arch/mn10300/include/asm/topology.h [new file with mode: 0644]
arch/mn10300/include/asm/types.h [new file with mode: 0644]
arch/mn10300/include/asm/uaccess.h [new file with mode: 0644]
arch/mn10300/include/asm/ucontext.h [new file with mode: 0644]
arch/mn10300/include/asm/unaligned.h [new file with mode: 0644]
arch/mn10300/include/asm/unistd.h [new file with mode: 0644]
arch/mn10300/include/asm/user.h [new file with mode: 0644]
arch/mn10300/include/asm/vga.h [new file with mode: 0644]
arch/mn10300/include/asm/xor.h [new file with mode: 0644]
arch/mn10300/kernel/entry.S
arch/mn10300/kernel/gdb-io-serial-low.S
arch/mn10300/kernel/gdb-io-serial.c
arch/mn10300/kernel/gdb-io-ttysm-low.S
arch/mn10300/kernel/gdb-io-ttysm.c
arch/mn10300/kernel/gdb-stub.c
arch/mn10300/kernel/head.S
arch/mn10300/kernel/mn10300-serial-low.S
arch/mn10300/kernel/mn10300-serial.c
arch/mn10300/kernel/mn10300-watchdog.c
arch/mn10300/kernel/setup.c
arch/mn10300/kernel/traps.c
arch/mn10300/proc-mn103e010/include/proc/cache.h [new file with mode: 0644]
arch/mn10300/proc-mn103e010/include/proc/clock.h [new file with mode: 0644]
arch/mn10300/proc-mn103e010/include/proc/irq.h [new file with mode: 0644]
arch/mn10300/proc-mn103e010/include/proc/proc.h [new file with mode: 0644]
arch/mn10300/unit-asb2303/include/unit/clock.h [new file with mode: 0644]
arch/mn10300/unit-asb2303/include/unit/leds.h [new file with mode: 0644]
arch/mn10300/unit-asb2303/include/unit/serial.h [new file with mode: 0644]
arch/mn10300/unit-asb2303/include/unit/smc91111.h [new file with mode: 0644]
arch/mn10300/unit-asb2303/include/unit/timex.h [new file with mode: 0644]
arch/mn10300/unit-asb2303/leds.c
arch/mn10300/unit-asb2303/smc91111.c
arch/mn10300/unit-asb2305/include/unit/clock.h [new file with mode: 0644]
arch/mn10300/unit-asb2305/include/unit/leds.h [new file with mode: 0644]
arch/mn10300/unit-asb2305/include/unit/serial.h [new file with mode: 0644]
arch/mn10300/unit-asb2305/include/unit/timex.h [new file with mode: 0644]
arch/mn10300/unit-asb2305/leds.c
arch/mn10300/unit-asb2305/unit-init.c
arch/s390/Kconfig
arch/x86/include/asm/fixmap.h
arch/x86/include/asm/paravirt.h
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
arch/x86/mm/pgtable.c
arch/x86/xen/mmu.c
drivers/acpi/battery.c
drivers/block/xsysace.c
drivers/i2c/algos/i2c-algo-pca.c
drivers/i2c/busses/Kconfig
drivers/i2c/i2c-core.c
drivers/ide/at91_ide.c
drivers/ide/falconide.c
drivers/ide/ide-acpi.c
drivers/ide/ide-atapi.c
drivers/ide/ide-cd.c
drivers/ide/ide-disk.c
drivers/ide/ide-disk_proc.c
drivers/ide/ide-dma-sff.c
drivers/ide/ide-h8300.c
drivers/ide/ide-io-std.c
drivers/ide/ide-io.c
drivers/ide/ide-ioctls.c
drivers/ide/ide-iops.c
drivers/ide/ide-lib.c
drivers/ide/ide-park.c
drivers/ide/ide-pm.c
drivers/ide/ide-probe.c
drivers/ide/ide-proc.c
drivers/ide/ide-taskfile.c
drivers/ide/ns87415.c
drivers/ide/q40ide.c
drivers/ide/scc_pata.c
drivers/ide/tx4938ide.c
drivers/ide/tx4939ide.c
drivers/infiniband/core/cma.c
drivers/infiniband/hw/cxgb3/cxio_hal.c
drivers/infiniband/hw/cxgb3/cxio_hal.h
drivers/infiniband/hw/cxgb3/iwch.c
drivers/infiniband/hw/cxgb3/iwch.h
drivers/infiniband/hw/cxgb3/iwch_cm.c
drivers/infiniband/hw/cxgb3/iwch_cm.h
drivers/infiniband/hw/cxgb3/iwch_qp.c
drivers/infiniband/hw/mlx4/main.c
drivers/infiniband/hw/nes/nes.h
drivers/infiniband/hw/nes/nes_cm.c
drivers/infiniband/hw/nes/nes_cm.h
drivers/infiniband/hw/nes/nes_hw.c
drivers/infiniband/hw/nes/nes_hw.h
drivers/infiniband/hw/nes/nes_nic.c
drivers/infiniband/ulp/ipoib/ipoib_vlan.c
drivers/leds/leds-gpio.c
drivers/media/dvb/ttpci/Kconfig
drivers/media/dvb/ttpci/Makefile
drivers/media/dvb/ttpci/av7110.c
drivers/media/dvb/ttpci/av7110_hw.c
drivers/media/dvb/ttpci/av7110_hw.h
drivers/media/dvb/ttpci/fdump.c [deleted file]
drivers/net/mlx4/port.c
drivers/net/smc91x.h
drivers/scsi/qla1280.c
drivers/serial/Kconfig
drivers/watchdog/Kconfig
drivers/watchdog/Makefile
drivers/watchdog/at91rm9200_wdt.c
drivers/watchdog/i6300esb.c
drivers/watchdog/ks8695_wdt.c
drivers/watchdog/omap_wdt.c
drivers/watchdog/orion5x_wdt.c
firmware/.gitignore
firmware/Makefile
firmware/README.AddingFirmware [new file with mode: 0644]
firmware/WHENCE
firmware/av7110/Boot.S [new file with mode: 0644]
firmware/av7110/bootcode.bin.ihex [new file with mode: 0644]
firmware/ihex2fw.c [new file with mode: 0644]
firmware/slicoss/gbdownload.sys.ihex [deleted file]
firmware/slicoss/gbrcvucode.sys.ihex [deleted file]
firmware/slicoss/oasisdbgdownload.sys.ihex [deleted file]
firmware/slicoss/oasisdownload.sys.ihex [deleted file]
firmware/slicoss/oasisrcvucode.sys.ihex [deleted file]
firmware/sxg/saharadbgdownloadB.sys.ihex [deleted file]
firmware/sxg/saharadownloadB.sys.ihex [deleted file]
firmware/yamaha/yss225_registers.bin.ihex [new file with mode: 0644]
fs/ext4/extents.c
fs/ext4/inode.c
fs/ext4/super.c
include/asm-frv/Kbuild [deleted file]
include/asm-frv/atomic.h [deleted file]
include/asm-frv/auxvec.h [deleted file]
include/asm-frv/ax88796.h [deleted file]
include/asm-frv/bitops.h [deleted file]
include/asm-frv/bug.h [deleted file]
include/asm-frv/bugs.h [deleted file]
include/asm-frv/busctl-regs.h [deleted file]
include/asm-frv/byteorder.h [deleted file]
include/asm-frv/cache.h [deleted file]
include/asm-frv/cacheflush.h [deleted file]
include/asm-frv/checksum.h [deleted file]
include/asm-frv/cpu-irqs.h [deleted file]
include/asm-frv/cpumask.h [deleted file]
include/asm-frv/cputime.h [deleted file]
include/asm-frv/current.h [deleted file]
include/asm-frv/delay.h [deleted file]
include/asm-frv/device.h [deleted file]
include/asm-frv/div64.h [deleted file]
include/asm-frv/dm9000.h [deleted file]
include/asm-frv/dma-mapping.h [deleted file]
include/asm-frv/dma.h [deleted file]
include/asm-frv/elf.h [deleted file]
include/asm-frv/emergency-restart.h [deleted file]
include/asm-frv/errno.h [deleted file]
include/asm-frv/fb.h [deleted file]
include/asm-frv/fcntl.h [deleted file]
include/asm-frv/fpu.h [deleted file]
include/asm-frv/ftrace.h [deleted file]
include/asm-frv/futex.h [deleted file]
include/asm-frv/gdb-stub.h [deleted file]
include/asm-frv/gpio-regs.h [deleted file]
include/asm-frv/hardirq.h [deleted file]
include/asm-frv/highmem.h [deleted file]
include/asm-frv/hw_irq.h [deleted file]
include/asm-frv/init.h [deleted file]
include/asm-frv/io.h [deleted file]
include/asm-frv/ioctl.h [deleted file]
include/asm-frv/ioctls.h [deleted file]
include/asm-frv/ipcbuf.h [deleted file]
include/asm-frv/irc-regs.h [deleted file]
include/asm-frv/irq.h [deleted file]
include/asm-frv/irq_regs.h [deleted file]
include/asm-frv/kdebug.h [deleted file]
include/asm-frv/kmap_types.h [deleted file]
include/asm-frv/linkage.h [deleted file]
include/asm-frv/local.h [deleted file]
include/asm-frv/math-emu.h [deleted file]
include/asm-frv/mb-regs.h [deleted file]
include/asm-frv/mb86943a.h [deleted file]
include/asm-frv/mb93091-fpga-irqs.h [deleted file]
include/asm-frv/mb93093-fpga-irqs.h [deleted file]
include/asm-frv/mb93493-irqs.h [deleted file]
include/asm-frv/mb93493-regs.h [deleted file]
include/asm-frv/mc146818rtc.h [deleted file]
include/asm-frv/mem-layout.h [deleted file]
include/asm-frv/mman.h [deleted file]
include/asm-frv/mmu.h [deleted file]
include/asm-frv/mmu_context.h [deleted file]
include/asm-frv/module.h [deleted file]
include/asm-frv/msgbuf.h [deleted file]
include/asm-frv/mutex.h [deleted file]
include/asm-frv/page.h [deleted file]
include/asm-frv/param.h [deleted file]
include/asm-frv/pci.h [deleted file]
include/asm-frv/percpu.h [deleted file]
include/asm-frv/pgalloc.h [deleted file]
include/asm-frv/pgtable.h [deleted file]
include/asm-frv/poll.h [deleted file]
include/asm-frv/posix_types.h [deleted file]
include/asm-frv/processor.h [deleted file]
include/asm-frv/ptrace.h [deleted file]
include/asm-frv/registers.h [deleted file]
include/asm-frv/resource.h [deleted file]
include/asm-frv/scatterlist.h [deleted file]
include/asm-frv/sections.h [deleted file]
include/asm-frv/segment.h [deleted file]
include/asm-frv/sembuf.h [deleted file]
include/asm-frv/serial-regs.h [deleted file]
include/asm-frv/serial.h [deleted file]
include/asm-frv/setup.h [deleted file]
include/asm-frv/shmbuf.h [deleted file]
include/asm-frv/shmparam.h [deleted file]
include/asm-frv/sigcontext.h [deleted file]
include/asm-frv/siginfo.h [deleted file]
include/asm-frv/signal.h [deleted file]
include/asm-frv/smp.h [deleted file]
include/asm-frv/socket.h [deleted file]
include/asm-frv/sockios.h [deleted file]
include/asm-frv/spinlock.h [deleted file]
include/asm-frv/spr-regs.h [deleted file]
include/asm-frv/stat.h [deleted file]
include/asm-frv/statfs.h [deleted file]
include/asm-frv/string.h [deleted file]
include/asm-frv/suspend.h [deleted file]
include/asm-frv/swab.h [deleted file]
include/asm-frv/system.h [deleted file]
include/asm-frv/termbits.h [deleted file]
include/asm-frv/termios.h [deleted file]
include/asm-frv/thread_info.h [deleted file]
include/asm-frv/timer-regs.h [deleted file]
include/asm-frv/timex.h [deleted file]
include/asm-frv/tlb.h [deleted file]
include/asm-frv/tlbflush.h [deleted file]
include/asm-frv/topology.h [deleted file]
include/asm-frv/types.h [deleted file]
include/asm-frv/uaccess.h [deleted file]
include/asm-frv/ucontext.h [deleted file]
include/asm-frv/unaligned.h [deleted file]
include/asm-frv/unistd.h [deleted file]
include/asm-frv/user.h [deleted file]
include/asm-frv/vga.h [deleted file]
include/asm-frv/virtconvert.h [deleted file]
include/asm-frv/xor.h [deleted file]
include/asm-generic/percpu.h
include/asm-mn10300/.gitignore [deleted file]
include/asm-mn10300/Kbuild [deleted file]
include/asm-mn10300/atomic.h [deleted file]
include/asm-mn10300/auxvec.h [deleted file]
include/asm-mn10300/bitops.h [deleted file]
include/asm-mn10300/bug.h [deleted file]
include/asm-mn10300/bugs.h [deleted file]
include/asm-mn10300/busctl-regs.h [deleted file]
include/asm-mn10300/byteorder.h [deleted file]
include/asm-mn10300/cache.h [deleted file]
include/asm-mn10300/cacheflush.h [deleted file]
include/asm-mn10300/checksum.h [deleted file]
include/asm-mn10300/cpu-regs.h [deleted file]
include/asm-mn10300/cputime.h [deleted file]
include/asm-mn10300/current.h [deleted file]
include/asm-mn10300/delay.h [deleted file]
include/asm-mn10300/device.h [deleted file]
include/asm-mn10300/div64.h [deleted file]
include/asm-mn10300/dma-mapping.h [deleted file]
include/asm-mn10300/dma.h [deleted file]
include/asm-mn10300/dmactl-regs.h [deleted file]
include/asm-mn10300/elf.h [deleted file]
include/asm-mn10300/emergency-restart.h [deleted file]
include/asm-mn10300/errno.h [deleted file]
include/asm-mn10300/exceptions.h [deleted file]
include/asm-mn10300/fb.h [deleted file]
include/asm-mn10300/fcntl.h [deleted file]
include/asm-mn10300/fpu.h [deleted file]
include/asm-mn10300/frame.inc [deleted file]
include/asm-mn10300/ftrace.h [deleted file]
include/asm-mn10300/futex.h [deleted file]
include/asm-mn10300/gdb-stub.h [deleted file]
include/asm-mn10300/hardirq.h [deleted file]
include/asm-mn10300/highmem.h [deleted file]
include/asm-mn10300/hw_irq.h [deleted file]
include/asm-mn10300/intctl-regs.h [deleted file]
include/asm-mn10300/io.h [deleted file]
include/asm-mn10300/ioctl.h [deleted file]
include/asm-mn10300/ioctls.h [deleted file]
include/asm-mn10300/ipc.h [deleted file]
include/asm-mn10300/ipcbuf.h [deleted file]
include/asm-mn10300/irq.h [deleted file]
include/asm-mn10300/irq_regs.h [deleted file]
include/asm-mn10300/kdebug.h [deleted file]
include/asm-mn10300/kmap_types.h [deleted file]
include/asm-mn10300/kprobes.h [deleted file]
include/asm-mn10300/linkage.h [deleted file]
include/asm-mn10300/local.h [deleted file]
include/asm-mn10300/mc146818rtc.h [deleted file]
include/asm-mn10300/mman.h [deleted file]
include/asm-mn10300/mmu.h [deleted file]
include/asm-mn10300/mmu_context.h [deleted file]
include/asm-mn10300/module.h [deleted file]
include/asm-mn10300/msgbuf.h [deleted file]
include/asm-mn10300/mutex.h [deleted file]
include/asm-mn10300/nmi.h [deleted file]
include/asm-mn10300/page.h [deleted file]
include/asm-mn10300/page_offset.h [deleted file]
include/asm-mn10300/param.h [deleted file]
include/asm-mn10300/pci.h [deleted file]
include/asm-mn10300/percpu.h [deleted file]
include/asm-mn10300/pgalloc.h [deleted file]
include/asm-mn10300/pgtable.h [deleted file]
include/asm-mn10300/pio-regs.h [deleted file]
include/asm-mn10300/poll.h [deleted file]
include/asm-mn10300/posix_types.h [deleted file]
include/asm-mn10300/proc-mn103e010/cache.h [deleted file]
include/asm-mn10300/proc-mn103e010/clock.h [deleted file]
include/asm-mn10300/proc-mn103e010/irq.h [deleted file]
include/asm-mn10300/proc-mn103e010/proc.h [deleted file]
include/asm-mn10300/processor.h [deleted file]
include/asm-mn10300/ptrace.h [deleted file]
include/asm-mn10300/reset-regs.h [deleted file]
include/asm-mn10300/resource.h [deleted file]
include/asm-mn10300/rtc-regs.h [deleted file]
include/asm-mn10300/rtc.h [deleted file]
include/asm-mn10300/scatterlist.h [deleted file]
include/asm-mn10300/sections.h [deleted file]
include/asm-mn10300/sembuf.h [deleted file]
include/asm-mn10300/serial-regs.h [deleted file]
include/asm-mn10300/serial.h [deleted file]
include/asm-mn10300/setup.h [deleted file]
include/asm-mn10300/shmbuf.h [deleted file]
include/asm-mn10300/shmparam.h [deleted file]
include/asm-mn10300/sigcontext.h [deleted file]
include/asm-mn10300/siginfo.h [deleted file]
include/asm-mn10300/signal.h [deleted file]
include/asm-mn10300/smp.h [deleted file]
include/asm-mn10300/socket.h [deleted file]
include/asm-mn10300/sockios.h [deleted file]
include/asm-mn10300/spinlock.h [deleted file]
include/asm-mn10300/stat.h [deleted file]
include/asm-mn10300/statfs.h [deleted file]
include/asm-mn10300/string.h [deleted file]
include/asm-mn10300/swab.h [deleted file]
include/asm-mn10300/system.h [deleted file]
include/asm-mn10300/termbits.h [deleted file]
include/asm-mn10300/termios.h [deleted file]
include/asm-mn10300/thread_info.h [deleted file]
include/asm-mn10300/timer-regs.h [deleted file]
include/asm-mn10300/timex.h [deleted file]
include/asm-mn10300/tlb.h [deleted file]
include/asm-mn10300/tlbflush.h [deleted file]
include/asm-mn10300/topology.h [deleted file]
include/asm-mn10300/types.h [deleted file]
include/asm-mn10300/uaccess.h [deleted file]
include/asm-mn10300/ucontext.h [deleted file]
include/asm-mn10300/unaligned.h [deleted file]
include/asm-mn10300/unistd.h [deleted file]
include/asm-mn10300/unit-asb2303/clock.h [deleted file]
include/asm-mn10300/unit-asb2303/leds.h [deleted file]
include/asm-mn10300/unit-asb2303/serial.h [deleted file]
include/asm-mn10300/unit-asb2303/smc91111.h [deleted file]
include/asm-mn10300/unit-asb2303/timex.h [deleted file]
include/asm-mn10300/unit-asb2305/clock.h [deleted file]
include/asm-mn10300/unit-asb2305/leds.h [deleted file]
include/asm-mn10300/unit-asb2305/serial.h [deleted file]
include/asm-mn10300/unit-asb2305/timex.h [deleted file]
include/asm-mn10300/user.h [deleted file]
include/asm-mn10300/vga.h [deleted file]
include/asm-mn10300/xor.h [deleted file]
include/linux/capability.h
include/linux/debug_locks.h
include/linux/i2c.h
include/linux/ide.h
include/linux/percpu.h
kernel/module.c
kernel/mutex.c
kernel/panic.c
lib/debug_locks.c
scripts/.gitignore
scripts/Makefile
scripts/get_maintainer.pl [new file with mode: 0755]
scripts/ihex2fw.c [deleted file]
sound/isa/Kconfig
sound/isa/wavefront/wavefront_fx.c
sound/isa/wavefront/yss225.c [deleted file]

index 7e2af10e82645570a7ad426bc3e73ea3b6497ea7..de491a3e23131001c7e308e30aa12f8326159f69 100644 (file)
@@ -428,3 +428,12 @@ Why:       In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to
        After a reasonable transition period, we will remove the legacy
        fakephp interface.
 Who:   Alex Chiang <achiang@hp.com>
+
+---------------------------
+
+What:  i2c-voodoo3 driver
+When:  October 2009
+Why:   Superseded by tdfxfb. I2C/DDC support used to live in a separate
+       driver but this caused driver conflicts.
+Who:   Jean Delvare <khali@linux-fr.org>
+       Krzysztof Helt <krzysztof.h1@wp.pl>
index 864ff32837803da00c5c0d8cfde27e754216ef95..6d40f00b358caa42a1d217fb7f6c6a185915ea86 100644 (file)
@@ -24,6 +24,49 @@ Partitions and P_Keys
   The P_Key for any interface is given by the "pkey" file, and the
   main interface for a subinterface is in "parent."
 
+Datagram vs Connected modes
+
+  The IPoIB driver supports two modes of operation: datagram and
+  connected.  The mode is set and read through an interface's
+  /sys/class/net/<intf name>/mode file.
+
+  In datagram mode, the IB UD (Unreliable Datagram) transport is used
+  and so the interface MTU has is equal to the IB L2 MTU minus the
+  IPoIB encapsulation header (4 bytes).  For example, in a typical IB
+  fabric with a 2K MTU, the IPoIB MTU will be 2048 - 4 = 2044 bytes.
+
+  In connected mode, the IB RC (Reliable Connected) transport is used.
+  Connected mode is to takes advantage of the connected nature of the
+  IB transport and allows an MTU up to the maximal IP packet size of
+  64K, which reduces the number of IP packets needed for handling
+  large UDP datagrams, TCP segments, etc and increases the performance
+  for large messages.
+
+  In connected mode, the interface's UD QP is still used for multicast
+  and communication with peers that don't support connected mode. In
+  this case, RX emulation of ICMP PMTU packets is used to cause the
+  networking stack to use the smaller UD MTU for these neighbours.
+
+Stateless offloads
+
+  If the IB HW supports IPoIB stateless offloads, IPoIB advertises
+  TCP/IP checksum and/or Large Send (LSO) offloading capability to the
+  network stack.
+
+  Large Receive (LRO) offloading is also implemented and may be turned
+  on/off using ethtool calls.  Currently LRO is supported only for
+  checksum offload capable devices.
+
+  Stateless offloads are supported only in datagram mode.  
+
+Interrupt moderation
+
+  If the underlying IB device supports CQ event moderation, one can
+  use ethtool to set interrupt mitigation parameters and thus reduce
+  the overhead incurred by handling interrupts.  The main code path of
+  IPoIB doesn't use events for TX completion signaling so only RX
+  moderation is supported.
+
 Debugging Information
 
   By compiling the IPoIB driver with CONFIG_INFINIBAND_IPOIB_DEBUG set
@@ -55,3 +98,5 @@ References
     http://ietf.org/rfc/rfc4391.txt 
   IP over InfiniBand (IPoIB) Architecture (RFC 4392)
     http://ietf.org/rfc/rfc4392.txt 
+  IP over InfiniBand: Connected Mode (RFC 4755)
+    http://ietf.org/rfc/rfc4755.txt
index 5d843588e1de159958693aee543af4af2e82c6dc..ca2997a45766adac94d6dc3c739bc425efaac45c 100644 (file)
@@ -72,7 +72,6 @@ M: Mail patches to
 L: Mailing list that is relevant to this area
 W: Web-page with status/info
 T: SCM tree type and location.  Type is one of: git, hg, quilt.
-F: Applicable files and/or directories
 S: Status, one of the following:
 
        Supported:      Someone is actually paid to look after this.
@@ -85,23 +84,40 @@ S: Status, one of the following:
                        it has been replaced by a better system and you
                        should be using that.
 
+F: Files and directories with wildcard patterns.
+   A trailing slash includes all files and subdirectory files.
+       F:      drivers/net/    all files in and below drivers/net
+       F:      drivers/net/*   all files in drivers/net, but not below
+       F:      */net/*         all files in "any top level directory"/net
+   One pattern per line.  Multiple F: lines acceptable.
+X: Files and directories that are NOT maintained, same rules as F:
+   Files exclusions are tested before file matches.
+   Can be useful for excluding a specific subdirectory, for instance:
+       F:      net/
+       X:      net/ipv6/
+   matches all files in and below net excluding net/ipv6/
+
 3C505 NETWORK DRIVER
 P:     Philip Blundell
 M:     philb@gnu.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/3c505*
 
 3C59X NETWORK DRIVER
 P:     Steffen Klassert
 M:     klassert@mathematik.tu-chemnitz.de
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     Documentation/networking/vortex.txt
+F:     drivers/net/3c59x.c
 
 3CR990 NETWORK DRIVER
 P:     David Dillow
 M:     dave@thedillows.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/typhoon*
 
 3W-9XXX SATA-RAID CONTROLLER DRIVER
 P:     Adam Radford
@@ -109,6 +125,7 @@ M:  linuxraid@amcc.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.amcc.com
 S:     Supported
+F:     drivers/scsi/3w-9xxx*
 
 3W-XXXX ATA-RAID CONTROLLER DRIVER
 P:     Adam Radford
@@ -116,35 +133,43 @@ M:        linuxraid@amcc.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.amcc.com
 S:     Supported
+F:     drivers/scsi/3w-xxxx*
 
 53C700 AND 53C700-66 SCSI DRIVER
 P:     James E.J. Bottomley
 M:     James.Bottomley@HansenPartnership.com
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/53c700*
 
 6PACK NETWORK DRIVER FOR AX.25
 P:     Andreas Koensgen
 M:     ajk@iehk.rwth-aachen.de
 L:     linux-hams@vger.kernel.org
 S:     Maintained
+F:     drivers/net/hamradio/6pack.c
 
 8169 10/100/1000 GIGABIT ETHERNET DRIVER
 P:     Francois Romieu
 M:     romieu@fr.zoreil.com
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/r8169.c
 
 8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
 L:     linux-serial@vger.kernel.org
 W:     http://serial.sourceforge.net
 S:     Orphan
+F:     drivers/serial/8250*
+F:     include/linux/serial_8250.h
 
 8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
 P:     Paul Gortmaker
 M:     p_gortmaker@yahoo.com
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/*8390*
+F:     drivers/net/ax88796.c
 
 9P FILE SYSTEM
 P:     Eric Van Hensbergen
@@ -155,14 +180,17 @@ P:        Latchesar Ionkov
 M:     lucho@ionkov.net
 L:     v9fs-developer@lists.sourceforge.net
 W:     http://swik.net/v9fs
-T:     git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/ericvh/v9fs.git
 S:     Maintained
+F:     Documentation/filesystems/9p.txt
+F:     fs/9p/
 
 A2232 SERIAL BOARD DRIVER
 P:     Enver Haase
 M:     A2232@gmx.net
 L:     linux-m68k@lists.linux-m68k.org
 S:     Maintained
+F:     drivers/char/ser_a2232*
 
 AACRAID SCSI RAID DRIVER
 P:     Adaptec OEM Raid Solutions
@@ -170,24 +198,29 @@ M:        aacraid@adaptec.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.adaptec.com/
 S:     Supported
+F:     Documentation/scsi/aacraid.txt
+F:     drivers/scsi/aacraid/
 
 ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
 P:     Hans de Goede
 M:     j.w.r.degoede@hhs.nl
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     drivers/hwmon/abituguru.c
 
 ABIT UGURU 3 HARDWARE MONITOR DRIVER
 P:     Alistair John Strachan
 M:     alistair@devzero.co.uk
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     drivers/hwmon/abituguru3.c
 
 ACENIC DRIVER
 P:     Jes Sorensen
 M:     jes@trained-monkey.org
 L:     linux-acenic@sunsite.dk
 S:     Maintained
+F:     drivers/net/acenic*
 
 ACER WMI LAPTOP EXTRAS
 P:     Carlos Corbacho
@@ -195,14 +228,18 @@ M:        carlos@strangeworlds.co.uk
 L:     aceracpi@googlegroups.com (subscribers-only)
 W:     http://code.google.com/p/aceracpi
 S:     Maintained
+F:     drivers/platform/x86/acer-wmi.c
 
 ACPI
 P:     Len Brown
 M:     lenb@kernel.org
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
-T:     git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
 S:     Supported
+F:     drivers/acpi/
+F:     drivers/pnp/pnpacpi/
+F:     include/linux/acpi.h
 
 ACPI BATTERY DRIVERS
 P:     Alexey Starikovskiy
@@ -210,6 +247,8 @@ M:  astarikovskiy@suse.de
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Supported
+F:     drivers/acpi/battery.c
+F:     drivers/acpi/*sbs*
 
 ACPI EC DRIVER
 P:     Alexey Starikovskiy
@@ -217,6 +256,7 @@ M:  astarikovskiy@suse.de
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Supported
+F:     drivers/acpi/ec.c
 
 ACPI FAN DRIVER
 P:     Zhang Rui
@@ -224,12 +264,14 @@ M:        rui.zhang@intel.com
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Supported
+F:     drivers/acpi/fan.c
 
 ACPI PCI HOTPLUG DRIVER
 P:     Kristen Carlson Accardi
 M:     kristen.c.accardi@intel.com
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     drivers/pci/hotplug/acpi*
 
 ACPI THERMAL DRIVER
 P:     Zhang Rui
@@ -237,6 +279,7 @@ M:  rui.zhang@intel.com
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Supported
+F:     drivers/acpi/*thermal*
 
 ACPI VIDEO DRIVER
 P:     Zhang Rui
@@ -244,6 +287,7 @@ M:  rui.zhang@intel.com
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Supported
+F:     drivers/acpi/video.c
 
 ACPI WMI DRIVER
 P:     Carlos Corbacho
@@ -251,6 +295,7 @@ M:  carlos@strangeworlds.co.uk
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Maintained
+F:     drivers/platform/x86/wmi.c
 
 AD1889 ALSA SOUND DRIVER
 P:     Kyle McMartin
@@ -260,77 +305,99 @@ M:        T-Bone@parisc-linux.org
 W:     http://wiki.parisc-linux.org/AD1889
 L:     linux-parisc@vger.kernel.org
 S:     Maintained
+F:     sound/pci/ad1889.*
 
 ADM1025 HARDWARE MONITOR DRIVER
 P:     Jean Delvare
 M:     khali@linux-fr.org
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/adm1025
+F:     drivers/hwmon/adm1025.c
 
 ADM1029 HARDWARE MONITOR DRIVER
 P:     Corentin Labbe
 M:     corentin.labbe@geomatys.fr
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     drivers/hwmon/adm1029.c
 
 ADM8211 WIRELESS DRIVER
 P:     Michael Wu
 M:     flamingice@sourmilk.net
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
 S:     Maintained
+F:     drivers/net/wireless/adm8211.*
 
 ADT746X FAN DRIVER
 P:     Colin Leroy
 M:     colin@colino.net
 S:     Maintained
+F:     drivers/macintosh/therm_adt746x.c
 
 ADVANSYS SCSI DRIVER
 P:     Matthew Wilcox
 M:     matthew@wil.cx
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     Documentation/scsi/advansys.txt
+F:     drivers/scsi/advansys.c
 
 AEDSP16 DRIVER
 P:     Riccardo Facchetti
 M:     fizban@tin.it
 S:     Maintained
+F:     sound/oss/aedsp16.c
 
 AFFS FILE SYSTEM
 P:     Roman Zippel
 M:     zippel@linux-m68k.org
 S:     Maintained
+F:     Documentation/filesystems/affs.txt
+F:     fs/affs/
 
 AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN
 P:     David Howells
 M:     dhowells@redhat.com
 L:     linux-afs@lists.infradead.org
 S:     Supported
+F:     fs/afs/
+F:     include/net/af_rxrpc.h
+F:     net/rxrpc/af_rxrpc.c
 
 AGPGART DRIVER
 P:     David Airlie
 M:     airlied@linux.ie
-T:     git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
 S:     Maintained
+F:     drivers/char/agp/
+F:     include/linux/agp*
 
 AHA152X SCSI DRIVER
 P:     Juergen E. Fischer
-M:     Juergen Fischer <fischer@norbit.de>
+M:     fischer@norbit.de
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/aha152x*
+F:     drivers/scsi/pcmcia/aha152x*
 
 AIC7XXX / AIC79XX SCSI DRIVER
 P:     Hannes Reinecke
 M:     hare@suse.de
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/aic7xxx/
+F:     drivers/scsi/aic7xxx_old/
 
 AIO
 P:     Benjamin LaHaise
 M:     bcrl@kvack.org
 L:     linux-aio@kvack.org
 S:     Supported
+F:     fs/aio.c
+F:     include/linux/*aio*.h
 
 ALCATEL SPEEDTOUCH USB DRIVER
 P:     Duncan Sands
@@ -338,17 +405,22 @@ M:        duncan.sands@free.fr
 L:     linux-usb@vger.kernel.org
 W:     http://www.linux-usb.org/SpeedTouch/
 S:     Maintained
+F:     drivers/usb/atm/speedtch.c
+F:     drivers/usb/atm/usbatm.c
 
 ALCHEMY AU1XX0 MMC DRIVER
 P:     Manuel Lauss
 M:     manuel.lauss@gmail.com
 S:     Maintained
+F:     drivers/mmc/host/au1xmmc.c
 
 ALI1563 I2C DRIVER
 P:     Rudolf Marek
 M:     r.marek@assembler.cz
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     Documentation/i2c/busses/i2c-ali1563
+F:     drivers/i2c/busses/i2c-ali1563.c
 
 ALPHA PORT
 P:     Richard Henderson
@@ -358,31 +430,41 @@ P:        Ivan Kokshaysky
 M:     ink@jurassic.park.msu.ru
 S:     Maintained for 2.4; PCI support for 2.6.
 L:     linux-alpha@vger.kernel.org
+F:     arch/alpha/
 
 AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
 P:     Thomas Dahlmann
 M:     thomas.dahlmann@amd.com
 L:     linux-geode@lists.infradead.org (moderated for non-subscribers)
 S:     Supported
+F:     drivers/usb/gadget/amd5536udc.*
 
 AMD GEODE PROCESSOR/CHIPSET SUPPORT
 P:     Jordan Crouse
 L:     linux-geode@lists.infradead.org (moderated for non-subscribers)
 W:     http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
 S:     Supported
+F:     arch/x86/kernel/geode_32.c
+F:     drivers/char/hw_random/geode-rng.c
+F:     drivers/crypto/geode*
+F:     drivers/video/geode/
+F:     arch/x86/include/asm/geode.h
 
 AMD IOMMU (AMD-VI)
 P:     Joerg Roedel
 M:     joerg.roedel@amd.com
 L:     iommu@lists.linux-foundation.org
-T:     git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
 S:     Supported
+F:     arch/x86/kernel/amd_iommu*.c
+F:     arch/x86/include/asm/amd_iommu*.h
 
 AMD MICROCODE UPDATE SUPPORT
-P:      Andreas Herrmann
-M:      andeas.herrmann3@amd.com
-L:      amd64-microcode@amd64.org
-S:      Supported
+P:     Andreas Herrmann
+M:     andeas.herrmann3@amd.com
+L:     amd64-microcode@amd64.org
+S:     Supported
+F:     arch/x86/kernel/microcode_amd.c
 
 AMS (Apple Motion Sensor) DRIVER
 P:     Stelian Pop
@@ -390,6 +472,7 @@ M:  stelian@popies.net
 P:     Michael Hanselmann
 M:     linux-kernel@hansmi.ch
 S:     Supported
+F:     drivers/hwmon/ams/
 
 AMSO1100 RNIC DRIVER
 P:     Tom Tucker
@@ -398,6 +481,7 @@ P:  Steve Wise
 M:     swise@opengridcomputing.com
 L:     general@lists.openfabrics.org
 S:     Maintained
+F:     drivers/infiniband/hw/amso1100/
 
 AOA (Apple Onboard Audio) ALSA DRIVER
 P:     Johannes Berg
@@ -405,6 +489,7 @@ M:  johannes@sipsolutions.net
 L:     linuxppc-dev@ozlabs.org
 L:     alsa-devel@alsa-project.org (subscribers-only)
 S:     Maintained
+F:     sound/aoa/
 
 APM DRIVER
 P:     Stephen Rothwell
@@ -412,48 +497,63 @@ M:        sfr@canb.auug.org.au
 L:     linux-laptop@vger.kernel.org
 W:     http://www.canb.auug.org.au/~sfr/
 S:     Supported
+F:     arch/x86/kernel/apm_32.c
+F:     include/linux/apm_bios.h
 
 APPLE BCM5974 MULTITOUCH DRIVER
 P:     Henrik Rydberg
 M:     rydberg@euromail.se
 L:     linux-input@vger.kernel.org
 S:     Maintained
+F:     drivers/input/mouse/bcm5974.c
 
 APPLE SMC DRIVER
 P:     Nicolas Boichat
 M:     nicolas@boichat.ch
 L:     mactel-linux-devel@lists.sourceforge.net
 S:     Maintained
+F:     drivers/hwmon/applesmc.c
 
 APPLETALK NETWORK LAYER
 P:     Arnaldo Carvalho de Melo
 M:     acme@ghostprotocols.net
 S:     Maintained
+F:     drivers/net/appletalk/
+F:     net/appletalk/
 
 APPLETOUCH TOUCHPAD DRIVER
 P:     Johannes Berg
 M:     johannes@sipsolutions.net
 L:     linux-input@vger.kernel.org
 S:     Maintained
+F:     Documentation/input/appletouch.txt
+F:     drivers/input/mouse/appletouch.c
 
 ARC FRAMEBUFFER DRIVER
 P:     Jaya Kumar
 M:     jayalk@intworks.biz
 S:     Maintained
+F:     drivers/video/arcfb.c
+F:     drivers/video/fb_defio.c
 
 ARM MFM AND FLOPPY DRIVERS
 P:     Ian Molton
 M:     spyro@f2s.com
 S:     Maintained
+F:     arch/arm/lib/floppydma.S
+F:     arch/arm/include/asm/floppy.h
 
 ARM PRIMECELL MMCI PL180/1 DRIVER
 S:     Orphan
+F:     drivers/mmc/host/mmci.*
 
 ARM/ADI ROADRUNNER MACHINE SUPPORT
 P:     Lennert Buytenhek
 M:     kernel@wantstofly.org
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 S:     Maintained
+F:     arch/arm/mach-ixp23xx/
+F:     arch/arm/mach-ixp23xx/include/mach/
 
 ARM/ADS SPHERE MACHINE SUPPORT
 P:     Lennert Buytenhek
@@ -507,7 +607,7 @@ ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
 P:     Paulius Zaleckas
 M:     paulius.zaleckas@teltonika.lt
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
-T:     git gitorious.org/linux-gemini/mainline.git
+T:     git git://gitorious.org/linux-gemini/mainline.git
 S:     Maintained
 
 ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
@@ -643,10 +743,10 @@ W:        http://hackndev.com
 S:     Maintained
 
 ARM/PALMZ72 SUPPORT
-P:     Sergey Lapin
-M:     slapin@ossfans.org
-W:     http://hackndev.com
-S:     Maintained
+P:     Sergey Lapin
+M:     slapin@ossfans.org
+W:     http://hackndev.com
+S:     Maintained
 
 ARM/PLEB SUPPORT
 P:     Peter Chubb
@@ -707,16 +807,17 @@ L:        linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 S:     Maintained
 
 ARM/NUVOTON W90X900 ARM ARCHITECTURE
-P:      Wan ZongShun
-M:      mcuos.com@gmail.com
-L:      linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
-W:      http://www.mcuos.com
-S:      Maintained
+P:     Wan ZongShun
+M:     mcuos.com@gmail.com
+L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
+W:     http://www.mcuos.com
+S:     Maintained
 
 ARPD SUPPORT
 P:     Jonathan Layes
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     net/ipv4/arp.c
 
 ASUS ACPI EXTRAS DRIVER
 P:     Corentin Chary
@@ -727,12 +828,15 @@ L:        acpi4asus-user@lists.sourceforge.net
 W:     http://sourceforge.net/projects/acpi4asus
 W:     http://xf.iksaif.net/acpi4asus
 S:     Maintained
+F:     arch/x86/kernel/acpi/boot.c
+F:     drivers/platform/x86/asus_acpi.c
 
 ASUS ASB100 HARDWARE MONITOR DRIVER
 P:     Mark M. Hoffman
 M:     mhoffman@lightlink.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     drivers/hwmon/asb100.c
 
 ASUS LAPTOP EXTRAS DRIVER
 P:     Corentin Chary
@@ -741,6 +845,7 @@ L:  acpi4asus-user@lists.sourceforge.net
 W:     http://sourceforge.net/projects/acpi4asus
 W:     http://xf.iksaif.net/acpi4asus
 S:     Maintained
+F:     drivers/platform/x86/asus-laptop.c
 
 ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
 P:     Dan Williams
@@ -750,12 +855,19 @@ M:        maciej.sosnowski@intel.com
 L:     linux-kernel@vger.kernel.org
 W:     http://sourceforge.net/projects/xscaleiop
 S:     Supported
+F:     Documentation/crypto/async-tx-api.txt
+F:     crypto/async_tx/
+F:     drivers/dma/
+F:     include/linux/dmaengine.h
+F:     include/linux/async_tx.h
 
 ATA OVER ETHERNET (AOE) DRIVER
 P:     Ed L. Cashin
 M:     ecashin@coraid.com
 W:     http://www.coraid.com/support/linux
 S:     Supported
+F:     Documentation/aoe/
+F:     drivers/block/aoe/
 
 ATHEROS ATH5K WIRELESS DRIVER
 P:     Jiri Slaby
@@ -769,6 +881,7 @@ M:  me@bobcopeland.com
 L:     linux-wireless@vger.kernel.org
 L:     ath5k-devel@lists.ath5k.org
 S:     Maintained
+F:     drivers/net/wireless/ath5k/
 
 ATHEROS ATH9K WIRELESS DRIVER
 P:     Luis R. Rodriguez
@@ -778,6 +891,7 @@ M:  jmalinen@atheros.com
 L:     linux-wireless@vger.kernel.org
 L:     ath9k-devel@lists.ath9k.org
 S:     Supported
+F:     drivers/net/wireless/ath9k/
 
 ATHEROS AR9170 WIRELESS DRIVER
 P:     Christian Lamparter
@@ -791,6 +905,7 @@ ATI_REMOTE2 DRIVER
 P:     Ville Syrjala
 M:     syrjala@sci.fi
 S:     Maintained
+F:     drivers/input/misc/ati_remote2.c
 
 ATLX ETHERNET DRIVERS
 P:     Jay Cliburn
@@ -803,6 +918,7 @@ L:  atl1-devel@lists.sourceforge.net
 W:     http://sourceforge.net/projects/atl1
 W:     http://atl1.sourceforge.net
 S:     Maintained
+F:     drivers/net/atlx/
 
 ATM
 P:     Chas Williams
@@ -811,6 +927,8 @@ L:  linux-atm-general@lists.sourceforge.net (subscribers-only)
 L:     netdev@vger.kernel.org
 W:     http://linux-atm.sourceforge.net
 S:     Maintained
+F:     drivers/atm/
+F:     include/linux/atm*
 
 ATMEL AT91 MCI DRIVER
 P:     Nicolas Ferre
@@ -819,28 +937,34 @@ L:        linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 W:     http://www.atmel.com/products/AT91/
 W:     http://www.at91.com/
 S:     Maintained
+F:     drivers/mmc/host/at91_mci.c
 
 ATMEL AT91 / AT32 SERIAL DRIVER
 P:     Haavard Skinnemoen
 M:     hskinnemoen@atmel.com
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     drivers/serial/atmel_serial.c
 
 ATMEL LCDFB DRIVER
 P:     Nicolas Ferre
 M:     nicolas.ferre@atmel.com
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/atmel_lcdfb.c
+F:     include/video/atmel_lcdc.h
 
 ATMEL MACB ETHERNET DRIVER
 P:     Haavard Skinnemoen
 M:     hskinnemoen@atmel.com
 S:     Supported
+F:     drivers/net/macb.*
 
 ATMEL SPI DRIVER
 P:     Haavard Skinnemoen
 M:     hskinnemoen@atmel.com
 S:     Supported
+F:     drivers/spi/atmel_spi.*
 
 ATMEL USBA UDC DRIVER
 P:     Haavard Skinnemoen
@@ -848,6 +972,7 @@ M:  hskinnemoen@atmel.com
 L:     kernel@avr32linux.org
 W:     http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
 S:     Supported
+F:     drivers/usb/gadget/atmel_usba_udc.*
 
 ATMEL WIRELESS DRIVER
 P:     Simon Kelley
@@ -856,6 +981,7 @@ L:  linux-wireless@vger.kernel.org
 W:     http://www.thekelleys.org.uk/atmel
 W:     http://atmelwlandriver.sourceforge.net/
 S:     Maintained
+F:     drivers/net/wireless/atmel*
 
 AUDIT SUBSYSTEM
 P:     Al Viro
@@ -864,8 +990,10 @@ P: Eric Paris
 M:     eparis@redhat.com
 L:     linux-audit@redhat.com (subscribers-only)
 W:     http://people.redhat.com/sgrubb/audit/
-T:     git git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
 S:     Maintained
+F:     include/linux/audit.h
+F:     kernel/audit*
 
 AUXILIARY DISPLAY DRIVERS
 P:     Miguel Ojeda Sandonis
@@ -874,6 +1002,8 @@ L: linux-kernel@vger.kernel.org
 W:     http://miguelojeda.es/auxdisplay.htm
 W:     http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
 S:     Maintained
+F:     drivers/auxdisplay/
+F:     include/linux/cfag12864b.h
 
 AVR32 ARCHITECTURE
 P:     Haavard Skinnemoen
@@ -882,11 +1012,13 @@ W:       http://www.atmel.com/products/AVR32/
 W:     http://avr32linux.org/
 W:     http://avrfreaks.net/
 S:     Supported
+F:     arch/avr32/
 
 AVR32/AT32AP MACHINE SUPPORT
 P:     Haavard Skinnemoen
 M:     hskinnemoen@atmel.com
 S:     Supported
+F:     arch/avr32/mach-at32ap/
 
 AX.25 NETWORK LAYER
 P:     Ralf Baechle
@@ -894,6 +1026,9 @@ M: ralf@linux-mips.org
 L:     linux-hams@vger.kernel.org
 W:     http://www.linux-ax25.org/
 S:     Maintained
+F:     include/linux/ax25.h
+F:     include/net/ax25.h
+F:     net/ax25/
 
 B43 WIRELESS DRIVER
 P:     Michael Buesch
@@ -903,6 +1038,7 @@ M: stefano.brivio@polimi.it
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/en/users/Drivers/b43
 S:     Maintained
+F:     drivers/net/wireless/b43/
 
 B43LEGACY WIRELESS DRIVER
 P:     Larry Finger
@@ -912,11 +1048,14 @@ M:       stefano.brivio@polimi.it
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/en/users/Drivers/b43
 S:     Maintained
+F:     drivers/net/wireless/b43legacy/
 
 BACKLIGHT CLASS/SUBSYSTEM
 P:     Richard Purdie
 M:     rpurdie@rpsys.net
 S:     Maintained
+F:     drivers/video/backlight/
+F:     include/linux/backlight.h
 
 BAYCOM/HDLCDRV DRIVERS FOR AX.25
 P:     Thomas Sailer
@@ -924,18 +1063,24 @@ M:       t.sailer@alumni.ethz.ch
 L:     linux-hams@vger.kernel.org
 W:     http://www.baycom.org/~tom/ham/ham.html
 S:     Maintained
+F:     drivers/net/hamradio/baycom*
 
 BEFS FILE SYSTEM
 P:     Sergey S. Kostyliov
 M:     rathamahata@php4.ru
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/befs.txt
+F:     fs/befs/
 
 BFS FILE SYSTEM
 P:     Tigran A. Aivazian
 M:     tigran@aivazian.fsnet.co.uk
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/bfs.txt
+F:     fs/bfs/
+F:     include/linux/bfs_fs.h
 
 BLACKFIN ARCHITECTURE
 P:     Bryan Wu
@@ -943,6 +1088,7 @@ M: cooloney@kernel.org
 L:     uclinux-dist-devel@blackfin.uclinux.org
 W:     http://blackfin.uclinux.org
 S:     Supported
+F:     arch/blackfin/
 
 BLACKFIN EMAC DRIVER
 P:     Bryan Wu
@@ -950,6 +1096,7 @@ M: cooloney@kernel.org
 L:     uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:     http://blackfin.uclinux.org
 S:     Supported
+F:     drivers/net/bfin_mac.*
 
 BLACKFIN RTC DRIVER
 P:     Mike Frysinger
@@ -957,6 +1104,7 @@ M: vapier.adi@gmail.com
 L:     uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:     http://blackfin.uclinux.org
 S:     Supported
+F:     drivers/rtc/rtc-bfin.c
 
 BLACKFIN SERIAL DRIVER
 P:     Sonic Zhang
@@ -964,6 +1112,7 @@ M: sonic.zhang@analog.com
 L:     uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:     http://blackfin.uclinux.org
 S:     Supported
+F:     drivers/serial/bfin_5xx.c
 
 BLACKFIN WATCHDOG DRIVER
 P:     Mike Frysinger
@@ -971,6 +1120,7 @@ M: vapier.adi@gmail.com
 L:     uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:     http://blackfin.uclinux.org
 S:     Supported
+F:     drivers/watchdog/bfin_wdt.c
 
 BLACKFIN I2C TWI DRIVER
 P:     Sonic Zhang
@@ -978,19 +1128,22 @@ M:       sonic.zhang@analog.com
 L:     uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:     http://blackfin.uclinux.org/
 S:     Supported
+F:     drivers/i2c/busses/i2c-bfin-twi.c
 
 BLOCK LAYER
 P:     Jens Axboe
 M:     axboe@kernel.dk
 L:     linux-kernel@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
 S:     Maintained
+F:     block/
 
 BLOCK2MTD DRIVER
 P:     Joern Engel
 M:     joern@lazybastard.org
 L:     linux-mtd@lists.infradead.org
 S:     Maintained
+F:     drivers/mtd/devices/block2mtd.c
 
 BLUETOOTH DRIVERS
 P:     Marcel Holtmann
@@ -998,14 +1151,17 @@ M:       marcel@holtmann.org
 L:     linux-bluetooth@vger.kernel.org
 W:     http://www.bluez.org/
 S:     Maintained
+F:     drivers/bluetooth/
 
 BLUETOOTH SUBSYSTEM
 P:     Marcel Holtmann
 M:     marcel@holtmann.org
 L:     linux-bluetooth@vger.kernel.org
 W:     http://www.bluez.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
 S:     Maintained
+F:     net/bluetooth/
+F:     include/net/bluetooth/
 
 BONDING DRIVER
 P:     Jay Vosburgh
@@ -1013,24 +1169,30 @@ M:      fubar@us.ibm.com
 L:     bonding-devel@lists.sourceforge.net
 W:     http://sourceforge.net/projects/bonding/
 S:     Supported
+F:     drivers/net/bonding/
+F:     include/linux/if_bonding.h
 
 BROADCOM B44 10/100 ETHERNET DRIVER
 P:     Gary Zambrano
 M:     zambrano@broadcom.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/b44.*
 
 BROADCOM BNX2 GIGABIT ETHERNET DRIVER
 P:     Michael Chan
 M:     mchan@broadcom.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/bnx2.*
+F:     drivers/net/bnx2_*
 
 BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
 P:     Eilon Greenstein
 M:     eilong@broadcom.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/bnx2x*
 
 BROADCOM TG3 GIGABIT ETHERNET DRIVER
 P:     Matt Carlson
@@ -1039,41 +1201,51 @@ P:      Michael Chan
 M:     mchan@broadcom.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/tg3.*
 
 BSG (block layer generic sg v4 driver)
 P:     FUJITA Tomonori
 M:     fujita.tomonori@lab.ntt.co.jp
 L:     linux-scsi@vger.kernel.org
 S:     Supported
+F:     block/bsg.c
+F:     include/linux/bsg.h
 
 BT8XXGPIO DRIVER
 P:     Michael Buesch
 M:     mb@bu3sch.de
 W:     http://bu3sch.de/btgpio.php
 S:     Maintained
+F:     drivers/gpio/bt8xxgpio.c
 
 BTRFS FILE SYSTEM
 P:     Chris Mason
 M:     chris.mason@oracle.com
 L:     linux-btrfs@vger.kernel.org
 W:     http://btrfs.wiki.kernel.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
 S:     Maintained
+F:     Documentation/filesystems/btrfs.txt
+F:     fs/btrfs/
 
 BTTV VIDEO4LINUX DRIVER
 P:     Mauro Carvalho Chehab
 M:     mchehab@infradead.org
 L:     linux-media@vger.kernel.org
 W:     http://linuxtv.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     Documentation/video4linux/bttv/
+F:     drivers/media/video/bt8xx/bttv*
 
 CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
 P:     Jonathan Corbet
 M:     corbet@lwn.net
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     Documentation/video4linux/cafe_ccic
+F:     drivers/media/video/cafe_ccic*
 
 CALGARY x86-64 IOMMU
 P:     Muli Ben-Yehuda
@@ -1083,6 +1255,10 @@ M:       jdmason@kudzu.us
 L:     linux-kernel@vger.kernel.org
 L:     discuss@x86-64.org
 S:     Maintained
+F:     arch/x86/kernel/pci-calgary_64.c
+F:     arch/x86/kernel/tce_64.c
+F:     arch/x86/include/asm/calgary.h
+F:     arch/x86/include/asm/tce.h
 
 CAN NETWORK LAYER
 P:     Urs Thuermann
@@ -1092,6 +1268,9 @@ M:        oliver.hartkopp@volkswagen.de
 L:     socketcan-core@lists.berlios.de (subscribers-only)
 W:     http://developer.berlios.de/projects/socketcan/
 S:     Maintained
+F:     drivers/net/can/
+F:     include/linux/can/
+F:     include/linux/can.h
 
 CELL BROADBAND ENGINE ARCHITECTURE
 P:     Arnd Bergmann
@@ -1100,12 +1279,23 @@ L:      linuxppc-dev@ozlabs.org
 L:     cbe-oss-dev@ozlabs.org
 W:     http://www.ibm.com/developerworks/power/cell/
 S:     Supported
+F:     arch/powerpc/include/asm/cell*.h
+F:     arch/powerpc/include/asm/lv1call.h
+F:     arch/powerpc/include/asm/ps3*.h
+F:     arch/powerpc/include/asm/spu*.h
+F:     arch/powerpc/oprofile/*cell*
+F:     arch/powerpc/platforms/cell/
+F:     arch/powerpc/platforms/ps3/
 
 CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
 P:     David Vrabel
 M:     david.vrabel@csr.com
 L:     linux-usb@vger.kernel.org
 S:     Supported
+F:     Documentation/usb/WUSB-Design-overview.txt
+F:     Documentation/usb/wusb-cbaf
+F:     drivers/usb/wusbcore/
+F:     include/linux/usb/wusb*
 
 CFAG12864B LCD DRIVER
 P:     Miguel Ojeda Sandonis
@@ -1114,6 +1304,8 @@ L:        linux-kernel@vger.kernel.org
 W:     http://miguelojeda.es/auxdisplay.htm
 W:     http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
 S:     Maintained
+F:     drivers/auxdisplay/cfag12864b.c
+F:     include/linux/cfag12864b.h
 
 CFAG12864BFB LCD FRAMEBUFFER DRIVER
 P:     Miguel Ojeda Sandonis
@@ -1122,18 +1314,25 @@ L:      linux-kernel@vger.kernel.org
 W:     http://miguelojeda.es/auxdisplay.htm
 W:     http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
 S:     Maintained
+F:     drivers/auxdisplay/cfag12864bfb.c
+F:     include/linux/cfag12864b.h
 
 CFG80211 and NL80211
 P:     Johannes Berg
 M:     johannes@sipsolutions.net
 L:     linux-wireless@vger.kernel.org
 S:     Maintained
+F:     include/linux/nl80211.h
+F:     include/net/cfg80211.h
+F:     net/wireless/*
+X:     net/wireless/wext*
 
 CHECKPATCH
 P:     Andy Whitcroft
 M:     apw@canonical.com
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     scripts/checkpatch.pl
 
 CISCO 10G ETHERNET DRIVER
 P:     Scott Feldman
@@ -1141,24 +1340,28 @@ M:      scofeldm@cisco.com
 P:     Joe Eykholt
 M:     jeykholt@cisco.com
 S:     Supported
+F:     drivers/net/enic/
 
 CIRRUS LOGIC EP93XX ETHERNET DRIVER
 P:     Lennert Buytenhek
 M:     kernel@wantstofly.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/arm/ep93xx_eth.c
 
 CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
 P:     Lennert Buytenhek
 M:     kernel@wantstofly.org
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/host/ohci-ep93xx.c
 
 CIRRUS LOGIC CS4270 SOUND DRIVER
 P:     Timur Tabi
 M:     timur@freescale.com
 L:     alsa-devel@alsa-project.org
 S:     Supported
+F:     sound/soc/codecs/cs4270*
 
 CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
 P:     Cirrus Logic Corporation (kernel 2.2 driver)
@@ -1166,6 +1369,8 @@ M:        Cirrus Logic Corporation, Thomas Woller <twoller@crystal.cirrus.com>
 P:     Nils Faerber (port to kernel 2.4)
 M:     Nils Faerber <nils@kernelconcepts.de>
 S:     Maintained
+F:     Documentation/input/cs461x.txt
+F:     sound/pci/cs46xx/
 
 CODA FILE SYSTEM
 P:     Jan Harkes
@@ -1174,6 +1379,9 @@ M:        coda@cs.cmu.edu
 L:     codalist@coda.cs.cmu.edu
 W:     http://www.coda.cs.cmu.edu/
 S:     Maintained
+F:     Documentation/filesystems/coda.txt
+F:     fs/coda/
+F:     include/linux/coda*.h
 
 COMMON INTERNET FILE SYSTEM (CIFS)
 P:     Steve French
@@ -1181,8 +1389,10 @@ M:       sfrench@samba.org
 L:     linux-cifs-client@lists.samba.org
 L:     samba-technical@lists.samba.org
 W:     http://linux-cifs.samba.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
 S:     Supported
+F:     Documentation/filesystems/cifs.txt
+F:     fs/cifs/
 
 COMPACTPCI HOTPLUG CORE
 P:     Scott Murray
@@ -1190,6 +1400,7 @@ M:        scottm@somanetworks.com
 M:     scott@spiteful.org
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     drivers/pci/hotplug/cpci_hotplug*
 
 COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER
 P:     Scott Murray
@@ -1197,6 +1408,7 @@ M:        scottm@somanetworks.com
 M:     scott@spiteful.org
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     drivers/pci/hotplug/cpcihp_zt5550.*
 
 COMPACTPCI HOTPLUG GENERIC DRIVER
 P:     Scott Murray
@@ -1204,17 +1416,21 @@ M:      scottm@somanetworks.com
 M:     scott@spiteful.org
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     drivers/pci/hotplug/cpcihp_generic.c
 
 COMPAL LAPTOP SUPPORT
 P:     Cezary Jackiewicz
 M:     cezary.jackiewicz@gmail.com
 S:     Maintained
+F:     drivers/platform/x86/compal-laptop.c
 
 COMPUTONE INTELLIPORT MULTIPORT CARD
 P:     Michael H. Warfield
 M:     mhw@wittsend.com
 W:     http://www.wittsend.com/computone.html
 S:     Maintained
+F:     Documentation/serial/computone.txt
+F:     drivers/char/ip2/
 
 CONEXANT ACCESSRUNNER USB DRIVER
 P:     Simon Arlott
@@ -1222,12 +1438,15 @@ M:      cxacru@fire.lp0.eu
 L:     accessrunner-general@lists.sourceforge.net
 W:     http://accessrunner.sourceforge.net/
 S:     Maintained
+F:     drivers/usb/atm/cxacru.c
 
 CONFIGFS
 P:     Joel Becker
 M:     joel.becker@oracle.com
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     fs/configfs/
+F:     include/linux/configfs.h
 
 CONTROL GROUPS (CGROUPS)
 P:     Paul Menage
@@ -1236,31 +1455,41 @@ P:      Li Zefan
 M:     lizf@cn.fujitsu.com
 L:     containers@lists.linux-foundation.org
 S:     Maintained
+F:     include/linux/cgroup*
+F:     kernel/cgroup*
 
 CORETEMP HARDWARE MONITORING DRIVER
 P:     Rudolf Marek
 M:     r.marek@assembler.cz
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/coretemp
+F:     drivers/hwmon/coretemp.c
 
 COSA/SRP SYNC SERIAL DRIVER
 P:     Jan "Yenya" Kasprzak
 M:     kas@fi.muni.cz
 W:     http://www.fi.muni.cz/~kas/cosa/
 S:     Maintained
+F:     drivers/net/wan/cosa*
 
 CPU FREQUENCY DRIVERS
 P:     Dave Jones
 M:     davej@redhat.com
 L:     cpufreq@vger.kernel.org
 W:     http://www.codemonkey.org.uk/projects/cpufreq/
-T:     git kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
 S:     Maintained
+F:     arch/x86/kernel/cpu/cpufreq/
+F:     drivers/cpufreq/
+F:     include/linux/cpufreq.h
 
 CPUID/MSR DRIVER
 P:     H. Peter Anvin
 M:     hpa@zytor.com
 S:     Maintained
+F:     arch/x86/kernel/cpuid.c
+F:     arch/x86/kernel/msr.c
 
 CPUSETS
 P:     Paul Menage
@@ -1269,10 +1498,15 @@ L:      linux-kernel@vger.kernel.org
 W:     http://www.bullopensource.org/cpuset/
 W:     http://oss.sgi.com/projects/cpusets/
 S:     Supported
+F:     Documentation/cgroups/cpusets.txt
+F:     include/linux/cpuset.h
+F:     kernel/cpuset.c
 
 CRAMFS FILESYSTEM
 W:     http://sourceforge.net/projects/cramfs/
 S:     Orphan
+F:     Documentation/filesystems/cramfs.txt
+F:     fs/cramfs/
 
 CRIS PORT
 P:     Mikael Starvik
@@ -1282,6 +1516,7 @@ M:        jesper.nilsson@axis.com
 L:     dev-etrax@axis.com
 W:     http://developer.axis.com
 S:     Maintained
+F:     arch/cris/
 
 CRYPTO API
 P:     Herbert Xu
@@ -1289,8 +1524,13 @@ M:       herbert@gondor.apana.org.au
 P:     David S. Miller
 M:     davem@davemloft.net
 L:     linux-crypto@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
 S:     Maintained
+F:     Documentation/crypto/
+F:     arch/*/crypto/
+F:     crypto/
+F:     drivers/crypto/
+F:     include/crypto/
 
 CRYPTOGRAPHIC RANDOM NUMBER GENERATOR
 P:     Neil Horman
@@ -1302,16 +1542,21 @@ CS5535 Audio ALSA driver
 P:     Jaya Kumar
 M:     jayakumar.alsa@gmail.com
 S:     Maintained
+F:     sound/pci/cs5535audio/
 
 CX18 VIDEO4LINUX DRIVER
-P:     Hans Verkuil, Andy Walls
-M:     hverkuil@xs4all.nl, awalls@radix.net
+P:     Hans Verkuil
+M:     hverkuil@xs4all.nl
+P:     Andy Walls
+M:     awalls@radix.net
 L:     ivtv-devel@ivtvdriver.org
 L:     ivtv-users@ivtvdriver.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://linuxtv.org
 S:     Maintained
+F:     Documentation/video4linux/cx18.txt
+F:     drivers/media/video/cx18/
 
 CXGB3 ETHERNET DRIVER (CXGB3)
 P:     Divy Le Ray
@@ -1319,6 +1564,7 @@ M:        divy@chelsio.com
 L:     netdev@vger.kernel.org
 W:     http://www.chelsio.com
 S:     Supported
+F:     drivers/net/cxgb3/
 
 CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
 P:     Steve Wise
@@ -1326,32 +1572,32 @@ M:      swise@chelsio.com
 L:     general@lists.openfabrics.org
 W:     http://www.openfabrics.org
 S:     Supported
+F:     drivers/infiniband/hw/cxgb3/
 
 CYBERPRO FB DRIVER
 P:     Russell King
 M:     rmk@arm.linux.org.uk
 W:     http://www.arm.linux.org.uk/
 S:     Maintained
-
-CYBLAFB FRAMEBUFFER DRIVER
-P:     Knut Petersen
-M:     Knut_Petersen@t-online.de
-L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
-S:     Maintained
+F:     drivers/video/cyber2000fb.*
 
 CYCLADES 2X SYNC CARD DRIVER
 P:     Arnaldo Carvalho de Melo
 M:     acme@ghostprotocols.net
 W:     http://oops.ghostprotocols.net:81/blog
 S:     Maintained
+F:     drivers/net/wan/cycx*
 
 CYCLADES ASYNC MUX DRIVER
 W:     http://www.cyclades.com/
 S:     Orphan
+F:     drivers/char/cyclades.c
+F:     include/linux/cyclades.h
 
 CYCLADES PC300 DRIVER
 W:     http://www.cyclades.com/
 S:     Orphan
+F:     drivers/net/wan/pc300*
 
 DAMA SLAVE for AX.25
 P:     Joerg Reuter
@@ -1360,12 +1606,21 @@ W:      http://yaina.de/jreuter/
 W:     http://www.qsl.net/dl1bke/
 L:     linux-hams@vger.kernel.org
 S:     Maintained
+F:     net/ax25/af_ax25.c
+F:     net/ax25/ax25_dev.c
+F:     net/ax25/ax25_ds_*
+F:     net/ax25/ax25_in.c
+F:     net/ax25/ax25_out.c
+F:     net/ax25/ax25_timer.c
+F:     net/ax25/sysctl_net_ax25.c
 
 DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
 P:     Tobias Ringstrom
 M:     tori@unhappy.mine.nu
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     Documentation/networking/dmfe.txt
+F:     drivers/net/tulip/dmfe.c
 
 DC390/AM53C974 SCSI driver
 P:     Kurt Garloff
@@ -1374,6 +1629,7 @@ W:        http://www.garloff.de/kurt/linux/dc390/
 P:     Guennadi Liakhovetski
 M:     g.liakhovetski@gmx.de
 S:     Maintained
+F:     drivers/scsi/tmscsim.*
 
 DC395x SCSI driver
 P:     Oliver Neukum
@@ -1386,6 +1642,8 @@ W:        http://twibble.org/dist/dc395x/
 L:     dc395x@twibble.org
 L:     http://lists.twibble.org/mailman/listinfo/dc395x/
 S:     Maintained
+F:     Documentation/scsi/dc395x.txt
+F:     drivers/scsi/dc395x.*
 
 DCCP PROTOCOL
 P:     Arnaldo Carvalho de Melo
@@ -1393,6 +1651,9 @@ M:        acme@ghostprotocols.net
 L:     dccp@vger.kernel.org
 W:     http://linux-net.osdl.org/index.php/DCCP
 S:     Maintained
+F:     include/linux/dccp.h
+F:     include/linux/tfrc.h
+F:     net/dccp/
 
 DECnet NETWORK LAYER
 P:     Christine Caulfield
@@ -1400,27 +1661,35 @@ M:      christine.caulfield@googlemail.com
 W:     http://linux-decnet.sourceforge.net
 L:     linux-decnet-user@lists.sourceforge.net
 S:     Maintained
+F:     Documentation/networking/decnet.txt
+F:     net/decnet/
 
 DEFXX FDDI NETWORK DRIVER
 P:     Maciej W. Rozycki
 M:     macro@linux-mips.org
 S:     Maintained
+F:     drivers/net/defxx.*
 
 DELL LAPTOP DRIVER
 P:     Matthew Garrett
 M:     mjg59@srcf.ucam.org
 S:     Maintained
+F:     drivers/platform/x86/dell-laptop.c
 
 DELL LAPTOP SMM DRIVER
 P:     Massimo Dal Zotto
 M:     dz@debian.org
 W:     http://www.debian.org/~dz/i8k/
 S:     Maintained
+F:     drivers/char/i8k.c
+F:     include/linux/i8k.h
 
 DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas)
 P:     Doug Warzecha
 M:     Douglas_Warzecha@dell.com
 S:     Maintained
+F:     Documentation/dcdbas.txt
+F:     drivers/firmware/dcdbas.*
 
 DELL WMI EXTRAS DRIVER
 P:     Matthew Garrett
@@ -1439,6 +1708,10 @@ P:       Alasdair Kergon
 L:     dm-devel@redhat.com
 W:     http://sources.redhat.com/dm
 S:     Maintained
+F:     Documentation/device-mapper/
+F:     drivers/md/dm*
+F:     include/linux/device-mapper.h
+F:     include/linux/dm-*.h
 
 DIGI INTL. EPCA DRIVER
 P:     Digi International, Inc
@@ -1446,12 +1719,18 @@ M:      Eng.Linux@digi.com
 L:     Eng.Linux@digi.com
 W:     http://www.digi.com
 S:     Orphan
+F:     Documentation/serial/digiepca.txt
+F:     drivers/char/epca*
+F:     drivers/char/digi*
 
 DIRECTORY NOTIFICATION (DNOTIFY)
 P:     Stephen Rothwell
 M:     sfr@canb.auug.org.au
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     Documentation/filesystems/dnotify.txt
+F:     fs/notify/dnotify/
+F:     include/linux/dnotify.h
 
 DISK GEOMETRY AND PARTITION HANDLING
 P:     Andries Brouwer
@@ -1466,6 +1745,9 @@ P:        Jan Kara
 M:     jack@suse.cz
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/quota.txt
+F:     fs/quota/
+F:     include/linux/quota*.h
 
 DISTRIBUTED LOCK MANAGER (DLM)
 P:     Christine Caulfield
@@ -1474,8 +1756,9 @@ P:        David Teigland
 M:     teigland@redhat.com
 L:     cluster-devel@redhat.com
 W:     http://sources.redhat.com/cluster/
-T:     git kernel.org:/pub/scm/linux/kernel/git/teigland/dlm.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git
 S:     Supported
+F:     fs/dlm/
 
 DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
 P:     Maciej Sosnowski
@@ -1484,12 +1767,16 @@ P:      Dan Williams
 M:     dan.j.williams@intel.com
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     drivers/dma/
+F:     include/linux/dma*
 
 DME1737 HARDWARE MONITOR DRIVER
 P:     Juerg Haefliger
 M:     juergh@gmail.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/dme1737
+F:     drivers/hwmon/dme1737.c
 
 DOCBOOK FOR DOCUMENTATION
 P:     Randy Dunlap
@@ -1501,18 +1788,22 @@ P:      Shaohua Li
 M:     shaohua.li@intel.com
 L:     linux-acpi@vger.kernel.org
 S:     Supported
+F:     drivers/acpi/dock.c
 
-DOCUMENTATION (/Documentation directory)
+DOCUMENTATION
 P:     Randy Dunlap
 M:     rdunlap@xenotime.net
 L:     linux-doc@vger.kernel.org
 S:     Maintained
+F:     Documentation/
 
 DOUBLETALK DRIVER
 P:     James R. Van Zandt
 M:     jrv@vanzandt.mv.com
 L:     blinux-list@redhat.com
 S:     Maintained
+F:     drivers/char/dtlk.c
+F:     include/linux/dtlk.h
 
 DPT_I2O SCSI RAID DRIVER
 P:     Adaptec OEM Raid Solutions
@@ -1520,6 +1811,8 @@ M:        aacraid@adaptec.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.adaptec.com/
 S:     Maintained
+F:     drivers/scsi/dpt*
+F:     drivers/scsi/dpt/
 
 DRIVER CORE, KOBJECTS, AND SYSFS
 P:     Greg Kroah-Hartman
@@ -1527,48 +1820,55 @@ M:      gregkh@suse.de
 L:     linux-kernel@vger.kernel.org
 T:     quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 S:     Supported
+F:     Documentation/kobject.txt
+F:     drivers/base/
+F:     fs/sysfs/
+F:     include/linux/kobj*
+F:     lib/kobj*
 
 DRM DRIVERS
 P:     David Airlie
 M:     airlied@linux.ie
 L:     dri-devel@lists.sourceforge.net
-T:     git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
 S:     Maintained
+F:     drivers/gpu/drm/
 
 DSCC4 DRIVER
 P:     Francois Romieu
 M:     romieu@fr.zoreil.com
 L:     netdev@vger.kernel.org
 S:     Maintained
-
-DVB SUBSYSTEM AND DRIVERS
-P:     LinuxTV.org Project
-M:     linux-media@vger.kernel.org
-W:     http://linuxtv.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
-S:     Maintained
+F:     drivers/net/wan/dscc4.c
 
 DZ DECSTATION DZ11 SERIAL DRIVER
 P:     Maciej W. Rozycki
 M:     macro@linux-mips.org
 S:     Maintained
+F:     drivers/serial/dz.*
 
 EATA-DMA SCSI DRIVER
 P:     Michael Neuffer
-L:     linux-eata@i-connect.net, linux-scsi@vger.kernel.org
+M:     mike@i-Connect.Net
+L:     linux-eata@i-connect.net
+L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/eata*
 
 EATA ISA/EISA/PCI SCSI DRIVER
 P:     Dario Ballabio
 M:     ballabio_dario@emc.com
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/eata.c
 
 EATA-PIO SCSI DRIVER
 P:     Michael Neuffer
 M:     mike@i-Connect.Net
-L:     linux-eata@i-connect.net, linux-scsi@vger.kernel.org
+L:     linux-eata@i-connect.net
+L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/eata_pio.*
 
 EBTABLES
 P:     Bart De Schuymer
@@ -1577,13 +1877,19 @@ L:      ebtables-user@lists.sourceforge.net
 L:     ebtables-devel@lists.sourceforge.net
 W:     http://ebtables.sourceforge.net/
 S:     Maintained
+F:     include/linux/netfilter_bridge/ebt_*.h
+F:     net/bridge/netfilter/ebt*.c
 
 ECRYPT FILE SYSTEM
-P:     Tyler Hicks, Dustin Kirkland
-M:     tyhicks@linux.vnet.ibm.com, kirkland@canonical.com
+P:     Tyler Hicks
+M:     tyhicks@linux.vnet.ibm.com
+M:     Dustin Kirkland
+P:     kirkland@canonical.com
 L:     ecryptfs-devel@lists.launchpad.net
 W:     https://launchpad.net/ecryptfs
 S:     Supported
+F:     Documentation/filesystems/ecryptfs.txt
+F:     fs/ecryptfs/
 
 EDAC-CORE
 P:     Doug Thompson
@@ -1591,6 +1897,9 @@ M:        dougthompson@xmission.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Supported
+F:     Documentation/edac.txt
+F:     drivers/edac/edac_*
+F:     include/linux/edac.h
 
 EDAC-E752X
 P:     Mark Gross
@@ -1600,6 +1909,7 @@ M:        dougthompson@xmission.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/e752x_edac.c
 
 EDAC-E7XXX
 P:     Doug Thompson
@@ -1607,6 +1917,7 @@ M:        dougthompson@xmission.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/e7xxx_edac.c
 
 EDAC-I82443BXGX
 P:     Tim Small
@@ -1614,6 +1925,7 @@ M:        tim@buttersideup.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/i82443bxgx_edac.c
 
 EDAC-I3000
 P:     Jason Uhlenkott
@@ -1621,6 +1933,7 @@ M:        juhlenko@akamai.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/i3000_edac.c
 
 EDAC-I5000
 P:     Doug Thompson
@@ -1628,6 +1941,7 @@ M:        dougthompson@xmission.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/i5000_edac.c
 
 EDAC-I5400
 P:     Mauro Carvalho Chehab
@@ -1635,6 +1949,7 @@ M:        mchehab@redhat.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/i5400_edac.c
 
 EDAC-I82975X
 P:     Ranganathan Desikan
@@ -1644,6 +1959,7 @@ M:        arvind@acarlab.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/i82975x_edac.c
 
 EDAC-PASEMI
 P:     Egor Martovetsky
@@ -1651,6 +1967,7 @@ M:        egor@pasemi.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/pasemi_edac.c
 
 EDAC-R82600
 P:     Tim Small
@@ -1658,6 +1975,7 @@ M:        tim@buttersideup.com
 L:     bluesmoke-devel@lists.sourceforge.net
 W:     bluesmoke.sourceforge.net
 S:     Maintained
+F:     drivers/edac/r82600_edac.c
 
 EEEPC LAPTOP EXTRAS DRIVER
 P:     Corentin Chary
@@ -1665,10 +1983,12 @@ M:      corentincj@iksaif.net
 L:     acpi4asus-user@lists.sourceforge.net
 W:     http://sourceforge.net/projects/acpi4asus
 S:     Maintained
+F:     drivers/platform/x86/eeepc-laptop.c
 
 EFS FILESYSTEM
 W:     http://aeschi.ch.eu.org/efs/
 S:     Orphan
+F:     fs/efs/
 
 EHCA (IBM GX bus InfiniBand adapter) DRIVER
 P:     Hoang-Nam Nguyen
@@ -1677,6 +1997,7 @@ P:        Christoph Raisch
 M:     raisch@de.ibm.com
 L:     general@lists.openfabrics.org
 S:     Supported
+F:     drivers/infiniband/hw/ehca/
 
 EMBEDDED LINUX
 P:     Paul Gortmaker
@@ -1692,22 +2013,29 @@ M:      james.smart@emulex.com
 L:     linux-scsi@vger.kernel.org
 W:     http://sourceforge.net/projects/lpfcxxxx
 S:     Supported
+F:     drivers/scsi/lpfc/
 
 EPSON 1355 FRAMEBUFFER DRIVER
 P:     Christopher Hoover
-M:     ch@murgatroid.com, ch@hpl.hp.com
+M:     ch@murgatroid.com
+P:     Christopher Hoover
+M:     ch@hpl.hp.com
 S:     Maintained
+F:     drivers/video/epson1355fb.c
 
 EPSON S1D13XXX FRAMEBUFFER DRIVER
 P:     Kristoffer Ericson
 M:     kristoffer.ericson@gmail.com
 S:     Maintained
+F:     drivers/video/s1d13xxxfb.c
+F:     include/video/s1d13xxxfb.h
 
 ETHEREXPRESS-16 NETWORK DRIVER
 P:     Philip Blundell
 M:     philb@gnu.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/eexpress.*
 
 ETHERNET BRIDGE
 P:     Stephen Hemminger
@@ -1715,87 +2043,126 @@ M:     shemminger@linux-foundation.org
 L:     bridge@lists.linux-foundation.org
 W:     http://www.linux-foundation.org/en/Net:Bridge
 S:     Maintained
+F:     include/linux/netfilter_bridge/
+F:     net/bridge/
 
 ETHERTEAM 16I DRIVER
 P:     Mika Kuoppala
 M:     miku@iki.fi
 S:     Maintained
+F:     drivers/net/eth16i.c
 
 EXT2 FILE SYSTEM
 L:     linux-ext4@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/ext2.txt
+F:     fs/ext2/
+F:     include/linux/ext2*
 
 EXT3 FILE SYSTEM
-P:     Stephen Tweedie, Andrew Morton
-M:     sct@redhat.com, akpm@linux-foundation.org, adilger@sun.com
+P:     Stephen Tweedie
+M:     sct@redhat.com
+P:     Andrew Morton
+M:     akpm@linux-foundation.org
+P:     Andreas Dilger
+M:     adilger@sun.com
 L:     linux-ext4@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/ext3.txt
+F:     fs/ext3/
+F:     include/linux/ext3*
 
 EXT4 FILE SYSTEM
 P:     Theodore Ts'o
-M:     tytso@mit.edu, adilger@sun.com
+M:     tytso@mit.edu
+P:     Andreas Dilger
+M:     adilger@sun.com
 L:     linux-ext4@vger.kernel.org
 W:     http://ext4.wiki.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/ext4.txt
+F:     fs/ext4/
 
 F71805F HARDWARE MONITORING DRIVER
 P:     Jean Delvare
 M:     khali@linux-fr.org
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/f71805f
+F:     drivers/hwmon/f71805f.c
 
 FARSYNC SYNCHRONOUS DRIVER
 P:     Kevin Curtis
 M:     kevin.curtis@farsite.co.uk
 W:     http://www.farsite.co.uk/
 S:     Supported
+F:     drivers/net/wan/farsync.*
 
 FAULT INJECTION SUPPORT
 P:     Akinobu Mita
 M:     akinobu.mita@gmail.com
 S:     Supported
+F:     Documentation/fault-injection/
+F:     lib/fault-inject.c
 
 FILE LOCKING (flock() and fcntl()/lockf())
 P:     Matthew Wilcox
 M:     matthew@wil.cx
 L:     linux-fsdevel@vger.kernel.org
 S:     Maintained
+F:     include/linux/fcntl.h
+F:     include/linux/fs.h
+F:     fs/fcntl.c
+F:     fs/locks.c
 
 FILESYSTEMS (VFS and infrastructure)
 P:     Alexander Viro
 M:     viro@zeniv.linux.org.uk
 L:     linux-fsdevel@vger.kernel.org
 S:     Maintained
+F:     fs/*
 
 FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
 P:     Riku Voipio
 M:     riku.vipio@iki.fi
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     drivers/hwmon/f75375s.c
+F:     include/linux/f75375s.h
 
-FIREWIRE SUBSYSTEM (drivers/firewire, <linux/firewire*.h>)
-P:     Kristian Hoegsberg, Stefan Richter
-M:     krh@redhat.com, stefanr@s5r6.in-berlin.de
+FIREWIRE SUBSYSTEM
+P:     Kristian Hoegsberg
+M:     krh@redhat.com
+P:     Stefan Richter
+M:     stefanr@s5r6.in-berlin.de
 L:     linux1394-devel@lists.sourceforge.net
 W:     http://www.linux1394.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
 S:     Maintained
+F:     drivers/firewire/
+F:     include/linux/firewire*.h
 
 FIRMWARE LOADER (request_firmware)
 L:     linux-kernel@vger.kernel.org
 S:     Orphan
+F:     Documentation/firmware_class/
+F:     drivers/base/firmware*.c
+F:     include/linux/firmware.h
 
 FPU EMULATOR
 P:     Bill Metzenthen
-M:     billm@suburbia.net
-W:     http://suburbia.net/~billm/floating-point/emulator/
+M:     billm@melbpc.org.au
+W:     http://floatingpoint.sourceforge.net/emulator/index.html
 S:     Maintained
+F:     arch/x86/math-emu/
 
 FRAME RELAY DLCI/FRAD (Sangoma drivers too)
 P:     Mike McLagan
 M:     mike.mclagan@linux.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/wan/dlci.c
+F:     drivers/net/wan/sdla.c
 
 FRAMEBUFFER LAYER
 P:     Antonino Daplas
@@ -1803,6 +2170,9 @@ M:        adaplas@gmail.com
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 W:     http://linux-fbdev.sourceforge.net/
 S:     Maintained
+F:     Documentation/fb/
+F:     drivers/video/fb*
+F:     include/linux/fb.h
 
 FREESCALE DMA DRIVER
 P:     Li Yang
@@ -1812,6 +2182,7 @@ M:        zw@zh-kernel.org
 L:     linuxppc-embedded@ozlabs.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/dma/fsldma.*
 
 FREESCALE I2C CPM DRIVER
 P:     Jochen Friedrich
@@ -1819,6 +2190,7 @@ M:        jochen@scram.de
 L:     linuxppc-dev@ozlabs.org
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     drivers/i2c/busses/i2c-cpm.c
 
 FREESCALE IMX / MXC FRAMEBUFFER DRIVER
 P:     Sascha Hauer
@@ -1826,6 +2198,8 @@ M:        kernel@pengutronix.de
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 S:     Maintained
+F:     arch/arm/plat-mxc/include/mach/imxfb.h
+F:     drivers/video/imxfb.c
 
 FREESCALE SOC FS_ENET DRIVER
 P:     Pantelis Antoniou
@@ -1835,12 +2209,16 @@ M:      vbordug@ru.mvista.com
 L:     linuxppc-dev@ozlabs.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/fs_enet/
+F:     include/linux/fs_enet_pd.h
 
 FREESCALE QUICC ENGINE LIBRARY
 P:     Timur Tabi
 M:     timur@freescale.com
 L:     linuxppc-dev@ozlabs.org
 S:     Supported
+F:     arch/powerpc/sysdev/qe_lib/
+F:     arch/powerpc/include/asm/*qe.h
 
 FREESCALE HIGHSPEED USB DEVICE DRIVER
 P:     Li Yang
@@ -1848,6 +2226,7 @@ M:        leoli@freescale.com
 L:     linux-usb@vger.kernel.org
 L:     linuxppc-dev@ozlabs.org
 S:     Maintained
+F:     drivers/usb/gadget/fsl_usb2_udc.c
 
 FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
 P:     Li Yang
@@ -1855,12 +2234,14 @@ M:      leoli@freescale.com
 L:     netdev@vger.kernel.org
 L:     linuxppc-dev@ozlabs.org
 S:     Maintained
+F:     drivers/net/ucc_geth*
 
 FREESCALE QUICC ENGINE UCC UART DRIVER
 P:     Timur Tabi
 M:     timur@freescale.com
 L:     linuxppc-dev@ozlabs.org
 S:     Supported
+F:     drivers/serial/ucc_uart.c
 
 FREESCALE SOC SOUND DRIVERS
 P:     Timur Tabi
@@ -1868,12 +2249,15 @@ M:      timur@freescale.com
 L:     alsa-devel@alsa-project.org
 L:     linuxppc-dev@ozlabs.org
 S:     Supported
+F:     sound/soc/fsl/fsl*
+F:     sound/soc/fsl/mpc8610_hpcd.c
 
 FREEVXFS FILESYSTEM
 P:     Christoph Hellwig
 M:     hch@infradead.org
 W:     ftp://ftp.openlinux.org/pub/people/hch/vxfs
 S:     Maintained
+F:     fs/freevxfs/
 
 FREEZER
 P:     Pavel Machek
@@ -1882,22 +2266,32 @@ P:      Rafael J. Wysocki
 M:     rjw@sisk.pl
 L:     linux-pm@lists.linux-foundation.org
 S:     Supported
+F:     Documentation/power/freezing-of-tasks.txt
+F:     include/linux/freezer.h
+F:     kernel/freezer.c
 
 FTRACE
 P:     Steven Rostedt
 M:     rostedt@goodmis.org
 S:     Maintained
+F:     Documentation/ftrace.txt
+F:     arch/*/*/*/ftrace.h
+F:     arch/*/kernel/ftrace.c
+F:     include/*/ftrace.h
+F:     kernel/trace/
 
 FUJITSU FR-V (FRV) PORT
 P:     David Howells
 M:     dhowells@redhat.com
 S:     Maintained
+F:     arch/frv/
 
 FUJITSU LAPTOP EXTRAS
 P:     Jonathan Woithe
 M:     jwoithe@physics.adelaide.edu.au
 L:     linux-acpi@vger.kernel.org
 S:     Maintained
+F:     drivers/platform/x86/fujitsu-laptop.c
 
 FUSE: FILESYSTEM IN USERSPACE
 P:     Miklos Szeredi
@@ -1905,12 +2299,15 @@ M:      miklos@szeredi.hu
 L:     fuse-devel@lists.sourceforge.net
 W:     http://fuse.sourceforge.net/
 S:     Maintained
+F:     fs/fuse/
+F:     include/linux/fuse.h
 
 FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
 P:     Rik Faith
 M:     faith@cs.unc.edu
 L:     linux-scsi@vger.kernel.org
 S:     Odd Fixes (e.g., new signatures)
+F:     drivers/scsi/fdomain.*
 
 GDT SCSI DISK ARRAY CONTROLLER DRIVER
 P:     Achim Leubner
@@ -1918,26 +2315,39 @@ M:      achim_leubner@adaptec.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.icp-vortex.com/
 S:     Supported
+F:     drivers/scsi/gdt*
 
 GENERIC GPIO I2C DRIVER
 P:     Haavard Skinnemoen
 M:     hskinnemoen@atmel.com
 S:     Supported
+F:     drivers/i2c/busses/i2c-gpio.c
+F:     include/linux/i2c-gpio.h
 
 GENERIC HDLC (WAN) DRIVERS
 P:     Krzysztof Halasa
 M:     khc@pm.waw.pl
 W:     http://www.kernel.org/pub/linux/utils/net/hdlc/
 S:     Maintained
+F:     drivers/net/wan/c101.c
+F:     drivers/net/wan/hd6457*
+F:     drivers/net/wan/hdlc*
+F:     drivers/net/wan/n2.c
+F:     drivers/net/wan/pc300too.c
+F:     drivers/net/wan/pci200syn.c
+F:     drivers/net/wan/wanxl*
 
 GFS2 FILE SYSTEM
 P:     Steven Whitehouse
 M:     swhiteho@redhat.com
 L:     cluster-devel@redhat.com
 W:     http://sources.redhat.com/cluster/
-T:     git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
-T:     git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
 S:     Supported
+F:     Documentation/filesystems/gfs2*.txt
+F:     fs/gfs2/
+F:     include/linux/gfs2_ondisk.h
 
 GIGASET ISDN DRIVERS
 P:     Hansjoerg Lipp
@@ -1947,6 +2357,9 @@ M:        tilman@imap.cc
 L:     gigaset307x-common@lists.sourceforge.net
 W:     http://gigaset307x.sourceforge.net/
 S:     Maintained
+F:     Documentation/isdn/README.gigaset
+F:     drivers/isdn/gigaset/
+F:     include/linux/gigaset_dev.h
 
 HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
 P:     Frank Seidel
@@ -1954,6 +2367,7 @@ M:        frank@f-seidel.de
 L:     lm-sensors@lm-sensors.org
 W:     http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
 S:     Maintained
+F:     drivers/hwmon/hdaps.c
 
 HYPERVISOR VIRTUAL CONSOLE DRIVER
 L:     linuxppc-dev@ozlabs.org
@@ -1965,51 +2379,61 @@ GSPCA FINEPIX SUBDRIVER
 P:     Frank Zago
 M:     frank@zago.net
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     drivers/media/video/gspca/finepix.c
 
 GSPCA M5602 SUBDRIVER
 P:     Erik Andren
 M:     erik.andren@gmail.com
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     drivers/media/video/gspca/m5602/
 
 GSPCA PAC207 SONIXB SUBDRIVER
 P:     Hans de Goede
 M:     hdegoede@redhat.com
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     drivers/media/video/gspca/pac207.c
 
 GSPCA T613 SUBDRIVER
 P:     Leandro Costantino
 M:     lcostantino@gmail.com
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     drivers/media/video/gspca/t613.c
 
 GSPCA USB WEBCAM DRIVER
 P:     Jean-Francois Moine
 M:     moinejf@free.fr
 W:     http://moinejf.free.fr
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     drivers/media/video/gspca/
 
 HARDWARE MONITORING
 L:     lm-sensors@lm-sensors.org
 W:     http://www.lm-sensors.org/
 S:     Orphan
+F:     drivers/hwmon/
 
 HARDWARE RANDOM NUMBER GENERATOR CORE
 S:     Orphan
+F:     Documentation/hw_random.txt
+F:     drivers/char/hw_random/
+F:     include/linux/hw_random.h
 
 HARMONY SOUND DRIVER
 P:     Kyle McMartin
 M:     kyle@mcmartin.ca
 L:     linux-parisc@vger.kernel.org
 S:     Maintained
+F:     sound/parisc/harmony.*
 
 HAYES ESP SERIAL DRIVER
 P:     Andrew J. Robinson
@@ -2017,30 +2441,33 @@ M:      arobinso@nyx.net
 L:     linux-kernel@vger.kernel.org
 W:     http://www.nyx.net/~arobinso
 S:     Maintained
-
-HEWLETT-PACKARD FIBRE CHANNEL 64-bit/66MHz PCI non-intelligent HBA
-P:     Chirag Kantharia
-M:     chirag.kantharia@hp.com
-L:     iss_storagedev@hp.com
-S:     Maintained
+F:     Documentation/serial/hayes-esp.txt
+F:     drivers/char/esp.c
 
 HEWLETT-PACKARD SMART2 RAID DRIVER
 P:     Chirag Kantharia
 M:     chirag.kantharia@hp.com
 L:     iss_storagedev@hp.com
 S:     Maintained
+F:     Documentation/blockdev/cpqarray.txt
+F:     drivers/block/cpqarray.*
 
 HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss)
 P:     Mike Miller
 M:     mike.miller@hp.com
 L:     iss_storagedev@hp.com
 S:     Supported
+F:     Documentation/blockdev/cciss.txt
+F:     drivers/block/cciss*
+F:     include/linux/cciss_ioctl.h
 
 HFS FILESYSTEM
 P:     Roman Zippel
 M:     zippel@linux-m68k.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/hfs.txt
+F:     fs/hfs/
 
 HGA FRAMEBUFFER DRIVER
 P:     Ferenc Bakonyi
@@ -2048,6 +2475,7 @@ M:        fero@drama.obuda.kando.hu
 L:     linux-nvidia@lists.surfsouth.com
 W:     http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml
 S:     Maintained
+F:     drivers/video/hgafb.c
 
 HIBERNATION (aka Software Suspend, aka swsusp)
 P:     Pavel Machek
@@ -2056,19 +2484,32 @@ P:      Rafael J. Wysocki
 M:     rjw@sisk.pl
 L:     linux-pm@lists.linux-foundation.org
 S:     Supported
+F:     arch/x86/power/
+F:     drivers/base/power/
+F:     kernel/power/
+F:     include/linux/suspend.h
+F:     include/linux/freezer.h
+F:     include/linux/pm.h
+F:     include/asm-*/suspend*.h
+F:     arch/*/include/asm/suspend*.h
 
 HID CORE LAYER
 P:     Jiri Kosina
 M:     jkosina@suse.cz
 L:     linux-input@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
 S:     Maintained
+F:     drivers/hid/
+F:     include/linux/hid*
 
 HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
 P:     Thomas Gleixner
 M:     tglx@linutronix.de
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/timers/
+F:     kernel/hrtimer.c
+F:     include/linux/hrtimer.h
 
 HIGH-SPEED SCC DRIVER FOR AX.25
 P:     Klaus Kudielka
@@ -2076,18 +2517,25 @@ M:      klaus.kudielka@ieee.org
 L:     linux-hams@vger.kernel.org
 W:     http://www.nt.tuwien.ac.at/~kkudielk/Linux/
 S:     Maintained
+F:     drivers/net/hamradio/dmascc.c
+F:     drivers/net/hamradio/scc.c
 
 HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
 P:     HighPoint Linux Team
 M:     linux@highpoint-tech.com
 W:     http://www.highpoint-tech.com
 S:     Supported
+F:     Documentation/scsi/hptiop.txt
+F:     drivers/scsi/hptiop.c
 
 HIPPI
 P:     Jes Sorensen
 M:     jes@trained-monkey.org
 L:     linux-hippi@sunsite.dk
 S:     Maintained
+F:     include/linux/hippidevice.h
+F:     include/linux/if_hippi.h
+F:     net/802/hippi.c
 
 HOST AP DRIVER
 P:     Jouni Malinen
@@ -2096,65 +2544,79 @@ L:      hostap@shmoo.com (subscribers-only)
 L:     linux-wireless@vger.kernel.org
 W:     http://hostap.epitest.fi/
 S:     Maintained
+F:     drivers/net/wireless/hostap/
 
 HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
 P:     Carlos Corbacho
 M:     carlos@strangeworlds.co.uk
 S:     Odd Fixes
+F:     drivers/platform/x86/tc1100-wmi.c
 
 HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
 P:     Jaroslav Kysela
 M:     perex@perex.cz
 S:     Maintained
+F:     drivers/net/hp100.*
 
-HPET:  High Precision Event Timers driver (drivers/char/hpet.c)
+HPET:  High Precision Event Timers driver
 P:     Clemens Ladisch
 M:     clemens@ladisch.de
 S:     Maintained
+F:     Documentation/timers/hpet.txt
+F:     drivers/char/hpet.c
+F:     include/linux/hpet.h
 
 HPET:  i386
 P:     Venkatesh Pallipadi (Venki)
 M:     venkatesh.pallipadi@intel.com
 S:     Maintained
+F:     arch/x86/kernel/hpet.c
+F:     arch/x86/include/asm/hpet.h
 
 HPET:  x86_64
 P:     Vojtech Pavlik
 M:     vojtech@suse.cz
 S:     Maintained
 
-HPET:  ACPI hpet.c
+HPET:  ACPI
 P:     Bob Picco
 M:     bob.picco@hp.com
 S:     Maintained
+F:     drivers/char/hpet.c
 
 HPFS FILESYSTEM
 P:     Mikulas Patocka
 M:     mikulas@artax.karlin.mff.cuni.cz
 W:     http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
 S:     Maintained
+F:     fs/hpfs/
 
-HSO    3G Modem Driver (hso.c)
+HSO 3G MODEM DRIVER
 P:     Denis Joseph Barrow
 M:     d.barow@option.com
 W:     http://www.pharscape.org
 S:     Maintained
+F:     drivers/net/usb/hso.c
 
 HTCPEN TOUCHSCREEN DRIVER
 P:     Pau Oliva Fora
 M:     pof@eslack.org
 L:     linux-input@vger.kernel.org
 S:     Maintained
+F:     drivers/input/touchscreen/htcpen.c
 
 HUGETLB FILESYSTEM
 P:     William Irwin
 M:     wli@holomorphy.com
 S:     Maintained
+F:     fs/hugetlbfs/
 
 I2C/SMBUS STUB DRIVER
 P:     Mark M. Hoffman
 M:     mhoffman@lightlink.com
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     drivers/i2c/busses/i2c-stub.c
 
 I2C SUBSYSTEM
 P:     Jean Delvare (PC drivers, core)
@@ -2165,24 +2627,31 @@ L:      linux-i2c@vger.kernel.org
 W:     http://i2c.wiki.kernel.org/
 T:     quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
 S:     Maintained
+F:     Documentation/i2c/
+F:     drivers/i2c/
+F:     include/linux/i2c.h
+F:     include/linux/i2c-dev.h
+F:     include/linux/i2c-id.h
 
 I2C-TINY-USB DRIVER
 P:     Till Harbaum
 M:     till@harbaum.org
 L:     linux-i2c@vger.kernel.org
-T:     http://www.harbaum.org/till/i2c_tiny_usb
+W:     http://www.harbaum.org/till/i2c_tiny_usb
 S:     Maintained
+F:     drivers/i2c/busses/i2c-tiny-usb.c
 
 i386 BOOT CODE
 P:     H. Peter Anvin
 M:     hpa@zytor.com
 L:     Linux-Kernel@vger.kernel.org
 S:     Maintained
+F:     arch/x86/boot/
 
 i386 SETUP CODE / CPU ERRATA WORKAROUNDS
 P:     H. Peter Anvin
 M:     hpa@zytor.com
-T:     git.kernel.org:/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git
 S:     Maintained
 
 IA64 (Itanium) PLATFORM
@@ -2190,19 +2659,22 @@ P:      Tony Luck
 M:     tony.luck@intel.com
 L:     linux-ia64@vger.kernel.org
 W:     http://www.ia64-linux.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
 S:     Maintained
+F:     arch/ia64/
 
 IBM MCA SCSI SUBSYSTEM DRIVER
 P:     Michael Lang
 M:     langa2@kph.uni-mainz.de
 W:     http://www.uni-mainz.de/~langm000/linux.html
 S:     Maintained
+F:     drivers/scsi/ibmmca.c
 
 IBM Power Linux RAID adapter
 P:     Brian King
 M:     brking@us.ibm.com
 S:     Supported
+F:     drivers/scsi/ipr.*
 
 IBM ServeRAID RAID DRIVER
 P:     Jack Hammer
@@ -2210,6 +2682,7 @@ P:        Dave Jeffery
 M:     ipslinux@adaptec.com
 W:     http://www.developer.ibm.com/welcome/netfinity/serveraid.html
 S:     Supported
+F:     drivers/scsi/ips.*
 
 IDE SUBSYSTEM
 P:     Bartlomiej Zolnierkiewicz
@@ -2217,45 +2690,55 @@ M:      bzolnier@gmail.com
 L:     linux-ide@vger.kernel.org
 T:     quilt kernel.org/pub/linux/kernel/people/bart/pata-2.6/
 S:     Maintained
+F:     Documentation/ide/
+F:     drivers/ide/
+F:     include/linux/ide.h
 
 IDE/ATAPI DRIVERS
 P:     Borislav Petkov
 M:     petkovbb@gmail.com
 L:     linux-ide@vger.kernel.org
 S:     Maintained
+F:     Documentation/cdrom/ide-cd
+F:     drivers/ide/ide-cd*
 
 IDLE-I7300
 P:     Andy Henroid
 M:     andrew.d.henroid@intel.com
 L:     linux-pm@lists.linux-foundation.org
 S:     Supported
+F:     drivers/idle/i7300_idle.c
 
-IEEE 1394 SUBSYSTEM (drivers/ieee1394)
+IEEE 1394 SUBSYSTEM
 P:     Ben Collins
 M:     ben.collins@ubuntu.com
 P:     Stefan Richter
 M:     stefanr@s5r6.in-berlin.de
 L:     linux1394-devel@lists.sourceforge.net
 W:     http://www.linux1394.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
 S:     Maintained
+F:     drivers/ieee1394/
 
-IEEE 1394 RAW I/O DRIVER (raw1394)
+IEEE 1394 RAW I/O DRIVER
 P:     Dan Dennedy
 M:     dan@dennedy.org
 P:     Stefan Richter
 M:     stefanr@s5r6.in-berlin.de
 L:     linux1394-devel@lists.sourceforge.net
 S:     Maintained
+F:     drivers/ieee1394/raw1394*
 
 INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
 P:     Mimi Zohar
 M:     zohar@us.ibm.com
 S:     Supported
+F:     security/integrity/ima/
 
 IMS TWINTURBO FRAMEBUFFER DRIVER
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Orphan
+F:     drivers/video/imsttfb.c
 
 INFINIBAND SUBSYSTEM
 P:     Roland Dreier
@@ -2266,8 +2749,11 @@ P:       Hal Rosenstock
 M:     hal.rosenstock@gmail.com
 L:     general@lists.openfabrics.org (moderated for non-subscribers)
 W:     http://www.openib.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
 S:     Supported
+F:     Documentation/infiniband/
+F:     drivers/infiniband/
+F:     include/linux/if_infiniband.h
 
 INOTIFY
 P:     John McCutchan
@@ -2276,26 +2762,33 @@ P:      Robert Love
 M:     rlove@rlove.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/inotify.txt
+F:     fs/notify/inotify/
+F:     include/linux/inotify.h
 
 INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
 P:     Dmitry Torokhov
 M:     dmitry.torokhov@gmail.com
 M:     dtor@mail.ru
 L:     linux-input@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/dtor/input.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
 S:     Maintained
+F:     drivers/input/
 
 INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
 P:     Sylvain Meyer
 M:     sylvain.meyer@worldonline.fr
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     Documentation/fb/intelfb.txt
+F:     drivers/video/intelfb/
 
 INTEL 810/815 FRAMEBUFFER DRIVER
 P:     Antonino Daplas
 M:     adaplas@gmail.com
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/i810/
 
 INTEL MENLOW THERMAL DRIVER
 P:     Sujith Thomas
@@ -2303,46 +2796,61 @@ M:      sujith.thomas@intel.com
 L:     linux-acpi@vger.kernel.org
 W:     http://www.lesswatts.org/projects/acpi/
 S:     Supported
+F:     drivers/platform/x86/intel_menlow.c
 
 INTEL IA32 MICROCODE UPDATE SUPPORT
 P:     Tigran Aivazian
 M:     tigran@aivazian.fsnet.co.uk
 S:     Maintained
+F:     arch/x86/kernel/microcode_core.c
+F:     arch/x86/kernel/microcode_intel.c
 
 INTEL I/OAT DMA DRIVER
 P:     Maciej Sosnowski
 M:     maciej.sosnowski@intel.com
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     drivers/dma/ioat*
 
 INTEL IOMMU (VT-d)
 P:     David Woodhouse
 M:     dwmw2@infradead.org
 L:     iommu@lists.linux-foundation.org
-T:     git://git.infradead.org/iommu-2.6.git
+T:     git git://git.infradead.org/iommu-2.6.git
 S:     Supported
+F:     drivers/pci/intel-iommu.c
+F:     include/linux/intel-iommu.h
 
 INTEL IOP-ADMA DMA DRIVER
 P:     Dan Williams
 M:     dan.j.williams@intel.com
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     drivers/dma/iop-adma.c
 
 INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
 P:     Krzysztof Halasa
 M:     khc@pm.waw.pl
 S:     Maintained
+F:     arch/arm/mach-ixp4xx/include/mach/qmgr.h
+F:     arch/arm/mach-ixp4xx/include/mach/npe.h
+F:     arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
+F:     arch/arm/mach-ixp4xx/ixp4xx_npe.c
+F:     drivers/net/arm/ixp4xx_eth.c
+F:     drivers/net/wan/ixp4xx_hss.c
 
 INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
 P:     Deepak Saxena
 M:     dsaxena@plexity.net
 S:     Maintained
+F:     drivers/char/hw_random/ixp4xx-rng.c
 
 INTEL IXP2000 ETHERNET DRIVER
 P:     Lennert Buytenhek
 M:     kernel@wantstofly.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/ixp2000/
 
 INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
 P:     Jeff Kirsher
@@ -2358,6 +2866,12 @@ M:       john.ronciak@intel.com
 L:     e1000-devel@lists.sourceforge.net
 W:     http://e1000.sourceforge.net/
 S:     Supported
+F:     drivers/net/e100.c
+F:     drivers/net/e1000/
+F:     drivers/net/e1000e/
+F:     drivers/net/igb/
+F:     drivers/net/ixgb/
+F:     drivers/net/ixgbe/
 
 INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
 P:     Zhu Yi
@@ -2371,6 +2885,8 @@ L:        ipw2100-devel@lists.sourceforge.net
 W:     http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
 W:     http://ipw2100.sourceforge.net
 S:     Supported
+F:     Documentation/networking/README.ipw2100
+F:     drivers/net/wireless/ipw2x00/ipw2100.*
 
 INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
 P:     Zhu Yi
@@ -2384,6 +2900,8 @@ L:        ipw2100-devel@lists.sourceforge.net
 W:     http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
 W:     http://ipw2200.sourceforge.net
 S:     Supported
+F:     Documentation/networking/README.ipw2200
+F:     drivers/net/wireless/ipw2x00/ipw2200.*
 
 INTEL WIRELESS WIMAX CONNECTION 2400
 P:     Inaky Perez-Gonzalez
@@ -2392,6 +2910,9 @@ M:        linux-wimax@intel.com
 L:     wimax@linuxwimax.org
 S:     Supported
 W:     http://linuxwimax.org
+F:     Documentation/wimax/README.i2400m
+F:     drivers/net/wimax/i2400m/
+F:     include/linux/wimax/i2400m.h
 
 INTEL WIRELESS WIFI LINK (iwlwifi)
 P:     Zhu Yi
@@ -2401,25 +2922,29 @@ M:      reinette.chatre@intel.com
 L:     linux-wireless@vger.kernel.org
 L:     ipw3945-devel@lists.sourceforge.net
 W:     http://intellinuxwireless.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
 S:     Supported
+F:     drivers/net/wireless/iwlwifi/
 
 IOC3 ETHERNET DRIVER
 P:     Ralf Baechle
 M:     ralf@linux-mips.org
 L:     linux-mips@linux-mips.org
 S:     Maintained
+F:     drivers/net/ioc3-eth.c
 
 IOC3 SERIAL DRIVER
 P:     Pat Gefre
 M:     pfg@sgi.com
 L:     linux-mips@linux-mips.org
 S:     Maintained
+F:     drivers/serial/ioc3_serial.c
 
 IP MASQUERADING
 P:     Juanjo Ciarlante
 M:     jjciarla@raiz.uncu.edu.ar
 S:     Maintained
+F:     net/ipv4/netfilter/ipt_MASQUERADE.c
 
 IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER
 P:     Francois Romieu
@@ -2430,6 +2955,7 @@ P:        Jesse Huang
 M:     jesse@icplus.com.tw
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/ipg.c
 
 IPATH DRIVER
 P:     Ralph Campbell
@@ -2437,6 +2963,7 @@ M:        infinipath@qlogic.com
 L:     general@lists.openfabrics.org
 T:     git git://git.qlogic.com/ipath-linux-2.6
 S:     Supported
+F:     drivers/infiniband/hw/ipath/
 
 IPMI SUBSYSTEM
 P:     Corey Minyard
@@ -2444,6 +2971,9 @@ M:        minyard@acm.org
 L:     openipmi-developer@lists.sourceforge.net
 W:     http://openipmi.sourceforge.net/
 S:     Supported
+F:     Documentation/IPMI.txt
+F:     drivers/char/ipmi/
+F:     include/linux/ipmi*
 
 IPS SCSI RAID DRIVER
 P:     Adaptec OEM Raid Solutions
@@ -2451,6 +2981,7 @@ M:        aacraid@adaptec.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.adaptec.com/
 S:     Maintained
+F:     drivers/scsi/ips*
 
 IPVS
 P:     Wensong Zhang
@@ -2462,6 +2993,8 @@ M:        ja@ssi.bg
 L:     netdev@vger.kernel.org
 L:     lvs-devel@vger.kernel.org
 S:     Maintained
+F:     Documentation/networking/ipvs-sysctl.txt
+F:     net/netfilter/ipvs/
 
 IPWIRELESS DRIVER
 P:     Jiri Kosina
@@ -2469,13 +3002,17 @@ M:      jkosina@suse.cz
 P:     David Sterba
 M:     dsterba@suse.cz
 S:     Maintained
-T:     git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
+F:     drivers/char/pcmcia/ipwireless/
 
 IPX NETWORK LAYER
 P:     Arnaldo Carvalho de Melo
 M:     acme@ghostprotocols.net
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     include/linux/ipx.h
+F:     include/net/ipx.h
+F:     net/ipx/
 
 IRDA SUBSYSTEM
 P:     Samuel Ortiz
@@ -2483,27 +3020,40 @@ M:      samuel@sortiz.org
 L:     irda-users@lists.sourceforge.net (subscribers-only)
 W:     http://irda.sourceforge.net/
 S:     Maintained
+F:     Documentation/networking/irda.txt
+F:     drivers/net/irda/
+F:     include/net/irda/
+F:     net/irda/
 
 ISAPNP
 P:     Jaroslav Kysela
 M:     perex@perex.cz
 S:     Maintained
+F:     Documentation/isapnp.txt
+F:     drivers/pnp/isapnp/
+F:     include/linux/isapnp.h
 
 ISCSI
 P:     Mike Christie
 M:     michaelc@cs.wisc.edu
 L:     open-iscsi@googlegroups.com
 W:     www.open-iscsi.org
-T:     git kernel.org:/pub/scm/linux/kernel/mnc/linux-2.6-iscsi.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mnc/linux-2.6-iscsi.git
 S:     Maintained
+F:     drivers/scsi/*iscsi*
+F:     include/scsi/*iscsi*
 
 ISDN SUBSYSTEM
 P:     Karsten Keil
 M:     isdn@linux-pingi.de
 L:     isdn4linux@listserv.isdn4linux.de (subscribers-only)
 W:     http://www.isdn4linux.de
-T:     git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/isdn-2.6.git
 S:     Maintained
+F:     Documentation/isdn/
+F:     drivers/isdn/
+F:     include/linux/isdn.h
+F:     include/linux/isdn/
 
 ISDN SUBSYSTEM (Eicon active card driver)
 P:     Armin Schindler
@@ -2511,6 +3061,7 @@ M:        mac@melware.de
 L:     isdn4linux@listserv.isdn4linux.de (subscribers-only)
 W:     http://www.melware.de
 S:     Maintained
+F:     drivers/isdn/hardware/eicon/
 
 IVTV VIDEO4LINUX DRIVER
 P:     Hans Verkuil
@@ -2518,23 +3069,29 @@ M:      hverkuil@xs4all.nl
 L:     ivtv-devel@ivtvdriver.org
 L:     ivtv-users@ivtvdriver.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://www.ivtvdriver.org
 S:     Maintained
+F:     Documentation/video4linux/*.ivtv
+F:     drivers/media/video/ivtv/
+F:     include/linux/ivtv*
 
 JFS FILESYSTEM
 P:     Dave Kleikamp
 M:     shaggy@austin.ibm.com
 L:     jfs-discussion@lists.sourceforge.net
 W:     http://jfs.sourceforge.net/
-T:     git kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git
 S:     Supported
+F:     Documentation/filesystems/jfs.txt
+F:     fs/jfs/
 
 JME NETWORK DRIVER
 P:     Guo-Fu Tseng
 M:     cooldavid@cooldavid.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/jme.*
 
 JOURNALLING FLASH FILE SYSTEM V2 (JFFS2)
 P:     David Woodhouse
@@ -2542,24 +3099,36 @@ M:      dwmw2@infradead.org
 L:     linux-mtd@lists.infradead.org
 W:     http://www.linux-mtd.infradead.org/doc/jffs2.html
 S:     Maintained
+F:     fs/jffs2/
+F:     include/linux/jffs2.h
+F:     include/mtd/jffs2-user.h
 
 JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
-P:     Stephen Tweedie, Andrew Morton
-M:     sct@redhat.com, akpm@linux-foundation.org
+P:     Stephen Tweedie
+M:     sct@redhat.com
+P:     Andrew Morton
+M:     akpm@linux-foundation.org
 L:     linux-ext4@vger.kernel.org
 S:     Maintained
+F:     fs/jbd*/
+F:     include/linux/ext*jbd*.h
+F:     include/linux/jbd*.h
 
 K8TEMP HARDWARE MONITORING DRIVER
 P:     Rudolf Marek
 M:     r.marek@assembler.cz
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/k8temp
+F:     drivers/hwmon/k8temp.c
 
 KCONFIG
 P:     Roman Zippel
 M:     zippel@linux-m68k.org
 L:     linux-kbuild@vger.kernel.org
 S:     Maintained
+F:     Documentation/kbuild/kconfig-language.txt
+F:     scripts/kconfig/
 
 KDUMP
 P:     Vivek Goyal
@@ -2570,26 +3139,32 @@ L:      kexec@lists.infradead.org
 L:     linux-kernel@vger.kernel.org
 W:     http://lse.sourceforge.net/kdump/
 S:     Maintained
+F:     Documentation/kdump/
 
 KERNEL AUTOMOUNTER (AUTOFS)
 P:     H. Peter Anvin
 M:     hpa@zytor.com
 L:     autofs@linux.kernel.org
 S:     Odd Fixes
+F:     fs/autofs/
 
 KERNEL AUTOMOUNTER v4 (AUTOFS4)
 P:     Ian Kent
 M:     raven@themaw.net
 L:     autofs@linux.kernel.org
 S:     Maintained
+F:     fs/autofs4/
 
-KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*)
+KERNEL BUILD
 P:     Sam Ravnborg
 M:     sam@ravnborg.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-next.git
-T:     git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
 L:     linux-kbuild@vger.kernel.org
 S:     Maintained
+F:     Documentation/kbuild/
+F:     Makefile
+F:     scripts/Makefile.*
 
 KERNEL JANITORS
 P:     Several
@@ -2605,6 +3180,13 @@ M:       neilb@suse.de
 L:     linux-nfs@vger.kernel.org
 W:     http://nfs.sourceforge.net/
 S:     Supported
+F:     fs/nfsd/
+F:     include/linux/nfsd/
+F:     fs/lockd/
+F:     fs/nfs_common/
+F:     net/sunrpc/
+F:     include/linux/lockd/
+F:     include/linux/sunrpc/
 
 KERNEL VIRTUAL MACHINE (KVM)
 P:     Avi Kivity
@@ -2612,6 +3194,11 @@ M:       avi@redhat.com
 L:     kvm@vger.kernel.org
 W:     http://kvm.qumranet.com
 S:     Supported
+F:     Documentation/*/kvm.txt
+F:     arch/*/kvm/
+F:     arch/*/include/asm/kvm*
+F:     include/linux/kvm*
+F:     virt/kvm/
 
 KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
 P:     Joerg Roedel
@@ -2619,6 +3206,9 @@ M:        joerg.roedel@amd.com
 L:     kvm@vger.kernel.org
 W:     http://kvm.qumranet.com
 S:     Supported
+F:     arch/x86/include/asm/svm.h
+F:     arch/x86/kvm/kvm_svm.h
+F:     arch/x86/kvm/svm.c
 
 KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
 P:     Hollis Blanchard
@@ -2626,6 +3216,8 @@ M:        hollisb@us.ibm.com
 L:     kvm-ppc@vger.kernel.org
 W:     http://kvm.qumranet.com
 S:     Supported
+F:     arch/powerpc/include/asm/kvm*
+F:     arch/powerpc/kvm/
 
 KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64)
 P:     Xiantao Zhang
@@ -2633,6 +3225,9 @@ M:        xiantao.zhang@intel.com
 L:     kvm-ia64@vger.kernel.org
 W:     http://kvm.qumranet.com
 S:     Supported
+F:     Documentation/ia64/kvm.txt
+F:     arch/ia64/include/asm/kvm*
+F:     arch/ia64/kvm/
 
 KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
 P:     Carsten Otte
@@ -2643,6 +3238,9 @@ M:        linux390@de.ibm.com
 L:     linux-s390@vger.kernel.org
 W:     http://www.ibm.com/developerworks/linux/linux390/
 S:     Supported
+F:     Documentation/s390/kvm.txt
+F:     arch/s390/include/asm/kvm*
+F:     arch/s390/kvm/
 
 KEXEC
 P:     Eric Biederman
@@ -2651,18 +3249,28 @@ W:      http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
 L:     linux-kernel@vger.kernel.org
 L:     kexec@lists.infradead.org
 S:     Maintained
+F:     include/linux/kexec.h
+F:     kernel/kexec.c
 
 KGDB
 P:     Jason Wessel
 M:     jason.wessel@windriver.com
 L:     kgdb-bugreport@lists.sourceforge.net
 S:     Maintained
+F:     Documentation/DocBook/kgdb.tmpl
+F:     drivers/misc/kgdbts.c
+F:     drivers/serial/kgdboc.c
+F:     include/linux/kgdb.h
+F:     kernel/kgdb.c
 
 KMEMTRACE
 P:     Eduard - Gabriel Munteanu
 M:     eduard.munteanu@linux360.ro
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/vm/kmemtrace.txt
+F:     include/trace/kmemtrace.h
+F:     kernel/trace/kmemtrace.c
 
 KPROBES
 P:     Ananth N Mavinakayanahalli
@@ -2675,6 +3283,9 @@ P:        Masami Hiramatsu
 M:     mhiramat@redhat.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/kprobes.txt
+F:     include/linux/kprobes.h
+F:     kernel/kprobes.c
 
 KS0108 LCD CONTROLLER DRIVER
 P:     Miguel Ojeda Sandonis
@@ -2683,21 +3294,31 @@ L:      linux-kernel@vger.kernel.org
 W:     http://miguelojeda.es/auxdisplay.htm
 W:     http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
 S:     Maintained
+F:     Documentation/auxdisplay/ks0108
+F:     drivers/auxdisplay/ks0108.c
+F:     include/linux/ks0108.h
 
 LAPB module
 L:     linux-x25@vger.kernel.org
 S:     Orphan
+F:     Documentation/networking/lapb-module.txt
+F:     include/*/lapb.h
+F:     net/lapb/
 
 LASI 53c700 driver for PARISC
 P:     James E.J. Bottomley
 M:     James.Bottomley@HansenPartnership.com
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     Documentation/scsi/53c700.txt
+F:     drivers/scsi/53c700*
 
 LED SUBSYSTEM
 P:     Richard Purdie
 M:     rpurdie@rpsys.net
 S:     Maintained
+F:     drivers/leds/
+F:     include/linux/leds.h
 
 LEGO USB Tower driver
 P:     Juergen Stuber
@@ -2705,6 +3326,7 @@ M:        starblue@users.sourceforge.net
 L:     legousb-devel@lists.sourceforge.net
 W:     http://legousb.sourceforge.net/
 S:     Maintained
+F:     drivers/usb/misc/legousbtower.c
 
 LGUEST
 P:     Rusty Russell
@@ -2712,6 +3334,11 @@ M:       rusty@rustcorp.com.au
 L:     lguest@ozlabs.org
 W:     http://lguest.ozlabs.org/
 S:     Maintained
+F:     Documentation/lguest/
+F:     arch/x86/lguest/
+F:     drivers/lguest/
+F:     include/linux/lguest*.h
+F:     arch/x86/include/asm/lguest*.h
 
 LINUX FOR IBM pSERIES (RS/6000)
 P:     Paul Mackerras
@@ -2719,12 +3346,6 @@ M:       paulus@au.ibm.com
 W:     http://www.ibm.com/linux/ltc/projects/ppc
 S:     Supported
 
-LINUX FOR NCR VOYAGER
-P:     James Bottomley
-M:     James.Bottomley@HansenPartnership.com
-W:     http://www.hansenpartnership.com/voyager
-S:     Maintained
-
 LINUX FOR POWERPC (32-BIT AND 64-BIT)
 P:     Benjamin Herrenschmidt
 M:     benh@kernel.crashing.org
@@ -2732,7 +3353,7 @@ P:        Paul Mackerras
 M:     paulus@samba.org
 W:     http://www.penguinppc.org/
 L:     linuxppc-dev@ozlabs.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/benh/powerpc.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
 S:     Supported
 
 LINUX FOR POWER MACINTOSH
@@ -2757,7 +3378,7 @@ P:        Matt Porter
 M:     mporter@kernel.crashing.org
 W:     http://www.penguinppc.org/
 L:     linuxppc-dev@ozlabs.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc.git
 S:     Maintained
 
 LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
@@ -2794,30 +3415,39 @@ LINUX SECURITY MODULE (LSM) FRAMEWORK
 P:     Chris Wright
 M:     chrisw@sous-sol.org
 L:     linux-security-module@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git
 S:     Supported
 
 LLC (802.2)
 P:     Arnaldo Carvalho de Melo
 M:     acme@ghostprotocols.net
 S:     Maintained
+F:     include/linux/llc.h
+F:     include/net/llc*
+F:     net/llc/
 
 LIS3LV02D ACCELEROMETER DRIVER
 P:     Eric Piel
 M:     eric.piel@tremplin-utc.net
 S:     Maintained
+F:     Documentation/hwmon/lis3lv02d
+F:     drivers/hwmon/lis3lv02d.*
 
 LM83 HARDWARE MONITOR DRIVER
 P:     Jean Delvare
 M:     khali@linux-fr.org
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/lm83
+F:     drivers/hwmon/lm83.c
 
 LM90 HARDWARE MONITOR DRIVER
 P:     Jean Delvare
 M:     khali@linux-fr.org
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/lm90
+F:     drivers/hwmon/lm90.c
 
 LOCKDEP AND LOCKSTAT
 P:     Peter Zijlstra
@@ -2825,8 +3455,12 @@ M:       peterz@infradead.org
 P:     Ingo Molnar
 M:     mingo@redhat.com
 L:     linux-kernel@vger.kernel.org
-T:     git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git
 S:     Maintained
+F:     Documentation/lockdep*.txt
+F:     Documentation/lockstat.txt
+F:     include/linux/lockdep.h
+F:     kernel/lockdep*
 
 LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks)
 P:     Richard Russon (FlatCap)
@@ -2834,6 +3468,8 @@ M:        ldm@flatcap.org
 L:     linux-ntfs-dev@lists.sourceforge.net
 W:     http://www.linux-ntfs.org/content/view/19/37/
 S:     Maintained
+F:     Documentation/ldm.txt
+F:     fs/partitions/ldm.*
 
 LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
 P:     Eric Moore
@@ -2843,12 +3479,14 @@ L:      DL-MPTFusionLinux@lsi.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.lsilogic.com/support
 S:     Supported
+F:     drivers/message/fusion/
 
 LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers
 P:     Matthew Wilcox
 M:     matthew@wil.cx
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/sym53c8xx_2/
 
 LTP (Linux Test Project)
 P:     Subrata Modak
@@ -2857,7 +3495,7 @@ P:        Mike Frysinger
 M:     vapier@gentoo.org
 L:     ltp-list@lists.sourceforge.net (subscribers-only)
 W:     http://ltp.sourceforge.net/
-T:     git kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
 S:     Maintained
 
 M32R ARCHITECTURE
@@ -2867,6 +3505,8 @@ L:        linux-m32r@ml.linux-m32r.org
 L:     linux-m32r-ja@ml.linux-m32r.org (in Japanese)
 W:     http://www.linux-m32r.org/
 S:     Maintained
+F:     arch/m32r/
+F:     include/asm-m32r/
 
 M68K ARCHITECTURE
 P:     Geert Uytterhoeven
@@ -2875,8 +3515,10 @@ P:       Roman Zippel
 M:     zippel@linux-m68k.org
 L:     linux-m68k@lists.linux-m68k.org
 W:     http://www.linux-m68k.org/
-T:     git git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
 S:     Maintained
+F:     arch/m68k/
+F:     drivers/zorro/
 
 M68K ON APPLE MACINTOSH
 P:     Joshua Thompson
@@ -2884,20 +3526,25 @@ M:      funaho@jurai.org
 W:     http://www.mac.linux-m68k.org/
 L:     linux-m68k@lists.linux-m68k.org
 S:     Maintained
+F:     arch/m68k/mac/
 
 M68K ON HP9000/300
 P:     Philip Blundell
 M:     philb@gnu.org
 W:     http://www.tazenda.demon.co.uk/phil/linux-hp
 S:     Maintained
+F:     arch/m68k/hp300/
 
 MAC80211
 P:     Johannes Berg
 M:     johannes@sipsolutions.net
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
 S:     Maintained
+F:     Documentation/networking/mac80211-injection.txt
+F:     include/net/mac80211.h
+F:     net/mac80211/
 
 MAC80211 PID RATE CONTROL
 P:     Stefano Brivio
@@ -2906,14 +3553,17 @@ P:      Mattias Nissler
 M:     mattias.nissler@gmx.de
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID
-T:     git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
 S:     Maintained
+F:     net/mac80211/rc80211_pid*
 
 MACVLAN DRIVER
 P:     Patrick McHardy
 M:     kaber@trash.net
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/macvlan.c
+F:     include/linux/if_macvlan.h
 
 MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
 P:     Michael Kerrisk
@@ -2927,12 +3577,15 @@ P:      Dan Williams
 M:     dcbw@redhat.com
 L:     libertas-dev@lists.infradead.org
 S:     Maintained
+F:     drivers/net/wireless/libertas/
 
 MARVELL MV643XX ETHERNET DRIVER
 P:     Lennert Buytenhek
 M:     buytenh@marvell.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/mv643xx_eth.*
+F:     include/linux/mv643xx.h
 
 MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
 P:     Nicolas Pitre
@@ -2953,12 +3606,31 @@ P:      Petr Vandrovec
 M:     vandrove@vc.cvut.cz
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/matrox/matroxfb_*
+F:     include/linux/matroxfb.h
 
 MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
 P:     Hans J. Koch
 M:     hjk@linutronix.de
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/max6650
+F:     drivers/hwmon/max6650.c
+
+MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
+P:     Mauro Carvalho Chehab
+M:     mchehab@infradead.org
+P:     LinuxTV.org Project
+L:     linux-media@vger.kernel.org
+W:     http://linuxtv.org
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+S:     Maintained
+F:     Documentation/dvb/
+F:     Documentation/video4linux/
+F:     drivers/media/
+F:     include/media/
+F:     include/linux/dvb/
+F:     include/linux/videodev*.h
 
 MEGARAID SCSI DRIVERS
 P:     Neela Syam Kolli
@@ -2966,12 +3638,17 @@ M:      megaraidlinux@lsi.com
 L:     linux-scsi@vger.kernel.org
 W:     http://megaraid.lsilogic.com
 S:     Maintained
+F:     Documentation/scsi/megaraid.txt
+F:     drivers/scsi/megaraid.*
+F:     drivers/scsi/megaraid/
 
 MEMORY MANAGEMENT
 L:     linux-mm@kvack.org
 L:     linux-kernel@vger.kernel.org
 W:     http://www.linux-mm.org
 S:     Maintained
+F:     include/linux/mm.h
+F:     mm/
 
 MEMORY RESOURCE CONTROLLER
 P:     Balbir Singh
@@ -2983,6 +3660,7 @@ M:        kamezawa.hiroyu@jp.fujitsu.com
 L:     linux-mm@kvack.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     mm/memcontrol.c
 
 MEMORY TECHNOLOGY DEVICES (MTD)
 P:     David Woodhouse
@@ -2991,55 +3669,83 @@ W:      http://www.linux-mtd.infradead.org/
 L:     linux-mtd@lists.infradead.org
 T:     git git://git.infradead.org/mtd-2.6.git
 S:     Maintained
+F:     drivers/mtd/
+F:     include/linux/mtd/
+F:     include/mtd/
+
+MICROBLAZE ARCHITECTURE
+P:     Michal Simek
+M:     monstr@monstr.eu
+L:     microblaze-uclinux@itee.uq.edu.au
+W:     http://www.monstr.eu/fdt/
+T:     git git://git.monstr.eu/linux-2.6-microblaze.git
+S:     Supported
 
 MICROTEK X6 SCANNER
 P:     Oliver Neukum
 M:     oliver@neukum.name
 S:     Maintained
+F:     drivers/usb/image/microtek.*
 
 MIPS
 P:     Ralf Baechle
 M:     ralf@linux-mips.org
 W:     http://www.linux-mips.org/
 L:     linux-mips@linux-mips.org
-T:     git www.linux-mips.org:/pub/scm/linux.git
+T:     git git://git.linux-mips.org/pub/scm/linux.git
 S:     Supported
+F:     Documentation/mips/
+F:     arch/mips/
 
 MISCELLANEOUS MCA-SUPPORT
 P:     James Bottomley
 M:     James.Bottomley@HansenPartnership.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/ia64/mca.txt
+F:     Documentation/mca.txt
+F:     drivers/mca/
+F:     include/linux/mca*
 
 MODULE SUPPORT
 P:     Rusty Russell
 M:     rusty@rustcorp.com.au
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     include/linux/module.h
+F:     kernel/module.c
 
 MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER
 P:     Stelian Pop
 M:     stelian@popies.net
 W:     http://popies.net/meye/
 S:     Maintained
+F:     Documentation/video4linux/meye.txt
+F:     drivers/media/video/meye.*
+F:     include/linux/meye.h
 
 MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
 P:     Pavel Pisa
 M:     ppisa@pikron.com
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 S:     Maintained
+F:     drivers/mmc/host/imxmmc.*
 
 MOUSE AND MISC DEVICES [GENERAL]
 P:     Alessandro Rubini
 M:     rubini@ipvvis.unipv.it
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/input/mouse/
+F:     include/linux/gpio_mouse.h
 
 MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
 P:     Jiri Slaby
 M:     jirislaby@gmail.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/serial/moxa-smartio
+F:     drivers/char/mxser.*
 
 MSI LAPTOP SUPPORT
 P:     Lennart Poettering
@@ -3047,43 +3753,54 @@ M:      mzxreary@0pointer.de
 W:     https://tango.0pointer.de/mailman/listinfo/s270-linux
 W:     http://0pointer.de/lennart/tchibo.html
 S:     Maintained
+F:     drivers/platform/x86/msi-laptop.c
 
 MULTIFUNCTION DEVICES (MFD)
 P:     Samuel Ortiz
 M:     sameo@linux.intel.com
 L:     linux-kernel@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
 S:     Supported
+F:     drivers/mfd/
 
 MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
 P:     Pierre Ossman
 M:     pierre@ossman.eu
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/mmc/
+F:     include/linux/mmc/
 
 MULTIMEDIA CARD (MMC) ETC. OVER SPI
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
 L:     linux-kernel@vger.kernel.org
 S:     Odd Fixes
+F:     drivers/mmc/host/mmc_spi.c
+F:     include/linux/spi/mmc_spi.h
 
 MULTISOUND SOUND DRIVER
 P:     Andrew Veliath
 M:     andrewtv@usa.net
 S:     Maintained
+F:     Documentation/sound/oss/MultiSound
+F:     sound/oss/msnd*
 
 MULTITECH MULTIPORT CARD (ISICOM)
 P:     Jiri Slaby
 M:     jirislaby@gmail.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/char/isicom.c
+F:     include/linux/isicom.h
 
 MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
 P:     Felipe Balbi
 M:     felipe.balbi@nokia.com
 L:     linux-usb@vger.kernel.org
-T:     git gitorious.org:/musb/mainline.git
+T:     git git://gitorious.org/musb/mainline.git
 S:     Maintained
+F:     drivers/usb/musb/
 
 MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
 P:     Andrew Gallatin
@@ -3093,23 +3810,27 @@ M:      brice@myri.com
 L:     netdev@vger.kernel.org
 W:     http://www.myri.com/scs/download-Myri10GE.html
 S:     Supported
+F:     drivers/net/myri10ge/
 
 NATSEMI ETHERNET DRIVER (DP8381x)
 P:     Tim Hockin
 M:     thockin@hockin.org
 S:     Maintained
+F:     drivers/net/natsemi.c
 
 NCP FILESYSTEM
 P:     Petr Vandrovec
 M:     vandrove@vc.cvut.cz
 L:     linware@sh.cvut.cz
 S:     Maintained
+F:     fs/ncpfs/
 
 NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
 P:     James E.J. Bottomley
 M:     James.Bottomley@HansenPartnership.com
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/NCR_D700.*
 
 NETEFFECT IWARP RNIC DRIVER (IW_NES)
 P:     Faisal Latif
@@ -3126,6 +3847,7 @@ P:        Stephen Hemminger
 M:     shemminger@linux-foundation.org
 L:     netem@lists.linux-foundation.org
 S:     Maintained
+F:     net/sched/sch_netem.c
 
 NETERION (S2IO) 10GbE DRIVER (xframe/vxge)
 P:     Ramkrishna Vepa
@@ -3142,6 +3864,8 @@ L:        netdev@vger.kernel.org
 W:     http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous
 W:     http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous
 S:     Supported
+F:     Documentation/networking/s2io.txt
+F:     drivers/net/s2io*
 
 NETFILTER/IPTABLES/IPCHAINS
 P:     Rusty Russell
@@ -3157,6 +3881,12 @@ L:       coreteam@netfilter.org
 W:     http://www.netfilter.org/
 W:     http://www.iptables.org/
 S:     Supported
+F:     include/linux/netfilter*
+F:     include/linux/netfilter/
+F:     include/net/netfilter/
+F:     net/*/netfilter.c
+F:     net/*/netfilter/
+F:     net/netfilter/
 
 NETLABEL
 P:     Paul Moore
@@ -3164,6 +3894,9 @@ M:        paul.moore@hp.com
 W:     http://netlabel.sf.net
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     Documentation/netlabel/
+F:     include/net/netlabel.h
+F:     net/netlabel/
 
 NETROM NETWORK LAYER
 P:     Ralf Baechle
@@ -3171,18 +3904,25 @@ M:      ralf@linux-mips.org
 L:     linux-hams@vger.kernel.org
 W:     http://www.linux-ax25.org/
 S:     Maintained
+F:     include/linux/netrom.h
+F:     include/net/netrom.h
+F:     net/netrom/
 
 NETWORK BLOCK DEVICE (NBD)
 P:     Paul Clements
 M:     Paul.Clements@steeleye.com
 S:     Maintained
+F:     Documentation/blockdev/nbd.txt
+F:     drivers/block/nbd.c
+F:     include/linux/nbd.h
 
 NETWORK DEVICE DRIVERS
 P:     Jeff Garzik
 M:     jgarzik@pobox.com
 L:     netdev@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
 S:     Maintained
+F:     drivers/net/
 
 NETWORKING [GENERAL]
 P:     Networking Team
@@ -3190,6 +3930,8 @@ M:        netdev@vger.kernel.org
 L:     netdev@vger.kernel.org
 W:     http://linux-net.osdl.org/
 S:     Maintained
+F:     net/
+F:     include/net/
 
 NETWORKING [IPv4/IPv6]
 P:     David S. Miller
@@ -3205,8 +3947,11 @@ M:       yoshfuji@linux-ipv6.org
 P:     Patrick McHardy
 M:     kaber@trash.net
 L:     netdev@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
 S:     Maintained
+F:     net/ipv4/
+F:     net/ipv6/
+F:     include/net/ip*
 
 NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
 P:     Paul Moore
@@ -3218,8 +3963,11 @@ NETWORKING [WIRELESS]
 P:     John W. Linville
 M:     linville@tuxdriver.com
 L:     linux-wireless@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
 S:     Maintained
+F:     net/wireless/
+F:     include/net/ieee80211*
+F:     include/net/wireless.h
 
 NETXEN (1/10) GbE SUPPORT
 P:     Dhananjay Phadke
@@ -3227,6 +3975,7 @@ M:        dhananjay@netxen.com
 L:     netdev@vger.kernel.org
 W:     http://www.netxen.com
 S:     Supported
+F:     drivers/net/netxen/
 
 NFS, SUNRPC, AND LOCKD CLIENTS
 P:     Trond Myklebust
@@ -3235,6 +3984,13 @@ L:       linux-nfs@vger.kernel.org
 W:     http://client.linux-nfs.org
 T:     git git://git.linux-nfs.org/pub/linux/nfs-2.6.git
 S:     Maintained
+F:     fs/lockd/
+F:     fs/nfs/
+F:     fs/nfs_common/
+F:     net/sunrpc/
+F:     include/linux/lockd/
+F:     include/linux/nfs*
+F:     include/linux/sunrpc/
 
 NI5010 NETWORK DRIVER
 P:     Jan-Pascal van Best
@@ -3243,6 +3999,7 @@ P:        Andreas Mohr
 M:     andi@lisas.de
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/ni5010.*
 
 NILFS2 FILESYSTEM
 P:     KONISHI Ryusuke
@@ -3250,12 +4007,17 @@ M:      konishi.ryusuke@lab.ntt.co.jp
 L:     users@nilfs.org
 W:     http://www.nilfs.org/en/
 S:     Supported
+F:     Documentation/filesystems/nilfs2.txt
+F:     fs/nilfs2/
+F:     include/linux/nilfs2_fs.h
 
 NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
 P:     YOKOTA Hiroshi
 M:     yokota@netlab.is.tsukuba.ac.jp
 W:     http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
 S:     Maintained
+F:     Documentation/scsi/NinjaSCSI.txt
+F:     drivers/scsi/pcmcia/nsp_*
 
 NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER
 P:     GOTO Masanori
@@ -3264,6 +4026,8 @@ P:        YOKOTA Hiroshi
 M:     yokota@netlab.is.tsukuba.ac.jp
 W:     http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
 S:     Maintained
+F:     Documentation/scsi/NinjaSCSI.txt
+F:     drivers/scsi/nsp32*
 
 NTFS FILESYSTEM
 P:     Anton Altaparmakov
@@ -3271,43 +4035,55 @@ M:      aia21@cantab.net
 L:     linux-ntfs-dev@lists.sourceforge.net
 L:     linux-kernel@vger.kernel.org
 W:     http://www.linux-ntfs.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git
 S:     Maintained
+F:     Documentation/filesystems/ntfs.txt
+F:     fs/ntfs/
 
 NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
 P:     Antonino Daplas
 M:     adaplas@gmail.com
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/riva/
+F:     drivers/video/nvidia/
 
 OMFS FILESYSTEM
 P:     Bob Copeland
 M:     me@bobcopeland.com
 L:     linux-karma-devel@lists.sourceforge.net
 S:     Maintained
+F:     Documentation/filesystems/omfs.txt
+F:     fs/omfs/
 
 OMNIKEY CARDMAN 4000 DRIVER
 P:     Harald Welte
 M:     laforge@gnumonks.org
 S:     Maintained
+F:     drivers/char/pcmcia/cm4000_cs.c
+F:     include/linux/cm4000_cs.h
 
 OMNIKEY CARDMAN 4040 DRIVER
 P:     Harald Welte
 M:     laforge@gnumonks.org
 S:     Maintained
+F:     drivers/char/pcmcia/cm4040_cs.*
 
 OMNIVISION OV7670 SENSOR DRIVER
 P:     Jonathan Corbet
 M:     corbet@lwn.net
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     drivers/media/video/ov7670.c
 
 ONENAND FLASH DRIVER
 P:     Kyungmin Park
 M:     kyungmin.park@samsung.com
 L:     linux-mtd@lists.infradead.org
 S:     Maintained
+F:     drivers/mtd/onenand/
+F:     include/linux/mtd/onenand*.h
 
 ONSTREAM SCSI TAPE DRIVER
 P:     Willem Riede
@@ -3315,18 +4091,25 @@ M:      osst@riede.org
 L:     osst-users@lists.sourceforge.net
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/osst*
+F:     drivers/scsi/st*
 
 OPENCORES I2C BUS DRIVER
 P:     Peter Korsgaard
 M:     jacmet@sunsite.dk
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     Documentation/i2c/busses/i2c-ocores
+F:     drivers/i2c/busses/i2c-ocores.c
 
 OPROFILE
 P:     Robert Richter
 M:     robert.richter@amd.com
 L:     oprofile-list@lists.sf.net
 S:     Maintained
+F:     arch/*/oprofile/
+F:     drivers/oprofile/
+F:     include/linux/oprofile.h
 
 ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 P:     Mark Fasheh
@@ -3337,6 +4120,9 @@ L:        ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
 W:     http://oss.oracle.com/projects/ocfs2/
 T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
 S:     Supported
+F:     Documentation/filesystems/ocfs2.txt
+F:     Documentation/filesystems/dlmfs.txt
+F:     fs/ocfs2/
 
 ORINOCO DRIVER
 P:     Pavel Roskin
@@ -3348,6 +4134,7 @@ L:        orinoco-users@lists.sourceforge.net
 L:     orinoco-devel@lists.sourceforge.net
 W:     http://www.nongnu.org/orinoco/
 S:     Maintained
+F:     drivers/net/wireless/orinoco/
 
 OSD LIBRARY
 P:     Boaz Harrosh
@@ -3356,7 +4143,7 @@ P:        Benny Halevy
 M:     bhalevy@panasas.com
 L:     osd-dev@open-osd.org
 W:     http://open-osd.org
-T:     git://git.open-osd.org/open-osd.git
+T:     git git://git.open-osd.org/open-osd.git
 S:     Maintained
 
 P54 WIRELESS DRIVER
@@ -3364,25 +4151,29 @@ P:      Michael Wu
 M:     flamingice@sourmilk.net
 L:     linux-wireless@vger.kernel.org
 W:     http://prism54.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
 S:     Maintained
+F:     drivers/net/wireless/p54/
 
 PA SEMI ETHERNET DRIVER
 P:     Olof Johansson
 M:     olof@lixom.net
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/pasemi_mac.*
 
 PA SEMI SMBUS DRIVER
 P:     Olof Johansson
 M:     olof@lixom.net
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     drivers/i2c/busses/i2c-pasemi.c
 
 PANASONIC LAPTOP ACPI EXTRAS DRIVER
 P:     Harald Welte
 M:     laforge@gnumonks.org
 S:     Maintained
+F:     drivers/platform/x86/panasonic-laptop.c
 
 PANASONIC MN10300/AM33 PORT
 P:     David Howells
@@ -3392,10 +4183,16 @@ M:      yasutake.koichi@jp.panasonic.com
 L:     linux-am33-list@redhat.com (moderated for non-subscribers)
 W:     ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/
 S:     Maintained
+F:     Documentation/mn10300/
+F:     arch/mn10300/
 
 PARALLEL PORT SUPPORT
 L:     linux-parport@lists.infradead.org (subscribers-only)
 S:     Orphan
+F:     drivers/parport/
+F:     include/linux/parport*.h
+F:     drivers/char/ppdev.c
+F:     include/linux/ppdev.h
 
 PARAVIRT_OPS INTERFACE
 P:     Jeremy Fitzhardinge
@@ -3409,6 +4206,9 @@ M:        rusty@rustcorp.com.au
 L:     virtualization@lists.osdl.org
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     Documentation/ia64/paravirt_ops.txt
+F:     arch/*/kernel/paravirt*
+F:     arch/*/include/asm/paravirt.h
 
 PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
 P:     Tim Waugh
@@ -3416,6 +4216,8 @@ M:        tim@cyberelk.net
 L:     linux-parport@lists.infradead.org (subscribers-only)
 W:     http://www.torque.net/linux-pp.html
 S:     Maintained
+F:     Documentation/blockdev/paride.txt
+F:     drivers/block/paride/
 
 PARISC ARCHITECTURE
 P:     Kyle McMartin
@@ -3424,24 +4226,31 @@ P:      Helge Deller
 M:     deller@gmx.de
 L:     linux-parisc@vger.kernel.org
 W:     http://www.parisc-linux.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
 S:     Maintained
+F:     arch/parisc/
+F:     drivers/parisc/
 
 PC87360 HARDWARE MONITORING DRIVER
 P:     Jim Cromie
 M:     jim.cromie@gmail.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/pc87360
+F:     drivers/hwmon/pc87360.c
 
 PC8736x GPIO DRIVER
 P:     Jim Cromie
 M:     jim.cromie@gmail.com
 S:     Maintained
+F:     drivers/char/pc8736x_gpio.c
 
 PCA9532 LED DRIVER
 P:     Riku Voipio
 M:     riku.voipio@iki.fi
 S:     Maintained
+F:     drivers/leds/leds-pca9532.c
+F:     include/linux/leds-pca9532.h
 
 PCI ERROR RECOVERY
 P:     Linas Vepstas
@@ -3449,63 +4258,82 @@ M:      linas@austin.ibm.com
 L:     linux-kernel@vger.kernel.org
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     Documentation/PCI/pci-error-recovery.txt
+F:     Documentation/powerpc/eeh-pci-error-recovery.txt
 
 PCI SUBSYSTEM
 P:     Jesse Barnes
 M:     jbarnes@virtuousgeek.org
 L:     linux-kernel@vger.kernel.org
 L:     linux-pci@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
 S:     Supported
+F:     Documentation/PCI/
+F:     drivers/pci/
+F:     include/linux/pci*
 
 PCIE HOTPLUG DRIVER
 P:     Kristen Carlson Accardi
 M:     kristen.c.accardi@intel.com
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     drivers/pci/pcie/
 
 PCMCIA SUBSYSTEM
 P:     Linux PCMCIA Team
 L:     linux-pcmcia@lists.infradead.org
 W:     http://lists.infradead.org/mailman/listinfo/linux-pcmcia
-T:     git kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
 S:     Maintained
+F:     Documentation/pcmcia/
+F:     drivers/pcmcia/
+F:     include/pcmcia/
 
 PCNET32 NETWORK DRIVER
 P:     Don Fry
 M:     pcnet32@verizon.net
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/pcnet32.c
 
 PER-TASK DELAY ACCOUNTING
 P:     Balbir Singh
 M:     balbir@linux.vnet.ibm.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     include/linux/delayacct.h
+F:     kernel/delayacct.c
 
 PERSONALITY HANDLING
 P:     Christoph Hellwig
 M:     hch@infradead.org
 L:     linux-abi-devel@lists.sourceforge.net
 S:     Maintained
+F:     include/linux/personality.h
 
 PHRAM MTD DRIVER
 P:     Joern Engel
 M:     joern@lazybastard.org
 L:     linux-mtd@lists.infradead.org
 S:     Maintained
+F:     drivers/mtd/devices/phram.c
 
 PKTCDVD DRIVER
 P:     Peter Osterlund
 M:     petero2@telia.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/block/pktcdvd.c
+F:     include/linux/pktcdvd.h
 
 POSIX CLOCKS and TIMERS
 P:     Thomas Gleixner
 M:     tglx@linutronix.de
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     fs/timerfd.c
+F:     include/linux/timer*
+F:     kernel/*timer*
 
 POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
 P:     Anton Vorontsov
@@ -3513,8 +4341,10 @@ M:       cbou@mail.ru
 P:     David Woodhouse
 M:     dwmw2@infradead.org
 L:     linux-kernel@vger.kernel.org
-T:     git git.infradead.org/battery-2.6.git
+T:     git git://git.infradead.org/battery-2.6.git
 S:     Maintained
+F:     include/linux/power_supply.h
+F:     drivers/power/power_supply*
 
 PNP SUPPORT
 P:     Adam Belay
@@ -3522,33 +4352,42 @@ M:      abelay@mit.edu
 P:     Bjorn Helgaas
 M:     bjorn.helgaas@hp.com
 S:     Maintained
+F:     drivers/pnp/
 
 PNXxxxx I2C DRIVER
 P:     Vitaly Wool
 M:     vitalywool@gmail.com
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     drivers/i2c/busses/i2c-pnx.c
 
 PPP PROTOCOL DRIVERS AND COMPRESSORS
 P:     Paul Mackerras
 M:     paulus@samba.org
 L:     linux-ppp@vger.kernel.org
 S:     Maintained
+F:     drivers/net/ppp_*
 
 PPP OVER ATM (RFC 2364)
 P:     Mitchell Blank Jr
 M:     mitch@sfgoth.com
 S:     Maintained
+F:     net/atm/pppoatm.c
+F:     include/linux/atmppp.h
 
 PPP OVER ETHERNET
 P:     Michal Ostrowski
 M:     mostrows@earthlink.net
 S:     Maintained
+F:     drivers/net/pppoe.c
+F:     drivers/net/pppox.c
 
 PPP OVER L2TP
 P:     James Chapman
 M:     jchapman@katalix.com
 S:     Maintained
+F:     drivers/net/pppol2tp.c
+F:     include/linux/if_pppol2tp.h
 
 PREEMPTIBLE KERNEL
 P:     Robert Love
@@ -3557,6 +4396,8 @@ L:        linux-kernel@vger.kernel.org
 L:     kpreempt-tech@lists.sourceforge.net
 W:     ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
 S:     Supported
+F:     Documentation/preempt-locking.txt
+F:     include/linux/preempt.h
 
 PRISM54 WIRELESS DRIVER
 P:     Luis R. Rodriguez
@@ -3564,6 +4405,7 @@ M:        mcgrof@gmail.com
 L:     linux-wireless@vger.kernel.org
 W:     http://prism54.org
 S:     Maintained
+F:     drivers/net/wireless/prism54/
 
 PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
 P:     Peter Denison
@@ -3576,6 +4418,7 @@ P:        Mikael Pettersson
 M:     mikpe@it.uu.se
 L:     linux-ide@vger.kernel.org
 S:     Maintained
+F:     drivers/ata/sata_promise.*
 
 PS3 NETWORK SUPPORT
 P:     Masakazu Mokuno
@@ -3583,6 +4426,7 @@ M:        mokuno@sm.sony.co.jp
 L:     netdev@vger.kernel.org
 L:     cbe-oss-dev@ozlabs.org
 S:     Supported
+F:     drivers/net/ps3_gelic_net.*
 
 PS3 PLATFORM SUPPORT
 P:     Geoff Levand
@@ -3590,6 +4434,13 @@ M:       geoffrey.levand@am.sony.com
 L:     linuxppc-dev@ozlabs.org
 L:     cbe-oss-dev@ozlabs.org
 S:     Supported
+F:     arch/powerpc/boot/ps3*
+F:     arch/powerpc/include/asm/lv1call.h
+F:     arch/powerpc/include/asm/ps3*.h
+F:     arch/powerpc/platforms/ps3/
+F:     drivers/*/ps3*
+F:     drivers/ps3/
+F:     drivers/usb/host/*ps3.c
 
 PS3VRAM DRIVER
 P:     Jim Paris
@@ -3603,8 +4454,10 @@ M:       isely@pobox.com
 L:     pvrusb2@isely.net       (subscribers-only)
 L:     linux-media@vger.kernel.org
 W:     http://www.isely.net/pvrusb2/
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     Documentation/video4linux/README.pvrusb2
+F:     drivers/media/video/pvrusb2/
 
 PXA2xx/PXA3xx SUPPORT
 P:     Eric Miao
@@ -3613,6 +4466,12 @@ P:       Russell King
 M:     linux@arm.linux.org.uk
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 S:     Maintained
+F:     arch/arm/mach-pxa/
+F:     drivers/pcmcia/pxa2xx*
+F:     drivers/spi/pxa2xx*
+F:     drivers/usb/gadget/pxa2*
+F:     include/sound/pxa2xx-lib.h
+F:     sound/soc/pxa/pxa2xx*
 
 PXA168 SUPPORT
 P:     Eric Miao
@@ -3620,14 +4479,14 @@ M:      eric.miao@marvell.com
 P:     Jason Chagas
 M:     jason.chagas@marvell.com
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
-T:     git kernel.org:/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
 S:     Supported
 
 PXA910 SUPPORT
 P:     Eric Miao
 M:     eric.miao@marvell.com
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
-T:     git kernel.org:/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
 S:     Supported
 
 PXA MMCI DRIVER
@@ -3644,12 +4503,16 @@ P:      Andrew Vasquez
 M:     linux-driver@qlogic.com
 L:     linux-scsi@vger.kernel.org
 S:     Supported
+F:     Documentation/scsi/LICENSE.qla2xxx
+F:     drivers/scsi/qla2xxx/
 
 QLOGIC QLA3XXX NETWORK DRIVER
 P:     Ron Mercer
 M:     linux-driver@qlogic.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     Documentation/networking/LICENSE.qla3xxx
+F:     drivers/net/qla3xxx.*
 
 QLOGIC QLGE 10Gb ETHERNET DRIVER
 P:     Ron Mercer
@@ -3657,6 +4520,7 @@ M:        linux-driver@qlogic.com
 M:     ron.mercer@qlogic.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/qlge/
 
 QNX4 FILESYSTEM
 P:     Anders Larsen
@@ -3664,18 +4528,24 @@ M:      al@alarsen.net
 L:     linux-kernel@vger.kernel.org
 W:     http://www.alarsen.net/linux/qnx4fs/
 S:     Maintained
+F:     fs/qnx4/
+F:     include/linux/qnx4_fs.h
+F:     include/linux/qnxtypes.h
 
 RADEON FRAMEBUFFER DISPLAY DRIVER
 P:     Benjamin Herrenschmidt
 M:     benh@kernel.crashing.org
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/aty/radeon*
+F:     include/linux/radeonfb.h
 
 RAGE128 FRAMEBUFFER DISPLAY DRIVER
 P:     Paul Mackerras
 M:     paulus@samba.org
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/aty/aty128fb.c
 
 RALINK RT2X00 WIRELESS LAN DRIVER
 P:     rt2x00 project
@@ -3683,36 +4553,43 @@ L:      linux-wireless@vger.kernel.org
 L:     users@rt2x00.serialmonkey.com
 W:     http://rt2x00.serialmonkey.com/
 S:     Maintained
-T:     git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git
 F:     drivers/net/wireless/rt2x00/
 
 RAMDISK RAM BLOCK DEVICE DRIVER
 P:     Nick Piggin
 M:     npiggin@suse.de
 S:     Maintained
+F:     Documentation/blockdev/ramdisk.txt
+F:     drivers/block/brd.c
 
 RANDOM NUMBER DRIVER
 P:     Matt Mackall
 M:     mpm@selenic.com
 S:     Maintained
+F:     drivers/char/random.c
 
 RAPIDIO SUBSYSTEM
 P:     Matt Porter
 M:     mporter@kernel.crashing.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/rapidio/
 
 RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
 P:     Corey Thomas
 M:     coreythomas@charter.net
 L:     linux-wireless@vger.kernel.org
 S:     Maintained
+F:     drivers/net/wireless/ray*
 
 RCUTORTURE MODULE
 P:     Josh Triplett
 M:     josh@freedesktop.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/RCU/torture.txt
+F:     kernel/rcutorture.c
 
 RDC R-321X SoC
 P:     Florian Fainelli
@@ -3725,12 +4602,14 @@ P:      Florian Fainelli
 M:     florian.fainelli@telecomint.eu
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/r6040.c
 
 RDS - RELIABLE DATAGRAM SOCKETS
 P:     Andy Grover
 M:     andy.grover@oracle.com
 L:     rds-devel@oss.oracle.com
 S:     Supported
+F:     net/rds/
 
 READ-COPY UPDATE (RCU)
 P:     Dipankar Sarma
@@ -3738,37 +4617,54 @@ M:      dipankar@in.ibm.com
 W:     http://www.rdrop.com/users/paulmck/rclock/
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     Documentation/RCU/rcu.txt
+F:     Documentation/RCU/rcuref.txt
+F:     include/linux/rcupdate.h
+F:     include/linux/srcu.h
+F:     kernel/rcupdate.c
 
 REAL TIME CLOCK DRIVER
 P:     Paul Gortmaker
 M:     p_gortmaker@yahoo.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/rtc.txt
+F:     drivers/rtc/
+F:     include/linux/rtc.h
 
 REAL TIME CLOCK (RTC) SUBSYSTEM
 P:     Alessandro Zummo
 M:     a.zummo@towertech.it
 L:     rtc-linux@googlegroups.com
 S:     Maintained
+F:     Documentation/rtc.txt
+F:     drivers/rtc/
+F:     include/linux/rtc.h
 
 REISERFS FILE SYSTEM
 L:     reiserfs-devel@vger.kernel.org
 S:     Supported
+F:     fs/reiserfs/
 
 RFKILL
 P:     Ivo van Doorn
 M:     IvDoorn@gmail.com
 L:     netdev@vger.kernel.org
 S:     Maintained
-F:     net/rfkill
+F      Documentation/rfkill.txt
+F:     net/rfkill/
 
 RISCOM8 DRIVER
 S:     Orphan
+F:     Documentation/serial/riscom8.txt
+F:     drivers/char/riscom8*
 
 ROCKETPORT DRIVER
 P:     Comtrol Corp.
 W:     http://www.comtrol.com
 S:     Maintained
+F:     Documentation/serial/rocket.txt
+F:     drivers/char/rocket*
 
 ROSE NETWORK LAYER
 P:     Ralf Baechle
@@ -3776,32 +4672,38 @@ M:      ralf@linux-mips.org
 L:     linux-hams@vger.kernel.org
 W:     http://www.linux-ax25.org/
 S:     Maintained
+F:     include/linux/rose.h
+F:     include/net/rose.h
+F:     net/rose/
 
 RTL8180 WIRELESS DRIVER
 P:     John W. Linville
 M:     linville@tuxdriver.com
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 S:     Maintained
+F:     drivers/net/wireless/rtl818*
 
 RTL8187 WIRELESS DRIVER
-P:      Herton Ronaldo Krzesinski
-M:      herton@mandriva.com.br
-P:      Hin-Tak Leung
-M       htl10@users.sourceforge.net
-P:      Larry Finger
-M:      Larry.Finger@lwfinger.net
-L:      linux-wireless@vger.kernel.org
-W:      http://linuxwireless.org/
-T:      git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git
-S:      Maintained
+P:     Herton Ronaldo Krzesinski
+M:     herton@mandriva.com.br
+P:     Hin-Tak Leung
+M:     htl10@users.sourceforge.net
+P:     Larry Finger
+M:     Larry.Finger@lwfinger.net
+L:     linux-wireless@vger.kernel.org
+W:     http://linuxwireless.org/
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
+S:     Maintained
+F:     drivers/net/wireless/rtl818x/rtl8187*
 
 S3 SAVAGE FRAMEBUFFER DRIVER
 P:     Antonino Daplas
 M:     adaplas@gmail.com
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/savage/
 
 S390
 P:     Martin Schwidefsky
@@ -3812,6 +4714,7 @@ M:        linux390@de.ibm.com
 L:     linux-s390@vger.kernel.org
 W:     http://www.ibm.com/developerworks/linux/linux390/
 S:     Supported
+F:     arch/s390/
 
 S390 NETWORK DRIVERS
 P:     Ursula Braun
@@ -3822,6 +4725,7 @@ M:        linux390@de.ibm.com
 L:     linux-s390@vger.kernel.org
 W:     http://www.ibm.com/developerworks/linux/linux390/
 S:     Supported
+F:     drivers/s390/net/
 
 S390 ZCRYPT DRIVER
 P:     Felix Beck
@@ -3831,6 +4735,7 @@ M:        ralph.wuerthner@de.ibm.com
 M:     linux390@de.ibm.com
 L:     linux-s390@vger.kernel.org
 S:     Supported
+F:     drivers/s390/crypto/
 
 S390 ZFCP DRIVER
 P:     Christof Schmitt
@@ -3841,6 +4746,8 @@ M:        linux390@de.ibm.com
 L:     linux-s390@vger.kernel.org
 W:     http://www.ibm.com/developerworks/linux/linux390/
 S:     Supported
+F:     Documentation/s390/zfcpdump.txt
+F:     drivers/s390/scsi/zfcp_*
 
 S390 IUCV NETWORK LAYER
 P:     Ursula Braun
@@ -3849,6 +4756,9 @@ M:        linux390@de.ibm.com
 L:     linux-s390@vger.kernel.org
 W:     http://www.ibm.com/developerworks/linux/linux390/
 S:     Supported
+F:     drivers/s390/net/*iucv*
+F:     include/net/iucv/
+F:     net/iucv/
 
 S3C24XX SD/MMC Driver
 P:     Ben Dooks
@@ -3856,19 +4766,24 @@ M:      ben-linux@fluff.org
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     drivers/mmc/host/s3cmci.*
 
 SAA7146 VIDEO4LINUX-2 DRIVER
 P:     Michael Hunold
 M:     michael@mihu.de
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://www.mihu.de/linux/saa7146
 S:     Maintained
+F:     drivers/media/common/saa7146*
+F:     drivers/media/video/*7146*
+F:     include/media/*7146*
 
 SC1200 WDT DRIVER
 P:     Zwane Mwaikambo
 M:     zwane@arm.linux.org.uk
 S:     Maintained
+F:     drivers/watchdog/sc1200wdt.c
 
 SCHEDULER
 P:     Ingo Molnar
@@ -3877,6 +4792,8 @@ P:        Peter Zijlstra
 M:     peterz@infradead.org
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     kernel/sched*
+F:     include/linux/sched.h
 
 SCSI CDROM DRIVER
 P:     Jens Axboe
@@ -3884,6 +4801,7 @@ M:        axboe@kernel.dk
 L:     linux-scsi@vger.kernel.org
 W:     http://www.kernel.dk
 S:     Maintained
+F:     drivers/scsi/sr*
 
 SCSI SG DRIVER
 P:     Doug Gilbert
@@ -3891,21 +4809,27 @@ M:      dgilbert@interlog.com
 L:     linux-scsi@vger.kernel.org
 W:     http://www.torque.net/sg
 S:     Maintained
+F:     drivers/scsi/sg.c
+F:     include/scsi/sg.h
 
 SCSI SUBSYSTEM
 P:     James E.J. Bottomley
 M:     James.Bottomley@HansenPartnership.com
 L:     linux-scsi@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
-T:     git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
-T:     git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
 S:     Maintained
+F:     drivers/scsi/
+F:     include/scsi/
 
 SCSI TAPE DRIVER
 P:     Kai Mäkisara
 M:     Kai.Makisara@kolumbus.fi
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     Documentation/scsi/st.txt
+F:     drivers/scsi/st*
 
 SCTP PROTOCOL
 P:     Vlad Yasevich
@@ -3915,27 +4839,41 @@ M:      sri@us.ibm.com
 L:     linux-sctp@vger.kernel.org
 W:     http://lksctp.sourceforge.net
 S:     Supported
+F:     Documentation/networking/sctp.txt
+F:     include/linux/sctp.h
+F:     include/net/sctp/
+F:     net/sctp/
 
 SCx200 CPU SUPPORT
 P:     Jim Cromie
 M:     jim.cromie@gmail.com
 S:     Odd Fixes
+F:     Documentation/i2c/busses/scx200_acb
+F:     arch/x86/kernel/scx200_32.c
+F:     drivers/watchdog/scx200_wdt.c
+F:     drivers/i2c/busses/scx200*
+F:     drivers/mtd/maps/scx200_docflash.c
+F:     include/linux/scx200.h
 
 SCx200 GPIO DRIVER
 P:     Jim Cromie
 M:     jim.cromie@gmail.com
 S:     Maintained
+F:     drivers/char/scx200_gpio.c
+F:     include/linux/scx200_gpio.h
 
 SCx200 HRT CLOCKSOURCE DRIVER
 P:     Jim Cromie
 M:     jim.cromie@gmail.com
 S:     Maintained
+F:     drivers/clocksource/scx200_hrt.c
 
 SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER
 P:     Sascha Sommer
 M:     saschasommer@freenet.de
 L:     sdricohcs-devel@lists.sourceforge.net (subscribers-only)
 S:     Maintained
+F:     drivers/mmc/host/sdricoh_cs.c
 
 SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
 P:     Pierre Ossman
@@ -3949,16 +4887,17 @@ M:      avorontsov@ru.mvista.com
 L:     linuxppc-dev@ozlabs.org
 L:     sdhci-devel@lists.ossman.eu
 S:     Maintained
+F:     drivers/mmc/host/sdhci.*
 
 SECURITY SUBSYSTEM
-F:     security/
 P:     James Morris
 M:     jmorris@namei.org
 L:     linux-kernel@vger.kernel.org
 L:     linux-security-module@vger.kernel.org (suggested Cc:)
-T:     git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
+T:     git git://www.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
 W:     http://security.wiki.kernel.org/
 S:     Supported
+F:     security/
 
 SECURITY CONTACT
 P:     Security Officers
@@ -3973,31 +4912,39 @@ M:      jmorris@namei.org
 P:     Eric Paris
 M:     eparis@parisplace.org
 L:     linux-kernel@vger.kernel.org (kernel issues)
-L:     selinux@tycho.nsa.gov (subscribers-only, general discussion)
+L:     selinux@tycho.nsa.gov (subscribers-only, general discussion)
 W:     http://selinuxproject.org
-T:     git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
 S:     Supported
+F:     include/linux/selinux*
+F:     security/selinux/
 
 SENSABLE PHANTOM
 P:     Jiri Slaby
 M:     jirislaby@gmail.com
 S:     Maintained
+F:     drivers/misc/phantom.c
+F:     include/linux/phantom.h
 
 SERIAL ATA (SATA) SUBSYSTEM
 P:     Jeff Garzik
 M:     jgarzik@pobox.com
 L:     linux-ide@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
 S:     Supported
+F:     drivers/ata/
+F:     include/linux/ata.h
+F:     include/linux/libata.h
 
 SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
 P:     Sathya Perla
 M:     sathyap@serverengines.com
-P:      Subbu Seetharaman
-M:      subbus@serverengines.com
-L:      netdev@vger.kernel.org
-W:      http://www.serverengines.com
-S:      Supported
+P:     Subbu Seetharaman
+M:     subbus@serverengines.com
+L:     netdev@vger.kernel.org
+W:     http://www.serverengines.com
+S:     Supported
+F:     drivers/net/benet/
 
 SFC NETWORK DRIVER
 P:     Steve Hodgson
@@ -4005,17 +4952,22 @@ P:      Ben Hutchings
 P:     Robert Stonehouse
 M:     linux-net-drivers@solarflare.com
 S:     Supported
+F:     drivers/net/sfc/
 
 SGI GRU DRIVER
 P:     Jack Steiner
 M:     steiner@sgi.com
 S:     Maintained
+F:     drivers/misc/sgi-gru/
 
 SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER
 P:     Pat Gefre
 M:     pfg@sgi.com
 L:     linux-ia64@vger.kernel.org
 S:     Supported
+F:     Documentation/ia64/serial.txt
+F:     drivers/serial/ioc?_serial.c
+F:     include/linux/ioc?.h
 
 SGI VISUAL WORKSTATION 320 AND 540
 P:     Andrey Panin
@@ -4023,11 +4975,13 @@ M:      pazke@donpac.ru
 L:     linux-visws-devel@lists.sf.net
 W:     http://linux-visws.sf.net
 S:     Maintained for 2.6.
+F:     Documentation/sgi-visws.txt
 
 SGI XP/XPC/XPNET DRIVER
 P:     Dean Nelson
 M:     dcn@sgi.com
 S:     Maintained
+F:     drivers/misc/sgi-xp/
 
 SHARP LH SUPPORT (LH7952X & LH7A40X)
 P:     Marc Singer
@@ -4035,12 +4989,18 @@ M:      elf@buici.com
 W:     http://projects.buici.com/arm
 L:     linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 S:     Maintained
+F:     Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen
+F:     arch/arm/mach-lh7a40x/
+F:     drivers/serial/serial_lh7a40x.c
+F:     drivers/usb/gadget/lh7a40*
+F:     drivers/usb/host/ohci-lh7a40*
 
 SHPC HOTPLUG DRIVER
 P:     Kristen Carlson Accardi
 M:     kristen.c.accardi@intel.com
 L:     linux-pci@vger.kernel.org
 S:     Supported
+F:     drivers/pci/hotplug/shpchp*
 
 SIMTEC EB110ATX (Chalice CATS)
 P:     Ben Dooks
@@ -4048,6 +5008,7 @@ P:        Vincent Sanders
 M:     support@simtec.co.uk
 W:     http://www.simtec.co.uk/products/EB110ATX/
 S:     Supported
+F:     arch/arm/mach-ebsa110/
 
 SIMTEC EB2410ITX (BAST)
 P:     Ben Dooks
@@ -4055,12 +5016,16 @@ P:      Vincent Sanders
 M:     support@simtec.co.uk
 W:     http://www.simtec.co.uk/products/EB2410ITX/
 S:     Supported
+F:     arch/arm/mach-s3c2410/
+F:     drivers/*/*s3c2410*
+F:     drivers/*/*/*s3c2410*
 
 SIS 190 ETHERNET DRIVER
 P:     Francois Romieu
 M:     romieu@fr.zoreil.com
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/sis190.c
 
 SIS 900/7016 FAST ETHERNET DRIVER
 P:     Daniele Venzano
@@ -4068,30 +5033,39 @@ M:      venza@brownhat.org
 W:     http://www.brownhat.org/sis900.html
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/sis900.*
 
 SIS 96X I2C/SMBUS DRIVER
 P:     Mark M. Hoffman
 M:     mhoffman@lightlink.com
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     Documentation/i2c/busses/i2c-sis96x
+F:     drivers/i2c/busses/i2c-sis96x.c
 
 SIS FRAMEBUFFER DRIVER
 P:     Thomas Winischhofer
 M:     thomas@winischhofer.net
 W:     http://www.winischhofer.net/linuxsisvga.shtml
 S:     Maintained
+F:     Documentation/fb/sisfb.txt
+F:     drivers/video/sis/
+F:     include/video/sisfb.h
 
 SIS USB2VGA DRIVER
 P:     Thomas Winischhofer
 M:     thomas@winischhofer.net
 W:     http://www.winischhofer.at/linuxsisusbvga.shtml
 S:     Maintained
+F:     drivers/usb/misc/sisusbvga/
 
 SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
 P:     Stephen Hemminger
 M:     shemminger@linux-foundation.org
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/skge.*
+F:     drivers/net/sky2.*
 
 SLAB ALLOCATOR
 P:     Christoph Lameter
@@ -4102,34 +5076,43 @@ P:      Matt Mackall
 M:     mpm@selenic.com
 L:     linux-mm@kvack.org
 S:     Maintained
+F:     include/linux/sl?b*.h
+F:     mm/sl?b.c
 
 SMC91x ETHERNET DRIVER
 P:     Nicolas Pitre
 M:     nico@cam.org
 S:     Maintained
+F:     drivers/net/smc91x.*
 
 SMSC47B397 HARDWARE MONITOR DRIVER
 P:     Mark M. Hoffman
 M:     mhoffman@lightlink.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/smsc47b397
+F:     drivers/hwmon/smsc47b397.c
 
 SMSC911x ETHERNET DRIVER
 P:     Steve Glendinning
 M:     steve.glendinning@smsc.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     include/linux/smsc911x.h
+F:     drivers/net/smsc911x.*
 
 SMSC9420 PCI ETHERNET DRIVER
 P:     Steve Glendinning
 M:     steve.glendinning@smsc.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/smsc9420.*
 
 SMX UIO Interface
 P:     Ben Nizette
 M:     bn@niasdigital.com
 S:     Maintained
+F:     drivers/uio/uio_smx.c
 
 SN-IA64 (Itanium) SUB-PLATFORM
 P:     Jes Sorensen
@@ -4138,36 +5121,45 @@ L:      linux-altix@sgi.com
 L:     linux-ia64@vger.kernel.org
 W:     http://www.sgi.com/altix
 S:     Maintained
+F:     arch/ia64/sn/
 
 SOC-CAMERA V4L2 SUBSYSTEM
 P:     Guennadi Liakhovetski
 M:     g.liakhovetski@gmx.de
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 S:     Maintained
+F:     include/media/v4l2*
+F:     drivers/media/video/v4l2*
 
 SOEKRIS NET48XX LED SUPPORT
 P:     Chris Boot
 M:     bootc@bootc.net
 S:     Maintained
+F:     drivers/leds/leds-net48xx.c
 
 SOFTWARE RAID (Multiple Disks) SUPPORT
 P:     Neil Brown
 M:     neilb@suse.de
 L:     linux-raid@vger.kernel.org
 S:     Supported
+F:     drivers/md/
+F:     include/linux/raid/
 
 SONIC NETWORK DRIVER
 P:     Thomas Bogendoerfer
 M:     tsbogend@alpha.franken.de
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/sonic.*
 
 SONICS SILICON BACKPLANE DRIVER (SSB)
 P:     Michael Buesch
 M:     mb@bu3sch.de
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/ssb/
+F:     include/linux/ssb/
 
 SONY VAIO CONTROL DEVICE DRIVER
 P:     Mattia Dongili
@@ -4175,6 +5167,10 @@ M:       malattia@linux.it
 L:     linux-acpi@vger.kernel.org
 W:     http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
 S:     Maintained
+F:     Documentation/laptops/sony-laptop.txt
+F:     drivers/char/sonypi.c
+F:     drivers/platform/x86/sony-laptop.c
+F:     include/linux/sony-laptop.h
 
 SONY MEMORYSTICK CARD SUPPORT
 P:     Alex Dubov
@@ -4182,6 +5178,7 @@ M:        oakad@yahoo.com
 L:     linux-kernel@vger.kernel.org
 W:     http://tifmxx.berlios.de/
 S:     Maintained
+F:     drivers/memstick/host/tifm_ms.c
 
 SOUND
 P:     Jaroslav Kysela
@@ -4190,36 +5187,44 @@ P:      Takashi Iwai
 M:     tiwai@suse.de
 L:     alsa-devel@alsa-project.org (subscribers-only)
 S:     Maintained
+F:     sound/
 
 SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
 P:     Liam Girdwood
 M:     lrg@slimlogic.co.uk
 P:     Mark Brown
 M:     broonie@opensource.wolfsonmicro.com
-T:     git opensource.wolfsonmicro.com/linux-2.6-asoc
+T:     git git://opensource.wolfsonmicro.com/linux-2.6-asoc
 L:     alsa-devel@alsa-project.org (subscribers-only)
 W:     http://alsa-project.org/main/index.php/ASoC
 S:     Supported
+F:     sound/soc/
 
 SPARC + UltraSPARC (sparc/sparc64)
 P:     David S. Miller
 M:     davem@davemloft.net
 L:     sparclinux@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
-T:     git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
 S:     Maintained
+F:     arch/sparc/
 
 SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
 P:     Roger Wolff
 M:     R.E.Wolff@BitWizard.nl
-L:     linux-kernel@vger.kernel.org ?
+L:     linux-kernel@vger.kernel.org
 S:     Supported
+F:     Documentation/serial/specialix.txt
+F:     drivers/char/specialix*
 
 SPI SUBSYSTEM
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
 L:     spi-devel-general@lists.sourceforge.net
 S:     Maintained
+F:     Documentation/spi/
+F:     drivers/spi/
+F:     include/linux/spi/
 
 SPIDERNET NETWORK DRIVER for CELL
 P:     Ishizaki Kou
@@ -4228,6 +5233,8 @@ P:        Jens Osterkamp
 M:     jens@de.ibm.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     Documentation/networking/spider_net.txt
+F:     drivers/net/spider_net*
 
 SPU FILE SYSTEM
 P:     Jeremy Kerr
@@ -4236,6 +5243,8 @@ L:        linuxppc-dev@ozlabs.org
 L:     cbe-oss-dev@ozlabs.org
 W:     http://www.ibm.com/developerworks/power/cell/
 S:     Supported
+F:     Documentation/filesystems/spufs.txt
+F:     arch/powerpc/platforms/cell/spufs/
 
 SQUASHFS FILE SYSTEM
 P:     Phillip Lougher
@@ -4243,12 +5252,15 @@ M:      phillip@lougher.demon.co.uk
 L:     squashfs-devel@lists.sourceforge.net (subscribers-only)
 W:     http://squashfs.org.uk
 S:     Maintained
+F:     Documentation/filesystems/squashfs.txt
+F:     fs/squashfs/
 
 SRM (Alpha) environment access
 P:     Jan-Benedict Glaw
 M:     jbglaw@lug-owl.de
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     arch/alpha/kernel/srm_env.c
 
 STABLE BRANCH
 P:     Greg Kroah-Hartman
@@ -4264,35 +5276,44 @@ M:      gregkh@suse.de
 L:     linux-kernel@vger.kernel.org
 T:     quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 S:     Maintained
+F:     drivers/staging/
 
 STARFIRE/DURALAN NETWORK DRIVER
 P:     Ion Badulescu
 M:     ionut@cs.columbia.edu
 S:     Maintained
+F:     drivers/net/starfire*
 
 STARMODE RADIO IP (STRIP) PROTOCOL DRIVER
 W:     http://mosquitonet.Stanford.EDU/strip.html
 S:     Orphan
+F:     drivers/net/wireless/strip.c
+F:     include/linux/if_strip.h
 
 STRADIS MPEG-2 DECODER DRIVER
 P:     Nathan Laredo
 M:     laredo@gnu.org
 W:     http://www.stradis.com/
 S:     Maintained
+F:     drivers/media/video/stradis.c
 
 SUN3/3X
 P:     Sam Creasey
 M:     sammy@sammy.net
 W:     http://sammy.net/sun3/
 S:     Maintained
+F:     arch/m68k/kernel/*sun3*
+F:     arch/m68k/sun3*/
+F:     arch/m68k/include/asm/sun3*
 
 SUPERH
 P:     Paul Mundt
 M:     lethal@linux-sh.org
 L:     linux-sh@vger.kernel.org
 W:     http://www.linux-sh.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git
 S:     Supported
+F:     arch/sh/
 
 SUSPEND TO RAM
 P:     Len Brown
@@ -4303,29 +5324,48 @@ P:      Rafael J. Wysocki
 M:     rjw@sisk.pl
 L:     linux-pm@lists.linux-foundation.org
 S:     Supported
+F:     Documentation/power/
+F:     arch/x86/kernel/acpi/
+F:     drivers/base/power/
+F:     kernel/power/
+F:     include/linux/suspend.h
+F:     include/linux/freezer.h
+F:     include/linux/pm.h
+F:     include/asm-*/suspend.h
 
 SVGA HANDLING
 P:     Martin Mares
 M:     mj@ucw.cz
 L:     linux-video@atrey.karlin.mff.cuni.cz
 S:     Maintained
+F:     Documentation/svga.txt
+F:     arch/x86/boot/video*
 
 SYSV FILESYSTEM
 P:     Christoph Hellwig
 M:     hch@infradead.org
 S:     Maintained
+F:     Documentation/filesystems/sysv-fs.txt
+F:     fs/sysv/
+F:     include/linux/sysv_fs.h
 
 TASKSTATS STATISTICS INTERFACE
 P:     Balbir Singh
 M:     balbir@linux.vnet.ibm.com
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/accounting/taskstats*
+F:     include/linux/taskstats*
+F:     kernel/taskstats.c
 
 TC CLASSIFIER
 P:     Jamal Hadi Salim
 M:     hadi@cyberus.ca
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     include/linux/pkt_cls.h
+F:     include/net/pkt_cls.h
+F:     net/sched/
 
 TCP LOW PRIORITY MODULE
 P:     Wong Hoi Sing, Edison
@@ -4334,6 +5374,7 @@ P:        Hung Hing Lun, Mike
 M:     hlhung3i@gmail.com
 W:     http://tcp-lp-mod.sourceforge.net/
 S:     Maintained
+F:     net/ipv4/tcp_lp.c
 
 TEHUTI ETHERNET DRIVER
 P:     Alexander Indenbaum
@@ -4342,16 +5383,19 @@ P:      Andy Gospodarek
 M:     andy@greyhouse.net
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/tehuti*
 
 Telecom Clock Driver for MCPL0010
 P:     Mark Gross
 M:     mark.gross@intel.com
 S:     Supported
+F:     drivers/char/tlclk.c
 
 TENSILICA XTENSA PORT (xtensa)
 P:     Chris Zankel
 M:     chris@zankel.net
 S:     Maintained
+F:     arch/xtensa/
 
 THINKPAD ACPI EXTRAS DRIVER
 P:     Henrique de Moraes Holschuh
@@ -4359,13 +5403,17 @@ M:      ibm-acpi@hmh.eng.br
 L:     ibm-acpi-devel@lists.sourceforge.net
 W:     http://ibm-acpi.sourceforge.net
 W:     http://thinkwiki.org/wiki/Ibm-acpi
-T:     git repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
+T:     git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
 S:     Maintained
+F:     drivers/platform/x86/thinkpad_acpi.c
 
 TI FLASH MEDIA INTERFACE DRIVER
 P:     Alex Dubov
 M:     oakad@yahoo.com
 S:     Maintained
+F:     drivers/misc/tifm*
+F:     drivers/mmc/host/tifm_sd.c
+F:     include/linux/tifm.h
 
 TI OMAP MMC INTERFACE DRIVER
 P:     Carlos Aguiar, Anderson Briglia and Syed Khasim
@@ -4373,11 +5421,13 @@ M:      linux-omap@vger.kernel.org
 W:     http://linux.omap.com
 W:     http://www.muru.com/linux/omap/
 S:     Maintained
+F:     drivers/mmc/host/omap.c
 
 TI OMAP RANDOM NUMBER GENERATOR SUPPORT
 P:     Deepak Saxena
 M:     dsaxena@plexity.net
 S:     Maintained
+F:     drivers/char/hw_random/omap-rng.c
 
 TIPC NETWORK LAYER
 P:     Per Liden
@@ -4389,8 +5439,11 @@ M:       allan.stephens@windriver.com
 L:     tipc-discussion@lists.sourceforge.net
 W:     http://tipc.sourceforge.net/
 W:     http://tipc.cslab.ericsson.net/
-T:     git tipc.cslab.ericsson.net:/pub/git/tipc.git
+T:     git git://tipc.cslab.ericsson.net/pub/git/tipc.git
 S:     Maintained
+F:     include/linux/tipc*.h
+F:     include/net/tipc/
+F:     net/tipc/
 
 TLAN NETWORK DRIVER
 P:     Samuel Chessman
@@ -4398,6 +5451,8 @@ M:        chessman@tux.org
 L:     tlan-devel@lists.sourceforge.net (subscribers-only)
 W:     http://sourceforge.net/projects/tlan/
 S:     Maintained
+F:     Documentation/networking/tlan.txt
+F:     drivers/net/tlan.*
 
 TOMOYO SECURITY MODULE
 P:     Kentaro Takeda
@@ -4411,9 +5466,11 @@ L:       tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
 W:     http://tomoyo.sourceforge.jp/
 T:     quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.2.x/tomoyo-lsm/patches/
 S:     Maintained
+F:     security/tomoyo/
 
 TOSHIBA ACPI EXTRAS DRIVER
 S:     Orphan
+F:     drivers/platform/x86/toshiba_acpi.c
 
 TOSHIBA SMM DRIVER
 P:     Jonathan Buzzard
@@ -4421,11 +5478,14 @@ M:      jonathan@buzzard.org.uk
 L:     tlinux-users@tce.toshiba-dme.co.jp
 W:     http://www.buzzard.org.uk/toshiba/
 S:     Maintained
+F:     drivers/char/toshiba.c
+F:     include/linux/toshiba.h
 
 TMIO MMC DRIVER
 P:     Ian Molton
 M:     ian@mnementh.co.uk
 S:     Maintained
+F:     drivers/mmc/host/tmio_mmc.*
 
 TPM DEVICE DRIVER
 P:     Debora Velarde
@@ -4438,12 +5498,13 @@ M:      m.selhorst@sirrix.com
 W:     http://www.sirrix.com
 L:     tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/char/tpm/
 
 TRIVIAL PATCHES
 P:     Jiri Kosina
 M:     trivial@kernel.org
 L:     linux-kernel@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jikos/trivial.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
 S:     Maintained
 
 TTY LAYER
@@ -4459,6 +5520,7 @@ P:        Kyle McMartin
 M:     kyle@mcmartin.ca
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/tulip/
 
 TUN/TAP driver
 P:     Maxim Krasnyansky
@@ -4466,17 +5528,22 @@ M:      maxk@qualcomm.com
 L:     vtun@office.satix.net
 W:     http://vtun.sourceforge.net/tun
 S:     Maintained
+F:     Documentation/networking/tuntap.txt
+F:     arch/um/os-Linux/drivers/
 
 TURBOCHANNEL SUBSYSTEM
 P:     Maciej W. Rozycki
 M:     macro@linux-mips.org
 S:     Maintained
+F:     drivers/tc/
+F:     include/linux/tc.h
 
 U14-34F SCSI DRIVER
 P:     Dario Ballabio
 M:     ballabio_dario@emc.com
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/u14-34f.c
 
 UBI FILE SYSTEM (UBIFS)
 P:     Artem Bityutskiy
@@ -4487,6 +5554,8 @@ L:        linux-mtd@lists.infradead.org
 T:     git git://git.infradead.org/ubifs-2.6.git
 W:     http://www.linux-mtd.infradead.org/doc/ubifs.html
 S:     Maintained
+F:     Documentation/filesystems/ubifs.txt
+F:     fs/ubifs/
 
 UCLINUX (AND M68KNOMMU)
 P:     Greg Ungerer
@@ -4494,6 +5563,7 @@ M:        gerg@uclinux.org
 W:     http://www.uclinux.org/
 L:     uclinux-dev@uclinux.org  (subscribers-only)
 S:     Maintained
+F:     arch/m68knommu/
 
 UCLINUX FOR RENESAS H8/300
 P:     Yoshinori Sato
@@ -4506,18 +5576,25 @@ P:      Jan Kara
 M:     jack@suse.cz
 W:     http://linux-udf.sourceforge.net
 S:     Maintained
+F:     Documentation/filesystems/udf.txt
+F:     fs/udf/
 
 UFS FILESYSTEM
 P:     Evgeniy Dushistov
 M:     dushistov@mail.ru
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/ufs.txt
+F:     fs/ufs/
 
 ULTRA-WIDEBAND (UWB) SUBSYSTEM:
 P:     David Vrabel
 M:     david.vrabel@csr.com
 L:     linux-usb@vger.kernel.org
 S:     Supported
+F:     drivers/uwb/*
+F:     include/linux/uwb.h
+F:     include/linux/uwb/
 
 UNIFORM CDROM DRIVER
 P:     Jens Axboe
@@ -4525,6 +5602,9 @@ M:        axboe@kernel.dk
 L:     linux-kernel@vger.kernel.org
 W:     http://www.kernel.dk
 S:     Maintained
+F:     Documentation/cdrom/
+F:     drivers/cdrom/cdrom.c
+F:     include/linux/cdrom.h
 
 UNSORTED BLOCK IMAGES (UBI)
 P:     Artem Bityutskiy
@@ -4533,12 +5613,17 @@ W:      http://www.linux-mtd.infradead.org/
 L:     linux-mtd@lists.infradead.org
 T:     git git://git.infradead.org/ubi-2.6.git
 S:     Maintained
+F:     drivers/mtd/ubi/
+F:     include/linux/mtd/ubi.h
+F:     include/mtd/ubi-user.h
 
 USB ACM DRIVER
 P:     Oliver Neukum
 M:     oliver@neukum.name
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     Documentation/usb/acm.txt
+F:     drivers/usb/class/cdc-acm.*
 
 USB BLOCK DRIVER (UB ub)
 P:     Pete Zaitcev
@@ -4546,6 +5631,7 @@ M:        zaitcev@redhat.com
 L:     linux-kernel@vger.kernel.org
 L:     linux-usb@vger.kernel.org
 S:     Supported
+F:     drivers/block/ub.c
 
 USB CDC ETHERNET DRIVER
 P:     Greg Kroah-Hartman
@@ -4553,12 +5639,15 @@ M:      greg@kroah.com
 L:     linux-usb@vger.kernel.org
 S:     Maintained
 W:     http://www.kroah.com/linux-usb/
+F:     drivers/net/usb/cdc_*.c
+F:     include/linux/usb/cdc.h
 
 USB CYPRESS C67X00 DRIVER
 P:     Peter Korsgaard
 M:     jacmet@sunsite.dk
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/c67x00/
 
 USB DAVICOM DM9601 DRIVER
 P:     Peter Korsgaard
@@ -4566,6 +5655,7 @@ M:        jacmet@sunsite.dk
 L:     netdev@vger.kernel.org
 W:     http://www.linux-usb.org/usbnet
 S:     Maintained
+F:     drivers/net/usb/dm9601.c
 
 USB DIAMOND RIO500 DRIVER
 P:     Cesar Miquel
@@ -4573,21 +5663,25 @@ M:      miquel@df.uba.ar
 L:     rio500-users@lists.sourceforge.net
 W:     http://rio500.sourceforge.net
 S:     Maintained
+F:     drivers/usb/misc/rio500*
 
 USB EHCI DRIVER
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
 L:     linux-usb@vger.kernel.org
 S:     Odd Fixes
+F:     Documentation/usb/ehci.txt
+F:     drivers/usb/host/ehci*
 
 USB ET61X[12]51 DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
 L:     linux-usb@vger.kernel.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://www.linux-projects.org
 S:     Maintained
+F:     drivers/media/video/et61x251/
 
 USB GADGET/PERIPHERAL SUBSYSTEM
 P:     David Brownell
@@ -4595,25 +5689,32 @@ M:      dbrownell@users.sourceforge.net
 L:     linux-usb@vger.kernel.org
 W:     http://www.linux-usb.org/gadget
 S:     Maintained
+F:     drivers/usb/gadget/
+F:     include/linux/usb/gadget*
 
 USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
 P:     Jiri Kosina
 M:     jkosina@suse.cz
 L:     linux-usb@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
 S:     Maintained
+F:     Documentation/usb/hiddev.txt
+F:     drivers/hid/usbhid/
 
 USB ISP116X DRIVER
 P:     Olav Kongas
 M:     ok@artecdesign.ee
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/host/isp116x*
+F:     include/linux/usb/isp116x.h
 
 USB KAWASAKI LSI DRIVER
 P:     Oliver Neukum
 M:     oliver@neukum.name
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/serial/kl5kusb105.*
 
 USB MASS STORAGE DRIVER
 P:     Matthew Dharm
@@ -4622,18 +5723,22 @@ L:      linux-usb@vger.kernel.org
 L:     usb-storage@lists.one-eyed-alien.net
 S:     Maintained
 W:     http://www.one-eyed-alien.net/~mdharm/linux-usb/
+F:     drivers/usb/storage/
 
 USB OHCI DRIVER
 P:     David Brownell
 M:     dbrownell@users.sourceforge.net
 L:     linux-usb@vger.kernel.org
 S:     Odd Fixes
+F:     Documentation/usb/ohci.txt
+F:     drivers/usb/host/ohci*
 
 USB OPTION-CARD DRIVER
 P:     Matthias Urlichs
 M:     smurf@smurf.noris.de
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/serial/option.c
 
 USB OV511 DRIVER
 P:     Mark McClelland
@@ -4641,6 +5746,7 @@ M:        mmcclell@bigfoot.com
 L:     linux-usb@vger.kernel.org
 W:     http://alpha.dyndns.org/ov511/
 S:     Maintained
+F:     drivers/media/video/ov511.*
 
 USB PEGASUS DRIVER
 P:     Petko Manolov
@@ -4649,12 +5755,14 @@ L:      linux-usb@vger.kernel.org
 L:     netdev@vger.kernel.org
 W:     http://pegasus2.sourceforge.net/
 S:     Maintained
+F:     drivers/net/usb/pegasus.*
 
 USB PRINTER DRIVER (usblp)
 P:     Pete Zaitcev
 M:     zaitcev@redhat.com
 L:     linux-usb@vger.kernel.org
 S:     Supported
+F:     drivers/usb/class/usblp.c
 
 USB RTL8150 DRIVER
 P:     Petko Manolov
@@ -4663,6 +5771,7 @@ L:        linux-usb@vger.kernel.org
 L:     netdev@vger.kernel.org
 W:     http://pegasus2.sourceforge.net/
 S:     Maintained
+F:     drivers/net/usb/rtl8150.c
 
 USB SE401 DRIVER
 P:     Jeroen Vreeken
@@ -4670,12 +5779,15 @@ M:      pe1rxq@amsat.org
 L:     linux-usb@vger.kernel.org
 W:     http://www.chello.nl/~j.vreeken/se401/
 S:     Maintained
+F:     Documentation/video4linux/se401.txt
+F:     drivers/media/video/se401.*
 
 USB SERIAL BELKIN F5U103 DRIVER
 P:     William Greathouse
 M:     wgreathouse@smva.com
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/serial/belkin_sa.*
 
 USB SERIAL CYPRESS M8 DRIVER
 P:     Lonnie Mendez
@@ -4684,12 +5796,14 @@ L:      linux-usb@vger.kernel.org
 S:     Maintained
 W:     http://geocities.com/i0xox0i
 W:     http://firstlight.net/cvs
+F:     drivers/usb/serial/cypress_m8.*
 
 USB SERIAL CYBERJACK DRIVER
 P:     Matthias Bruestle and Harald Welte
 M:     support@reiner-sct.com
 W:     http://www.reiner-sct.de/support/treiber_cyberjack.php
 S:     Maintained
+F:     drivers/usb/serial/cyberjack.c
 
 USB SERIAL DIGI ACCELEPORT DRIVER
 P:     Peter Berger and Al Borchers
@@ -4697,18 +5811,24 @@ M:      pberger@brimson.com
 M:     alborchers@steinerpoint.com
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/serial/digi_acceleport.c
 
 USB SERIAL DRIVER
 P:     Greg Kroah-Hartman
 M:     gregkh@suse.de
 L:     linux-usb@vger.kernel.org
 S:     Supported
+F:     Documentation/usb/usb-serial.txt
+F:     drivers/usb/serial/generic.c
+F:     drivers/usb/serial/usb-serial.c
+F:     include/linux/usb/serial.h
 
 USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
 P:     Gary Brubaker
 M:     xavyer@ix.netcom.com
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/serial/empeg.c
 
 USB SERIAL KEYSPAN DRIVER
 P:     Greg Kroah-Hartman
@@ -4716,6 +5836,7 @@ M:        greg@kroah.com
 L:     linux-usb@vger.kernel.org
 W:     http://www.kroah.com/linux/
 S:     Maintained
+F:     drivers/usb/serial/*keyspan*
 
 USB SERIAL WHITEHEAT DRIVER
 P:     Support Department
@@ -4723,21 +5844,25 @@ M:      support@connecttech.com
 L:     linux-usb@vger.kernel.org
 W:     http://www.connecttech.com
 S:     Supported
+F:     drivers/usb/serial/whiteheat*
 
 USB SMSC95XX ETHERNET DRIVER
 P:     Steve Glendinning
 M:     steve.glendinning@smsc.com
 L:     netdev@vger.kernel.org
 S:     Supported
+F:     drivers/net/usb/smsc95xx.*
 
 USB SN9C1xx DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
 L:     linux-usb@vger.kernel.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://www.linux-projects.org
 S:     Maintained
+F:     Documentation/video4linux/sn9c102.txt
+F:     drivers/media/video/sn9c102/
 
 USB SUBSYSTEM
 P:     Greg Kroah-Hartman
@@ -4746,12 +5871,18 @@ L:      linux-usb@vger.kernel.org
 W:     http://www.linux-usb.org
 T:     quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 S:     Supported
+F:     Documentation/usb/
+F:     drivers/net/usb/
+F:     drivers/usb/
+F:     include/linux/usb.h
+F:     include/linux/usb/
 
 USB UHCI DRIVER
 P:     Alan Stern
 M:     stern@rowland.harvard.edu
 L:     linux-usb@vger.kernel.org
 S:     Maintained
+F:     drivers/usb/host/uhci*
 
 USB "USBNET" DRIVER FRAMEWORK
 P:     David Brownell
@@ -4759,39 +5890,47 @@ M:      dbrownell@users.sourceforge.net
 L:     netdev@vger.kernel.org
 W:     http://www.linux-usb.org/usbnet
 S:     Maintained
+F:     drivers/net/usb/usbnet.c
+F:     include/linux/usb/usbnet.h
 
 USB VIDEO CLASS
 P:     Laurent Pinchart
 M:     laurent.pinchart@skynet.be
 L:     linux-uvc-devel@lists.berlios.de (subscribers-only)
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://linux-uvc.berlios.de
 S:     Maintained
+F:     drivers/media/video/uvc/
 
 USB W996[87]CF DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
 L:     linux-usb@vger.kernel.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://www.linux-projects.org
 S:     Maintained
+F:     Documentation/video4linux/w9968cf.txt
+F:     drivers/media/video/w996*
 
 USB WIRELESS RNDIS DRIVER (rndis_wlan)
 P:     Jussi Kivilinna
 M:     jussi.kivilinna@mbnet.fi
 L:     linux-wireless@vger.kernel.org
 S:     Maintained
+F:     drivers/net/wireless/rndis_wlan.c
 
 USB ZC0301 DRIVER
 P:     Luca Risolia
 M:     luca.risolia@studio.unibo.it
 L:     linux-usb@vger.kernel.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://www.linux-projects.org
 S:     Maintained
+F:     Documentation/video4linux/zc0301.txt
+F:     drivers/media/video/zc0301/
 
 USB ZD1201 DRIVER
 P:     Jeroen Vreeken
@@ -4799,15 +5938,18 @@ M:      pe1rxq@amsat.org
 L:     linux-usb@vger.kernel.org
 W:     http://linux-lc100020.sourceforge.net
 S:     Maintained
+F:     drivers/net/wireless/zd1201.*
 
 USB ZR364XX DRIVER
 P:     Antoine Jacquet
 M:     royale@zerezo.com
 L:     linux-usb@vger.kernel.org
 L:     linux-media@vger.kernel.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 W:     http://royale.zerezo.com/zr364xx/
 S:     Maintained
+F:     Documentation/video4linux/zr364xx.txt
+F:     drivers/media/video/zr364xx.c
 
 USER-MODE LINUX (UML)
 P:     Jeff Dike
@@ -4816,6 +5958,10 @@ L:       user-mode-linux-devel@lists.sourceforge.net
 L:     user-mode-linux-user@lists.sourceforge.net
 W:     http://user-mode-linux.sourceforge.net
 S:     Maintained
+F:     Documentation/uml/
+F:     arch/um/
+F:     fs/hostfs/
+F:     fs/hppfs/
 
 USERSPACE I/O (UIO)
 P:     Hans J. Koch
@@ -4824,13 +5970,16 @@ P:      Greg Kroah-Hartman
 M:     gregkh@suse.de
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/DocBook/uio-howto.tmpl
+F:     drivers/uio/
+F:     include/linux/uio*.h
 
 UTIL-LINUX-NG PACKAGE
 P:     Karel Zak
 M:     kzak@redhat.com
 L:     util-linux-ng@vger.kernel.org
 W:     http://kernel.org/~kzak/util-linux-ng/
-T:     git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
+T:     git git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
 S:     Maintained
 
 UVESAFB DRIVER
@@ -4839,23 +5988,30 @@ M:      spock@gentoo.org
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 W:     http://dev.gentoo.org/~spock/projects/uvesafb/
 S:     Maintained
+F:     Documentation/fb/uvesafb.txt
+F:     drivers/video/uvesafb.*
 
 VFAT/FAT/MSDOS FILESYSTEM
 P:     OGAWA Hirofumi
 M:     hirofumi@mail.parknet.co.jp
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     Documentation/filesystems/vfat.txt
+F:     fs/fat/
 
 VIA RHINE NETWORK DRIVER
 P:     Roger Luethi
 M:     rl@hellgate.ch
 S:     Maintained
+F:     drivers/net/via-rhine.c
 
 VIAPRO SMBUS DRIVER
 P:     Jean Delvare
 M:     khali@linux-fr.org
 L:     linux-i2c@vger.kernel.org
 S:     Maintained
+F:     Documentation/i2c/busses/i2c-viapro
+F:     drivers/i2c/busses/i2c-viapro.c
 
 VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
 P:     Joseph Chan
@@ -4864,26 +6020,23 @@ P:      Scott Fang
 M:     ScottFang@viatech.com.cn
 L:     linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:     Maintained
+F:     drivers/video/via/
 
 VIA VELOCITY NETWORK DRIVER
 P:     Francois Romieu
 M:     romieu@fr.zoreil.com
 L:     netdev@vger.kernel.org
 S:     Maintained
-
-VIDEO FOR LINUX (V4L)
-P:     Mauro Carvalho Chehab
-M:     mchehab@infradead.org
-L:     linux-media@vger.kernel.org
-W:     http://linuxtv.org
-T:     git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
-S:     Maintained
+F:     drivers/net/via-velocity.*
 
 VLAN (802.1Q)
 P:     Patrick McHardy
 M:     kaber@trash.net
 L:     netdev@vger.kernel.org
 S:     Maintained
+F:     drivers/net/macvlan.c
+F:     include/linux/if_*vlan.h
+F:     net/8021q/
 
 VOLTAGE AND CURRENT REGULATOR FRAMEWORK
 P:     Liam Girdwood
@@ -4892,49 +6045,64 @@ P:      Mark Brown
 M:     broonie@opensource.wolfsonmicro.com
 W:     http://opensource.wolfsonmicro.com/node/15
 W:     http://www.slimlogic.co.uk/?p=48
-T:     git kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6.git
 S:     Supported
+F:     drivers/regulator/
+F:     include/linux/regulator/
 
 VT1211 HARDWARE MONITOR DRIVER
 P:     Juerg Haefliger
 M:     juergh@gmail.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/vt1211
+F:     drivers/hwmon/vt1211.c
 
 VT8231 HARDWARE MONITOR DRIVER
 P:     Roger Lucas
 M:     vt8231@hiddenengine.co.uk
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     drivers/hwmon/vt8231.c
 
 W1 DALLAS'S 1-WIRE BUS
 P:     Evgeniy Polyakov
 M:     johnpol@2ka.mipt.ru
 S:     Maintained
+F:     Documentation/w1/
+F:     drivers/w1/
 
 W83791D HARDWARE MONITORING DRIVER
 P:     Marc Hulsman
 M:     m.hulsman@tudelft.nl
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/w83791d
+F:     drivers/hwmon/w83791d.c
 
 W83793 HARDWARE MONITORING DRIVER
 P:     Rudolf Marek
 M:     r.marek@assembler.cz
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
+F:     Documentation/hwmon/w83793
+F:     drivers/hwmon/w83793.c
 
 W83L51xD SD/MMC CARD INTERFACE DRIVER
 P:     Pierre Ossman
 M:     pierre@ossman.eu
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/mmc/host/wbsd.*
 
 WATCHDOG DEVICE DRIVERS
 P:     Wim Van Sebroeck
 M:     wim@iguana.be
-T:     git kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git
 S:     Maintained
+F:     Documentation/watchdog/
+F:     drivers/watchdog/
+F:     include/linux/watchdog.h
 
 WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS
 P:     Jean Tourrilhes
@@ -4942,12 +6110,15 @@ M:      jt@hpl.hp.com
 L:     linux-wireless@vger.kernel.org
 W:     http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
 S:     Maintained
+F:     Documentation/networking/wavelan.txt
+F:     drivers/net/wireless/wavelan*
 
 WD7000 SCSI DRIVER
 P:     Miroslav Zagorac
 M:     zaga@fly.cc.fer.hr
 L:     linux-scsi@vger.kernel.org
 S:     Maintained
+F:     drivers/scsi/wd7000.c
 
 WIMAX STACK
 P:     Inaky Perez-Gonzalez
@@ -4961,11 +6132,14 @@ WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
 P:     David Vrabel
 M:     david.vrabel@csr.com
 S:     Maintained
+F:     include/linux/wlp.h
+F:     drivers/uwb/wlp/
 
 WISTRON LAPTOP BUTTON DRIVER
 P:     Miloslav Trmac
 M:     mitr@volny.cz
 S:     Maintained
+F:     drivers/input/misc/wistron_btns.c
 
 WL3501 WIRELESS PCMCIA CARD DRIVER
 P:     Arnaldo Carvalho de Melo
@@ -4973,6 +6147,7 @@ M:        acme@ghostprotocols.net
 L:     linux-wireless@vger.kernel.org
 W:     http://oops.ghostprotocols.net:81/blog
 S:     Maintained
+F:     drivers/net/wireless/wl3501*
 
 WM97XX TOUCHSCREEN DRIVERS
 P:     Mark Brown
@@ -4983,12 +6158,17 @@ L:      linux-input@vger.kernel.org
 T:     git git://opensource.wolfsonmicro.com/linux-2.6-touch
 W:     http://opensource.wolfsonmicro.com/node/7
 S:     Supported
+F:     drivers/input/touchscreen/*wm97*
+F:     include/linux/wm97xx.h
 
 X.25 NETWORK LAYER
 P:     Henner Eisen
 M:     eis@baty.hanse.de
 L:     linux-x25@vger.kernel.org
 S:     Maintained
+F:     Documentation/networking/x25*
+F:     include/net/x25*
+F:     net/x25/
 
 X86 ARCHITECTURE (32-BIT AND 64-BIT)
 P:     Thomas Gleixner
@@ -4999,8 +6179,10 @@ P:       H. Peter Anvin
 M:     hpa@zytor.com
 M:     x86@kernel.org
 L:     linux-kernel@vger.kernel.org
-T:     git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
 S:     Maintained
+F:     Documentation/x86/
+F:     arch/x86/
 
 XEN HYPERVISOR INTERFACE
 P:     Jeremy Fitzhardinge
@@ -5010,6 +6192,11 @@ M:       chrisw@sous-sol.org
 L:     virtualization@lists.osdl.org
 L:     xen-devel@lists.xensource.com
 S:     Supported
+F:     arch/x86/xen/
+F:     drivers/*/xen-*front.c
+F:     drivers/xen/
+F:     arch/x86/include/asm/xen/
+F:     include/xen/
 
 XFS FILESYSTEM
 P:     Silicon Graphics Inc
@@ -5018,8 +6205,10 @@ M:       felixb@sgi.com
 M:     xfs-masters@oss.sgi.com
 L:     xfs@oss.sgi.com
 W:     http://oss.sgi.com/projects/xfs
-T:     git://oss.sgi.com/xfs/xfs.git
+T:     git git://oss.sgi.com/xfs/xfs.git
 S:     Supported
+F:     Documentation/filesystems/xfs.txt
+F:     fs/xfs/
 
 XILINX SYSTEMACE DRIVER
 P:     Grant Likely
@@ -5027,24 +6216,30 @@ M:      grant.likely@secretlab.ca
 W:     http://www.secretlab.ca/
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
+F:     drivers/block/xsysace.c
 
 XILINX UARTLITE SERIAL DRIVER
 P:     Peter Korsgaard
 M:     jacmet@sunsite.dk
 L:     linux-serial@vger.kernel.org
 S:     Maintained
+F:     drivers/serial/uartlite.c
 
 YAM DRIVER FOR AX.25
 P:     Jean-Paul Roubelat
 M:     jpr@f6fbb.org
 L:     linux-hams@vger.kernel.org
 S:     Maintained
+F:     drivers/net/hamradio/yam*
+F:     include/linux/yam.h
 
 YEALINK PHONE DRIVER
 P:     Henk Vergonet
 M:     Henk.Vergonet@gmail.com
 L:     usbb2k-api-dev@nongnu.org
 S:     Maintained
+F:     Documentation/input/yealink.txt
+F:     drivers/input/misc/yealink.*
 
 Z8530 DRIVER FOR AX.25
 P:     Joerg Reuter
@@ -5053,6 +6248,9 @@ W:        http://yaina.de/jreuter/
 W:     http://www.qsl.net/dl1bke/
 L:     linux-hams@vger.kernel.org
 S:     Maintained
+F:     Documentation/networking/z8530drv.txt
+F:     drivers/net/hamradio/*scc.c
+F:     drivers/net/hamradio/z8530.h
 
 ZD1211RW WIRELESS DRIVER
 P:     Daniel Drake
@@ -5063,6 +6261,7 @@ W:        http://zd1211.ath.cx/wiki/DriverRewrite
 L:     linux-wireless@vger.kernel.org
 L:     zd1211-devs@lists.sourceforge.net (subscribers-only)
 S:     Maintained
+F:     drivers/net/wireless/zd1211rw/
 
 ZR36067 VIDEO FOR LINUX DRIVER
 L:     mjpeg-users@lists.sourceforge.net
@@ -5070,12 +6269,15 @@ L:      linux-media@vger.kernel.org
 W:     http://mjpeg.sourceforge.net/driver-zoran/
 T:     Mercurial http://linuxtv.org/hg/v4l-dvb
 S:     Odd Fixes
+F:     drivers/media/video/zoran/
 
 ZS DECSTATION Z85C30 SERIAL DRIVER
 P:     Maciej W. Rozycki
 M:     macro@linux-mips.org
 S:     Maintained
+F:     drivers/serial/zs.*
 
 THE REST
 P:     Linus Torvalds
+T:     git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
 S:     Buried alive in reporters
index dc81b34c5d82e72c574217d4b63bfda319e14530..78a35e9dc10407e24eeeabe6f2331a9ff24b64b7 100644 (file)
@@ -109,3 +109,6 @@ config HAVE_CLK
 
 config HAVE_DMA_API_DEBUG
        bool
+
+config HAVE_DEFAULT_NO_SPIN_MUTEXES
+       bool
diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild
new file mode 100644 (file)
index 0000000..0f8956d
--- /dev/null
@@ -0,0 +1,5 @@
+include include/asm-generic/Kbuild.asm
+
+header-y += registers.h
+
+unifdef-y += termios.h
diff --git a/arch/frv/include/asm/atomic.h b/arch/frv/include/asm/atomic.h
new file mode 100644 (file)
index 0000000..296c35c
--- /dev/null
@@ -0,0 +1,198 @@
+/* atomic.h: atomic operation emulation for FR-V
+ *
+ * For an explanation of how atomic ops work in this arch, see:
+ *   Documentation/frv/atomic-ops.txt
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_ATOMIC_H
+#define _ASM_ATOMIC_H
+
+#include <linux/types.h>
+#include <asm/spr-regs.h>
+#include <asm/system.h>
+
+#ifdef CONFIG_SMP
+#error not SMP safe
+#endif
+
+/*
+ * Atomic operations that C can't guarantee us.  Useful for
+ * resource counting etc..
+ *
+ * We do not have SMP systems, so we don't have to deal with that.
+ */
+
+/* Atomic operations are already serializing */
+#define smp_mb__before_atomic_dec()    barrier()
+#define smp_mb__after_atomic_dec()     barrier()
+#define smp_mb__before_atomic_inc()    barrier()
+#define smp_mb__after_atomic_inc()     barrier()
+
+#define ATOMIC_INIT(i)         { (i) }
+#define atomic_read(v)         ((v)->counter)
+#define atomic_set(v, i)       (((v)->counter) = (i))
+
+#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
+static inline int atomic_add_return(int i, atomic_t *v)
+{
+       unsigned long val;
+
+       asm("0:                                         \n"
+           "   orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
+           "   ckeq            icc3,cc7                \n"
+           "   ld.p            %M0,%1                  \n"     /* LD.P/ORCR must be atomic */
+           "   orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
+           "   add%I2          %1,%2,%1                \n"
+           "   cst.p           %1,%M0          ,cc3,#1 \n"
+           "   corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* clear ICC3.Z if store happens */
+           "   beq             icc3,#0,0b              \n"
+           : "+U"(v->counter), "=&r"(val)
+           : "NPr"(i)
+           : "memory", "cc7", "cc3", "icc3"
+           );
+
+       return val;
+}
+
+static inline int atomic_sub_return(int i, atomic_t *v)
+{
+       unsigned long val;
+
+       asm("0:                                         \n"
+           "   orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
+           "   ckeq            icc3,cc7                \n"
+           "   ld.p            %M0,%1                  \n"     /* LD.P/ORCR must be atomic */
+           "   orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
+           "   sub%I2          %1,%2,%1                \n"
+           "   cst.p           %1,%M0          ,cc3,#1 \n"
+           "   corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* clear ICC3.Z if store happens */
+           "   beq             icc3,#0,0b              \n"
+           : "+U"(v->counter), "=&r"(val)
+           : "NPr"(i)
+           : "memory", "cc7", "cc3", "icc3"
+           );
+
+       return val;
+}
+
+#else
+
+extern int atomic_add_return(int i, atomic_t *v);
+extern int atomic_sub_return(int i, atomic_t *v);
+
+#endif
+
+static inline int atomic_add_negative(int i, atomic_t *v)
+{
+       return atomic_add_return(i, v) < 0;
+}
+
+static inline void atomic_add(int i, atomic_t *v)
+{
+       atomic_add_return(i, v);
+}
+
+static inline void atomic_sub(int i, atomic_t *v)
+{
+       atomic_sub_return(i, v);
+}
+
+static inline void atomic_inc(atomic_t *v)
+{
+       atomic_add_return(1, v);
+}
+
+static inline void atomic_dec(atomic_t *v)
+{
+       atomic_sub_return(1, v);
+}
+
+#define atomic_dec_return(v)           atomic_sub_return(1, (v))
+#define atomic_inc_return(v)           atomic_add_return(1, (v))
+
+#define atomic_sub_and_test(i,v)       (atomic_sub_return((i), (v)) == 0)
+#define atomic_dec_and_test(v)         (atomic_sub_return(1, (v)) == 0)
+#define atomic_inc_and_test(v)         (atomic_add_return(1, (v)) == 0)
+
+/*****************************************************************************/
+/*
+ * exchange value with memory
+ */
+#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
+
+#define xchg(ptr, x)                                                           \
+({                                                                             \
+       __typeof__(ptr) __xg_ptr = (ptr);                                       \
+       __typeof__(*(ptr)) __xg_orig;                                           \
+                                                                               \
+       switch (sizeof(__xg_orig)) {                                            \
+       case 4:                                                                 \
+               asm volatile(                                                   \
+                       "swap%I0 %M0,%1"                                        \
+                       : "+m"(*__xg_ptr), "=r"(__xg_orig)                      \
+                       : "1"(x)                                                \
+                       : "memory"                                              \
+                       );                                                      \
+               break;                                                          \
+                                                                               \
+       default:                                                                \
+               __xg_orig = (__typeof__(__xg_orig))0;                           \
+               asm volatile("break");                                          \
+               break;                                                          \
+       }                                                                       \
+                                                                               \
+       __xg_orig;                                                              \
+})
+
+#else
+
+extern uint32_t __xchg_32(uint32_t i, volatile void *v);
+
+#define xchg(ptr, x)                                                                           \
+({                                                                                             \
+       __typeof__(ptr) __xg_ptr = (ptr);                                                       \
+       __typeof__(*(ptr)) __xg_orig;                                                           \
+                                                                                               \
+       switch (sizeof(__xg_orig)) {                                                            \
+       case 4: __xg_orig = (__typeof__(*(ptr))) __xchg_32((uint32_t) x, __xg_ptr);     break;  \
+       default:                                                                                \
+               __xg_orig = (__typeof__(__xg_orig))0;                                                                   \
+               asm volatile("break");                                                          \
+               break;                                                                          \
+       }                                                                                       \
+       __xg_orig;                                                                              \
+})
+
+#endif
+
+#define tas(ptr) (xchg((ptr), 1))
+
+#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), old, new))
+#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
+
+static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
+{
+       int c, old;
+       c = atomic_read(v);
+       for (;;) {
+               if (unlikely(c == (u)))
+                       break;
+               old = atomic_cmpxchg((v), c, c + (a));
+               if (likely(old == c))
+                       break;
+               c = old;
+       }
+       return c != (u);
+}
+
+#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+
+#include <asm-generic/atomic.h>
+#endif /* _ASM_ATOMIC_H */
diff --git a/arch/frv/include/asm/auxvec.h b/arch/frv/include/asm/auxvec.h
new file mode 100644 (file)
index 0000000..0771077
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef __FRV_AUXVEC_H
+#define __FRV_AUXVEC_H
+
+#endif
diff --git a/arch/frv/include/asm/ax88796.h b/arch/frv/include/asm/ax88796.h
new file mode 100644 (file)
index 0000000..637e980
--- /dev/null
@@ -0,0 +1,22 @@
+/* ax88796.h: access points to the driver for the AX88796 NE2000 clone
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_AX88796_H
+#define _ASM_AX88796_H
+
+#include <asm/mb-regs.h>
+
+#define AX88796_IOADDR         (__region_CS1 + 0x200)
+#define AX88796_IRQ            IRQ_CPU_EXTERNAL7
+#define AX88796_FULL_DUPLEX    0                       /* force full duplex */
+#define AX88796_BUS_INFO       "CS1#+0x200"            /* bus info for ethtool */
+
+#endif /* _ASM_AX88796_H */
diff --git a/arch/frv/include/asm/bitops.h b/arch/frv/include/asm/bitops.h
new file mode 100644 (file)
index 0000000..287f6f6
--- /dev/null
@@ -0,0 +1,412 @@
+/* bitops.h: bit operations for the Fujitsu FR-V CPUs
+ *
+ * For an explanation of how atomic ops work in this arch, see:
+ *   Documentation/frv/atomic-ops.txt
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_BITOPS_H
+#define _ASM_BITOPS_H
+
+#include <linux/compiler.h>
+#include <asm/byteorder.h>
+
+#ifdef __KERNEL__
+
+#ifndef _LINUX_BITOPS_H
+#error only <linux/bitops.h> can be included directly
+#endif
+
+#include <asm-generic/bitops/ffz.h>
+
+/*
+ * clear_bit() doesn't provide any barrier for the compiler.
+ */
+#define smp_mb__before_clear_bit()     barrier()
+#define smp_mb__after_clear_bit()      barrier()
+
+#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
+static inline
+unsigned long atomic_test_and_ANDNOT_mask(unsigned long mask, volatile unsigned long *v)
+{
+       unsigned long old, tmp;
+
+       asm volatile(
+               "0:                                             \n"
+               "       orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
+               "       ckeq            icc3,cc7                \n"
+               "       ld.p            %M0,%1                  \n"     /* LD.P/ORCR are atomic */
+               "       orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
+               "       and%I3          %1,%3,%2                \n"
+               "       cst.p           %2,%M0          ,cc3,#1 \n"     /* if store happens... */
+               "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* ... clear ICC3.Z */
+               "       beq             icc3,#0,0b              \n"
+               : "+U"(*v), "=&r"(old), "=r"(tmp)
+               : "NPr"(~mask)
+               : "memory", "cc7", "cc3", "icc3"
+               );
+
+       return old;
+}
+
+static inline
+unsigned long atomic_test_and_OR_mask(unsigned long mask, volatile unsigned long *v)
+{
+       unsigned long old, tmp;
+
+       asm volatile(
+               "0:                                             \n"
+               "       orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
+               "       ckeq            icc3,cc7                \n"
+               "       ld.p            %M0,%1                  \n"     /* LD.P/ORCR are atomic */
+               "       orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
+               "       or%I3           %1,%3,%2                \n"
+               "       cst.p           %2,%M0          ,cc3,#1 \n"     /* if store happens... */
+               "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* ... clear ICC3.Z */
+               "       beq             icc3,#0,0b              \n"
+               : "+U"(*v), "=&r"(old), "=r"(tmp)
+               : "NPr"(mask)
+               : "memory", "cc7", "cc3", "icc3"
+               );
+
+       return old;
+}
+
+static inline
+unsigned long atomic_test_and_XOR_mask(unsigned long mask, volatile unsigned long *v)
+{
+       unsigned long old, tmp;
+
+       asm volatile(
+               "0:                                             \n"
+               "       orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
+               "       ckeq            icc3,cc7                \n"
+               "       ld.p            %M0,%1                  \n"     /* LD.P/ORCR are atomic */
+               "       orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
+               "       xor%I3          %1,%3,%2                \n"
+               "       cst.p           %2,%M0          ,cc3,#1 \n"     /* if store happens... */
+               "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* ... clear ICC3.Z */
+               "       beq             icc3,#0,0b              \n"
+               : "+U"(*v), "=&r"(old), "=r"(tmp)
+               : "NPr"(mask)
+               : "memory", "cc7", "cc3", "icc3"
+               );
+
+       return old;
+}
+
+#else
+
+extern unsigned long atomic_test_and_ANDNOT_mask(unsigned long mask, volatile unsigned long *v);
+extern unsigned long atomic_test_and_OR_mask(unsigned long mask, volatile unsigned long *v);
+extern unsigned long atomic_test_and_XOR_mask(unsigned long mask, volatile unsigned long *v);
+
+#endif
+
+#define atomic_clear_mask(mask, v)     atomic_test_and_ANDNOT_mask((mask), (v))
+#define atomic_set_mask(mask, v)       atomic_test_and_OR_mask((mask), (v))
+
+static inline int test_and_clear_bit(int nr, volatile void *addr)
+{
+       volatile unsigned long *ptr = addr;
+       unsigned long mask = 1UL << (nr & 31);
+       ptr += nr >> 5;
+       return (atomic_test_and_ANDNOT_mask(mask, ptr) & mask) != 0;
+}
+
+static inline int test_and_set_bit(int nr, volatile void *addr)
+{
+       volatile unsigned long *ptr = addr;
+       unsigned long mask = 1UL << (nr & 31);
+       ptr += nr >> 5;
+       return (atomic_test_and_OR_mask(mask, ptr) & mask) != 0;
+}
+
+static inline int test_and_change_bit(int nr, volatile void *addr)
+{
+       volatile unsigned long *ptr = addr;
+       unsigned long mask = 1UL << (nr & 31);
+       ptr += nr >> 5;
+       return (atomic_test_and_XOR_mask(mask, ptr) & mask) != 0;
+}
+
+static inline void clear_bit(int nr, volatile void *addr)
+{
+       test_and_clear_bit(nr, addr);
+}
+
+static inline void set_bit(int nr, volatile void *addr)
+{
+       test_and_set_bit(nr, addr);
+}
+
+static inline void change_bit(int nr, volatile void * addr)
+{
+       test_and_change_bit(nr, addr);
+}
+
+static inline void __clear_bit(int nr, volatile void * addr)
+{
+       volatile unsigned long *a = addr;
+       int mask;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 31);
+       *a &= ~mask;
+}
+
+static inline void __set_bit(int nr, volatile void * addr)
+{
+       volatile unsigned long *a = addr;
+       int mask;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 31);
+       *a |= mask;
+}
+
+static inline void __change_bit(int nr, volatile void *addr)
+{
+       volatile unsigned long *a = addr;
+       int mask;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 31);
+       *a ^= mask;
+}
+
+static inline int __test_and_clear_bit(int nr, volatile void * addr)
+{
+       volatile unsigned long *a = addr;
+       int mask, retval;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 31);
+       retval = (mask & *a) != 0;
+       *a &= ~mask;
+       return retval;
+}
+
+static inline int __test_and_set_bit(int nr, volatile void * addr)
+{
+       volatile unsigned long *a = addr;
+       int mask, retval;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 31);
+       retval = (mask & *a) != 0;
+       *a |= mask;
+       return retval;
+}
+
+static inline int __test_and_change_bit(int nr, volatile void * addr)
+{
+       volatile unsigned long *a = addr;
+       int mask, retval;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 31);
+       retval = (mask & *a) != 0;
+       *a ^= mask;
+       return retval;
+}
+
+/*
+ * This routine doesn't need to be atomic.
+ */
+static inline int __constant_test_bit(int nr, const volatile void * addr)
+{
+       return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
+}
+
+static inline int __test_bit(int nr, const volatile void * addr)
+{
+       int     * a = (int *) addr;
+       int     mask;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       return ((mask & *a) != 0);
+}
+
+#define test_bit(nr,addr) \
+(__builtin_constant_p(nr) ? \
+ __constant_test_bit((nr),(addr)) : \
+ __test_bit((nr),(addr)))
+
+#include <asm-generic/bitops/find.h>
+
+/**
+ * fls - find last bit set
+ * @x: the word to search
+ *
+ * This is defined the same way as ffs:
+ * - return 32..1 to indicate bit 31..0 most significant bit set
+ * - return 0 to indicate no bits set
+ */
+#define fls(x)                                         \
+({                                                     \
+       int bit;                                        \
+                                                       \
+       asm("   subcc   %1,gr0,gr0,icc0         \n"     \
+           "   ckne    icc0,cc4                \n"     \
+           "   cscan.p %1,gr0,%0       ,cc4,#1 \n"     \
+           "   csub    %0,%0,%0        ,cc4,#0 \n"     \
+           "   csub    %2,%0,%0        ,cc4,#1 \n"     \
+           : "=&r"(bit)                                \
+           : "r"(x), "r"(32)                           \
+           : "icc0", "cc4"                             \
+           );                                          \
+                                                       \
+       bit;                                            \
+})
+
+/**
+ * fls64 - find last bit set in a 64-bit value
+ * @n: the value to search
+ *
+ * This is defined the same way as ffs:
+ * - return 64..1 to indicate bit 63..0 most significant bit set
+ * - return 0 to indicate no bits set
+ */
+static inline __attribute__((const))
+int fls64(u64 n)
+{
+       union {
+               u64 ll;
+               struct { u32 h, l; };
+       } _;
+       int bit, x, y;
+
+       _.ll = n;
+
+       asm("   subcc.p         %3,gr0,gr0,icc0         \n"
+           "   subcc           %4,gr0,gr0,icc1         \n"
+           "   ckne            icc0,cc4                \n"
+           "   ckne            icc1,cc5                \n"
+           "   norcr           cc4,cc5,cc6             \n"
+           "   csub.p          %0,%0,%0        ,cc6,1  \n"
+           "   orcr            cc5,cc4,cc4             \n"
+           "   andcr           cc4,cc5,cc4             \n"
+           "   cscan.p         %3,gr0,%0       ,cc4,0  \n"
+           "   setlos          #64,%1                  \n"
+           "   cscan.p         %4,gr0,%0       ,cc4,1  \n"
+           "   setlos          #32,%2                  \n"
+           "   csub.p          %1,%0,%0        ,cc4,0  \n"
+           "   csub            %2,%0,%0        ,cc4,1  \n"
+           : "=&r"(bit), "=r"(x), "=r"(y)
+           : "0r"(_.h), "r"(_.l)
+           : "icc0", "icc1", "cc4", "cc5", "cc6"
+           );
+       return bit;
+
+}
+
+/**
+ * ffs - find first bit set
+ * @x: the word to search
+ *
+ * - return 32..1 to indicate bit 31..0 most least significant bit set
+ * - return 0 to indicate no bits set
+ */
+static inline __attribute__((const))
+int ffs(int x)
+{
+       /* Note: (x & -x) gives us a mask that is the least significant
+        * (rightmost) 1-bit of the value in x.
+        */
+       return fls(x & -x);
+}
+
+/**
+ * __ffs - find first bit set
+ * @x: the word to search
+ *
+ * - return 31..0 to indicate bit 31..0 most least significant bit set
+ * - if no bits are set in x, the result is undefined
+ */
+static inline __attribute__((const))
+int __ffs(unsigned long x)
+{
+       int bit;
+       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(x & -x));
+       return 31 - bit;
+}
+
+/**
+ * __fls - find last (most-significant) set bit in a long word
+ * @word: the word to search
+ *
+ * Undefined if no set bit exists, so code should check against 0 first.
+ */
+static inline unsigned long __fls(unsigned long word)
+{
+       unsigned long bit;
+       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(word));
+       return bit;
+}
+
+/*
+ * special slimline version of fls() for calculating ilog2_u32()
+ * - note: no protection against n == 0
+ */
+#define ARCH_HAS_ILOG2_U32
+static inline __attribute__((const))
+int __ilog2_u32(u32 n)
+{
+       int bit;
+       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(n));
+       return 31 - bit;
+}
+
+/*
+ * special slimline version of fls64() for calculating ilog2_u64()
+ * - note: no protection against n == 0
+ */
+#define ARCH_HAS_ILOG2_U64
+static inline __attribute__((const))
+int __ilog2_u64(u64 n)
+{
+       union {
+               u64 ll;
+               struct { u32 h, l; };
+       } _;
+       int bit, x, y;
+
+       _.ll = n;
+
+       asm("   subcc           %3,gr0,gr0,icc0         \n"
+           "   ckeq            icc0,cc4                \n"
+           "   cscan.p         %3,gr0,%0       ,cc4,0  \n"
+           "   setlos          #63,%1                  \n"
+           "   cscan.p         %4,gr0,%0       ,cc4,1  \n"
+           "   setlos          #31,%2                  \n"
+           "   csub.p          %1,%0,%0        ,cc4,0  \n"
+           "   csub            %2,%0,%0        ,cc4,1  \n"
+           : "=&r"(bit), "=r"(x), "=r"(y)
+           : "0r"(_.h), "r"(_.l)
+           : "icc0", "cc4"
+           );
+       return bit;
+}
+
+#include <asm-generic/bitops/sched.h>
+#include <asm-generic/bitops/hweight.h>
+#include <asm-generic/bitops/lock.h>
+
+#include <asm-generic/bitops/ext2-non-atomic.h>
+
+#define ext2_set_bit_atomic(lock,nr,addr)      test_and_set_bit  ((nr) ^ 0x18, (addr))
+#define ext2_clear_bit_atomic(lock,nr,addr)    test_and_clear_bit((nr) ^ 0x18, (addr))
+
+#include <asm-generic/bitops/minix-le.h>
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_BITOPS_H */
diff --git a/arch/frv/include/asm/bug.h b/arch/frv/include/asm/bug.h
new file mode 100644 (file)
index 0000000..6b1b44d
--- /dev/null
@@ -0,0 +1,53 @@
+/* bug.h: FRV bug trapping
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_BUG_H
+#define _ASM_BUG_H
+
+#include <linux/linkage.h>
+
+#ifdef CONFIG_BUG
+/*
+ * Tell the user there is some problem.
+ */
+extern asmlinkage void __debug_bug_trap(int signr);
+
+#ifdef CONFIG_NO_KERNEL_MSG
+#define        _debug_bug_printk()
+#else
+extern void __debug_bug_printk(const char *file, unsigned line);
+#define        _debug_bug_printk() __debug_bug_printk(__FILE__, __LINE__)
+#endif
+
+#define _debug_bug_trap(signr)                 \
+do {                                           \
+       __debug_bug_trap(signr);                \
+       asm volatile("nop");                    \
+} while(0)
+
+#define HAVE_ARCH_BUG
+#define BUG()                                  \
+do {                                           \
+       _debug_bug_printk();                    \
+       _debug_bug_trap(6 /*SIGABRT*/);         \
+} while (0)
+
+#ifdef CONFIG_GDBSTUB
+#define HAVE_ARCH_KGDB_RAISE
+#define kgdb_raise(signr) do { _debug_bug_trap(signr); } while(0)
+
+#define HAVE_ARCH_KGDB_BAD_PAGE
+#define kgdb_bad_page(page) do { kgdb_raise(SIGABRT); } while(0)
+#endif
+#endif
+
+#include <asm-generic/bug.h>
+
+#endif
diff --git a/arch/frv/include/asm/bugs.h b/arch/frv/include/asm/bugs.h
new file mode 100644 (file)
index 0000000..f2382be
--- /dev/null
@@ -0,0 +1,14 @@
+/* bugs.h: arch bug checking entry
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+static inline void check_bugs(void)
+{
+}
diff --git a/arch/frv/include/asm/busctl-regs.h b/arch/frv/include/asm/busctl-regs.h
new file mode 100644 (file)
index 0000000..bb0ff48
--- /dev/null
@@ -0,0 +1,41 @@
+/* busctl-regs.h: FR400-series CPU bus controller registers
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_BUSCTL_REGS_H
+#define _ASM_BUSCTL_REGS_H
+
+/* bus controller registers */
+#define __get_LGCR()   ({ *(volatile unsigned long *)(0xfe000010); })
+#define __get_LMAICR() ({ *(volatile unsigned long *)(0xfe000030); })
+#define __get_LEMBR()  ({ *(volatile unsigned long *)(0xfe000040); })
+#define __get_LEMAM()  ({ *(volatile unsigned long *)(0xfe000048); })
+#define __get_LCR(R)   ({ *(volatile unsigned long *)(0xfe000100 + 8*(R)); })
+#define __get_LSBR(R)  ({ *(volatile unsigned long *)(0xfe000c00 + 8*(R)); })
+#define __get_LSAM(R)  ({ *(volatile unsigned long *)(0xfe000d00 + 8*(R)); })
+
+#define __set_LGCR(V)  do { *(volatile unsigned long *)(0xfe000010) = (V); } while(0)
+#define __set_LMAICR(V)        do { *(volatile unsigned long *)(0xfe000030) = (V); } while(0)
+#define __set_LEMBR(V) do { *(volatile unsigned long *)(0xfe000040) = (V); } while(0)
+#define __set_LEMAM(V) do { *(volatile unsigned long *)(0xfe000048) = (V); } while(0)
+#define __set_LCR(R,V) do { *(volatile unsigned long *)(0xfe000100 + 8*(R)) = (V); } while(0)
+#define __set_LSBR(R,V)        do { *(volatile unsigned long *)(0xfe000c00 + 8*(R)) = (V); } while(0)
+#define __set_LSAM(R,V)        do { *(volatile unsigned long *)(0xfe000d00 + 8*(R)) = (V); } while(0)
+
+/* FR401 SDRAM controller registers */
+#define __get_DBR(R)   ({ *(volatile unsigned long *)(0xfe000e00 + 8*(R)); })
+#define __get_DAM(R)   ({ *(volatile unsigned long *)(0xfe000f00 + 8*(R)); })
+
+/* FR551 SDRAM controller registers */
+#define __get_DARS(R)  ({ *(volatile unsigned long *)(0xfeff0100 + 8*(R)); })
+#define __get_DAMK(R)  ({ *(volatile unsigned long *)(0xfeff0110 + 8*(R)); })
+
+
+#endif /* _ASM_BUSCTL_REGS_H */
diff --git a/arch/frv/include/asm/byteorder.h b/arch/frv/include/asm/byteorder.h
new file mode 100644 (file)
index 0000000..f29b759
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_BYTEORDER_H
+#define _ASM_BYTEORDER_H
+
+#include <linux/byteorder/big_endian.h>
+
+#endif /* _ASM_BYTEORDER_H */
diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h
new file mode 100644 (file)
index 0000000..2797163
--- /dev/null
@@ -0,0 +1,23 @@
+/* cache.h: FRV cache definitions
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef __ASM_CACHE_H
+#define __ASM_CACHE_H
+
+
+/* bytes per L1 cache line */
+#define L1_CACHE_SHIFT         (CONFIG_FRV_L1_CACHE_SHIFT)
+#define L1_CACHE_BYTES         (1 << L1_CACHE_SHIFT)
+
+#define __cacheline_aligned    __attribute__((aligned(L1_CACHE_BYTES)))
+#define ____cacheline_aligned  __attribute__((aligned(L1_CACHE_BYTES)))
+
+#endif
diff --git a/arch/frv/include/asm/cacheflush.h b/arch/frv/include/asm/cacheflush.h
new file mode 100644 (file)
index 0000000..432a69e
--- /dev/null
@@ -0,0 +1,104 @@
+/* cacheflush.h: FRV cache flushing routines
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_CACHEFLUSH_H
+#define _ASM_CACHEFLUSH_H
+
+/* Keep includes the same across arches.  */
+#include <linux/mm.h>
+
+/*
+ * virtually-indexed cache management (our cache is physically indexed)
+ */
+#define flush_cache_all()                      do {} while(0)
+#define flush_cache_mm(mm)                     do {} while(0)
+#define flush_cache_dup_mm(mm)                 do {} while(0)
+#define flush_cache_range(mm, start, end)      do {} while(0)
+#define flush_cache_page(vma, vmaddr, pfn)     do {} while(0)
+#define flush_cache_vmap(start, end)           do {} while(0)
+#define flush_cache_vunmap(start, end)         do {} while(0)
+#define flush_dcache_mmap_lock(mapping)                do {} while(0)
+#define flush_dcache_mmap_unlock(mapping)      do {} while(0)
+
+/*
+ * physically-indexed cache management
+ * - see arch/frv/lib/cache.S
+ */
+extern void frv_dcache_writeback(unsigned long start, unsigned long size);
+extern void frv_cache_invalidate(unsigned long start, unsigned long size);
+extern void frv_icache_invalidate(unsigned long start, unsigned long size);
+extern void frv_cache_wback_inv(unsigned long start, unsigned long size);
+
+static inline void __flush_cache_all(void)
+{
+       asm volatile("  dcef    @(gr0,gr0),#1   \n"
+                    "  icei    @(gr0,gr0),#1   \n"
+                    "  membar                  \n"
+                    : : : "memory"
+                    );
+}
+
+/* dcache/icache coherency... */
+#ifdef CONFIG_MMU
+extern void flush_dcache_page(struct page *page);
+#else
+static inline void flush_dcache_page(struct page *page)
+{
+       unsigned long addr = page_to_phys(page);
+       frv_dcache_writeback(addr, addr + PAGE_SIZE);
+}
+#endif
+
+static inline void flush_page_to_ram(struct page *page)
+{
+       flush_dcache_page(page);
+}
+
+static inline void flush_icache(void)
+{
+       __flush_cache_all();
+}
+
+static inline void flush_icache_range(unsigned long start, unsigned long end)
+{
+       frv_cache_wback_inv(start, end);
+}
+
+#ifdef CONFIG_MMU
+extern void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
+                                   unsigned long start, unsigned long len);
+#else
+static inline void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
+                                          unsigned long start, unsigned long len)
+{
+       frv_cache_wback_inv(start, start + len);
+}
+#endif
+
+static inline void flush_icache_page(struct vm_area_struct *vma, struct page *page)
+{
+       flush_icache_user_range(vma, page, page_to_phys(page), PAGE_SIZE);
+}
+
+/*
+ * permit ptrace to access another process's address space through the icache
+ * and the dcache
+ */
+#define copy_to_user_page(vma, page, vaddr, dst, src, len)     \
+do {                                                           \
+       memcpy((dst), (src), (len));                            \
+       flush_icache_user_range((vma), (page), (vaddr), (len)); \
+} while(0)
+
+#define copy_from_user_page(vma, page, vaddr, dst, src, len)   \
+       memcpy((dst), (src), (len))
+
+#endif /* _ASM_CACHEFLUSH_H */
diff --git a/arch/frv/include/asm/checksum.h b/arch/frv/include/asm/checksum.h
new file mode 100644 (file)
index 0000000..269da09
--- /dev/null
@@ -0,0 +1,180 @@
+/* checksum.h: FRV checksumming
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_CHECKSUM_H
+#define _ASM_CHECKSUM_H
+
+#include <linux/in6.h>
+
+/*
+ * computes the checksum of a memory block at buff, length len,
+ * and adds in "sum" (32-bit)
+ *
+ * returns a 32-bit number suitable for feeding into itself
+ * or csum_tcpudp_magic
+ *
+ * this function must be called with even lengths, except
+ * for the last fragment, which may be odd
+ *
+ * it's best to have buff aligned on a 32-bit boundary
+ */
+__wsum csum_partial(const void *buff, int len, __wsum sum);
+
+/*
+ * the same as csum_partial, but copies from src while it
+ * checksums
+ *
+ * here even more important to align src and dst on a 32-bit (or even
+ * better 64-bit) boundary
+ */
+__wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum);
+
+/*
+ * the same as csum_partial_copy, but copies from user space.
+ *
+ * here even more important to align src and dst on a 32-bit (or even
+ * better 64-bit) boundary
+ */
+extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
+                                               int len, __wsum sum, int *csum_err);
+
+/*
+ *     This is a version of ip_compute_csum() optimized for IP headers,
+ *     which always checksum on 4 octet boundaries.
+ *
+ */
+static inline
+__sum16 ip_fast_csum(const void *iph, unsigned int ihl)
+{
+       unsigned int tmp, inc, sum = 0;
+
+       asm("   addcc           gr0,gr0,gr0,icc0\n" /* clear icc0.C */
+           "   subi            %1,#4,%1        \n"
+           "0:                                 \n"
+           "   ldu.p           @(%1,%3),%4     \n"
+           "   subicc          %2,#1,%2,icc1   \n"
+           "   addxcc.p        %4,%0,%0,icc0   \n"
+           "   bhi             icc1,#2,0b      \n"
+
+           /* fold the 33-bit result into 16-bits */
+           "   addxcc          gr0,%0,%0,icc0  \n"
+           "   srli            %0,#16,%1       \n"
+           "   sethi           #0,%0           \n"
+           "   add             %1,%0,%0        \n"
+           "   srli            %0,#16,%1       \n"
+           "   add             %1,%0,%0        \n"
+
+           : "=r" (sum), "=r" (iph), "=r" (ihl), "=r" (inc), "=&r"(tmp)
+           : "0" (sum), "1" (iph), "2" (ihl), "3" (4),
+           "m"(*(volatile struct { int _[100]; } *)iph)
+           : "icc0", "icc1", "memory"
+           );
+
+       return (__force __sum16)~sum;
+}
+
+/*
+ *     Fold a partial checksum
+ */
+static inline __sum16 csum_fold(__wsum sum)
+{
+       unsigned int tmp;
+
+       asm("   srli            %0,#16,%1       \n"
+           "   sethi           #0,%0           \n"
+           "   add             %1,%0,%0        \n"
+           "   srli            %0,#16,%1       \n"
+           "   add             %1,%0,%0        \n"
+           : "=r"(sum), "=&r"(tmp)
+           : "0"(sum)
+           );
+
+       return (__force __sum16)~sum;
+}
+
+/*
+ * computes the checksum of the TCP/UDP pseudo-header
+ * returns a 16-bit checksum, already complemented
+ */
+static inline __wsum
+csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
+                 unsigned short proto, __wsum sum)
+{
+       asm("   addcc           %1,%0,%0,icc0   \n"
+           "   addxcc          %2,%0,%0,icc0   \n"
+           "   addxcc          %3,%0,%0,icc0   \n"
+           "   addxcc          gr0,%0,%0,icc0  \n"
+           : "=r" (sum)
+           : "r" (daddr), "r" (saddr), "r" (len + proto), "0"(sum)
+           : "icc0"
+           );
+       return sum;
+}
+
+static inline __sum16
+csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
+                 unsigned short proto, __wsum sum)
+{
+       return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum));
+}
+
+/*
+ * this routine is used for miscellaneous IP-like checksums, mainly
+ * in icmp.c
+ */
+extern __sum16 ip_compute_csum(const void *buff, int len);
+
+#define _HAVE_ARCH_IPV6_CSUM
+static inline __sum16
+csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
+               __u32 len, unsigned short proto, __wsum sum)
+{
+       unsigned long tmp, tmp2;
+
+       asm("   addcc           %2,%0,%0,icc0   \n"
+
+           /* add up the source addr */
+           "   ldi             @(%3,0),%1      \n"
+           "   addxcc          %1,%0,%0,icc0   \n"
+           "   ldi             @(%3,4),%2      \n"
+           "   addxcc          %2,%0,%0,icc0   \n"
+           "   ldi             @(%3,8),%1      \n"
+           "   addxcc          %1,%0,%0,icc0   \n"
+           "   ldi             @(%3,12),%2     \n"
+           "   addxcc          %2,%0,%0,icc0   \n"
+
+           /* add up the dest addr */
+           "   ldi             @(%4,0),%1      \n"
+           "   addxcc          %1,%0,%0,icc0   \n"
+           "   ldi             @(%4,4),%2      \n"
+           "   addxcc          %2,%0,%0,icc0   \n"
+           "   ldi             @(%4,8),%1      \n"
+           "   addxcc          %1,%0,%0,icc0   \n"
+           "   ldi             @(%4,12),%2     \n"
+           "   addxcc          %2,%0,%0,icc0   \n"
+
+           /* fold the 33-bit result into 16-bits */
+           "   addxcc          gr0,%0,%0,icc0  \n"
+           "   srli            %0,#16,%1       \n"
+           "   sethi           #0,%0           \n"
+           "   add             %1,%0,%0        \n"
+           "   srli            %0,#16,%1       \n"
+           "   add             %1,%0,%0        \n"
+
+           : "=r" (sum), "=&r" (tmp), "=r" (tmp2)
+           : "r" (saddr), "r" (daddr), "0" (sum), "2" (len + proto)
+           : "icc0"
+           );
+
+       return (__force __sum16)~sum;
+}
+
+#endif /* _ASM_CHECKSUM_H */
diff --git a/arch/frv/include/asm/cpu-irqs.h b/arch/frv/include/asm/cpu-irqs.h
new file mode 100644 (file)
index 0000000..478f349
--- /dev/null
@@ -0,0 +1,81 @@
+/* cpu-irqs.h: on-CPU peripheral irqs
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_CPU_IRQS_H
+#define _ASM_CPU_IRQS_H
+
+#ifndef __ASSEMBLY__
+
+/* IRQ to level mappings */
+#define IRQ_GDBSTUB_LEVEL      15
+#define IRQ_UART_LEVEL         13
+
+#ifdef CONFIG_GDBSTUB_UART0
+#define IRQ_UART0_LEVEL                IRQ_GDBSTUB_LEVEL
+#else
+#define IRQ_UART0_LEVEL                IRQ_UART_LEVEL
+#endif
+
+#ifdef CONFIG_GDBSTUB_UART1
+#define IRQ_UART1_LEVEL                IRQ_GDBSTUB_LEVEL
+#else
+#define IRQ_UART1_LEVEL                IRQ_UART_LEVEL
+#endif
+
+#define IRQ_DMA0_LEVEL         14
+#define IRQ_DMA1_LEVEL         14
+#define IRQ_DMA2_LEVEL         14
+#define IRQ_DMA3_LEVEL         14
+#define IRQ_DMA4_LEVEL         14
+#define IRQ_DMA5_LEVEL         14
+#define IRQ_DMA6_LEVEL         14
+#define IRQ_DMA7_LEVEL         14
+
+#define IRQ_TIMER0_LEVEL       12
+#define IRQ_TIMER1_LEVEL       11
+#define IRQ_TIMER2_LEVEL       10
+
+#define IRQ_XIRQ0_LEVEL                1
+#define IRQ_XIRQ1_LEVEL                2
+#define IRQ_XIRQ2_LEVEL                3
+#define IRQ_XIRQ3_LEVEL                4
+#define IRQ_XIRQ4_LEVEL                5
+#define IRQ_XIRQ5_LEVEL                6
+#define IRQ_XIRQ6_LEVEL                7
+#define IRQ_XIRQ7_LEVEL                8
+
+/* IRQ IDs presented to drivers */
+#define IRQ_CPU__UNUSED                IRQ_BASE_CPU
+#define IRQ_CPU_UART0          (IRQ_BASE_CPU + IRQ_UART0_LEVEL)
+#define IRQ_CPU_UART1          (IRQ_BASE_CPU + IRQ_UART1_LEVEL)
+#define IRQ_CPU_TIMER0         (IRQ_BASE_CPU + IRQ_TIMER0_LEVEL)
+#define IRQ_CPU_TIMER1         (IRQ_BASE_CPU + IRQ_TIMER1_LEVEL)
+#define IRQ_CPU_TIMER2         (IRQ_BASE_CPU + IRQ_TIMER2_LEVEL)
+#define IRQ_CPU_DMA0           (IRQ_BASE_CPU + IRQ_DMA0_LEVEL)
+#define IRQ_CPU_DMA1           (IRQ_BASE_CPU + IRQ_DMA1_LEVEL)
+#define IRQ_CPU_DMA2           (IRQ_BASE_CPU + IRQ_DMA2_LEVEL)
+#define IRQ_CPU_DMA3           (IRQ_BASE_CPU + IRQ_DMA3_LEVEL)
+#define IRQ_CPU_DMA4           (IRQ_BASE_CPU + IRQ_DMA4_LEVEL)
+#define IRQ_CPU_DMA5           (IRQ_BASE_CPU + IRQ_DMA5_LEVEL)
+#define IRQ_CPU_DMA6           (IRQ_BASE_CPU + IRQ_DMA6_LEVEL)
+#define IRQ_CPU_DMA7           (IRQ_BASE_CPU + IRQ_DMA7_LEVEL)
+#define IRQ_CPU_EXTERNAL0      (IRQ_BASE_CPU + IRQ_XIRQ0_LEVEL)
+#define IRQ_CPU_EXTERNAL1      (IRQ_BASE_CPU + IRQ_XIRQ1_LEVEL)
+#define IRQ_CPU_EXTERNAL2      (IRQ_BASE_CPU + IRQ_XIRQ2_LEVEL)
+#define IRQ_CPU_EXTERNAL3      (IRQ_BASE_CPU + IRQ_XIRQ3_LEVEL)
+#define IRQ_CPU_EXTERNAL4      (IRQ_BASE_CPU + IRQ_XIRQ4_LEVEL)
+#define IRQ_CPU_EXTERNAL5      (IRQ_BASE_CPU + IRQ_XIRQ5_LEVEL)
+#define IRQ_CPU_EXTERNAL6      (IRQ_BASE_CPU + IRQ_XIRQ6_LEVEL)
+#define IRQ_CPU_EXTERNAL7      (IRQ_BASE_CPU + IRQ_XIRQ7_LEVEL)
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_CPU_IRQS_H */
diff --git a/arch/frv/include/asm/cpumask.h b/arch/frv/include/asm/cpumask.h
new file mode 100644 (file)
index 0000000..d999c20
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_CPUMASK_H
+#define _ASM_CPUMASK_H
+
+#include <asm-generic/cpumask.h>
+
+#endif /* _ASM_CPUMASK_H */
diff --git a/arch/frv/include/asm/cputime.h b/arch/frv/include/asm/cputime.h
new file mode 100644 (file)
index 0000000..f6c373a
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_CPUTIME_H
+#define _ASM_CPUTIME_H
+
+#include <asm-generic/cputime.h>
+
+#endif /* _ASM_CPUTIME_H */
diff --git a/arch/frv/include/asm/current.h b/arch/frv/include/asm/current.h
new file mode 100644 (file)
index 0000000..86b0274
--- /dev/null
@@ -0,0 +1,30 @@
+/* current.h: FRV current task pointer
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_CURRENT_H
+#define _ASM_CURRENT_H
+
+#ifndef __ASSEMBLY__
+
+/*
+ * dedicate GR29 to keeping the current task pointer
+ */
+register struct task_struct *current asm("gr29");
+
+#define get_current() current
+
+#else
+
+#define CURRENT gr29
+
+#endif
+
+#endif /* _ASM_CURRENT_H */
diff --git a/arch/frv/include/asm/delay.h b/arch/frv/include/asm/delay.h
new file mode 100644 (file)
index 0000000..597b4eb
--- /dev/null
@@ -0,0 +1,50 @@
+/* delay.h: FRV delay code
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_DELAY_H
+#define _ASM_DELAY_H
+
+#include <asm/param.h>
+#include <asm/timer-regs.h>
+
+/*
+ * delay loop - runs at __core_clock_speed_HZ / 2 [there are 2 insns in the loop]
+ */
+extern unsigned long __delay_loops_MHz;
+
+static inline void __delay(unsigned long loops)
+{
+       asm volatile("1:        subicc  %0,#1,%0,icc0   \n"
+                    "          bnc     icc0,#2,1b      \n"
+                    : "=r" (loops)
+                    : "0" (loops)
+                    : "icc0"
+                    );
+}
+
+/*
+ * Use only for very small delays ( < 1 msec).  Should probably use a
+ * lookup table, really, as the multiplications take much too long with
+ * short delays.  This is a "reasonable" implementation, though (and the
+ * first constant multiplications gets optimized away if the delay is
+ * a constant)
+ */
+
+extern unsigned long loops_per_jiffy;
+
+static inline void udelay(unsigned long usecs)
+{
+       __delay(usecs * __delay_loops_MHz);
+}
+
+#define ndelay(n)      udelay((n) * 5)
+
+#endif /* _ASM_DELAY_H */
diff --git a/arch/frv/include/asm/device.h b/arch/frv/include/asm/device.h
new file mode 100644 (file)
index 0000000..d8f9872
--- /dev/null
@@ -0,0 +1,7 @@
+/*
+ * Arch specific extensions to struct device
+ *
+ * This file is released under the GPLv2
+ */
+#include <asm-generic/device.h>
+
diff --git a/arch/frv/include/asm/div64.h b/arch/frv/include/asm/div64.h
new file mode 100644 (file)
index 0000000..6cd978c
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/div64.h>
diff --git a/arch/frv/include/asm/dm9000.h b/arch/frv/include/asm/dm9000.h
new file mode 100644 (file)
index 0000000..f6f48fd
--- /dev/null
@@ -0,0 +1,37 @@
+/* dm9000.h: Davicom DM9000 adapter configuration
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_DM9000_H
+#define _ASM_DM9000_H
+
+#include <asm/mb-regs.h>
+
+#define DM9000_ARCH_IOBASE     (__region_CS6 + 0x300)
+#define DM9000_ARCH_IRQ                IRQ_CPU_EXTERNAL3       /* XIRQ #3 (shared with FPGA) */
+#undef DM9000_ARCH_IRQ_ACTLOW                          /* IRQ pin active high */
+#define DM9000_ARCH_BUS_INFO   "CS6#+0x300"            /* bus info for ethtool */
+
+#undef __is_PCI_IO
+#define __is_PCI_IO(addr)      0       /* not PCI */
+
+#undef inl
+#define inl(addr)                                                                              \
+({                                                                                             \
+       unsigned long __ioaddr = (unsigned long) addr;                                          \
+       uint32_t x = readl(__ioaddr);                                                           \
+       ((x & 0xff) << 24) | ((x & 0xff00) << 8) | ((x >> 8) & 0xff00) | ((x >> 24) & 0xff);    \
+})
+
+#undef insl
+#define insl(a,b,l)    __insl(a,b,l,0) /* don't byte-swap */
+
+
+#endif /* _ASM_DM9000_H */
diff --git a/arch/frv/include/asm/dma-mapping.h b/arch/frv/include/asm/dma-mapping.h
new file mode 100644 (file)
index 0000000..b289887
--- /dev/null
@@ -0,0 +1,174 @@
+#ifndef _ASM_DMA_MAPPING_H
+#define _ASM_DMA_MAPPING_H
+
+#include <linux/device.h>
+#include <asm/cache.h>
+#include <asm/cacheflush.h>
+#include <asm/scatterlist.h>
+#include <asm/io.h>
+
+#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
+#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
+
+extern unsigned long __nongprelbss dma_coherent_mem_start;
+extern unsigned long __nongprelbss dma_coherent_mem_end;
+
+void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp);
+void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle);
+
+/*
+ * Map a single buffer of the indicated size for DMA in streaming mode.
+ * The 32-bit bus address to use is returned.
+ *
+ * Once the device is given the dma address, the device owns this memory
+ * until either pci_unmap_single or pci_dma_sync_single is performed.
+ */
+extern dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
+                                enum dma_data_direction direction);
+
+/*
+ * Unmap a single streaming mode DMA translation.  The dma_addr and size
+ * must match what was provided for in a previous pci_map_single call.  All
+ * other usages are undefined.
+ *
+ * After this call, reads by the cpu to the buffer are guarenteed to see
+ * whatever the device wrote there.
+ */
+static inline
+void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
+                     enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+}
+
+/*
+ * Map a set of buffers described by scatterlist in streaming
+ * mode for DMA.  This is the scather-gather version of the
+ * above pci_map_single interface.  Here the scatter gather list
+ * elements are each tagged with the appropriate dma address
+ * and length.  They are obtained via sg_dma_{address,length}(SG).
+ *
+ * NOTE: An implementation may be able to use a smaller number of
+ *       DMA address/length pairs than there are SG table elements.
+ *       (for example via virtual mapping capabilities)
+ *       The routine returns the number of addr/length pairs actually
+ *       used, at most nents.
+ *
+ * Device ownership issues as mentioned above for pci_map_single are
+ * the same here.
+ */
+extern int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
+                     enum dma_data_direction direction);
+
+/*
+ * Unmap a set of streaming mode DMA translations.
+ * Again, cpu read rules concerning calls here are the same as for
+ * pci_unmap_single() above.
+ */
+static inline
+void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
+            enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+}
+
+extern
+dma_addr_t dma_map_page(struct device *dev, struct page *page, unsigned long offset,
+                       size_t size, enum dma_data_direction direction);
+
+static inline
+void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
+                   enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+}
+
+
+static inline
+void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
+                            enum dma_data_direction direction)
+{
+}
+
+static inline
+void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size,
+                               enum dma_data_direction direction)
+{
+       flush_write_buffers();
+}
+
+static inline
+void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle,
+                                  unsigned long offset, size_t size,
+                                  enum dma_data_direction direction)
+{
+}
+
+static inline
+void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle,
+                                     unsigned long offset, size_t size,
+                                     enum dma_data_direction direction)
+{
+       flush_write_buffers();
+}
+
+static inline
+void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
+                        enum dma_data_direction direction)
+{
+}
+
+static inline
+void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
+                           enum dma_data_direction direction)
+{
+       flush_write_buffers();
+}
+
+static inline
+int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
+{
+       return 0;
+}
+
+static inline
+int dma_supported(struct device *dev, u64 mask)
+{
+        /*
+         * we fall back to GFP_DMA when the mask isn't all 1s,
+         * so we can't guarantee allocations that must be
+         * within a tighter range than GFP_DMA..
+         */
+        if (mask < 0x00ffffff)
+                return 0;
+
+       return 1;
+}
+
+static inline
+int dma_set_mask(struct device *dev, u64 mask)
+{
+       if (!dev->dma_mask || !dma_supported(dev, mask))
+               return -EIO;
+
+       *dev->dma_mask = mask;
+
+       return 0;
+}
+
+static inline
+int dma_get_cache_alignment(void)
+{
+       return 1 << L1_CACHE_SHIFT;
+}
+
+#define dma_is_consistent(d, h)        (1)
+
+static inline
+void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
+                   enum dma_data_direction direction)
+{
+       flush_write_buffers();
+}
+
+#endif  /* _ASM_DMA_MAPPING_H */
diff --git a/arch/frv/include/asm/dma.h b/arch/frv/include/asm/dma.h
new file mode 100644 (file)
index 0000000..683c47d
--- /dev/null
@@ -0,0 +1,125 @@
+/* dma.h: FRV DMA controller management
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_DMA_H
+#define _ASM_DMA_H
+
+//#define DMA_DEBUG 1
+
+#include <linux/interrupt.h>
+
+#undef MAX_DMA_CHANNELS                /* don't use kernel/dma.c */
+
+/* under 2.4 this is actually needed by the new bootmem allocator */
+#define MAX_DMA_ADDRESS                PAGE_OFFSET
+
+/*
+ * FRV DMA controller management
+ */
+typedef irqreturn_t (*dma_irq_handler_t)(int dmachan, unsigned long cstr, void *data);
+
+extern void frv_dma_init(void);
+
+extern int frv_dma_open(const char *devname,
+                       unsigned long dmamask,
+                       int dmacap,
+                       dma_irq_handler_t handler,
+                       unsigned long irq_flags,
+                       void *data);
+
+/* channels required */
+#define FRV_DMA_MASK_ANY       ULONG_MAX       /* any channel */
+
+/* capabilities required */
+#define FRV_DMA_CAP_DREQ       0x01            /* DMA request pin */
+#define FRV_DMA_CAP_DACK       0x02            /* DMA ACK pin */
+#define FRV_DMA_CAP_DONE       0x04            /* DMA done pin */
+
+extern void frv_dma_close(int dma);
+
+extern void frv_dma_config(int dma, unsigned long ccfr, unsigned long cctr, unsigned long apr);
+
+extern void frv_dma_start(int dma,
+                         unsigned long sba, unsigned long dba,
+                         unsigned long pix, unsigned long six, unsigned long bcl);
+
+extern void frv_dma_restart_circular(int dma, unsigned long six);
+
+extern void frv_dma_stop(int dma);
+
+extern int is_frv_dma_interrupting(int dma);
+
+extern void frv_dma_dump(int dma);
+
+extern void frv_dma_status_clear(int dma);
+
+#define FRV_DMA_NCHANS 8
+#define FRV_DMA_4CHANS 4
+#define FRV_DMA_8CHANS 8
+
+#define DMAC_CCFRx             0x00    /* channel configuration reg */
+#define DMAC_CCFRx_CM_SHIFT    16
+#define DMAC_CCFRx_CM_DA       0x00000000
+#define DMAC_CCFRx_CM_SCA      0x00010000
+#define DMAC_CCFRx_CM_DCA      0x00020000
+#define DMAC_CCFRx_CM_2D       0x00030000
+#define DMAC_CCFRx_ATS_SHIFT   8
+#define DMAC_CCFRx_RS_INTERN   0x00000000
+#define DMAC_CCFRx_RS_EXTERN   0x00000001
+#define DMAC_CCFRx_RS_SHIFT    0
+
+#define DMAC_CSTRx             0x08    /* channel status reg */
+#define DMAC_CSTRx_FS          0x0000003f
+#define DMAC_CSTRx_NE          0x00000100
+#define DMAC_CSTRx_FED         0x00000200
+#define DMAC_CSTRx_WER         0x00000800
+#define DMAC_CSTRx_RER         0x00001000
+#define DMAC_CSTRx_CE          0x00002000
+#define DMAC_CSTRx_INT         0x00800000
+#define DMAC_CSTRx_BUSY                0x80000000
+
+#define DMAC_CCTRx             0x10    /* channel control reg */
+#define DMAC_CCTRx_DSIZ_1      0x00000000
+#define DMAC_CCTRx_DSIZ_2      0x00000001
+#define DMAC_CCTRx_DSIZ_4      0x00000002
+#define DMAC_CCTRx_DSIZ_32     0x00000005
+#define DMAC_CCTRx_DAU_HOLD    0x00000000
+#define DMAC_CCTRx_DAU_INC     0x00000010
+#define DMAC_CCTRx_DAU_DEC     0x00000020
+#define DMAC_CCTRx_SSIZ_1      0x00000000
+#define DMAC_CCTRx_SSIZ_2      0x00000100
+#define DMAC_CCTRx_SSIZ_4      0x00000200
+#define DMAC_CCTRx_SSIZ_32     0x00000500
+#define DMAC_CCTRx_SAU_HOLD    0x00000000
+#define DMAC_CCTRx_SAU_INC     0x00001000
+#define DMAC_CCTRx_SAU_DEC     0x00002000
+#define DMAC_CCTRx_FC          0x08000000
+#define DMAC_CCTRx_ICE         0x10000000
+#define DMAC_CCTRx_IE          0x40000000
+#define DMAC_CCTRx_ACT         0x80000000
+
+#define DMAC_SBAx              0x18    /* source base address reg */
+#define DMAC_DBAx              0x20    /* data base address reg */
+#define DMAC_PIXx              0x28    /* primary index reg */
+#define DMAC_SIXx              0x30    /* secondary index reg */
+#define DMAC_BCLx              0x38    /* byte count limit reg */
+#define DMAC_APRx              0x40    /* alternate pointer reg */
+
+/*
+ * required for PCI + MODULES
+ */
+#ifdef CONFIG_PCI
+extern int isa_dma_bridge_buggy;
+#else
+#define isa_dma_bridge_buggy   (0)
+#endif
+
+#endif /* _ASM_DMA_H */
diff --git a/arch/frv/include/asm/elf.h b/arch/frv/include/asm/elf.h
new file mode 100644 (file)
index 0000000..7279ec0
--- /dev/null
@@ -0,0 +1,142 @@
+/* elf.h: FR-V ELF definitions
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-m68knommu/elf.h
+ *
+ * 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.
+ */
+#ifndef __ASM_ELF_H
+#define __ASM_ELF_H
+
+#include <asm/ptrace.h>
+#include <asm/user.h>
+
+struct elf32_hdr;
+
+/*
+ * ELF header e_flags defines.
+ */
+#define EF_FRV_GPR_MASK         0x00000003 /* mask for # of gprs */
+#define EF_FRV_GPR32           0x00000001 /* Only uses GR on 32-register */
+#define EF_FRV_GPR64           0x00000002 /* Only uses GR on 64-register */
+#define EF_FRV_FPR_MASK         0x0000000c /* mask for # of fprs */
+#define EF_FRV_FPR32           0x00000004 /* Only uses FR on 32-register */
+#define EF_FRV_FPR64           0x00000008 /* Only uses FR on 64-register */
+#define EF_FRV_FPR_NONE                0x0000000C /* Uses software floating-point */
+#define EF_FRV_DWORD_MASK       0x00000030 /* mask for dword support */
+#define EF_FRV_DWORD_YES       0x00000010 /* Assumes stack aligned to 8-byte boundaries. */
+#define EF_FRV_DWORD_NO                0x00000020 /* Assumes stack aligned to 4-byte boundaries. */
+#define EF_FRV_DOUBLE          0x00000040 /* Uses double instructions. */
+#define EF_FRV_MEDIA           0x00000080 /* Uses media instructions. */
+#define EF_FRV_PIC             0x00000100 /* Uses position independent code. */
+#define EF_FRV_NON_PIC_RELOCS  0x00000200 /* Does not use position Independent code. */
+#define EF_FRV_MULADD           0x00000400 /* -mmuladd */
+#define EF_FRV_BIGPIC           0x00000800 /* -fPIC */
+#define EF_FRV_LIBPIC           0x00001000 /* -mlibrary-pic */
+#define EF_FRV_G0               0x00002000 /* -G 0, no small data ptr */
+#define EF_FRV_NOPACK           0x00004000 /* -mnopack */
+#define EF_FRV_FDPIC            0x00008000 /* -mfdpic */
+#define EF_FRV_CPU_MASK         0xff000000 /* specific cpu bits */
+#define EF_FRV_CPU_GENERIC     0x00000000 /* Set CPU type is FR-V */
+#define EF_FRV_CPU_FR500       0x01000000 /* Set CPU type is FR500 */
+#define EF_FRV_CPU_FR300       0x02000000 /* Set CPU type is FR300 */
+#define EF_FRV_CPU_SIMPLE       0x03000000 /* SIMPLE */
+#define EF_FRV_CPU_TOMCAT       0x04000000 /* Tomcat, FR500 prototype */
+#define EF_FRV_CPU_FR400       0x05000000 /* Set CPU type is FR400 */
+#define EF_FRV_CPU_FR550        0x06000000 /* Set CPU type is FR550 */
+#define EF_FRV_CPU_FR405       0x07000000 /* Set CPU type is FR405 */
+#define EF_FRV_CPU_FR450       0x08000000 /* Set CPU type is FR450 */
+
+/*
+ * FR-V ELF relocation types
+ */
+
+
+/*
+ * ELF register definitions..
+ */
+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 user_fpmedia_regs elf_fpregset_t;
+
+/*
+ * This is used to ensure we don't load something for the wrong architecture.
+ */
+extern int elf_check_arch(const struct elf32_hdr *hdr);
+
+#define elf_check_fdpic(x) ((x)->e_flags & EF_FRV_FDPIC && !((x)->e_flags & EF_FRV_NON_PIC_RELOCS))
+#define elf_check_const_displacement(x) ((x)->e_flags & EF_FRV_PIC)
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_CLASS      ELFCLASS32
+#define ELF_DATA       ELFDATA2MSB
+#define ELF_ARCH       EM_FRV
+
+#define ELF_PLAT_INIT(_r)                      \
+do {                                           \
+       __kernel_frame0_ptr->gr16       = 0;    \
+       __kernel_frame0_ptr->gr17       = 0;    \
+       __kernel_frame0_ptr->gr18       = 0;    \
+       __kernel_frame0_ptr->gr19       = 0;    \
+       __kernel_frame0_ptr->gr20       = 0;    \
+       __kernel_frame0_ptr->gr21       = 0;    \
+       __kernel_frame0_ptr->gr22       = 0;    \
+       __kernel_frame0_ptr->gr23       = 0;    \
+       __kernel_frame0_ptr->gr24       = 0;    \
+       __kernel_frame0_ptr->gr25       = 0;    \
+       __kernel_frame0_ptr->gr26       = 0;    \
+       __kernel_frame0_ptr->gr27       = 0;    \
+       __kernel_frame0_ptr->gr29       = 0;    \
+} while(0)
+
+#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, _dynamic_addr)    \
+do {                                                                                   \
+       __kernel_frame0_ptr->gr16       = _exec_map_addr;                               \
+       __kernel_frame0_ptr->gr17       = _interp_map_addr;                             \
+       __kernel_frame0_ptr->gr18       = _dynamic_addr;                                \
+       __kernel_frame0_ptr->gr19       = 0;                                            \
+       __kernel_frame0_ptr->gr20       = 0;                                            \
+       __kernel_frame0_ptr->gr21       = 0;                                            \
+       __kernel_frame0_ptr->gr22       = 0;                                            \
+       __kernel_frame0_ptr->gr23       = 0;                                            \
+       __kernel_frame0_ptr->gr24       = 0;                                            \
+       __kernel_frame0_ptr->gr25       = 0;                                            \
+       __kernel_frame0_ptr->gr26       = 0;                                            \
+       __kernel_frame0_ptr->gr27       = 0;                                            \
+       __kernel_frame0_ptr->gr29       = 0;                                            \
+} while(0)
+
+#define USE_ELF_CORE_DUMP
+#define ELF_FDPIC_CORE_EFLAGS  EF_FRV_FDPIC
+#define ELF_EXEC_PAGESIZE      16384
+
+/* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
+   use of this is to invoke "./ld.so someprog" to test out a new version of
+   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         0x08000000UL
+
+/* This yields a mask that user programs can use to figure out what
+   instruction set this cpu supports.  */
+
+#define ELF_HWCAP      (0)
+
+/* This yields a string that ld.so will use to load implementation
+   specific libraries for optimization.  This is more specific in
+   intent than poking at uname or /proc/cpuinfo.  */
+
+#define ELF_PLATFORM  (NULL)
+
+#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
+
+#endif
diff --git a/arch/frv/include/asm/emergency-restart.h b/arch/frv/include/asm/emergency-restart.h
new file mode 100644 (file)
index 0000000..108d8c4
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_EMERGENCY_RESTART_H
+#define _ASM_EMERGENCY_RESTART_H
+
+#include <asm-generic/emergency-restart.h>
+
+#endif /* _ASM_EMERGENCY_RESTART_H */
diff --git a/arch/frv/include/asm/errno.h b/arch/frv/include/asm/errno.h
new file mode 100644 (file)
index 0000000..d010795
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _ASM_ERRNO_H
+#define _ASM_ERRNO_H
+
+#include <asm-generic/errno.h>
+
+#endif /* _ASM_ERRNO_H */
+
diff --git a/arch/frv/include/asm/fb.h b/arch/frv/include/asm/fb.h
new file mode 100644 (file)
index 0000000..c7df380
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_FB_H_
+#define _ASM_FB_H_
+#include <linux/fb.h>
+
+#define fb_pgprotect(...) do {} while (0)
+
+static inline int fb_is_primary_device(struct fb_info *info)
+{
+       return 0;
+}
+
+#endif /* _ASM_FB_H_ */
diff --git a/arch/frv/include/asm/fcntl.h b/arch/frv/include/asm/fcntl.h
new file mode 100644 (file)
index 0000000..46ab12d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/fcntl.h>
diff --git a/arch/frv/include/asm/fpu.h b/arch/frv/include/asm/fpu.h
new file mode 100644 (file)
index 0000000..d73c60b
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef __ASM_FPU_H
+#define __ASM_FPU_H
+
+
+/*
+ * MAX floating point unit state size (FSAVE/FRESTORE)
+ */
+
+#define kernel_fpu_end() do { asm volatile("bar":::"memory"); preempt_enable(); } while(0)
+
+#endif /* __ASM_FPU_H */
diff --git a/arch/frv/include/asm/ftrace.h b/arch/frv/include/asm/ftrace.h
new file mode 100644 (file)
index 0000000..40a8c17
--- /dev/null
@@ -0,0 +1 @@
+/* empty */
diff --git a/arch/frv/include/asm/futex.h b/arch/frv/include/asm/futex.h
new file mode 100644 (file)
index 0000000..08b3d1d
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+extern int futex_atomic_op_inuser(int encoded_op, int __user *uaddr);
+
+static inline int
+futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
+{
+       return -ENOSYS;
+}
+
+#endif
+#endif
diff --git a/arch/frv/include/asm/gdb-stub.h b/arch/frv/include/asm/gdb-stub.h
new file mode 100644 (file)
index 0000000..24f9738
--- /dev/null
@@ -0,0 +1,140 @@
+/* gdb-stub.h: FRV GDB stub
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from asm-mips/gdb-stub.h (c) 1995 Andreas Busse
+ *
+ * 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.
+ */
+#ifndef __ASM_GDB_STUB_H
+#define __ASM_GDB_STUB_H
+
+#undef GDBSTUB_DEBUG_PROTOCOL
+
+#include <asm/ptrace.h>
+
+/*
+ * important register numbers in GDB protocol
+ * - GR0,  GR1,  GR2,  GR3,  GR4,  GR5,  GR6,  GR7,
+ * - GR8,  GR9,  GR10, GR11, GR12, GR13, GR14, GR15,
+ * - GR16, GR17, GR18, GR19, GR20, GR21, GR22, GR23,
+ * - GR24, GR25, GR26, GR27, GR28, GR29, GR30, GR31,
+ * - GR32, GR33, GR34, GR35, GR36, GR37, GR38, GR39,
+ * - GR40, GR41, GR42, GR43, GR44, GR45, GR46, GR47,
+ * - GR48, GR49, GR50, GR51, GR52, GR53, GR54, GR55,
+ * - GR56, GR57, GR58, GR59, GR60, GR61, GR62, GR63,
+ * - FR0,  FR1,  FR2,  FR3,  FR4,  FR5,  FR6,  FR7,
+ * - FR8,  FR9,  FR10, FR11, FR12, FR13, FR14, FR15,
+ * - FR16, FR17, FR18, FR19, FR20, FR21, FR22, FR23,
+ * - FR24, FR25, FR26, FR27, FR28, FR29, FR30, FR31,
+ * - FR32, FR33, FR34, FR35, FR36, FR37, FR38, FR39,
+ * - FR40, FR41, FR42, FR43, FR44, FR45, FR46, FR47,
+ * - FR48, FR49, FR50, FR51, FR52, FR53, FR54, FR55,
+ * - FR56, FR57, FR58, FR59, FR60, FR61, FR62, FR63,
+ * - PC, PSR, CCR, CCCR,
+ * - _X132, _X133, _X134
+ * - TBR, BRR, DBAR0, DBAR1, DBAR2, DBAR3,
+ * - SCR0, SCR1, SCR2, SCR3,
+ * - LR, LCR,
+ * - IACC0H, IACC0L,
+ * - FSR0,
+ * - ACC0, ACC1, ACC2, ACC3, ACC4, ACC5, ACC6, ACC7,
+ * - ACCG0123, ACCG4567,
+ * - MSR0, MSR1,
+ * - GNER0, GNER1,
+ * - FNER0, FNER1,
+ */
+#define GDB_REG_GR(N)  (N)
+#define GDB_REG_FR(N)  (64+(N))
+#define GDB_REG_PC     128
+#define GDB_REG_PSR    129
+#define GDB_REG_CCR    130
+#define GDB_REG_CCCR   131
+#define GDB_REG_TBR    135
+#define GDB_REG_BRR    136
+#define GDB_REG_DBAR(N)        (137+(N))
+#define GDB_REG_SCR(N) (141+(N))
+#define GDB_REG_LR     145
+#define GDB_REG_LCR    146
+#define GDB_REG_FSR0   149
+#define GDB_REG_ACC(N) (150+(N))
+#define GDB_REG_ACCG(N)        (158+(N)/4)
+#define GDB_REG_MSR(N) (160+(N))
+#define GDB_REG_GNER(N)        (162+(N))
+#define GDB_REG_FNER(N)        (164+(N))
+
+#define GDB_REG_SP     GDB_REG_GR(1)
+#define GDB_REG_FP     GDB_REG_GR(2)
+
+#ifndef _LANGUAGE_ASSEMBLY
+
+/*
+ * Prototypes
+ */
+extern void show_registers_only(struct pt_regs *regs);
+
+extern void gdbstub_init(void);
+extern void gdbstub(int type);
+extern void gdbstub_exit(int status);
+
+extern void gdbstub_io_init(void);
+extern void gdbstub_set_baud(unsigned baud);
+extern int gdbstub_rx_char(unsigned char *_ch, int nonblock);
+extern void gdbstub_tx_char(unsigned char ch);
+extern void gdbstub_tx_flush(void);
+extern void gdbstub_do_rx(void);
+
+extern asmlinkage void __debug_stub_init_break(void);
+extern asmlinkage void __break_hijack_kernel_event(void);
+extern asmlinkage void __break_hijack_kernel_event_breaks_here(void);
+extern asmlinkage void start_kernel(void);
+
+extern asmlinkage void gdbstub_rx_handler(void);
+extern asmlinkage void gdbstub_rx_irq(void);
+extern asmlinkage void gdbstub_intercept(void);
+
+extern uint32_t __entry_usertrap_table[];
+extern uint32_t __entry_kerneltrap_table[];
+
+extern volatile u8     gdbstub_rx_buffer[PAGE_SIZE];
+extern volatile u32    gdbstub_rx_inp;
+extern volatile u32    gdbstub_rx_outp;
+extern volatile u8     gdbstub_rx_overflow;
+extern u8              gdbstub_rx_unget;
+
+extern void gdbstub_printk(const char *fmt, ...);
+extern void debug_to_serial(const char *p, int n);
+extern void console_set_baud(unsigned baud);
+
+#ifdef GDBSTUB_DEBUG_PROTOCOL
+#define gdbstub_proto(FMT,...) gdbstub_printk(FMT,##__VA_ARGS__)
+#else
+#define gdbstub_proto(FMT,...) ({ 0; })
+#endif
+
+/*
+ * we dedicate GR31 to keeping a pointer to the gdbstub exception frame
+ * - gr31 is destroyed on entry to the gdbstub if !MMU
+ * - gr31 is saved in scr3 on entry to the gdbstub if in !MMU
+ */
+register struct frv_frame0 *__debug_frame0 asm("gr31");
+
+#define __debug_frame          (&__debug_frame0->regs)
+#define __debug_user_context   (&__debug_frame0->uc)
+#define __debug_regs           (&__debug_frame0->debug)
+#define __debug_reg(X)         ((unsigned long *) ((unsigned long) &__debug_frame0 + (X)))
+
+struct frv_debug_status {
+       unsigned long           bpsr;
+       unsigned long           dcr;
+       unsigned long           brr;
+       unsigned long           nmar;
+};
+
+extern struct frv_debug_status __debug_status;
+
+#endif /* _LANGUAGE_ASSEMBLY */
+#endif /* __ASM_GDB_STUB_H */
diff --git a/arch/frv/include/asm/gpio-regs.h b/arch/frv/include/asm/gpio-regs.h
new file mode 100644 (file)
index 0000000..9edf5d5
--- /dev/null
@@ -0,0 +1,116 @@
+/* gpio-regs.h: on-chip general purpose I/O registers
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_GPIO_REGS
+#define _ASM_GPIO_REGS
+
+#define __reg(ADDR) (*(volatile unsigned long *)(ADDR))
+
+#define __get_PDR()    ({ __reg(0xfeff0400); })
+#define __set_PDR(V)   do { __reg(0xfeff0400) = (V); mb(); } while(0)
+
+#define __get_GPDR()   ({ __reg(0xfeff0408); })
+#define __set_GPDR(V)  do { __reg(0xfeff0408) = (V); mb(); } while(0)
+
+#define __get_SIR()    ({ __reg(0xfeff0410); })
+#define __set_SIR(V)   do { __reg(0xfeff0410) = (V); mb(); } while(0)
+
+#define __get_SOR()    ({ __reg(0xfeff0418); })
+#define __set_SOR(V)   do { __reg(0xfeff0418) = (V); mb(); } while(0)
+
+#define __set_PDSR(V)  do { __reg(0xfeff0420) = (V); mb(); } while(0)
+
+#define __set_PDCR(V)  do { __reg(0xfeff0428) = (V); mb(); } while(0)
+
+#define __get_RSTR()   ({ __reg(0xfeff0500); })
+#define __set_RSTR(V)  do { __reg(0xfeff0500) = (V); mb(); } while(0)
+
+
+
+/* PDR definitions */
+#define PDR_GPIO_DATA(X)       (1 << (X))
+
+/* GPDR definitions */
+#define GPDR_INPUT             0
+#define GPDR_OUTPUT            1
+#define GPDR_DREQ0_BIT         0x00001000
+#define GPDR_DREQ1_BIT         0x00008000
+#define GPDR_DREQ2_BIT         0x00040000
+#define GPDR_DREQ3_BIT         0x00080000
+#define GPDR_DREQ4_BIT         0x00004000
+#define GPDR_DREQ5_BIT         0x00020000
+#define GPDR_DREQ6_BIT         0x00100000
+#define GPDR_DREQ7_BIT         0x00200000
+#define GPDR_DACK0_BIT         0x00002000
+#define GPDR_DACK1_BIT         0x00010000
+#define GPDR_DACK2_BIT         0x00100000
+#define GPDR_DACK3_BIT         0x00200000
+#define GPDR_DONE0_BIT         0x00004000
+#define GPDR_DONE1_BIT         0x00020000
+#define GPDR_GPIO_DIR(X,D)     ((D) << (X))
+
+/* SIR definitions */
+#define SIR_GPIO_INPUT         0
+#define SIR_DREQ7_INPUT                0x00200000
+#define SIR_DREQ6_INPUT                0x00100000
+#define SIR_DREQ3_INPUT                0x00080000
+#define SIR_DREQ2_INPUT                0x00040000
+#define SIR_DREQ5_INPUT                0x00020000
+#define SIR_DREQ1_INPUT                0x00008000
+#define SIR_DREQ4_INPUT                0x00004000
+#define SIR_DREQ0_INPUT                0x00001000
+#define SIR_RXD1_INPUT         0x00000400
+#define SIR_CTS0_INPUT         0x00000100
+#define SIR_RXD0_INPUT         0x00000040
+#define SIR_GATE1_INPUT                0x00000020
+#define SIR_GATE0_INPUT                0x00000010
+#define SIR_IRQ3_INPUT         0x00000008
+#define SIR_IRQ2_INPUT         0x00000004
+#define SIR_IRQ1_INPUT         0x00000002
+#define SIR_IRQ0_INPUT         0x00000001
+#define SIR_DREQ_BITS          (SIR_DREQ0_INPUT | SIR_DREQ1_INPUT | \
+                                SIR_DREQ2_INPUT | SIR_DREQ3_INPUT | \
+                                SIR_DREQ4_INPUT | SIR_DREQ5_INPUT | \
+                                SIR_DREQ6_INPUT | SIR_DREQ7_INPUT)
+
+/* SOR definitions */
+#define SOR_GPIO_OUTPUT                0
+#define SOR_DACK3_OUTPUT       0x00200000
+#define SOR_DACK2_OUTPUT       0x00100000
+#define SOR_DONE1_OUTPUT       0x00020000
+#define SOR_DACK1_OUTPUT       0x00010000
+#define SOR_DONE0_OUTPUT       0x00004000
+#define SOR_DACK0_OUTPUT       0x00002000
+#define SOR_TXD1_OUTPUT                0x00000800
+#define SOR_RTS0_OUTPUT                0x00000200
+#define SOR_TXD0_OUTPUT                0x00000080
+#define SOR_TOUT1_OUTPUT       0x00000020
+#define SOR_TOUT0_OUTPUT       0x00000010
+#define SOR_DONE_BITS          (SOR_DONE0_OUTPUT | SOR_DONE1_OUTPUT)
+#define SOR_DACK_BITS          (SOR_DACK0_OUTPUT | SOR_DACK1_OUTPUT | \
+                                SOR_DACK2_OUTPUT | SOR_DACK3_OUTPUT)
+
+/* PDSR definitions */
+#define PDSR_UNCHANGED         0
+#define PDSR_SET_BIT(X)                (1 << (X))
+
+/* PDCR definitions */
+#define PDCR_UNCHANGED         0
+#define PDCR_CLEAR_BIT(X)      (1 << (X))
+
+/* RSTR definitions */
+/* Read Only */
+#define RSTR_POWERON           0x00000400
+#define RSTR_SOFTRESET_STATUS  0x00000100
+/* Write Only */
+#define RSTR_SOFTRESET         0x00000001
+
+#endif /* _ASM_GPIO_REGS */
diff --git a/arch/frv/include/asm/hardirq.h b/arch/frv/include/asm/hardirq.h
new file mode 100644 (file)
index 0000000..fc47515
--- /dev/null
@@ -0,0 +1,35 @@
+/* hardirq.h: FRV hardware IRQ management
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef __ASM_HARDIRQ_H
+#define __ASM_HARDIRQ_H
+
+#include <linux/threads.h>
+#include <linux/irq.h>
+
+typedef struct {
+       unsigned int __softirq_pending;
+       unsigned long idle_timestamp;
+} ____cacheline_aligned irq_cpustat_t;
+
+#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
+
+#ifdef CONFIG_SMP
+#error SMP not available on FR-V
+#endif /* CONFIG_SMP */
+
+extern atomic_t irq_err_count;
+static inline void ack_bad_irq(int irq)
+{
+       atomic_inc(&irq_err_count);
+}
+
+#endif
diff --git a/arch/frv/include/asm/highmem.h b/arch/frv/include/asm/highmem.h
new file mode 100644 (file)
index 0000000..68e4677
--- /dev/null
@@ -0,0 +1,182 @@
+/* highmem.h: virtual kernel memory mappings for high memory
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-i386/highmem.h
+ *
+ * See Documentation/frv/mmu-layout.txt for more information.
+ *
+ * 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.
+ */
+
+#ifndef _ASM_HIGHMEM_H
+#define _ASM_HIGHMEM_H
+
+#ifdef __KERNEL__
+
+#include <linux/init.h>
+#include <linux/highmem.h>
+#include <asm/mem-layout.h>
+#include <asm/spr-regs.h>
+#include <asm/mb-regs.h>
+
+#define NR_TLB_LINES           64      /* number of lines in the TLB */
+
+#ifndef __ASSEMBLY__
+
+#include <linux/interrupt.h>
+#include <asm/kmap_types.h>
+#include <asm/pgtable.h>
+
+#ifdef CONFIG_DEBUG_HIGHMEM
+#define HIGHMEM_DEBUG 1
+#else
+#define HIGHMEM_DEBUG 0
+#endif
+
+/* declarations for highmem.c */
+extern unsigned long highstart_pfn, highend_pfn;
+
+#define kmap_prot PAGE_KERNEL
+#define kmap_pte ______kmap_pte_in_TLB
+extern pte_t *pkmap_page_table;
+
+#define flush_cache_kmaps()  do { } while (0)
+
+/*
+ * Right now we initialize only a single pte table. It can be extended
+ * easily, subsequent pte tables have to be allocated in one physical
+ * chunk of RAM.
+ */
+#define LAST_PKMAP     PTRS_PER_PTE
+#define LAST_PKMAP_MASK        (LAST_PKMAP - 1)
+#define PKMAP_NR(virt) ((virt - PKMAP_BASE) >> PAGE_SHIFT)
+#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
+
+extern void *kmap_high(struct page *page);
+extern void kunmap_high(struct page *page);
+
+extern void *kmap(struct page *page);
+extern void kunmap(struct page *page);
+
+extern struct page *kmap_atomic_to_page(void *ptr);
+
+#endif /* !__ASSEMBLY__ */
+
+/*
+ * The use of kmap_atomic/kunmap_atomic is discouraged - kmap/kunmap
+ * gives a more generic (and caching) interface. But kmap_atomic can
+ * be used in IRQ contexts, so in some (very limited) cases we need
+ * it.
+ */
+#define KMAP_ATOMIC_CACHE_DAMR         8
+
+#ifndef __ASSEMBLY__
+
+#define __kmap_atomic_primary(type, paddr, ampr)                                               \
+({                                                                                             \
+       unsigned long damlr, dampr;                                                             \
+                                                                                               \
+       dampr = paddr | xAMPRx_L | xAMPRx_M | xAMPRx_S | xAMPRx_SS_16Kb | xAMPRx_V;             \
+                                                                                               \
+       if (type != __KM_CACHE)                                                                 \
+               asm volatile("movgs %0,dampr"#ampr :: "r"(dampr) : "memory");                   \
+       else                                                                                    \
+               asm volatile("movgs %0,iampr"#ampr"\n"                                          \
+                            "movgs %0,dampr"#ampr"\n"                                          \
+                            :: "r"(dampr) : "memory"                                           \
+                            );                                                                 \
+                                                                                               \
+       asm("movsg damlr"#ampr",%0" : "=r"(damlr));                                             \
+                                                                                               \
+       /*printk("DAMR"#ampr": PRIM sl=%d L=%08lx P=%08lx\n", type, damlr, dampr);*/            \
+                                                                                               \
+       (void *) damlr;                                                                         \
+})
+
+#define __kmap_atomic_secondary(slot, paddr)                                                     \
+({                                                                                               \
+       unsigned long damlr = KMAP_ATOMIC_SECONDARY_FRAME + (slot) * PAGE_SIZE;                   \
+       unsigned long dampr = paddr | xAMPRx_L | xAMPRx_M | xAMPRx_S | xAMPRx_SS_16Kb | xAMPRx_V; \
+                                                                                                 \
+       asm volatile("movgs %0,tplr \n"                                                           \
+                    "movgs %1,tppr \n"                                                           \
+                    "tlbpr %0,gr0,#2,#1"                                                         \
+                    : : "r"(damlr), "r"(dampr) : "memory");                                      \
+                                                                                                 \
+       /*printk("TLB: SECN sl=%d L=%08lx P=%08lx\n", slot, damlr, dampr);*/                      \
+                                                                                                 \
+       (void *) damlr;                                                                           \
+})
+
+static inline void *kmap_atomic(struct page *page, enum km_type type)
+{
+       unsigned long paddr;
+
+       pagefault_disable();
+       debug_kmap_atomic(type);
+       paddr = page_to_phys(page);
+
+       switch (type) {
+        case 0:                return __kmap_atomic_primary(0, paddr, 2);
+        case 1:                return __kmap_atomic_primary(1, paddr, 3);
+        case 2:                return __kmap_atomic_primary(2, paddr, 4);
+        case 3:                return __kmap_atomic_primary(3, paddr, 5);
+        case 4:                return __kmap_atomic_primary(4, paddr, 6);
+        case 5:                return __kmap_atomic_primary(5, paddr, 7);
+        case 6:                return __kmap_atomic_primary(6, paddr, 8);
+        case 7:                return __kmap_atomic_primary(7, paddr, 9);
+        case 8:                return __kmap_atomic_primary(8, paddr, 10);
+
+       case 9 ... 9 + NR_TLB_LINES - 1:
+               return __kmap_atomic_secondary(type - 9, paddr);
+
+       default:
+               BUG();
+               return NULL;
+       }
+}
+
+#define __kunmap_atomic_primary(type, ampr)                            \
+do {                                                                   \
+       asm volatile("movgs gr0,dampr"#ampr"\n" ::: "memory");          \
+       if (type == __KM_CACHE)                                         \
+               asm volatile("movgs gr0,iampr"#ampr"\n" ::: "memory");  \
+} while(0)
+
+#define __kunmap_atomic_secondary(slot, vaddr)                         \
+do {                                                                   \
+       asm volatile("tlbpr %0,gr0,#4,#1" : : "r"(vaddr) : "memory");   \
+} while(0)
+
+static inline void kunmap_atomic(void *kvaddr, enum km_type type)
+{
+       switch (type) {
+        case 0:                __kunmap_atomic_primary(0, 2);  break;
+        case 1:                __kunmap_atomic_primary(1, 3);  break;
+        case 2:                __kunmap_atomic_primary(2, 4);  break;
+        case 3:                __kunmap_atomic_primary(3, 5);  break;
+        case 4:                __kunmap_atomic_primary(4, 6);  break;
+        case 5:                __kunmap_atomic_primary(5, 7);  break;
+        case 6:                __kunmap_atomic_primary(6, 8);  break;
+        case 7:                __kunmap_atomic_primary(7, 9);  break;
+        case 8:                __kunmap_atomic_primary(8, 10); break;
+
+       case 9 ... 9 + NR_TLB_LINES - 1:
+               __kunmap_atomic_secondary(type - 9, kvaddr);
+               break;
+
+       default:
+               BUG();
+       }
+       pagefault_enable();
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_HIGHMEM_H */
diff --git a/arch/frv/include/asm/hw_irq.h b/arch/frv/include/asm/hw_irq.h
new file mode 100644 (file)
index 0000000..522ad37
--- /dev/null
@@ -0,0 +1,16 @@
+/* hw_irq.h: FR-V specific h/w IRQ stuff
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_HW_IRQ_H
+#define _ASM_HW_IRQ_H
+
+
+#endif /* _ASM_HW_IRQ_H */
diff --git a/arch/frv/include/asm/init.h b/arch/frv/include/asm/init.h
new file mode 100644 (file)
index 0000000..8b15838
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_INIT_H
+#define _ASM_INIT_H
+
+#define __init __attribute__ ((__section__ (".text.init")))
+#define __initdata __attribute__ ((__section__ (".data.init")))
+/* For assembly routines */
+#define __INIT         .section        ".text.init",#alloc,#execinstr
+#define __FINIT                .previous
+#define __INITDATA     .section        ".data.init",#alloc,#write
+
+#endif
+
diff --git a/arch/frv/include/asm/io.h b/arch/frv/include/asm/io.h
new file mode 100644 (file)
index 0000000..ca7475e
--- /dev/null
@@ -0,0 +1,392 @@
+/* io.h: FRV I/O operations
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * This gets interesting when talking to the PCI bus - the CPU is in big endian
+ * mode, the PCI bus is little endian and the hardware in the middle can do
+ * byte swapping
+ */
+#ifndef _ASM_IO_H
+#define _ASM_IO_H
+
+#ifdef __KERNEL__
+
+#include <linux/types.h>
+#include <asm/virtconvert.h>
+#include <asm/string.h>
+#include <asm/mb-regs.h>
+#include <linux/delay.h>
+
+/*
+ * swap functions are sometimes needed to interface little-endian hardware
+ */
+
+static inline unsigned short _swapw(unsigned short v)
+{
+    return ((v << 8) | (v >> 8));
+}
+
+static inline unsigned long _swapl(unsigned long v)
+{
+    return ((v << 24) | ((v & 0xff00) << 8) | ((v & 0xff0000) >> 8) | (v >> 24));
+}
+
+//#define __iormb() asm volatile("membar")
+//#define __iowmb() asm volatile("membar")
+
+#define __raw_readb __builtin_read8
+#define __raw_readw __builtin_read16
+#define __raw_readl __builtin_read32
+
+#define __raw_writeb(datum, addr) __builtin_write8(addr, datum)
+#define __raw_writew(datum, addr) __builtin_write16(addr, datum)
+#define __raw_writel(datum, addr) __builtin_write32(addr, datum)
+
+static inline void io_outsb(unsigned int addr, const void *buf, int len)
+{
+       unsigned long __ioaddr = (unsigned long) addr;
+       const uint8_t *bp = buf;
+
+       while (len--)
+               __builtin_write8((volatile void __iomem *) __ioaddr, *bp++);
+}
+
+static inline void io_outsw(unsigned int addr, const void *buf, int len)
+{
+       unsigned long __ioaddr = (unsigned long) addr;
+       const uint16_t *bp = buf;
+
+       while (len--)
+               __builtin_write16((volatile void __iomem *) __ioaddr, (*bp++));
+}
+
+extern void __outsl_ns(unsigned int addr, const void *buf, int len);
+extern void __outsl_sw(unsigned int addr, const void *buf, int len);
+static inline void __outsl(unsigned int addr, const void *buf, int len, int swap)
+{
+       unsigned long __ioaddr = (unsigned long) addr;
+
+       if (!swap)
+               __outsl_ns(__ioaddr, buf, len);
+       else
+               __outsl_sw(__ioaddr, buf, len);
+}
+
+static inline void io_insb(unsigned long addr, void *buf, int len)
+{
+       uint8_t *bp = buf;
+
+       while (len--)
+               *bp++ = __builtin_read8((volatile void __iomem *) addr);
+}
+
+static inline void io_insw(unsigned long addr, void *buf, int len)
+{
+       uint16_t *bp = buf;
+
+       while (len--)
+               *bp++ = __builtin_read16((volatile void __iomem *) addr);
+}
+
+extern void __insl_ns(unsigned long addr, void *buf, int len);
+extern void __insl_sw(unsigned long addr, void *buf, int len);
+static inline void __insl(unsigned long addr, void *buf, int len, int swap)
+{
+       if (!swap)
+               __insl_ns(addr, buf, len);
+       else
+               __insl_sw(addr, buf, len);
+}
+
+#define mmiowb() mb()
+
+/*
+ *     make the short names macros so specific devices
+ *     can override them as required
+ */
+
+static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
+{
+       memset((void __force *) addr, val, count);
+}
+
+static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, int count)
+{
+       memcpy(dst, (void __force *) src, count);
+}
+
+static inline void memcpy_toio(volatile void __iomem *dst, const void *src, int count)
+{
+       memcpy((void __force *) dst, src, count);
+}
+
+static inline uint8_t inb(unsigned long addr)
+{
+       return __builtin_read8((void __iomem *)addr);
+}
+
+static inline uint16_t inw(unsigned long addr)
+{
+       uint16_t ret = __builtin_read16((void __iomem *)addr);
+
+       if (__is_PCI_IO(addr))
+               ret = _swapw(ret);
+
+       return ret;
+}
+
+static inline uint32_t inl(unsigned long addr)
+{
+       uint32_t ret = __builtin_read32((void __iomem *)addr);
+
+       if (__is_PCI_IO(addr))
+               ret = _swapl(ret);
+
+       return ret;
+}
+
+static inline void outb(uint8_t datum, unsigned long addr)
+{
+       __builtin_write8((void __iomem *)addr, datum);
+}
+
+static inline void outw(uint16_t datum, unsigned long addr)
+{
+       if (__is_PCI_IO(addr))
+               datum = _swapw(datum);
+       __builtin_write16((void __iomem *)addr, datum);
+}
+
+static inline void outl(uint32_t datum, unsigned long addr)
+{
+       if (__is_PCI_IO(addr))
+               datum = _swapl(datum);
+       __builtin_write32((void __iomem *)addr, datum);
+}
+
+#define inb_p(addr)    inb(addr)
+#define inw_p(addr)    inw(addr)
+#define inl_p(addr)    inl(addr)
+#define outb_p(x,addr) outb(x,addr)
+#define outw_p(x,addr) outw(x,addr)
+#define outl_p(x,addr) outl(x,addr)
+
+#define outsb(a,b,l)   io_outsb(a,b,l)
+#define outsw(a,b,l)   io_outsw(a,b,l)
+#define outsl(a,b,l)   __outsl(a,b,l,0)
+
+#define insb(a,b,l)    io_insb(a,b,l)
+#define insw(a,b,l)    io_insw(a,b,l)
+#define insl(a,b,l)    __insl(a,b,l,0)
+
+#define IO_SPACE_LIMIT 0xffffffff
+
+static inline uint8_t readb(const volatile void __iomem *addr)
+{
+       return __builtin_read8((__force void volatile __iomem *) addr);
+}
+
+static inline uint16_t readw(const volatile void __iomem *addr)
+{
+       uint16_t ret =  __builtin_read16((__force void volatile __iomem *)addr);
+
+       if (__is_PCI_MEM(addr))
+               ret = _swapw(ret);
+       return ret;
+}
+
+static inline uint32_t readl(const volatile void __iomem *addr)
+{
+       uint32_t ret =  __builtin_read32((__force void volatile __iomem *)addr);
+
+       if (__is_PCI_MEM(addr))
+               ret = _swapl(ret);
+
+       return ret;
+}
+
+#define readb_relaxed readb
+#define readw_relaxed readw
+#define readl_relaxed readl
+
+static inline void writeb(uint8_t datum, volatile void __iomem *addr)
+{
+       __builtin_write8(addr, datum);
+       if (__is_PCI_MEM(addr))
+               __flush_PCI_writes();
+}
+
+static inline void writew(uint16_t datum, volatile void __iomem *addr)
+{
+       if (__is_PCI_MEM(addr))
+               datum = _swapw(datum);
+
+       __builtin_write16(addr, datum);
+       if (__is_PCI_MEM(addr))
+               __flush_PCI_writes();
+}
+
+static inline void writel(uint32_t datum, volatile void __iomem *addr)
+{
+       if (__is_PCI_MEM(addr))
+               datum = _swapl(datum);
+
+       __builtin_write32(addr, datum);
+       if (__is_PCI_MEM(addr))
+               __flush_PCI_writes();
+}
+
+
+/* Values for nocacheflag and cmode */
+#define IOMAP_FULL_CACHING             0
+#define IOMAP_NOCACHE_SER              1
+#define IOMAP_NOCACHE_NONSER           2
+#define IOMAP_WRITETHROUGH             3
+
+extern void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag);
+
+static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size)
+{
+       return __ioremap(physaddr, size, IOMAP_NOCACHE_SER);
+}
+
+static inline void __iomem *ioremap_nocache(unsigned long physaddr, unsigned long size)
+{
+       return __ioremap(physaddr, size, IOMAP_NOCACHE_SER);
+}
+
+static inline void __iomem *ioremap_writethrough(unsigned long physaddr, unsigned long size)
+{
+       return __ioremap(physaddr, size, IOMAP_WRITETHROUGH);
+}
+
+static inline void __iomem *ioremap_fullcache(unsigned long physaddr, unsigned long size)
+{
+       return __ioremap(physaddr, size, IOMAP_FULL_CACHING);
+}
+
+#define ioremap_wc ioremap_nocache
+
+extern void iounmap(void volatile __iomem *addr);
+
+static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
+{
+       return (void __iomem *) port;
+}
+
+static inline void ioport_unmap(void __iomem *p)
+{
+}
+
+static inline void flush_write_buffers(void)
+{
+       __asm__ __volatile__ ("membar" : : :"memory");
+}
+
+/*
+ * do appropriate I/O accesses for token type
+ */
+static inline unsigned int ioread8(void __iomem *p)
+{
+       return __builtin_read8(p);
+}
+
+static inline unsigned int ioread16(void __iomem *p)
+{
+       uint16_t ret = __builtin_read16(p);
+       if (__is_PCI_addr(p))
+               ret = _swapw(ret);
+       return ret;
+}
+
+static inline unsigned int ioread32(void __iomem *p)
+{
+       uint32_t ret = __builtin_read32(p);
+       if (__is_PCI_addr(p))
+               ret = _swapl(ret);
+       return ret;
+}
+
+static inline void iowrite8(u8 val, void __iomem *p)
+{
+       __builtin_write8(p, val);
+       if (__is_PCI_MEM(p))
+               __flush_PCI_writes();
+}
+
+static inline void iowrite16(u16 val, void __iomem *p)
+{
+       if (__is_PCI_addr(p))
+               val = _swapw(val);
+       __builtin_write16(p, val);
+       if (__is_PCI_MEM(p))
+               __flush_PCI_writes();
+}
+
+static inline void iowrite32(u32 val, void __iomem *p)
+{
+       if (__is_PCI_addr(p))
+               val = _swapl(val);
+       __builtin_write32(p, val);
+       if (__is_PCI_MEM(p))
+               __flush_PCI_writes();
+}
+
+static inline void ioread8_rep(void __iomem *p, void *dst, unsigned long count)
+{
+       io_insb((unsigned long) p, dst, count);
+}
+
+static inline void ioread16_rep(void __iomem *p, void *dst, unsigned long count)
+{
+       io_insw((unsigned long) p, dst, count);
+}
+
+static inline void ioread32_rep(void __iomem *p, void *dst, unsigned long count)
+{
+       __insl_ns((unsigned long) p, dst, count);
+}
+
+static inline void iowrite8_rep(void __iomem *p, const void *src, unsigned long count)
+{
+       io_outsb((unsigned long) p, src, count);
+}
+
+static inline void iowrite16_rep(void __iomem *p, const void *src, unsigned long count)
+{
+       io_outsw((unsigned long) p, src, count);
+}
+
+static inline void iowrite32_rep(void __iomem *p, const void *src, unsigned long count)
+{
+       __outsl_ns((unsigned long) p, src, count);
+}
+
+/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
+struct pci_dev;
+extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
+static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
+{
+}
+
+
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p)   __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p)  p
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_IO_H */
diff --git a/arch/frv/include/asm/ioctl.h b/arch/frv/include/asm/ioctl.h
new file mode 100644 (file)
index 0000000..b279fe0
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/ioctl.h>
diff --git a/arch/frv/include/asm/ioctls.h b/arch/frv/include/asm/ioctls.h
new file mode 100644 (file)
index 0000000..d0c30e3
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef __ASM_IOCTLS_H__
+#define __ASM_IOCTLS_H__
+
+#include <asm/ioctl.h>
+
+/* 0x54 is just a magic number to make these relatively unique ('T') */
+
+#define TCGETS         0x5401
+#define TCSETS         0x5402
+#define TCSETSW                0x5403
+#define TCSETSF                0x5404
+#define TCGETA         0x5405
+#define TCSETA         0x5406
+#define TCSETAW                0x5407
+#define TCSETAF                0x5408
+#define TCSBRK         0x5409
+#define TCXONC         0x540A
+#define TCFLSH         0x540B
+#define TIOCEXCL       0x540C
+#define TIOCNXCL       0x540D
+#define TIOCSCTTY      0x540E
+#define TIOCGPGRP      0x540F
+#define TIOCSPGRP      0x5410
+#define TIOCOUTQ       0x5411
+#define TIOCSTI                0x5412
+#define TIOCGWINSZ     0x5413
+#define TIOCSWINSZ     0x5414
+#define TIOCMGET       0x5415
+#define TIOCMBIS       0x5416
+#define TIOCMBIC       0x5417
+#define TIOCMSET       0x5418
+#define TIOCGSOFTCAR   0x5419
+#define TIOCSSOFTCAR   0x541A
+#define FIONREAD       0x541B
+#define TIOCINQ                FIONREAD
+#define TIOCLINUX      0x541C
+#define TIOCCONS       0x541D
+#define TIOCGSERIAL    0x541E
+#define TIOCSSERIAL    0x541F
+#define TIOCPKT                0x5420
+#define FIONBIO                0x5421
+#define TIOCNOTTY      0x5422
+#define TIOCSETD       0x5423
+#define TIOCGETD       0x5424
+#define TCSBRKP                0x5425  /* Needed for POSIX tcsendbreak() */
+#define TIOCTTYGSTRUCT 0x5426  /* For debugging only */
+#define TIOCSBRK       0x5427  /* BSD compatibility */
+#define TIOCCBRK       0x5428  /* BSD compatibility */
+#define TIOCGSID       0x5429  /* Return the session ID of FD */
+#define TCGETS2                _IOR('T',0x2A, struct termios2)
+#define TCSETS2                _IOW('T',0x2B, struct termios2)
+#define TCSETSW2       _IOW('T',0x2C, struct termios2)
+#define TCSETSF2       _IOW('T',0x2D, struct termios2)
+#define TIOCGPTN       _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
+#define TIOCSPTLCK     _IOW('T',0x31, int)  /* Lock/unlock Pty */
+
+#define FIONCLEX       0x5450  /* these numbers need to be adjusted. */
+#define FIOCLEX                0x5451
+#define FIOASYNC       0x5452
+#define TIOCSERCONFIG  0x5453
+#define TIOCSERGWILD   0x5454
+#define TIOCSERSWILD   0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
+#define TIOCSERGETLSR   0x5459 /* Get line status register */
+#define TIOCSERGETMULTI 0x545A /* Get multiport config  */
+#define TIOCSERSETMULTI 0x545B /* Set multiport config */
+
+#define TIOCMIWAIT     0x545C  /* wait for a change on serial input line(s) */
+#define TIOCGICOUNT    0x545D  /* read serial port inline interrupt counts */
+#define FIOQSIZE       0x545E
+
+/* Used for packet mode */
+#define TIOCPKT_DATA            0
+#define TIOCPKT_FLUSHREAD       1
+#define TIOCPKT_FLUSHWRITE      2
+#define TIOCPKT_STOP            4
+#define TIOCPKT_START           8
+#define TIOCPKT_NOSTOP         16
+#define TIOCPKT_DOSTOP         32
+
+#define TIOCSER_TEMT    0x01   /* Transmitter physically empty */
+
+#endif /* __ASM_IOCTLS_H__ */
+
diff --git a/arch/frv/include/asm/ipcbuf.h b/arch/frv/include/asm/ipcbuf.h
new file mode 100644 (file)
index 0000000..b546f67
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __ASM_IPCBUF_H__
+#define __ASM_IPCBUF_H__
+
+/*
+ * The user_ipc_perm structure for FR-V architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 32-bit mode_t and seq
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct ipc64_perm
+{
+       __kernel_key_t          key;
+       __kernel_uid32_t        uid;
+       __kernel_gid32_t        gid;
+       __kernel_uid32_t        cuid;
+       __kernel_gid32_t        cgid;
+       __kernel_mode_t         mode;
+       unsigned short          __pad1;
+       unsigned short          seq;
+       unsigned short          __pad2;
+       unsigned long           __unused1;
+       unsigned long           __unused2;
+};
+
+#endif /* __ASM_IPCBUF_H__ */
+
diff --git a/arch/frv/include/asm/irc-regs.h b/arch/frv/include/asm/irc-regs.h
new file mode 100644 (file)
index 0000000..afa30ae
--- /dev/null
@@ -0,0 +1,53 @@
+/* irc-regs.h: on-chip interrupt controller registers
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_IRC_REGS
+#define _ASM_IRC_REGS
+
+#define __reg(ADDR) (*(volatile unsigned long *)(ADDR))
+
+#define __get_TM0()    ({ __reg(0xfeff9800); })
+#define __get_TM1()    ({ __reg(0xfeff9808); })
+#define __set_TM1(V)   do { __reg(0xfeff9808) = (V); mb(); } while(0)
+
+#define __set_TM1x(XI,V)                       \
+do {                                           \
+       int shift = (XI) * 2 + 16;              \
+       unsigned long tm1 = __reg(0xfeff9808);  \
+       tm1 &= ~(0x3 << shift);                 \
+       tm1 |= (V) << shift;                    \
+       __reg(0xfeff9808) = tm1;                \
+       mb();                                   \
+} while(0)
+
+#define __get_RS(C)    ({ (__reg(0xfeff9810) >> ((C)+16)) & 1; })
+
+#define __clr_RC(C)    do { __reg(0xfeff9818) = 1 << ((C)+16); mb(); } while(0)
+
+#define __get_MASK(C)  ({ (__reg(0xfeff9820) >> ((C)+16)) & 1; })
+#define __set_MASK(C)  do { __reg(0xfeff9820) |=  1 << ((C)+16); mb(); } while(0)
+#define __clr_MASK(C)  do { __reg(0xfeff9820) &=  ~(1 << ((C)+16)); mb(); } while(0)
+
+#define __get_MASK_all() __get_MASK(0)
+#define __set_MASK_all() __set_MASK(0)
+#define __clr_MASK_all() __clr_MASK(0)
+
+#define __get_IRL()    ({ (__reg(0xfeff9828) >> 16) & 0xf; })
+#define __clr_IRL()    do { __reg(0xfeff9828) = 0x100000; mb(); } while(0)
+
+#define __get_IRR(N)   ({ __reg(0xfeff9840 + (N) * 8); })
+#define __set_IRR(N,V) do { __reg(0xfeff9840 + (N) * 8) = (V); } while(0)
+
+#define __get_IITMR(N) ({ __reg(0xfeff9880 + (N) * 8); })
+#define __set_IITMR(N,V) do { __reg(0xfeff9880 + (N) * 8) = (V); } while(0)
+
+
+#endif /* _ASM_IRC_REGS */
diff --git a/arch/frv/include/asm/irq.h b/arch/frv/include/asm/irq.h
new file mode 100644 (file)
index 0000000..3a66ebd
--- /dev/null
@@ -0,0 +1,30 @@
+/* irq.h: FRV IRQ definitions
+ *
+ * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_IRQ_H_
+#define _ASM_IRQ_H_
+
+#define NR_IRQS                                48
+#define IRQ_BASE_CPU                   (0 * 16)
+#define IRQ_BASE_FPGA                  (1 * 16)
+#define IRQ_BASE_MB93493               (2 * 16)
+
+/* probe returns a 32-bit IRQ mask:-/ */
+#define MIN_PROBE_IRQ                  (NR_IRQS - 32)
+
+#ifndef __ASSEMBLY__
+static inline int irq_canonicalize(int irq)
+{
+       return irq;
+}
+#endif
+
+#endif /* _ASM_IRQ_H_ */
diff --git a/arch/frv/include/asm/irq_regs.h b/arch/frv/include/asm/irq_regs.h
new file mode 100644 (file)
index 0000000..d22e832
--- /dev/null
@@ -0,0 +1,27 @@
+/* FRV per-CPU frame pointer holder
+ *
+ * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_IRQ_REGS_H
+#define _ASM_IRQ_REGS_H
+
+/*
+ * Per-cpu current frame pointer - the location of the last exception frame on
+ * the stack
+ * - on FRV, GR28 is dedicated to keeping a pointer to the current exception
+ *   frame
+ */
+#define ARCH_HAS_OWN_IRQ_REGS
+
+#ifndef __ASSEMBLY__
+#define get_irq_regs() (__frame)
+#endif
+
+#endif /* _ASM_IRQ_REGS_H */
diff --git a/arch/frv/include/asm/kdebug.h b/arch/frv/include/asm/kdebug.h
new file mode 100644 (file)
index 0000000..6ece1b0
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/kdebug.h>
diff --git a/arch/frv/include/asm/kmap_types.h b/arch/frv/include/asm/kmap_types.h
new file mode 100644 (file)
index 0000000..f8e16b2
--- /dev/null
@@ -0,0 +1,29 @@
+
+#ifndef _ASM_KMAP_TYPES_H
+#define _ASM_KMAP_TYPES_H
+
+enum km_type {
+       /* arch specific kmaps - change the numbers attached to these at your peril */
+       __KM_CACHE,             /* cache flush page attachment point */
+       __KM_PGD,               /* current page directory */
+       __KM_ITLB_PTD,          /* current instruction TLB miss page table lookup */
+       __KM_DTLB_PTD,          /* current data TLB miss page table lookup */
+
+       /* general kmaps */
+        KM_BOUNCE_READ,
+        KM_SKB_SUNRPC_DATA,
+        KM_SKB_DATA_SOFTIRQ,
+        KM_USER0,
+        KM_USER1,
+       KM_BIO_SRC_IRQ,
+       KM_BIO_DST_IRQ,
+       KM_PTE0,
+       KM_PTE1,
+       KM_IRQ0,
+       KM_IRQ1,
+       KM_SOFTIRQ0,
+       KM_SOFTIRQ1,
+       KM_TYPE_NR
+};
+
+#endif
diff --git a/arch/frv/include/asm/linkage.h b/arch/frv/include/asm/linkage.h
new file mode 100644 (file)
index 0000000..636c1bc
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef __ASM_LINKAGE_H
+#define __ASM_LINKAGE_H
+
+#define __ALIGN                .align 4
+#define __ALIGN_STR    ".align 4"
+
+#endif
diff --git a/arch/frv/include/asm/local.h b/arch/frv/include/asm/local.h
new file mode 100644 (file)
index 0000000..c27bdf0
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_LOCAL_H
+#define _ASM_LOCAL_H
+
+#include <asm-generic/local.h>
+
+#endif /* _ASM_LOCAL_H */
diff --git a/arch/frv/include/asm/math-emu.h b/arch/frv/include/asm/math-emu.h
new file mode 100644 (file)
index 0000000..0c8f731
--- /dev/null
@@ -0,0 +1,301 @@
+#ifndef _ASM_MATH_EMU_H
+#define _ASM_MATH_EMU_H
+
+#include <asm/setup.h>
+#include <linux/linkage.h>
+
+/* Status Register bits */
+
+/* accrued exception bits */
+#define FPSR_AEXC_INEX 3
+#define FPSR_AEXC_DZ   4
+#define FPSR_AEXC_UNFL 5
+#define FPSR_AEXC_OVFL 6
+#define FPSR_AEXC_IOP  7
+
+/* exception status bits */
+#define FPSR_EXC_INEX1 8
+#define FPSR_EXC_INEX2 9
+#define FPSR_EXC_DZ    10
+#define FPSR_EXC_UNFL  11
+#define FPSR_EXC_OVFL  12
+#define FPSR_EXC_OPERR 13
+#define FPSR_EXC_SNAN  14
+#define FPSR_EXC_BSUN  15
+
+/* quotient byte, assumes big-endian, of course */
+#define FPSR_QUOTIENT(fpsr) (*((signed char *) &(fpsr) + 1))
+
+/* condition code bits */
+#define FPSR_CC_NAN    24
+#define FPSR_CC_INF    25
+#define FPSR_CC_Z      26
+#define FPSR_CC_NEG    27
+
+
+/* Control register bits */
+
+/* rounding mode */
+#define        FPCR_ROUND_RN   0               /* round to nearest/even */
+#define FPCR_ROUND_RZ  1               /* round to zero */
+#define FPCR_ROUND_RM  2               /* minus infinity */
+#define FPCR_ROUND_RP  3               /* plus infinity */
+
+/* rounding precision */
+#define FPCR_PRECISION_X       0       /* long double */
+#define FPCR_PRECISION_S       1       /* double */
+#define FPCR_PRECISION_D       2       /* float */
+
+
+/* Flags to select the debugging output */
+#define PDECODE                0
+#define PEXECUTE       1
+#define PCONV          2
+#define PNORM          3
+#define PREGISTER      4
+#define PINSTR         5
+#define PUNIMPL                6
+#define PMOVEM         7
+
+#define PMDECODE       (1<<PDECODE)
+#define PMEXECUTE      (1<<PEXECUTE)
+#define PMCONV         (1<<PCONV)
+#define PMNORM         (1<<PNORM)
+#define PMREGISTER     (1<<PREGISTER)
+#define PMINSTR                (1<<PINSTR)
+#define PMUNIMPL       (1<<PUNIMPL)
+#define PMMOVEM                (1<<PMOVEM)
+
+#ifndef __ASSEMBLY__
+
+#include <linux/kernel.h>
+#include <linux/sched.h>
+
+union fp_mant64 {
+       unsigned long long m64;
+       unsigned long m32[2];
+};
+
+union fp_mant128 {
+       unsigned long long m64[2];
+       unsigned long m32[4];
+};
+
+/* internal representation of extended fp numbers */
+struct fp_ext {
+       unsigned char lowmant;
+       unsigned char sign;
+       unsigned short exp;
+       union fp_mant64 mant;
+};
+
+/* C representation of FPU registers */
+/* NOTE: if you change this, you have to change the assembler offsets
+   below and the size in <asm/fpu.h>, too */
+struct fp_data {
+       struct fp_ext fpreg[8];
+       unsigned int fpcr;
+       unsigned int fpsr;
+       unsigned int fpiar;
+       unsigned short prec;
+       unsigned short rnd;
+       struct fp_ext temp[2];
+};
+
+#if FPU_EMU_DEBUG
+extern unsigned int fp_debugprint;
+
+#define dprint(bit, fmt, args...) ({                   \
+       if (fp_debugprint & (1 << (bit)))               \
+               printk(fmt, ## args);                   \
+})
+#else
+#define dprint(bit, fmt, args...)
+#endif
+
+#define uprint(str) ({                                 \
+       static int __count = 3;                         \
+                                                       \
+       if (__count > 0) {                              \
+               printk("You just hit an unimplemented " \
+                      "fpu instruction (%s)\n", str);  \
+               printk("Please report this to ....\n"); \
+               __count--;                              \
+       }                                               \
+})
+
+#define FPDATA         ((struct fp_data *)current->thread.fp)
+
+#else  /* __ASSEMBLY__ */
+
+#define FPDATA         %a2
+
+/* offsets from the base register to the floating point data in the task struct */
+#define FPD_FPREG      (TASK_THREAD+THREAD_FPREG+0)
+#define FPD_FPCR       (TASK_THREAD+THREAD_FPREG+96)
+#define FPD_FPSR       (TASK_THREAD+THREAD_FPREG+100)
+#define FPD_FPIAR      (TASK_THREAD+THREAD_FPREG+104)
+#define FPD_PREC       (TASK_THREAD+THREAD_FPREG+108)
+#define FPD_RND                (TASK_THREAD+THREAD_FPREG+110)
+#define FPD_TEMPFP1    (TASK_THREAD+THREAD_FPREG+112)
+#define FPD_TEMPFP2    (TASK_THREAD+THREAD_FPREG+124)
+#define FPD_SIZEOF     (TASK_THREAD+THREAD_FPREG+136)
+
+/* offsets on the stack to access saved registers,
+ * these are only used during instruction decoding
+ * where we always know how deep we're on the stack.
+ */
+#define FPS_DO         (PT_D0)
+#define FPS_D1         (PT_D1)
+#define FPS_D2         (PT_D2)
+#define FPS_A0         (PT_A0)
+#define FPS_A1         (PT_A1)
+#define FPS_A2         (PT_A2)
+#define FPS_SR         (PT_SR)
+#define FPS_PC         (PT_PC)
+#define FPS_EA         (PT_PC+6)
+#define FPS_PC2                (PT_PC+10)
+
+.macro fp_get_fp_reg
+       lea     (FPD_FPREG,FPDATA,%d0.w*4),%a0
+       lea     (%a0,%d0.w*8),%a0
+.endm
+
+/* Macros used to get/put the current program counter.
+ * 020/030 use a different stack frame then 040/060, for the
+ * 040/060 the return pc points already to the next location,
+ * so this only needs to be modified for jump instructions.
+ */
+.macro fp_get_pc dest
+       move.l  (FPS_PC+4,%sp),\dest
+.endm
+
+.macro fp_put_pc src,jump=0
+       move.l  \src,(FPS_PC+4,%sp)
+.endm
+
+.macro fp_get_instr_data       f,s,dest,label
+       getuser \f,%sp@(FPS_PC+4)@(0),\dest,\label,%sp@(FPS_PC+4)
+       addq.l  #\s,%sp@(FPS_PC+4)
+.endm
+
+.macro fp_get_instr_word       dest,label,addr
+       fp_get_instr_data       w,2,\dest,\label,\addr
+.endm
+
+.macro fp_get_instr_long       dest,label,addr
+       fp_get_instr_data       l,4,\dest,\label,\addr
+.endm
+
+/* These macros are used to read from/write to user space
+ * on error we jump to the fixup section, load the fault
+ * address into %a0 and jump to the exit.
+ * (derived from <asm/uaccess.h>)
+ */
+.macro getuser size,src,dest,label,addr
+|      printf  ,"[\size<%08x]",1,\addr
+.Lu1\@:        moves\size      \src,\dest
+
+       .section .fixup,"ax"
+       .even
+.Lu2\@:        move.l  \addr,%a0
+       jra     \label
+       .previous
+
+       .section __ex_table,"a"
+       .align  4
+       .long   .Lu1\@,.Lu2\@
+       .previous
+.endm
+
+.macro putuser size,src,dest,label,addr
+|      printf  ,"[\size>%08x]",1,\addr
+.Lu1\@:        moves\size      \src,\dest
+.Lu2\@:
+
+       .section .fixup,"ax"
+       .even
+.Lu3\@:        move.l  \addr,%a0
+       jra     \label
+       .previous
+
+       .section __ex_table,"a"
+       .align  4
+       .long   .Lu1\@,.Lu3\@
+       .long   .Lu2\@,.Lu3\@
+       .previous
+.endm
+
+
+.macro movestack       nr,arg1,arg2,arg3,arg4,arg5
+       .if     \nr
+       movestack       (\nr-1),\arg2,\arg3,\arg4,\arg5
+       move.l  \arg1,-(%sp)
+       .endif
+.endm
+
+.macro printf  bit=-1,string,nr=0,arg1,arg2,arg3,arg4,arg5
+#ifdef FPU_EMU_DEBUG
+       .data
+.Lpdata\@:
+       .string "\string"
+       .previous
+
+       movem.l %d0/%d1/%a0/%a1,-(%sp)
+       .if     \bit+1
+#if 0
+       moveq   #\bit,%d0
+       andw    #7,%d0
+       btst    %d0,fp_debugprint+((31-\bit)/8)
+#else
+       btst    #\bit,fp_debugprint+((31-\bit)/8)
+#endif
+       jeq     .Lpskip\@
+       .endif
+       movestack       \nr,\arg1,\arg2,\arg3,\arg4,\arg5
+       pea     .Lpdata\@
+       jsr     printk
+       lea     ((\nr+1)*4,%sp),%sp
+.Lpskip\@:
+       movem.l (%sp)+,%d0/%d1/%a0/%a1
+#endif
+.endm
+
+.macro printx  bit,fp
+#ifdef FPU_EMU_DEBUG
+       movem.l %d0/%a0,-(%sp)
+       lea     \fp,%a0
+#if 0
+       moveq   #'+',%d0
+       tst.w   (%a0)
+       jeq     .Lx1\@
+       moveq   #'-',%d0
+.Lx1\@:        printf  \bit," %c",1,%d0
+       move.l  (4,%a0),%d0
+       bclr    #31,%d0
+       jne     .Lx2\@
+       printf  \bit,"0."
+       jra     .Lx3\@
+.Lx2\@:        printf  \bit,"1."
+.Lx3\@:        printf  \bit,"%08x%08x",2,%d0,%a0@(8)
+       move.w  (2,%a0),%d0
+       ext.l   %d0
+       printf  \bit,"E%04x",1,%d0
+#else
+       printf  \bit," %08x%08x%08x",3,%a0@,%a0@(4),%a0@(8)
+#endif
+       movem.l (%sp)+,%d0/%a0
+#endif
+.endm
+
+.macro debug   instr,args
+#ifdef FPU_EMU_DEBUG
+       \instr  \args
+#endif
+.endm
+
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_FRV_MATH_EMU_H */
+
diff --git a/arch/frv/include/asm/mb-regs.h b/arch/frv/include/asm/mb-regs.h
new file mode 100644 (file)
index 0000000..219e5f9
--- /dev/null
@@ -0,0 +1,200 @@
+/* mb-regs.h: motherboard registers
+ *
+ * Copyright (C) 2003, 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MB_REGS_H
+#define _ASM_MB_REGS_H
+
+#include <asm/cpu-irqs.h>
+#include <asm/sections.h>
+#include <asm/mem-layout.h>
+
+#ifndef __ASSEMBLY__
+/* gcc builtins, annotated */
+
+unsigned long __builtin_read8(volatile void __iomem *);
+unsigned long __builtin_read16(volatile void __iomem *);
+unsigned long __builtin_read32(volatile void __iomem *);
+void __builtin_write8(volatile void __iomem *, unsigned char);
+void __builtin_write16(volatile void __iomem *, unsigned short);
+void __builtin_write32(volatile void __iomem *, unsigned long);
+#endif
+
+#define __region_IO    KERNEL_IO_START /* the region from 0xe0000000 to 0xffffffff has suitable
+                                        * protection laid over the top for use in memory-mapped
+                                        * I/O
+                                        */
+
+#define __region_CS0   0xff000000      /* Boot ROMs area */
+
+#ifdef CONFIG_MB93091_VDK
+/*
+ * VDK motherboard and CPU card specific stuff
+ */
+
+#include <asm/mb93091-fpga-irqs.h>
+
+#define IRQ_CPU_MB93493_0      IRQ_CPU_EXTERNAL0
+#define IRQ_CPU_MB93493_1      IRQ_CPU_EXTERNAL1
+
+#define __region_CS2   0xe0000000      /* SLBUS/PCI I/O space */
+#define __region_CS2_M         0x0fffffff /* mask */
+#define __region_CS2_C         0x00000000 /* control */
+#define __region_CS5   0xf0000000      /* MB93493 CSC area (DAV daughter board) */
+#define __region_CS5_M         0x00ffffff
+#define __region_CS5_C         0x00010000
+#define __region_CS7   0xf1000000      /* CB70 CPU-card PCMCIA port I/O space */
+#define __region_CS7_M         0x00ffffff
+#define __region_CS7_C         0x00410701
+#define __region_CS1   0xfc000000      /* SLBUS/PCI bridge control registers */
+#define __region_CS1_M         0x000fffff
+#define __region_CS1_C         0x00000000
+#define __region_CS6   0xfc100000      /* CB70 CPU-card DM9000 LAN I/O space */
+#define __region_CS6_M         0x000fffff
+#define __region_CS6_C         0x00400707
+#define __region_CS3   0xfc200000      /* MB93493 CSR area (DAV daughter board) */
+#define __region_CS3_M         0x000fffff
+#define __region_CS3_C         0xc8100000
+#define __region_CS4   0xfd000000      /* CB70 CPU-card extra flash space */
+#define __region_CS4_M         0x00ffffff
+#define __region_CS4_C         0x00000f07
+
+#define __region_PCI_IO                (__region_CS2 + 0x04000000UL)
+#define __region_PCI_MEM       (__region_CS2 + 0x08000000UL)
+#define __flush_PCI_writes()                                           \
+do {                                                                   \
+       __builtin_write8((volatile void __iomem *) __region_PCI_MEM, 0);        \
+} while(0)
+
+#define __is_PCI_IO(addr) \
+       (((unsigned long)(addr) >> 24) - (__region_PCI_IO >> 24)  < (0x04000000UL >> 24))
+
+#define __is_PCI_MEM(addr) \
+       ((unsigned long)(addr) - __region_PCI_MEM < 0x08000000UL)
+
+#define __is_PCI_addr(addr) \
+       ((unsigned long)(addr) - __region_PCI_IO < 0x0c000000UL)
+
+#define __get_CLKSW()  ({ *(volatile unsigned long *)(__region_CS2 + 0x0130000cUL) & 0xffUL; })
+#define __get_CLKIN()  (__get_CLKSW() * 125U * 100000U / 24U)
+
+#ifndef __ASSEMBLY__
+extern int __nongprelbss mb93090_mb00_detected;
+#endif
+
+#define __addr_LEDS()          (__region_CS2 + 0x01200004UL)
+#ifdef CONFIG_MB93090_MB00
+#define __set_LEDS(X)                                                  \
+do {                                                                   \
+       if (mb93090_mb00_detected)                                      \
+               __builtin_write32((void __iomem *) __addr_LEDS(), ~(X));        \
+} while (0)
+#else
+#define __set_LEDS(X)
+#endif
+
+#define __addr_LCD()           (__region_CS2 + 0x01200008UL)
+#define __get_LCD(B)           __builtin_read32((volatile void __iomem *) (B))
+#define __set_LCD(B,X)         __builtin_write32((volatile void __iomem *) (B), (X))
+
+#define LCD_D                  0x000000ff              /* LCD data bus */
+#define LCD_RW                 0x00000100              /* LCD R/W signal */
+#define LCD_RS                 0x00000200              /* LCD Register Select */
+#define LCD_E                  0x00000400              /* LCD Start Enable Signal */
+
+#define LCD_CMD_CLEAR          (LCD_E|0x001)
+#define LCD_CMD_HOME           (LCD_E|0x002)
+#define LCD_CMD_CURSOR_INC     (LCD_E|0x004)
+#define LCD_CMD_SCROLL_INC     (LCD_E|0x005)
+#define LCD_CMD_CURSOR_DEC     (LCD_E|0x006)
+#define LCD_CMD_SCROLL_DEC     (LCD_E|0x007)
+#define LCD_CMD_OFF            (LCD_E|0x008)
+#define LCD_CMD_ON(CRSR,BLINK) (LCD_E|0x00c|(CRSR<<1)|BLINK)
+#define LCD_CMD_CURSOR_MOVE_L  (LCD_E|0x010)
+#define LCD_CMD_CURSOR_MOVE_R  (LCD_E|0x014)
+#define LCD_CMD_DISPLAY_SHIFT_L        (LCD_E|0x018)
+#define LCD_CMD_DISPLAY_SHIFT_R        (LCD_E|0x01c)
+#define LCD_CMD_FUNCSET(DL,N,F)        (LCD_E|0x020|(DL<<4)|(N<<3)|(F<<2))
+#define LCD_CMD_SET_CG_ADDR(X) (LCD_E|0x040|X)
+#define LCD_CMD_SET_DD_ADDR(X) (LCD_E|0x080|X)
+#define LCD_CMD_READ_BUSY      (LCD_E|LCD_RW)
+#define LCD_DATA_WRITE(X)      (LCD_E|LCD_RS|(X))
+#define LCD_DATA_READ          (LCD_E|LCD_RS|LCD_RW)
+
+#else
+/*
+ * PDK unit specific stuff
+ */
+
+#include <asm/mb93093-fpga-irqs.h>
+
+#define IRQ_CPU_MB93493_0      IRQ_CPU_EXTERNAL0
+#define IRQ_CPU_MB93493_1      IRQ_CPU_EXTERNAL1
+
+#define __region_CS5   0xf0000000      /* MB93493 CSC area (DAV daughter board) */
+#define __region_CS5_M         0x00ffffff /* mask */
+#define __region_CS5_C         0x00010000 /* control */
+#define __region_CS2   0x20000000      /* FPGA registers */
+#define __region_CS2_M         0x000fffff
+#define __region_CS2_C         0x00000000
+#define __region_CS1   0xfc100000      /* LAN registers */
+#define __region_CS1_M         0x000fffff
+#define __region_CS1_C         0x00010404
+#define __region_CS3   0xfc200000      /* MB93493 CSR area (DAV daughter board) */
+#define __region_CS3_M         0x000fffff
+#define __region_CS3_C         0xc8000000
+#define __region_CS4   0xfd000000      /* extra ROMs area */
+#define __region_CS4_M         0x00ffffff
+#define __region_CS4_C         0x00000f07
+
+#define __region_CS6   0xfe000000      /* not used - hide behind CPU resource I/O regs */
+#define __region_CS6_M         0x000fffff
+#define __region_CS6_C         0x00000f07
+#define __region_CS7   0xfe000000      /* not used - hide behind CPU resource I/O regs */
+#define __region_CS7_M         0x000fffff
+#define __region_CS7_C         0x00000f07
+
+#define __is_PCI_IO(addr)      0       /* no PCI */
+#define __is_PCI_MEM(addr)     0
+#define __is_PCI_addr(addr)    0
+#define __region_PCI_IO                0
+#define __region_PCI_MEM       0
+#define __flush_PCI_writes()   do { } while(0)
+
+#define __get_CLKSW()          0UL
+#define __get_CLKIN()          66000000UL
+
+#define __addr_LEDS()          (__region_CS2 + 0x00000023UL)
+#define __set_LEDS(X)          __builtin_write8((volatile void __iomem *) __addr_LEDS(), (X))
+
+#define __addr_FPGATR()                (__region_CS2 + 0x00000030UL)
+#define __set_FPGATR(X)                __builtin_write32((volatile void __iomem *) __addr_FPGATR(), (X))
+#define __get_FPGATR()         __builtin_read32((volatile void __iomem *) __addr_FPGATR())
+
+#define MB93093_FPGA_FPGATR_AUDIO_CLK  0x00000003
+
+#define __set_FPGATR_AUDIO_CLK(V) \
+       __set_FPGATR((__get_FPGATR() & ~MB93093_FPGA_FPGATR_AUDIO_CLK) | (V))
+
+#define MB93093_FPGA_FPGATR_AUDIO_CLK_OFF      0x0
+#define MB93093_FPGA_FPGATR_AUDIO_CLK_11MHz    0x1
+#define MB93093_FPGA_FPGATR_AUDIO_CLK_12MHz    0x2
+#define MB93093_FPGA_FPGATR_AUDIO_CLK_02MHz    0x3
+
+#define MB93093_FPGA_SWR_PUSHSWMASK    (0x1F<<26)
+#define MB93093_FPGA_SWR_PUSHSW4       (1<<29)
+
+#define __addr_FPGA_SWR                ((volatile void __iomem *)(__region_CS2 + 0x28UL))
+#define __get_FPGA_PUSHSW1_5() (__builtin_read32(__addr_FPGA_SWR) & MB93093_FPGA_SWR_PUSHSWMASK)
+
+
+#endif
+
+#endif /* _ASM_MB_REGS_H */
diff --git a/arch/frv/include/asm/mb86943a.h b/arch/frv/include/asm/mb86943a.h
new file mode 100644 (file)
index 0000000..e87ef92
--- /dev/null
@@ -0,0 +1,42 @@
+/* mb86943a.h: MB86943 SPARClite <-> PCI bridge registers
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MB86943A_H
+#define _ASM_MB86943A_H
+
+#include <asm/mb-regs.h>
+
+#define __reg_MB86943_sl_ctl           *(volatile uint32_t *) (__region_CS1 + 0x00)
+
+#define MB86943_SL_CTL_BUS_WIDTH_64    0x00000001
+#define MB86943_SL_CTL_AS_HOST         0x00000002
+#define MB86943_SL_CTL_DRCT_MASTER_SWAP        0x00000004
+#define MB86943_SL_CTL_DRCT_SLAVE_SWAP 0x00000008
+#define MB86943_SL_CTL_PCI_CONFIG_SWAP 0x00000010
+#define MB86943_SL_CTL_ECS0_ENABLE     0x00000020
+#define MB86943_SL_CTL_ECS1_ENABLE     0x00000040
+#define MB86943_SL_CTL_ECS2_ENABLE     0x00000080
+
+#define __reg_MB86943_ecs_ctl(N)       *(volatile uint32_t *) (__region_CS1 + 0x08 + (0x08*(N)))
+#define __reg_MB86943_ecs_range(N)     *(volatile uint32_t *) (__region_CS1 + 0x20 + (0x10*(N)))
+#define __reg_MB86943_ecs_base(N)      *(volatile uint32_t *) (__region_CS1 + 0x28 + (0x10*(N)))
+
+#define __reg_MB86943_sl_pci_io_range  *(volatile uint32_t *) (__region_CS1 + 0x50)
+#define __reg_MB86943_sl_pci_io_base   *(volatile uint32_t *) (__region_CS1 + 0x58)
+#define __reg_MB86943_sl_pci_mem_range *(volatile uint32_t *) (__region_CS1 + 0x60)
+#define __reg_MB86943_sl_pci_mem_base  *(volatile uint32_t *) (__region_CS1 + 0x68)
+#define __reg_MB86943_pci_sl_io_base   *(volatile uint32_t *) (__region_CS1 + 0x70)
+#define __reg_MB86943_pci_sl_mem_base  *(volatile uint32_t *) (__region_CS1 + 0x78)
+
+#define __reg_MB86943_pci_arbiter      *(volatile uint32_t *) (__region_CS2 + 0x01300014)
+#define MB86943_PCIARB_EN              0x00000001
+
+#endif /* _ASM_MB86943A_H */
diff --git a/arch/frv/include/asm/mb93091-fpga-irqs.h b/arch/frv/include/asm/mb93091-fpga-irqs.h
new file mode 100644 (file)
index 0000000..19778c5
--- /dev/null
@@ -0,0 +1,42 @@
+/* mb93091-fpga-irqs.h: MB93091 CPU board FPGA IRQs
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MB93091_FPGA_IRQS_H
+#define _ASM_MB93091_FPGA_IRQS_H
+
+#include <asm/irq.h>
+
+#ifndef __ASSEMBLY__
+
+/* IRQ IDs presented to drivers */
+enum {
+       IRQ_FPGA__UNUSED                        = IRQ_BASE_FPGA,
+       IRQ_FPGA_SYSINT_BUS_EXPANSION_1,
+       IRQ_FPGA_SL_BUS_EXPANSION_2,
+       IRQ_FPGA_PCI_INTD,
+       IRQ_FPGA_PCI_INTC,
+       IRQ_FPGA_PCI_INTB,
+       IRQ_FPGA_PCI_INTA,
+       IRQ_FPGA_SL_BUS_EXPANSION_7,
+       IRQ_FPGA_SYSINT_BUS_EXPANSION_8,
+       IRQ_FPGA_SL_BUS_EXPANSION_9,
+       IRQ_FPGA_MB86943_PCI_INTA,
+       IRQ_FPGA_MB86943_SLBUS_SIDE,
+       IRQ_FPGA_RTL8029_INTA,
+       IRQ_FPGA_SYSINT_BUS_EXPANSION_13,
+       IRQ_FPGA_SL_BUS_EXPANSION_14,
+       IRQ_FPGA_NMI,
+};
+
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_MB93091_FPGA_IRQS_H */
diff --git a/arch/frv/include/asm/mb93093-fpga-irqs.h b/arch/frv/include/asm/mb93093-fpga-irqs.h
new file mode 100644 (file)
index 0000000..590266b
--- /dev/null
@@ -0,0 +1,29 @@
+/* mb93093-fpga-irqs.h: MB93093 CPU board FPGA IRQs
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MB93093_FPGA_IRQS_H
+#define _ASM_MB93093_FPGA_IRQS_H
+
+#include <asm/irq.h>
+
+#ifndef __ASSEMBLY__
+
+/* IRQ IDs presented to drivers */
+enum {
+       IRQ_FPGA_PUSH_BUTTON_SW1_5              = IRQ_BASE_FPGA + 8,
+       IRQ_FPGA_ROCKER_C_SW8                   = IRQ_BASE_FPGA + 9,
+       IRQ_FPGA_ROCKER_C_SW9                   = IRQ_BASE_FPGA + 10,
+};
+
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_MB93093_FPGA_IRQS_H */
diff --git a/arch/frv/include/asm/mb93493-irqs.h b/arch/frv/include/asm/mb93493-irqs.h
new file mode 100644 (file)
index 0000000..82c7aed
--- /dev/null
@@ -0,0 +1,50 @@
+/* mb93493-irqs.h: MB93493 companion chip IRQs
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MB93493_IRQS_H
+#define _ASM_MB93493_IRQS_H
+
+#include <asm/irq.h>
+
+#ifndef __ASSEMBLY__
+
+/* IRQ IDs presented to drivers */
+enum {
+       IRQ_MB93493_VDC                 = IRQ_BASE_MB93493 + 0,
+       IRQ_MB93493_VCC                 = IRQ_BASE_MB93493 + 1,
+       IRQ_MB93493_AUDIO_OUT           = IRQ_BASE_MB93493 + 2,
+       IRQ_MB93493_I2C_0               = IRQ_BASE_MB93493 + 3,
+       IRQ_MB93493_I2C_1               = IRQ_BASE_MB93493 + 4,
+       IRQ_MB93493_USB                 = IRQ_BASE_MB93493 + 5,
+       IRQ_MB93493_LOCAL_BUS           = IRQ_BASE_MB93493 + 7,
+       IRQ_MB93493_PCMCIA              = IRQ_BASE_MB93493 + 8,
+       IRQ_MB93493_GPIO                = IRQ_BASE_MB93493 + 9,
+       IRQ_MB93493_AUDIO_IN            = IRQ_BASE_MB93493 + 10,
+};
+
+/* IRQ multiplexor mappings */
+#define ROUTE_VIA_IRQ0 0       /* route IRQ by way of CPU external IRQ 0 */
+#define ROUTE_VIA_IRQ1 1       /* route IRQ by way of CPU external IRQ 1 */
+
+#define IRQ_MB93493_VDC_ROUTE          ROUTE_VIA_IRQ0
+#define IRQ_MB93493_VCC_ROUTE          ROUTE_VIA_IRQ1
+#define IRQ_MB93493_AUDIO_OUT_ROUTE    ROUTE_VIA_IRQ1
+#define IRQ_MB93493_I2C_0_ROUTE                ROUTE_VIA_IRQ1
+#define IRQ_MB93493_I2C_1_ROUTE                ROUTE_VIA_IRQ1
+#define IRQ_MB93493_USB_ROUTE          ROUTE_VIA_IRQ1
+#define IRQ_MB93493_LOCAL_BUS_ROUTE    ROUTE_VIA_IRQ1
+#define IRQ_MB93493_PCMCIA_ROUTE       ROUTE_VIA_IRQ1
+#define IRQ_MB93493_GPIO_ROUTE         ROUTE_VIA_IRQ1
+#define IRQ_MB93493_AUDIO_IN_ROUTE     ROUTE_VIA_IRQ1
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_MB93493_IRQS_H */
diff --git a/arch/frv/include/asm/mb93493-regs.h b/arch/frv/include/asm/mb93493-regs.h
new file mode 100644 (file)
index 0000000..8a1f6aa
--- /dev/null
@@ -0,0 +1,281 @@
+/* mb93493-regs.h: MB93493 companion chip registers
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MB93493_REGS_H
+#define _ASM_MB93493_REGS_H
+
+#include <asm/mb-regs.h>
+#include <asm/mb93493-irqs.h>
+
+#define __addr_MB93493(X)      ((volatile unsigned long *)(__region_CS3 + (X)))
+#define __get_MB93493(X)       ({ *(volatile unsigned long *)(__region_CS3 + (X)); })
+
+#define __set_MB93493(X,V)                                             \
+do {                                                                   \
+       *(volatile unsigned long *)(__region_CS3 + (X)) = (V); mb();    \
+} while(0)
+
+#define __get_MB93493_STSR(X)  __get_MB93493(0x3c0 + (X) * 4)
+#define __set_MB93493_STSR(X,V)        __set_MB93493(0x3c0 + (X) * 4, (V))
+#define MB93493_STSR_EN
+
+#define __addr_MB93493_IQSR(X) __addr_MB93493(0x3d0 + (X) * 4)
+#define __get_MB93493_IQSR(X)  __get_MB93493(0x3d0 + (X) * 4)
+#define __set_MB93493_IQSR(X,V)        __set_MB93493(0x3d0 + (X) * 4, (V))
+
+#define __get_MB93493_DQSR(X)  __get_MB93493(0x3e0 + (X) * 4)
+#define __set_MB93493_DQSR(X,V)        __set_MB93493(0x3e0 + (X) * 4, (V))
+
+#define __get_MB93493_LBSER()  __get_MB93493(0x3f0)
+#define __set_MB93493_LBSER(V) __set_MB93493(0x3f0, (V))
+
+#define MB93493_LBSER_VDC      0x00010000
+#define MB93493_LBSER_VCC      0x00020000
+#define MB93493_LBSER_AUDIO    0x00040000
+#define MB93493_LBSER_I2C_0    0x00080000
+#define MB93493_LBSER_I2C_1    0x00100000
+#define MB93493_LBSER_USB      0x00200000
+#define MB93493_LBSER_GPIO     0x00800000
+#define MB93493_LBSER_PCMCIA   0x01000000
+
+#define __get_MB93493_LBSR()   __get_MB93493(0x3fc)
+#define __set_MB93493_LBSR(V)  __set_MB93493(0x3fc, (V))
+
+/*
+ * video display controller
+ */
+#define __get_MB93493_VDC(X)   __get_MB93493(MB93493_VDC_##X)
+#define __set_MB93493_VDC(X,V) __set_MB93493(MB93493_VDC_##X, (V))
+
+#define MB93493_VDC_RCURSOR    0x140   /* cursor position */
+#define MB93493_VDC_RCT1       0x144   /* cursor colour 1 */
+#define MB93493_VDC_RCT2       0x148   /* cursor colour 2 */
+#define MB93493_VDC_RHDC       0x150   /* horizontal display period */
+#define MB93493_VDC_RH_MARGINS 0x154   /* horizontal margin sizes */
+#define MB93493_VDC_RVDC       0x158   /* vertical display period */
+#define MB93493_VDC_RV_MARGINS 0x15c   /* vertical margin sizes */
+#define MB93493_VDC_RC         0x170   /* VDC control */
+#define MB93493_VDC_RCLOCK     0x174   /* clock divider, DMA req delay */
+#define MB93493_VDC_RBLACK     0x178   /* black insert sizes */
+#define MB93493_VDC_RS         0x17c   /* VDC status */
+
+#define __addr_MB93493_VDC_BCI(X)  ({ (volatile unsigned long *)(__region_CS3 + 0x000 + (X)); })
+#define __addr_MB93493_VDC_TPO(X)  (__region_CS3 + 0x1c0 + (X))
+
+#define VDC_TPO_WIDTH          32
+
+#define VDC_RC_DSR             0x00000080      /* VDC master reset */
+
+#define VDC_RS_IT              0x00060000      /* interrupt indicators */
+#define VDC_RS_IT_UNDERFLOW    0x00040000      /* - underflow event */
+#define VDC_RS_IT_VSYNC                0x00020000      /* - VSYNC event */
+#define VDC_RS_DFI             0x00010000      /* current interlace field number */
+#define VDC_RS_DFI_TOP         0x00000000      /* - top field */
+#define VDC_RS_DFI_BOTTOM      0x00010000      /* - bottom field */
+#define VDC_RS_DCSR            0x00000010      /* cursor state */
+#define VDC_RS_DCM             0x00000003      /* display mode */
+#define VDC_RS_DCM_DISABLED    0x00000000      /* - display disabled */
+#define VDC_RS_DCM_STOPPED     0x00000001      /* - VDC stopped */
+#define VDC_RS_DCM_FREERUNNING 0x00000002      /* - VDC free-running */
+#define VDC_RS_DCM_TRANSFERRING        0x00000003      /* - data being transferred to VDC */
+
+/*
+ * video capture controller
+ */
+#define __get_MB93493_VCC(X)   __get_MB93493(MB93493_VCC_##X)
+#define __set_MB93493_VCC(X,V) __set_MB93493(MB93493_VCC_##X, (V))
+
+#define MB93493_VCC_RREDUCT    0x104   /* reduction rate */
+#define MB93493_VCC_RHY                0x108   /* horizontal brightness filter coefficients */
+#define MB93493_VCC_RHC                0x10c   /* horizontal colour-difference filter coefficients */
+#define MB93493_VCC_RHSIZE     0x110   /* horizontal cycle sizes */
+#define MB93493_VCC_RHBC       0x114   /* horizontal back porch size */
+#define MB93493_VCC_RVCC       0x118   /* vertical capture period */
+#define MB93493_VCC_RVBC       0x11c   /* vertical back porch period */
+#define MB93493_VCC_RV         0x120   /* vertical filter coefficients */
+#define MB93493_VCC_RDTS       0x128   /* DMA transfer size */
+#define MB93493_VCC_RDTS_4B    0x01000000      /* 4-byte transfer */
+#define MB93493_VCC_RDTS_32B   0x03000000      /* 32-byte transfer */
+#define MB93493_VCC_RDTS_SHIFT 24
+#define MB93493_VCC_RCC                0x130   /* VCC control */
+#define MB93493_VCC_RIS                0x134   /* VCC interrupt status */
+
+#define __addr_MB93493_VCC_TPI(X)  (__region_CS3 + 0x180 + (X))
+
+#define VCC_RHSIZE_RHCC                0x000007ff
+#define VCC_RHSIZE_RHCC_SHIFT  0
+#define VCC_RHSIZE_RHTCC       0x0fff0000
+#define VCC_RHSIZE_RHTCC_SHIFT 16
+
+#define VCC_RVBC_RVBC          0x00003f00
+#define VCC_RVBC_RVBC_SHIFT    8
+
+#define VCC_RREDUCT_RHR                0x07ff0000
+#define VCC_RREDUCT_RHR_SHIFT  16
+#define VCC_RREDUCT_RVR                0x000007ff
+#define VCC_RREDUCT_RVR_SHIFT  0
+
+#define VCC_RCC_CE             0x00000001      /* VCC enable */
+#define VCC_RCC_CS             0x00000002      /* request video capture start */
+#define VCC_RCC_CPF            0x0000000c      /* pixel format */
+#define VCC_RCC_CPF_YCBCR_16   0x00000000      /* - YCbCr 4:2:2 16-bit format */
+#define VCC_RCC_CPF_RGB                0x00000004      /* - RGB 4:4:4 format */
+#define VCC_RCC_CPF_YCBCR_24   0x00000008      /* - YCbCr 4:2:2 24-bit format */
+#define VCC_RCC_CPF_BT656      0x0000000c      /* - ITU R-BT.656 format */
+#define VCC_RCC_CPF_SHIFT      2
+#define VCC_RCC_CSR            0x00000080      /* request reset */
+#define VCC_RCC_HSIP           0x00000100      /* HSYNC polarity */
+#define VCC_RCC_HSIP_LOACT     0x00000000      /* - low active */
+#define VCC_RCC_HSIP_HIACT     0x00000100      /* - high active */
+#define VCC_RCC_VSIP           0x00000200      /* VSYNC polarity */
+#define VCC_RCC_VSIP_LOACT     0x00000000      /* - low active */
+#define VCC_RCC_VSIP_HIACT     0x00000200      /* - high active */
+#define VCC_RCC_CIE            0x00000800      /* interrupt enable */
+#define VCC_RCC_CFP            0x00001000      /* RGB pixel packing */
+#define VCC_RCC_CFP_4TO3       0x00000000      /* - pack 4 pixels into 3 words */
+#define VCC_RCC_CFP_1TO1       0x00001000      /* - pack 1 pixel into 1 words */
+#define VCC_RCC_CSM            0x00006000      /* interlace specification */
+#define VCC_RCC_CSM_ONEPASS    0x00002000      /* - non-interlaced */
+#define VCC_RCC_CSM_INTERLACE  0x00004000      /* - interlaced */
+#define VCC_RCC_CSM_SHIFT      13
+#define VCC_RCC_ES             0x00008000      /* capture start polarity */
+#define VCC_RCC_ES_NEG         0x00000000      /* - negative edge */
+#define VCC_RCC_ES_POS         0x00008000      /* - positive edge */
+#define VCC_RCC_IFI            0x00080000      /* inferlace field evaluation reverse */
+#define VCC_RCC_FDTS           0x00300000      /* interlace field start */
+#define VCC_RCC_FDTS_3_8       0x00000000      /* - 3/8 of horizontal entire cycle */
+#define VCC_RCC_FDTS_1_4       0x00100000      /* - 1/4 of horizontal entire cycle */
+#define VCC_RCC_FDTS_7_16      0x00200000      /* - 7/16 of horizontal entire cycle */
+#define VCC_RCC_FDTS_SHIFT     20
+#define VCC_RCC_MOV            0x00400000      /* test bit - always set to 1 */
+#define VCC_RCC_STP            0x00800000      /* request video capture stop */
+#define VCC_RCC_TO             0x01000000      /* input during top-field only */
+
+#define VCC_RIS_VSYNC          0x01000000      /* VSYNC interrupt */
+#define VCC_RIS_OV             0x02000000      /* overflow interrupt */
+#define VCC_RIS_BOTTOM         0x08000000      /* interlace bottom field */
+#define VCC_RIS_STARTED                0x10000000      /* capture started */
+
+/*
+ * I2C
+ */
+#define MB93493_I2C_BSR        0x340           /* bus status */
+#define MB93493_I2C_BCR                0x344           /* bus control */
+#define MB93493_I2C_CCR                0x348           /* clock control */
+#define MB93493_I2C_ADR                0x34c           /* address */
+#define MB93493_I2C_DTR                0x350           /* data */
+#define MB93493_I2C_BC2R       0x35c           /* bus control 2 */
+
+#define __addr_MB93493_I2C(port,X)   (__region_CS3 + MB93493_I2C_##X + ((port)*0x20))
+#define __get_MB93493_I2C(port,X)    __get_MB93493(MB93493_I2C_##X + ((port)*0x20))
+#define __set_MB93493_I2C(port,X,V)  __set_MB93493(MB93493_I2C_##X + ((port)*0x20), (V))
+
+#define I2C_BSR_BB     (1 << 7)
+
+/*
+ * audio controller (I2S) registers
+ */
+#define __get_MB93493_I2S(X)   __get_MB93493(MB93493_I2S_##X)
+#define __set_MB93493_I2S(X,V) __set_MB93493(MB93493_I2S_##X, (V))
+
+#define MB93493_I2S_ALDR       0x300           /* L-channel data */
+#define MB93493_I2S_ARDR       0x304           /* R-channel data */
+#define MB93493_I2S_APDR       0x308           /* 16-bit packed data */
+#define MB93493_I2S_AISTR      0x310           /* status */
+#define MB93493_I2S_AICR       0x314           /* control */
+
+#define __addr_MB93493_I2S_ALDR(X)     (__region_CS3 + MB93493_I2S_ALDR + (X))
+#define __addr_MB93493_I2S_ARDR(X)     (__region_CS3 + MB93493_I2S_ARDR + (X))
+#define __addr_MB93493_I2S_APDR(X)     (__region_CS3 + MB93493_I2S_APDR + (X))
+#define __addr_MB93493_I2S_ADR(X)      (__region_CS3 + 0x320 + (X))
+
+#define I2S_AISTR_OTST         0x00000003      /* status of output data transfer */
+#define I2S_AISTR_OTR          0x00000010      /* output transfer request pending */
+#define I2S_AISTR_OUR          0x00000020      /* output FIFO underrun detected */
+#define I2S_AISTR_OOR          0x00000040      /* output FIFO overrun detected */
+#define I2S_AISTR_ODS          0x00000100      /* output DMA transfer size */
+#define I2S_AISTR_ODE          0x00000400      /* output DMA transfer request enable */
+#define I2S_AISTR_OTRIE                0x00001000      /* output transfer request interrupt enable */
+#define I2S_AISTR_OURIE                0x00002000      /* output FIFO underrun interrupt enable */
+#define I2S_AISTR_OORIE                0x00004000      /* output FIFO overrun interrupt enable */
+#define I2S_AISTR__OUT_MASK    0x00007570
+#define I2S_AISTR_ITST         0x00030000      /* status of input data transfer */
+#define I2S_AISTR_ITST_SHIFT   16
+#define I2S_AISTR_ITR          0x00100000      /* input transfer request pending */
+#define I2S_AISTR_IUR          0x00200000      /* input FIFO underrun detected */
+#define I2S_AISTR_IOR          0x00400000      /* input FIFO overrun detected */
+#define I2S_AISTR_IDS          0x01000000      /* input DMA transfer size */
+#define I2S_AISTR_IDE          0x04000000      /* input DMA transfer request enable */
+#define I2S_AISTR_ITRIE                0x10000000      /* input transfer request interrupt enable */
+#define I2S_AISTR_IURIE                0x20000000      /* input FIFO underrun interrupt enable */
+#define I2S_AISTR_IORIE                0x40000000      /* input FIFO overrun interrupt enable */
+#define I2S_AISTR__IN_MASK     0x75700000
+
+#define I2S_AICR_MI            0x00000001      /* mono input requested */
+#define I2S_AICR_AMI           0x00000002      /* relation between LRCKI/FS1 and SDI */
+#define I2S_AICR_LRI           0x00000004      /* function of LRCKI pin */
+#define I2S_AICR_SDMI          0x00000070      /* format of input audio data */
+#define I2S_AICR_SDMI_SHIFT    4
+#define I2S_AICR_CLI           0x00000080      /* input FIFO clearing control */
+#define I2S_AICR_IM            0x00000300      /* input state control */
+#define I2S_AICR_IM_SHIFT      8
+#define I2S_AICR__IN_MASK      0x000003f7
+#define I2S_AICR_MO            0x00001000      /* mono output requested */
+#define I2S_AICR_AMO           0x00002000      /* relation between LRCKO/FS0 and SDO */
+#define I2S_AICR_AMO_SHIFT     13
+#define I2S_AICR_LRO           0x00004000      /* function of LRCKO pin */
+#define I2S_AICR_SDMO          0x00070000      /* format of output audio data */
+#define I2S_AICR_SDMO_SHIFT    16
+#define I2S_AICR_CLO           0x00080000      /* output FIFO clearing control */
+#define I2S_AICR_OM            0x00100000      /* output state control */
+#define I2S_AICR__OUT_MASK     0x001f7000
+#define I2S_AICR_DIV           0x03000000      /* frequency division rate */
+#define I2S_AICR_DIV_SHIFT     24
+#define I2S_AICR_FL            0x20000000      /* frame length */
+#define I2S_AICR_FS            0x40000000      /* frame sync method */
+#define I2S_AICR_ME            0x80000000      /* master enable */
+
+/*
+ * PCMCIA
+ */
+#define __addr_MB93493_PCMCIA(X)  ((volatile unsigned long *)(__region_CS5 + (X)))
+
+/*
+ * GPIO
+ */
+#define __get_MB93493_GPIO_PDR(X)      __get_MB93493(0x380 + (X) * 0xc0)
+#define __set_MB93493_GPIO_PDR(X,V)    __set_MB93493(0x380 + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_GPDR(X)     __get_MB93493(0x384 + (X) * 0xc0)
+#define __set_MB93493_GPIO_GPDR(X,V)   __set_MB93493(0x384 + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_SIR(X)      __get_MB93493(0x388 + (X) * 0xc0)
+#define __set_MB93493_GPIO_SIR(X,V)    __set_MB93493(0x388 + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_SOR(X)      __get_MB93493(0x38c + (X) * 0xc0)
+#define __set_MB93493_GPIO_SOR(X,V)    __set_MB93493(0x38c + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_PDSR(X)     __get_MB93493(0x390 + (X) * 0xc0)
+#define __set_MB93493_GPIO_PDSR(X,V)   __set_MB93493(0x390 + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_PDCR(X)     __get_MB93493(0x394 + (X) * 0xc0)
+#define __set_MB93493_GPIO_PDCR(X,V)   __set_MB93493(0x394 + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_INTST(X)    __get_MB93493(0x398 + (X) * 0xc0)
+#define __set_MB93493_GPIO_INTST(X,V)  __set_MB93493(0x398 + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_IEHL(X)     __get_MB93493(0x39c + (X) * 0xc0)
+#define __set_MB93493_GPIO_IEHL(X,V)   __set_MB93493(0x39c + (X) * 0xc0, (V))
+
+#define __get_MB93493_GPIO_IELH(X)     __get_MB93493(0x3a0 + (X) * 0xc0)
+#define __set_MB93493_GPIO_IELH(X,V)   __set_MB93493(0x3a0 + (X) * 0xc0, (V))
+
+#endif /* _ASM_MB93493_REGS_H */
diff --git a/arch/frv/include/asm/mc146818rtc.h b/arch/frv/include/asm/mc146818rtc.h
new file mode 100644 (file)
index 0000000..90dfb7a
--- /dev/null
@@ -0,0 +1,16 @@
+/* mc146818rtc.h: RTC defs
+ *
+ * Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MC146818RTC_H
+#define _ASM_MC146818RTC_H
+
+
+#endif /* _ASM_MC146818RTC_H */
diff --git a/arch/frv/include/asm/mem-layout.h b/arch/frv/include/asm/mem-layout.h
new file mode 100644 (file)
index 0000000..2947764
--- /dev/null
@@ -0,0 +1,86 @@
+/* mem-layout.h: memory layout
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MEM_LAYOUT_H
+#define _ASM_MEM_LAYOUT_H
+
+#ifndef __ASSEMBLY__
+#define __UL(X)        ((unsigned long) (X))
+#else
+#define __UL(X)        (X)
+#endif
+
+/*
+ * PAGE_SHIFT determines the page size
+ */
+#define PAGE_SHIFT                     14
+
+#ifndef __ASSEMBLY__
+#define PAGE_SIZE                      (1UL << PAGE_SHIFT)
+#else
+#define PAGE_SIZE                      (1 << PAGE_SHIFT)
+#endif
+
+#define PAGE_MASK                      (~(PAGE_SIZE-1))
+
+/*
+ * the slab must be aligned such that load- and store-double instructions don't
+ * fault if used
+ */
+#define        ARCH_KMALLOC_MINALIGN           8
+#define        ARCH_SLAB_MINALIGN              8
+
+/*****************************************************************************/
+/*
+ * virtual memory layout from kernel's point of view
+ */
+#define PAGE_OFFSET                    ((unsigned long) &__page_offset)
+
+#ifdef CONFIG_MMU
+
+/* see Documentation/frv/mmu-layout.txt */
+#define KERNEL_LOWMEM_START            __UL(0xc0000000)
+#define KERNEL_LOWMEM_END              __UL(0xd0000000)
+#define VMALLOC_START                  __UL(0xd0000000)
+#define VMALLOC_END                    __UL(0xd8000000)
+#define PKMAP_BASE                     __UL(0xd8000000)
+#define PKMAP_END                      __UL(0xdc000000)
+#define KMAP_ATOMIC_SECONDARY_FRAME    __UL(0xdc000000)
+#define KMAP_ATOMIC_PRIMARY_FRAME      __UL(0xdd000000)
+
+#endif
+
+#define KERNEL_IO_START                        __UL(0xe0000000)
+
+
+/*****************************************************************************/
+/*
+ * memory layout from userspace's point of view
+ */
+#define BRK_BASE                       __UL(2 * 1024 * 1024 + PAGE_SIZE)
+#define STACK_TOP                      __UL(2 * 1024 * 1024)
+#define STACK_TOP_MAX                  __UL(0xc0000000)
+
+/* userspace process size */
+#ifdef CONFIG_MMU
+#define TASK_SIZE                      (PAGE_OFFSET)
+#else
+#define TASK_SIZE                      __UL(0xFFFFFFFFUL)
+#endif
+
+/* base of area at which unspecified mmaps will start */
+#ifdef CONFIG_BINFMT_ELF_FDPIC
+#define TASK_UNMAPPED_BASE             __UL(16 * 1024 * 1024)
+#else
+#define TASK_UNMAPPED_BASE             __UL(TASK_SIZE / 3)
+#endif
+
+#endif /* _ASM_MEM_LAYOUT_H */
diff --git a/arch/frv/include/asm/mman.h b/arch/frv/include/asm/mman.h
new file mode 100644 (file)
index 0000000..b4371e9
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef __ASM_MMAN_H__
+#define __ASM_MMAN_H__
+
+#include <asm-generic/mman.h>
+
+#define MAP_GROWSDOWN  0x0100          /* stack-like segment */
+#define MAP_DENYWRITE  0x0800          /* ETXTBSY */
+#define MAP_EXECUTABLE 0x1000          /* mark it as an executable */
+#define MAP_LOCKED     0x2000          /* pages are locked */
+#define MAP_NORESERVE  0x4000          /* don't check for reservations */
+#define MAP_POPULATE   0x8000          /* populate (prefault) pagetables */
+#define MAP_NONBLOCK   0x10000         /* do not block on IO */
+
+#define MCL_CURRENT    1               /* lock all current mappings */
+#define MCL_FUTURE     2               /* lock all future mappings */
+
+#endif /* __ASM_MMAN_H__ */
+
diff --git a/arch/frv/include/asm/mmu.h b/arch/frv/include/asm/mmu.h
new file mode 100644 (file)
index 0000000..86ca0e8
--- /dev/null
@@ -0,0 +1,41 @@
+/* mmu.h: memory management context for FR-V with or without MMU support
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_MMU_H
+#define _ASM_MMU_H
+
+typedef struct {
+#ifdef CONFIG_MMU
+       struct list_head id_link;               /* link in list of context ID owners */
+       unsigned short  id;                     /* MMU context ID */
+       unsigned short  id_busy;                /* true if ID is in CXNR */
+       unsigned long   itlb_cached_pge;        /* [SCR0] PGE cached for insn TLB handler */
+       unsigned long   itlb_ptd_mapping;       /* [DAMR4] PTD mapping for itlb cached PGE */
+       unsigned long   dtlb_cached_pge;        /* [SCR1] PGE cached for data TLB handler */
+       unsigned long   dtlb_ptd_mapping;       /* [DAMR5] PTD mapping for dtlb cached PGE */
+
+#else
+       unsigned long           end_brk;
+
+#endif
+
+#ifdef CONFIG_BINFMT_ELF_FDPIC
+       unsigned long   exec_fdpic_loadmap;
+       unsigned long   interp_fdpic_loadmap;
+#endif
+
+} mm_context_t;
+
+#ifdef CONFIG_MMU
+extern int __nongpreldata cxn_pinned;
+extern int cxn_pin_by_pid(pid_t pid);
+#endif
+
+#endif /* _ASM_MMU_H */
diff --git a/arch/frv/include/asm/mmu_context.h b/arch/frv/include/asm/mmu_context.h
new file mode 100644 (file)
index 0000000..c7daa39
--- /dev/null
@@ -0,0 +1,50 @@
+/* mmu_context.h: MMU context management routines
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_MMU_CONTEXT_H
+#define _ASM_MMU_CONTEXT_H
+
+#include <asm/setup.h>
+#include <asm/page.h>
+#include <asm/pgalloc.h>
+#include <asm-generic/mm_hooks.h>
+
+static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
+{
+}
+
+#ifdef CONFIG_MMU
+extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
+extern void change_mm_context(mm_context_t *old, mm_context_t *ctx, pgd_t *_pgd);
+extern void destroy_context(struct mm_struct *mm);
+
+#else
+#define init_new_context(tsk, mm)              ({ 0; })
+#define change_mm_context(old, ctx, _pml4)     do {} while(0)
+#define destroy_context(mm)                    do {} while(0)
+#endif
+
+#define switch_mm(prev, next, tsk)                                             \
+do {                                                                           \
+       if (prev != next)                                                       \
+               change_mm_context(&prev->context, &next->context, next->pgd);   \
+} while(0)
+
+#define activate_mm(prev, next)                                                \
+do {                                                                   \
+       change_mm_context(&prev->context, &next->context, next->pgd);   \
+} while(0)
+
+#define deactivate_mm(tsk, mm)                 \
+do {                                           \
+} while(0)
+
+#endif
diff --git a/arch/frv/include/asm/module.h b/arch/frv/include/asm/module.h
new file mode 100644 (file)
index 0000000..3d5c636
--- /dev/null
@@ -0,0 +1,28 @@
+/* module.h: FRV module stuff
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_MODULE_H
+#define _ASM_MODULE_H
+
+struct mod_arch_specific
+{
+};
+
+#define Elf_Shdr       Elf32_Shdr
+#define Elf_Sym                Elf32_Sym
+#define Elf_Ehdr       Elf32_Ehdr
+
+/*
+ * Include the architecture version.
+ */
+#define MODULE_ARCH_VERMAGIC __stringify(PROCESSOR_MODEL_NAME) " "
+
+#endif /* _ASM_MODULE_H */
+
diff --git a/arch/frv/include/asm/msgbuf.h b/arch/frv/include/asm/msgbuf.h
new file mode 100644 (file)
index 0000000..97ceb55
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef _ASM_MSGBUF_H
+#define _ASM_MSGBUF_H
+
+/*
+ * The msqid64_ds structure for FR-V architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct msqid64_ds {
+       struct ipc64_perm       msg_perm;
+       __kernel_time_t         msg_stime;      /* last msgsnd time */
+       unsigned long           __unused1;
+       __kernel_time_t         msg_rtime;      /* last msgrcv time */
+       unsigned long           __unused2;
+       __kernel_time_t         msg_ctime;      /* last change time */
+       unsigned long           __unused3;
+       unsigned long           msg_cbytes;     /* current number of bytes on queue */
+       unsigned long           msg_qnum;       /* number of messages in queue */
+       unsigned long           msg_qbytes;     /* max number of bytes on queue */
+       __kernel_pid_t          msg_lspid;      /* pid of last msgsnd */
+       __kernel_pid_t          msg_lrpid;      /* last receive pid */
+       unsigned long           __unused4;
+       unsigned long           __unused5;
+};
+
+#endif /* _ASM_MSGBUF_H */
+
diff --git a/arch/frv/include/asm/mutex.h b/arch/frv/include/asm/mutex.h
new file mode 100644 (file)
index 0000000..458c1f7
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ * Pull in the generic implementation for the mutex fastpath.
+ *
+ * TODO: implement optimized primitives instead, or leave the generic
+ * implementation in place, or pick the atomic_xchg() based generic
+ * implementation. (see asm-generic/mutex-xchg.h for details)
+ */
+
+#include <asm-generic/mutex-dec.h>
diff --git a/arch/frv/include/asm/page.h b/arch/frv/include/asm/page.h
new file mode 100644 (file)
index 0000000..bd9c220
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef _ASM_PAGE_H
+#define _ASM_PAGE_H
+
+#include <asm/virtconvert.h>
+#include <asm/mem-layout.h>
+#include <asm/sections.h>
+#include <asm/setup.h>
+
+#ifndef __ASSEMBLY__
+
+#define get_user_page(vaddr)                   __get_free_page(GFP_KERNEL)
+#define free_user_page(page, addr)             free_page(addr)
+
+#define clear_page(pgaddr)                     memset((pgaddr), 0, PAGE_SIZE)
+#define copy_page(to,from)                     memcpy((to), (from), PAGE_SIZE)
+
+#define clear_user_page(pgaddr, vaddr, page)   memset((pgaddr), 0, PAGE_SIZE)
+#define copy_user_page(vto, vfrom, vaddr, topg)        memcpy((vto), (vfrom), PAGE_SIZE)
+
+/*
+ * These are used to make use of C type-checking..
+ */
+typedef struct { unsigned long pte;    } pte_t;
+typedef struct { unsigned long ste[64];} pmd_t;
+typedef struct { pmd_t         pue[1]; } pud_t;
+typedef struct { pud_t         pge[1]; } pgd_t;
+typedef struct { unsigned long pgprot; } pgprot_t;
+typedef struct page *pgtable_t;
+
+#define pte_val(x)     ((x).pte)
+#define pmd_val(x)     ((x).ste[0])
+#define pud_val(x)     ((x).pue[0])
+#define pgd_val(x)     ((x).pge[0])
+#define pgprot_val(x)  ((x).pgprot)
+
+#define __pte(x)       ((pte_t) { (x) } )
+#define __pmd(x)       ((pmd_t) { (x) } )
+#define __pud(x)       ((pud_t) { (x) } )
+#define __pgd(x)       ((pgd_t) { (x) } )
+#define __pgprot(x)    ((pgprot_t) { (x) } )
+#define PTE_MASK       PAGE_MASK
+
+#define devmem_is_allowed(pfn) 1
+
+#define __pa(vaddr)            virt_to_phys((void *) (unsigned long) (vaddr))
+#define __va(paddr)            phys_to_virt((unsigned long) (paddr))
+
+#define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
+
+extern unsigned long max_low_pfn;
+extern unsigned long min_low_pfn;
+extern unsigned long max_pfn;
+
+#ifdef CONFIG_MMU
+#define pfn_valid(pfn)         ((pfn) < max_mapnr)
+#else
+#define ARCH_PFN_OFFSET                (PAGE_OFFSET >> PAGE_SHIFT)
+#define pfn_valid(pfn)         ((pfn) >= min_low_pfn && (pfn) < max_low_pfn)
+
+#endif
+
+#define virt_to_page(kaddr)    pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
+#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
+
+
+#ifdef CONFIG_MMU
+#define VM_DATA_DEFAULT_FLAGS \
+       (VM_READ | VM_WRITE | \
+       ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
+                VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#include <asm-generic/memory_model.h>
+#include <asm-generic/page.h>
+
+#endif /* _ASM_PAGE_H */
diff --git a/arch/frv/include/asm/param.h b/arch/frv/include/asm/param.h
new file mode 100644 (file)
index 0000000..6859dd5
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _ASM_PARAM_H
+#define _ASM_PARAM_H
+
+#ifdef __KERNEL__
+#define HZ             CONFIG_HZ       /* Internal kernel timer frequency */
+#define USER_HZ                100             /* .. some user interfaces are in "ticks" */
+#define CLOCKS_PER_SEC (USER_HZ)       /* like times() */
+#endif
+
+#ifndef HZ
+#define HZ 100
+#endif
+
+#define EXEC_PAGESIZE  16384
+
+#ifndef NOGROUP
+#define NOGROUP                (-1)
+#endif
+
+#define MAXHOSTNAMELEN         64      /* max length of hostname */
+
+#endif /* _ASM_PARAM_H */
diff --git a/arch/frv/include/asm/pci.h b/arch/frv/include/asm/pci.h
new file mode 100644 (file)
index 0000000..585d9b4
--- /dev/null
@@ -0,0 +1,118 @@
+/* pci.h: FR-V specific PCI declarations
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-m68k/pci.h
+ *
+ * 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.
+ */
+
+#ifndef ASM_PCI_H
+#define        ASM_PCI_H
+
+#include <linux/mm.h>
+#include <asm/scatterlist.h>
+#include <asm-generic/pci-dma-compat.h>
+#include <asm-generic/pci.h>
+
+struct pci_dev;
+
+#define pcibios_assign_all_busses()    0
+
+extern void pcibios_set_master(struct pci_dev *dev);
+
+extern void pcibios_penalize_isa_irq(int irq);
+
+#ifdef CONFIG_MMU
+extern void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *dma_handle);
+extern void consistent_free(void *vaddr);
+extern void consistent_sync(void *vaddr, size_t size, int direction);
+extern void consistent_sync_page(struct page *page, unsigned long offset,
+                                size_t size, int direction);
+#endif
+
+extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
+                                 dma_addr_t *dma_handle);
+
+extern void pci_free_consistent(struct pci_dev *hwdev, size_t size,
+                               void *vaddr, dma_addr_t dma_handle);
+
+/* Return the index of the PCI controller for device PDEV. */
+#define pci_controller_num(PDEV)       (0)
+
+/* The PCI address space does equal the physical memory
+ * address space.  The networking and block device layers use
+ * this boolean for bounce buffer decisions.
+ */
+#define PCI_DMA_BUS_IS_PHYS    (1)
+
+/* pci_unmap_{page,single} is a nop so... */
+#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
+#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
+#define pci_unmap_addr(PTR, ADDR_NAME)         (0)
+#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)        do { } while (0)
+#define pci_unmap_len(PTR, LEN_NAME)           (0)
+#define pci_unmap_len_set(PTR, LEN_NAME, VAL)  do { } while (0)
+
+#ifdef CONFIG_PCI
+static inline void pci_dma_burst_advice(struct pci_dev *pdev,
+                                       enum pci_dma_burst_strategy *strat,
+                                       unsigned long *strategy_parameter)
+{
+       *strat = PCI_DMA_BURST_INFINITY;
+       *strategy_parameter = ~0UL;
+}
+#endif
+
+/*
+ *     These are pretty much arbitary with the CoMEM implementation.
+ *     We have the whole address space to ourselves.
+ */
+#define PCIBIOS_MIN_IO         0x100
+#define PCIBIOS_MIN_MEM                0x00010000
+
+/* Make physical memory consistent for a single
+ * streaming mode DMA translation after a transfer.
+ *
+ * If you perform a pci_map_single() but wish to interrogate the
+ * buffer using the cpu, yet do not wish to teardown the PCI dma
+ * mapping, you must call this function before doing so.  At the
+ * next point you give the PCI dma address back to the card, the
+ * device again owns the buffer.
+ */
+static inline void pci_dma_sync_single(struct pci_dev *hwdev,
+                                      dma_addr_t dma_handle,
+                                      size_t size, int direction)
+{
+       if (direction == PCI_DMA_NONE)
+                BUG();
+
+       frv_cache_wback_inv((unsigned long)bus_to_virt(dma_handle),
+                           (unsigned long)bus_to_virt(dma_handle) + size);
+}
+
+/* Make physical memory consistent for a set of streaming
+ * mode DMA translations after a transfer.
+ *
+ * The same as pci_dma_sync_single but for a scatter-gather list,
+ * same rules and usage.
+ */
+static inline void pci_dma_sync_sg(struct pci_dev *hwdev,
+                                  struct scatterlist *sg,
+                                  int nelems, int direction)
+{
+       int i;
+
+       if (direction == PCI_DMA_NONE)
+                BUG();
+
+       for (i = 0; i < nelems; i++)
+               frv_cache_wback_inv(sg_dma_address(&sg[i]),
+                                   sg_dma_address(&sg[i])+sg_dma_len(&sg[i]));
+}
+
+
+#endif
diff --git a/arch/frv/include/asm/percpu.h b/arch/frv/include/asm/percpu.h
new file mode 100644 (file)
index 0000000..2cad3f8
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef __ASM_PERCPU_H
+#define __ASM_PERCPU_H
+
+#include <asm-generic/percpu.h>
+
+#endif /* __ASM_PERCPU_H */
diff --git a/arch/frv/include/asm/pgalloc.h b/arch/frv/include/asm/pgalloc.h
new file mode 100644 (file)
index 0000000..971e6ad
--- /dev/null
@@ -0,0 +1,69 @@
+/* pgalloc.h: Page allocation routines for FRV
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * Derived from:
+ *     include/asm-m68knommu/pgalloc.h
+ *     include/asm-i386/pgalloc.h
+ */
+#ifndef _ASM_PGALLOC_H
+#define _ASM_PGALLOC_H
+
+#include <asm/setup.h>
+#include <asm/virtconvert.h>
+
+#ifdef CONFIG_MMU
+
+#define pmd_populate_kernel(mm, pmd, pte) __set_pmd(pmd, __pa(pte) | _PAGE_TABLE)
+#define pmd_populate(MM, PMD, PAGE)                                            \
+do {                                                                           \
+       __set_pmd((PMD), page_to_pfn(PAGE) << PAGE_SHIFT | _PAGE_TABLE);        \
+} while(0)
+#define pmd_pgtable(pmd) pmd_page(pmd)
+
+/*
+ * Allocate and free page tables.
+ */
+
+extern pgd_t *pgd_alloc(struct mm_struct *);
+extern void pgd_free(struct mm_struct *mm, pgd_t *);
+
+extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
+
+extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long);
+
+static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
+{
+       free_page((unsigned long)pte);
+}
+
+static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
+{
+       pgtable_page_dtor(pte);
+       __free_page(pte);
+}
+
+#define __pte_free_tlb(tlb,pte)                                \
+do {                                                   \
+       pgtable_page_dtor(pte);                         \
+       tlb_remove_page((tlb),(pte));                   \
+} while (0)
+
+/*
+ * allocating and freeing a pmd is trivial: the 1-entry pmd is
+ * inside the pgd, so has no extra memory associated with it.
+ * (In the PAE case we free the pmds as part of the pgd.)
+ */
+#define pmd_alloc_one(mm, addr)                ({ BUG(); ((pmd_t *) 2); })
+#define pmd_free(mm, x)                        do { } while (0)
+#define __pmd_free_tlb(tlb,x)          do { } while (0)
+
+#endif /* CONFIG_MMU */
+
+#endif /* _ASM_PGALLOC_H */
diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h
new file mode 100644 (file)
index 0000000..3323301
--- /dev/null
@@ -0,0 +1,549 @@
+/* pgtable.h: FR-V page table mangling
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * Derived from:
+ *     include/asm-m68knommu/pgtable.h
+ *     include/asm-i386/pgtable.h
+ */
+
+#ifndef _ASM_PGTABLE_H
+#define _ASM_PGTABLE_H
+
+#include <asm/mem-layout.h>
+#include <asm/setup.h>
+#include <asm/processor.h>
+
+#ifndef __ASSEMBLY__
+#include <linux/threads.h>
+#include <linux/slab.h>
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/sched.h>
+struct vm_area_struct;
+#endif
+
+#ifndef __ASSEMBLY__
+#if defined(CONFIG_HIGHPTE)
+typedef unsigned long pte_addr_t;
+#else
+typedef pte_t *pte_addr_t;
+#endif
+#endif
+
+/*****************************************************************************/
+/*
+ * MMU-less operation case first
+ */
+#ifndef CONFIG_MMU
+
+#define pgd_present(pgd)       (1)             /* pages are always present on NO_MM */
+#define pgd_none(pgd)          (0)
+#define pgd_bad(pgd)           (0)
+#define pgd_clear(pgdp)
+#define kern_addr_valid(addr)  (1)
+#define        pmd_offset(a, b)        ((void *) 0)
+
+#define PAGE_NONE              __pgprot(0)     /* these mean nothing to NO_MM */
+#define PAGE_SHARED            __pgprot(0)     /* these mean nothing to NO_MM */
+#define PAGE_COPY              __pgprot(0)     /* these mean nothing to NO_MM */
+#define PAGE_READONLY          __pgprot(0)     /* these mean nothing to NO_MM */
+#define PAGE_KERNEL            __pgprot(0)     /* these mean nothing to NO_MM */
+
+#define __swp_type(x)          (0)
+#define __swp_offset(x)                (0)
+#define __swp_entry(typ,off)   ((swp_entry_t) { ((typ) | ((off) << 7)) })
+#define __pte_to_swp_entry(pte)        ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
+
+#ifndef __ASSEMBLY__
+static inline int pte_file(pte_t pte) { return 0; }
+#endif
+
+#define ZERO_PAGE(vaddr)       ({ BUG(); NULL; })
+
+#define swapper_pg_dir         ((pgd_t *) NULL)
+
+#define pgtable_cache_init()           do {} while (0)
+
+#include <asm-generic/pgtable.h>
+
+#else /* !CONFIG_MMU */
+/*****************************************************************************/
+/*
+ * then MMU operation
+ */
+
+/*
+ * ZERO_PAGE is a global shared page that is always zero: used
+ * for zero-mapped memory areas etc..
+ */
+#ifndef __ASSEMBLY__
+extern unsigned long empty_zero_page;
+#define ZERO_PAGE(vaddr)       virt_to_page(empty_zero_page)
+#endif
+
+/*
+ * we use 2-level page tables, folding the PMD (mid-level table) into the PGE (top-level entry)
+ * [see Documentation/frv/mmu-layout.txt]
+ *
+ * Page Directory:
+ *  - Size: 16KB
+ *  - 64 PGEs per PGD
+ *  - Each PGE holds 1 PUD and covers 64MB
+ *
+ * Page Upper Directory:
+ *  - Size: 256B
+ *  - 1 PUE per PUD
+ *  - Each PUE holds 1 PMD and covers 64MB
+ *
+ * Page Mid-Level Directory
+ *  - Size: 256B
+ *  - 1 PME per PMD
+ *  - Each PME holds 64 STEs, all of which point to separate chunks of the same Page Table
+ *  - All STEs are instantiated at the same time
+ *
+ * Page Table
+ *  - Size: 16KB
+ *  - 4096 PTEs per PT
+ *  - Each Linux PT is subdivided into 64 FR451 PT's, each of which holds 64 entries
+ *
+ * Pages
+ *  - Size: 4KB
+ *
+ * total PTEs
+ *     = 1 PML4E * 64 PGEs * 1 PUEs * 1 PMEs * 4096 PTEs
+ *     = 1 PML4E * 64 PGEs * 64 STEs * 64 PTEs/FR451-PT
+ *     = 262144 (or 256 * 1024)
+ */
+#define PGDIR_SHIFT            26
+#define PGDIR_SIZE             (1UL << PGDIR_SHIFT)
+#define PGDIR_MASK             (~(PGDIR_SIZE - 1))
+#define PTRS_PER_PGD           64
+
+#define PUD_SHIFT              26
+#define PTRS_PER_PUD           1
+#define PUD_SIZE               (1UL << PUD_SHIFT)
+#define PUD_MASK               (~(PUD_SIZE - 1))
+#define PUE_SIZE               256
+
+#define PMD_SHIFT              26
+#define PMD_SIZE               (1UL << PMD_SHIFT)
+#define PMD_MASK               (~(PMD_SIZE - 1))
+#define PTRS_PER_PMD           1
+#define PME_SIZE               256
+
+#define __frv_PT_SIZE          256
+
+#define PTRS_PER_PTE           4096
+
+#define USER_PGDS_IN_LAST_PML4 (TASK_SIZE / PGDIR_SIZE)
+#define FIRST_USER_ADDRESS     0
+
+#define USER_PGD_PTRS          (PAGE_OFFSET >> PGDIR_SHIFT)
+#define KERNEL_PGD_PTRS                (PTRS_PER_PGD - USER_PGD_PTRS)
+
+#define TWOLEVEL_PGDIR_SHIFT   26
+#define BOOT_USER_PGD_PTRS     (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT)
+#define BOOT_KERNEL_PGD_PTRS   (PTRS_PER_PGD - BOOT_USER_PGD_PTRS)
+
+#ifndef __ASSEMBLY__
+
+extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
+
+#define pte_ERROR(e) \
+       printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte)
+#define pmd_ERROR(e) \
+       printk("%s:%d: bad pmd %08lx.\n", __FILE__, __LINE__, pmd_val(e))
+#define pud_ERROR(e) \
+       printk("%s:%d: bad pud %08lx.\n", __FILE__, __LINE__, pmd_val(pud_val(e)))
+#define pgd_ERROR(e) \
+       printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pmd_val(pud_val(pgd_val(e))))
+
+/*
+ * Certain architectures need to do special things when PTEs
+ * within a page table are directly modified.  Thus, the following
+ * hook is made available.
+ */
+#define set_pte(pteptr, pteval)                                \
+do {                                                   \
+       *(pteptr) = (pteval);                           \
+       asm volatile("dcf %M0" :: "U"(*pteptr));        \
+} while(0)
+#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
+
+/*
+ * pgd_offset() returns a (pgd_t *)
+ * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
+ */
+#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address))
+
+/*
+ * a shortcut which implies the use of the kernel's pgd, instead
+ * of a process's
+ */
+#define pgd_offset_k(address) pgd_offset(&init_mm, address)
+
+/*
+ * The "pgd_xxx()" functions here are trivial for a folded two-level
+ * setup: the pud is never bad, and a pud always exists (as it's folded
+ * into the pgd entry)
+ */
+static inline int pgd_none(pgd_t pgd)          { return 0; }
+static inline int pgd_bad(pgd_t pgd)           { return 0; }
+static inline int pgd_present(pgd_t pgd)       { return 1; }
+static inline void pgd_clear(pgd_t *pgd)       { }
+
+#define pgd_populate(mm, pgd, pud)             do { } while (0)
+/*
+ * (puds are folded into pgds so this doesn't get actually called,
+ * but the define is needed for a generic inline function.)
+ */
+#define set_pgd(pgdptr, pgdval)                                \
+do {                                                   \
+       memcpy((pgdptr), &(pgdval), sizeof(pgd_t));     \
+       asm volatile("dcf %M0" :: "U"(*(pgdptr)));      \
+} while(0)
+
+static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
+{
+       return (pud_t *) pgd;
+}
+
+#define pgd_page(pgd)                          (pud_page((pud_t){ pgd }))
+#define pgd_page_vaddr(pgd)                    (pud_page_vaddr((pud_t){ pgd }))
+
+/*
+ * allocating and freeing a pud is trivial: the 1-entry pud is
+ * inside the pgd, so has no extra memory associated with it.
+ */
+#define pud_alloc_one(mm, address)             NULL
+#define pud_free(mm, x)                                do { } while (0)
+#define __pud_free_tlb(tlb, x)                 do { } while (0)
+
+/*
+ * The "pud_xxx()" functions here are trivial for a folded two-level
+ * setup: the pmd is never bad, and a pmd always exists (as it's folded
+ * into the pud entry)
+ */
+static inline int pud_none(pud_t pud)          { return 0; }
+static inline int pud_bad(pud_t pud)           { return 0; }
+static inline int pud_present(pud_t pud)       { return 1; }
+static inline void pud_clear(pud_t *pud)       { }
+
+#define pud_populate(mm, pmd, pte)             do { } while (0)
+
+/*
+ * (pmds are folded into puds so this doesn't get actually called,
+ * but the define is needed for a generic inline function.)
+ */
+#define set_pud(pudptr, pudval)                        set_pmd((pmd_t *)(pudptr), (pmd_t) { pudval })
+
+#define pud_page(pud)                          (pmd_page((pmd_t){ pud }))
+#define pud_page_vaddr(pud)                    (pmd_page_vaddr((pmd_t){ pud }))
+
+/*
+ * (pmds are folded into pgds so this doesn't get actually called,
+ * but the define is needed for a generic inline function.)
+ */
+extern void __set_pmd(pmd_t *pmdptr, unsigned long __pmd);
+
+#define set_pmd(pmdptr, pmdval)                        \
+do {                                           \
+       __set_pmd((pmdptr), (pmdval).ste[0]);   \
+} while(0)
+
+#define __pmd_index(address)                   0
+
+static inline pmd_t *pmd_offset(pud_t *dir, unsigned long address)
+{
+       return (pmd_t *) dir + __pmd_index(address);
+}
+
+#define pte_same(a, b)         ((a).pte == (b).pte)
+#define pte_page(x)            (mem_map + ((unsigned long)(((x).pte >> PAGE_SHIFT))))
+#define pte_none(x)            (!(x).pte)
+#define pte_pfn(x)             ((unsigned long)(((x).pte >> PAGE_SHIFT)))
+#define pfn_pte(pfn, prot)     __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
+#define pfn_pmd(pfn, prot)     __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
+
+#define VMALLOC_VMADDR(x)      ((unsigned long) (x))
+
+#endif /* !__ASSEMBLY__ */
+
+/*
+ * control flags in AMPR registers and TLB entries
+ */
+#define _PAGE_BIT_PRESENT      xAMPRx_V_BIT
+#define _PAGE_BIT_WP           DAMPRx_WP_BIT
+#define _PAGE_BIT_NOCACHE      xAMPRx_C_BIT
+#define _PAGE_BIT_SUPER                xAMPRx_S_BIT
+#define _PAGE_BIT_ACCESSED     xAMPRx_RESERVED8_BIT
+#define _PAGE_BIT_DIRTY                xAMPRx_M_BIT
+#define _PAGE_BIT_NOTGLOBAL    xAMPRx_NG_BIT
+
+#define _PAGE_PRESENT          xAMPRx_V
+#define _PAGE_WP               DAMPRx_WP
+#define _PAGE_NOCACHE          xAMPRx_C
+#define _PAGE_SUPER            xAMPRx_S
+#define _PAGE_ACCESSED         xAMPRx_RESERVED8        /* accessed if set */
+#define _PAGE_DIRTY            xAMPRx_M
+#define _PAGE_NOTGLOBAL                xAMPRx_NG
+
+#define _PAGE_RESERVED_MASK    (xAMPRx_RESERVED8 | xAMPRx_RESERVED13)
+
+#define _PAGE_FILE             0x002   /* set:pagecache unset:swap */
+#define _PAGE_PROTNONE         0x000   /* If not present */
+
+#define _PAGE_CHG_MASK         (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
+
+#define __PGPROT_BASE \
+       (_PAGE_PRESENT | xAMPRx_SS_16Kb | xAMPRx_D | _PAGE_NOTGLOBAL | _PAGE_ACCESSED)
+
+#define PAGE_NONE      __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
+#define PAGE_SHARED    __pgprot(__PGPROT_BASE)
+#define PAGE_COPY      __pgprot(__PGPROT_BASE | _PAGE_WP)
+#define PAGE_READONLY  __pgprot(__PGPROT_BASE | _PAGE_WP)
+
+#define __PAGE_KERNEL          (__PGPROT_BASE | _PAGE_SUPER | _PAGE_DIRTY)
+#define __PAGE_KERNEL_NOCACHE  (__PGPROT_BASE | _PAGE_SUPER | _PAGE_DIRTY | _PAGE_NOCACHE)
+#define __PAGE_KERNEL_RO       (__PGPROT_BASE | _PAGE_SUPER | _PAGE_DIRTY | _PAGE_WP)
+
+#define MAKE_GLOBAL(x) __pgprot((x) & ~_PAGE_NOTGLOBAL)
+
+#define PAGE_KERNEL            MAKE_GLOBAL(__PAGE_KERNEL)
+#define PAGE_KERNEL_RO         MAKE_GLOBAL(__PAGE_KERNEL_RO)
+#define PAGE_KERNEL_NOCACHE    MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE)
+
+#define _PAGE_TABLE            (_PAGE_PRESENT | xAMPRx_SS_16Kb)
+
+#ifndef __ASSEMBLY__
+
+/*
+ * The FR451 can do execute protection by virtue of having separate TLB miss handlers for
+ * instruction access and for data access. However, we don't have enough reserved bits to say
+ * "execute only", so we don't bother. If you can read it, you can execute it and vice versa.
+ */
+#define __P000 PAGE_NONE
+#define __P001 PAGE_READONLY
+#define __P010 PAGE_COPY
+#define __P011 PAGE_COPY
+#define __P100 PAGE_READONLY
+#define __P101 PAGE_READONLY
+#define __P110 PAGE_COPY
+#define __P111 PAGE_COPY
+
+#define __S000 PAGE_NONE
+#define __S001 PAGE_READONLY
+#define __S010 PAGE_SHARED
+#define __S011 PAGE_SHARED
+#define __S100 PAGE_READONLY
+#define __S101 PAGE_READONLY
+#define __S110 PAGE_SHARED
+#define __S111 PAGE_SHARED
+
+/*
+ * Define this to warn about kernel memory accesses that are
+ * done without a 'access_ok(VERIFY_WRITE,..)'
+ */
+#undef TEST_ACCESS_OK
+
+#define pte_present(x) (pte_val(x) & _PAGE_PRESENT)
+#define pte_clear(mm,addr,xp)  do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
+
+#define pmd_none(x)    (!pmd_val(x))
+#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
+#define        pmd_bad(x)      (pmd_val(x) & xAMPRx_SS)
+#define pmd_clear(xp)  do { __set_pmd(xp, 0); } while(0)
+
+#define pmd_page_vaddr(pmd) \
+       ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
+
+#ifndef CONFIG_DISCONTIGMEM
+#define pmd_page(pmd)  (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
+#endif
+
+#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
+
+/*
+ * The following only work if pte_present() is true.
+ * Undefined behaviour if not..
+ */
+static inline int pte_dirty(pte_t pte)         { return (pte).pte & _PAGE_DIRTY; }
+static inline int pte_young(pte_t pte)         { return (pte).pte & _PAGE_ACCESSED; }
+static inline int pte_write(pte_t pte)         { return !((pte).pte & _PAGE_WP); }
+static inline int pte_special(pte_t pte)       { return 0; }
+
+static inline pte_t pte_mkclean(pte_t pte)     { (pte).pte &= ~_PAGE_DIRTY; return pte; }
+static inline pte_t pte_mkold(pte_t pte)       { (pte).pte &= ~_PAGE_ACCESSED; return pte; }
+static inline pte_t pte_wrprotect(pte_t pte)   { (pte).pte |= _PAGE_WP; return pte; }
+static inline pte_t pte_mkdirty(pte_t pte)     { (pte).pte |= _PAGE_DIRTY; return pte; }
+static inline pte_t pte_mkyoung(pte_t pte)     { (pte).pte |= _PAGE_ACCESSED; return pte; }
+static inline pte_t pte_mkwrite(pte_t pte)     { (pte).pte &= ~_PAGE_WP; return pte; }
+static inline pte_t pte_mkspecial(pte_t pte)   { return pte; }
+
+static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
+{
+       int i = test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep);
+       asm volatile("dcf %M0" :: "U"(*ptep));
+       return i;
+}
+
+static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+{
+       unsigned long x = xchg(&ptep->pte, 0);
+       asm volatile("dcf %M0" :: "U"(*ptep));
+       return __pte(x);
+}
+
+static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+{
+       set_bit(_PAGE_BIT_WP, ptep);
+       asm volatile("dcf %M0" :: "U"(*ptep));
+}
+
+/*
+ * Macro to mark a page protection value as "uncacheable"
+ */
+#define pgprot_noncached(prot) (__pgprot(pgprot_val(prot) | _PAGE_NOCACHE))
+
+/*
+ * Conversion functions: convert a page and protection to a page entry,
+ * and a page entry and page directory to the page they refer to.
+ */
+
+#define mk_pte(page, pgprot)   pfn_pte(page_to_pfn(page), (pgprot))
+#define mk_pte_huge(entry)     ((entry).pte_low |= _PAGE_PRESENT | _PAGE_PSE)
+
+/* This takes a physical page address that is used by the remapping functions */
+#define mk_pte_phys(physpage, pgprot)  pfn_pte((physpage) >> PAGE_SHIFT, pgprot)
+
+static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
+{
+       pte.pte &= _PAGE_CHG_MASK;
+       pte.pte |= pgprot_val(newprot);
+       return pte;
+}
+
+/* to find an entry in a page-table-directory. */
+#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
+#define pgd_index_k(addr) pgd_index(addr)
+
+/* Find an entry in the bottom-level page table.. */
+#define __pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
+
+/*
+ * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
+ *
+ * this macro returns the index of the entry in the pte page which would
+ * control the given virtual address
+ */
+#define pte_index(address) \
+               (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
+#define pte_offset_kernel(dir, address) \
+       ((pte_t *) pmd_page_vaddr(*(dir)) +  pte_index(address))
+
+#if defined(CONFIG_HIGHPTE)
+#define pte_offset_map(dir, address) \
+       ((pte_t *)kmap_atomic(pmd_page(*(dir)),KM_PTE0) + pte_index(address))
+#define pte_offset_map_nested(dir, address) \
+       ((pte_t *)kmap_atomic(pmd_page(*(dir)),KM_PTE1) + pte_index(address))
+#define pte_unmap(pte) kunmap_atomic(pte, KM_PTE0)
+#define pte_unmap_nested(pte) kunmap_atomic((pte), KM_PTE1)
+#else
+#define pte_offset_map(dir, address) \
+       ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
+#define pte_offset_map_nested(dir, address) pte_offset_map((dir), (address))
+#define pte_unmap(pte) do { } while (0)
+#define pte_unmap_nested(pte) do { } while (0)
+#endif
+
+/*
+ * Handle swap and file entries
+ * - the PTE is encoded in the following format:
+ *     bit 0:          Must be 0 (!_PAGE_PRESENT)
+ *     bit 1:          Type: 0 for swap, 1 for file (_PAGE_FILE)
+ *     bits 2-7:       Swap type
+ *     bits 8-31:      Swap offset
+ *     bits 2-31:      File pgoff
+ */
+#define __swp_type(x)                  (((x).val >> 2) & 0x1f)
+#define __swp_offset(x)                        ((x).val >> 8)
+#define __swp_entry(type, offset)      ((swp_entry_t) { ((type) << 2) | ((offset) << 8) })
+#define __pte_to_swp_entry(_pte)       ((swp_entry_t) { (_pte).pte })
+#define __swp_entry_to_pte(x)          ((pte_t) { (x).val })
+
+static inline int pte_file(pte_t pte)
+{
+       return pte.pte & _PAGE_FILE;
+}
+
+#define PTE_FILE_MAX_BITS      29
+
+#define pte_to_pgoff(PTE)      ((PTE).pte >> 2)
+#define pgoff_to_pte(off)      __pte((off) << 2 | _PAGE_FILE)
+
+/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
+#define PageSkip(page)         (0)
+#define kern_addr_valid(addr)  (1)
+
+#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)                \
+               remap_pfn_range(vma, vaddr, pfn, size, prot)
+
+#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
+#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
+#define __HAVE_ARCH_PTEP_SET_WRPROTECT
+#define __HAVE_ARCH_PTE_SAME
+#include <asm-generic/pgtable.h>
+
+/*
+ * preload information about a newly instantiated PTE into the SCR0/SCR1 PGE cache
+ */
+static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+{
+       struct mm_struct *mm;
+       unsigned long ampr;
+
+       mm = current->mm;
+       if (mm) {
+               pgd_t *pge = pgd_offset(mm, address);
+               pud_t *pue = pud_offset(pge, address);
+               pmd_t *pme = pmd_offset(pue, address);
+
+               ampr = pme->ste[0] & 0xffffff00;
+               ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C |
+                       xAMPRx_V;
+       } else {
+               address = ULONG_MAX;
+               ampr = 0;
+       }
+
+       asm volatile("movgs %0,scr0\n"
+                    "movgs %0,scr1\n"
+                    "movgs %1,dampr4\n"
+                    "movgs %1,dampr5\n"
+                    :
+                    : "r"(address), "r"(ampr)
+                    );
+}
+
+#ifdef CONFIG_PROC_FS
+extern char *proc_pid_status_frv_cxnr(struct mm_struct *mm, char *buffer);
+#endif
+
+extern void __init pgtable_cache_init(void);
+
+#endif /* !__ASSEMBLY__ */
+#endif /* !CONFIG_MMU */
+
+#ifndef __ASSEMBLY__
+extern void __init paging_init(void);
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_PGTABLE_H */
diff --git a/arch/frv/include/asm/poll.h b/arch/frv/include/asm/poll.h
new file mode 100644 (file)
index 0000000..0d01479
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_POLL_H
+#define _ASM_POLL_H
+
+#define POLLWRNORM     POLLOUT
+#define POLLWRBAND     256
+
+#include <asm-generic/poll.h>
+
+#undef POLLREMOVE
+
+#endif
+
diff --git a/arch/frv/include/asm/posix_types.h b/arch/frv/include/asm/posix_types.h
new file mode 100644 (file)
index 0000000..a9f1f5b
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ASM_POSIX_TYPES_H
+#define _ASM_POSIX_TYPES_H
+
+/*
+ * This file is generally used by user-level software, so you need to
+ * be a little careful about namespace pollution etc.  Also, we cannot
+ * assume GCC is being used.
+ */
+
+typedef unsigned long  __kernel_ino_t;
+typedef unsigned short __kernel_mode_t;
+typedef unsigned short __kernel_nlink_t;
+typedef long           __kernel_off_t;
+typedef int            __kernel_pid_t;
+typedef unsigned short __kernel_ipc_pid_t;
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+typedef unsigned int   __kernel_size_t;
+typedef int            __kernel_ssize_t;
+typedef int            __kernel_ptrdiff_t;
+typedef long           __kernel_time_t;
+typedef long           __kernel_suseconds_t;
+typedef long           __kernel_clock_t;
+typedef int            __kernel_timer_t;
+typedef int            __kernel_clockid_t;
+typedef int            __kernel_daddr_t;
+typedef char *         __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int   __kernel_uid32_t;
+typedef unsigned int   __kernel_gid32_t;
+
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+typedef unsigned short __kernel_old_dev_t;
+
+#ifdef __GNUC__
+typedef long long      __kernel_loff_t;
+#endif
+
+typedef struct {
+       int     val[2];
+} __kernel_fsid_t;
+
+#if defined(__KERNEL__)
+
+#undef __FD_SET
+#define        __FD_SET(d, set)        ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
+
+#undef __FD_CLR
+#define        __FD_CLR(d, set)        ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
+
+#undef __FD_ISSET
+#define        __FD_ISSET(d, set)      (!!((set)->fds_bits[__FDELT(d)] & __FDMASK(d)))
+
+#undef __FD_ZERO
+#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
+
+#endif /* defined(__KERNEL__) */
+
+#endif
+
diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
new file mode 100644 (file)
index 0000000..3744f2e
--- /dev/null
@@ -0,0 +1,153 @@
+/* processor.h: FRV processor definitions
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_PROCESSOR_H
+#define _ASM_PROCESSOR_H
+
+#include <asm/mem-layout.h>
+
+#ifndef __ASSEMBLY__
+/*
+ * Default implementation of macro that returns current
+ * instruction pointer ("program counter").
+ */
+#define current_text_addr() ({ __label__ _l; _l: &&_l;})
+
+#include <linux/compiler.h>
+#include <linux/linkage.h>
+#include <asm/sections.h>
+#include <asm/segment.h>
+#include <asm/fpu.h>
+#include <asm/registers.h>
+#include <asm/ptrace.h>
+#include <asm/current.h>
+#include <asm/cache.h>
+
+/* Forward declaration, a strange C thing */
+struct task_struct;
+
+/*
+ *  CPU type and hardware bug flags. Kept separately for each CPU.
+ */
+struct cpuinfo_frv {
+#ifdef CONFIG_MMU
+       unsigned long   *pgd_quick;
+       unsigned long   *pte_quick;
+       unsigned long   pgtable_cache_sz;
+#endif
+} __cacheline_aligned;
+
+extern struct cpuinfo_frv __nongprelbss boot_cpu_data;
+
+#define cpu_data               (&boot_cpu_data)
+#define current_cpu_data       boot_cpu_data
+
+/*
+ * Bus types
+ */
+#define EISA_bus 0
+#define MCA_bus 0
+
+struct thread_struct {
+       struct pt_regs          *frame;         /* [GR28] exception frame ptr for this thread */
+       struct task_struct      *curr;          /* [GR29] current pointer for this thread */
+       unsigned long           sp;             /* [GR1 ] kernel stack pointer */
+       unsigned long           fp;             /* [GR2 ] kernel frame pointer */
+       unsigned long           lr;             /* link register */
+       unsigned long           pc;             /* program counter */
+       unsigned long           gr[12];         /* [GR16-GR27] */
+       unsigned long           sched_lr;       /* LR from schedule() */
+
+       union {
+               struct pt_regs          *frame0;        /* top (user) stack frame */
+               struct user_context     *user;          /* userspace context */
+       };
+} __attribute__((aligned(8)));
+
+extern struct pt_regs *__kernel_frame0_ptr;
+extern struct task_struct *__kernel_current_task;
+
+#endif
+
+#ifndef __ASSEMBLY__
+#define INIT_THREAD_FRAME0 \
+       ((struct pt_regs *) \
+       (sizeof(init_stack) + (unsigned long) init_stack - sizeof(struct user_context)))
+
+#define INIT_THREAD {                          \
+       NULL,                                   \
+       (struct task_struct *) init_stack,      \
+       0, 0, 0, 0,                             \
+       { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, \
+       0,                                      \
+       { INIT_THREAD_FRAME0 },                 \
+}
+
+/*
+ * do necessary setup to start up a newly executed thread.
+ * - need to discard the frame stacked by init() invoking the execve syscall
+ */
+#define start_thread(_regs, _pc, _usp)                 \
+do {                                                   \
+       set_fs(USER_DS); /* reads from user space */    \
+       __frame = __kernel_frame0_ptr;                  \
+       __frame->pc     = (_pc);                        \
+       __frame->psr    &= ~PSR_S;                      \
+       __frame->sp     = (_usp);                       \
+} while(0)
+
+extern void prepare_to_copy(struct task_struct *tsk);
+
+/* Free all resources held by a thread. */
+static inline void release_thread(struct task_struct *dead_task)
+{
+}
+
+extern asmlinkage int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
+extern asmlinkage void save_user_regs(struct user_context *target);
+extern asmlinkage void *restore_user_regs(const struct user_context *target, ...);
+
+#define copy_segments(tsk, mm)         do { } while (0)
+#define release_segments(mm)           do { } while (0)
+#define forget_segments()              do { } while (0)
+
+/*
+ * Free current thread data structures etc..
+ */
+static inline void exit_thread(void)
+{
+}
+
+/*
+ * Return saved PC of a blocked thread.
+ */
+extern unsigned long thread_saved_pc(struct task_struct *tsk);
+
+unsigned long get_wchan(struct task_struct *p);
+
+#define        KSTK_EIP(tsk)   ((tsk)->thread.frame0->pc)
+#define        KSTK_ESP(tsk)   ((tsk)->thread.frame0->sp)
+
+/* Allocation and freeing of basic task resources. */
+extern struct task_struct *alloc_task_struct(void);
+extern void free_task_struct(struct task_struct *p);
+
+#define cpu_relax()    barrier()
+
+/* data cache prefetch */
+#define ARCH_HAS_PREFETCH
+static inline void prefetch(const void *x)
+{
+       asm volatile("dcpl %0,gr0,#0" : : "r"(x));
+}
+
+#endif /* __ASSEMBLY__ */
+#endif /* _ASM_PROCESSOR_H */
diff --git a/arch/frv/include/asm/ptrace.h b/arch/frv/include/asm/ptrace.h
new file mode 100644 (file)
index 0000000..cf69340
--- /dev/null
@@ -0,0 +1,83 @@
+/* ptrace.h: ptrace() relevant definitions
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_PTRACE_H
+#define _ASM_PTRACE_H
+
+#include <asm/registers.h>
+#ifdef __KERNEL__
+#include <asm/irq_regs.h>
+
+#define in_syscall(regs) (((regs)->tbr & TBR_TT) == TBR_TT_TRAP0)
+#endif
+
+
+#define PT_PSR         0
+#define        PT_ISR          1
+#define PT_CCR         2
+#define PT_CCCR                3
+#define PT_LR          4
+#define PT_LCR         5
+#define PT_PC          6
+
+#define PT__STATUS     7       /* exception status */
+#define PT_SYSCALLNO   8       /* syscall number or -1 */
+#define PT_ORIG_GR8    9       /* saved GR8 for signal handling */
+#define PT_GNER0       10
+#define PT_GNER1       11
+#define PT_IACC0H      12
+#define PT_IACC0L      13
+
+#define PT_GR(j)       ( 14 + (j))     /* GRj for 0<=j<=63 */
+#define PT_FR(j)       ( 78 + (j))     /* FRj for 0<=j<=63 */
+#define PT_FNER(j)     (142 + (j))     /* FNERj for 0<=j<=1 */
+#define PT_MSR(j)      (144 + (j))     /* MSRj for 0<=j<=2 */
+#define PT_ACC(j)      (146 + (j))     /* ACCj for 0<=j<=7 */
+#define PT_ACCG(jklm)  (154 + (jklm))  /* ACCGjklm for 0<=jklm<=1 (reads four regs per slot) */
+#define PT_FSR(j)      (156 + (j))     /* FSRj for 0<=j<=0 */
+#define PT__GPEND      78
+#define PT__END                157
+
+#define PT_TBR         PT_GR(0)
+#define PT_SP          PT_GR(1)
+#define PT_FP          PT_GR(2)
+#define PT_PREV_FRAME  PT_GR(28)       /* previous exception frame pointer (old gr28 value) */
+#define PT_CURR_TASK   PT_GR(29)       /* current task */
+
+
+/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
+#define PTRACE_GETREGS         12
+#define PTRACE_SETREGS         13
+#define PTRACE_GETFPREGS       14
+#define PTRACE_SETFPREGS       15
+#define PTRACE_GETFDPIC                31      /* get the ELF fdpic loadmap address */
+
+#define PTRACE_GETFDPIC_EXEC   0       /* [addr] request the executable loadmap */
+#define PTRACE_GETFDPIC_INTERP 1       /* [addr] request the interpreter loadmap */
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+/*
+ * we dedicate GR28 to keeping a pointer to the current exception frame
+ * - gr28 is destroyed on entry to the kernel from userspace
+ */
+register struct pt_regs *__frame asm("gr28");
+
+#define user_mode(regs)                        (!((regs)->psr & PSR_S))
+#define instruction_pointer(regs)      ((regs)->pc)
+
+extern unsigned long user_stack(const struct pt_regs *);
+extern void show_regs(struct pt_regs *);
+#define profile_pc(regs) ((regs)->pc)
+#endif
+
+#endif /* !__ASSEMBLY__ */
+#endif /* _ASM_PTRACE_H */
diff --git a/arch/frv/include/asm/registers.h b/arch/frv/include/asm/registers.h
new file mode 100644 (file)
index 0000000..9666119
--- /dev/null
@@ -0,0 +1,232 @@
+/* registers.h: register frame declarations
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+/*
+ * notes:
+ *
+ * (1) that the members of all these structures are carefully aligned to permit
+ *     usage of STD/STDF instructions
+ *
+ * (2) if you change these structures, you must change the code in
+ *     arch/frvnommu/kernel/{break.S,entry.S,switch_to.S,gdb-stub.c}
+ *
+ *
+ * the kernel stack space block looks like this:
+ *
+ *     +0x2000 +----------------------
+ *             | union {
+ *             |       struct frv_frame0 {
+ *             |               struct user_context {
+ *             |                       struct user_int_regs
+ *             |                       struct user_fpmedia_regs
+ *             |               }
+ *             |               struct frv_debug_regs
+ *             |       }
+ *             |       struct pt_regs [user exception]
+ *             | }
+ *             +---------------------- <-- __kernel_frame0_ptr (maybe GR28)
+ *             |
+ *             | kernel stack
+ *             |
+ *             |......................
+ *             | struct pt_regs [kernel exception]
+ *             |...................... <-- __kernel_frame0_ptr (maybe GR28)
+ *             |
+ *             | kernel stack
+ *             |
+ *             |...................... <-- stack pointer (GR1)
+ *             |
+ *             | unused stack space
+ *             |
+ *             +----------------------
+ *             | struct thread_info
+ *     +0x0000 +---------------------- <-- __current_thread_info (GR15);
+ *
+ * note that GR28 points to the current exception frame
+ */
+
+#ifndef _ASM_REGISTERS_H
+#define _ASM_REGISTERS_H
+
+#ifndef __ASSEMBLY__
+#define __OFFSET(X,N)  ((X)+(N)*4)
+#define __OFFSETC(X,N) xxxxxxxxxxxxxxxxxxxxxxxx
+#else
+#define __OFFSET(X,N)  ((X)+(N)*4)
+#define __OFFSETC(X,N) ((X)+(N))
+#endif
+
+/*****************************************************************************/
+/*
+ * Exception/Interrupt frame
+ * - held on kernel stack
+ * - 8-byte aligned on stack (old SP is saved in frame)
+ * - GR0 is fixed 0, so we don't save it
+ */
+#ifndef __ASSEMBLY__
+
+struct pt_regs {
+       unsigned long           psr;            /* Processor Status Register */
+       unsigned long           isr;            /* Integer Status Register */
+       unsigned long           ccr;            /* Condition Code Register */
+       unsigned long           cccr;           /* Condition Code for Conditional Insns Register */
+       unsigned long           lr;             /* Link Register */
+       unsigned long           lcr;            /* Loop Count Register */
+       unsigned long           pc;             /* Program Counter Register */
+       unsigned long           __status;       /* exception status */
+       unsigned long           syscallno;      /* syscall number or -1 */
+       unsigned long           orig_gr8;       /* original syscall arg #1 */
+       unsigned long           gner0;
+       unsigned long           gner1;
+       unsigned long long      iacc0;
+       unsigned long           tbr;            /* GR0 is fixed zero, so we use this for TBR */
+       unsigned long           sp;             /* GR1: USP/KSP */
+       unsigned long           fp;             /* GR2: FP */
+       unsigned long           gr3;
+       unsigned long           gr4;
+       unsigned long           gr5;
+       unsigned long           gr6;
+       unsigned long           gr7;            /* syscall number */
+       unsigned long           gr8;            /* 1st syscall param; syscall return */
+       unsigned long           gr9;            /* 2nd syscall param */
+       unsigned long           gr10;           /* 3rd syscall param */
+       unsigned long           gr11;           /* 4th syscall param */
+       unsigned long           gr12;           /* 5th syscall param */
+       unsigned long           gr13;           /* 6th syscall param */
+       unsigned long           gr14;
+       unsigned long           gr15;
+       unsigned long           gr16;           /* GP pointer */
+       unsigned long           gr17;           /* small data */
+       unsigned long           gr18;           /* PIC/PID */
+       unsigned long           gr19;
+       unsigned long           gr20;
+       unsigned long           gr21;
+       unsigned long           gr22;
+       unsigned long           gr23;
+       unsigned long           gr24;
+       unsigned long           gr25;
+       unsigned long           gr26;
+       unsigned long           gr27;
+       struct pt_regs          *next_frame;    /* GR28 - next exception frame */
+       unsigned long           gr29;           /* GR29 - OS reserved */
+       unsigned long           gr30;           /* GR30 - OS reserved */
+       unsigned long           gr31;           /* GR31 - OS reserved */
+} __attribute__((aligned(8)));
+
+#endif
+
+#define REG__STATUS_STEP       0x00000001      /* - reenable single stepping on return */
+#define REG__STATUS_STEPPED    0x00000002      /* - single step caused exception */
+#define REG__STATUS_BROKE      0x00000004      /* - BREAK insn caused exception */
+#define REG__STATUS_SYSC_ENTRY 0x40000000      /* - T on syscall entry (ptrace.c only) */
+#define REG__STATUS_SYSC_EXIT  0x80000000      /* - T on syscall exit (ptrace.c only) */
+
+#define REG_GR(R)      __OFFSET(REG_GR0, (R))
+
+#define REG_SP         REG_GR(1)
+#define REG_FP         REG_GR(2)
+#define REG_PREV_FRAME REG_GR(28)      /* previous exception frame pointer (old gr28 value) */
+#define REG_CURR_TASK  REG_GR(29)      /* current task */
+
+/*****************************************************************************/
+/*
+ * debugging registers
+ */
+#ifndef __ASSEMBLY__
+
+struct frv_debug_regs
+{
+       unsigned long           dcr;
+       unsigned long           ibar[4] __attribute__((aligned(8)));
+       unsigned long           dbar[4] __attribute__((aligned(8)));
+       unsigned long           dbdr[4][4] __attribute__((aligned(8)));
+       unsigned long           dbmr[4][4] __attribute__((aligned(8)));
+} __attribute__((aligned(8)));
+
+#endif
+
+/*****************************************************************************/
+/*
+ * userspace registers
+ */
+#ifndef __ASSEMBLY__
+
+struct user_int_regs
+{
+       /* integer registers
+        * - up to gr[31] mirror pt_regs
+        * - total size must be multiple of 8 bytes
+        */
+       unsigned long           psr;            /* Processor Status Register */
+       unsigned long           isr;            /* Integer Status Register */
+       unsigned long           ccr;            /* Condition Code Register */
+       unsigned long           cccr;           /* Condition Code for Conditional Insns Register */
+       unsigned long           lr;             /* Link Register */
+       unsigned long           lcr;            /* Loop Count Register */
+       unsigned long           pc;             /* Program Counter Register */
+       unsigned long           __status;       /* exception status */
+       unsigned long           syscallno;      /* syscall number or -1 */
+       unsigned long           orig_gr8;       /* original syscall arg #1 */
+       unsigned long           gner[2];
+       unsigned long long      iacc[1];
+
+       union {
+               unsigned long   tbr;
+               unsigned long   gr[64];
+       };
+};
+
+struct user_fpmedia_regs
+{
+       /* FP/Media registers */
+       unsigned long   fr[64];
+       unsigned long   fner[2];
+       unsigned long   msr[2];
+       unsigned long   acc[8];
+       unsigned char   accg[8];
+       unsigned long   fsr[1];
+};
+
+struct user_context
+{
+       struct user_int_regs            i;
+       struct user_fpmedia_regs        f;
+
+       /* we provide a context extension so that we can save the regs for CPUs that
+        * implement many more of Fujitsu's lavish register spec
+        */
+       void *extension;
+} __attribute__((aligned(8)));
+
+struct frv_frame0 {
+       union {
+               struct pt_regs          regs;
+               struct user_context     uc;
+       };
+
+       struct frv_debug_regs           debug;
+
+} __attribute__((aligned(32)));
+
+#endif
+
+#define __INT_GR(R)            __OFFSET(__INT_GR0,             (R))
+
+#define __FPMEDIA_FR(R)                __OFFSET(__FPMEDIA_FR0,         (R))
+#define __FPMEDIA_FNER(R)      __OFFSET(__FPMEDIA_FNER0,       (R))
+#define __FPMEDIA_MSR(R)       __OFFSET(__FPMEDIA_MSR0,        (R))
+#define __FPMEDIA_ACC(R)       __OFFSET(__FPMEDIA_ACC0,        (R))
+#define __FPMEDIA_ACCG(R)      __OFFSETC(__FPMEDIA_ACCG0,      (R))
+#define __FPMEDIA_FSR(R)       __OFFSET(__FPMEDIA_FSR0,        (R))
+
+#define __THREAD_GR(R)         __OFFSET(__THREAD_GR16,         (R) - 16)
+
+#endif /* _ASM_REGISTERS_H */
diff --git a/arch/frv/include/asm/resource.h b/arch/frv/include/asm/resource.h
new file mode 100644 (file)
index 0000000..5fc6054
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _ASM_RESOURCE_H
+#define _ASM_RESOURCE_H
+
+#include <asm-generic/resource.h>
+
+#endif /* _ASM_RESOURCE_H */
+
diff --git a/arch/frv/include/asm/scatterlist.h b/arch/frv/include/asm/scatterlist.h
new file mode 100644 (file)
index 0000000..4bca8a2
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef _ASM_SCATTERLIST_H
+#define _ASM_SCATTERLIST_H
+
+#include <asm/types.h>
+
+/*
+ * Drivers must set either ->address or (preferred) page and ->offset
+ * to indicate where data must be transferred to/from.
+ *
+ * Using page is recommended since it handles highmem data as well as
+ * low mem. ->address is restricted to data which has a virtual mapping, and
+ * it will go away in the future. Updating to page can be automated very
+ * easily -- something like
+ *
+ * sg->address = some_ptr;
+ *
+ * can be rewritten as
+ *
+ * sg_set_buf(sg, some_ptr, length);
+ *
+ * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens
+ */
+struct scatterlist {
+#ifdef CONFIG_DEBUG_SG
+       unsigned long   sg_magic;
+#endif
+       unsigned long   page_link;
+       unsigned int    offset;         /* for highmem, page offset */
+
+       dma_addr_t      dma_address;
+       unsigned int    length;
+};
+
+/*
+ * These macros should be used after a pci_map_sg call has been done
+ * to get bus addresses of each of the SG entries and their lengths.
+ * You should only work with the number of sg entries pci_map_sg
+ * returns, or alternatively stop on the first sg_dma_len(sg) which
+ * is 0.
+ */
+#define sg_dma_address(sg)     ((sg)->dma_address)
+#define sg_dma_len(sg)         ((sg)->length)
+
+#define ISA_DMA_THRESHOLD (0xffffffffUL)
+
+#endif /* !_ASM_SCATTERLIST_H */
diff --git a/arch/frv/include/asm/sections.h b/arch/frv/include/asm/sections.h
new file mode 100644 (file)
index 0000000..17d0fb1
--- /dev/null
@@ -0,0 +1,46 @@
+/* sections.h: linkage layout variables
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SECTIONS_H
+#define _ASM_SECTIONS_H
+
+#ifndef __ASSEMBLY__
+
+#include <linux/types.h>
+#include <asm-generic/sections.h>
+
+#ifdef __KERNEL__
+
+/*
+ * we don't want to put variables in the GP-REL section if they're not used very much - that would
+ * be waste since GP-REL addressing is limited to GP16+/-2048
+ */
+#define __nongpreldata __attribute__((section(".data")))
+#define __nongprelbss  __attribute__((section(".bss")))
+
+/*
+ * linker symbols
+ */
+extern const void __kernel_image_start, __kernel_image_end, __page_offset;
+
+extern unsigned long __nongprelbss memory_start;
+extern unsigned long __nongprelbss memory_end;
+extern unsigned long __nongprelbss rom_length;
+
+/* determine if we're running from ROM */
+static inline int is_in_rom(unsigned long addr)
+{
+       return 0; /* default case: not in ROM */
+}
+
+#endif
+#endif
+#endif /* _ASM_SECTIONS_H */
diff --git a/arch/frv/include/asm/segment.h b/arch/frv/include/asm/segment.h
new file mode 100644 (file)
index 0000000..e3616a6
--- /dev/null
@@ -0,0 +1,45 @@
+/* segment.h: MMU segment settings
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SEGMENT_H
+#define _ASM_SEGMENT_H
+
+
+#ifndef __ASSEMBLY__
+
+typedef struct {
+       unsigned long seg;
+} mm_segment_t;
+
+#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
+
+#define KERNEL_DS              MAKE_MM_SEG(0xdfffffffUL)
+
+#ifdef CONFIG_MMU
+#define USER_DS                        MAKE_MM_SEG(TASK_SIZE - 1)
+#else
+#define USER_DS                        KERNEL_DS
+#endif
+
+#define get_ds()               (KERNEL_DS)
+#define get_fs()               (__current_thread_info->addr_limit)
+#define segment_eq(a,b)                ((a).seg == (b).seg)
+#define __kernel_ds_p()                segment_eq(get_fs(), KERNEL_DS)
+#define get_addr_limit()       (get_fs().seg)
+
+#define set_fs(_x)                                     \
+do {                                                   \
+       __current_thread_info->addr_limit = (_x);       \
+} while(0)
+
+
+#endif /* __ASSEMBLY__ */
+#endif /* _ASM_SEGMENT_H */
diff --git a/arch/frv/include/asm/sembuf.h b/arch/frv/include/asm/sembuf.h
new file mode 100644 (file)
index 0000000..164b127
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef _ASM_SEMBUF_H
+#define _ASM_SEMBUF_H
+
+/*
+ * The semid64_ds structure for FR-V architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct semid64_ds {
+       struct ipc64_perm       sem_perm;       /* permissions .. see ipc.h */
+       __kernel_time_t         sem_otime;      /* last semop time */
+       unsigned long           __unused1;
+       __kernel_time_t         sem_ctime;      /* last change time */
+       unsigned long           __unused2;
+       unsigned long           sem_nsems;      /* no. of semaphores in array */
+       unsigned long           __unused3;
+       unsigned long           __unused4;
+};
+
+#endif /* _ASM_SEMBUF_H */
+
diff --git a/arch/frv/include/asm/serial-regs.h b/arch/frv/include/asm/serial-regs.h
new file mode 100644 (file)
index 0000000..e1286bd
--- /dev/null
@@ -0,0 +1,44 @@
+/* serial-regs.h: serial port registers
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SERIAL_REGS_H
+#define _ASM_SERIAL_REGS_H
+
+#include <linux/serial_reg.h>
+#include <asm/irc-regs.h>
+
+#define SERIAL_ICLK    33333333        /* the target serial input clock */
+#define UART0_BASE     0xfeff9c00
+#define UART1_BASE     0xfeff9c40
+
+#define __get_UART0(R) ({ __reg(UART0_BASE + (R) * 8) >> 24; })
+#define __get_UART1(R) ({ __reg(UART1_BASE + (R) * 8) >> 24; })
+#define __set_UART0(R,V) do { __reg(UART0_BASE + (R) * 8) = (V) << 24; } while(0)
+#define __set_UART1(R,V) do { __reg(UART1_BASE + (R) * 8) = (V) << 24; } while(0)
+
+#define __get_UART0_LSR() ({ __get_UART0(UART_LSR); })
+#define __get_UART1_LSR() ({ __get_UART1(UART_LSR); })
+
+#define __set_UART0_IER(V) __set_UART0(UART_IER,(V))
+#define __set_UART1_IER(V) __set_UART1(UART_IER,(V))
+
+/* serial prescaler select register */
+#define __get_UCPSR()  ({ *(volatile unsigned long *)(0xfeff9c90); })
+#define __set_UCPSR(V) do { *(volatile unsigned long *)(0xfeff9c90) = (V); } while(0)
+#define UCPSR_SELECT0  0x07000000
+#define UCPSR_SELECT1  0x38000000
+
+/* serial prescaler base value register */
+#define __get_UCPVR()  ({ *(volatile unsigned long *)(0xfeff9c98); mb(); })
+#define __set_UCPVR(V) do { *(volatile unsigned long *)(0xfeff9c98) = (V) << 24; mb(); } while(0)
+
+
+#endif /* _ASM_SERIAL_REGS_H */
diff --git a/arch/frv/include/asm/serial.h b/arch/frv/include/asm/serial.h
new file mode 100644 (file)
index 0000000..dbb8259
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * serial.h
+ *
+ * Copyright (C) 2003 Develer S.r.l. (http://www.develer.com/)
+ * Author: Bernardo Innocenti <bernie@codewiz.org>
+ *
+ * Based on linux/include/asm-i386/serial.h
+ */
+#include <asm/serial-regs.h>
+
+/*
+ * the base baud is derived from the clock speed and so is variable
+ */
+#define BASE_BAUD 0
+
+#define STD_COM_FLAGS          ASYNC_BOOT_AUTOCONF
+
+#define SERIAL_PORT_DFNS
diff --git a/arch/frv/include/asm/setup.h b/arch/frv/include/asm/setup.h
new file mode 100644 (file)
index 0000000..afd787c
--- /dev/null
@@ -0,0 +1,31 @@
+/* setup.h: setup stuff
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SETUP_H
+#define _ASM_SETUP_H
+
+#define COMMAND_LINE_SIZE       512
+
+#ifdef __KERNEL__
+
+#include <linux/init.h>
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_MMU
+extern unsigned long __initdata num_mappedpages;
+#endif
+
+#endif /* !__ASSEMBLY__ */
+
+#endif  /*  __KERNEL__  */
+
+#endif /* _ASM_SETUP_H */
diff --git a/arch/frv/include/asm/shmbuf.h b/arch/frv/include/asm/shmbuf.h
new file mode 100644 (file)
index 0000000..4c6e711
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _ASM_SHMBUF_H
+#define _ASM_SHMBUF_H
+
+/*
+ * The shmid64_ds structure for FR-V architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+       struct ipc64_perm       shm_perm;       /* operation perms */
+       size_t                  shm_segsz;      /* size of segment (bytes) */
+       __kernel_time_t         shm_atime;      /* last attach time */
+       unsigned long           __unused1;
+       __kernel_time_t         shm_dtime;      /* last detach time */
+       unsigned long           __unused2;
+       __kernel_time_t         shm_ctime;      /* last change time */
+       unsigned long           __unused3;
+       __kernel_pid_t          shm_cpid;       /* pid of creator */
+       __kernel_pid_t          shm_lpid;       /* pid of last operator */
+       unsigned long           shm_nattch;     /* no. of current attaches */
+       unsigned long           __unused4;
+       unsigned long           __unused5;
+};
+
+struct shminfo64 {
+       unsigned long   shmmax;
+       unsigned long   shmmin;
+       unsigned long   shmmni;
+       unsigned long   shmseg;
+       unsigned long   shmall;
+       unsigned long   __unused1;
+       unsigned long   __unused2;
+       unsigned long   __unused3;
+       unsigned long   __unused4;
+};
+
+#endif /* _ASM_SHMBUF_H */
+
diff --git a/arch/frv/include/asm/shmparam.h b/arch/frv/include/asm/shmparam.h
new file mode 100644 (file)
index 0000000..ab71100
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _ASM_SHMPARAM_H
+#define _ASM_SHMPARAM_H
+
+#define        SHMLBA PAGE_SIZE                 /* attach addr a multiple of this */
+
+#endif /* _ASM_SHMPARAM_H */
+
diff --git a/arch/frv/include/asm/sigcontext.h b/arch/frv/include/asm/sigcontext.h
new file mode 100644 (file)
index 0000000..3b263f3
--- /dev/null
@@ -0,0 +1,26 @@
+/* sigcontext.h: FRV signal context
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_SIGCONTEXT_H
+#define _ASM_SIGCONTEXT_H
+
+#include <asm/registers.h>
+
+/*
+ * Signal context structure - contains all info to do with the state
+ * before the signal handler was invoked.  Note: only add new entries
+ * to the end of the structure.
+ */
+struct sigcontext {
+       struct user_context     sc_context;
+       unsigned long           sc_oldmask;     /* old sigmask */
+} __attribute__((aligned(8)));
+
+#endif
diff --git a/arch/frv/include/asm/siginfo.h b/arch/frv/include/asm/siginfo.h
new file mode 100644 (file)
index 0000000..d3fd1ca
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_SIGINFO_H
+#define _ASM_SIGINFO_H
+
+#include <linux/types.h>
+#include <asm-generic/siginfo.h>
+
+#define FPE_MDAOVF     (__SI_FAULT|9)  /* media overflow */
+#undef NSIGFPE
+#define NSIGFPE                9
+
+#endif
+
diff --git a/arch/frv/include/asm/signal.h b/arch/frv/include/asm/signal.h
new file mode 100644 (file)
index 0000000..2079197
--- /dev/null
@@ -0,0 +1,161 @@
+#ifndef _ASM_SIGNAL_H
+#define _ASM_SIGNAL_H
+
+#include <linux/types.h>
+
+/* Avoid too many header ordering problems.  */
+struct siginfo;
+
+#ifdef __KERNEL__
+/* Most things should be clean enough to redefine this at will, if care
+   is taken to make libc match.  */
+
+#define _NSIG          64
+#define _NSIG_BPW      32
+#define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
+
+typedef unsigned long old_sigset_t;            /* at least 32 bits */
+
+typedef struct {
+       unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+
+#else
+/* Here we must cater to libcs that poke about in kernel headers.  */
+
+#define NSIG           32
+typedef unsigned long sigset_t;
+
+#endif /* __KERNEL__ */
+
+#define SIGHUP          1
+#define SIGINT          2
+#define SIGQUIT                 3
+#define SIGILL          4
+#define SIGTRAP                 5
+#define SIGABRT                 6
+#define SIGIOT          6
+#define SIGBUS          7
+#define SIGFPE          8
+#define SIGKILL                 9
+#define SIGUSR1                10
+#define SIGSEGV                11
+#define SIGUSR2                12
+#define SIGPIPE                13
+#define SIGALRM                14
+#define SIGTERM                15
+#define SIGSTKFLT      16
+#define SIGCHLD                17
+#define SIGCONT                18
+#define SIGSTOP                19
+#define SIGTSTP                20
+#define SIGTTIN                21
+#define SIGTTOU                22
+#define SIGURG         23
+#define SIGXCPU                24
+#define SIGXFSZ                25
+#define SIGVTALRM      26
+#define SIGPROF                27
+#define SIGWINCH       28
+#define SIGIO          29
+#define SIGPOLL                SIGIO
+/*
+#define SIGLOST                29
+*/
+#define SIGPWR         30
+#define SIGSYS         31
+#define        SIGUNUSED       31
+
+/* These should not be considered constants from userland.  */
+#define SIGRTMIN       32
+#define SIGRTMAX       (_NSIG-1)
+
+/*
+ * SA_FLAGS values:
+ *
+ * SA_ONSTACK indicates that a registered stack_t will be used.
+ * SA_RESTART flag to get restarting signals (which were the default long ago)
+ * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
+ * SA_RESETHAND clears the handler when the signal is delivered.
+ * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
+ * SA_NODEFER prevents the current signal from being masked in the handler.
+ *
+ * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
+ * Unix names RESETHAND and NODEFER respectively.
+ */
+#define SA_NOCLDSTOP   0x00000001
+#define SA_NOCLDWAIT   0x00000002 /* not supported yet */
+#define SA_SIGINFO     0x00000004
+#define SA_ONSTACK     0x08000000
+#define SA_RESTART     0x10000000
+#define SA_NODEFER     0x40000000
+#define SA_RESETHAND   0x80000000
+
+#define SA_NOMASK      SA_NODEFER
+#define SA_ONESHOT     SA_RESETHAND
+
+#define SA_RESTORER    0x04000000
+
+/*
+ * sigaltstack controls
+ */
+#define SS_ONSTACK     1
+#define SS_DISABLE     2
+
+#define MINSIGSTKSZ    2048
+#define SIGSTKSZ       8192
+
+#include <asm-generic/signal.h>
+
+#ifdef __KERNEL__
+struct old_sigaction {
+       __sighandler_t sa_handler;
+       old_sigset_t sa_mask;
+       unsigned long sa_flags;
+       __sigrestore_t sa_restorer;
+};
+
+struct sigaction {
+       __sighandler_t sa_handler;
+       unsigned long sa_flags;
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+};
+
+struct k_sigaction {
+       struct sigaction sa;
+};
+#else
+/* Here we must cater to libcs that poke about in kernel headers.  */
+
+struct sigaction {
+       union {
+         __sighandler_t _sa_handler;
+         void (*_sa_sigaction)(int, struct siginfo *, void *);
+       } _u;
+       sigset_t sa_mask;
+       unsigned long sa_flags;
+       void (*sa_restorer)(void);
+};
+
+#define sa_handler     _u._sa_handler
+#define sa_sigaction   _u._sa_sigaction
+
+#endif /* __KERNEL__ */
+
+typedef struct sigaltstack {
+       void __user *ss_sp;
+       int ss_flags;
+       size_t ss_size;
+} stack_t;
+
+#define ptrace_signal_deliver(regs, cookie) do { } while (0)
+
+#ifdef __KERNEL__
+
+#include <asm/sigcontext.h>
+#undef __HAVE_ARCH_SIG_BITOPS
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_SIGNAL_H */
diff --git a/arch/frv/include/asm/smp.h b/arch/frv/include/asm/smp.h
new file mode 100644 (file)
index 0000000..38349ec
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef __ASM_SMP_H
+#define __ASM_SMP_H
+
+
+#ifdef CONFIG_SMP
+#error SMP not supported
+#endif
+
+#endif
diff --git a/arch/frv/include/asm/socket.h b/arch/frv/include/asm/socket.h
new file mode 100644 (file)
index 0000000..57c3d40
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef _ASM_SOCKET_H
+#define _ASM_SOCKET_H
+
+#include <asm/sockios.h>
+
+/* For setsockopt(2) */
+#define SOL_SOCKET     1
+
+#define SO_DEBUG       1
+#define SO_REUSEADDR   2
+#define SO_TYPE                3
+#define SO_ERROR       4
+#define SO_DONTROUTE   5
+#define SO_BROADCAST   6
+#define SO_SNDBUF      7
+#define SO_RCVBUF      8
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_KEEPALIVE   9
+#define SO_OOBINLINE   10
+#define SO_NO_CHECK    11
+#define SO_PRIORITY    12
+#define SO_LINGER      13
+#define SO_BSDCOMPAT   14
+/* To add :#define SO_REUSEPORT 15 */
+#define SO_PASSCRED    16
+#define SO_PEERCRED    17
+#define SO_RCVLOWAT    18
+#define SO_SNDLOWAT    19
+#define SO_RCVTIMEO    20
+#define SO_SNDTIMEO    21
+
+/* Security levels - as per NRL IPv6 - don't actually do anything */
+#define SO_SECURITY_AUTHENTICATION             22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT       23
+#define SO_SECURITY_ENCRYPTION_NETWORK         24
+
+#define SO_BINDTODEVICE        25
+
+/* Socket filtering */
+#define SO_ATTACH_FILTER        26
+#define SO_DETACH_FILTER        27
+
+#define SO_PEERNAME             28
+#define SO_TIMESTAMP           29
+#define SCM_TIMESTAMP          SO_TIMESTAMP
+
+#define SO_ACCEPTCONN          30
+
+#define SO_PEERSEC             31
+#define SO_PASSSEC             34
+#define SO_TIMESTAMPNS         35
+#define SCM_TIMESTAMPNS                SO_TIMESTAMPNS
+
+#define SO_MARK                        36
+
+#define SO_TIMESTAMPING                37
+#define SCM_TIMESTAMPING       SO_TIMESTAMPING
+
+#endif /* _ASM_SOCKET_H */
+
diff --git a/arch/frv/include/asm/sockios.h b/arch/frv/include/asm/sockios.h
new file mode 100644 (file)
index 0000000..5dbdd13
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _ASM_SOCKIOS__
+#define _ASM_SOCKIOS__
+
+/* Socket-level I/O control calls. */
+#define FIOSETOWN      0x8901
+#define SIOCSPGRP      0x8902
+#define FIOGETOWN      0x8903
+#define SIOCGPGRP      0x8904
+#define SIOCATMARK     0x8905
+#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
+
+#endif /* _ASM_SOCKIOS__ */
+
diff --git a/arch/frv/include/asm/spinlock.h b/arch/frv/include/asm/spinlock.h
new file mode 100644 (file)
index 0000000..fe385f4
--- /dev/null
@@ -0,0 +1,17 @@
+/* spinlock.h: spinlocks for FR-V
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SPINLOCK_H
+#define _ASM_SPINLOCK_H
+
+#error no spinlocks for FR-V yet
+
+#endif /* _ASM_SPINLOCK_H */
diff --git a/arch/frv/include/asm/spr-regs.h b/arch/frv/include/asm/spr-regs.h
new file mode 100644 (file)
index 0000000..01e6af5
--- /dev/null
@@ -0,0 +1,416 @@
+/* spr-regs.h: special-purpose registers on the FRV
+ *
+ * Copyright (C) 2003, 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SPR_REGS_H
+#define _ASM_SPR_REGS_H
+
+/*
+ * PSR - Processor Status Register
+ */
+#define PSR_ET                 0x00000001      /* enable interrupts/exceptions flag */
+#define PSR_PS                 0x00000002      /* previous supervisor mode flag */
+#define PSR_S                  0x00000004      /* supervisor mode flag */
+#define PSR_PIL                        0x00000078      /* processor external interrupt level */
+#define PSR_PIL_0              0x00000000      /* - no interrupt in progress */
+#define PSR_PIL_13             0x00000068      /* - debugging only */
+#define PSR_PIL_14             0x00000070      /* - debugging in progress */
+#define PSR_PIL_15             0x00000078      /* - NMI in progress */
+#define PSR_EM                 0x00000080      /* enable media operation */
+#define PSR_EF                 0x00000100      /* enable FPU operation */
+#define PSR_BE                 0x00001000      /* endianness mode */
+#define PSR_BE_LE              0x00000000      /* - little endian mode */
+#define PSR_BE_BE              0x00001000      /* - big endian mode */
+#define PSR_CM                 0x00002000      /* conditional mode */
+#define PSR_NEM                        0x00004000      /* non-excepting mode */
+#define PSR_ICE                        0x00010000      /* in-circuit emulation mode */
+#define PSR_VERSION_SHIFT      24              /* CPU silicon ID */
+#define PSR_IMPLE_SHIFT                28              /* CPU core ID */
+
+#define PSR_VERSION(psr)       (((psr) >> PSR_VERSION_SHIFT) & 0xf)
+#define PSR_IMPLE(psr)         (((psr) >> PSR_IMPLE_SHIFT) & 0xf)
+
+#define PSR_IMPLE_FR401                0x2
+#define PSR_VERSION_FR401_MB93401      0x0
+#define PSR_VERSION_FR401_MB93401A     0x1
+#define PSR_VERSION_FR401_MB93403      0x2
+
+#define PSR_IMPLE_FR405                0x4
+#define PSR_VERSION_FR405_MB93405      0x0
+
+#define PSR_IMPLE_FR451                0x5
+#define PSR_VERSION_FR451_MB93451      0x0
+
+#define PSR_IMPLE_FR501                0x1
+#define PSR_VERSION_FR501_MB93501      0x1
+#define PSR_VERSION_FR501_MB93501A     0x2
+
+#define PSR_IMPLE_FR551                0x3
+#define PSR_VERSION_FR551_MB93555      0x1
+
+#define __get_PSR()    ({ unsigned long x; asm volatile("movsg psr,%0" : "=r"(x)); x; })
+#define __set_PSR(V)   do { asm volatile("movgs %0,psr" : : "r"(V)); } while(0)
+
+/*
+ * TBR - Trap Base Register
+ */
+#define TBR_TT                 0x00000ff0
+#define TBR_TT_INSTR_MMU_MISS  (0x01 << 4)
+#define TBR_TT_INSTR_ACC_ERROR (0x02 << 4)
+#define TBR_TT_INSTR_ACC_EXCEP (0x03 << 4)
+#define TBR_TT_PRIV_INSTR      (0x06 << 4)
+#define TBR_TT_ILLEGAL_INSTR   (0x07 << 4)
+#define TBR_TT_FP_EXCEPTION    (0x0d << 4)
+#define TBR_TT_MP_EXCEPTION    (0x0e << 4)
+#define TBR_TT_DATA_ACC_ERROR  (0x11 << 4)
+#define TBR_TT_DATA_MMU_MISS   (0x12 << 4)
+#define TBR_TT_DATA_ACC_EXCEP  (0x13 << 4)
+#define TBR_TT_DATA_STR_ERROR  (0x14 << 4)
+#define TBR_TT_DIVISION_EXCEP  (0x17 << 4)
+#define TBR_TT_COMMIT_EXCEP    (0x19 << 4)
+#define TBR_TT_INSTR_TLB_MISS  (0x1a << 4)
+#define TBR_TT_DATA_TLB_MISS   (0x1b << 4)
+#define TBR_TT_DATA_DAT_EXCEP  (0x1d << 4)
+#define TBR_TT_DECREMENT_TIMER (0x1f << 4)
+#define TBR_TT_COMPOUND_EXCEP  (0x20 << 4)
+#define TBR_TT_INTERRUPT_1     (0x21 << 4)
+#define TBR_TT_INTERRUPT_2     (0x22 << 4)
+#define TBR_TT_INTERRUPT_3     (0x23 << 4)
+#define TBR_TT_INTERRUPT_4     (0x24 << 4)
+#define TBR_TT_INTERRUPT_5     (0x25 << 4)
+#define TBR_TT_INTERRUPT_6     (0x26 << 4)
+#define TBR_TT_INTERRUPT_7     (0x27 << 4)
+#define TBR_TT_INTERRUPT_8     (0x28 << 4)
+#define TBR_TT_INTERRUPT_9     (0x29 << 4)
+#define TBR_TT_INTERRUPT_10    (0x2a << 4)
+#define TBR_TT_INTERRUPT_11    (0x2b << 4)
+#define TBR_TT_INTERRUPT_12    (0x2c << 4)
+#define TBR_TT_INTERRUPT_13    (0x2d << 4)
+#define TBR_TT_INTERRUPT_14    (0x2e << 4)
+#define TBR_TT_INTERRUPT_15    (0x2f << 4)
+#define TBR_TT_TRAP0           (0x80 << 4)
+#define TBR_TT_TRAP1           (0x81 << 4)
+#define TBR_TT_TRAP2           (0x82 << 4)
+#define TBR_TT_TRAP3           (0x83 << 4)
+#define TBR_TT_TRAP120         (0xf8 << 4)
+#define TBR_TT_TRAP121         (0xf9 << 4)
+#define TBR_TT_TRAP122         (0xfa << 4)
+#define TBR_TT_TRAP123         (0xfb << 4)
+#define TBR_TT_TRAP124         (0xfc << 4)
+#define TBR_TT_TRAP125         (0xfd << 4)
+#define TBR_TT_TRAP126         (0xfe << 4)
+#define TBR_TT_BREAK           (0xff << 4)
+
+#define TBR_TT_ATOMIC_CMPXCHG32        TBR_TT_TRAP120
+#define TBR_TT_ATOMIC_XCHG32   TBR_TT_TRAP121
+#define TBR_TT_ATOMIC_XOR      TBR_TT_TRAP122
+#define TBR_TT_ATOMIC_OR       TBR_TT_TRAP123
+#define TBR_TT_ATOMIC_AND      TBR_TT_TRAP124
+#define TBR_TT_ATOMIC_SUB      TBR_TT_TRAP125
+#define TBR_TT_ATOMIC_ADD      TBR_TT_TRAP126
+
+#define __get_TBR()    ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; })
+
+/*
+ * HSR0 - Hardware Status Register 0
+ */
+#define HSR0_PDM               0x00000007      /* power down mode */
+#define HSR0_PDM_NORMAL                0x00000000      /* - normal mode */
+#define HSR0_PDM_CORE_SLEEP    0x00000001      /* - CPU core sleep mode */
+#define HSR0_PDM_BUS_SLEEP     0x00000003      /* - bus sleep mode */
+#define HSR0_PDM_PLL_RUN       0x00000005      /* - PLL run */
+#define HSR0_PDM_PLL_STOP      0x00000007      /* - PLL stop */
+#define HSR0_GRLE              0x00000040      /* GR lower register set enable */
+#define HSR0_GRHE              0x00000080      /* GR higher register set enable */
+#define HSR0_FRLE              0x00000100      /* FR lower register set enable */
+#define HSR0_FRHE              0x00000200      /* FR higher register set enable */
+#define HSR0_GRN               0x00000400      /* GR quantity */
+#define HSR0_GRN_64            0x00000000      /* - 64 GR registers */
+#define HSR0_GRN_32            0x00000400      /* - 32 GR registers */
+#define HSR0_FRN               0x00000800      /* FR quantity */
+#define HSR0_FRN_64            0x00000000      /* - 64 FR registers */
+#define HSR0_FRN_32            0x00000800      /* - 32 FR registers */
+#define HSR0_SA                        0x00001000      /* start address (RAMBOOT#) */
+#define HSR0_ETMI              0x00008000      /* enable TIMERI (64-bit up timer) */
+#define HSR0_ETMD              0x00004000      /* enable TIMERD (32-bit down timer) */
+#define HSR0_PEDAT             0x00010000      /* previous DAT mode */
+#define HSR0_XEDAT             0x00020000      /* exception DAT mode */
+#define HSR0_EDAT              0x00080000      /* enable DAT mode */
+#define HSR0_RME               0x00400000      /* enable RAM mode */
+#define HSR0_EMEM              0x00800000      /* enable MMU_Miss mask */
+#define HSR0_EXMMU             0x01000000      /* enable extended MMU mode */
+#define HSR0_EDMMU             0x02000000      /* enable data MMU */
+#define HSR0_EIMMU             0x04000000      /* enable instruction MMU */
+#define HSR0_CBM               0x08000000      /* copy back mode */
+#define HSR0_CBM_WRITE_THRU    0x00000000      /* - write through */
+#define HSR0_CBM_COPY_BACK     0x08000000      /* - copy back */
+#define HSR0_NWA               0x10000000      /* no write allocate */
+#define HSR0_DCE               0x40000000      /* data cache enable */
+#define HSR0_ICE               0x80000000      /* instruction cache enable */
+
+#define __get_HSR(R)   ({ unsigned long x; asm volatile("movsg hsr"#R",%0" : "=r"(x)); x; })
+#define __set_HSR(R,V) do { asm volatile("movgs %0,hsr"#R : : "r"(V)); } while(0)
+
+/*
+ * CCR - Condition Codes Register
+ */
+#define CCR_FCC0               0x0000000f      /* FP/Media condition 0 (fcc0 reg) */
+#define CCR_FCC1               0x000000f0      /* FP/Media condition 1 (fcc1 reg) */
+#define CCR_FCC2               0x00000f00      /* FP/Media condition 2 (fcc2 reg) */
+#define CCR_FCC3               0x0000f000      /* FP/Media condition 3 (fcc3 reg) */
+#define CCR_ICC0               0x000f0000      /* Integer condition 0 (icc0 reg) */
+#define CCR_ICC0_C             0x00010000      /* - Carry flag */
+#define CCR_ICC0_V             0x00020000      /* - Overflow flag */
+#define CCR_ICC0_Z             0x00040000      /* - Zero flag */
+#define CCR_ICC0_N             0x00080000      /* - Negative flag */
+#define CCR_ICC1               0x00f00000      /* Integer condition 1 (icc1 reg) */
+#define CCR_ICC2               0x0f000000      /* Integer condition 2 (icc2 reg) */
+#define CCR_ICC3               0xf0000000      /* Integer condition 3 (icc3 reg) */
+
+/*
+ * CCCR - Condition Codes for Conditional Instructions Register
+ */
+#define CCCR_CC0               0x00000003      /* condition 0 (cc0 reg) */
+#define CCCR_CC0_FALSE         0x00000002      /* - condition is false */
+#define CCCR_CC0_TRUE          0x00000003      /* - condition is true */
+#define CCCR_CC1               0x0000000c      /* condition 1 (cc1 reg) */
+#define CCCR_CC2               0x00000030      /* condition 2 (cc2 reg) */
+#define CCCR_CC3               0x000000c0      /* condition 3 (cc3 reg) */
+#define CCCR_CC4               0x00000300      /* condition 4 (cc4 reg) */
+#define CCCR_CC5               0x00000c00      /* condition 5 (cc5 reg) */
+#define CCCR_CC6               0x00003000      /* condition 6 (cc6 reg) */
+#define CCCR_CC7               0x0000c000      /* condition 7 (cc7 reg) */
+
+/*
+ * ISR - Integer Status Register
+ */
+#define ISR_EMAM               0x00000001      /* memory misaligned access handling */
+#define ISR_EMAM_EXCEPTION     0x00000000      /* - generate exception */
+#define ISR_EMAM_FUDGE         0x00000001      /* - mask out invalid address bits */
+#define ISR_AEXC               0x00000004      /* accrued [overflow] exception */
+#define ISR_DTT                        0x00000018      /* division type trap */
+#define ISR_DTT_IGNORE         0x00000000      /* - ignore division error */
+#define ISR_DTT_DIVBYZERO      0x00000008      /* - generate exception */
+#define ISR_DTT_OVERFLOW       0x00000010      /* - record overflow */
+#define ISR_EDE                        0x00000020      /* enable division exception */
+#define ISR_PLI                        0x20000000      /* pre-load instruction information */
+#define ISR_QI                 0x80000000      /* quad data implementation information */
+
+/*
+ * EPCR0 - Exception PC Register
+ */
+#define EPCR0_V                        0x00000001      /* register content validity indicator */
+#define EPCR0_PC               0xfffffffc      /* faulting instruction address */
+
+/*
+ * ESR0/14/15 - Exception Status Register
+ */
+#define ESRx_VALID             0x00000001      /* register content validity indicator */
+#define ESRx_EC                        0x0000003e      /* exception type */
+#define ESRx_EC_DATA_STORE     0x00000000      /* - data_store_error */
+#define ESRx_EC_INSN_ACCESS    0x00000006      /* - instruction_access_error */
+#define ESRx_EC_PRIV_INSN      0x00000008      /* - privileged_instruction */
+#define ESRx_EC_ILL_INSN       0x0000000a      /* - illegal_instruction */
+#define ESRx_EC_MP_EXCEP       0x0000001c      /* - mp_exception */
+#define ESRx_EC_DATA_ACCESS    0x00000020      /* - data_access_error */
+#define ESRx_EC_DIVISION       0x00000026      /* - division_exception */
+#define ESRx_EC_ITLB_MISS      0x00000034      /* - instruction_access_TLB_miss */
+#define ESRx_EC_DTLB_MISS      0x00000036      /* - data_access_TLB_miss */
+#define ESRx_EC_DATA_ACCESS_DAT        0x0000003a      /* - data_access_DAT_exception */
+
+#define ESR0_IAEC              0x00000100      /* info for instruction-access-exception */
+#define ESR0_IAEC_RESV         0x00000000      /* - reserved */
+#define ESR0_IAEC_PROT_VIOL    0x00000100      /* - protection violation */
+
+#define ESR0_ATXC              0x00f00000      /* address translation exception code */
+#define ESR0_ATXC_MMU_MISS     0x00000000      /* - MMU miss exception and more (?) */
+#define ESR0_ATXC_MULTI_DAT    0x00800000      /* - multiple DAT entry hit */
+#define ESR0_ATXC_MULTI_SAT    0x00900000      /* - multiple SAT entry hit */
+#define ESR0_ATXC_AMRTLB_MISS  0x00a00000      /* - MMU/TLB miss exception */
+#define ESR0_ATXC_PRIV_EXCEP   0x00c00000      /* - privilege protection fault */
+#define ESR0_ATXC_WP_EXCEP     0x00d00000      /* - write protection fault */
+
+#define ESR0_EAV               0x00000800      /* true if EAR0 register valid */
+#define ESR15_EAV              0x00000800      /* true if EAR15 register valid */
+
+/*
+ * ESFR1 - Exception Status Valid Flag Register
+ */
+#define ESFR1_ESR0             0x00000001      /* true if ESR0 is valid */
+#define ESFR1_ESR14            0x00004000      /* true if ESR14 is valid */
+#define ESFR1_ESR15            0x00008000      /* true if ESR15 is valid */
+
+/*
+ * MSR - Media Status Register
+ */
+#define MSR0_AOVF              0x00000001      /* overflow exception accrued */
+#define MSRx_OVF               0x00000002      /* overflow exception detected */
+#define MSRx_SIE               0x0000003c      /* last SIMD instruction exception detected */
+#define MSRx_SIE_NONE          0x00000000      /* - none detected */
+#define MSRx_SIE_FRkHI_ACCk    0x00000020      /* - exception at FRkHI or ACCk */
+#define MSRx_SIE_FRkLO_ACCk1   0x00000010      /* - exception at FRkLO or ACCk+1 */
+#define MSRx_SIE_FRk1HI_ACCk2  0x00000008      /* - exception at FRk+1HI or ACCk+2 */
+#define MSRx_SIE_FRk1LO_ACCk3  0x00000004      /* - exception at FRk+1LO or ACCk+3 */
+#define MSR0_MTT               0x00007000      /* type of last media trap detected */
+#define MSR0_MTT_NONE          0x00000000      /* - none detected */
+#define MSR0_MTT_OVERFLOW      0x00001000      /* - overflow detected */
+#define MSR0_HI                        0x00c00000      /* hardware implementation */
+#define MSR0_HI_ROUNDING       0x00000000      /* - rounding mode */
+#define MSR0_HI_NONROUNDING    0x00c00000      /* - non-rounding mode */
+#define MSR0_EMCI              0x01000000      /* enable media custom instructions */
+#define MSR0_SRDAV             0x10000000      /* select rounding mode of MAVEH */
+#define MSR0_SRDAV_RDAV                0x00000000      /* - controlled by MSR.RDAV */
+#define MSR0_SRDAV_RD          0x10000000      /* - controlled by MSR.RD */
+#define MSR0_RDAV              0x20000000      /* rounding mode of MAVEH */
+#define MSR0_RDAV_NEAREST_MI   0x00000000      /* - round to nearest minus */
+#define MSR0_RDAV_NEAREST_PL   0x20000000      /* - round to nearest plus */
+#define MSR0_RD                        0xc0000000      /* rounding mode */
+#define MSR0_RD_NEAREST                0x00000000      /* - nearest */
+#define MSR0_RD_ZERO           0x40000000      /* - zero */
+#define MSR0_RD_POS_INF                0x80000000      /* - postive infinity */
+#define MSR0_RD_NEG_INF                0xc0000000      /* - negative infinity */
+
+/*
+ * IAMPR0-7 - Instruction Address Mapping Register
+ * DAMPR0-7 - Data Address Mapping Register
+ */
+#define xAMPRx_V               0x00000001      /* register content validity indicator */
+#define DAMPRx_WP              0x00000002      /* write protect */
+#define DAMPRx_WP_RW           0x00000000      /* - read/write */
+#define DAMPRx_WP_RO           0x00000002      /* - read-only */
+#define xAMPRx_C               0x00000004      /* cached/uncached */
+#define xAMPRx_C_CACHED                0x00000000      /* - cached */
+#define xAMPRx_C_UNCACHED      0x00000004      /* - uncached */
+#define xAMPRx_S               0x00000008      /* supervisor only */
+#define xAMPRx_S_USER          0x00000000      /* - userspace can access */
+#define xAMPRx_S_KERNEL                0x00000008      /* - kernel only */
+#define xAMPRx_SS              0x000000f0      /* segment size */
+#define xAMPRx_SS_16Kb         0x00000000      /* - 16 kilobytes */
+#define xAMPRx_SS_64Kb         0x00000010      /* - 64 kilobytes */
+#define xAMPRx_SS_256Kb                0x00000020      /* - 256 kilobytes */
+#define xAMPRx_SS_1Mb          0x00000030      /* - 1 megabyte */
+#define xAMPRx_SS_2Mb          0x00000040      /* - 2 megabytes */
+#define xAMPRx_SS_4Mb          0x00000050      /* - 4 megabytes */
+#define xAMPRx_SS_8Mb          0x00000060      /* - 8 megabytes */
+#define xAMPRx_SS_16Mb         0x00000070      /* - 16 megabytes */
+#define xAMPRx_SS_32Mb         0x00000080      /* - 32 megabytes */
+#define xAMPRx_SS_64Mb         0x00000090      /* - 64 megabytes */
+#define xAMPRx_SS_128Mb                0x000000a0      /* - 128 megabytes */
+#define xAMPRx_SS_256Mb                0x000000b0      /* - 256 megabytes */
+#define xAMPRx_SS_512Mb                0x000000c0      /* - 512 megabytes */
+#define xAMPRx_RESERVED8       0x00000100      /* reserved bit */
+#define xAMPRx_NG              0x00000200      /* non-global */
+#define xAMPRx_L               0x00000400      /* locked */
+#define xAMPRx_M               0x00000800      /* modified */
+#define xAMPRx_D               0x00001000      /* DAT entry */
+#define xAMPRx_RESERVED13      0x00002000      /* reserved bit */
+#define xAMPRx_PPFN            0xfff00000      /* physical page frame number */
+
+#define xAMPRx_V_BIT           0
+#define DAMPRx_WP_BIT          1
+#define xAMPRx_C_BIT           2
+#define xAMPRx_S_BIT           3
+#define xAMPRx_RESERVED8_BIT   8
+#define xAMPRx_NG_BIT          9
+#define xAMPRx_L_BIT           10
+#define xAMPRx_M_BIT           11
+#define xAMPRx_D_BIT           12
+#define xAMPRx_RESERVED13_BIT  13
+
+#define __get_IAMPR(R) ({ unsigned long x; asm volatile("movsg iampr"#R",%0" : "=r"(x)); x; })
+#define __get_DAMPR(R) ({ unsigned long x; asm volatile("movsg dampr"#R",%0" : "=r"(x)); x; })
+
+#define __get_IAMLR(R) ({ unsigned long x; asm volatile("movsg iamlr"#R",%0" : "=r"(x)); x; })
+#define __get_DAMLR(R) ({ unsigned long x; asm volatile("movsg damlr"#R",%0" : "=r"(x)); x; })
+
+#define __set_IAMPR(R,V)       do { asm volatile("movgs %0,iampr"#R : : "r"(V)); } while(0)
+#define __set_DAMPR(R,V)       do { asm volatile("movgs %0,dampr"#R : : "r"(V)); } while(0)
+
+#define __set_IAMLR(R,V)       do { asm volatile("movgs %0,iamlr"#R : : "r"(V)); } while(0)
+#define __set_DAMLR(R,V)       do { asm volatile("movgs %0,damlr"#R : : "r"(V)); } while(0)
+
+#define save_dampr(R, _dampr)                                  \
+do {                                                           \
+       asm volatile("movsg dampr"R",%0" : "=r"(_dampr));       \
+} while(0)
+
+#define restore_dampr(R, _dampr)                       \
+do {                                                   \
+       asm volatile("movgs %0,dampr"R :: "r"(_dampr)); \
+} while(0)
+
+/*
+ * AMCR - Address Mapping Control Register
+ */
+#define AMCR_IAMRN             0x000000ff      /* quantity of IAMPR registers */
+#define AMCR_DAMRN             0x0000ff00      /* quantity of DAMPR registers */
+
+/*
+ * TTBR - Address Translation Table Base Register
+ */
+#define __get_TTBR()           ({ unsigned long x; asm volatile("movsg ttbr,%0" : "=r"(x)); x; })
+
+/*
+ * TPXR - TLB Probe Extend Register
+ */
+#define TPXR_E                 0x00000001
+#define TPXR_LMAX_SHIFT                20
+#define TPXR_LMAX_SMASK                0xf
+#define TPXR_WMAX_SHIFT                24
+#define TPXR_WMAX_SMASK                0xf
+#define TPXR_WAY_SHIFT         28
+#define TPXR_WAY_SMASK         0xf
+
+/*
+ * DCR - Debug Control Register
+ */
+#define DCR_IBCE3              0x00000001      /* break on conditional insn pointed to by IBAR3 */
+#define DCR_IBE3               0x00000002      /* break on insn pointed to by IBAR3 */
+#define DCR_IBCE1              0x00000004      /* break on conditional insn pointed to by IBAR2 */
+#define DCR_IBE1               0x00000008      /* break on insn pointed to by IBAR2 */
+#define DCR_IBCE2              0x00000010      /* break on conditional insn pointed to by IBAR1 */
+#define DCR_IBE2               0x00000020      /* break on insn pointed to by IBAR1 */
+#define DCR_IBCE0              0x00000040      /* break on conditional insn pointed to by IBAR0 */
+#define DCR_IBE0               0x00000080      /* break on insn pointed to by IBAR0 */
+
+#define DCR_DDBE1              0x00004000      /* use DBDR1x when checking DBAR1 */
+#define DCR_DWBE1              0x00008000      /* break on store to address in DBAR1/DBMR1x */
+#define DCR_DRBE1              0x00010000      /* break on load from address in DBAR1/DBMR1x */
+#define DCR_DDBE0              0x00020000      /* use DBDR0x when checking DBAR0 */
+#define DCR_DWBE0              0x00040000      /* break on store to address in DBAR0/DBMR0x */
+#define DCR_DRBE0              0x00080000      /* break on load from address in DBAR0/DBMR0x */
+
+#define DCR_EIM                        0x0c000000      /* external interrupt disable */
+#define DCR_IBM                        0x10000000      /* instruction break disable */
+#define DCR_SE                 0x20000000      /* single step enable */
+#define DCR_EBE                        0x40000000      /* exception break enable */
+
+/*
+ * BRR - Break Interrupt Request Register
+ */
+#define BRR_ST                 0x00000001      /* single-step detected */
+#define BRR_SB                 0x00000002      /* break instruction detected */
+#define BRR_BB                 0x00000004      /* branch with hint detected */
+#define BRR_CBB                        0x00000008      /* branch to LR detected */
+#define BRR_IBx                        0x000000f0      /* hardware breakpoint detected */
+#define BRR_DBx                        0x00000f00      /* hardware watchpoint detected */
+#define BRR_DBNEx              0x0000f000      /* ? */
+#define BRR_EBTT               0x00ff0000      /* trap type of exception break */
+#define BRR_TB                 0x10000000      /* external break request detected */
+#define BRR_CB                 0x20000000      /* ICE break command detected */
+#define BRR_EB                 0x40000000      /* exception break detected */
+
+/*
+ * BPSR - Break PSR Save Register
+ */
+#define BPSR_BET               0x00000001      /* former PSR.ET */
+#define BPSR_BS                        0x00001000      /* former PSR.S */
+
+#endif /* _ASM_SPR_REGS_H */
diff --git a/arch/frv/include/asm/stat.h b/arch/frv/include/asm/stat.h
new file mode 100644 (file)
index 0000000..ce56de9
--- /dev/null
@@ -0,0 +1,100 @@
+#ifndef _ASM_STAT_H
+#define _ASM_STAT_H
+
+struct __old_kernel_stat {
+       unsigned short st_dev;
+       unsigned short st_ino;
+       unsigned short st_mode;
+       unsigned short st_nlink;
+       unsigned short st_uid;
+       unsigned short st_gid;
+       unsigned short st_rdev;
+       unsigned long  st_size;
+       unsigned long  st_atime;
+       unsigned long  st_mtime;
+       unsigned long  st_ctime;
+};
+
+/* This matches struct stat in uClibc/glibc.  */
+struct stat {
+       unsigned char __pad1[6];
+       unsigned short st_dev;
+
+       unsigned long __pad2;
+       unsigned long st_ino;
+
+       unsigned short __pad3;
+       unsigned short st_mode;
+       unsigned short __pad4;
+       unsigned short st_nlink;
+
+       unsigned short __pad5;
+       unsigned short st_uid;
+       unsigned short __pad6;
+       unsigned short st_gid;
+
+       unsigned char __pad7[6];
+       unsigned short st_rdev;
+
+       unsigned long __pad8;
+       unsigned long st_size;
+
+       unsigned long __pad9;           /* align 64-bit st_blocks to 2-word */
+       unsigned long st_blksize;
+
+       unsigned long __pad10;  /* future possible st_blocks high bits */
+       unsigned long st_blocks;        /* Number 512-byte blocks allocated. */
+
+       unsigned long __unused1;
+       unsigned long st_atime;
+
+       unsigned long __unused2;
+       unsigned long st_mtime;
+
+       unsigned long __unused3;
+       unsigned long st_ctime;
+
+       unsigned long long __unused4;
+};
+
+/* This matches struct stat64 in uClibc/glibc.  The layout is exactly
+   the same as that of struct stat above, with 64-bit types taking up
+   space that was formerly used by padding.  stat syscalls are still
+   different from stat64, though, in that the former tests for
+   overflow.  */
+struct stat64 {
+       unsigned char __pad1[6];
+       unsigned short st_dev;
+
+       unsigned long long st_ino;
+
+       unsigned int st_mode;
+       unsigned int st_nlink;
+
+       unsigned long st_uid;
+       unsigned long st_gid;
+
+       unsigned char __pad2[6];
+       unsigned short st_rdev;
+
+       long long st_size;
+
+       unsigned long __pad3;           /* align 64-bit st_blocks to 2-word */
+       unsigned long st_blksize;
+
+       unsigned long __pad4;           /* future possible st_blocks high bits */
+       unsigned long st_blocks;        /* Number 512-byte blocks allocated. */
+
+       unsigned long st_atime_nsec;
+       unsigned long st_atime;
+
+       unsigned int st_mtime_nsec;
+       unsigned long st_mtime;
+
+       unsigned long st_ctime_nsec;
+       unsigned long st_ctime;
+
+       unsigned long long __unused4;
+};
+
+#endif /* _ASM_STAT_H */
diff --git a/arch/frv/include/asm/statfs.h b/arch/frv/include/asm/statfs.h
new file mode 100644 (file)
index 0000000..741f586
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _ASM_STATFS_H
+#define _ASM_STATFS_H
+
+#include <asm-generic/statfs.h>
+
+#endif /* _ASM_STATFS_H */
+
diff --git a/arch/frv/include/asm/string.h b/arch/frv/include/asm/string.h
new file mode 100644 (file)
index 0000000..5ed310f
--- /dev/null
@@ -0,0 +1,51 @@
+/* string.h: FRV string handling
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_STRING_H_
+#define _ASM_STRING_H_
+
+#ifdef __KERNEL__ /* only set these up for kernel code */
+
+#define __HAVE_ARCH_MEMSET 1
+#define __HAVE_ARCH_MEMCPY 1
+
+extern void *memset(void *, int, __kernel_size_t);
+extern void *memcpy(void *, const void *, __kernel_size_t);
+
+#else /* KERNEL */
+
+/*
+ *     let user libraries deal with these,
+ *     IMHO the kernel has no place defining these functions for user apps
+ */
+
+#define __HAVE_ARCH_STRCPY 1
+#define __HAVE_ARCH_STRNCPY 1
+#define __HAVE_ARCH_STRCAT 1
+#define __HAVE_ARCH_STRNCAT 1
+#define __HAVE_ARCH_STRCMP 1
+#define __HAVE_ARCH_STRNCMP 1
+#define __HAVE_ARCH_STRNICMP 1
+#define __HAVE_ARCH_STRCHR 1
+#define __HAVE_ARCH_STRRCHR 1
+#define __HAVE_ARCH_STRSTR 1
+#define __HAVE_ARCH_STRLEN 1
+#define __HAVE_ARCH_STRNLEN 1
+#define __HAVE_ARCH_MEMSET 1
+#define __HAVE_ARCH_MEMCPY 1
+#define __HAVE_ARCH_MEMMOVE 1
+#define __HAVE_ARCH_MEMSCAN 1
+#define __HAVE_ARCH_MEMCMP 1
+#define __HAVE_ARCH_MEMCHR 1
+#define __HAVE_ARCH_STRTOK 1
+
+#endif /* KERNEL */
+#endif /* _ASM_STRING_H_ */
diff --git a/arch/frv/include/asm/suspend.h b/arch/frv/include/asm/suspend.h
new file mode 100644 (file)
index 0000000..5fa7b5a
--- /dev/null
@@ -0,0 +1,20 @@
+/* suspend.h: suspension stuff
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SUSPEND_H
+#define _ASM_SUSPEND_H
+
+static inline int arch_prepare_suspend(void)
+{
+       return 0;
+}
+
+#endif /* _ASM_SUSPEND_H */
diff --git a/arch/frv/include/asm/swab.h b/arch/frv/include/asm/swab.h
new file mode 100644 (file)
index 0000000..f305834
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _ASM_SWAB_H
+#define _ASM_SWAB_H
+
+#include <linux/types.h>
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+#  define __SWAB_64_THRU_32__
+#endif
+
+#endif /* _ASM_SWAB_H */
diff --git a/arch/frv/include/asm/system.h b/arch/frv/include/asm/system.h
new file mode 100644 (file)
index 0000000..7742ec0
--- /dev/null
@@ -0,0 +1,301 @@
+/* system.h: FR-V CPU control definitions
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SYSTEM_H
+#define _ASM_SYSTEM_H
+
+#include <linux/types.h>
+#include <linux/linkage.h>
+#include <linux/kernel.h>
+
+struct thread_struct;
+
+/*
+ * switch_to(prev, next) should switch from task `prev' to `next'
+ * `prev' will never be the same as `next'.
+ * The `mb' is to tell GCC not to cache `current' across this call.
+ */
+extern asmlinkage
+struct task_struct *__switch_to(struct thread_struct *prev_thread,
+                               struct thread_struct *next_thread,
+                               struct task_struct *prev);
+
+#define switch_to(prev, next, last)                                    \
+do {                                                                   \
+       (prev)->thread.sched_lr =                                       \
+               (unsigned long) __builtin_return_address(0);            \
+       (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \
+       mb();                                                           \
+} while(0)
+
+/*
+ * interrupt flag manipulation
+ * - use virtual interrupt management since touching the PSR is slow
+ *   - ICC2.Z: T if interrupts virtually disabled
+ *   - ICC2.C: F if interrupts really disabled
+ * - if Z==1 upon interrupt:
+ *   - C is set to 0
+ *   - interrupts are really disabled
+ *   - entry.S returns immediately
+ * - uses TIHI (TRAP if Z==0 && C==0) #2 to really reenable interrupts
+ *   - if taken, the trap:
+ *     - sets ICC2.C
+ *     - enables interrupts
+ */
+#define local_irq_disable()                                    \
+do {                                                           \
+       /* set Z flag, but don't change the C flag */           \
+       asm volatile("  andcc   gr0,gr0,gr0,icc2        \n"     \
+                    :                                          \
+                    :                                          \
+                    : "memory", "icc2"                         \
+                    );                                         \
+} while(0)
+
+#define local_irq_enable()                                     \
+do {                                                           \
+       /* clear Z flag and then test the C flag */             \
+       asm volatile("  oricc   gr0,#1,gr0,icc2         \n"     \
+                    "  tihi    icc2,gr0,#2             \n"     \
+                    :                                          \
+                    :                                          \
+                    : "memory", "icc2"                         \
+                    );                                         \
+} while(0)
+
+#define local_save_flags(flags)                                        \
+do {                                                           \
+       typecheck(unsigned long, flags);                        \
+       asm volatile("movsg ccr,%0"                             \
+                    : "=r"(flags)                              \
+                    :                                          \
+                    : "memory");                               \
+                                                               \
+       /* shift ICC2.Z to bit 0 */                             \
+       flags >>= 26;                                           \
+                                                               \
+       /* make flags 1 if interrupts disabled, 0 otherwise */  \
+       flags &= 1UL;                                           \
+} while(0)
+
+#define irqs_disabled() \
+       ({unsigned long flags; local_save_flags(flags); !!flags; })
+
+#define        local_irq_save(flags)                   \
+do {                                           \
+       typecheck(unsigned long, flags);        \
+       local_save_flags(flags);                \
+       local_irq_disable();                    \
+} while(0)
+
+#define        local_irq_restore(flags)                                        \
+do {                                                                   \
+       typecheck(unsigned long, flags);                                \
+                                                                       \
+       /* load the Z flag by turning 1 if disabled into 0 if disabled  \
+        * and thus setting the Z flag but not the C flag */            \
+       asm volatile("  xoricc  %0,#1,gr0,icc2          \n"             \
+                    /* then test Z=0 and C=0 */                        \
+                    "  tihi    icc2,gr0,#2             \n"             \
+                    :                                                  \
+                    : "r"(flags)                                       \
+                    : "memory", "icc2"                                 \
+                    );                                                 \
+                                                                       \
+} while(0)
+
+/*
+ * real interrupt flag manipulation
+ */
+#define __local_irq_disable()                          \
+do {                                                   \
+       unsigned long psr;                              \
+       asm volatile("  movsg   psr,%0          \n"     \
+                    "  andi    %0,%2,%0        \n"     \
+                    "  ori     %0,%1,%0        \n"     \
+                    "  movgs   %0,psr          \n"     \
+                    : "=r"(psr)                        \
+                    : "i" (PSR_PIL_14), "i" (~PSR_PIL) \
+                    : "memory");                       \
+} while(0)
+
+#define __local_irq_enable()                           \
+do {                                                   \
+       unsigned long psr;                              \
+       asm volatile("  movsg   psr,%0          \n"     \
+                    "  andi    %0,%1,%0        \n"     \
+                    "  movgs   %0,psr          \n"     \
+                    : "=r"(psr)                        \
+                    : "i" (~PSR_PIL)                   \
+                    : "memory");                       \
+} while(0)
+
+#define __local_save_flags(flags)              \
+do {                                           \
+       typecheck(unsigned long, flags);        \
+       asm("movsg psr,%0"                      \
+           : "=r"(flags)                       \
+           :                                   \
+           : "memory");                        \
+} while(0)
+
+#define        __local_irq_save(flags)                         \
+do {                                                   \
+       unsigned long npsr;                             \
+       typecheck(unsigned long, flags);                \
+       asm volatile("  movsg   psr,%0          \n"     \
+                    "  andi    %0,%3,%1        \n"     \
+                    "  ori     %1,%2,%1        \n"     \
+                    "  movgs   %1,psr          \n"     \
+                    : "=r"(flags), "=r"(npsr)          \
+                    : "i" (PSR_PIL_14), "i" (~PSR_PIL) \
+                    : "memory");                       \
+} while(0)
+
+#define        __local_irq_restore(flags)                      \
+do {                                                   \
+       typecheck(unsigned long, flags);                \
+       asm volatile("  movgs   %0,psr          \n"     \
+                    :                                  \
+                    : "r" (flags)                      \
+                    : "memory");                       \
+} while(0)
+
+#define __irqs_disabled() \
+       ((__get_PSR() & PSR_PIL) >= PSR_PIL_14)
+
+/*
+ * Force strict CPU ordering.
+ */
+#define nop()                  asm volatile ("nop"::)
+#define mb()                   asm volatile ("membar" : : :"memory")
+#define rmb()                  asm volatile ("membar" : : :"memory")
+#define wmb()                  asm volatile ("membar" : : :"memory")
+#define read_barrier_depends() do { } while (0)
+
+#ifdef CONFIG_SMP
+#define smp_mb()                       mb()
+#define smp_rmb()                      rmb()
+#define smp_wmb()                      wmb()
+#define smp_read_barrier_depends()     read_barrier_depends()
+#define set_mb(var, value) \
+       do { xchg(&var, (value)); } while (0)
+#else
+#define smp_mb()                       barrier()
+#define smp_rmb()                      barrier()
+#define smp_wmb()                      barrier()
+#define smp_read_barrier_depends()     do {} while(0)
+#define set_mb(var, value) \
+       do { var = (value); barrier(); } while (0)
+#endif
+
+extern void die_if_kernel(const char *, ...) __attribute__((format(printf, 1, 2)));
+extern void free_initmem(void);
+
+#define arch_align_stack(x) (x)
+
+/*****************************************************************************/
+/*
+ * compare and conditionally exchange value with memory
+ * - if (*ptr == test) then orig = *ptr; *ptr = test;
+ * - if (*ptr != test) then orig = *ptr;
+ */
+#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
+
+#define cmpxchg(ptr, test, new)                                                        \
+({                                                                             \
+       __typeof__(ptr) __xg_ptr = (ptr);                                       \
+       __typeof__(*(ptr)) __xg_orig, __xg_tmp;                                 \
+       __typeof__(*(ptr)) __xg_test = (test);                                  \
+       __typeof__(*(ptr)) __xg_new = (new);                                    \
+                                                                               \
+       switch (sizeof(__xg_orig)) {                                            \
+       case 4:                                                                 \
+               asm volatile(                                                   \
+                       "0:                                             \n"     \
+                       "       orcc            gr0,gr0,gr0,icc3        \n"     \
+                       "       ckeq            icc3,cc7                \n"     \
+                       "       ld.p            %M0,%1                  \n"     \
+                       "       orcr            cc7,cc7,cc3             \n"     \
+                       "       sub%I4cc        %1,%4,%2,icc0           \n"     \
+                       "       bne             icc0,#0,1f              \n"     \
+                       "       cst.p           %3,%M0          ,cc3,#1 \n"     \
+                       "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     \
+                       "       beq             icc3,#0,0b              \n"     \
+                       "1:                                             \n"     \
+                       : "+U"(*__xg_ptr), "=&r"(__xg_orig), "=&r"(__xg_tmp)    \
+                       : "r"(__xg_new), "NPr"(__xg_test)                       \
+                       : "memory", "cc7", "cc3", "icc3", "icc0"                \
+                       );                                                      \
+               break;                                                          \
+                                                                               \
+       default:                                                                \
+               __xg_orig = (__typeof__(__xg_orig))0;                           \
+               asm volatile("break");                                          \
+               break;                                                          \
+       }                                                                       \
+                                                                               \
+       __xg_orig;                                                              \
+})
+
+#else
+
+extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new);
+
+#define cmpxchg(ptr, test, new)                                                        \
+({                                                                             \
+       __typeof__(ptr) __xg_ptr = (ptr);                                       \
+       __typeof__(*(ptr)) __xg_orig;                                           \
+       __typeof__(*(ptr)) __xg_test = (test);                                  \
+       __typeof__(*(ptr)) __xg_new = (new);                                    \
+                                                                               \
+       switch (sizeof(__xg_orig)) {                                            \
+       case 4: __xg_orig = (__force __typeof__(*ptr))                          \
+                       __cmpxchg_32((__force uint32_t *)__xg_ptr,              \
+                                        (__force uint32_t)__xg_test,           \
+                                        (__force uint32_t)__xg_new); break;    \
+       default:                                                                \
+               __xg_orig = (__typeof__(__xg_orig))0;                           \
+               asm volatile("break");                                          \
+               break;                                                          \
+       }                                                                       \
+                                                                               \
+       __xg_orig;                                                              \
+})
+
+#endif
+
+#include <asm-generic/cmpxchg-local.h>
+
+static inline unsigned long __cmpxchg_local(volatile void *ptr,
+                                     unsigned long old,
+                                     unsigned long new, int size)
+{
+       switch (size) {
+       case 4:
+               return cmpxchg((unsigned long *)ptr, old, new);
+       default:
+               return __cmpxchg_local_generic(ptr, old, new, size);
+       }
+
+       return old;
+}
+
+/*
+ * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make
+ * them available.
+ */
+#define cmpxchg_local(ptr, o, n)                                       \
+       ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \
+                       (unsigned long)(n), sizeof(*(ptr))))
+#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
+
+#endif /* _ASM_SYSTEM_H */
diff --git a/arch/frv/include/asm/termbits.h b/arch/frv/include/asm/termbits.h
new file mode 100644 (file)
index 0000000..5568492
--- /dev/null
@@ -0,0 +1,202 @@
+#ifndef _ASM_TERMBITS_H__
+#define _ASM_TERMBITS_H__
+
+#include <linux/posix_types.h>
+
+typedef unsigned char  cc_t;
+typedef unsigned int   speed_t;
+typedef unsigned int   tcflag_t;
+
+#define NCCS 19
+struct termios {
+       tcflag_t c_iflag;               /* input mode flags */
+       tcflag_t c_oflag;               /* output mode flags */
+       tcflag_t c_cflag;               /* control mode flags */
+       tcflag_t c_lflag;               /* local mode flags */
+       cc_t c_line;                    /* line discipline */
+       cc_t c_cc[NCCS];                /* control characters */
+};
+
+struct termios2 {
+       tcflag_t c_iflag;               /* input mode flags */
+       tcflag_t c_oflag;               /* output mode flags */
+       tcflag_t c_cflag;               /* control mode flags */
+       tcflag_t c_lflag;               /* local mode flags */
+       cc_t c_line;                    /* line discipline */
+       cc_t c_cc[NCCS];                /* control characters */
+       speed_t c_ispeed;               /* input speed */
+       speed_t c_ospeed;               /* output speed */
+};
+
+struct ktermios {
+       tcflag_t c_iflag;               /* input mode flags */
+       tcflag_t c_oflag;               /* output mode flags */
+       tcflag_t c_cflag;               /* control mode flags */
+       tcflag_t c_lflag;               /* local mode flags */
+       cc_t c_line;                    /* line discipline */
+       cc_t c_cc[NCCS];                /* control characters */
+       speed_t c_ispeed;               /* input speed */
+       speed_t c_ospeed;               /* output speed */
+};
+
+/* c_cc characters */
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
+
+
+/* c_iflag bits */
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK  0000020
+#define ISTRIP 0000040
+#define INLCR  0000100
+#define IGNCR  0000200
+#define ICRNL  0000400
+#define IUCLC  0001000
+#define IXON   0002000
+#define IXANY  0004000
+#define IXOFF  0010000
+#define IMAXBEL        0020000
+#define IUTF8  0040000
+
+/* c_oflag bits */
+#define OPOST  0000001
+#define OLCUC  0000002
+#define ONLCR  0000004
+#define OCRNL  0000010
+#define ONOCR  0000020
+#define ONLRET 0000040
+#define OFILL  0000100
+#define OFDEL  0000200
+#define NLDLY  0000400
+#define   NL0  0000000
+#define   NL1  0000400
+#define CRDLY  0003000
+#define   CR0  0000000
+#define   CR1  0001000
+#define   CR2  0002000
+#define   CR3  0003000
+#define TABDLY 0014000
+#define   TAB0 0000000
+#define   TAB1 0004000
+#define   TAB2 0010000
+#define   TAB3 0014000
+#define   XTABS        0014000
+#define BSDLY  0020000
+#define   BS0  0000000
+#define   BS1  0020000
+#define VTDLY  0040000
+#define   VT0  0000000
+#define   VT1  0040000
+#define FFDLY  0100000
+#define   FF0  0000000
+#define   FF1  0100000
+
+/* c_cflag bit meaning */
+#define CBAUD  0010017
+#define  B0    0000000         /* hang up */
+#define  B50   0000001
+#define  B75   0000002
+#define  B110  0000003
+#define  B134  0000004
+#define  B150  0000005
+#define  B200  0000006
+#define  B300  0000007
+#define  B600  0000010
+#define  B1200 0000011
+#define  B1800 0000012
+#define  B2400 0000013
+#define  B4800 0000014
+#define  B9600 0000015
+#define  B19200        0000016
+#define  B38400        0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE  0000060
+#define   CS5  0000000
+#define   CS6  0000020
+#define   CS7  0000040
+#define   CS8  0000060
+#define CSTOPB 0000100
+#define CREAD  0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL  0002000
+#define CLOCAL 0004000
+#define CBAUDEX 0010000
+#define    BOTHER 0010000
+#define    B57600 0010001
+#define   B115200 0010002
+#define   B230400 0010003
+#define   B460800 0010004
+#define   B500000 0010005
+#define   B576000 0010006
+#define   B921600 0010007
+#define  B1000000 0010010
+#define  B1152000 0010011
+#define  B1500000 0010012
+#define  B2000000 0010013
+#define  B2500000 0010014
+#define  B3000000 0010015
+#define  B3500000 0010016
+#define  B4000000 0010017
+#define CIBAUD   002003600000          /* Input baud rate */
+#define CTVB     004000000000          /* VisioBraille Terminal flow control */
+#define CMSPAR   010000000000          /* mark or space (stick) parity */
+#define CRTSCTS          020000000000          /* flow control */
+
+#define IBSHIFT        16                      /* Shift from CBAUD to CIBAUD */
+
+/* c_lflag bits */
+#define ISIG   0000001
+#define ICANON 0000002
+#define XCASE  0000004
+#define ECHO   0000010
+#define ECHOE  0000020
+#define ECHOK  0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define ECHOCTL        0001000
+#define ECHOPRT        0002000
+#define ECHOKE 0004000
+#define FLUSHO 0010000
+#define PENDIN 0040000
+#define IEXTEN 0100000
+
+
+/* tcflow() and TCXONC use these */
+#define        TCOOFF          0
+#define        TCOON           1
+#define        TCIOFF          2
+#define        TCION           3
+
+/* tcflush() and TCFLSH use these */
+#define        TCIFLUSH        0
+#define        TCOFLUSH        1
+#define        TCIOFLUSH       2
+
+/* tcsetattr uses these */
+#define        TCSANOW         0
+#define        TCSADRAIN       1
+#define        TCSAFLUSH       2
+
+#endif /* _ASM_TERMBITS_H__ */
+
diff --git a/arch/frv/include/asm/termios.h b/arch/frv/include/asm/termios.h
new file mode 100644 (file)
index 0000000..a62fb58
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef _ASM_TERMIOS_H
+#define _ASM_TERMIOS_H
+
+#include <asm/termbits.h>
+#include <asm/ioctls.h>
+
+struct winsize {
+       unsigned short ws_row;
+       unsigned short ws_col;
+       unsigned short ws_xpixel;
+       unsigned short ws_ypixel;
+};
+
+#define NCC 8
+struct termio {
+       unsigned short c_iflag;         /* input mode flags */
+       unsigned short c_oflag;         /* output mode flags */
+       unsigned short c_cflag;         /* control mode flags */
+       unsigned short c_lflag;         /* local mode flags */
+       unsigned char c_line;           /* line discipline */
+       unsigned char c_cc[NCC];        /* control characters */
+};
+
+#ifdef __KERNEL__
+/*     intr=^C         quit=^|         erase=del       kill=^U
+       eof=^D          vtime=\0        vmin=\1         sxtc=\0
+       start=^Q        stop=^S         susp=^Z         eol=\0
+       reprint=^R      discard=^U      werase=^W       lnext=^V
+       eol2=\0
+*/
+#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
+#endif
+
+/* modem lines */
+#define TIOCM_LE       0x001
+#define TIOCM_DTR      0x002
+#define TIOCM_RTS      0x004
+#define TIOCM_ST       0x008
+#define TIOCM_SR       0x010
+#define TIOCM_CTS      0x020
+#define TIOCM_CAR      0x040
+#define TIOCM_RNG      0x080
+#define TIOCM_DSR      0x100
+#define TIOCM_CD       TIOCM_CAR
+#define TIOCM_RI       TIOCM_RNG
+#define TIOCM_OUT1     0x2000
+#define TIOCM_OUT2     0x4000
+#define TIOCM_LOOP     0x8000
+
+#define TIOCM_MODEM_BITS       TIOCM_OUT2      /* IRDA support */
+
+/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
+
+#ifdef __KERNEL__
+#include <asm-generic/termios.h>
+#endif
+
+#endif /* _ASM_TERMIOS_H */
diff --git a/arch/frv/include/asm/thread_info.h b/arch/frv/include/asm/thread_info.h
new file mode 100644 (file)
index 0000000..bb53ab7
--- /dev/null
@@ -0,0 +1,144 @@
+/* thread_info.h: description
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * Derived from include/asm-i386/thread_info.h
+ *
+ * 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.
+ */
+
+#ifndef _ASM_THREAD_INFO_H
+#define _ASM_THREAD_INFO_H
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+#include <asm/processor.h>
+#endif
+
+#define THREAD_SIZE            8192
+
+/*
+ * low level task data that entry.S needs immediate access to
+ * - this struct should fit entirely inside of one cache line
+ * - this struct shares the supervisor stack pages
+ * - if the contents of this structure are changed, the assembly constants must also be changed
+ */
+#ifndef __ASSEMBLY__
+
+struct thread_info {
+       struct task_struct      *task;          /* main task structure */
+       struct exec_domain      *exec_domain;   /* execution domain */
+       unsigned long           flags;          /* low level flags */
+       unsigned long           status;         /* thread-synchronous flags */
+       __u32                   cpu;            /* current CPU */
+       int                     preempt_count;  /* 0 => preemptable, <0 => BUG */
+
+       mm_segment_t            addr_limit;     /* thread address space:
+                                                * 0-0xBFFFFFFF for user-thead
+                                                * 0-0xFFFFFFFF for kernel-thread
+                                                */
+       struct restart_block    restart_block;
+
+       __u8                    supervisor_stack[0];
+};
+
+#else /* !__ASSEMBLY__ */
+
+#include <asm/asm-offsets.h>
+
+#endif
+
+#define PREEMPT_ACTIVE         0x10000000
+
+/*
+ * macros/functions for gaining access to the thread information structure
+ *
+ * preempt_count needs to be 1 initially, until the scheduler is functional.
+ */
+#ifndef __ASSEMBLY__
+
+#define INIT_THREAD_INFO(tsk)                  \
+{                                              \
+       .task           = &tsk,                 \
+       .exec_domain    = &default_exec_domain, \
+       .flags          = 0,                    \
+       .cpu            = 0,                    \
+       .preempt_count  = 1,                    \
+       .addr_limit     = KERNEL_DS,            \
+       .restart_block = {                      \
+               .fn = do_no_restart_syscall,    \
+       },                                      \
+}
+
+#define init_thread_info       (init_thread_union.thread_info)
+#define init_stack             (init_thread_union.stack)
+
+/* how to get the thread information struct from C */
+register struct thread_info *__current_thread_info asm("gr15");
+
+#define current_thread_info() ({ __current_thread_info; })
+
+#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
+
+/* thread information allocation */
+#ifdef CONFIG_DEBUG_STACK_USAGE
+#define alloc_thread_info(tsk)                                 \
+       ({                                                      \
+               struct thread_info *ret;                        \
+                                                               \
+               ret = kzalloc(THREAD_SIZE, GFP_KERNEL);         \
+                                                               \
+               ret;                                            \
+       })
+#else
+#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL)
+#endif
+
+#define free_thread_info(info) kfree(info)
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * thread information flags
+ * - these are process state flags that various assembly files may need to access
+ * - pending work-to-be-done flags are in LSW
+ * - other flags in MSW
+ */
+#define TIF_SYSCALL_TRACE      0       /* syscall trace active */
+#define TIF_SIGPENDING         1       /* signal pending */
+#define TIF_NEED_RESCHED       2       /* rescheduling necessary */
+#define TIF_SINGLESTEP         3       /* restore singlestep on return to user mode */
+#define TIF_IRET               4       /* return with iret */
+#define TIF_RESTORE_SIGMASK    5       /* restore signal mask in do_signal() */
+#define TIF_POLLING_NRFLAG     16      /* true if poll_idle() is polling TIF_NEED_RESCHED */
+#define TIF_MEMDIE             17      /* OOM killer killed process */
+#define TIF_FREEZE             18      /* freezing for suspend */
+
+#define _TIF_SYSCALL_TRACE     (1 << TIF_SYSCALL_TRACE)
+#define _TIF_SIGPENDING                (1 << TIF_SIGPENDING)
+#define _TIF_NEED_RESCHED      (1 << TIF_NEED_RESCHED)
+#define _TIF_SINGLESTEP                (1 << TIF_SINGLESTEP)
+#define _TIF_IRET              (1 << TIF_IRET)
+#define _TIF_RESTORE_SIGMASK   (1 << TIF_RESTORE_SIGMASK)
+#define _TIF_POLLING_NRFLAG    (1 << TIF_POLLING_NRFLAG)
+#define _TIF_FREEZE            (1 << TIF_FREEZE)
+
+#define _TIF_WORK_MASK         0x0000FFFE      /* work to do on interrupt/exception return */
+#define _TIF_ALLWORK_MASK      0x0000FFFF      /* work to do on any return to u-space */
+
+/*
+ * Thread-synchronous status.
+ *
+ * This is different from the flags in that nobody else
+ * ever touches our thread-synchronous status, so we don't
+ * have to worry about atomic accesses.
+ */
+#define TS_USEDFPM             0x0001  /* FPU/Media was used by this task this quantum (SMP) */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_THREAD_INFO_H */
diff --git a/arch/frv/include/asm/timer-regs.h b/arch/frv/include/asm/timer-regs.h
new file mode 100644 (file)
index 0000000..6c5a871
--- /dev/null
@@ -0,0 +1,106 @@
+/* timer-regs.h: hardware timer register definitions
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_TIMER_REGS_H
+#define _ASM_TIMER_REGS_H
+
+#include <asm/sections.h>
+
+extern unsigned long __nongprelbss __clkin_clock_speed_HZ;
+extern unsigned long __nongprelbss __ext_bus_clock_speed_HZ;
+extern unsigned long __nongprelbss __res_bus_clock_speed_HZ;
+extern unsigned long __nongprelbss __sdram_clock_speed_HZ;
+extern unsigned long __nongprelbss __core_bus_clock_speed_HZ;
+extern unsigned long __nongprelbss __core_clock_speed_HZ;
+extern unsigned long __nongprelbss __dsu_clock_speed_HZ;
+extern unsigned long __nongprelbss __serial_clock_speed_HZ;
+
+#define __get_CLKC()   ({ *(volatile unsigned long *)(0xfeff9a00); })
+
+static inline void __set_CLKC(unsigned long v)
+{
+       int tmp;
+
+       asm volatile("  st%I0.p %2,%M0          \n"
+                    "  setlos  %3,%1           \n"
+                    "  membar                  \n"
+                    "0:                        \n"
+                    "  subicc  %1,#1,%1,icc0   \n"
+                    "  bnc     icc0,#1,0b      \n"
+                    : "=m"(*(volatile unsigned long *) 0xfeff9a00), "=r"(tmp)
+                    : "r"(v), "i"(256)
+                    : "icc0");
+}
+
+#define __get_TCTR()   ({ *(volatile unsigned long *)(0xfeff9418); })
+#define __get_TPRV()   ({ *(volatile unsigned long *)(0xfeff9420); })
+#define __get_TPRCKSL()        ({ *(volatile unsigned long *)(0xfeff9428); })
+#define __get_TCSR(T)  ({ *(volatile unsigned long *)(0xfeff9400 + 8 * (T)); })
+#define __get_TxCKSL(T)        ({ *(volatile unsigned long *)(0xfeff9430 + 8 * (T)); })
+
+#define __get_TCSR_DATA(T) ({ __get_TCSR(T) >> 24; })
+
+#define __set_TCTR(V)  do { *(volatile unsigned long *)(0xfeff9418) = (V); mb(); } while(0)
+#define __set_TPRV(V)  do { *(volatile unsigned long *)(0xfeff9420) = (V) << 24; mb(); } while(0)
+#define __set_TPRCKSL(V) do { *(volatile unsigned long *)(0xfeff9428) = (V); mb(); } while(0)
+#define __set_TCSR(T,V)        \
+do { *(volatile unsigned long *)(0xfeff9400 + 8 * (T)) = (V); mb(); } while(0)
+
+#define __set_TxCKSL(T,V) \
+do { *(volatile unsigned long *)(0xfeff9430 + 8 * (T)) = (V); mb(); } while(0)
+
+#define __set_TCSR_DATA(T,V) __set_TCSR(T, (V) << 24)
+#define __set_TxCKSL_DATA(T,V) __set_TxCKSL(T, TxCKSL_EIGHT | __TxCKSL_SELECT((V)))
+
+/* clock control register */
+#define CLKC_CMODE             0x0f000000
+#define CLKC_SLPL              0x000f0000
+#define CLKC_P0                        0x00000100
+#define CLKC_CM                        0x00000003
+
+#define CLKC_CMODE_s           24
+
+/* timer control register - non-readback mode */
+#define TCTR_MODE_0            0x00000000
+#define TCTR_MODE_2            0x04000000
+#define TCTR_MODE_4            0x08000000
+#define TCTR_MODE_5            0x0a000000
+#define TCTR_RL_LATCH          0x00000000
+#define TCTR_RL_RW_LOW8                0x10000000
+#define TCTR_RL_RW_HIGH8       0x20000000
+#define TCTR_RL_RW_LH8         0x30000000
+#define TCTR_SC_CTR0           0x00000000
+#define TCTR_SC_CTR1           0x40000000
+#define TCTR_SC_CTR2           0x80000000
+
+/* timer control register - readback mode */
+#define TCTR_CNT0              0x02000000
+#define TCTR_CNT1              0x04000000
+#define TCTR_CNT2              0x08000000
+#define TCTR_NSTATUS           0x10000000
+#define TCTR_NCOUNT            0x20000000
+#define TCTR_SC_READBACK       0xc0000000
+
+/* timer control status registers - non-readback mode */
+#define TCSRx_DATA             0xff000000
+
+/* timer control status registers - readback mode */
+#define TCSRx_OUTPUT           0x80000000
+#define TCSRx_NULLCOUNT                0x40000000
+#define TCSRx_RL               0x30000000
+#define TCSRx_MODE             0x07000000
+
+/* timer clock select registers */
+#define TxCKSL_SELECT          0x0f000000
+#define __TxCKSL_SELECT(X)     ((X) << 24)
+#define TxCKSL_EIGHT           0xf0000000
+
+#endif /* _ASM_TIMER_REGS_H */
diff --git a/arch/frv/include/asm/timex.h b/arch/frv/include/asm/timex.h
new file mode 100644 (file)
index 0000000..a89bdde
--- /dev/null
@@ -0,0 +1,20 @@
+/* timex.h: FR-V architecture timex specifications
+ */
+#ifndef _ASM_TIMEX_H
+#define _ASM_TIMEX_H
+
+#define CLOCK_TICK_RATE                1193180 /* Underlying HZ */
+#define CLOCK_TICK_FACTOR      20      /* Factor of both 1000000 and CLOCK_TICK_RATE */
+
+typedef unsigned long cycles_t;
+
+static inline cycles_t get_cycles(void)
+{
+       return 0;
+}
+
+#define vxtime_lock()          do {} while (0)
+#define vxtime_unlock()                do {} while (0)
+
+#endif
+
diff --git a/arch/frv/include/asm/tlb.h b/arch/frv/include/asm/tlb.h
new file mode 100644 (file)
index 0000000..cd458eb
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _ASM_TLB_H
+#define _ASM_TLB_H
+
+#include <asm/tlbflush.h>
+
+#ifdef CONFIG_MMU
+extern void check_pgt_cache(void);
+#else
+#define check_pgt_cache() do {} while(0)
+#endif
+
+/*
+ * we don't need any special per-pte or per-vma handling...
+ */
+#define tlb_start_vma(tlb, vma)                                do { } while (0)
+#define tlb_end_vma(tlb, vma)                          do { } while (0)
+#define __tlb_remove_tlb_entry(tlb, ptep, address)     do { } while (0)
+
+/*
+ * .. because we flush the whole mm when it fills up
+ */
+#define tlb_flush(tlb)         flush_tlb_mm((tlb)->mm)
+
+#include <asm-generic/tlb.h>
+
+#endif /* _ASM_TLB_H */
+
diff --git a/arch/frv/include/asm/tlbflush.h b/arch/frv/include/asm/tlbflush.h
new file mode 100644 (file)
index 0000000..7ac5eaf
--- /dev/null
@@ -0,0 +1,73 @@
+/* tlbflush.h: TLB flushing functions
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_TLBFLUSH_H
+#define _ASM_TLBFLUSH_H
+
+#include <linux/mm.h>
+#include <asm/processor.h>
+
+#ifdef CONFIG_MMU
+
+#ifndef __ASSEMBLY__
+extern void asmlinkage __flush_tlb_all(void);
+extern void asmlinkage __flush_tlb_mm(unsigned long contextid);
+extern void asmlinkage __flush_tlb_page(unsigned long contextid, unsigned long start);
+extern void asmlinkage __flush_tlb_range(unsigned long contextid,
+                                        unsigned long start, unsigned long end);
+#endif /* !__ASSEMBLY__ */
+
+#define flush_tlb_all()                                \
+do {                                           \
+       preempt_disable();                      \
+       __flush_tlb_all();                      \
+       preempt_enable();                       \
+} while(0)
+
+#define flush_tlb_mm(mm)                       \
+do {                                           \
+       preempt_disable();                      \
+       __flush_tlb_mm((mm)->context.id);       \
+       preempt_enable();                       \
+} while(0)
+
+#define flush_tlb_range(vma,start,end)                                 \
+do {                                                                   \
+       preempt_disable();                                              \
+       __flush_tlb_range((vma)->vm_mm->context.id, start, end);        \
+       preempt_enable();                                               \
+} while(0)
+
+#define flush_tlb_page(vma,addr)                               \
+do {                                                           \
+       preempt_disable();                                      \
+       __flush_tlb_page((vma)->vm_mm->context.id, addr);       \
+       preempt_enable();                                       \
+} while(0)
+
+
+#define __flush_tlb_global()                   flush_tlb_all()
+#define flush_tlb()                            flush_tlb_all()
+#define flush_tlb_kernel_range(start, end)     flush_tlb_all()
+
+#else
+
+#define flush_tlb()                            BUG()
+#define flush_tlb_all()                                BUG()
+#define flush_tlb_mm(mm)                       BUG()
+#define flush_tlb_page(vma,addr)               BUG()
+#define flush_tlb_range(mm,start,end)          BUG()
+#define flush_tlb_kernel_range(start, end)     BUG()
+
+#endif
+
+
+#endif /* _ASM_TLBFLUSH_H */
diff --git a/arch/frv/include/asm/topology.h b/arch/frv/include/asm/topology.h
new file mode 100644 (file)
index 0000000..9427243
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_TOPOLOGY_H
+#define _ASM_TOPOLOGY_H
+
+#ifdef CONFIG_NUMA
+
+#error NUMA not supported yet
+
+#endif /* CONFIG_NUMA */
+
+#include <asm-generic/topology.h>
+
+#endif /* _ASM_TOPOLOGY_H */
diff --git a/arch/frv/include/asm/types.h b/arch/frv/include/asm/types.h
new file mode 100644 (file)
index 0000000..613bf1e
--- /dev/null
@@ -0,0 +1,40 @@
+/* types.h: FRV types
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_TYPES_H
+#define _ASM_TYPES_H
+
+#include <asm-generic/int-ll64.h>
+
+#ifndef __ASSEMBLY__
+
+typedef unsigned short umode_t;
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * These aren't exported outside the kernel to avoid name space clashes
+ */
+#ifdef __KERNEL__
+
+#define BITS_PER_LONG 32
+
+#ifndef __ASSEMBLY__
+
+/* Dma addresses are 32-bits wide.  */
+
+typedef u32 dma_addr_t;
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_TYPES_H */
diff --git a/arch/frv/include/asm/uaccess.h b/arch/frv/include/asm/uaccess.h
new file mode 100644 (file)
index 0000000..53650c9
--- /dev/null
@@ -0,0 +1,321 @@
+/* uaccess.h: userspace accessor functions
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UACCESS_H
+#define _ASM_UACCESS_H
+
+/*
+ * User space memory access functions
+ */
+#include <linux/sched.h>
+#include <linux/mm.h>
+#include <asm/segment.h>
+#include <asm/sections.h>
+
+#define HAVE_ARCH_UNMAPPED_AREA        /* we decide where to put mmaps */
+
+#define __ptr(x) ((unsigned long __force *)(x))
+
+#define VERIFY_READ    0
+#define VERIFY_WRITE   1
+
+#define __addr_ok(addr) ((unsigned long)(addr) < get_addr_limit())
+
+/*
+ * check that a range of addresses falls within the current address limit
+ */
+static inline int ___range_ok(unsigned long addr, unsigned long size)
+{
+#ifdef CONFIG_MMU
+       int flag = -EFAULT, tmp;
+
+       asm volatile (
+               "       addcc   %3,%2,%1,icc0   \n"     /* set C-flag if addr+size>4GB */
+               "       subcc.p %1,%4,gr0,icc1  \n"     /* jump if addr+size>limit */
+               "       bc      icc0,#0,0f      \n"
+               "       bhi     icc1,#0,0f      \n"
+               "       setlos  #0,%0           \n"     /* mark okay */
+               "0:                             \n"
+               : "=r"(flag), "=&r"(tmp)
+               : "r"(addr), "r"(size), "r"(get_addr_limit()), "0"(flag)
+               );
+
+       return flag;
+
+#else
+
+       if (addr < memory_start ||
+           addr > memory_end ||
+           size > memory_end - memory_start ||
+           addr + size > memory_end)
+               return -EFAULT;
+
+       return 0;
+#endif
+}
+
+#define __range_ok(addr,size) ___range_ok((unsigned long) (addr), (unsigned long) (size))
+
+#define access_ok(type,addr,size) (__range_ok((void __user *)(addr), (size)) == 0)
+#define __access_ok(addr,size) (__range_ok((addr), (size)) == 0)
+
+/*
+ * The exception table consists of pairs of addresses: the first is the
+ * address of an instruction that is allowed to fault, and the second is
+ * the address at which the program should continue.  No registers are
+ * modified, so it is entirely up to the continuation code to figure out
+ * what to do.
+ *
+ * All the routines below use bits of fixup code that are out of line
+ * with the main instruction path.  This means when everything is well,
+ * we don't even have to jump over them.  Further, they do not intrude
+ * on our cache or tlb entries.
+ */
+struct exception_table_entry
+{
+       unsigned long insn, fixup;
+};
+
+/* Returns 0 if exception not found and fixup otherwise.  */
+extern unsigned long search_exception_table(unsigned long);
+
+
+/*
+ * These are the main single-value transfer routines.  They automatically
+ * use the right size if we just have the right pointer type.
+ */
+#define __put_user(x, ptr)                                             \
+({                                                                     \
+       int __pu_err = 0;                                               \
+                                                                       \
+       typeof(*(ptr)) __pu_val = (x);                                  \
+       __chk_user_ptr(ptr);                                            \
+                                                                       \
+       switch (sizeof (*(ptr))) {                                      \
+       case 1:                                                         \
+               __put_user_asm(__pu_err, __pu_val, ptr, "b", "r");      \
+               break;                                                  \
+       case 2:                                                         \
+               __put_user_asm(__pu_err, __pu_val, ptr, "h", "r");      \
+               break;                                                  \
+       case 4:                                                         \
+               __put_user_asm(__pu_err, __pu_val, ptr, "",  "r");      \
+               break;                                                  \
+       case 8:                                                         \
+               __put_user_asm(__pu_err, __pu_val, ptr, "d", "e");      \
+               break;                                                  \
+       default:                                                        \
+               __pu_err = __put_user_bad();                            \
+               break;                                                  \
+       }                                                               \
+       __pu_err;                                                       \
+})
+
+#define put_user(x, ptr)                       \
+({                                             \
+       typeof(*(ptr)) __user *_p = (ptr);      \
+       int _e;                                 \
+                                               \
+       _e = __range_ok(_p, sizeof(*_p));       \
+       if (_e == 0)                            \
+               _e = __put_user((x), _p);       \
+       _e;                                     \
+})
+
+extern int __put_user_bad(void);
+
+/*
+ * Tell gcc we read from memory instead of writing: this is because
+ * we do not write to any memory gcc knows about, so there are no
+ * aliasing issues.
+ */
+
+#ifdef CONFIG_MMU
+
+#define __put_user_asm(err,x,ptr,dsize,constraint)                                     \
+do {                                                                                   \
+       asm volatile("1:        st"dsize"%I1    %2,%M1  \n"                             \
+                    "2:                                \n"                             \
+                    ".subsection 2                     \n"                             \
+                    "3:        setlos          %3,%0   \n"                             \
+                    "          bra             2b      \n"                             \
+                    ".previous                         \n"                             \
+                    ".section __ex_table,\"a\"         \n"                             \
+                    "          .balign         8       \n"                             \
+                    "          .long           1b,3b   \n"                             \
+                    ".previous"                                                        \
+                    : "=r" (err)                                                       \
+                    : "m" (*__ptr(ptr)), constraint (x), "i"(-EFAULT), "0"(err)        \
+                    : "memory");                                                       \
+} while (0)
+
+#else
+
+#define __put_user_asm(err,x,ptr,bwl,con)      \
+do {                                           \
+       asm("   st"bwl"%I0      %1,%M0  \n"     \
+           "   membar                  \n"     \
+           :                                   \
+           : "m" (*__ptr(ptr)), con (x)        \
+           : "memory");                        \
+} while (0)
+
+#endif
+
+/*****************************************************************************/
+/*
+ *
+ */
+#define __get_user(x, ptr)                                             \
+({                                                                     \
+       int __gu_err = 0;                                               \
+       __chk_user_ptr(ptr);                                            \
+                                                                       \
+       switch (sizeof(*(ptr))) {                                       \
+       case 1: {                                                       \
+               unsigned char __gu_val;                                 \
+               __get_user_asm(__gu_err, __gu_val, ptr, "ub", "=r");    \
+               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
+               break;                                                  \
+       }                                                               \
+       case 2: {                                                       \
+               unsigned short __gu_val;                                \
+               __get_user_asm(__gu_err, __gu_val, ptr, "uh", "=r");    \
+               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
+               break;                                                  \
+       }                                                               \
+       case 4: {                                                       \
+               unsigned int __gu_val;                                  \
+               __get_user_asm(__gu_err, __gu_val, ptr, "", "=r");      \
+               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
+               break;                                                  \
+       }                                                               \
+       case 8: {                                                       \
+               unsigned long long __gu_val;                            \
+               __get_user_asm(__gu_err, __gu_val, ptr, "d", "=e");     \
+               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
+               break;                                                  \
+       }                                                               \
+       default:                                                        \
+               __gu_err = __get_user_bad();                            \
+               break;                                                  \
+       }                                                               \
+       __gu_err;                                                       \
+})
+
+#define get_user(x, ptr)                       \
+({                                             \
+       const typeof(*(ptr)) __user *_p = (ptr);\
+       int _e;                                 \
+                                               \
+       _e = __range_ok(_p, sizeof(*_p));       \
+       if (likely(_e == 0))                    \
+               _e = __get_user((x), _p);       \
+       else                                    \
+               (x) = (typeof(x)) 0;            \
+       _e;                                     \
+})
+
+extern int __get_user_bad(void);
+
+#ifdef CONFIG_MMU
+
+#define __get_user_asm(err,x,ptr,dtype,constraint)     \
+do {                                                   \
+       asm("1:         ld"dtype"%I2    %M2,%1  \n"     \
+           "2:                                 \n"     \
+           ".subsection 2                      \n"     \
+           "3:         setlos          %3,%0   \n"     \
+           "           setlos          #0,%1   \n"     \
+           "           bra             2b      \n"     \
+           ".previous                          \n"     \
+           ".section __ex_table,\"a\"          \n"     \
+           "           .balign         8       \n"     \
+           "           .long           1b,3b   \n"     \
+           ".previous"                                 \
+           : "=r" (err), constraint (x)                \
+           : "m" (*__ptr(ptr)), "i"(-EFAULT), "0"(err) \
+           );                                          \
+} while(0)
+
+#else
+
+#define __get_user_asm(err,x,ptr,bwl,con)      \
+       asm("   ld"bwl"%I1      %M1,%0  \n"     \
+           "   membar                  \n"     \
+           : con(x)                            \
+           : "m" (*__ptr(ptr)))
+
+#endif
+
+/*****************************************************************************/
+/*
+ *
+ */
+#define ____force(x) (__force void *)(void __user *)(x)
+#ifdef CONFIG_MMU
+extern long __memset_user(void *dst, unsigned long count);
+extern long __memcpy_user(void *dst, const void *src, unsigned long count);
+
+#define clear_user(dst,count)                  __memset_user(____force(dst), (count))
+#define __copy_from_user_inatomic(to, from, n) __memcpy_user((to), ____force(from), (n))
+#define __copy_to_user_inatomic(to, from, n)   __memcpy_user(____force(to), (from), (n))
+
+#else
+
+#define clear_user(dst,count)                  (memset(____force(dst), 0, (count)), 0)
+#define __copy_from_user_inatomic(to, from, n) (memcpy((to), ____force(from), (n)), 0)
+#define __copy_to_user_inatomic(to, from, n)   (memcpy(____force(to), (from), (n)), 0)
+
+#endif
+
+#define __clear_user clear_user
+
+static inline unsigned long __must_check
+__copy_to_user(void __user *to, const void *from, unsigned long n)
+{
+       might_sleep();
+       return __copy_to_user_inatomic(to, from, n);
+}
+
+static inline unsigned long
+__copy_from_user(void *to, const void __user *from, unsigned long n)
+{
+       might_sleep();
+       return __copy_from_user_inatomic(to, from, n);
+}
+
+static inline long copy_from_user(void *to, const void __user *from, unsigned long n)
+{
+       unsigned long ret = n;
+
+       if (likely(__access_ok(from, n)))
+               ret = __copy_from_user(to, from, n);
+
+       if (unlikely(ret != 0))
+               memset(to + (n - ret), 0, ret);
+
+       return ret;
+}
+
+static inline long copy_to_user(void __user *to, const void *from, unsigned long n)
+{
+       return likely(__access_ok(to, n)) ? __copy_to_user(to, from, n) : n;
+}
+
+extern long strncpy_from_user(char *dst, const char __user *src, long count);
+extern long strnlen_user(const char __user *src, long count);
+
+#define strlen_user(str) strnlen_user(str, 32767)
+
+extern unsigned long search_exception_table(unsigned long addr);
+
+#endif /* _ASM_UACCESS_H */
diff --git a/arch/frv/include/asm/ucontext.h b/arch/frv/include/asm/ucontext.h
new file mode 100644 (file)
index 0000000..8d8c0c9
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_UCONTEXT_H
+#define _ASM_UCONTEXT_H
+
+struct ucontext {
+       unsigned long           uc_flags;
+       struct ucontext         *uc_link;
+       stack_t                 uc_stack;
+       struct sigcontext       uc_mcontext;
+       sigset_t                uc_sigmask;     /* mask last for extensibility */
+};
+
+#endif
diff --git a/arch/frv/include/asm/unaligned.h b/arch/frv/include/asm/unaligned.h
new file mode 100644 (file)
index 0000000..6c61c05
--- /dev/null
@@ -0,0 +1,22 @@
+/* unaligned.h: unaligned access handler
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UNALIGNED_H
+#define _ASM_UNALIGNED_H
+
+#include <linux/unaligned/le_byteshift.h>
+#include <linux/unaligned/be_struct.h>
+#include <linux/unaligned/generic.h>
+
+#define get_unaligned  __get_unaligned_be
+#define put_unaligned  __put_unaligned_be
+
+#endif /* _ASM_UNALIGNED_H */
diff --git a/arch/frv/include/asm/unistd.h b/arch/frv/include/asm/unistd.h
new file mode 100644 (file)
index 0000000..edcfaf5
--- /dev/null
@@ -0,0 +1,382 @@
+#ifndef _ASM_UNISTD_H_
+#define _ASM_UNISTD_H_
+
+/*
+ * This file contains the system call numbers.
+ */
+
+#define __NR_restart_syscall      0
+#define __NR_exit                1
+#define __NR_fork                2
+#define __NR_read                3
+#define __NR_write               4
+#define __NR_open                5
+#define __NR_close               6
+#define __NR_waitpid             7
+#define __NR_creat               8
+#define __NR_link                9
+#define __NR_unlink             10
+#define __NR_execve             11
+#define __NR_chdir              12
+#define __NR_time               13
+#define __NR_mknod              14
+#define __NR_chmod              15
+#define __NR_lchown             16
+#define __NR_break              17
+#define __NR_oldstat            18
+#define __NR_lseek              19
+#define __NR_getpid             20
+#define __NR_mount              21
+#define __NR_umount             22
+#define __NR_setuid             23
+#define __NR_getuid             24
+#define __NR_stime              25
+#define __NR_ptrace             26
+#define __NR_alarm              27
+#define __NR_oldfstat           28
+#define __NR_pause              29
+#define __NR_utime              30
+#define __NR_stty               31
+#define __NR_gtty               32
+#define __NR_access             33
+#define __NR_nice               34
+#define __NR_ftime              35
+#define __NR_sync               36
+#define __NR_kill               37
+#define __NR_rename             38
+#define __NR_mkdir              39
+#define __NR_rmdir              40
+#define __NR_dup                41
+#define __NR_pipe               42
+#define __NR_times              43
+#define __NR_prof               44
+#define __NR_brk                45
+#define __NR_setgid             46
+#define __NR_getgid             47
+#define __NR_signal             48
+#define __NR_geteuid            49
+#define __NR_getegid            50
+#define __NR_acct               51
+#define __NR_umount2            52
+#define __NR_lock               53
+#define __NR_ioctl              54
+#define __NR_fcntl              55
+#define __NR_mpx                56
+#define __NR_setpgid            57
+#define __NR_ulimit             58
+// #define __NR_oldolduname     /* 59 */ obsolete
+#define __NR_umask              60
+#define __NR_chroot             61
+#define __NR_ustat              62
+#define __NR_dup2               63
+#define __NR_getppid            64
+#define __NR_getpgrp            65
+#define __NR_setsid             66
+#define __NR_sigaction          67
+#define __NR_sgetmask           68
+#define __NR_ssetmask           69
+#define __NR_setreuid           70
+#define __NR_setregid           71
+#define __NR_sigsuspend                 72
+#define __NR_sigpending                 73
+#define __NR_sethostname        74
+#define __NR_setrlimit          75
+#define __NR_getrlimit          76     /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage          77
+#define __NR_gettimeofday       78
+#define __NR_settimeofday       79
+#define __NR_getgroups          80
+#define __NR_setgroups          81
+#define __NR_select             82
+#define __NR_symlink            83
+#define __NR_oldlstat           84
+#define __NR_readlink           85
+#define __NR_uselib             86
+#define __NR_swapon             87
+#define __NR_reboot             88
+#define __NR_readdir            89
+// #define __NR_mmap            90     /* obsolete - not implemented */
+#define __NR_munmap             91
+#define __NR_truncate           92
+#define __NR_ftruncate          93
+#define __NR_fchmod             94
+#define __NR_fchown             95
+#define __NR_getpriority        96
+#define __NR_setpriority        97
+// #define __NR_profil          /* 98 */ obsolete
+#define __NR_statfs             99
+#define __NR_fstatfs           100
+// #define __NR_ioperm         /* 101 */ not supported
+#define __NR_socketcall                102
+#define __NR_syslog            103
+#define __NR_setitimer         104
+#define __NR_getitimer         105
+#define __NR_stat              106
+#define __NR_lstat             107
+#define __NR_fstat             108
+// #define __NR_olduname               /* 109 */ obsolete
+// #define __NR_iopl           /* 110 */ not supported
+#define __NR_vhangup           111
+// #define __NR_idle           /* 112 */ Obsolete
+// #define __NR_vm86old                /* 113 */ not supported
+#define __NR_wait4             114
+#define __NR_swapoff           115
+#define __NR_sysinfo           116
+#define __NR_ipc               117
+#define __NR_fsync             118
+#define __NR_sigreturn         119
+#define __NR_clone             120
+#define __NR_setdomainname     121
+#define __NR_uname             122
+// #define __NR_modify_ldt     /* 123 */ not supported
+#define __NR_cacheflush                123
+#define __NR_adjtimex          124
+#define __NR_mprotect          125
+#define __NR_sigprocmask       126
+#define __NR_create_module     127
+#define __NR_init_module       128
+#define __NR_delete_module     129
+#define __NR_get_kernel_syms   130
+#define __NR_quotactl          131
+#define __NR_getpgid           132
+#define __NR_fchdir            133
+#define __NR_bdflush           134
+#define __NR_sysfs             135
+#define __NR_personality       136
+#define __NR_afs_syscall       137 /* Syscall for Andrew File System */
+#define __NR_setfsuid          138
+#define __NR_setfsgid          139
+#define __NR__llseek           140
+#define __NR_getdents          141
+#define __NR__newselect                142
+#define __NR_flock             143
+#define __NR_msync             144
+#define __NR_readv             145
+#define __NR_writev            146
+#define __NR_getsid            147
+#define __NR_fdatasync         148
+#define __NR__sysctl           149
+#define __NR_mlock             150
+#define __NR_munlock           151
+#define __NR_mlockall          152
+#define __NR_munlockall                153
+#define __NR_sched_setparam            154
+#define __NR_sched_getparam            155
+#define __NR_sched_setscheduler                156
+#define __NR_sched_getscheduler                157
+#define __NR_sched_yield               158
+#define __NR_sched_get_priority_max    159
+#define __NR_sched_get_priority_min    160
+#define __NR_sched_rr_get_interval     161
+#define __NR_nanosleep         162
+#define __NR_mremap            163
+#define __NR_setresuid         164
+#define __NR_getresuid         165
+// #define __NR_vm86           /* 166 */ not supported
+#define __NR_query_module      167
+#define __NR_poll              168
+#define __NR_nfsservctl                169
+#define __NR_setresgid         170
+#define __NR_getresgid         171
+#define __NR_prctl             172
+#define __NR_rt_sigreturn      173
+#define __NR_rt_sigaction      174
+#define __NR_rt_sigprocmask    175
+#define __NR_rt_sigpending     176
+#define __NR_rt_sigtimedwait   177
+#define __NR_rt_sigqueueinfo   178
+#define __NR_rt_sigsuspend     179
+#define __NR_pread64           180
+#define __NR_pwrite64          181
+#define __NR_chown             182
+#define __NR_getcwd            183
+#define __NR_capget            184
+#define __NR_capset            185
+#define __NR_sigaltstack       186
+#define __NR_sendfile          187
+#define __NR_getpmsg           188     /* some people actually want streams */
+#define __NR_putpmsg           189     /* some people actually want streams */
+#define __NR_vfork             190
+#define __NR_ugetrlimit                191     /* SuS compliant getrlimit */
+#define __NR_mmap2             192
+#define __NR_truncate64                193
+#define __NR_ftruncate64       194
+#define __NR_stat64            195
+#define __NR_lstat64           196
+#define __NR_fstat64           197
+#define __NR_lchown32          198
+#define __NR_getuid32          199
+#define __NR_getgid32          200
+#define __NR_geteuid32         201
+#define __NR_getegid32         202
+#define __NR_setreuid32                203
+#define __NR_setregid32                204
+#define __NR_getgroups32       205
+#define __NR_setgroups32       206
+#define __NR_fchown32          207
+#define __NR_setresuid32       208
+#define __NR_getresuid32       209
+#define __NR_setresgid32       210
+#define __NR_getresgid32       211
+#define __NR_chown32           212
+#define __NR_setuid32          213
+#define __NR_setgid32          214
+#define __NR_setfsuid32                215
+#define __NR_setfsgid32                216
+#define __NR_pivot_root                217
+#define __NR_mincore           218
+#define __NR_madvise           219
+
+#define __NR_getdents64                220
+#define __NR_fcntl64           221
+#define __NR_security          223     /* syscall for security modules */
+#define __NR_gettid            224
+#define __NR_readahead         225
+#define __NR_setxattr          226
+#define __NR_lsetxattr         227
+#define __NR_fsetxattr         228
+#define __NR_getxattr          229
+#define __NR_lgetxattr         230
+#define __NR_fgetxattr         231
+#define __NR_listxattr         232
+#define __NR_llistxattr                233
+#define __NR_flistxattr                234
+#define __NR_removexattr       235
+#define __NR_lremovexattr      236
+#define __NR_fremovexattr      237
+#define __NR_tkill             238
+#define __NR_sendfile64                239
+#define __NR_futex             240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area   243
+#define __NR_get_thread_area   244
+#define __NR_io_setup          245
+#define __NR_io_destroy                246
+#define __NR_io_getevents      247
+#define __NR_io_submit         248
+#define __NR_io_cancel         249
+#define __NR_fadvise64         250
+
+#define __NR_exit_group                252
+#define __NR_lookup_dcookie    253
+#define __NR_epoll_create      254
+#define __NR_epoll_ctl         255
+#define __NR_epoll_wait                256
+#define __NR_remap_file_pages  257
+#define __NR_set_tid_address   258
+#define __NR_timer_create      259
+#define __NR_timer_settime     (__NR_timer_create+1)
+#define __NR_timer_gettime     (__NR_timer_create+2)
+#define __NR_timer_getoverrun  (__NR_timer_create+3)
+#define __NR_timer_delete      (__NR_timer_create+4)
+#define __NR_clock_settime     (__NR_timer_create+5)
+#define __NR_clock_gettime     (__NR_timer_create+6)
+#define __NR_clock_getres      (__NR_timer_create+7)
+#define __NR_clock_nanosleep   (__NR_timer_create+8)
+#define __NR_statfs64          268
+#define __NR_fstatfs64         269
+#define __NR_tgkill            270
+#define __NR_utimes            271
+#define __NR_fadvise64_64      272
+#define __NR_vserver           273
+#define __NR_mbind             274
+#define __NR_get_mempolicy     275
+#define __NR_set_mempolicy     276
+#define __NR_mq_open           277
+#define __NR_mq_unlink         (__NR_mq_open+1)
+#define __NR_mq_timedsend      (__NR_mq_open+2)
+#define __NR_mq_timedreceive   (__NR_mq_open+3)
+#define __NR_mq_notify         (__NR_mq_open+4)
+#define __NR_mq_getsetattr     (__NR_mq_open+5)
+#define __NR_kexec_load                283
+#define __NR_waitid            284
+/* #define __NR_sys_setaltroot 285 */
+#define __NR_add_key           286
+#define __NR_request_key       287
+#define __NR_keyctl            288
+#define __NR_ioprio_set                289
+#define __NR_ioprio_get                290
+#define __NR_inotify_init      291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch  293
+#define __NR_migrate_pages     294
+#define __NR_openat            295
+#define __NR_mkdirat           296
+#define __NR_mknodat           297
+#define __NR_fchownat          298
+#define __NR_futimesat         299
+#define __NR_fstatat64         300
+#define __NR_unlinkat          301
+#define __NR_renameat          302
+#define __NR_linkat            303
+#define __NR_symlinkat         304
+#define __NR_readlinkat                305
+#define __NR_fchmodat          306
+#define __NR_faccessat         307
+#define __NR_pselect6          308
+#define __NR_ppoll             309
+#define __NR_unshare           310
+#define __NR_set_robust_list   311
+#define __NR_get_robust_list   312
+#define __NR_splice            313
+#define __NR_sync_file_range   314
+#define __NR_tee               315
+#define __NR_vmsplice          316
+#define __NR_move_pages                317
+#define __NR_getcpu            318
+#define __NR_epoll_pwait       319
+#define __NR_utimensat         320
+#define __NR_signalfd          321
+#define __NR_timerfd_create    322
+#define __NR_eventfd           323
+#define __NR_fallocate         324
+#define __NR_timerfd_settime   325
+#define __NR_timerfd_gettime   326
+#define __NR_signalfd4         327
+#define __NR_eventfd2          328
+#define __NR_epoll_create1     329
+#define __NR_dup3              330
+#define __NR_pipe2             331
+#define __NR_inotify_init1     332
+
+#ifdef __KERNEL__
+
+#define NR_syscalls 333
+
+#define __ARCH_WANT_IPC_PARSE_VERSION
+/* #define __ARCH_WANT_OLD_READDIR */
+#define __ARCH_WANT_OLD_STAT
+#define __ARCH_WANT_STAT64
+#define __ARCH_WANT_SYS_ALARM
+/* #define __ARCH_WANT_SYS_GETHOSTNAME */
+#define __ARCH_WANT_SYS_PAUSE
+/* #define __ARCH_WANT_SYS_SGETMASK */
+/* #define __ARCH_WANT_SYS_SIGNAL */
+#define __ARCH_WANT_SYS_TIME
+#define __ARCH_WANT_SYS_UTIME
+#define __ARCH_WANT_SYS_WAITPID
+#define __ARCH_WANT_SYS_SOCKETCALL
+#define __ARCH_WANT_SYS_FADVISE64
+#define __ARCH_WANT_SYS_GETPGRP
+#define __ARCH_WANT_SYS_LLSEEK
+#define __ARCH_WANT_SYS_NICE
+/* #define __ARCH_WANT_SYS_OLD_GETRLIMIT */
+#define __ARCH_WANT_SYS_OLDUMOUNT
+/* #define __ARCH_WANT_SYS_SIGPENDING */
+#define __ARCH_WANT_SYS_SIGPROCMASK
+#define __ARCH_WANT_SYS_RT_SIGACTION
+#define __ARCH_WANT_SYS_RT_SIGSUSPEND
+
+/*
+ * "Conditional" syscalls
+ *
+ * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
+ * but it doesn't work on all toolchains, so we just do it by hand
+ */
+#ifndef cond_syscall
+#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
+#endif
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_UNISTD_H_ */
diff --git a/arch/frv/include/asm/user.h b/arch/frv/include/asm/user.h
new file mode 100644 (file)
index 0000000..82fa8fa
--- /dev/null
@@ -0,0 +1,80 @@
+/* user.h: FR-V core file format stuff
+ *
+ * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_USER_H
+#define _ASM_USER_H
+
+#include <asm/page.h>
+#include <asm/registers.h>
+
+/* Core file format: The core file is written in such a way that gdb
+ * can understand it and provide useful information to the user (under
+ * linux we use the 'trad-core' bfd).  There are quite a number of
+ * obstacles to being able to view the contents of the floating point
+ * registers, and until these are solved you will not be able to view
+ * the contents of them.  Actually, you can read in the core file and
+ * look at the contents of the user struct to find out what the
+ * floating point registers contain.
+ *
+ * The actual file contents are as follows:
+ * UPAGE:
+ *   1 page consisting of a user struct that tells gdb what is present
+ *   in the file.  Directly after this is a copy of the task_struct,
+ *   which is currently not used by gdb, but it may come in useful at
+ *   some point.  All of the registers are stored as part of the
+ *   upage.  The upage should always be only one page.
+ *
+ * DATA:
+ *   The data area is stored.  We use current->end_text to
+ *   current->brk to pick up all of the user variables, plus any
+ *   memory that may have been malloced.  No attempt is made to
+ *   determine if a page is demand-zero or if a page is totally
+ *   unused, we just cover the entire range.  All of the addresses are
+ *   rounded in such a way that an integral number of pages is
+ *   written.
+ *
+ * STACK:
+ *   We need the stack information in order to get a meaningful
+ *   backtrace.  We need to write the data from (esp) to
+ *   current->start_stack, so we round each of these off in order to
+ *   be able to write an integer number of pages.  The minimum core
+ *   file size is 3 pages, or 12288 bytes.
+ */
+
+/* When the kernel dumps core, it starts by dumping the user struct -
+ * this will be used by gdb to figure out where the data and stack segments
+ *  are within the file, and what virtual addresses to use.
+ */
+struct user {
+       /* We start with the registers, to mimic the way that "memory" is returned
+        * from the ptrace(3,...) function.  */
+       struct user_context     regs;
+
+       /* The rest of this junk is to help gdb figure out what goes where */
+       unsigned long           u_tsize;        /* Text segment size (pages). */
+       unsigned long           u_dsize;        /* Data segment size (pages). */
+       unsigned long           u_ssize;        /* Stack segment size (pages). */
+       unsigned long           start_code;     /* Starting virtual address of text. */
+       unsigned long           start_stack;    /* Starting virtual address of stack area.
+                                                * This is actually the bottom of the stack,
+                                                * the top of the stack is always found in the
+                                                * esp register.  */
+       long int                signal;         /* Signal that caused the core dump. */
+
+       unsigned long           magic;          /* To uniquely identify a core file */
+       char                    u_comm[32];     /* User command that was responsible */
+};
+
+#define NBPG                   PAGE_SIZE
+#define UPAGES                 1
+#define HOST_TEXT_START_ADDR   (u.start_code)
+#define HOST_STACK_END_ADDR    (u.start_stack + u.u_ssize * NBPG)
+
+#endif
diff --git a/arch/frv/include/asm/vga.h b/arch/frv/include/asm/vga.h
new file mode 100644 (file)
index 0000000..a702c80
--- /dev/null
@@ -0,0 +1,17 @@
+/* vga.h: VGA register stuff
+ *
+ * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _ASM_VGA_H
+#define _ASM_VGA_H
+
+
+
+#endif /* _ASM_VGA_H */
diff --git a/arch/frv/include/asm/virtconvert.h b/arch/frv/include/asm/virtconvert.h
new file mode 100644 (file)
index 0000000..59788fa
--- /dev/null
@@ -0,0 +1,41 @@
+/* virtconvert.h: virtual/physical/page address convertion
+ *
+ * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_VIRTCONVERT_H
+#define _ASM_VIRTCONVERT_H
+
+/*
+ * Macros used for converting between virtual and physical mappings.
+ */
+
+#ifdef __KERNEL__
+
+#include <asm/setup.h>
+
+#ifdef CONFIG_MMU
+
+#define phys_to_virt(vaddr)    ((void *) ((unsigned long)(vaddr) + PAGE_OFFSET))
+#define virt_to_phys(vaddr)    ((unsigned long) (vaddr) - PAGE_OFFSET)
+
+#else
+
+#define phys_to_virt(vaddr)    ((void *) (vaddr))
+#define virt_to_phys(vaddr)    ((unsigned long) (vaddr))
+
+#endif
+
+#define virt_to_bus virt_to_phys
+#define bus_to_virt phys_to_virt
+
+#define __page_address(page)   (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
+#define page_to_phys(page)     virt_to_phys((void *)__page_address(page))
+
+#endif
+#endif
diff --git a/arch/frv/include/asm/xor.h b/arch/frv/include/asm/xor.h
new file mode 100644 (file)
index 0000000..c82eb12
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/xor.h>
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
new file mode 100644 (file)
index 0000000..8cc312b
--- /dev/null
@@ -0,0 +1,141 @@
+# For a description of the syntax of this configuration file,
+# see Documentation/kbuild/kconfig-language.txt.
+
+mainmenu "Linux/Microblaze Kernel Configuration"
+
+config MICROBLAZE
+       def_bool y
+       select HAVE_LMB
+
+config SWAP
+       def_bool n
+
+config RWSEM_GENERIC_SPINLOCK
+       def_bool y
+
+config RWSEM_XCHGADD_ALGORITHM
+       bool
+
+config ARCH_HAS_ILOG2_U32
+       def_bool n
+
+config ARCH_HAS_ILOG2_U64
+       def_bool n
+
+config GENERIC_FIND_NEXT_BIT
+       def_bool y
+
+config GENERIC_HWEIGHT
+       def_bool y
+
+config GENERIC_HARDIRQS
+       def_bool y
+
+config GENERIC_IRQ_PROBE
+       def_bool y
+
+config GENERIC_CALIBRATE_DELAY
+       def_bool y
+
+config GENERIC_TIME
+       def_bool y
+
+config GENERIC_TIME_VSYSCALL
+       def_bool n
+
+config GENERIC_CLOCKEVENTS
+       def_bool y
+
+config GENERIC_HARDIRQS_NO__DO_IRQ
+       def_bool y
+
+config PCI
+       depends on !MMU
+       def_bool n
+
+config NO_DMA
+       depends on !MMU
+       def_bool n
+
+source "init/Kconfig"
+
+source "kernel/Kconfig.freezer"
+
+source "arch/microblaze/platform/Kconfig.platform"
+
+menu "Processor type and features"
+
+source kernel/time/Kconfig
+
+source "kernel/Kconfig.preempt"
+
+source "kernel/Kconfig.hz"
+
+config MMU
+       def_bool n
+
+config NO_MMU
+       bool
+       depends on !MMU
+       default y
+
+comment "Boot options"
+
+config CMDLINE_BOOL
+       bool "Default bootloader kernel arguments"
+
+config CMDLINE
+       string "Default kernel command string"
+       depends on CMDLINE_BOOL
+       default "console=ttyUL0,115200"
+       help
+         On some architectures there is currently no way for the boot loader
+         to pass arguments to the kernel. For these architectures, you should
+         supply some command-line options at build time by entering them
+         here.
+
+config CMDLINE_FORCE
+       bool "Force default kernel command string"
+       depends on CMDLINE_BOOL
+       default n
+       help
+         Set this to have arguments from the default kernel command string
+         override those passed by the boot loader.
+
+config OF
+       def_bool y
+
+config OF_DEVICE
+       def_bool y
+
+config PROC_DEVICETREE
+       bool "Support for device tree in /proc"
+       depends on PROC_FS
+       help
+         This option adds a device-tree directory under /proc which contains
+         an image of the device tree that the kernel copies from Open
+         Firmware or other boot firmware. If unsure, say Y here.
+
+endmenu
+
+source "mm/Kconfig"
+
+menu "Exectuable file formats"
+
+source "fs/Kconfig.binfmt"
+
+endmenu
+
+source "net/Kconfig"
+
+source "drivers/Kconfig"
+
+source "fs/Kconfig"
+
+source "arch/microblaze/Kconfig.debug"
+
+source "security/Kconfig"
+
+source "crypto/Kconfig"
+
+source "lib/Kconfig"
diff --git a/arch/microblaze/Kconfig.debug b/arch/microblaze/Kconfig.debug
new file mode 100644 (file)
index 0000000..242cd35
--- /dev/null
@@ -0,0 +1,26 @@
+# For a description of the syntax of this configuration file,
+# see Documentation/kbuild/kconfig-language.txt.
+
+menu "Kernel hacking"
+
+source "lib/Kconfig.debug"
+
+config EARLY_PRINTK
+       bool "Early printk function for kernel"
+       default n
+       help
+         This option turns on/off early printk messages to console.
+         First Uartlite node is taken.
+
+config HEART_BEAT
+       bool "Heart beat function for kernel"
+       default n
+       help
+         This option turns on/off heart beat kernel functionality.
+         First GPIO node is taken.
+
+config DEBUG_BOOTMEM
+       depends on DEBUG_KERNEL
+       bool "Debug BOOTMEM initialization"
+
+endmenu
diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
new file mode 100644 (file)
index 0000000..0dcbb98
--- /dev/null
@@ -0,0 +1,69 @@
+UTS_SYSNAME = -DUTS_SYSNAME=\"uClinux\"
+
+# What CPU vesion are we building for, and crack it open
+# as major.minor.rev
+CPU_VER=$(subst ",,$(CONFIG_XILINX_MICROBLAZE0_HW_VER) )
+CPU_MAJOR=$(shell echo $(CPU_VER) | cut -d '.' -f 1)
+CPU_MINOR=$(shell echo $(CPU_VER) | cut -d '.' -f 2)
+CPU_REV=$(shell echo $(CPU_VER) | cut -d '.' -f 3)
+
+export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
+
+# Use cpu-related CONFIG_ vars to set compile options.
+
+# Work out HW multipler support.  This is icky.
+# 1. Spartan2 has no HW multiplers.
+# 2. MicroBlaze v3.x always uses them, except in Spartan 2
+# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
+ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
+  ifeq ($(CPU_MAJOR),3)
+    CPUFLAGS-1 += -mno-xl-soft-mul
+  else
+    # USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
+    CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += -mxl-multiply-high
+    CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
+  endif
+endif
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
+
+CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
+
+# The various CONFIG_XILINX cpu features options are integers 0/1/2...
+# rather than bools y/n
+CFLAGS += $(CPUFLAGS-1)
+CFLAGS += $(CPUFLAGS-2)
+
+# r31 holds current when in kernel mode
+CFLAGS += -ffixed-r31
+
+LDFLAGS_BLOB := --format binary --oformat elf32-microblaze
+
+LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
+
+head-y         := arch/microblaze/kernel/head.o
+libs-y         += arch/microblaze/lib/ $(LIBGCC)
+core-y         += arch/microblaze/kernel/ arch/microblaze/mm/ \
+                  arch/microblaze/platform/
+
+boot := arch/$(ARCH)/boot
+
+# defines filename extension depending memory management type
+ifeq ($(CONFIG_MMU),)
+MMUEXT         := -nommu
+endif
+export MMUEXT
+
+all: linux.bin
+
+archclean:
+       $(Q)$(MAKE) $(clean)=$(boot)
+
+linux.bin linux.bin.gz: vmlinux
+       $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+
+define archhelp
+  echo  '* linux.bin    - Create raw binary'
+  echo  '  linux.bin.gz - Create compressed raw binary'
+endef
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
new file mode 100644 (file)
index 0000000..844edf4
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# arch/microblaze/boot/Makefile
+#
+
+targets := linux.bin linux.bin.gz
+
+OBJCOPYFLAGS_linux.bin  := -O binary
+
+$(obj)/linux.bin: vmlinux FORCE
+       $(call if_changed,objcopy)
+       @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
+
+$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
+       $(call if_changed,gzip)
+       @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
+
+clean-kernel += linux.bin linux.bin.gz
diff --git a/arch/microblaze/configs/nommu_defconfig b/arch/microblaze/configs/nommu_defconfig
new file mode 100644 (file)
index 0000000..beb7ecd
--- /dev/null
@@ -0,0 +1,804 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.29
+# Tue Mar 24 10:23:20 2009
+#
+CONFIG_MICROBLAZE=y
+# CONFIG_SWAP is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_TIME=y
+# CONFIG_GENERIC_TIME_VSYSCALL is not set
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+# CONFIG_PCI is not set
+# CONFIG_NO_DMA is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=17
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+# CONFIG_HOTPLUG is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_COMPAT_BRK=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=1
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_FREEZER is not set
+
+#
+# Platform options
+#
+CONFIG_PLATFORM_GENERIC=y
+# CONFIG_SELFMOD is not set
+# CONFIG_OPT_LIB_FUNCTION is not set
+# CONFIG_ALLOW_EDIT_AUTO is not set
+CONFIG_KERNEL_BASE_ADDR=0x90000000
+CONFIG_XILINX_MICROBLAZE0_FAMILY="virtex5"
+CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
+CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1
+CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1
+CONFIG_XILINX_MICROBLAZE0_USE_DIV=1
+CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2
+CONFIG_XILINX_MICROBLAZE0_USE_FPU=2
+CONFIG_XILINX_MICROBLAZE0_HW_VER="7.10.d"
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+# CONFIG_NO_HZ is not set
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
+# CONFIG_MMU is not set
+CONFIG_NO_MMU=y
+
+#
+# Boot options
+#
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyUL0,115200"
+# CONFIG_CMDLINE_FORCE is not set
+CONFIG_OF=y
+CONFIG_OF_DEVICE=y
+CONFIG_PROC_DEVICETREE=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+
+#
+# Exectuable file formats
+#
+CONFIG_BINFMT_FLAT=y
+# CONFIG_BINFMT_ZFLAT is not set
+# CONFIG_BINFMT_SHARED_FLAT is not set
+# CONFIG_HAVE_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_COMPAT_NET_DEV_OPS=y
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_LIB80211 is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+CONFIG_MTD_RAM=y
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_UCLINUX=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MII is not set
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_IWLWIFI_LEDS is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_UARTLITE=y
+CONFIG_SERIAL_UARTLITE_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_I2C is not set
+# CONFIG_SPI is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_REGULATOR is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_VIDEO_MEDIA is not set
+
+#
+# Multimedia drivers
+#
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=y
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_SOUND is not set
+CONFIG_USB_SUPPORT=y
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+
+#
+# Enable Host or Gadget support to see Inventra options
+#
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_CRAMFS=y
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+CONFIG_ROMFS_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_REGISTER_V4 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_NLS is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+CONFIG_DEBUG_OBJECTS=y
+CONFIG_DEBUG_OBJECTS_SELFTEST=y
+CONFIG_DEBUG_OBJECTS_FREE=y
+CONFIG_DEBUG_OBJECTS_TIMERS=y
+CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_NOMMU_REGIONS is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+CONFIG_DEBUG_LIST=y
+CONFIG_DEBUG_SG=y
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+
+#
+# Tracers
+#
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_BOOT_TRACER is not set
+# CONFIG_TRACE_BRANCH_PROFILING is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_EARLY_PRINTK=y
+CONFIG_HEART_BEAT=y
+# CONFIG_DEBUG_BOOTMEM is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+# CONFIG_CRYPTO_MANAGER is not set
+# CONFIG_CRYPTO_MANAGER2 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+# CONFIG_CRYPTO_CBC is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_GENERIC_FIND_LAST_BIT=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+# CONFIG_CRC32 is not set
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_HAVE_LMB=y
diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild
new file mode 100644 (file)
index 0000000..31820df
--- /dev/null
@@ -0,0 +1,26 @@
+include include/asm-generic/Kbuild.asm
+
+header-y += auxvec.h
+header-y += errno.h
+header-y += fcntl.h
+header-y += ioctl.h
+header-y += ioctls.h
+header-y += ipcbuf.h
+header-y += linkage.h
+header-y += msgbuf.h
+header-y += poll.h
+header-y += resource.h
+header-y += sembuf.h
+header-y += shmbuf.h
+header-y += sigcontext.h
+header-y += siginfo.h
+header-y += socket.h
+header-y += sockios.h
+header-y += statfs.h
+header-y += stat.h
+header-y += termbits.h
+header-y += ucontext.h
+
+unifdef-y += cputable.h
+unifdef-y += elf.h
+unifdef-y += termios.h
diff --git a/arch/microblaze/include/asm/atomic.h b/arch/microblaze/include/asm/atomic.h
new file mode 100644 (file)
index 0000000..a448d94
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_ATOMIC_H
+#define _ASM_MICROBLAZE_ATOMIC_H
+
+#include <linux/types.h>
+#include <linux/compiler.h> /* likely */
+#include <asm/system.h> /* local_irq_XXX and friends */
+
+#define ATOMIC_INIT(i)         { (i) }
+#define atomic_read(v)         ((v)->counter)
+#define atomic_set(v, i)       (((v)->counter) = (i))
+
+#define atomic_inc(v)          (atomic_add_return(1, (v)))
+#define atomic_dec(v)          (atomic_sub_return(1, (v)))
+
+#define atomic_add(i, v)       (atomic_add_return(i, (v)))
+#define atomic_sub(i, v)       (atomic_sub_return(i, (v)))
+
+#define atomic_inc_return(v)   (atomic_add_return(1, (v)))
+#define atomic_dec_return(v)   (atomic_sub_return(1, (v)))
+
+#define atomic_inc_and_test(v) (atomic_add_return(1, (v)) == 0)
+#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
+
+#define atomic_inc_not_zero(v) (atomic_add_unless((v), 1, 0))
+
+#define atomic_sub_and_test(i, v) (atomic_sub_return((i), (v)) == 0)
+
+static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
+{
+       int ret;
+       unsigned long flags;
+
+       local_irq_save(flags);
+       ret = v->counter;
+       if (likely(ret == old))
+               v->counter = new;
+       local_irq_restore(flags);
+
+       return ret;
+}
+
+static inline int atomic_add_unless(atomic_t *v, int a, int u)
+{
+       int c, old;
+
+       c = atomic_read(v);
+       while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c)
+               c = old;
+       return c != u;
+}
+
+static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
+{
+       unsigned long flags;
+
+       local_irq_save(flags);
+       *addr &= ~mask;
+       local_irq_restore(flags);
+}
+
+/**
+ * atomic_add_return - add and return
+ * @i: integer value to add
+ * @v: pointer of type atomic_t
+ *
+ * Atomically adds @i to @v and returns @i + @v
+ */
+static inline int atomic_add_return(int i, atomic_t *v)
+{
+       unsigned long flags;
+       int val;
+
+       local_irq_save(flags);
+       val = v->counter;
+       v->counter = val += i;
+       local_irq_restore(flags);
+
+       return val;
+}
+
+static inline int atomic_sub_return(int i, atomic_t *v)
+{
+       return atomic_add_return(-i, v);
+}
+
+/*
+ * Atomically test *v and decrement if it is greater than 0.
+ * The function returns the old value of *v minus 1.
+ */
+static inline int atomic_dec_if_positive(atomic_t *v)
+{
+       unsigned long flags;
+       int res;
+
+       local_irq_save(flags);
+       res = v->counter - 1;
+       if (res >= 0)
+               v->counter = res;
+       local_irq_restore(flags);
+
+       return res;
+}
+
+#define atomic_add_negative(a, v)      (atomic_add_return((a), (v)) < 0)
+#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
+
+/* Atomic operations are already serializing */
+#define smp_mb__before_atomic_dec()    barrier()
+#define smp_mb__after_atomic_dec()     barrier()
+#define smp_mb__before_atomic_inc()    barrier()
+#define smp_mb__after_atomic_inc()     barrier()
+
+#include <asm-generic/atomic.h>
+
+#endif /* _ASM_MICROBLAZE_ATOMIC_H */
diff --git a/arch/microblaze/include/asm/auxvec.h b/arch/microblaze/include/asm/auxvec.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/arch/microblaze/include/asm/bitops.h b/arch/microblaze/include/asm/bitops.h
new file mode 100644 (file)
index 0000000..d6df1fd
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_BITOPS_H
+#define _ASM_MICROBLAZE_BITOPS_H
+
+/*
+ * Copyright 1992, Linus Torvalds.
+ */
+
+#include <asm/byteorder.h> /* swab32 */
+#include <asm/system.h> /* save_flags */
+
+/*
+ * clear_bit() doesn't provide any barrier for the compiler.
+ */
+#define smp_mb__before_clear_bit()     barrier()
+#define smp_mb__after_clear_bit()      barrier()
+#include <asm-generic/bitops.h>
+#include <asm-generic/bitops/__fls.h>
+
+#endif /* _ASM_MICROBLAZE_BITOPS_H */
diff --git a/arch/microblaze/include/asm/bug.h b/arch/microblaze/include/asm/bug.h
new file mode 100644 (file)
index 0000000..8eb2cdd
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_BUG_H
+#define _ASM_MICROBLAZE_BUG_H
+
+#include <linux/kernel.h>
+#include <asm-generic/bug.h>
+
+#endif /* _ASM_MICROBLAZE_BUG_H */
diff --git a/arch/microblaze/include/asm/bugs.h b/arch/microblaze/include/asm/bugs.h
new file mode 100644 (file)
index 0000000..f2c6593
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_BUGS_H
+#define _ASM_MICROBLAZE_BUGS_H
+
+static inline void check_bugs(void)
+{
+       /* nothing to do */
+}
+
+#endif /* _ASM_MICROBLAZE_BUGS_H */
diff --git a/arch/microblaze/include/asm/byteorder.h b/arch/microblaze/include/asm/byteorder.h
new file mode 100644 (file)
index 0000000..ce9c587
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_MICROBLAZE_BYTEORDER_H
+#define _ASM_MICROBLAZE_BYTEORDER_H
+
+#include <linux/byteorder/big_endian.h>
+
+#endif /* _ASM_MICROBLAZE_BYTEORDER_H */
diff --git a/arch/microblaze/include/asm/cache.h b/arch/microblaze/include/asm/cache.h
new file mode 100644 (file)
index 0000000..c4c64b4
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Cache operations
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
+ *
+ * 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 _ASM_MICROBLAZE_CACHE_H
+#define _ASM_MICROBLAZE_CACHE_H
+
+#include <asm/registers.h>
+
+#define L1_CACHE_SHIFT 2
+/* word-granular cache in microblaze */
+#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
+
+#define SMP_CACHE_BYTES        L1_CACHE_BYTES
+
+void _enable_icache(void);
+void _disable_icache(void);
+void _invalidate_icache(unsigned int addr);
+
+#define __enable_icache()              _enable_icache()
+#define __disable_icache()             _disable_icache()
+#define __invalidate_icache(addr)      _invalidate_icache(addr)
+
+void _enable_dcache(void);
+void _disable_dcache(void);
+void _invalidate_dcache(unsigned int addr);
+
+#define __enable_dcache()              _enable_dcache()
+#define __disable_dcache()             _disable_dcache()
+#define __invalidate_dcache(addr)      _invalidate_dcache(addr)
+
+/* FIXME - I don't think this is right */
+#ifdef CONFIG_XILINX_UNCACHED_SHADOW
+#define UNCACHED_SHADOW_MASK (CONFIG_XILINX_ERAM_SIZE)
+#endif
+
+#endif /* _ASM_MICROBLAZE_CACHE_H */
diff --git a/arch/microblaze/include/asm/cacheflush.h b/arch/microblaze/include/asm/cacheflush.h
new file mode 100644 (file)
index 0000000..3300b78
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2007 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ * based on v850 version which was
+ * Copyright (C) 2001,02,03 NEC Electronics Corporation
+ * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
+ *
+ * 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 _ASM_MICROBLAZE_CACHEFLUSH_H
+#define _ASM_MICROBLAZE_CACHEFLUSH_H
+
+/* Somebody depends on this; sigh... */
+#include <linux/mm.h>
+
+/*
+ * Cache handling functions.
+ * Microblaze has a write-through data cache, meaning that the data cache
+ * never needs to be flushed.  The only flushing operations that are
+ * implemented are to invalidate the instruction cache.  These are called
+ * after loading a user application into memory, we must invalidate the
+ * instruction cache to make sure we don't fetch old, bad code.
+ */
+
+/* FIXME for LL-temac driver */
+#define invalidate_dcache_range(start, end) \
+                       __invalidate_dcache_range(start, end)
+
+#define flush_cache_all()                      __invalidate_cache_all()
+#define flush_cache_mm(mm)                     do { } while (0)
+#define flush_cache_range(vma, start, end)     __invalidate_cache_all()
+#define flush_cache_page(vma, vmaddr, pfn)     do { } while (0)
+
+#define flush_dcache_range(start, end) __invalidate_dcache_range(start, end)
+#define flush_dcache_page(page)                        do { } while (0)
+#define flush_dcache_mmap_lock(mapping)                do { } while (0)
+#define flush_dcache_mmap_unlock(mapping)      do { } while (0)
+
+#define flush_icache_range(start, len) __invalidate_icache_range(start, len)
+#define flush_icache_page(vma, pg)             do { } while (0)
+
+#define flush_cache_vmap(start, end)           do { } while (0)
+#define flush_cache_vunmap(start, end)         do { } while (0)
+
+struct page;
+struct mm_struct;
+struct vm_area_struct;
+
+/* see arch/microblaze/kernel/cache.c */
+extern void __invalidate_icache_all(void);
+extern void __invalidate_icache_range(unsigned long start, unsigned long end);
+extern void __invalidate_icache_page(struct vm_area_struct *vma,
+                               struct page *page);
+extern void __invalidate_icache_user_range(struct vm_area_struct *vma,
+                               struct page *page,
+                               unsigned long adr, int len);
+extern void __invalidate_cache_sigtramp(unsigned long addr);
+
+extern void __invalidate_dcache_all(void);
+extern void __invalidate_dcache_range(unsigned long start, unsigned long end);
+extern void __invalidate_dcache_page(struct vm_area_struct *vma,
+                               struct page *page);
+extern void __invalidate_dcache_user_range(struct vm_area_struct *vma,
+                               struct page *page,
+                               unsigned long adr, int len);
+
+extern inline void __invalidate_cache_all(void)
+{
+       __invalidate_icache_all();
+       __invalidate_dcache_all();
+}
+
+#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
+do { memcpy((dst), (src), (len)); \
+       flush_icache_range((unsigned) (dst), (unsigned) (dst) + (len)); \
+} while (0)
+
+#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
+       memcpy((dst), (src), (len))
+
+#endif /* _ASM_MICROBLAZE_CACHEFLUSH_H */
diff --git a/arch/microblaze/include/asm/checksum.h b/arch/microblaze/include/asm/checksum.h
new file mode 100644 (file)
index 0000000..92b3076
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_CHECKSUM_H
+#define _ASM_MICROBLAZE_CHECKSUM_H
+
+#include <linux/in6.h>
+
+/*
+ * computes the checksum of the TCP/UDP pseudo-header
+ * returns a 16-bit checksum, already complemented
+ */
+static inline __wsum
+csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
+                  unsigned short proto, __wsum sum)
+{
+       __asm__("add %0, %0, %1\n\t"
+               "addc %0, %0, %2\n\t"
+               "addc %0, %0, %3\n\t"
+               "addc %0, %0, r0\n\t"
+               : "+&d" (sum)
+               : "d" (saddr), "d" (daddr), "d" (len + proto));
+
+       return sum;
+}
+
+/*
+ * computes the checksum of a memory block at buff, length len,
+ * and adds in "sum" (32-bit)
+ *
+ * returns a 32-bit number suitable for feeding into itself
+ * or csum_tcpudp_magic
+ *
+ * this function must be called with even lengths, except
+ * for the last fragment, which may be odd
+ *
+ * it's best to have buff aligned on a 32-bit boundary
+ */
+extern __wsum csum_partial(const void *buff, int len, __wsum sum);
+
+/*
+ * the same as csum_partial, but copies from src while it
+ * checksums
+ *
+ * here even more important to align src and dst on a 32-bit (or even
+ * better 64-bit) boundary
+ */
+extern __wsum csum_partial_copy(const char *src, char *dst, int len, int sum);
+
+/*
+ * the same as csum_partial_copy, but copies from user space.
+ *
+ * here even more important to align src and dst on a 32-bit (or even
+ * better 64-bit) boundary
+ */
+extern __wsum csum_partial_copy_from_user(const char *src, char *dst,
+                                       int len, int sum, int *csum_err);
+
+#define csum_partial_copy_nocheck(src, dst, len, sum)  \
+       csum_partial_copy((src), (dst), (len), (sum))
+
+/*
+ *     This is a version of ip_compute_csum() optimized for IP headers,
+ *     which always checksum on 4 octet boundaries.
+ *
+ */
+extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
+
+/*
+ *     Fold a partial checksum
+ */
+static inline __sum16 csum_fold(unsigned int sum)
+{
+       sum = (sum & 0xffff) + (sum >> 16);
+       sum = (sum & 0xffff) + (sum >> 16);
+       return ~sum;
+}
+
+static inline __sum16
+csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
+                 unsigned short proto, __wsum sum)
+{
+       return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
+}
+
+/*
+ * this routine is used for miscellaneous IP-like checksums, mainly
+ * in icmp.c
+ */
+extern __sum16 ip_compute_csum(const unsigned char *buff, int len);
+
+#endif /* _ASM_MICROBLAZE_CHECKSUM_H */
diff --git a/arch/microblaze/include/asm/clinkage.h b/arch/microblaze/include/asm/clinkage.h
new file mode 100644 (file)
index 0000000..9e21843
--- /dev/null
@@ -0,0 +1 @@
+#include <linux/linkage.h>
diff --git a/arch/microblaze/include/asm/cpuinfo.h b/arch/microblaze/include/asm/cpuinfo.h
new file mode 100644 (file)
index 0000000..52f28f6
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Generic support for queying CPU info
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <jwilliams@itee.uq.edu.au>
+ *
+ * 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 _ASM_MICROBLAZE_CPUINFO_H
+#define _ASM_MICROBLAZE_CPUINFO_H
+
+#include <asm/prom.h>
+
+/* CPU Version and FPGA Family code conversion table type */
+struct cpu_ver_key {
+       const char *s;
+       const unsigned k;
+};
+
+extern const struct cpu_ver_key cpu_ver_lookup[];
+
+struct family_string_key {
+       const char *s;
+       const unsigned k;
+};
+
+extern const struct family_string_key family_string_lookup[];
+
+struct cpuinfo {
+       /* Core CPU configuration */
+       u32 use_instr;
+       u32 use_mult;
+       u32 use_fpu;
+       u32 use_exc;
+       u32 ver_code;
+       u32 mmu;
+
+       /* CPU caches */
+       u32 use_icache;
+       u32 icache_tagbits;
+       u32 icache_write;
+       u32 icache_line;
+       u32 icache_size;
+       unsigned long icache_base;
+       unsigned long icache_high;
+
+       u32 use_dcache;
+       u32 dcache_tagbits;
+       u32 dcache_write;
+       u32 dcache_line;
+       u32 dcache_size;
+       unsigned long dcache_base;
+       unsigned long dcache_high;
+
+       /* Bus connections */
+       u32 use_dopb;
+       u32 use_iopb;
+       u32 use_dlmb;
+       u32 use_ilmb;
+       u32 num_fsl;
+
+       /* CPU interrupt line info */
+       u32 irq_edge;
+       u32 irq_positive;
+
+       u32 area_optimised;
+
+       /* HW debug support */
+       u32 hw_debug;
+       u32 num_pc_brk;
+       u32 num_rd_brk;
+       u32 num_wr_brk;
+       u32 cpu_clock_freq; /* store real freq of cpu */
+       u32 freq_div_hz; /* store freq/HZ */
+
+       /* FPGA family */
+       u32 fpga_family_code;
+
+       /* User define */
+       u32 pvr_user1;
+       u32 pvr_user2;
+};
+
+extern struct cpuinfo cpuinfo;
+
+/* fwd declarations of the various CPUinfo populators */
+void setup_cpuinfo(void);
+
+void set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu);
+void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu);
+
+static inline unsigned int fcpu(struct device_node *cpu, char *n)
+{
+       int *val;
+       return (val = (int *) of_get_property(cpu, n, NULL)) ? *val : 0;
+}
+
+#endif /* _ASM_MICROBLAZE_CPUINFO_H */
diff --git a/arch/microblaze/include/asm/cputable.h b/arch/microblaze/include/asm/cputable.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/arch/microblaze/include/asm/cputime.h b/arch/microblaze/include/asm/cputime.h
new file mode 100644 (file)
index 0000000..6d68ad7
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/cputime.h>
diff --git a/arch/microblaze/include/asm/current.h b/arch/microblaze/include/asm/current.h
new file mode 100644 (file)
index 0000000..8375ea9
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_CURRENT_H
+#define _ASM_MICROBLAZE_CURRENT_H
+
+# ifndef __ASSEMBLY__
+/*
+ * Dedicate r31 to keeping the current task pointer
+ */
+register struct task_struct *current asm("r31");
+
+# define get_current() current
+# endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_MICROBLAZE_CURRENT_H */
diff --git a/arch/microblaze/include/asm/delay.h b/arch/microblaze/include/asm/delay.h
new file mode 100644 (file)
index 0000000..05b7d39
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * include/asm-microblaze/delay.h
+ *
+ * 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) 2008 Michal Simek
+ * Copyright (C) 2007 John Williams
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ */
+
+#ifndef _ASM_MICROBLAZE_DELAY_H
+#define _ASM_MICROBLAZE_DELAY_H
+
+extern inline void __delay(unsigned long loops)
+{
+       asm volatile ("# __delay                \n\t"           \
+                       "1: addi        %0, %0, -1\t\n"         \
+                       "bneid  %0, 1b          \t\n"           \
+                       "nop                    \t\n"
+                       : "=r" (loops)
+                       : "0" (loops));
+}
+
+/*
+ * Note that 19 * 226 == 4294 ==~ 2^32 / 10^6, so
+ * loops = (4294 * usecs * loops_per_jiffy * HZ) / 2^32.
+ *
+ * The mul instruction gives us loops = (a * b) / 2^32.
+ * We choose a = usecs * 19 * HZ and b = loops_per_jiffy * 226
+ * because this lets us support a wide range of HZ and
+ * loops_per_jiffy values without either a or b overflowing 2^32.
+ * Thus we need usecs * HZ <= (2^32 - 1) / 19 = 226050910 and
+ * loops_per_jiffy <= (2^32 - 1) / 226 = 19004280
+ * (which corresponds to ~3800 bogomips at HZ = 100).
+ * -- paulus
+ */
+#define __MAX_UDELAY   (226050910UL/HZ)        /* maximum udelay argument */
+#define __MAX_NDELAY   (4294967295UL/HZ)       /* maximum ndelay argument */
+
+extern unsigned long loops_per_jiffy;
+
+extern inline void __udelay(unsigned int x)
+{
+
+       unsigned long long tmp =
+               (unsigned long long)x * (unsigned long long)loops_per_jiffy \
+                       * 226LL;
+       unsigned loops = tmp >> 32;
+
+/*
+       __asm__("mulxuu %0,%1,%2" : "=r" (loops) :
+               "r" (x), "r" (loops_per_jiffy * 226));
+*/
+       __delay(loops);
+}
+
+extern void __bad_udelay(void);                /* deliberately undefined */
+extern void __bad_ndelay(void);                /* deliberately undefined */
+
+#define udelay(n) (__builtin_constant_p(n) ? \
+       ((n) > __MAX_UDELAY ? __bad_udelay() : __udelay((n) * (19 * HZ))) : \
+       __udelay((n) * (19 * HZ)))
+
+#define ndelay(n) (__builtin_constant_p(n) ? \
+       ((n) > __MAX_NDELAY ? __bad_ndelay() : __udelay((n) * HZ)) : \
+       __udelay((n) * HZ))
+
+#define muldiv(a, b, c)                (((a)*(b))/(c))
+
+#endif /* _ASM_MICROBLAZE_DELAY_H */
diff --git a/arch/microblaze/include/asm/device.h b/arch/microblaze/include/asm/device.h
new file mode 100644 (file)
index 0000000..c042830
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Arch specific extensions to struct device
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License v2. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+
+#ifndef _ASM_MICROBLAZE_DEVICE_H
+#define _ASM_MICROBLAZE_DEVICE_H
+
+struct device_node;
+
+struct dev_archdata {
+       /* Optional pointer to an OF device node */
+       struct device_node      *of_node;
+};
+
+#endif /* _ASM_MICROBLAZE_DEVICE_H */
+
+
diff --git a/arch/microblaze/include/asm/div64.h b/arch/microblaze/include/asm/div64.h
new file mode 100644 (file)
index 0000000..6cd978c
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/div64.h>
diff --git a/arch/microblaze/include/asm/dma-mapping.h b/arch/microblaze/include/asm/dma-mapping.h
new file mode 100644 (file)
index 0000000..1733625
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_DMA_MAPPING_H
+#define _ASM_MICROBLAZE_DMA_MAPPING_H
+
+#include <asm/cacheflush.h>
+#include <linux/io.h>
+#include <linux/bug.h>
+
+struct scatterlist;
+
+#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
+#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
+
+/* FIXME */
+static inline int
+dma_supported(struct device *dev, u64 mask)
+{
+       return 1;
+}
+
+static inline dma_addr_t
+dma_map_page(struct device *dev, struct page *page,
+       unsigned long offset, size_t size,
+       enum dma_data_direction direction)
+{
+       BUG();
+       return 0;
+}
+
+static inline void
+dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
+       enum dma_data_direction direction)
+{
+       BUG();
+}
+
+static inline int
+dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
+       enum dma_data_direction direction)
+{
+       BUG();
+       return 0;
+}
+
+static inline void
+dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
+       enum dma_data_direction direction)
+{
+       BUG();
+}
+
+static inline void
+dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
+                       enum dma_data_direction direction)
+{
+       BUG();
+}
+
+static inline void
+dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
+               size_t size, enum dma_data_direction direction)
+{
+       BUG();
+}
+
+static inline void
+dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
+               enum dma_data_direction direction)
+{
+       BUG();
+}
+
+static inline void
+dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
+               enum dma_data_direction direction)
+{
+       BUG();
+}
+
+static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
+{
+       return 0;
+}
+
+static inline void *dma_alloc_coherent(struct device *dev, size_t size,
+                               dma_addr_t *dma_handle, int flag)
+{
+       return NULL; /* consistent_alloc(flag, size, dma_handle); */
+}
+
+static inline void dma_free_coherent(struct device *dev, size_t size,
+                       void *vaddr, dma_addr_t dma_handle)
+{
+       BUG();
+}
+
+static inline dma_addr_t
+dma_map_single(struct device *dev, void *ptr, size_t size,
+       enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+
+       return virt_to_bus(ptr);
+}
+
+static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr,
+                                   size_t size,
+                                   enum dma_data_direction direction)
+{
+       switch (direction) {
+       case DMA_FROM_DEVICE:
+               flush_dcache_range((unsigned)dma_addr,
+                       (unsigned)dma_addr + size);
+                       /* Fall through */
+       case DMA_TO_DEVICE:
+               break;
+       default:
+               BUG();
+       }
+}
+
+#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */
diff --git a/arch/microblaze/include/asm/dma.h b/arch/microblaze/include/asm/dma.h
new file mode 100644 (file)
index 0000000..0967fa0
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_DMA_H
+#define _ASM_MICROBLAZE_DMA_H
+
+/* we don't have dma address limit. define it as zero to be
+ * unlimited. */
+#define MAX_DMA_ADDRESS                (0)
+
+#endif /* _ASM_MICROBLAZE_DMA_H */
diff --git a/arch/microblaze/include/asm/elf.h b/arch/microblaze/include/asm/elf.h
new file mode 100644 (file)
index 0000000..81337f2
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_ELF_H
+#define _ASM_MICROBLAZE_ELF_H
+
+/*
+ * Note there is no "official" ELF designation for Microblaze.
+ * I've snaffled the value from the microblaze binutils source code
+ * /binutils/microblaze/include/elf/microblaze.h
+ */
+#define EM_XILINX_MICROBLAZE   0xbaab
+#define ELF_ARCH               EM_XILINX_MICROBLAZE
+
+/*
+ * This is used to ensure we don't load something for the wrong architecture.
+ */
+#define elf_check_arch(x)      ((x)->e_machine == EM_XILINX_MICROBLAZE)
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_CLASS      ELFCLASS32
+
+#endif /* _ASM_MICROBLAZE_ELF_H */
diff --git a/arch/microblaze/include/asm/emergency-restart.h b/arch/microblaze/include/asm/emergency-restart.h
new file mode 100644 (file)
index 0000000..3711bd9
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/emergency-restart.h>
diff --git a/arch/microblaze/include/asm/entry.h b/arch/microblaze/include/asm/entry.h
new file mode 100644 (file)
index 0000000..7f57e42
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Definitions used by low-level trap handlers
+ *
+ * Copyright (C) 2008 Michal Simek
+ * Copyright (C) 2007 - 2008 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * 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 _ASM_MICROBLAZE_ENTRY_H
+#define _ASM_MICROBLAZE_ENTRY_H
+
+#include <asm/percpu.h>
+#include <asm/ptrace.h>
+
+/*
+ * These are per-cpu variables required in entry.S, among other
+ * places
+ */
+
+#define PER_CPU(var) per_cpu__##var
+
+# ifndef __ASSEMBLY__
+DECLARE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
+DECLARE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
+DECLARE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
+DECLARE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
+DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
+DECLARE_PER_CPU(unsigned int, SYSCALL_SAVE); /* Saved syscall number */
+# endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_MICROBLAZE_ENTRY_H */
diff --git a/arch/microblaze/include/asm/errno.h b/arch/microblaze/include/asm/errno.h
new file mode 100644 (file)
index 0000000..4c82b50
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/errno.h>
diff --git a/arch/microblaze/include/asm/exceptions.h b/arch/microblaze/include/asm/exceptions.h
new file mode 100644 (file)
index 0000000..4cdd215
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * Preliminary support for HW exception handing for Microblaze
+ *
+ * Copyright (C) 2008 Michal Simek
+ * Copyright (C) 2008 PetaLogix
+ * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
+ *
+ * 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 _ASM_MICROBLAZE_EXCEPTIONS_H
+#define _ASM_MICROBLAZE_EXCEPTIONS_H
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+/* Macros to enable and disable HW exceptions in the MSR */
+/* Define MSR enable bit for HW exceptions */
+#define HWEX_MSR_BIT (1 << 8)
+
+#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+#define __enable_hw_exceptions()                                       \
+       __asm__ __volatile__ (" msrset  r0, %0;                         \
+                               nop;"                                   \
+                               :                                       \
+                               : "i" (HWEX_MSR_BIT)                    \
+                               : "memory")
+
+#define __disable_hw_exceptions()                                      \
+       __asm__ __volatile__ (" msrclr r0, %0;                          \
+                               nop;"                                   \
+                               :                                       \
+                               : "i" (HWEX_MSR_BIT)                    \
+                               : "memory")
+#else /* !CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
+#define __enable_hw_exceptions()                                       \
+       __asm__ __volatile__ ("                                         \
+                               mfs     r12, rmsr;                      \
+                               nop;                                    \
+                               ori     r12, r12, %0;                   \
+                               mts     rmsr, r12;                      \
+                               nop;"                                   \
+                               :                                       \
+                               : "i" (HWEX_MSR_BIT)                    \
+                               : "memory", "r12")
+
+#define __disable_hw_exceptions()                                      \
+       __asm__ __volatile__ ("                                         \
+                               mfs     r12, rmsr;                      \
+                               nop;                                    \
+                               andi    r12, r12, ~%0;                  \
+                               mts     rmsr, r12;                      \
+                               nop;"                                   \
+                               :                                       \
+                               : "i" (HWEX_MSR_BIT)                    \
+                               : "memory", "r12")
+#endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
+
+asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
+                                                       int fsr, int addr);
+
+#if defined(CONFIG_XMON)
+extern void xmon(struct pt_regs *regs);
+extern int xmon_bpt(struct pt_regs *regs);
+extern int xmon_sstep(struct pt_regs *regs);
+extern int xmon_iabr_match(struct pt_regs *regs);
+extern int xmon_dabr_match(struct pt_regs *regs);
+extern void (*xmon_fault_handler)(struct pt_regs *regs);
+
+void (*debugger)(struct pt_regs *regs) = xmon;
+int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt;
+int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep;
+int (*debugger_iabr_match)(struct pt_regs *regs) = xmon_iabr_match;
+int (*debugger_dabr_match)(struct pt_regs *regs) = xmon_dabr_match;
+void (*debugger_fault_handler)(struct pt_regs *regs);
+#elif defined(CONFIG_KGDB)
+void (*debugger)(struct pt_regs *regs);
+int (*debugger_bpt)(struct pt_regs *regs);
+int (*debugger_sstep)(struct pt_regs *regs);
+int (*debugger_iabr_match)(struct pt_regs *regs);
+int (*debugger_dabr_match)(struct pt_regs *regs);
+void (*debugger_fault_handler)(struct pt_regs *regs);
+#else
+#define debugger(regs)                 do { } while (0)
+#define debugger_bpt(regs)             0
+#define debugger_sstep(regs)           0
+#define debugger_iabr_match(regs)      0
+#define debugger_dabr_match(regs)      0
+#define debugger_fault_handler         ((void (*)(struct pt_regs *))0)
+#endif
+
+#endif /*__ASSEMBLY__ */
+#endif /* __KERNEL__ */
+#endif /* _ASM_MICROBLAZE_EXCEPTIONS_H */
diff --git a/arch/microblaze/include/asm/fcntl.h b/arch/microblaze/include/asm/fcntl.h
new file mode 100644 (file)
index 0000000..46ab12d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/fcntl.h>
diff --git a/arch/microblaze/include/asm/flat.h b/arch/microblaze/include/asm/flat.h
new file mode 100644 (file)
index 0000000..acf0da5
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * uClinux flat-format executables
+ *
+ * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
+ *
+ * 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 _ASM_MICROBLAZE_FLAT_H
+#define _ASM_MICROBLAZE_FLAT_H
+
+#include <asm/unaligned.h>
+
+#define        flat_stack_align(sp) /* nothing needed */
+#define        flat_argvp_envp_on_stack()      0
+#define        flat_old_ram_flag(flags)        (flags)
+#define        flat_reloc_valid(reloc, size)   ((reloc) <= (size))
+#define        flat_set_persistent(relval, p)          0
+
+/*
+ * Microblaze works a little differently from other arches, because
+ * of the MICROBLAZE_64 reloc type. Here, a 32 bit address is split
+ * over two instructions, an 'imm' instruction which provides the top
+ * 16 bits, then the instruction "proper" which provides the low 16
+ * bits.
+ */
+
+/*
+ * Crack open a symbol reference and extract the address to be
+ * relocated. rp is a potentially unaligned pointer to the
+ * reference
+ */
+
+static inline unsigned long
+flat_get_addr_from_rp(unsigned long *rp, unsigned long relval,
+                       unsigned long flags, unsigned long *persistent)
+{
+       unsigned long addr;
+       (void)flags;
+
+       /* Is it a split 64/32 reference? */
+       if (relval & 0x80000000) {
+               /* Grab the two halves of the reference */
+               unsigned long val_hi, val_lo;
+
+               val_hi = get_unaligned(rp);
+               val_lo = get_unaligned(rp+1);
+
+               /* Crack the address out */
+               addr = ((val_hi & 0xffff) << 16) + (val_lo & 0xffff);
+       } else {
+               /* Get the address straight out */
+               addr = get_unaligned(rp);
+       }
+
+       return addr;
+}
+
+/*
+ * Insert an address into the symbol reference at rp. rp is potentially
+ * unaligned.
+ */
+
+static inline void
+flat_put_addr_at_rp(unsigned long *rp, unsigned long addr, unsigned long relval)
+{
+       /* Is this a split 64/32 reloc? */
+       if (relval & 0x80000000) {
+               /* Get the two "halves" */
+               unsigned long val_hi = get_unaligned(rp);
+               unsigned long val_lo = get_unaligned(rp + 1);
+
+               /* insert the address */
+               val_hi = (val_hi & 0xffff0000) | addr >> 16;
+               val_lo = (val_lo & 0xffff0000) | (addr & 0xffff);
+
+               /* store the two halves back into memory */
+               put_unaligned(val_hi, rp);
+               put_unaligned(val_lo, rp+1);
+       } else {
+               /* Put it straight in, no messing around */
+               put_unaligned(addr, rp);
+       }
+}
+
+#define        flat_get_relocate_addr(rel)     (rel & 0x7fffffff)
+
+#endif /* _ASM_MICROBLAZE_FLAT_H */
diff --git a/arch/microblaze/include/asm/futex.h b/arch/microblaze/include/asm/futex.h
new file mode 100644 (file)
index 0000000..0b74582
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/futex.h>
diff --git a/arch/microblaze/include/asm/gpio.h b/arch/microblaze/include/asm/gpio.h
new file mode 100644 (file)
index 0000000..ea04632
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generic GPIO API implementation for PowerPC.
+ *
+ * Copyright (c) 2007-2008  MontaVista Software, Inc.
+ *
+ * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __ASM_POWERPC_GPIO_H
+#define __ASM_POWERPC_GPIO_H
+
+#include <linux/errno.h>
+#include <asm-generic/gpio.h>
+
+#ifdef CONFIG_GPIOLIB
+
+/*
+ * We don't (yet) implement inlined/rapid versions for on-chip gpios.
+ * Just call gpiolib.
+ */
+static inline int gpio_get_value(unsigned int gpio)
+{
+       return __gpio_get_value(gpio);
+}
+
+static inline void gpio_set_value(unsigned int gpio, int value)
+{
+       __gpio_set_value(gpio, value);
+}
+
+static inline int gpio_cansleep(unsigned int gpio)
+{
+       return __gpio_cansleep(gpio);
+}
+
+/*
+ * Not implemented, yet.
+ */
+static inline int gpio_to_irq(unsigned int gpio)
+{
+       return -ENOSYS;
+}
+
+static inline int irq_to_gpio(unsigned int irq)
+{
+       return -EINVAL;
+}
+
+#endif /* CONFIG_GPIOLIB */
+
+#endif /* __ASM_POWERPC_GPIO_H */
diff --git a/arch/microblaze/include/asm/hardirq.h b/arch/microblaze/include/asm/hardirq.h
new file mode 100644 (file)
index 0000000..0f2d6b0
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_HARDIRQ_H
+#define _ASM_MICROBLAZE_HARDIRQ_H
+
+#include <linux/cache.h>
+#include <linux/irq.h>
+#include <asm/irq.h>
+#include <asm/current.h>
+#include <linux/ptrace.h>
+
+/* should be defined in each interrupt controller driver */
+extern unsigned int get_irq(struct pt_regs *regs);
+
+typedef struct {
+       unsigned int __softirq_pending;
+} ____cacheline_aligned irq_cpustat_t;
+
+void ack_bad_irq(unsigned int irq);
+
+#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
+
+#endif /* _ASM_MICROBLAZE_HARDIRQ_H */
diff --git a/arch/microblaze/include/asm/hw_irq.h b/arch/microblaze/include/asm/hw_irq.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
new file mode 100644 (file)
index 0000000..cfab034
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_IO_H
+#define _ASM_MICROBLAZE_IO_H
+
+#include <asm/byteorder.h>
+#include <asm/page.h>
+#include <linux/types.h>
+#include <asm/page.h>
+
+#define IO_SPACE_LIMIT (0xFFFFFFFF)
+
+static inline unsigned char __raw_readb(const volatile void __iomem *addr)
+{
+       return *(volatile unsigned char __force *)addr;
+}
+static inline unsigned short __raw_readw(const volatile void __iomem *addr)
+{
+       return *(volatile unsigned short __force *)addr;
+}
+static inline unsigned int __raw_readl(const volatile void __iomem *addr)
+{
+       return *(volatile unsigned int __force *)addr;
+}
+static inline unsigned long __raw_readq(const volatile void __iomem *addr)
+{
+       return *(volatile unsigned long __force *)addr;
+}
+static inline void __raw_writeb(unsigned char v, volatile void __iomem *addr)
+{
+       *(volatile unsigned char __force *)addr = v;
+}
+static inline void __raw_writew(unsigned short v, volatile void __iomem *addr)
+{
+       *(volatile unsigned short __force *)addr = v;
+}
+static inline void __raw_writel(unsigned int v, volatile void __iomem *addr)
+{
+       *(volatile unsigned int __force *)addr = v;
+}
+static inline void __raw_writeq(unsigned long v, volatile void __iomem *addr)
+{
+       *(volatile unsigned long __force *)addr = v;
+}
+
+/*
+ * read (readb, readw, readl, readq) and write (writeb, writew,
+ * writel, writeq) accessors are for PCI and thus littel endian.
+ * Linux 2.4 for Microblaze had this wrong.
+ */
+static inline unsigned char readb(const volatile void __iomem *addr)
+{
+       return *(volatile unsigned char __force *)addr;
+}
+static inline unsigned short readw(const volatile void __iomem *addr)
+{
+       return le16_to_cpu(*(volatile unsigned short __force *)addr);
+}
+static inline unsigned int readl(const volatile void __iomem *addr)
+{
+       return le32_to_cpu(*(volatile unsigned int __force *)addr);
+}
+static inline void writeb(unsigned char v, volatile void __iomem *addr)
+{
+       *(volatile unsigned char __force *)addr = v;
+}
+static inline void writew(unsigned short v, volatile void __iomem *addr)
+{
+       *(volatile unsigned short __force *)addr = cpu_to_le16(v);
+}
+static inline void writel(unsigned int v, volatile void __iomem *addr)
+{
+       *(volatile unsigned int __force *)addr = cpu_to_le32(v);
+}
+
+/* ioread and iowrite variants. thease are for now same as __raw_
+ * variants of accessors. we might check for endianess in the feature
+ */
+#define ioread8(addr)          __raw_readb((u8 *)(addr))
+#define ioread16(addr)         __raw_readw((u16 *)(addr))
+#define ioread32(addr)         __raw_readl((u32 *)(addr))
+#define iowrite8(v, addr)      __raw_writeb((u8)(v), (u8 *)(addr))
+#define iowrite16(v, addr)     __raw_writew((u16)(v), (u16 *)(addr))
+#define iowrite32(v, addr)     __raw_writel((u32)(v), (u32 *)(addr))
+
+/* These are the definitions for the x86 IO instructions
+ * inb/inw/inl/outb/outw/outl, the "string" versions
+ * insb/insw/insl/outsb/outsw/outsl, and the "pausing" versions
+ * inb_p/inw_p/...
+ * The macros don't do byte-swapping.
+ */
+#define inb(port)              readb((u8 *)((port)))
+#define outb(val, port)                writeb((val), (u8 *)((unsigned long)(port)))
+#define inw(port)              readw((u16 *)((port)))
+#define outw(val, port)                writew((val), (u16 *)((unsigned long)(port)))
+#define inl(port)              readl((u32 *)((port)))
+#define outl(val, port)                writel((val), (u32 *)((unsigned long)(port)))
+
+#define inb_p(port)            inb((port))
+#define outb_p(val, port)      outb((val), (port))
+#define inw_p(port)            inw((port))
+#define outw_p(val, port)      outw((val), (port))
+#define inl_p(port)            inl((port))
+#define outl_p(val, port)      outl((val), (port))
+
+#define memset_io(a, b, c)     memset((void *)(a), (b), (c))
+#define memcpy_fromio(a, b, c) memcpy((a), (void *)(b), (c))
+#define memcpy_toio(a, b, c)   memcpy((void *)(a), (b), (c))
+
+/**
+ *     virt_to_phys - map virtual addresses to physical
+ *     @address: address to remap
+ *
+ *     The returned physical address is the physical (CPU) mapping for
+ *     the memory address given. It is only valid to use this function on
+ *     addresses directly mapped or allocated via kmalloc.
+ *
+ *     This function does not give bus mappings for DMA transfers. In
+ *     almost all conceivable cases a device driver should not be using
+ *     this function
+ */
+static inline unsigned long __iomem virt_to_phys(volatile void *address)
+{
+       return __pa((unsigned long)address);
+}
+
+#define virt_to_bus virt_to_phys
+
+/**
+ *     phys_to_virt - map physical address to virtual
+ *     @address: address to remap
+ *
+ *     The returned virtual address is a current CPU mapping for
+ *     the memory address given. It is only valid to use this function on
+ *     addresses that have a kernel mapping
+ *
+ *     This function does not handle bus mappings for DMA transfers. In
+ *     almost all conceivable cases a device driver should not be using
+ *     this function
+ */
+static inline void *phys_to_virt(unsigned long address)
+{
+       return (void *)__va(address);
+}
+
+#define bus_to_virt(a) phys_to_virt(a)
+
+static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
+                       unsigned long flags)
+{
+       return (void *)address;
+}
+
+#define ioremap(physaddr, size)        ((void __iomem *)(unsigned long)(physaddr))
+#define iounmap(addr)          ((void)0)
+#define ioremap_nocache(physaddr, size)        ioremap(physaddr, size)
+
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p)   __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p)  p
+
+/*
+ * Big Endian
+ */
+#define out_be32(a, v) __raw_writel((v), (void __iomem __force *)(a))
+#define out_be16(a, v) __raw_writew((v), (a))
+
+#define in_be32(a) __raw_readl((const void __iomem __force *)(a))
+#define in_be16(a) __raw_readw(a)
+
+/*
+ * Little endian
+ */
+
+#define out_le32(a, v) __raw_writel(__cpu_to_le32(v), (a));
+#define out_le16(a, v) __raw_writew(__cpu_to_le16(v), (a))
+
+#define in_le32(a) __le32_to_cpu(__raw_readl(a))
+#define in_le16(a) __le16_to_cpu(__raw_readw(a))
+
+/* Byte ops */
+#define out_8(a, v) __raw_writeb((v), (a))
+#define in_8(a) __raw_readb(a)
+
+/* FIXME */
+static inline void __iomem *ioport_map(unsigned long port, unsigned int len)
+{
+       return (void __iomem *) (port);
+}
+
+static inline void ioport_unmap(void __iomem *addr)
+{
+       /* Nothing to do */
+}
+
+#endif /* _ASM_MICROBLAZE_IO_H */
diff --git a/arch/microblaze/include/asm/ioctl.h b/arch/microblaze/include/asm/ioctl.h
new file mode 100644 (file)
index 0000000..b279fe0
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/ioctl.h>
diff --git a/arch/microblaze/include/asm/ioctls.h b/arch/microblaze/include/asm/ioctls.h
new file mode 100644 (file)
index 0000000..03582b2
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_IOCTLS_H
+#define _ASM_MICROBLAZE_IOCTLS_H
+
+#include <linux/ioctl.h>
+
+/* 0x54 is just a magic number to make these relatively unique ('T') */
+
+#define TCGETS         0x5401
+#define TCSETS         0x5402
+#define TCSETSW                0x5403
+#define TCSETSF                0x5404
+#define TCGETA         0x5405
+#define TCSETA         0x5406
+#define TCSETAW                0x5407
+#define TCSETAF                0x5408
+#define TCSBRK         0x5409
+#define TCXONC         0x540A
+#define TCFLSH         0x540B
+#define TIOCEXCL       0x540C
+#define TIOCNXCL       0x540D
+#define TIOCSCTTY      0x540E
+#define TIOCGPGRP      0x540F
+#define TIOCSPGRP      0x5410
+#define TIOCOUTQ       0x5411
+#define TIOCSTI                0x5412
+#define TIOCGWINSZ     0x5413
+#define TIOCSWINSZ     0x5414
+#define TIOCMGET       0x5415
+#define TIOCMBIS       0x5416
+#define TIOCMBIC       0x5417
+#define TIOCMSET       0x5418
+#define TIOCGSOFTCAR   0x5419
+#define TIOCSSOFTCAR   0x541A
+#define FIONREAD       0x541B
+#define TIOCINQ                FIONREAD
+#define TIOCLINUX      0x541C
+#define TIOCCONS       0x541D
+#define TIOCGSERIAL    0x541E
+#define TIOCSSERIAL    0x541F
+#define TIOCPKT                0x5420
+#define FIONBIO                0x5421
+#define TIOCNOTTY      0x5422
+#define TIOCSETD       0x5423
+#define TIOCGETD       0x5424
+#define TCSBRKP                0x5425 /* Needed for POSIX tcsendbreak() */
+#define TIOCTTYGSTRUCT 0x5426 /* For debugging only */
+#define TIOCSBRK       0x5427 /* BSD compatibility */
+#define TIOCCBRK       0x5428 /* BSD compatibility */
+#define TIOCGSID       0x5429 /* Return the session ID of FD */
+/* Get Pty Number (of pty-mux device) */
+#define TIOCGPTN       _IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK     _IOW('T', 0x31, int) /* Lock/unlock Pty */
+
+#define FIONCLEX       0x5450 /* these numbers need to be adjusted. */
+#define FIOCLEX                0x5451
+#define FIOASYNC       0x5452
+#define TIOCSERCONFIG  0x5453
+#define TIOCSERGWILD   0x5454
+#define TIOCSERSWILD   0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
+#define TIOCSERGETLSR  0x5459 /* Get line status register */
+#define TIOCSERGETMULTI 0x545A /* Get multiport config */
+#define TIOCSERSETMULTI 0x545B /* Set multiport config */
+
+#define TIOCMIWAIT     0x545C /* wait for a change on serial input line(s) */
+#define TIOCGICOUNT    0x545D /* read serial port inline interrupt counts */
+
+#define        FIOQSIZE        0x545E
+
+/* Used for packet mode */
+#define TIOCPKT_DATA           0
+#define TIOCPKT_FLUSHREAD      1
+#define TIOCPKT_FLUSHWRITE     2
+#define TIOCPKT_STOP           4
+#define TIOCPKT_START          8
+#define TIOCPKT_NOSTOP         16
+#define TIOCPKT_DOSTOP         32
+
+#define TIOCSER_TEMT   0x01 /* Transmitter physically empty */
+
+#endif /* _ASM_MICROBLAZE_IOCTLS_H */
diff --git a/arch/microblaze/include/asm/ipc.h b/arch/microblaze/include/asm/ipc.h
new file mode 100644 (file)
index 0000000..a46e3d9
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/ipc.h>
diff --git a/arch/microblaze/include/asm/ipcbuf.h b/arch/microblaze/include/asm/ipcbuf.h
new file mode 100644 (file)
index 0000000..b056fa4
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_IPCBUF_H
+#define _ASM_MICROBLAZE_IPCBUF_H
+
+/*
+ * The user_ipc_perm structure for microblaze architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 32-bit mode_t and seq
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct ipc64_perm {
+       __kernel_key_t          key;
+       __kernel_uid32_t        uid;
+       __kernel_gid32_t        gid;
+       __kernel_uid32_t        cuid;
+       __kernel_gid32_t        cgid;
+       __kernel_mode_t         mode;
+       unsigned short          __pad1;
+       unsigned short          seq;
+       unsigned short          __pad2;
+       unsigned long           __unused1;
+       unsigned long           __unused2;
+};
+
+#endif /* _ASM_MICROBLAZE_IPCBUF_H */
diff --git a/arch/microblaze/include/asm/irq.h b/arch/microblaze/include/asm/irq.h
new file mode 100644 (file)
index 0000000..db515de
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_IRQ_H
+#define _ASM_MICROBLAZE_IRQ_H
+
+#define NR_IRQS 32
+
+#include <linux/interrupt.h>
+
+extern unsigned int nr_irq;
+
+#define NO_IRQ (-1)
+
+static inline int irq_canonicalize(int irq)
+{
+       return irq;
+}
+
+struct pt_regs;
+extern void do_IRQ(struct pt_regs *regs);
+
+/* irq_of_parse_and_map - Parse and Map an interrupt into linux virq space
+ * @device: Device node of the device whose interrupt is to be mapped
+ * @index: Index of the interrupt to map
+ *
+ * This function is a wrapper that chains of_irq_map_one() and
+ * irq_create_of_mapping() to make things easier to callers
+ */
+struct device_node;
+extern unsigned int irq_of_parse_and_map(struct device_node *dev, int index);
+
+/** FIXME - not implement
+ * irq_dispose_mapping - Unmap an interrupt
+ * @virq: linux virq number of the interrupt to unmap
+ */
+static inline void irq_dispose_mapping(unsigned int virq)
+{
+       return;
+}
+
+#endif /* _ASM_MICROBLAZE_IRQ_H */
diff --git a/arch/microblaze/include/asm/irq_regs.h b/arch/microblaze/include/asm/irq_regs.h
new file mode 100644 (file)
index 0000000..3dd9c0b
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/irq_regs.h>
diff --git a/arch/microblaze/include/asm/irqflags.h b/arch/microblaze/include/asm/irqflags.h
new file mode 100644 (file)
index 0000000..dea6564
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_IRQFLAGS_H
+#define _ASM_MICROBLAZE_IRQFLAGS_H
+
+#include <linux/irqflags.h>
+
+# if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+
+# define local_irq_save(flags)                         \
+       do {                                            \
+               asm volatile ("# local_irq_save \n\t"   \
+                               "msrclr %0, %1  \n\t"   \
+                               "nop    \n\t"           \
+                               : "=r"(flags)           \
+                               : "i"(MSR_IE)           \
+                               : "memory");            \
+       } while (0)
+
+# define local_irq_disable()                                   \
+       do {                                                    \
+               asm volatile ("# local_irq_disable \n\t"        \
+                               "msrclr r0, %0 \n\t"            \
+                               "nop    \n\t"                   \
+                               :                               \
+                               : "i"(MSR_IE)                   \
+                               : "memory");                    \
+       } while (0)
+
+# define local_irq_enable()                                    \
+       do {                                                    \
+               asm volatile ("# local_irq_enable \n\t"         \
+                               "msrset r0, %0 \n\t"            \
+                               "nop    \n\t"                   \
+                               :                               \
+                               : "i"(MSR_IE)                   \
+                               : "memory");                    \
+       } while (0)
+
+# else /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR == 0 */
+
+# define local_irq_save(flags)                                 \
+       do {                                                    \
+               register unsigned tmp;                          \
+               asm volatile ("# local_irq_save \n\t"           \
+                               "mfs    %0, rmsr \n\t"          \
+                               "nop \n\t"                      \
+                               "andi   %1, %0, %2 \n\t"        \
+                               "mts    rmsr, %1 \n\t"          \
+                               "nop \n\t"                      \
+                               : "=r"(flags), "=r" (tmp)       \
+                               : "i"(~MSR_IE)                  \
+                               : "memory");                    \
+       } while (0)
+
+# define local_irq_disable()                                   \
+       do {                                                    \
+               register unsigned tmp;                          \
+               asm volatile ("# local_irq_disable \n\t"        \
+                               "mfs    %0, rmsr \n\t"          \
+                               "nop \n\t"                      \
+                               "andi   %0, %0, %1 \n\t"        \
+                               "mts    rmsr, %0 \n\t"          \
+                               "nop \n\t"                      \
+                               : "=r"(tmp)                     \
+                               : "i"(~MSR_IE)                  \
+                               : "memory");                    \
+       } while (0)
+
+# define local_irq_enable()                                    \
+       do {                                                    \
+               register unsigned tmp;                          \
+               asm volatile ("# local_irq_enable \n\t"         \
+                               "mfs    %0, rmsr \n\t"          \
+                               "nop \n\t"                      \
+                               "ori    %0, %0, %1 \n\t"        \
+                               "mts    rmsr, %0 \n\t"          \
+                               "nop \n\t"                      \
+                               : "=r"(tmp)                     \
+                               : "i"(MSR_IE)                   \
+                               : "memory");                    \
+       } while (0)
+
+# endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
+
+#define local_save_flags(flags)                                        \
+       do {                                                    \
+               asm volatile ("# local_save_flags \n\t"         \
+                               "mfs    %0, rmsr \n\t"          \
+                               "nop    \n\t"                   \
+                               : "=r"(flags)                   \
+                               :                               \
+                               : "memory");                    \
+       } while (0)
+
+#define local_irq_restore(flags)                       \
+       do {                                            \
+               asm volatile ("# local_irq_restore \n\t"\
+                               "mts    rmsr, %0 \n\t"  \
+                               "nop    \n\t"           \
+                               :                       \
+                               : "r"(flags)            \
+                               : "memory");            \
+       } while (0)
+
+static inline int irqs_disabled(void)
+{
+       unsigned long flags;
+
+       local_save_flags(flags);
+       return ((flags & MSR_IE) == 0);
+}
+
+#define raw_irqs_disabled irqs_disabled
+#define raw_irqs_disabled_flags(flags) ((flags) == 0)
+
+#endif /* _ASM_MICROBLAZE_IRQFLAGS_H */
diff --git a/arch/microblaze/include/asm/kdebug.h b/arch/microblaze/include/asm/kdebug.h
new file mode 100644 (file)
index 0000000..6ece1b0
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/kdebug.h>
diff --git a/arch/microblaze/include/asm/kmap_types.h b/arch/microblaze/include/asm/kmap_types.h
new file mode 100644 (file)
index 0000000..4d7e222
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_KMAP_TYPES_H
+#define _ASM_MICROBLAZE_KMAP_TYPES_H
+
+enum km_type {
+       KM_BOUNCE_READ,
+       KM_SKB_SUNRPC_DATA,
+       KM_SKB_DATA_SOFTIRQ,
+       KM_USER0,
+       KM_USER1,
+       KM_BIO_SRC_IRQ,
+       KM_BIO_DST_IRQ,
+       KM_PTE0,
+       KM_PTE1,
+       KM_IRQ0,
+       KM_IRQ1,
+       KM_SOFTIRQ0,
+       KM_SOFTIRQ1,
+       KM_TYPE_NR,
+};
+
+#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */
diff --git a/arch/microblaze/include/asm/linkage.h b/arch/microblaze/include/asm/linkage.h
new file mode 100644 (file)
index 0000000..3a8e36d
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_LINKAGE_H
+#define _ASM_MICROBLAZE_LINKAGE_H
+
+#define __ALIGN                .align 4
+#define __ALIGN_STR    ".align 4"
+
+#endif /* _ASM_MICROBLAZE_LINKAGE_H */
diff --git a/arch/microblaze/include/asm/lmb.h b/arch/microblaze/include/asm/lmb.h
new file mode 100644 (file)
index 0000000..a0a0a92
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
+ *
+ * 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 _ASM_MICROBLAZE_LMB_H
+#define _ASM_MICROBLAZE_LMB_H
+
+/* LMB limit is OFF */
+#define LMB_REAL_LIMIT 0xFFFFFFFF
+
+#endif /* _ASM_MICROBLAZE_LMB_H */
+
+
diff --git a/arch/microblaze/include/asm/local.h b/arch/microblaze/include/asm/local.h
new file mode 100644 (file)
index 0000000..c11c530
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/local.h>
diff --git a/arch/microblaze/include/asm/mman.h b/arch/microblaze/include/asm/mman.h
new file mode 100644 (file)
index 0000000..4914b13
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_MMAN_H
+#define _ASM_MICROBLAZE_MMAN_H
+
+#include <asm-generic/mman.h>
+
+#define MAP_GROWSDOWN  0x0100 /* stack-like segment */
+#define MAP_DENYWRITE  0x0800 /* ETXTBSY */
+#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
+#define MAP_LOCKED     0x2000 /* pages are locked */
+#define MAP_NORESERVE  0x4000 /* don't check for reservations */
+#define MAP_POPULATE   0x8000 /* populate (prefault) pagetables */
+#define MAP_NONBLOCK   0x10000 /* do not block on IO */
+
+#define MCL_CURRENT    1 /* lock all current mappings */
+#define MCL_FUTURE     2 /* lock all future mappings */
+
+#endif /* _ASM_MICROBLAZE_MMAN_H */
diff --git a/arch/microblaze/include/asm/mmu.h b/arch/microblaze/include/asm/mmu.h
new file mode 100644 (file)
index 0000000..0e0431d
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_MMU_H
+#define _ASM_MICROBLAZE_MMU_H
+
+#ifndef __ASSEMBLY__
+typedef struct {
+       struct vm_list_struct   *vmlist;
+       unsigned long           end_brk;
+} mm_context_t;
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_MICROBLAZE_MMU_H */
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
new file mode 100644 (file)
index 0000000..150ca01
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_MMU_CONTEXT_H
+#define _ASM_MICROBLAZE_MMU_CONTEXT_H
+
+# define init_new_context(tsk, mm)             ({ 0; })
+
+# define enter_lazy_tlb(mm, tsk)               do {} while (0)
+# define change_mm_context(old, ctx, _pml4)    do {} while (0)
+# define destroy_context(mm)                   do {} while (0)
+# define deactivate_mm(tsk, mm)                        do {} while (0)
+# define switch_mm(prev, next, tsk)            do {} while (0)
+# define activate_mm(prev, next)               do {} while (0)
+
+#endif /* _ASM_MICROBLAZE_MMU_CONTEXT_H */
diff --git a/arch/microblaze/include/asm/module.h b/arch/microblaze/include/asm/module.h
new file mode 100644 (file)
index 0000000..914565a
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_MODULE_H
+#define _ASM_MICROBLAZE_MODULE_H
+
+/* Microblaze Relocations */
+#define R_MICROBLAZE_NONE 0
+#define R_MICROBLAZE_32 1
+#define R_MICROBLAZE_32_PCREL 2
+#define R_MICROBLAZE_64_PCREL 3
+#define R_MICROBLAZE_32_PCREL_LO 4
+#define R_MICROBLAZE_64 5
+#define R_MICROBLAZE_32_LO 6
+#define R_MICROBLAZE_SRO32 7
+#define R_MICROBLAZE_SRW32 8
+#define R_MICROBLAZE_64_NONE 9
+#define R_MICROBLAZE_32_SYM_OP_SYM 10
+/* Keep this the last entry. */
+#define R_MICROBLAZE_NUM 11
+
+struct mod_arch_specific {
+       int foo;
+};
+
+#define Elf_Shdr       Elf32_Shdr
+#define Elf_Sym                Elf32_Sym
+#define Elf_Ehdr       Elf32_Ehdr
+
+typedef struct { volatile int counter; } module_t;
+
+#endif /* _ASM_MICROBLAZE_MODULE_H */
diff --git a/arch/microblaze/include/asm/msgbuf.h b/arch/microblaze/include/asm/msgbuf.h
new file mode 100644 (file)
index 0000000..09dd970
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef _ASM_MICROBLAZE_MSGBUF_H
+#define _ASM_MICROBLAZE_MSGBUF_H
+
+/*
+ * The msqid64_ds structure for microblaze architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct msqid64_ds {
+       struct ipc64_perm msg_perm;
+       __kernel_time_t msg_stime; /* last msgsnd time */
+       unsigned long __unused1;
+       __kernel_time_t msg_rtime; /* last msgrcv time */
+       unsigned long __unused2;
+       __kernel_time_t msg_ctime; /* last change time */
+       unsigned long __unused3;
+       unsigned long msg_cbytes; /* current number of bytes on queue */
+       unsigned long msg_qnum; /* number of messages in queue */
+       unsigned long msg_qbytes; /* max number of bytes on queue */
+       __kernel_pid_t msg_lspid; /* pid of last msgsnd */
+       __kernel_pid_t msg_lrpid; /* last receive pid */
+       unsigned long __unused4;
+       unsigned long __unused5;
+};
+
+#endif /* _ASM_MICROBLAZE_MSGBUF_H */
diff --git a/arch/microblaze/include/asm/mutex.h b/arch/microblaze/include/asm/mutex.h
new file mode 100644 (file)
index 0000000..ff6101a
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/mutex-dec.h>
diff --git a/arch/microblaze/include/asm/namei.h b/arch/microblaze/include/asm/namei.h
new file mode 100644 (file)
index 0000000..61d60b8
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_NAMEI_H
+#define _ASM_MICROBLAZE_NAMEI_H
+
+#ifdef __KERNEL__
+
+/* This dummy routine maybe changed to something useful
+ * for /usr/gnemul/ emulation stuff.
+ * Look at asm-sparc/namei.h for details.
+ */
+#define __emul_prefix() NULL
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_MICROBLAZE_NAMEI_H */
diff --git a/arch/microblaze/include/asm/of_device.h b/arch/microblaze/include/asm/of_device.h
new file mode 100644 (file)
index 0000000..ba917cf
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
+ *
+ * based on PowerPC of_device.h
+ *
+ * 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 _ASM_MICROBLAZE_OF_DEVICE_H
+#define _ASM_MICROBLAZE_OF_DEVICE_H
+#ifdef __KERNEL__
+
+#include <linux/device.h>
+#include <linux/of.h>
+
+/*
+ * The of_device is a kind of "base class" that is a superset of
+ * struct device for use by devices attached to an OF node and
+ * probed using OF properties.
+ */
+struct of_device {
+       struct device_node      *node; /* to be obsoleted */
+       u64                     dma_mask; /* DMA mask */
+       struct device           dev; /* Generic device interface */
+};
+
+extern ssize_t of_device_get_modalias(struct of_device *ofdev,
+                                       char *str, ssize_t len);
+
+extern struct of_device *of_device_alloc(struct device_node *np,
+                                        const char *bus_id,
+                                        struct device *parent);
+
+extern int of_device_uevent(struct device *dev,
+                           struct kobj_uevent_env *env);
+
+extern void of_device_make_bus_id(struct of_device *dev);
+
+/* This is just here during the transition */
+#include <linux/of_device.h>
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_MICROBLAZE_OF_DEVICE_H */
diff --git a/arch/microblaze/include/asm/of_platform.h b/arch/microblaze/include/asm/of_platform.h
new file mode 100644 (file)
index 0000000..187c0ee
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
+ *                     <benh@kernel.crashing.org>
+ *
+ * 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.
+ */
+
+#ifndef _ASM_MICROBLAZE_OF_PLATFORM_H
+#define _ASM_MICROBLAZE_OF_PLATFORM_H
+
+/* This is just here during the transition */
+#include <linux/of_platform.h>
+
+/*
+ * The list of OF IDs below is used for matching bus types in the
+ * system whose devices are to be exposed as of_platform_devices.
+ *
+ * This is the default list valid for most platforms. This file provides
+ * functions who can take an explicit list if necessary though
+ *
+ * The search is always performed recursively looking for children of
+ * the provided device_node and recursively if such a children matches
+ * a bus type in the list
+ */
+
+static const struct of_device_id of_default_bus_ids[] = {
+       { .type = "soc", },
+       { .compatible = "soc", },
+       { .type = "plb5", },
+       { .type = "plb4", },
+       { .type = "opb", },
+       { .type = "simple", },
+       {},
+};
+
+/* Platform drivers register/unregister */
+static inline int of_register_platform_driver(struct of_platform_driver *drv)
+{
+       return of_register_driver(drv, &of_platform_bus_type);
+}
+static inline void of_unregister_platform_driver(struct of_platform_driver *drv)
+{
+       of_unregister_driver(drv);
+}
+
+/* Platform devices and busses creation */
+extern struct of_device *of_platform_device_create(struct device_node *np,
+                                               const char *bus_id,
+                                               struct device *parent);
+/* pseudo "matches" value to not do deep probe */
+#define OF_NO_DEEP_PROBE ((struct of_device_id *)-1)
+
+extern int of_platform_bus_probe(struct device_node *root,
+                               const struct of_device_id *matches,
+                               struct device *parent);
+
+extern struct of_device *of_find_device_by_phandle(phandle ph);
+
+extern void of_instantiate_rtc(void);
+
+#endif /* _ASM_MICROBLAZE_OF_PLATFORM_H */
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h
new file mode 100644 (file)
index 0000000..7238dcf
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2008 Michal Simek
+ * Copyright (C) 2008 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ * Changes for MMU support:
+ *    Copyright (C) 2007 Xilinx, Inc.  All rights reserved.
+ *
+ * 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 _ASM_MICROBLAZE_PAGE_H
+#define _ASM_MICROBLAZE_PAGE_H
+
+#include <linux/pfn.h>
+#include <asm/setup.h>
+
+/* PAGE_SHIFT determines the page size */
+#define PAGE_SHIFT     (12)
+#define PAGE_SIZE      (1UL << PAGE_SHIFT)
+#define PAGE_MASK      (~(PAGE_SIZE-1))
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+
+#define PAGE_UP(addr)  (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
+#define PAGE_DOWN(addr)        ((addr)&(~((PAGE_SIZE)-1)))
+
+/* align addr on a size boundary - adjust address up/down if needed */
+#define _ALIGN_UP(addr, size)  (((addr)+((size)-1))&(~((size)-1)))
+#define _ALIGN_DOWN(addr, size)        ((addr)&(~((size)-1)))
+
+/* align addr on a size boundary - adjust address up if needed */
+#define _ALIGN(addr, size)     _ALIGN_UP(addr, size)
+
+/*
+ * PAGE_OFFSET -- the first address of the first page of memory. When not
+ * using MMU this corresponds to the first free page in physical memory (aligned
+ * on a page boundary).
+ */
+extern unsigned int __page_offset;
+#define PAGE_OFFSET __page_offset
+
+#define copy_page(to, from)                    memcpy((to), (from), PAGE_SIZE)
+#define get_user_page(vaddr)                   __get_free_page(GFP_KERNEL)
+#define free_user_page(page, addr)             free_page(addr)
+
+#define clear_page(pgaddr)                     memset((pgaddr), 0, PAGE_SIZE)
+
+
+#define clear_user_page(pgaddr, vaddr, page)   memset((pgaddr), 0, PAGE_SIZE)
+#define copy_user_page(vto, vfrom, vaddr, topg) \
+                       memcpy((vto), (vfrom), PAGE_SIZE)
+
+/*
+ * These are used to make use of C type-checking..
+ */
+typedef struct page *pgtable_t;
+typedef struct { unsigned long pte; }          pte_t;
+typedef struct { unsigned long pgprot; }       pgprot_t;
+typedef struct { unsigned long ste[64]; }      pmd_t;
+typedef struct { pmd_t         pue[1]; }       pud_t;
+typedef struct { pud_t         pge[1]; }       pgd_t;
+
+
+#define pte_val(x)     ((x).pte)
+#define pgprot_val(x)  ((x).pgprot)
+#define pmd_val(x)     ((x).ste[0])
+#define pud_val(x)     ((x).pue[0])
+#define pgd_val(x)     ((x).pge[0])
+
+#define __pte(x)       ((pte_t) { (x) })
+#define __pmd(x)       ((pmd_t) { (x) })
+#define __pgd(x)       ((pgd_t) { (x) })
+#define __pgprot(x)    ((pgprot_t) { (x) })
+
+/**
+ * Conversions for virtual address, physical address, pfn, and struct
+ * page are defined in the following files.
+ *
+ * virt -+
+ *      | asm-microblaze/page.h
+ * phys -+
+ *      | linux/pfn.h
+ *  pfn -+
+ *      | asm-generic/memory_model.h
+ * page -+
+ *
+ */
+
+extern unsigned long max_low_pfn;
+extern unsigned long min_low_pfn;
+extern unsigned long max_pfn;
+
+#define __pa(vaddr)            ((unsigned long) (vaddr))
+#define __va(paddr)            ((void *) (paddr))
+
+#define phys_to_pfn(phys)      (PFN_DOWN(phys))
+#define pfn_to_phys(pfn)       (PFN_PHYS(pfn))
+
+#define virt_to_pfn(vaddr)     (phys_to_pfn((__pa(vaddr))))
+#define pfn_to_virt(pfn)       __va(pfn_to_phys((pfn)))
+
+#define virt_to_page(vaddr)    (pfn_to_page(virt_to_pfn(vaddr)))
+#define page_to_virt(page)     (pfn_to_virt(page_to_pfn(page)))
+
+#define page_to_phys(page)     (pfn_to_phys(page_to_pfn(page)))
+#define page_to_bus(page)      (page_to_phys(page))
+#define phys_to_page(paddr)    (pfn_to_page(phys_to_pfn(paddr)))
+
+extern unsigned int memory_start;
+extern unsigned int memory_end;
+extern unsigned int memory_size;
+
+#define pfn_valid(pfn)         ((pfn) >= min_low_pfn && (pfn) < max_mapnr)
+
+#define ARCH_PFN_OFFSET                (PAGE_OFFSET >> PAGE_SHIFT)
+
+#else
+#define tophys(rd, rs) (addik rd, rs, 0)
+#define tovirt(rd, rs) (addik rd, rs, 0)
+#endif /* __ASSEMBLY__ */
+
+#define virt_addr_valid(vaddr) (pfn_valid(virt_to_pfn(vaddr)))
+
+/* Convert between virtual and physical address for MMU.  */
+/* Handle MicroBlaze processor with virtual memory.  */
+#define __virt_to_phys(addr)   addr
+#define __phys_to_virt(addr)   addr
+
+#define TOPHYS(addr)  __virt_to_phys(addr)
+
+#endif /* __KERNEL__ */
+
+#include <asm-generic/memory_model.h>
+#include <asm-generic/page.h>
+
+#endif /* _ASM_MICROBLAZE_PAGE_H */
diff --git a/arch/microblaze/include/asm/param.h b/arch/microblaze/include/asm/param.h
new file mode 100644 (file)
index 0000000..8c538a4
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_PARAM_H
+#define _ASM_MICROBLAZE_PARAM_H
+
+#ifdef __KERNEL__
+#define HZ             CONFIG_HZ       /* internal kernel timer frequency */
+#define USER_HZ                100             /* for user interfaces in "ticks" */
+#define CLOCKS_PER_SEC (USER_HZ)       /* frequency at which times() counts */
+#endif /* __KERNEL__ */
+
+#ifndef HZ
+#define HZ 100
+#endif
+
+#define EXEC_PAGESIZE  4096
+
+#ifndef NOGROUP
+#define NOGROUP                (-1)
+#endif
+
+#define MAXHOSTNAMELEN 64      /* max length of hostname */
+
+#endif /* _ASM_MICROBLAZE_PARAM_H */
diff --git a/arch/microblaze/include/asm/pci-bridge.h b/arch/microblaze/include/asm/pci-bridge.h
new file mode 100644 (file)
index 0000000..7ad28f6
--- /dev/null
@@ -0,0 +1 @@
+#include <linux/pci.h>
diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
new file mode 100644 (file)
index 0000000..ca03794
--- /dev/null
@@ -0,0 +1 @@
+#include <linux/io.h>
diff --git a/arch/microblaze/include/asm/percpu.h b/arch/microblaze/include/asm/percpu.h
new file mode 100644 (file)
index 0000000..06a959d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/percpu.h>
diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h
new file mode 100644 (file)
index 0000000..2a4b354
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_PGALLOC_H
+#define _ASM_MICROBLAZE_PGALLOC_H
+
+#define check_pgt_cache()      do {} while (0)
+
+#endif /* _ASM_MICROBLAZE_PGALLOC_H */
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h
new file mode 100644 (file)
index 0000000..4df31e4
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_PGTABLE_H
+#define _ASM_MICROBLAZE_PGTABLE_H
+
+#include <asm/setup.h>
+
+#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)                \
+               remap_pfn_range(vma, vaddr, pfn, size, prot)
+
+#define pgd_present(pgd)       (1) /* pages are always present on non MMU */
+#define pgd_none(pgd)          (0)
+#define pgd_bad(pgd)           (0)
+#define pgd_clear(pgdp)
+#define kern_addr_valid(addr)  (1)
+#define        pmd_offset(a, b)        ((void *) 0)
+
+#define PAGE_NONE              __pgprot(0) /* these mean nothing to non MMU */
+#define PAGE_SHARED            __pgprot(0) /* these mean nothing to non MMU */
+#define PAGE_COPY              __pgprot(0) /* these mean nothing to non MMU */
+#define PAGE_READONLY          __pgprot(0) /* these mean nothing to non MMU */
+#define PAGE_KERNEL            __pgprot(0) /* these mean nothing to non MMU */
+
+#define __swp_type(x)          (0)
+#define __swp_offset(x)                (0)
+#define __swp_entry(typ, off)  ((swp_entry_t) { ((typ) | ((off) << 7)) })
+#define __pte_to_swp_entry(pte)        ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
+
+#ifndef __ASSEMBLY__
+static inline int pte_file(pte_t pte) { return 0; }
+#endif /* __ASSEMBLY__ */
+
+#define ZERO_PAGE(vaddr)       ({ BUG(); NULL; })
+
+#define swapper_pg_dir ((pgd_t *) NULL)
+
+#define pgtable_cache_init()   do {} while (0)
+
+#define arch_enter_lazy_cpu_mode()     do {} while (0)
+
+#ifndef __ASSEMBLY__
+#include <asm-generic/pgtable.h>
+
+void setup_memory(void);
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_MICROBLAZE_PGTABLE_H */
diff --git a/arch/microblaze/include/asm/poll.h b/arch/microblaze/include/asm/poll.h
new file mode 100644 (file)
index 0000000..c98509d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/poll.h>
diff --git a/arch/microblaze/include/asm/posix_types.h b/arch/microblaze/include/asm/posix_types.h
new file mode 100644 (file)
index 0000000..b4df41c
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_POSIX_TYPES_H
+#define _ASM_MICROBLAZE_POSIX_TYPES_H
+
+/*
+ * This file is generally used by user-level software, so you need to
+ * be a little careful about namespace pollution etc. Also, we cannot
+ * assume GCC is being used.
+ */
+
+typedef unsigned long  __kernel_ino_t;
+typedef unsigned int   __kernel_mode_t;
+typedef unsigned int   __kernel_nlink_t;
+typedef long           __kernel_off_t;
+typedef int            __kernel_pid_t;
+typedef unsigned int   __kernel_ipc_pid_t;
+typedef unsigned int   __kernel_uid_t;
+typedef unsigned int   __kernel_gid_t;
+typedef unsigned long  __kernel_size_t;
+typedef long           __kernel_ssize_t;
+typedef int            __kernel_ptrdiff_t;
+typedef long           __kernel_time_t;
+typedef long           __kernel_suseconds_t;
+typedef long           __kernel_clock_t;
+typedef int            __kernel_timer_t;
+typedef int            __kernel_clockid_t;
+typedef int            __kernel_daddr_t;
+typedef char           *__kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int   __kernel_uid32_t;
+typedef unsigned int   __kernel_gid32_t;
+
+typedef unsigned int   __kernel_old_uid_t;
+typedef unsigned int   __kernel_old_gid_t;
+typedef unsigned int   __kernel_old_dev_t;
+
+#ifdef __GNUC__
+typedef long long      __kernel_loff_t;
+#endif
+
+typedef struct {
+#if defined(__KERNEL__) || defined(__USE_ALL)
+       int     val[2];
+#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
+       int     __val[2];
+#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
+} __kernel_fsid_t;
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+#undef __FD_SET
+#define        __FD_SET(d, set)        ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
+
+#undef __FD_CLR
+#define        __FD_CLR(d, set)        ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
+
+#undef __FD_ISSET
+#define        __FD_ISSET(d, set)      (!!((set)->fds_bits[__FDELT(d)] & __FDMASK(d)))
+
+#undef __FD_ZERO
+#define __FD_ZERO(fdsetp) (memset(fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
+
+#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
+
+#endif /* _ASM_MICROBLAZE_POSIX_TYPES_H */
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
new file mode 100644 (file)
index 0000000..d8e1543
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 Michal Simek
+ * Copyright (C) 2008 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_PROCESSOR_H
+#define _ASM_MICROBLAZE_PROCESSOR_H
+
+#include <asm/ptrace.h>
+#include <asm/setup.h>
+#include <asm/registers.h>
+#include <asm/segment.h>
+
+# ifndef __ASSEMBLY__
+/* from kernel/cpu/mb.c */
+extern const struct seq_operations cpuinfo_op;
+
+# define cpu_relax()           barrier()
+# define cpu_sleep()           do {} while (0)
+# define prepare_to_copy(tsk)  do {} while (0)
+
+# endif /* __ASSEMBLY__ */
+
+/*
+ * User space process size: memory size
+ *
+ * TASK_SIZE on MMU cpu is usually 1GB. However, on no-MMU arch, both
+ * user processes and the kernel is on the same memory region. They
+ * both share the memory space and that is limited by the amount of
+ * physical memory. thus, we set TASK_SIZE == amount of total memory.
+ */
+# define TASK_SIZE     (0x81000000 - 0x80000000)
+
+/*
+ * Default implementation of macro that returns current
+ * instruction pointer ("program counter").
+ */
+# define current_text_addr() ({ __label__ _l; _l: &&_l; })
+
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's. We won't be using it
+ */
+# define TASK_UNMAPPED_BASE    0
+
+/* definition in include/linux/sched.h */
+struct task_struct;
+
+/* thread_struct is gone. use thread_info instead. */
+struct thread_struct { };
+# define INIT_THREAD   { }
+
+/* Do necessary setup to start up a newly executed thread. */
+static inline void start_thread(struct pt_regs *regs,
+                               unsigned long pc,
+                               unsigned long usp)
+{
+       regs->pc = pc;
+       regs->r1 = usp;
+       regs->kernel_mode = 0;
+}
+
+/* Free all resources held by a thread. */
+static inline void release_thread(struct task_struct *dead_task)
+{
+}
+
+/* Free all resources held by a thread. */
+static inline void exit_thread(void)
+{
+}
+
+extern unsigned long thread_saved_pc(struct task_struct *t);
+
+extern unsigned long get_wchan(struct task_struct *p);
+
+/*
+ * create a kernel thread without removing it from tasklists
+ */
+extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
+
+# define task_pt_regs(tsk) \
+               (((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
+
+# define KSTK_EIP(tsk) (0)
+# define KSTK_ESP(tsk) (0)
+
+#endif /* _ASM_MICROBLAZE_PROCESSOR_H */
diff --git a/arch/microblaze/include/asm/prom.h b/arch/microblaze/include/asm/prom.h
new file mode 100644 (file)
index 0000000..20f7b3a
--- /dev/null
@@ -0,0 +1,313 @@
+/*
+ * Definitions for talking to the Open Firmware PROM on
+ * Power Macintosh computers.
+ *
+ * Copyright (C) 1996-2005 Paul Mackerras.
+ *
+ * Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp.
+ *
+ * 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.
+ */
+
+#ifndef _ASM_MICROBLAZE_PROM_H
+#define _ASM_MICROBLAZE_PROM_H
+#ifdef __KERNEL__
+
+#include <linux/types.h>
+#include <linux/proc_fs.h>
+#include <linux/platform_device.h>
+#include <asm/irq.h>
+#include <asm/atomic.h>
+
+#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT        1
+#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT        1
+
+#define of_compat_cmp(s1, s2, l)       strncasecmp((s1), (s2), (l))
+#define of_prop_cmp(s1, s2)            strcmp((s1), (s2))
+#define of_node_cmp(s1, s2)            strcasecmp((s1), (s2))
+
+/* Definitions used by the flattened device tree */
+#define OF_DT_HEADER           0xd00dfeed /* marker */
+#define OF_DT_BEGIN_NODE       0x1 /* Start of node, full name */
+#define OF_DT_END_NODE         0x2 /* End node */
+#define OF_DT_PROP             0x3 /* Property: name off, size, content */
+#define OF_DT_NOP              0x4 /* nop */
+#define OF_DT_END              0x9
+
+#define OF_DT_VERSION          0x10
+
+/*
+ * This is what gets passed to the kernel by prom_init or kexec
+ *
+ * The dt struct contains the device tree structure, full pathes and
+ * property contents. The dt strings contain a separate block with just
+ * the strings for the property names, and is fully page aligned and
+ * self contained in a page, so that it can be kept around by the kernel,
+ * each property name appears only once in this page (cheap compression)
+ *
+ * the mem_rsvmap contains a map of reserved ranges of physical memory,
+ * passing it here instead of in the device-tree itself greatly simplifies
+ * the job of everybody. It's just a list of u64 pairs (base/size) that
+ * ends when size is 0
+ */
+struct boot_param_header {
+       u32     magic; /* magic word OF_DT_HEADER */
+       u32     totalsize; /* total size of DT block */
+       u32     off_dt_struct; /* offset to structure */
+       u32     off_dt_strings; /* offset to strings */
+       u32     off_mem_rsvmap; /* offset to memory reserve map */
+       u32     version; /* format version */
+       u32     last_comp_version; /* last compatible version */
+       /* version 2 fields below */
+       u32     boot_cpuid_phys; /* Physical CPU id we're booting on */
+       /* version 3 fields below */
+       u32     dt_strings_size; /* size of the DT strings block */
+       /* version 17 fields below */
+       u32     dt_struct_size; /* size of the DT structure block */
+};
+
+typedef u32 phandle;
+typedef u32 ihandle;
+
+struct property {
+       char    *name;
+       int     length;
+       void    *value;
+       struct property *next;
+};
+
+struct device_node {
+       const char *name;
+       const char *type;
+       phandle node;
+       phandle linux_phandle;
+       char    *full_name;
+
+       struct  property *properties;
+       struct  property *deadprops; /* removed properties */
+       struct  device_node *parent;
+       struct  device_node *child;
+       struct  device_node *sibling;
+       struct  device_node *next; /* next device of same type */
+       struct  device_node *allnext; /* next in list of all nodes */
+       struct  proc_dir_entry *pde; /* this node's proc directory */
+       struct  kref kref;
+       unsigned long _flags;
+       void    *data;
+};
+
+extern struct device_node *of_chosen;
+
+static inline int of_node_check_flag(struct device_node *n, unsigned long flag)
+{
+       return test_bit(flag, &n->_flags);
+}
+
+static inline void of_node_set_flag(struct device_node *n, unsigned long flag)
+{
+       set_bit(flag, &n->_flags);
+}
+
+#define HAVE_ARCH_DEVTREE_FIXUPS
+
+static inline void set_node_proc_entry(struct device_node *dn,
+                                       struct proc_dir_entry *de)
+{
+       dn->pde = de;
+}
+
+extern struct device_node *allnodes;   /* temporary while merging */
+extern rwlock_t devtree_lock;  /* temporary while merging */
+
+extern struct device_node *of_find_all_nodes(struct device_node *prev);
+extern struct device_node *of_node_get(struct device_node *node);
+extern void of_node_put(struct device_node *node);
+
+/* For scanning the flat device-tree at boot time */
+extern int __init of_scan_flat_dt(int (*it)(unsigned long node,
+                                       const char *uname, int depth,
+                                       void *data),
+                               void *data);
+extern void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
+                                       unsigned long *size);
+extern int __init
+               of_flat_dt_is_compatible(unsigned long node, const char *name);
+extern unsigned long __init of_get_flat_dt_root(void);
+
+/* For updating the device tree at runtime */
+extern void of_attach_node(struct device_node *);
+extern void of_detach_node(struct device_node *);
+
+/* Other Prototypes */
+extern void finish_device_tree(void);
+extern void unflatten_device_tree(void);
+extern int early_uartlite_console(void);
+extern void early_init_devtree(void *);
+extern int machine_is_compatible(const char *compat);
+extern void print_properties(struct device_node *node);
+extern int prom_n_intr_cells(struct device_node *np);
+extern void prom_get_irq_senses(unsigned char *senses, int off, int max);
+extern int prom_add_property(struct device_node *np, struct property *prop);
+extern int prom_remove_property(struct device_node *np, struct property *prop);
+extern int prom_update_property(struct device_node *np,
+                               struct property *newprop,
+                               struct property *oldprop);
+
+extern struct resource *request_OF_resource(struct device_node *node,
+                               int index, const char *name_postfix);
+extern int release_OF_resource(struct device_node *node, int index);
+
+/*
+ * OF address retreival & translation
+ */
+
+/* Helper to read a big number; size is in cells (not bytes) */
+static inline u64 of_read_number(const u32 *cell, int size)
+{
+       u64 r = 0;
+       while (size--)
+               r = (r << 32) | *(cell++);
+       return r;
+}
+
+/* Like of_read_number, but we want an unsigned long result */
+#define of_read_ulong(cell, size)      of_read_number(cell, size)
+
+/* Translate an OF address block into a CPU physical address
+ */
+extern u64 of_translate_address(struct device_node *np, const u32 *addr);
+
+/* Extract an address from a device, returns the region size and
+ * the address space flags too. The PCI version uses a BAR number
+ * instead of an absolute index
+ */
+extern const u32 *of_get_address(struct device_node *dev, int index,
+                       u64 *size, unsigned int *flags);
+extern const u32 *of_get_pci_address(struct device_node *dev, int bar_no,
+                       u64 *size, unsigned int *flags);
+
+/* Get an address as a resource. Note that if your address is
+ * a PIO address, the conversion will fail if the physical address
+ * can't be internally converted to an IO token with
+ * pci_address_to_pio(), that is because it's either called to early
+ * or it can't be matched to any host bridge IO space
+ */
+extern int of_address_to_resource(struct device_node *dev, int index,
+                               struct resource *r);
+extern int of_pci_address_to_resource(struct device_node *dev, int bar,
+                               struct resource *r);
+
+/* Parse the ibm,dma-window property of an OF node into the busno, phys and
+ * size parameters.
+ */
+void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
+               unsigned long *busno, unsigned long *phys, unsigned long *size);
+
+extern void kdump_move_device_tree(void);
+
+/* CPU OF node matching */
+struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
+
+/* Get the MAC address */
+extern const void *of_get_mac_address(struct device_node *np);
+
+/*
+ * OF interrupt mapping
+ */
+
+/* This structure is returned when an interrupt is mapped. The controller
+ * field needs to be put() after use
+ */
+
+#define OF_MAX_IRQ_SPEC                4 /* We handle specifiers of at most 4 cells */
+
+struct of_irq {
+       struct device_node *controller; /* Interrupt controller node */
+       u32 size; /* Specifier size */
+       u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */
+};
+
+/**
+ * of_irq_map_init - Initialize the irq remapper
+ * @flags:     flags defining workarounds to enable
+ *
+ * Some machines have bugs in the device-tree which require certain workarounds
+ * to be applied. Call this before any interrupt mapping attempts to enable
+ * those workarounds.
+ */
+#define OF_IMAP_OLDWORLD_MAC   0x00000001
+#define OF_IMAP_NO_PHANDLE     0x00000002
+
+extern void of_irq_map_init(unsigned int flags);
+
+/**
+ * of_irq_map_raw - Low level interrupt tree parsing
+ * @parent:    the device interrupt parent
+ * @intspec:   interrupt specifier ("interrupts" property of the device)
+ * @ointsize:  size of the passed in interrupt specifier
+ * @addr:      address specifier (start of "reg" property of the device)
+ * @out_irq:   structure of_irq filled by this function
+ *
+ * Returns 0 on success and a negative number on error
+ *
+ * This function is a low-level interrupt tree walking function. It
+ * can be used to do a partial walk with synthetized reg and interrupts
+ * properties, for example when resolving PCI interrupts when no device
+ * node exist for the parent.
+ *
+ */
+
+extern int of_irq_map_raw(struct device_node *parent, const u32 *intspec,
+                       u32 ointsize, const u32 *addr,
+                       struct of_irq *out_irq);
+
+/**
+ * of_irq_map_one - Resolve an interrupt for a device
+ * @device:    the device whose interrupt is to be resolved
+ * @index:     index of the interrupt to resolve
+ * @out_irq:   structure of_irq filled by this function
+ *
+ * This function resolves an interrupt, walking the tree, for a given
+ * device-tree node. It's the high level pendant to of_irq_map_raw().
+ * It also implements the workarounds for OldWolrd Macs.
+ */
+extern int of_irq_map_one(struct device_node *device, int index,
+                       struct of_irq *out_irq);
+
+/**
+ * of_irq_map_pci - Resolve the interrupt for a PCI device
+ * @pdev:      the device whose interrupt is to be resolved
+ * @out_irq:   structure of_irq filled by this function
+ *
+ * This function resolves the PCI interrupt for a given PCI device. If a
+ * device-node exists for a given pci_dev, it will use normal OF tree
+ * walking. If not, it will implement standard swizzling and walk up the
+ * PCI tree until an device-node is found, at which point it will finish
+ * resolving using the OF tree walking.
+ */
+struct pci_dev;
+extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
+
+extern int of_irq_to_resource(struct device_node *dev, int index,
+                       struct resource *r);
+
+/**
+ * of_iomap - Maps the memory mapped IO for a given device_node
+ * @device:    the device whose io range will be mapped
+ * @index:     index of the io range
+ *
+ * Returns a pointer to the mapped memory
+ */
+extern void __iomem *of_iomap(struct device_node *device, int index);
+
+/*
+ * NB: This is here while we transition from using asm/prom.h
+ * to linux/of.h
+ */
+#include <linux/of.h>
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_MICROBLAZE_PROM_H */
diff --git a/arch/microblaze/include/asm/ptrace.h b/arch/microblaze/include/asm/ptrace.h
new file mode 100644 (file)
index 0000000..f1f0348
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_PTRACE_H
+#define _ASM_MICROBLAZE_PTRACE_H
+
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+
+typedef unsigned long microblaze_reg_t;
+
+struct pt_regs {
+       microblaze_reg_t r0;
+       microblaze_reg_t r1;
+       microblaze_reg_t r2;
+       microblaze_reg_t r3;
+       microblaze_reg_t r4;
+       microblaze_reg_t r5;
+       microblaze_reg_t r6;
+       microblaze_reg_t r7;
+       microblaze_reg_t r8;
+       microblaze_reg_t r9;
+       microblaze_reg_t r10;
+       microblaze_reg_t r11;
+       microblaze_reg_t r12;
+       microblaze_reg_t r13;
+       microblaze_reg_t r14;
+       microblaze_reg_t r15;
+       microblaze_reg_t r16;
+       microblaze_reg_t r17;
+       microblaze_reg_t r18;
+       microblaze_reg_t r19;
+       microblaze_reg_t r20;
+       microblaze_reg_t r21;
+       microblaze_reg_t r22;
+       microblaze_reg_t r23;
+       microblaze_reg_t r24;
+       microblaze_reg_t r25;
+       microblaze_reg_t r26;
+       microblaze_reg_t r27;
+       microblaze_reg_t r28;
+       microblaze_reg_t r29;
+       microblaze_reg_t r30;
+       microblaze_reg_t r31;
+       microblaze_reg_t pc;
+       microblaze_reg_t msr;
+       microblaze_reg_t ear;
+       microblaze_reg_t esr;
+       microblaze_reg_t fsr;
+       int kernel_mode;
+};
+
+#define kernel_mode(regs)              ((regs)->kernel_mode)
+#define user_mode(regs)                        (!kernel_mode(regs))
+
+#define instruction_pointer(regs)      ((regs)->pc)
+#define profile_pc(regs)               instruction_pointer(regs)
+
+void show_regs(struct pt_regs *);
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_MICROBLAZE_PTRACE_H */
diff --git a/arch/microblaze/include/asm/pvr.h b/arch/microblaze/include/asm/pvr.h
new file mode 100644 (file)
index 0000000..66f1b30
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * Support for the MicroBlaze PVR (Processor Version Register)
+ *
+ * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ * Copyright (C) 2007 - 2009 PetaLogix
+ *
+ * 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 _ASM_MICROBLAZE_PVR_H
+#define _ASM_MICROBLAZE_PVR_H
+
+#define PVR_MSR_BIT 0x400
+
+struct pvr_s {
+       unsigned pvr[16];
+};
+
+/* The following taken from Xilinx's standalone BSP pvr.h */
+
+/* Basic PVR mask */
+#define PVR0_PVR_FULL_MASK             0x80000000
+#define PVR0_USE_BARREL_MASK           0x40000000
+#define PVR0_USE_DIV_MASK              0x20000000
+#define PVR0_USE_HW_MUL_MASK           0x10000000
+#define PVR0_USE_FPU_MASK              0x08000000
+#define PVR0_USE_EXC_MASK              0x04000000
+#define PVR0_USE_ICACHE_MASK           0x02000000
+#define PVR0_USE_DCACHE_MASK           0x01000000
+#define PVR0_USE_MMU                   0x00800000      /* new */
+#define PVR0_VERSION_MASK              0x0000FF00
+#define PVR0_USER1_MASK                        0x000000FF
+
+/* User 2 PVR mask */
+#define PVR1_USER2_MASK                        0xFFFFFFFF
+
+/* Configuration PVR masks */
+#define PVR2_D_OPB_MASK                        0x80000000
+#define PVR2_D_LMB_MASK                        0x40000000
+#define PVR2_I_OPB_MASK                        0x20000000
+#define PVR2_I_LMB_MASK                        0x10000000
+#define PVR2_INTERRUPT_IS_EDGE_MASK    0x08000000
+#define PVR2_EDGE_IS_POSITIVE_MASK     0x04000000
+#define PVR2_D_PLB_MASK                        0x02000000      /* new */
+#define PVR2_I_PLB_MASK                        0x01000000      /* new */
+#define PVR2_INTERCONNECT              0x00800000      /* new */
+#define PVR2_USE_EXTEND_FSL            0x00080000      /* new */
+#define PVR2_USE_FSL_EXC               0x00040000      /* new */
+#define PVR2_USE_MSR_INSTR             0x00020000
+#define PVR2_USE_PCMP_INSTR            0x00010000
+#define PVR2_AREA_OPTIMISED            0x00008000
+#define PVR2_USE_BARREL_MASK           0x00004000
+#define PVR2_USE_DIV_MASK              0x00002000
+#define PVR2_USE_HW_MUL_MASK           0x00001000
+#define PVR2_USE_FPU_MASK              0x00000800
+#define PVR2_USE_MUL64_MASK            0x00000400
+#define PVR2_USE_FPU2_MASK             0x00000200      /* new */
+#define PVR2_USE_IPLBEXC               0x00000100
+#define PVR2_USE_DPLBEXC               0x00000080
+#define PVR2_OPCODE_0x0_ILL_MASK       0x00000040
+#define PVR2_UNALIGNED_EXC_MASK                0x00000020
+#define PVR2_ILL_OPCODE_EXC_MASK       0x00000010
+#define PVR2_IOPB_BUS_EXC_MASK         0x00000008
+#define PVR2_DOPB_BUS_EXC_MASK         0x00000004
+#define PVR2_DIV_ZERO_EXC_MASK         0x00000002
+#define PVR2_FPU_EXC_MASK              0x00000001
+
+/* Debug and exception PVR masks */
+#define PVR3_DEBUG_ENABLED_MASK                0x80000000
+#define PVR3_NUMBER_OF_PC_BRK_MASK     0x1E000000
+#define PVR3_NUMBER_OF_RD_ADDR_BRK_MASK        0x00380000
+#define PVR3_NUMBER_OF_WR_ADDR_BRK_MASK        0x0000E000
+#define PVR3_FSL_LINKS_MASK            0x00000380
+
+/* ICache config PVR masks */
+#define PVR4_USE_ICACHE_MASK           0x80000000
+#define PVR4_ICACHE_ADDR_TAG_BITS_MASK 0x7C000000
+#define PVR4_ICACHE_USE_FSL_MASK       0x02000000
+#define PVR4_ICACHE_ALLOW_WR_MASK      0x01000000
+#define PVR4_ICACHE_LINE_LEN_MASK      0x00E00000
+#define PVR4_ICACHE_BYTE_SIZE_MASK     0x001F0000
+
+/* DCache config PVR masks */
+#define PVR5_USE_DCACHE_MASK           0x80000000
+#define PVR5_DCACHE_ADDR_TAG_BITS_MASK 0x7C000000
+#define PVR5_DCACHE_USE_FSL_MASK       0x02000000
+#define PVR5_DCACHE_ALLOW_WR_MASK      0x01000000
+#define PVR5_DCACHE_LINE_LEN_MASK      0x00E00000
+#define PVR5_DCACHE_BYTE_SIZE_MASK     0x001F0000
+
+/* ICache base address PVR mask */
+#define PVR6_ICACHE_BASEADDR_MASK      0xFFFFFFFF
+
+/* ICache high address PVR mask */
+#define PVR7_ICACHE_HIGHADDR_MASK      0xFFFFFFFF
+
+/* DCache base address PVR mask */
+#define PVR8_DCACHE_BASEADDR_MASK      0xFFFFFFFF
+
+/* DCache high address PVR mask */
+#define PVR9_DCACHE_HIGHADDR_MASK      0xFFFFFFFF
+
+/* Target family PVR mask */
+#define PVR10_TARGET_FAMILY_MASK       0xFF000000
+
+/* MMU descrtiption */
+#define PVR11_USE_MMU                  0xC0000000
+#define PVR11_MMU_ITLB_SIZE            0x38000000
+#define PVR11_MMU_DTLB_SIZE            0x07000000
+#define PVR11_MMU_TLB_ACCESS           0x00C00000
+#define PVR11_MMU_ZONES                        0x003C0000
+/* MSR Reset value PVR mask */
+#define PVR11_MSR_RESET_VALUE_MASK     0x000007FF
+
+
+/* PVR access macros */
+#define PVR_IS_FULL(pvr)               (pvr.pvr[0] & PVR0_PVR_FULL_MASK)
+#define PVR_USE_BARREL(pvr)            (pvr.pvr[0] & PVR0_USE_BARREL_MASK)
+#define PVR_USE_DIV(pvr)               (pvr.pvr[0] & PVR0_USE_DIV_MASK)
+#define PVR_USE_HW_MUL(pvr)            (pvr.pvr[0] & PVR0_USE_HW_MUL_MASK)
+#define PVR_USE_FPU(pvr)               (pvr.pvr[0] & PVR0_USE_FPU_MASK)
+#define PVR_USE_FPU2(pvr)              (pvr.pvr[2] & PVR2_USE_FPU2_MASK)
+#define PVR_USE_ICACHE(pvr)            (pvr.pvr[0] & PVR0_USE_ICACHE_MASK)
+#define PVR_USE_DCACHE(pvr)            (pvr.pvr[0] & PVR0_USE_DCACHE_MASK)
+#define PVR_VERSION(pvr)       ((pvr.pvr[0] & PVR0_VERSION_MASK) >> 8)
+#define PVR_USER1(pvr)                 (pvr.pvr[0] & PVR0_USER1_MASK)
+#define PVR_USER2(pvr)                 (pvr.pvr[1] & PVR1_USER2_MASK)
+
+#define PVR_D_OPB(pvr)                 (pvr.pvr[2] & PVR2_D_OPB_MASK)
+#define PVR_D_LMB(pvr)                 (pvr.pvr[2] & PVR2_D_LMB_MASK)
+#define PVR_I_OPB(pvr)                 (pvr.pvr[2] & PVR2_I_OPB_MASK)
+#define PVR_I_LMB(pvr)                 (pvr.pvr[2] & PVR2_I_LMB_MASK)
+#define PVR_INTERRUPT_IS_EDGE(pvr) \
+                       (pvr.pvr[2] & PVR2_INTERRUPT_IS_EDGE_MASK)
+#define PVR_EDGE_IS_POSITIVE(pvr) \
+                       (pvr.pvr[2] & PVR2_EDGE_IS_POSITIVE_MASK)
+#define PVR_USE_MSR_INSTR(pvr)         (pvr.pvr[2] & PVR2_USE_MSR_INSTR)
+#define PVR_USE_PCMP_INSTR(pvr)                (pvr.pvr[2] & PVR2_USE_PCMP_INSTR)
+#define PVR_AREA_OPTIMISED(pvr)                (pvr.pvr[2] & PVR2_AREA_OPTIMISED)
+#define PVR_USE_MUL64(pvr)             (pvr.pvr[2] & PVR2_USE_MUL64_MASK)
+#define PVR_OPCODE_0x0_ILLEGAL(pvr) \
+                       (pvr.pvr[2] & PVR2_OPCODE_0x0_ILL_MASK)
+#define PVR_UNALIGNED_EXCEPTION(pvr) \
+                       (pvr.pvr[2] & PVR2_UNALIGNED_EXC_MASK)
+#define PVR_ILL_OPCODE_EXCEPTION(pvr) \
+                       (pvr.pvr[2] & PVR2_ILL_OPCODE_EXC_MASK)
+#define PVR_IOPB_BUS_EXCEPTION(pvr) \
+                       (pvr.pvr[2] & PVR2_IOPB_BUS_EXC_MASK)
+#define PVR_DOPB_BUS_EXCEPTION(pvr) \
+                       (pvr.pvr[2] & PVR2_DOPB_BUS_EXC_MASK)
+#define PVR_DIV_ZERO_EXCEPTION(pvr) \
+                       (pvr.pvr[2] & PVR2_DIV_ZERO_EXC_MASK)
+#define PVR_FPU_EXCEPTION(pvr)         (pvr.pvr[2] & PVR2_FPU_EXC_MASK)
+#define PVR_FSL_EXCEPTION(pvr)         (pvr.pvr[2] & PVR2_USE_EXTEND_FSL)
+
+#define PVR_DEBUG_ENABLED(pvr)         (pvr.pvr[3] & PVR3_DEBUG_ENABLED_MASK)
+#define PVR_NUMBER_OF_PC_BRK(pvr) \
+                       ((pvr.pvr[3] & PVR3_NUMBER_OF_PC_BRK_MASK) >> 25)
+#define PVR_NUMBER_OF_RD_ADDR_BRK(pvr) \
+                       ((pvr.pvr[3] & PVR3_NUMBER_OF_RD_ADDR_BRK_MASK) >> 19)
+#define PVR_NUMBER_OF_WR_ADDR_BRK(pvr) \
+                       ((pvr.pvr[3] & PVR3_NUMBER_OF_WR_ADDR_BRK_MASK) >> 13)
+#define PVR_FSL_LINKS(pvr)     ((pvr.pvr[3] & PVR3_FSL_LINKS_MASK) >> 7)
+
+#define PVR_ICACHE_ADDR_TAG_BITS(pvr) \
+                       ((pvr.pvr[4] & PVR4_ICACHE_ADDR_TAG_BITS_MASK) >> 26)
+#define PVR_ICACHE_USE_FSL(pvr)                (pvr.pvr[4] & PVR4_ICACHE_USE_FSL_MASK)
+#define PVR_ICACHE_ALLOW_WR(pvr)       (pvr.pvr[4] & PVR4_ICACHE_ALLOW_WR_MASK)
+#define PVR_ICACHE_LINE_LEN(pvr) \
+                       (1 << ((pvr.pvr[4] & PVR4_ICACHE_LINE_LEN_MASK) >> 21))
+#define PVR_ICACHE_BYTE_SIZE(pvr) \
+                       (1 << ((pvr.pvr[4] & PVR4_ICACHE_BYTE_SIZE_MASK) >> 16))
+
+#define PVR_DCACHE_ADDR_TAG_BITS(pvr) \
+                       ((pvr.pvr[5] & PVR5_DCACHE_ADDR_TAG_BITS_MASK) >> 26)
+#define PVR_DCACHE_USE_FSL(pvr)                (pvr.pvr[5] & PVR5_DCACHE_USE_FSL_MASK)
+#define PVR_DCACHE_ALLOW_WR(pvr)       (pvr.pvr[5] & PVR5_DCACHE_ALLOW_WR_MASK)
+#define PVR_DCACHE_LINE_LEN(pvr) \
+                       (1 << ((pvr.pvr[5] & PVR5_DCACHE_LINE_LEN_MASK) >> 21))
+#define PVR_DCACHE_BYTE_SIZE(pvr) \
+                       (1 << ((pvr.pvr[5] & PVR5_DCACHE_BYTE_SIZE_MASK) >> 16))
+
+
+#define PVR_ICACHE_BASEADDR(pvr)       (pvr.pvr[6] & PVR6_ICACHE_BASEADDR_MASK)
+#define PVR_ICACHE_HIGHADDR(pvr)       (pvr.pvr[7] & PVR7_ICACHE_HIGHADDR_MASK)
+
+#define PVR_DCACHE_BASEADDR(pvr)       (pvr.pvr[8] & PVR8_DCACHE_BASEADDR_MASK)
+#define PVR_DCACHE_HIGHADDR(pvr)       (pvr.pvr[9] & PVR9_DCACHE_HIGHADDR_MASK)
+
+#define PVR_TARGET_FAMILY(pvr) ((pvr.pvr[10] & PVR10_TARGET_FAMILY_MASK) >> 24)
+
+#define PVR_MSR_RESET_VALUE(pvr) \
+                               (pvr.pvr[11] & PVR11_MSR_RESET_VALUE_MASK)
+
+/* mmu */
+#define PVR_USE_MMU(pvr)       ((pvr.pvr[11] & PVR11_USE_MMU) >> 30)
+#define PVR_MMU_ITLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_ITLB_SIZE)
+#define PVR_MMU_DTLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_DTLB_SIZE)
+#define PVR_MMU_TLB_ACCESS(pvr)        (pvr.pvr[11] & PVR11_MMU_TLB_ACCESS)
+#define PVR_MMU_ZONES(pvr)     (pvr.pvr[11] & PVR11_MMU_ZONES)
+
+
+int cpu_has_pvr(void);
+void get_pvr(struct pvr_s *pvr);
+
+#endif /* _ASM_MICROBLAZE_PVR_H */
diff --git a/arch/microblaze/include/asm/registers.h b/arch/microblaze/include/asm/registers.h
new file mode 100644 (file)
index 0000000..834142d
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 Michal Simek
+ * Copyright (C) 2008 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_REGISTERS_H
+#define _ASM_MICROBLAZE_REGISTERS_H
+
+#define MSR_BE (1<<0) /* 0x001 */
+#define MSR_IE (1<<1) /* 0x002 */
+#define MSR_C  (1<<2) /* 0x004 */
+#define MSR_BIP        (1<<3) /* 0x008 */
+#define MSR_FSL        (1<<4) /* 0x010 */
+#define MSR_ICE        (1<<5) /* 0x020 */
+#define MSR_DZ (1<<6) /* 0x040 */
+#define MSR_DCE        (1<<7) /* 0x080 */
+#define MSR_EE (1<<8) /* 0x100 */
+#define MSR_EIP        (1<<9) /* 0x200 */
+#define MSR_CC (1<<31)
+
+/* Floating Point Status Register (FSR) Bits */
+#define FSR_IO         (1<<4) /* Invalid operation */
+#define FSR_DZ         (1<<3) /* Divide-by-zero */
+#define FSR_OF         (1<<2) /* Overflow */
+#define FSR_UF         (1<<1) /* Underflow */
+#define FSR_DO         (1<<0) /* Denormalized operand error */
+
+#endif /* _ASM_MICROBLAZE_REGISTERS_H */
diff --git a/arch/microblaze/include/asm/resource.h b/arch/microblaze/include/asm/resource.h
new file mode 100644 (file)
index 0000000..04bc4db
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/resource.h>
diff --git a/arch/microblaze/include/asm/scatterlist.h b/arch/microblaze/include/asm/scatterlist.h
new file mode 100644 (file)
index 0000000..08ff1d0
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SCATTERLIST_H
+#define _ASM_MICROBLAZE_SCATTERLIST_H
+
+struct scatterlist {
+#ifdef CONFIG_DEBUG_SG
+       unsigned long   sg_magic;
+#endif
+       unsigned long   page_link;
+       dma_addr_t      dma_address;
+       unsigned int    offset;
+       unsigned int    length;
+};
+
+#define sg_dma_address(sg)      ((sg)->dma_address)
+#define sg_dma_len(sg)          ((sg)->length)
+
+#define ISA_DMA_THRESHOLD (~0UL)
+
+#endif /* _ASM_MICROBLAZE_SCATTERLIST_H */
diff --git a/arch/microblaze/include/asm/sections.h b/arch/microblaze/include/asm/sections.h
new file mode 100644 (file)
index 0000000..8434a43
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SECTIONS_H
+#define _ASM_MICROBLAZE_SECTIONS_H
+
+#include <asm-generic/sections.h>
+
+# ifndef __ASSEMBLY__
+extern char _ssbss[], _esbss[];
+extern unsigned long __ivt_start[], __ivt_end[];
+
+#  ifdef CONFIG_MTD_UCLINUX
+extern char *_ebss;
+#  endif
+
+extern u32 _fdt_start[], _fdt_end[];
+
+# endif /* !__ASSEMBLY__ */
+#endif /* _ASM_MICROBLAZE_SECTIONS_H */
diff --git a/arch/microblaze/include/asm/segment.h b/arch/microblaze/include/asm/segment.h
new file mode 100644 (file)
index 0000000..7f5dcc5
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008 Michal Simek
+ * Copyright (C) 2008 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SEGMENT_H
+#define _ASM_MICROBLAZE_SEGMENT_H
+
+#ifndef __ASSEMBLY__
+
+typedef struct {
+       unsigned long seg;
+} mm_segment_t;
+
+/*
+ * On Microblaze the fs value is actually the top of the corresponding
+ * address space.
+ *
+ * The fs value determines whether argument validity checking should be
+ * performed or not. If get_fs() == USER_DS, checking is performed, with
+ * get_fs() == KERNEL_DS, checking is bypassed.
+ *
+ * For historical reasons, these macros are grossly misnamed.
+ *
+ * For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
+ */
+#  define KERNEL_DS    ((mm_segment_t){0})
+#  define USER_DS      KERNEL_DS
+
+# define get_ds()      (KERNEL_DS)
+# define get_fs()      (current_thread_info()->addr_limit)
+# define set_fs(x) \
+               do { current_thread_info()->addr_limit = (x); } while (0)
+
+# define segment_eq(a, b)              ((a).seg == (b).seg)
+
+# endif /* __ASSEMBLY__ */
+#endif /* _ASM_MICROBLAZE_SEGMENT_H */
diff --git a/arch/microblaze/include/asm/selfmod.h b/arch/microblaze/include/asm/selfmod.h
new file mode 100644 (file)
index 0000000..c42aff2
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
+ *
+ * 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 _ASM_MICROBLAZE_SELFMOD_H
+#define _ASM_MICROBLAZE_SELFMOD_H
+
+/*
+ * BARRIER_BASE_ADDR is constant address for selfmod function.
+ * do not change this value - selfmod function is in
+ * arch/microblaze/kernel/selfmod.c: selfmod_function()
+ *
+ * last 16 bits is used for storing register offset
+ */
+
+#define BARRIER_BASE_ADDR      0x1234ff00
+
+void selfmod_function(const int *arr_fce, const unsigned int base);
+
+#endif /* _ASM_MICROBLAZE_SELFMOD_H */
diff --git a/arch/microblaze/include/asm/sembuf.h b/arch/microblaze/include/asm/sembuf.h
new file mode 100644 (file)
index 0000000..b804ed7
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SEMBUF_H
+#define _ASM_MICROBLAZE_SEMBUF_H
+
+/*
+ * The semid64_ds structure for microblaze architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct semid64_ds {
+       struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
+       __kernel_time_t sem_otime; /* last semop time */
+       unsigned long   __unused1;
+       __kernel_time_t sem_ctime; /* last change time */
+       unsigned long   __unused2;
+       unsigned long   sem_nsems; /* no. of semaphores in array */
+       unsigned long   __unused3;
+       unsigned long   __unused4;
+};
+
+
+#endif /* _ASM_MICROBLAZE_SEMBUF_H */
diff --git a/arch/microblaze/include/asm/serial.h b/arch/microblaze/include/asm/serial.h
new file mode 100644 (file)
index 0000000..39bfc8c
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
+ *
+ * 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 _ASM_MICROBLAZE_SERIAL_H
+#define _ASM_MICROBLAZE_SERIAL_H
+
+# define BASE_BAUD (1843200 / 16)
+
+#endif /* _ASM_MICROBLAZE_SERIAL_H */
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h
new file mode 100644 (file)
index 0000000..9b98e8e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SETUP_H
+#define _ASM_MICROBLAZE_SETUP_H
+
+#define COMMAND_LINE_SIZE      256
+
+# ifndef __ASSEMBLY__
+
+#  ifdef __KERNEL__
+extern unsigned int boot_cpuid; /* move to smp.h */
+
+extern char cmd_line[COMMAND_LINE_SIZE];
+#  endif/* __KERNEL__ */
+
+void early_printk(const char *fmt, ...);
+
+int setup_early_printk(char *opt);
+void disable_early_printk(void);
+
+void heartbeat(void);
+void setup_heartbeat(void);
+
+unsigned long long sched_clock(void);
+
+void time_init(void);
+void init_IRQ(void);
+void machine_early_init(const char *cmdline, unsigned int ram,
+                                               unsigned int fdt);
+
+void machine_restart(char *cmd);
+void machine_shutdown(void);
+void machine_halt(void);
+void machine_power_off(void);
+
+# endif /* __ASSEMBLY__ */
+#endif /* _ASM_MICROBLAZE_SETUP_H */
diff --git a/arch/microblaze/include/asm/shmbuf.h b/arch/microblaze/include/asm/shmbuf.h
new file mode 100644 (file)
index 0000000..f829c58
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef _ASM_MICROBLAZE_SHMBUF_H
+#define _ASM_MICROBLAZE_SHMBUF_H
+
+/*
+ * The shmid64_ds structure for microblaze architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+       struct ipc64_perm       shm_perm; /* operation perms */
+       size_t                  shm_segsz; /* size of segment (bytes) */
+       __kernel_time_t         shm_atime; /* last attach time */
+       unsigned long           __unused1;
+       __kernel_time_t         shm_dtime; /* last detach time */
+       unsigned long           __unused2;
+       __kernel_time_t         shm_ctime; /* last change time */
+       unsigned long           __unused3;
+       __kernel_pid_t          shm_cpid; /* pid of creator */
+       __kernel_pid_t          shm_lpid; /* pid of last operator */
+       unsigned long           shm_nattch; /* no. of current attaches */
+       unsigned long           __unused4;
+       unsigned long           __unused5;
+};
+
+struct shminfo64 {
+       unsigned long   shmmax;
+       unsigned long   shmmin;
+       unsigned long   shmmni;
+       unsigned long   shmseg;
+       unsigned long   shmall;
+       unsigned long   __unused1;
+       unsigned long   __unused2;
+       unsigned long   __unused3;
+       unsigned long   __unused4;
+};
+
+#endif /* _ASM_MICROBLAZE_SHMBUF_H */
diff --git a/arch/microblaze/include/asm/shmparam.h b/arch/microblaze/include/asm/shmparam.h
new file mode 100644 (file)
index 0000000..9f5fc2b
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_MICROBLAZE_SHMPARAM_H
+#define _ASM_MICROBLAZE_SHMPARAM_H
+
+#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
+
+#endif /* _ASM_MICROBLAZE_SHMPARAM_H */
diff --git a/arch/microblaze/include/asm/sigcontext.h b/arch/microblaze/include/asm/sigcontext.h
new file mode 100644 (file)
index 0000000..55873c8
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SIGCONTEXT_H
+#define _ASM_MICROBLAZE_SIGCONTEXT_H
+
+/* FIXME should be linux/ptrace.h */
+#include <asm/ptrace.h>
+
+struct sigcontext {
+       struct pt_regs regs;
+       unsigned long oldmask;
+};
+
+#endif /* _ASM_MICROBLAZE_SIGCONTEXT_H */
diff --git a/arch/microblaze/include/asm/siginfo.h b/arch/microblaze/include/asm/siginfo.h
new file mode 100644 (file)
index 0000000..f162911
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SIGINFO_H
+#define _ASM_MICROBLAZE_SIGINFO_H
+
+#include <linux/types.h>
+#include <asm-generic/siginfo.h>
+
+#endif /* _ASM_MICROBLAZE_SIGINFO_H */
diff --git a/arch/microblaze/include/asm/signal.h b/arch/microblaze/include/asm/signal.h
new file mode 100644 (file)
index 0000000..9676fad
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *     Yasushi SHOJI <yashi@atmark-techno.com>
+ *     Tetsuya OHKAWA <tetsuya@atmark-techno.com>
+ *
+ * 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 _ASM_MICROBLAZE_SIGNAL_H
+#define _ASM_MICROBLAZE_SIGNAL_H
+
+#define SIGHUP         1
+#define SIGINT         2
+#define SIGQUIT                3
+#define SIGILL         4
+#define SIGTRAP                5
+#define SIGABRT                6
+#define SIGIOT         6
+#define SIGBUS         7
+#define SIGFPE         8
+#define SIGKILL                9
+#define SIGUSR1                10
+#define SIGSEGV                11
+#define SIGUSR2                12
+#define SIGPIPE                13
+#define SIGALRM                14
+#define SIGTERM                15
+#define SIGSTKFLT      16
+#define SIGCHLD                17
+#define SIGCONT                18
+#define SIGSTOP                19
+#define SIGTSTP                20
+#define SIGTTIN                21
+#define SIGTTOU                22
+#define SIGURG         23
+#define SIGXCPU                24
+#define SIGXFSZ                25
+#define SIGVTALRM      26
+#define SIGPROF                27
+#define SIGWINCH       28
+#define SIGIO          29
+#define SIGPOLL                SIGIO
+/*
+#define SIGLOST                29
+*/
+#define SIGPWR         30
+#define SIGSYS         31
+#define        SIGUNUSED       31
+
+/* These should not be considered constants from userland. */
+#define SIGRTMIN       32
+#define SIGRTMAX       _NSIG
+
+/*
+ * SA_FLAGS values:
+ *
+ * SA_ONSTACK indicates that a registered stack_t will be used.
+ * SA_RESTART flag to get restarting signals (which were the default long ago)
+ * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
+ * SA_RESETHAND clears the handler when the signal is delivered.
+ * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
+ * SA_NODEFER prevents the current signal from being masked in the handler.
+ *
+ * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
+ * Unix names RESETHAND and NODEFER respectively.
+ */
+#define SA_NOCLDSTOP   0x00000001
+#define SA_NOCLDWAIT   0x00000002
+#define SA_SIGINFO     0x00000004
+#define SA_ONSTACK     0x08000000
+#define SA_RESTART     0x10000000
+#define SA_NODEFER     0x40000000
+#define SA_RESETHAND   0x80000000
+
+#define SA_NOMASK      SA_NODEFER
+#define SA_ONESHOT     SA_RESETHAND
+
+#define SA_RESTORER    0x04000000
+
+/*
+ * sigaltstack controls
+ */
+#define SS_ONSTACK     1
+#define SS_DISABLE     2
+
+#define MINSIGSTKSZ    2048
+#define SIGSTKSZ       8192
+
+# ifndef __ASSEMBLY__
+# include <linux/types.h>
+# include <asm-generic/signal.h>
+
+/* Avoid too many header ordering problems. */
+struct siginfo;
+
+#  ifdef __KERNEL__
+/*
+ * Most things should be clean enough to redefine this at will, if care
+ * is taken to make libc match.
+ */
+#  define _NSIG                64
+#  define _NSIG_BPW    32
+#  define _NSIG_WORDS  (_NSIG / _NSIG_BPW)
+
+typedef unsigned long old_sigset_t; /* at least 32 bits */
+
+typedef struct {
+       unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+
+struct old_sigaction {
+       __sighandler_t sa_handler;
+       old_sigset_t sa_mask;
+       unsigned long sa_flags;
+       void (*sa_restorer)(void);
+};
+
+struct sigaction {
+       __sighandler_t sa_handler;
+       unsigned long sa_flags;
+       void (*sa_restorer)(void);
+       sigset_t sa_mask; /* mask last for extensibility */
+};
+
+struct k_sigaction {
+       struct sigaction sa;
+};
+
+#  include <asm/sigcontext.h>
+#  undef __HAVE_ARCH_SIG_BITOPS
+
+#  define ptrace_signal_deliver(regs, cookie) do { } while (0)
+
+#  else /* !__KERNEL__ */
+
+/* Here we must cater to libcs that poke about in kernel headers. */
+
+#  define NSIG         32
+typedef unsigned long sigset_t;
+
+struct sigaction {
+       union {
+       __sighandler_t _sa_handler;
+       void (*_sa_sigaction)(int, struct siginfo *, void *);
+       } _u;
+       sigset_t sa_mask;
+       unsigned long sa_flags;
+       void (*sa_restorer)(void);
+};
+
+#  define sa_handler   _u._sa_handler
+#  define sa_sigaction _u._sa_sigaction
+
+#  endif /* __KERNEL__ */
+
+typedef struct sigaltstack {
+       void *ss_sp;
+       int ss_flags;
+       size_t ss_size;
+} stack_t;
+
+# endif /* __ASSEMBLY__ */
+#endif /* _ASM_MICROBLAZE_SIGNAL_H */
diff --git a/arch/microblaze/include/asm/socket.h b/arch/microblaze/include/asm/socket.h
new file mode 100644 (file)
index 0000000..f919b6b
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SOCKET_H
+#define _ASM_MICROBLAZE_SOCKET_H
+
+#include <asm/sockios.h>
+
+/* For setsockoptions(2) */
+#define SOL_SOCKET     1
+
+#define SO_DEBUG       1
+#define SO_REUSEADDR   2
+#define SO_TYPE                3
+#define SO_ERROR       4
+#define SO_DONTROUTE   5
+#define SO_BROADCAST   6
+#define SO_SNDBUF      7
+#define SO_RCVBUF      8
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_KEEPALIVE   9
+#define SO_OOBINLINE   10
+#define SO_NO_CHECK    11
+#define SO_PRIORITY    12
+#define SO_LINGER      13
+#define SO_BSDCOMPAT   14
+/* To add :#define SO_REUSEPORT 15 */
+#define SO_PASSCRED    16
+#define SO_PEERCRED    17
+#define SO_RCVLOWAT    18
+#define SO_SNDLOWAT    19
+#define SO_RCVTIMEO    20
+#define SO_SNDTIMEO    21
+
+/* Security levels - as per NRL IPv6 - don't actually do anything */
+#define SO_SECURITY_AUTHENTICATION             22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT       23
+#define SO_SECURITY_ENCRYPTION_NETWORK         24
+
+#define SO_BINDTODEVICE        25
+
+/* Socket filtering */
+#define SO_ATTACH_FILTER       26
+#define SO_DETACH_FILTER       27
+
+#define SO_PEERNAME            28
+#define SO_TIMESTAMP           29
+#define SCM_TIMESTAMP          SO_TIMESTAMP
+
+#define SO_ACCEPTCONN          30
+
+#define SO_PEERSEC             31
+#define SO_PASSSEC             34
+
+#define SO_TIMESTAMPNS         35
+#define SCM_TIMESTAMPNS                SO_TIMESTAMPNS
+
+#define SO_MARK                        36
+
+#endif /* _ASM_MICROBLAZE_SOCKET_H */
diff --git a/arch/microblaze/include/asm/sockios.h b/arch/microblaze/include/asm/sockios.h
new file mode 100644 (file)
index 0000000..9fff57a
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SOCKIOS_H
+#define _ASM_MICROBLAZE_SOCKIOS_H
+
+#include <linux/ioctl.h>
+
+/* Socket-level I/O control calls. */
+#define FIOSETOWN      0x8901
+#define SIOCSPGRP      0x8902
+#define FIOGETOWN      0x8903
+#define SIOCGPGRP      0x8904
+#define SIOCATMARK     0x8905
+#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
+
+#endif /* _ASM_MICROBLAZE_SOCKIOS_H */
diff --git a/arch/microblaze/include/asm/stat.h b/arch/microblaze/include/asm/stat.h
new file mode 100644 (file)
index 0000000..5f18b8a
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Microblaze stat structure
+ *
+ * Copyright (C) 2001,02,03 NEC Electronics Corporation
+ * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
+ *
+ * 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.
+ *
+ * Written by Miles Bader <miles@gnu.org>
+ */
+
+#ifndef _ASM_MICROBLAZE_STAT_H
+#define _ASM_MICROBLAZE_STAT_H
+
+#include <linux/posix_types.h>
+
+struct stat {
+       unsigned int    st_dev;
+       unsigned long   st_ino;
+       unsigned int    st_mode;
+       unsigned int    st_nlink;
+       unsigned int    st_uid;
+       unsigned int    st_gid;
+       unsigned int    st_rdev;
+       unsigned long   st_size;
+       unsigned long   st_blksize;
+       unsigned long   st_blocks;
+       unsigned long   st_atime;
+       unsigned long   __unused1; /* unsigned long  st_atime_nsec */
+       unsigned long   st_mtime;
+       unsigned long   __unused2; /* unsigned long  st_mtime_nsec */
+       unsigned long   st_ctime;
+       unsigned long   __unused3; /* unsigned long  st_ctime_nsec */
+       unsigned long   __unused4;
+       unsigned long   __unused5;
+};
+
+struct stat64 {
+       unsigned long long      st_dev;
+       unsigned long   __unused1;
+
+       unsigned long long      st_ino;
+
+       unsigned int    st_mode;
+       unsigned int    st_nlink;
+
+       unsigned int    st_uid;
+       unsigned int    st_gid;
+
+       unsigned long long      st_rdev;
+       unsigned long   __unused3;
+
+       long long       st_size;
+       unsigned long   st_blksize;
+
+       unsigned long   st_blocks; /* No. of 512-byte blocks allocated */
+       unsigned long   __unused4; /* future possible st_blocks high bits */
+
+       unsigned long   st_atime;
+       unsigned long   st_atime_nsec;
+
+       unsigned long   st_mtime;
+       unsigned long   st_mtime_nsec;
+
+       unsigned long   st_ctime;
+       unsigned long   st_ctime_nsec;
+
+       unsigned long   __unused8;
+};
+
+#endif /* _ASM_MICROBLAZE_STAT_H */
diff --git a/arch/microblaze/include/asm/statfs.h b/arch/microblaze/include/asm/statfs.h
new file mode 100644 (file)
index 0000000..0b91fe1
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/statfs.h>
diff --git a/arch/microblaze/include/asm/string.h b/arch/microblaze/include/asm/string.h
new file mode 100644 (file)
index 0000000..f7728c9
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_STRING_H
+#define _ASM_MICROBLAZE_STRING_H
+
+#ifndef __KERNEL__
+
+#define __HAVE_ARCH_MEMSET
+#define __HAVE_ARCH_MEMCPY
+#define __HAVE_ARCH_MEMMOVE
+
+extern void *memset(void *, int, __kernel_size_t);
+extern void *memcpy(void *, const void *, __kernel_size_t);
+extern void *memmove(void *, const void *, __kernel_size_t);
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_MICROBLAZE_STRING_H */
diff --git a/arch/microblaze/include/asm/swab.h b/arch/microblaze/include/asm/swab.h
new file mode 100644 (file)
index 0000000..b375d7b
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef _ASM_MICROBLAZE_SWAB_H
+#define _ASM_MICROBLAZE_SWAB_H
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+#define __SWAB_64_THRU_32__
+#endif
+
+#endif /* _ASM_MICROBLAZE_SWAB_H */
diff --git a/arch/microblaze/include/asm/syscalls.h b/arch/microblaze/include/asm/syscalls.h
new file mode 100644 (file)
index 0000000..9cb4ff0
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef __ASM_MICROBLAZE_SYSCALLS_H
+#define __ASM_MICROBLAZE_SYSCALLS_H
+#ifdef __KERNEL__
+
+#include <linux/compiler.h>
+#include <linux/linkage.h>
+#include <linux/types.h>
+#include <linux/signal.h>
+
+/* FIXME will be removed */
+asmlinkage int sys_ipc(uint call, int first, int second,
+                               int third, void *ptr, long fifth);
+
+struct pt_regs;
+asmlinkage int sys_vfork(struct pt_regs *regs);
+asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs);
+asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
+                       char __user *__user *envp, struct pt_regs *regs);
+
+asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
+                       unsigned long prot, unsigned long flags,
+                       unsigned long fd, unsigned long pgoff);
+
+asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
+                       unsigned long prot, unsigned long flags,
+                       unsigned long fd, off_t offset);
+
+/* from signal.c */
+asmlinkage int sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs);
+
+asmlinkage int sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
+               struct pt_regs *regs);
+
+asmlinkage int sys_sigaction(int sig, const struct old_sigaction *act,
+               struct old_sigaction *oact);
+
+asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
+               struct pt_regs *regs);
+
+asmlinkage int sys_sigreturn(struct pt_regs *regs);
+
+asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
+
+#endif /* __KERNEL__ */
+#endif /* __ASM_MICROBLAZE_SYSCALLS_H */
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h
new file mode 100644 (file)
index 0000000..c4e3088
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_SYSTEM_H
+#define _ASM_MICROBLAZE_SYSTEM_H
+
+#include <asm/registers.h>
+#include <asm/setup.h>
+#include <asm/irqflags.h>
+
+struct task_struct;
+struct thread_info;
+
+extern struct task_struct *_switch_to(struct thread_info *prev,
+                                       struct thread_info *next);
+
+#define switch_to(prev, next, last)                                    \
+       do {                                                            \
+               (last) = _switch_to(task_thread_info(prev),             \
+                                       task_thread_info(next));        \
+       } while (0)
+
+#define smp_read_barrier_depends()     do {} while (0)
+#define read_barrier_depends()         do {} while (0)
+
+#define nop()                  asm volatile ("nop")
+#define mb()                   barrier()
+#define rmb()                  mb()
+#define wmb()                  mb()
+#define set_mb(var, value)     do { var = value; mb(); } while (0)
+#define set_wmb(var, value)    do { var = value; wmb(); } while (0)
+
+#define smp_mb()               mb()
+#define smp_rmb()              rmb()
+#define smp_wmb()              wmb()
+
+void show_trace(struct task_struct *task, unsigned long *stack);
+void __bad_xchg(volatile void *ptr, int size);
+
+static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
+                                                               int size)
+{
+       unsigned long ret;
+       unsigned long flags;
+
+       switch (size) {
+       case 1:
+               local_irq_save(flags);
+               ret = *(volatile unsigned char *)ptr;
+               *(volatile unsigned char *)ptr = x;
+               local_irq_restore(flags);
+               break;
+
+       case 4:
+               local_irq_save(flags);
+               ret = *(volatile unsigned long *)ptr;
+               *(volatile unsigned long *)ptr = x;
+               local_irq_restore(flags);
+               break;
+       default:
+               __bad_xchg(ptr, size), ret = 0;
+               break;
+       }
+
+       return ret;
+}
+
+void disable_hlt(void);
+void enable_hlt(void);
+void default_idle(void);
+
+#define xchg(ptr, x) \
+       ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
+
+void free_init_pages(char *what, unsigned long begin, unsigned long end);
+void free_initmem(void);
+extern char *klimit;
+extern void ret_from_fork(void);
+
+#ifdef CONFIG_DEBUG_FS
+extern struct dentry *of_debugfs_root;
+#endif
+
+#define arch_align_stack(x) (x)
+
+#endif /* _ASM_MICROBLAZE_SYSTEM_H */
diff --git a/arch/microblaze/include/asm/termbits.h b/arch/microblaze/include/asm/termbits.h
new file mode 100644 (file)
index 0000000..a1b64bc
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_TERMBITS_H
+#define _ASM_MICROBLAZE_TERMBITS_H
+
+#include <linux/posix_types.h>
+
+typedef unsigned char  cc_t;
+typedef unsigned int   speed_t;
+typedef unsigned int   tcflag_t;
+
+#define NCCS 19
+struct termios {
+       tcflag_t c_iflag; /* input mode flags */
+       tcflag_t c_oflag; /* output mode flags */
+       tcflag_t c_cflag; /* control mode flags */
+       tcflag_t c_lflag; /* local mode flags */
+       cc_t c_line; /* line discipline */
+       cc_t c_cc[NCCS]; /* control characters */
+};
+
+struct ktermios {
+       tcflag_t c_iflag; /* input mode flags */
+       tcflag_t c_oflag; /* output mode flags */
+       tcflag_t c_cflag; /* control mode flags */
+       tcflag_t c_lflag; /* local mode flags */
+       cc_t c_line; /* line discipline */
+       cc_t c_cc[NCCS]; /* control characters */
+       speed_t c_ispeed; /* input speed */
+       speed_t c_ospeed; /* output speed */
+};
+
+/* c_cc characters */
+
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
+
+/* c_iflag bits */
+
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK  0000020
+#define ISTRIP 0000040
+#define INLCR  0000100
+#define IGNCR  0000200
+#define ICRNL  0000400
+#define IUCLC  0001000
+#define IXON   0002000
+#define IXANY  0004000
+#define IXOFF  0010000
+#define IMAXBEL        0020000
+#define IUTF8  0040000
+
+/* c_oflag bits */
+
+#define OPOST  0000001
+#define OLCUC  0000002
+#define ONLCR  0000004
+#define OCRNL  0000010
+#define ONOCR  0000020
+#define ONLRET 0000040
+#define OFILL  0000100
+#define OFDEL  0000200
+#define NLDLY  0000400
+#define NL0    0000000
+#define NL1    0000400
+#define CRDLY  0003000
+#define CR0    0000000
+#define CR1    0001000
+#define CR2    0002000
+#define CR3    0003000
+#define TABDLY 0014000
+#define TAB0   0000000
+#define TAB1   0004000
+#define TAB2   0010000
+#define TAB3   0014000
+#define XTABS  0014000
+#define BSDLY  0020000
+#define BS0    0000000
+#define BS1    0020000
+#define VTDLY  0040000
+#define VT0    0000000
+#define VT1    0040000
+#define FFDLY  0100000
+#define FF0    0000000
+#define FF1    0100000
+
+/* c_cflag bit meaning */
+
+#define CBAUD  0010017
+#define B0     0000000 /* hang up */
+#define B50    0000001
+#define B75    0000002
+#define B110   0000003
+#define B134   0000004
+#define B150   0000005
+#define B200   0000006
+#define B300   0000007
+#define B600   0000010
+#define B1200  0000011
+#define B1800  0000012
+#define B2400  0000013
+#define B4800  0000014
+#define B9600  0000015
+#define B19200 0000016
+#define B38400 0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE  0000060
+#define CS5    0000000
+#define CS6    0000020
+#define CS7    0000040
+#define CS8    0000060
+#define CSTOPB 0000100
+#define CREAD  0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL  0002000
+#define CLOCAL 0004000
+#define CBAUDEX        0010000
+#define B57600 0010001
+#define B115200        0010002
+#define B230400        0010003
+#define B460800        0010004
+#define B500000        0010005
+#define B576000        0010006
+#define B921600        0010007
+#define BOTHER         0010000
+#define B1000000       0010010
+#define B1152000       0010011
+#define B1500000       0010012
+#define B2000000       0010013
+#define B2500000       0010014
+#define B3000000       0010015
+#define B3500000       0010016
+#define B4000000       0010017
+#define CIBAUD         002003600000 /* input baud rate (not used) */
+#define CMSPAR         010000000000 /* mark or space (stick) parity */
+#define CRTSCTS                020000000000 /* flow control */
+
+#define IBSHIFT        16              /* Shift from CBAUD to CIBAUD */
+
+/* c_lflag bits */
+
+#define ISIG   0000001
+#define ICANON 0000002
+#define XCASE  0000004
+#define ECHO   0000010
+#define ECHOE  0000020
+#define ECHOK  0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define ECHOCTL        0001000
+#define ECHOPRT        0002000
+#define ECHOKE 0004000
+#define FLUSHO 0010000
+#define PENDIN 0040000
+#define IEXTEN 0100000
+
+/* tcflow() and TCXONC use these */
+
+#define        TCOOFF          0
+#define        TCOON           1
+#define        TCIOFF          2
+#define        TCION           3
+
+/* tcflush() and TCFLSH use these */
+
+#define        TCIFLUSH        0
+#define        TCOFLUSH        1
+#define        TCIOFLUSH       2
+
+/* tcsetattr uses these */
+
+#define        TCSANOW         0
+#define        TCSADRAIN       1
+#define        TCSAFLUSH       2
+
+#endif /* _ASM_MICROBLAZE_TERMBITS_H */
diff --git a/arch/microblaze/include/asm/termios.h b/arch/microblaze/include/asm/termios.h
new file mode 100644 (file)
index 0000000..102d772
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_TERMIOS_H
+#define _ASM_MICROBLAZE_TERMIOS_H
+
+#include <linux/string.h>
+#include <asm/termbits.h>
+#include <asm/ioctls.h>
+
+struct winsize {
+       unsigned short ws_row;
+       unsigned short ws_col;
+       unsigned short ws_xpixel;
+       unsigned short ws_ypixel;
+};
+
+#define NCC 8
+struct termio {
+       unsigned short c_iflag; /* input mode flags */
+       unsigned short c_oflag; /* output mode flags */
+       unsigned short c_cflag; /* control mode flags */
+       unsigned short c_lflag; /* local mode flags */
+       unsigned char c_line; /* line discipline */
+       unsigned char c_cc[NCC]; /* control characters */
+};
+
+#ifdef __KERNEL__
+/*     intr=^C         quit=^|         erase=del       kill=^U
+       eof=^D          vtime=\0        vmin=\1         sxtc=\0
+       start=^Q        stop=^S         susp=^Z         eol=\0
+       reprint=^R      discard=^U      werase=^W       lnext=^V
+       eol2=\0
+*/
+#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
+#endif
+
+/* Modem lines */
+
+#define TIOCM_LE       0x001
+#define TIOCM_DTR      0x002
+#define TIOCM_RTS      0x004
+#define TIOCM_ST       0x008
+#define TIOCM_SR       0x010
+#define TIOCM_CTS      0x020
+#define TIOCM_CAR      0x040
+#define TIOCM_RNG      0x080
+#define TIOCM_DSR      0x100
+#define TIOCM_CD       TIOCM_CAR
+#define TIOCM_RI       TIOCM_RNG
+#define TIOCM_OUT1     0x2000
+#define TIOCM_OUT2     0x4000
+#define TIOCM_LOOP     0x8000
+
+/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
+
+/* Line disciplines */
+
+#define N_TTY          0
+#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> */
+#define N_IRDA         11 /* Linux IR - http://irda.sourceforge.net/ */
+#define N_SMSBLOCK     12 /* SMS block mode - for talking to GSM data cards
+                               about SMS messages */
+#define N_HDLC         13 /* synchronous HDLC */
+#define N_SYNC_PPP     14
+#define N_HCI          15 /* Bluetooth HCI UART */
+
+#ifdef __KERNEL__
+
+#include <asm-generic/termios.h>
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_MICROBLAZE_TERMIOS_H */
diff --git a/arch/microblaze/include/asm/thread_info.h b/arch/microblaze/include/asm/thread_info.h
new file mode 100644 (file)
index 0000000..4c3943e
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_THREAD_INFO_H
+#define _ASM_MICROBLAZE_THREAD_INFO_H
+
+#ifdef __KERNEL__
+
+/* we have 8k stack */
+#define THREAD_SHIFT           13
+#define THREAD_SIZE            (1 << THREAD_SHIFT)
+#define THREAD_SIZE_ORDER      1
+
+#ifndef __ASSEMBLY__
+# include <linux/types.h>
+# include <asm/processor.h>
+# include <asm/segment.h>
+
+/*
+ * low level task data that entry.S needs immediate access to
+ * - this struct should fit entirely inside of one cache line
+ * - this struct shares the supervisor stack pages
+ * - if the contents of this structure are changed, the assembly constants
+ *      must also be changed
+ */
+
+struct cpu_context {
+       __u32   r1; /* stack pointer */
+       __u32   r2;
+       /* dedicated registers */
+       __u32   r13;
+       __u32   r14;
+       __u32   r15;
+       __u32   r16;
+       __u32   r17;
+       __u32   r18;
+       /* non-volatile registers */
+       __u32   r19;
+       __u32   r20;
+       __u32   r21;
+       __u32   r22;
+       __u32   r23;
+       __u32   r24;
+       __u32   r25;
+       __u32   r26;
+       __u32   r27;
+       __u32   r28;
+       __u32   r29;
+       __u32   r30;
+       /* r31 is used as current task pointer */
+       /* special purpose registers */
+       __u32   msr;
+       __u32   ear;
+       __u32   esr;
+       __u32   fsr;
+};
+
+struct thread_info {
+       struct task_struct      *task; /* main task structure */
+       struct exec_domain      *exec_domain; /* execution domain */
+       unsigned long           flags; /* low level flags */
+       unsigned long           status; /* thread-synchronous flags */
+       __u32                   cpu; /* current CPU */
+       __s32                   preempt_count; /* 0 => preemptable,< 0 => BUG*/
+       mm_segment_t            addr_limit; /* thread address space */
+       struct restart_block    restart_block;
+
+       struct cpu_context      cpu_context;
+};
+
+/*
+ * macros/functions for gaining access to the thread information structure
+ *
+ * preempt_count needs to be 1 initially, until the scheduler is functional.
+ */
+#define INIT_THREAD_INFO(tsk)                  \
+{                                              \
+       .task           = &tsk,                 \
+       .exec_domain    = &default_exec_domain, \
+       .flags          = 0,                    \
+       .cpu            = 0,                    \
+       .preempt_count  = 1,                    \
+       .addr_limit     = KERNEL_DS,            \
+       .restart_block = {                      \
+               .fn = do_no_restart_syscall,    \
+       },                                      \
+}
+
+#define init_thread_info       (init_thread_union.thread_info)
+#define init_stack             (init_thread_union.stack)
+
+/* how to get the thread information struct from C */
+static inline struct thread_info *current_thread_info(void)
+{
+       register unsigned long sp asm("r1");
+
+       return (struct thread_info *)(sp & ~(THREAD_SIZE-1));
+}
+
+/* thread information allocation */
+#endif /* __ASSEMBLY__ */
+
+#define PREEMPT_ACTIVE         0x10000000
+
+/*
+ * thread information flags
+ * - these are process state flags that various assembly files may
+ *   need to access
+ * - pending work-to-be-done flags are in LSW
+ * - other flags in MSW
+ */
+#define TIF_SYSCALL_TRACE      0 /* syscall trace active */
+#define TIF_NOTIFY_RESUME      1 /* resumption notification requested */
+#define TIF_SIGPENDING         2 /* signal pending */
+#define TIF_NEED_RESCHED       3 /* rescheduling necessary */
+/* restore singlestep on return to user mode */
+#define TIF_SINGLESTEP         4
+#define TIF_IRET               5 /* return with iret */
+#define TIF_MEMDIE             6
+#define TIF_FREEZE             14      /* Freezing for suspend */
+
+/* FIXME change in entry.S */
+#define TIF_KERNEL_TRACE       8       /* kernel trace active */
+
+/* true if poll_idle() is polling TIF_NEED_RESCHED */
+#define TIF_POLLING_NRFLAG     16
+
+#define _TIF_SYSCALL_TRACE     (1<<TIF_SYSCALL_TRACE)
+#define _TIF_NOTIFY_RESUME     (1<<TIF_NOTIFY_RESUME)
+#define _TIF_SIGPENDING                (1<<TIF_SIGPENDING)
+#define _TIF_NEED_RESCHED      (1<<TIF_NEED_RESCHED)
+#define _TIF_SINGLESTEP                (1<<TIF_SINGLESTEP)
+#define _TIF_IRET              (1<<TIF_IRET)
+#define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
+#define _TIF_FREEZE            (1<<TIF_FREEZE)
+#define _TIF_KERNEL_TRACE      (1 << TIF_KERNEL_TRACE)
+
+/* work to do on interrupt/exception return */
+#define _TIF_WORK_MASK         0x0000FFFE
+/* work to do on any return to u-space */
+#define _TIF_ALLWORK_MASK      0x0000FFFF
+
+/*
+ * Thread-synchronous status.
+ *
+ * This is different from the flags in that nobody else
+ * ever touches our thread-synchronous status, so we don't
+ * have to worry about atomic accesses.
+ */
+/* FPU was used by this task this quantum (SMP) */
+#define TS_USEDFPU             0x0001
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_MICROBLAZE_THREAD_INFO_H */
diff --git a/arch/microblaze/include/asm/timex.h b/arch/microblaze/include/asm/timex.h
new file mode 100644 (file)
index 0000000..678525d
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_TIMEX_H
+#define _ASM_MICROBLAZE_TIMEX_H
+
+#define CLOCK_TICK_RATE 1000 /* Timer input freq. */
+
+typedef unsigned long cycles_t;
+
+#define get_cycles()   (0)
+
+#endif /* _ASM_TIMEX_H */
diff --git a/arch/microblaze/include/asm/tlb.h b/arch/microblaze/include/asm/tlb.h
new file mode 100644 (file)
index 0000000..d1dfe37
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_TLB_H
+#define _ASM_MICROBLAZE_TLB_H
+
+#define tlb_flush(tlb) do {} while (0)
+
+#include <asm-generic/tlb.h>
+
+#endif /* _ASM_MICROBLAZE_TLB_H */
diff --git a/arch/microblaze/include/asm/tlbflush.h b/arch/microblaze/include/asm/tlbflush.h
new file mode 100644 (file)
index 0000000..d7fe762
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_TLBFLUSH_H
+#define _ASM_MICROBLAZE_TLBFLUSH_H
+
+#define flush_tlb()                            BUG()
+#define flush_tlb_all()                                BUG()
+#define flush_tlb_mm(mm)                       BUG()
+#define flush_tlb_page(vma, addr)              BUG()
+#define flush_tlb_range(mm, start, end)                BUG()
+#define flush_tlb_pgtables(mm, start, end)     BUG()
+#define flush_tlb_kernel_range(start, end)     BUG()
+
+#endif /* _ASM_MICROBLAZE_TLBFLUSH_H */
diff --git a/arch/microblaze/include/asm/topology.h b/arch/microblaze/include/asm/topology.h
new file mode 100644 (file)
index 0000000..96bcea5
--- /dev/null
@@ -0,0 +1,11 @@
+#include <asm-generic/topology.h>
+
+#ifndef _ASM_MICROBLAZE_TOPOLOGY_H
+#define _ASM_MICROBLAZE_TOPOLOGY_H
+
+struct device_node;
+static inline int of_node_to_nid(struct device_node *device)
+{
+       return 0;
+}
+#endif /* _ASM_MICROBLAZE_TOPOLOGY_H */
diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h
new file mode 100644 (file)
index 0000000..bebc018
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_TYPES_H
+#define _ASM_MICROBLAZE_TYPES_H
+
+/*
+ * This file is never included by application software unless
+ * explicitly requested (e.g., via linux/types.h) in which case the
+ * application is Linux specific so (user-) name space pollution is
+ * not a major issue.  However, for interoperability, libraries still
+ * need to be careful to avoid a name clashes.
+ */
+
+#include <asm-generic/int-ll64.h>
+
+# ifndef __ASSEMBLY__
+
+typedef unsigned short umode_t;
+
+/*
+ * These aren't exported outside the kernel to avoid name space clashes
+ */
+#  ifdef __KERNEL__
+#  define BITS_PER_LONG 32
+
+/* Dma addresses are 32-bits wide. */
+
+typedef u32 dma_addr_t;
+
+#  endif/* __KERNEL__ */
+# endif /* __ASSEMBLY__ */
+#endif /* _ASM_MICROBLAZE_TYPES_H */
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
new file mode 100644 (file)
index 0000000..5a3ffc3
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_UACCESS_H
+#define _ASM_MICROBLAZE_UACCESS_H
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/sched.h> /* RLIMIT_FSIZE */
+#include <linux/mm.h>
+
+#include <asm/mmu.h>
+#include <asm/page.h>
+#include <asm/pgtable.h>
+#include <asm/segment.h>
+#include <linux/string.h>
+
+#define VERIFY_READ    0
+#define VERIFY_WRITE   1
+
+extern int ___range_ok(unsigned long addr, unsigned long size);
+
+#define __range_ok(addr, size) \
+               ___range_ok((unsigned long)(addr), (unsigned long)(size))
+
+#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
+#define __access_ok(add, size) (__range_ok((addr), (size)) == 0)
+
+extern inline int bad_user_access_length(void)
+{
+       return 0;
+}
+/* FIXME this is function for optimalization -> memcpy */
+#define __get_user(var, ptr)                                   \
+       ({                                                      \
+               int __gu_err = 0;                               \
+               switch (sizeof(*(ptr))) {                       \
+               case 1:                                         \
+               case 2:                                         \
+               case 4:                                         \
+                       (var) = *(ptr);                         \
+                       break;                                  \
+               case 8:                                         \
+                       memcpy((void *) &(var), (ptr), 8);      \
+                       break;                                  \
+               default:                                        \
+                       (var) = 0;                              \
+                       __gu_err = __get_user_bad();            \
+                       break;                                  \
+               }                                               \
+               __gu_err;                                       \
+       })
+
+#define __get_user_bad()       (bad_user_access_length(), (-EFAULT))
+
+#define __put_user(var, ptr)                                   \
+       ({                                                      \
+               int __pu_err = 0;                               \
+               switch (sizeof(*(ptr))) {                       \
+               case 1:                                         \
+               case 2:                                         \
+               case 4:                                         \
+                       *(ptr) = (var);                         \
+                       break;                                  \
+               case 8: {                                       \
+                       typeof(*(ptr)) __pu_val = var;          \
+                       memcpy(ptr, &__pu_val, sizeof(__pu_val));\
+                       }                                       \
+                       break;                                  \
+               default:                                        \
+                       __pu_err = __put_user_bad();            \
+                       break;                                  \
+               }                                                       \
+               __pu_err;                                               \
+       })
+
+#define __put_user_bad()       (bad_user_access_length(), (-EFAULT))
+
+#define put_user(x, ptr)       __put_user(x, ptr)
+#define get_user(x, ptr)       __get_user(x, ptr)
+
+#define copy_to_user(to, from, n)              (memcpy(to, from, n), 0)
+#define copy_from_user(to, from, n)            (memcpy(to, from, n), 0)
+
+#define __copy_to_user(to, from, n)            (copy_to_user(to, from, n))
+#define __copy_from_user(to, from, n)          (copy_from_user(to, from, n))
+#define __copy_to_user_inatomic(to, from, n)   (__copy_to_user(to, from, n))
+#define __copy_from_user_inatomic(to, from, n) (__copy_from_user(to, from, n))
+
+#define __clear_user(addr, n)  (memset((void *)addr, 0, n), 0)
+
+static inline unsigned long clear_user(void *addr, unsigned long size)
+{
+       if (access_ok(VERIFY_WRITE, addr, size))
+               size = __clear_user(addr, size);
+       return size;
+}
+
+/* Returns 0 if exception not found and fixup otherwise. */
+extern unsigned long search_exception_table(unsigned long);
+
+
+extern long strncpy_from_user(char *dst, const char __user *src, long count);
+extern long strnlen_user(const char __user *src, long count);
+extern long __strncpy_from_user(char *dst, const char __user *src, long count);
+
+/*
+ * The exception table consists of pairs of addresses: the first is the
+ * address of an instruction that is allowed to fault, and the second is
+ * the address at which the program should continue. No registers are
+ * modified, so it is entirely up to the continuation code to figure out
+ * what to do.
+ *
+ * All the routines below use bits of fixup code that are out of line
+ * with the main instruction path. This means when everything is well,
+ * we don't even have to jump over them. Further, they do not intrude
+ * on our cache or tlb entries.
+ */
+struct exception_table_entry {
+       unsigned long insn, fixup;
+};
+
+#endif  /* __ASSEMBLY__ */
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_MICROBLAZE_UACCESS_H */
diff --git a/arch/microblaze/include/asm/ucontext.h b/arch/microblaze/include/asm/ucontext.h
new file mode 100644 (file)
index 0000000..11f6bb3
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_UCONTEXT_H
+#define _ASM_MICROBLAZE_UCONTEXT_H
+
+#include <asm/sigcontext.h>
+
+struct ucontext {
+       unsigned long           uc_flags;
+       struct ucontext         *uc_link;
+       stack_t                 uc_stack;
+       struct sigcontext       uc_mcontext;
+       sigset_t                uc_sigmask; /* mask last for extensibility */
+};
+
+#endif /* _ASM_MICROBLAZE_UCONTEXT_H */
diff --git a/arch/microblaze/include/asm/unaligned.h b/arch/microblaze/include/asm/unaligned.h
new file mode 100644 (file)
index 0000000..9d66b64
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_UNALIGNED_H
+#define _ASM_MICROBLAZE_UNALIGNED_H
+
+# ifdef __KERNEL__
+
+# include <linux/unaligned/access_ok.h>
+# include <linux/unaligned/generic.h>
+
+# define get_unaligned __get_unaligned_be
+# define put_unaligned __put_unaligned_be
+
+# endif        /* __KERNEL__ */
+#endif /* _ASM_MICROBLAZE_UNALIGNED_H */
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h
new file mode 100644 (file)
index 0000000..d9d3903
--- /dev/null
@@ -0,0 +1,421 @@
+/*
+ * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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 _ASM_MICROBLAZE_UNISTD_H
+#define _ASM_MICROBLAZE_UNISTD_H
+
+#define __NR_restart_syscall   0 /* ok */
+#define __NR_exit              1 /* ok */
+#define __NR_fork              2 /* not for no MMU - weird */
+#define __NR_read              3 /* ok */
+#define __NR_write             4 /* ok */
+#define __NR_open              5 /* openat */
+#define __NR_close             6 /* ok */
+#define __NR_waitpid           7 /* waitid */
+#define __NR_creat             8 /* openat */
+#define __NR_link              9 /* linkat */
+#define __NR_unlink            10 /* unlinkat */
+#define __NR_execve            11 /* ok */
+#define __NR_chdir             12 /* ok */
+#define __NR_time              13 /* obsolete -> sys_gettimeofday */
+#define __NR_mknod             14 /* mknodat */
+#define __NR_chmod             15 /* fchmodat */
+#define __NR_lchown            16 /* ok */
+#define __NR_break             17 /* don't know */
+#define __NR_oldstat           18 /* remove */
+#define __NR_lseek             19 /* ok */
+#define __NR_getpid            20 /* ok */
+#define __NR_mount             21 /* ok */
+#define __NR_umount            22 /* ok */  /* use only umount2 */
+#define __NR_setuid            23 /* ok */
+#define __NR_getuid            24 /* ok */
+#define __NR_stime             25 /* obsolete -> sys_settimeofday */
+#define __NR_ptrace            26 /* ok */
+#define __NR_alarm             27 /* obsolete -> sys_setitimer */
+#define __NR_oldfstat          28 /* remove */
+#define __NR_pause             29 /* obsolete -> sys_rt_sigtimedwait */
+#define __NR_utime             30 /* obsolete -> sys_utimesat */
+#define __NR_stty              31 /* remove */
+#define __NR_gtty              32 /* remove */
+#define __NR_access            33 /* faccessat */
+/* can be implemented by sys_setpriority */
+#define __NR_nice              34
+#define __NR_ftime             35 /* remove */
+#define __NR_sync              36 /* ok */
+#define __NR_kill              37 /* ok */
+#define __NR_rename            38 /* renameat */
+#define __NR_mkdir             39 /* mkdirat */
+#define __NR_rmdir             40 /* unlinkat */
+#define __NR_dup               41 /* ok */
+#define __NR_pipe              42 /* ok */
+#define __NR_times             43 /* ok */
+#define __NR_prof              44 /* remove */
+#define __NR_brk               45 /* ok -mmu, nommu specific */
+#define __NR_setgid            46 /* ok */
+#define __NR_getgid            47 /* ok */
+#define __NR_signal            48 /* obsolete -> sys_rt_sigaction */
+#define __NR_geteuid           49 /* ok */
+#define __NR_getegid           50 /* ok */
+#define __NR_acct              51 /* add it and then I can disable it */
+#define __NR_umount2           52 /* remove */
+#define __NR_lock              53 /* remove */
+#define __NR_ioctl             54 /* ok */
+#define __NR_fcntl             55 /* ok -> 64bit version*/
+#define __NR_mpx               56 /* remove */
+#define __NR_setpgid           57 /* ok */
+#define __NR_ulimit            58 /* remove */
+#define __NR_oldolduname       59 /* remove */
+#define __NR_umask             60 /* ok */
+#define __NR_chroot            61 /* ok */
+#define __NR_ustat             62 /* obsolete -> statfs64 */
+#define __NR_dup2              63 /* ok */
+#define __NR_getppid           64 /* ok */
+#define __NR_getpgrp           65 /* obsolete -> sys_getpgid */
+#define __NR_setsid            66 /* ok */
+#define __NR_sigaction         67 /* obsolete -> rt_sigaction */
+#define __NR_sgetmask          68 /* obsolete -> sys_rt_sigprocmask */
+#define __NR_ssetmask          69 /* obsolete ->sys_rt_sigprocmask */
+#define __NR_setreuid          70 /* ok */
+#define __NR_setregid          71 /* ok */
+#define __NR_sigsuspend                72 /* obsolete -> rt_sigsuspend */
+#define __NR_sigpending                73 /* obsolete -> sys_rt_sigpending */
+#define __NR_sethostname       74 /* ok */
+#define __NR_setrlimit         75 /* ok */
+#define __NR_getrlimit         76 /* ok Back compatible 2G limited rlimit */
+#define __NR_getrusage         77 /* ok */
+#define __NR_gettimeofday      78 /* ok */
+#define __NR_settimeofday      79 /* ok */
+#define __NR_getgroups         80 /* ok */
+#define __NR_setgroups         81 /* ok */
+#define __NR_select            82 /* obsolete -> sys_pselect7 */
+#define __NR_symlink           83 /* symlinkat */
+#define __NR_oldlstat          84 /* remove */
+#define __NR_readlink          85 /* obsolete -> sys_readlinkat */
+#define __NR_uselib            86 /* remove */
+#define __NR_swapon            87 /* ok */
+#define __NR_reboot            88 /* ok */
+#define __NR_readdir           89 /* remove ? */
+#define __NR_mmap              90 /* obsolete -> sys_mmap2 */
+#define __NR_munmap            91 /* ok - mmu and nommu */
+#define __NR_truncate          92 /* ok or truncate64 */
+#define __NR_ftruncate         93 /* ok or ftruncate64 */
+#define __NR_fchmod            94 /* ok */
+#define __NR_fchown            95 /* ok */
+#define __NR_getpriority       96 /* ok */
+#define __NR_setpriority       97 /* ok */
+#define __NR_profil            98 /* remove */
+#define __NR_statfs            99 /* ok or statfs64 */
+#define __NR_fstatfs           100  /* ok or fstatfs64 */
+#define __NR_ioperm            101 /* remove */
+#define __NR_socketcall                102 /* remove */
+#define __NR_syslog            103 /* ok */
+#define __NR_setitimer         104 /* ok */
+#define __NR_getitimer         105 /* ok */
+#define __NR_stat              106 /* remove */
+#define __NR_lstat             107 /* remove */
+#define __NR_fstat             108 /* remove */
+#define __NR_olduname          109 /* remove */
+#define __NR_iopl              110 /* remove */
+#define __NR_vhangup           111 /* ok */
+#define __NR_idle              112 /* remove */
+#define __NR_vm86old           113 /* remove */
+#define __NR_wait4             114 /* obsolete -> waitid */
+#define __NR_swapoff           115 /* ok */
+#define __NR_sysinfo           116 /* ok */
+#define __NR_ipc               117 /* remove - direct call */
+#define __NR_fsync             118 /* ok */
+#define __NR_sigreturn         119 /* obsolete -> sys_rt_sigreturn */
+#define __NR_clone             120 /* ok */
+#define __NR_setdomainname     121 /* ok */
+#define __NR_uname             122 /* remove */
+#define __NR_modify_ldt                123 /* remove */
+#define __NR_adjtimex          124 /* ok */
+#define __NR_mprotect          125 /* remove */
+#define __NR_sigprocmask       126 /* obsolete -> sys_rt_sigprocmask */
+#define __NR_create_module     127 /* remove */
+#define __NR_init_module       128 /* ok */
+#define __NR_delete_module     129 /* ok */
+#define __NR_get_kernel_syms   130 /* remove */
+#define __NR_quotactl          131 /* ok */
+#define __NR_getpgid           132 /* ok */
+#define __NR_fchdir            133 /* ok */
+#define __NR_bdflush           134 /* remove */
+#define __NR_sysfs             135 /* needed for busybox */
+#define __NR_personality       136 /* ok */
+#define __NR_afs_syscall       137 /* Syscall for Andrew File System */
+#define __NR_setfsuid          138 /* ok */
+#define __NR_setfsgid          139 /* ok */
+#define __NR__llseek           140 /* remove only lseek */
+#define __NR_getdents          141 /* ok or getdents64 */
+#define __NR__newselect                142 /* remove */
+#define __NR_flock             143 /* ok */
+#define __NR_msync             144 /* remove */
+#define __NR_readv             145 /* ok */
+#define __NR_writev            146 /* ok */
+#define __NR_getsid            147 /* ok */
+#define __NR_fdatasync         148 /* ok */
+#define __NR__sysctl           149 /* remove */
+#define __NR_mlock             150 /* ok - nommu or mmu */
+#define __NR_munlock           151 /* ok - nommu or mmu */
+#define __NR_mlockall          152 /* ok - nommu or mmu */
+#define __NR_munlockall                153 /* ok - nommu or mmu */
+#define __NR_sched_setparam            154 /* ok */
+#define __NR_sched_getparam            155 /* ok */
+#define __NR_sched_setscheduler                156 /* ok */
+#define __NR_sched_getscheduler                157 /* ok */
+#define __NR_sched_yield               158 /* ok */
+#define __NR_sched_get_priority_max    159 /* ok */
+#define __NR_sched_get_priority_min    160 /* ok */
+#define __NR_sched_rr_get_interval     161 /* ok */
+#define __NR_nanosleep         162 /* ok */
+#define __NR_mremap            163 /* ok - nommu or mmu */
+#define __NR_setresuid         164 /* ok */
+#define __NR_getresuid         165 /* ok */
+#define __NR_vm86              166 /* remove */
+#define __NR_query_module      167 /* ok */
+#define __NR_poll              168 /* obsolete -> sys_ppoll */
+#define __NR_nfsservctl                169 /* ok */
+#define __NR_setresgid         170 /* ok */
+#define __NR_getresgid         171 /* ok */
+#define __NR_prctl             172 /* ok */
+#define __NR_rt_sigreturn      173 /* ok */
+#define __NR_rt_sigaction      174 /* ok */
+#define __NR_rt_sigprocmask    175 /* ok */
+#define __NR_rt_sigpending     176 /* ok */
+#define __NR_rt_sigtimedwait   177 /* ok */
+#define __NR_rt_sigqueueinfo   178 /* ok */
+#define __NR_rt_sigsuspend     179 /* ok */
+#define __NR_pread64           180 /* ok */
+#define __NR_pwrite64          181 /* ok */
+#define __NR_chown             182 /* obsolete -> fchownat */
+#define __NR_getcwd            183 /* ok */
+#define __NR_capget            184 /* ok */
+#define __NR_capset            185 /* ok */
+#define __NR_sigaltstack       186 /* remove */
+#define __NR_sendfile          187 /* ok -> exist 64bit version*/
+#define __NR_getpmsg           188 /* remove */
+/* remove - some people actually want streams */
+#define __NR_putpmsg           189
+/* for noMMU - group with clone -> maybe remove */
+#define __NR_vfork             190
+#define __NR_ugetrlimit                191 /* remove - SuS compliant getrlimit */
+#define __NR_mmap2             192 /* ok */
+#define __NR_truncate64                193 /* ok */
+#define __NR_ftruncate64       194 /* ok */
+#define __NR_stat64            195 /* remove _ARCH_WANT_STAT64 */
+#define __NR_lstat64           196 /* remove _ARCH_WANT_STAT64 */
+#define __NR_fstat64           197 /* remove _ARCH_WANT_STAT64 */
+#define __NR_lchown32          198 /* ok - without 32 */
+#define __NR_getuid32          199 /* ok - without 32 */
+#define __NR_getgid32          200 /* ok - without 32 */
+#define __NR_geteuid32         201 /* ok - without 32 */
+#define __NR_getegid32         202 /* ok - without 32 */
+#define __NR_setreuid32                203 /* ok - without 32 */
+#define __NR_setregid32                204 /* ok - without 32 */
+#define __NR_getgroups32       205 /* ok - without 32 */
+#define __NR_setgroups32       206 /* ok - without 32 */
+#define __NR_fchown32          207 /* ok - without 32 */
+#define __NR_setresuid32       208 /* ok - without 32 */
+#define __NR_getresuid32       209 /* ok - without 32 */
+#define __NR_setresgid32       210 /* ok - without 32 */
+#define __NR_getresgid32       211 /* ok - without 32 */
+#define __NR_chown32           212 /* ok - without 32 -obsolete -> fchownat */
+#define __NR_setuid32          213 /* ok - without 32 */
+#define __NR_setgid32          214 /* ok - without 32 */
+#define __NR_setfsuid32                215 /* ok - without 32 */
+#define __NR_setfsgid32                216 /* ok - without 32 */
+#define __NR_pivot_root                217 /* ok */
+#define __NR_mincore           218 /* ok */
+#define __NR_madvise           219 /* ok */
+#define __NR_getdents64                220 /* ok */
+#define __NR_fcntl64           221 /* ok */
+/* 223 is unused */
+#define __NR_gettid            224 /* ok */
+#define __NR_readahead         225 /* ok */
+#define __NR_setxattr          226 /* ok */
+#define __NR_lsetxattr         227 /* ok */
+#define __NR_fsetxattr         228 /* ok */
+#define __NR_getxattr          229 /* ok */
+#define __NR_lgetxattr         230 /* ok */
+#define __NR_fgetxattr         231 /* ok */
+#define __NR_listxattr         232 /* ok */
+#define __NR_llistxattr                233 /* ok */
+#define __NR_flistxattr                234 /* ok */
+#define __NR_removexattr       235 /* ok */
+#define __NR_lremovexattr      236 /* ok */
+#define __NR_fremovexattr      237 /* ok */
+#define __NR_tkill             238 /* ok */
+#define __NR_sendfile64                239 /* ok */
+#define __NR_futex             240 /* ok */
+#define __NR_sched_setaffinity 241 /* ok */
+#define __NR_sched_getaffinity 242 /* ok */
+#define __NR_set_thread_area   243 /* remove */
+#define __NR_get_thread_area   244 /* remove */
+#define __NR_io_setup          245 /* ok */
+#define __NR_io_destroy                246 /* ok */
+#define __NR_io_getevents      247 /* ok */
+#define __NR_io_submit         248 /* ok */
+#define __NR_io_cancel         249 /* ok */
+#define __NR_fadvise64         250 /* remove -> sys_fadvise64_64 */
+/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
+#define __NR_exit_group                252 /* ok */
+#define __NR_lookup_dcookie    253 /* ok */
+#define __NR_epoll_create      254 /* ok */
+#define __NR_epoll_ctl         255 /* ok */
+#define __NR_epoll_wait                256 /* obsolete -> sys_epoll_pwait */
+#define __NR_remap_file_pages  257 /* only for mmu */
+#define __NR_set_tid_address   258 /* ok */
+#define __NR_timer_create      259 /* ok */
+#define __NR_timer_settime     (__NR_timer_create+1) /* 260 */ /* ok */
+#define __NR_timer_gettime     (__NR_timer_create+2) /* 261 */ /* ok */
+#define __NR_timer_getoverrun  (__NR_timer_create+3) /* 262 */ /* ok */
+#define __NR_timer_delete      (__NR_timer_create+4) /* 263 */ /* ok */
+#define __NR_clock_settime     (__NR_timer_create+5) /* 264 */ /* ok */
+#define __NR_clock_gettime     (__NR_timer_create+6) /* 265 */ /* ok */
+#define __NR_clock_getres      (__NR_timer_create+7) /* 266 */ /* ok */
+#define __NR_clock_nanosleep   (__NR_timer_create+8) /* 267 */ /* ok */
+#define __NR_statfs64          268 /* ok */
+#define __NR_fstatfs64         269 /* ok */
+#define __NR_tgkill            270 /* ok */
+#define __NR_utimes            271 /* obsolete -> sys_futimesat */
+#define __NR_fadvise64_64      272 /* ok */
+#define __NR_vserver           273 /* ok */
+#define __NR_mbind             274 /* only for mmu */
+#define __NR_get_mempolicy     275 /* only for mmu */
+#define __NR_set_mempolicy     276 /* only for mmu */
+#define __NR_mq_open           277 /* ok */
+#define __NR_mq_unlink         (__NR_mq_open+1) /* 278 */ /* ok */
+#define __NR_mq_timedsend      (__NR_mq_open+2) /* 279 */ /* ok */
+#define __NR_mq_timedreceive   (__NR_mq_open+3) /* 280 */ /* ok */
+#define __NR_mq_notify         (__NR_mq_open+4) /* 281 */ /* ok */
+#define __NR_mq_getsetattr     (__NR_mq_open+5) /* 282 */ /* ok */
+#define __NR_kexec_load                283 /* ok */
+#define __NR_waitid            284 /* ok */
+/* #define __NR_sys_setaltroot 285 */
+#define __NR_add_key           286 /* ok */
+#define __NR_request_key       287 /* ok */
+#define __NR_keyctl            288 /* ok */
+#define __NR_ioprio_set                289 /* ok */
+#define __NR_ioprio_get                290 /* ok */
+#define __NR_inotify_init      291 /* ok */
+#define __NR_inotify_add_watch 292 /* ok */
+#define __NR_inotify_rm_watch  293 /* ok */
+#define __NR_migrate_pages     294 /* mmu */
+#define __NR_openat            295 /* ok */
+#define __NR_mkdirat           296 /* ok */
+#define __NR_mknodat           297 /* ok */
+#define __NR_fchownat          298 /* ok */
+#define __NR_futimesat         299 /* obsolete -> sys_utimesat */
+#define __NR_fstatat64         300 /* stat64 */
+#define __NR_unlinkat          301 /* ok */
+#define __NR_renameat          302 /* ok */
+#define __NR_linkat            303 /* ok */
+#define __NR_symlinkat         304 /* ok */
+#define __NR_readlinkat                305 /* ok */
+#define __NR_fchmodat          306 /* ok */
+#define __NR_faccessat         307 /* ok */
+#define __NR_pselect6          308 /* obsolete -> sys_pselect7 */
+#define __NR_ppoll             309 /* ok */
+#define __NR_unshare           310 /* ok */
+#define __NR_set_robust_list   311 /* ok */
+#define __NR_get_robust_list   312 /* ok */
+#define __NR_splice            313 /* ok */
+#define __NR_sync_file_range   314 /* ok */
+#define __NR_tee               315 /* ok */
+#define __NR_vmsplice          316 /* ok */
+#define __NR_move_pages                317 /* mmu */
+#define __NR_getcpu            318 /* ok */
+#define __NR_epoll_pwait       319 /* ok */
+#define __NR_utimensat         320 /* ok */
+#define __NR_signalfd          321 /* ok */
+#define __NR_timerfd_create    322 /* ok */
+#define __NR_eventfd           323 /* ok */
+#define __NR_fallocate         324 /* ok */
+#define __NR_semtimedop                325 /* ok - semaphore group */
+#define __NR_timerfd_settime   326 /* ok */
+#define __NR_timerfd_gettime   327 /* ok */
+/* sysv ipc syscalls */
+#define __NR_semctl            328 /* ok */
+#define __NR_semget            329 /* ok */
+#define __NR_semop             330 /* ok */
+#define __NR_msgctl            331 /* ok */
+#define __NR_msgget            332 /* ok */
+#define __NR_msgrcv            333 /* ok */
+#define __NR_msgsnd            334 /* ok */
+#define __NR_shmat             335 /* ok */
+#define __NR_shmctl            336 /* ok */
+#define __NR_shmdt             337 /* ok */
+#define __NR_shmget            338 /* ok */
+
+
+#define __NR_signalfd4         339 /* new */
+#define __NR_eventfd2          340 /* new */
+#define __NR_epoll_create1     341 /* new */
+#define __NR_dup3              342 /* new */
+#define __NR_pipe2             343 /* new */
+#define __NR_inotify_init1     344 /* new */
+#define __NR_socket            345 /* new */
+#define __NR_socketpair                346 /* new */
+#define __NR_bind              347 /* new */
+#define __NR_listen            348 /* new */
+#define __NR_accept            349 /* new */
+#define __NR_connect           350 /* new */
+#define __NR_getsockname       351 /* new */
+#define __NR_getpeername       352 /* new */
+#define __NR_sendto            353 /* new */
+#define __NR_send              354 /* new */
+#define __NR_recvfrom          355 /* new */
+#define __NR_recv              356 /* new */
+#define __NR_setsockopt                357 /* new */
+#define __NR_getsockopt                358 /* new */
+#define __NR_shutdown          359 /* new */
+#define __NR_sendmsg           360 /* new */
+#define __NR_recvmsg           361 /* new */
+#define __NR_accept04          362 /* new */
+
+#define __NR_syscalls          363
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+#define __ARCH_WANT_IPC_PARSE_VERSION
+/* #define __ARCH_WANT_OLD_READDIR */
+/* #define __ARCH_WANT_OLD_STAT */
+#define __ARCH_WANT_STAT64
+#define __ARCH_WANT_SYS_ALARM
+#define __ARCH_WANT_SYS_GETHOSTNAME
+#define __ARCH_WANT_SYS_PAUSE
+#define __ARCH_WANT_SYS_SGETMASK
+#define __ARCH_WANT_SYS_SIGNAL
+#define __ARCH_WANT_SYS_TIME
+#define __ARCH_WANT_SYS_UTIME
+#define __ARCH_WANT_SYS_WAITPID
+#define __ARCH_WANT_SYS_SOCKETCALL
+#define __ARCH_WANT_SYS_FADVISE64
+#define __ARCH_WANT_SYS_GETPGRP
+#define __ARCH_WANT_SYS_LLSEEK
+#define __ARCH_WANT_SYS_NICE
+/* #define __ARCH_WANT_SYS_OLD_GETRLIMIT */
+#define __ARCH_WANT_SYS_OLDUMOUNT
+#define __ARCH_WANT_SYS_SIGPENDING
+#define __ARCH_WANT_SYS_SIGPROCMASK
+#define __ARCH_WANT_SYS_RT_SIGACTION
+/* #define __ARCH_WANT_SYS_RT_SIGSUSPEND */
+
+/*
+ * "Conditional" syscalls
+ *
+ * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
+ * but it doesn't work on all toolchains, so we just do it by hand
+ */
+#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
+
+#endif /* __ASSEMBLY__ */
+#endif /* __KERNEL__ */
+#endif /* _ASM_MICROBLAZE_UNISTD_H */
diff --git a/arch/microblaze/include/asm/user.h b/arch/microblaze/include/asm/user.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/arch/microblaze/include/asm/vga.h b/arch/microblaze/include/asm/vga.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/arch/microblaze/include/asm/xor.h b/arch/microblaze/include/asm/xor.h
new file mode 100644 (file)
index 0000000..c82eb12
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/xor.h>
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile
new file mode 100644 (file)
index 0000000..da94bec
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# Makefile
+#
+
+extra-y := head.o vmlinux.lds
+
+obj-y += exceptions.o \
+       hw_exception_handler.o init_task.o intc.o irq.o of_device.o \
+       of_platform.o process.o prom.o prom_parse.o ptrace.o \
+       setup.o signal.o sys_microblaze.o timer.o traps.o
+
+obj-y += cpu/
+
+obj-$(CONFIG_EARLY_PRINTK)     += early_printk.o
+obj-$(CONFIG_SELFMOD)          += selfmod.o
+obj-$(CONFIG_HEART_BEAT)       += heartbeat.o
+obj-$(CONFIG_MODULES)          += microblaze_ksyms.o module.o
+
+obj-y  += entry$(MMUEXT).o
diff --git a/arch/microblaze/kernel/asm-offsets.c b/arch/microblaze/kernel/asm-offsets.c
new file mode 100644 (file)
index 0000000..38e1a2e
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/stddef.h>
+#include <linux/sched.h>
+#include <linux/kernel_stat.h>
+#include <linux/ptrace.h>
+#include <linux/hardirq.h>
+#include <linux/thread_info.h>
+#include <linux/kbuild.h>
+
+int main(int argc, char *argv[])
+{
+       /* struct pt_regs */
+       DEFINE(PT_SIZE, sizeof(struct pt_regs));
+       DEFINE(PT_MSR, offsetof(struct pt_regs, msr));
+       DEFINE(PT_EAR, offsetof(struct pt_regs, ear));
+       DEFINE(PT_ESR, offsetof(struct pt_regs, esr));
+       DEFINE(PT_FSR, offsetof(struct pt_regs, fsr));
+       DEFINE(PT_PC, offsetof(struct pt_regs, pc));
+       DEFINE(PT_R0, offsetof(struct pt_regs, r0));
+       DEFINE(PT_R1, offsetof(struct pt_regs, r1));
+       DEFINE(PT_R2, offsetof(struct pt_regs, r2));
+       DEFINE(PT_R3, offsetof(struct pt_regs, r3));
+       DEFINE(PT_R4, offsetof(struct pt_regs, r4));
+       DEFINE(PT_R5, offsetof(struct pt_regs, r5));
+       DEFINE(PT_R6, offsetof(struct pt_regs, r6));
+       DEFINE(PT_R7, offsetof(struct pt_regs, r7));
+       DEFINE(PT_R8, offsetof(struct pt_regs, r8));
+       DEFINE(PT_R9, offsetof(struct pt_regs, r9));
+       DEFINE(PT_R10, offsetof(struct pt_regs, r10));
+       DEFINE(PT_R11, offsetof(struct pt_regs, r11));
+       DEFINE(PT_R12, offsetof(struct pt_regs, r12));
+       DEFINE(PT_R13, offsetof(struct pt_regs, r13));
+       DEFINE(PT_R14, offsetof(struct pt_regs, r14));
+       DEFINE(PT_R15, offsetof(struct pt_regs, r15));
+       DEFINE(PT_R16, offsetof(struct pt_regs, r16));
+       DEFINE(PT_R17, offsetof(struct pt_regs, r17));
+       DEFINE(PT_R18, offsetof(struct pt_regs, r18));
+       DEFINE(PT_R19, offsetof(struct pt_regs, r19));
+       DEFINE(PT_R20, offsetof(struct pt_regs, r20));
+       DEFINE(PT_R21, offsetof(struct pt_regs, r21));
+       DEFINE(PT_R22, offsetof(struct pt_regs, r22));
+       DEFINE(PT_R23, offsetof(struct pt_regs, r23));
+       DEFINE(PT_R24, offsetof(struct pt_regs, r24));
+       DEFINE(PT_R25, offsetof(struct pt_regs, r25));
+       DEFINE(PT_R26, offsetof(struct pt_regs, r26));
+       DEFINE(PT_R27, offsetof(struct pt_regs, r27));
+       DEFINE(PT_R28, offsetof(struct pt_regs, r28));
+       DEFINE(PT_R29, offsetof(struct pt_regs, r29));
+       DEFINE(PT_R30, offsetof(struct pt_regs, r30));
+       DEFINE(PT_R31, offsetof(struct pt_regs, r31));
+       DEFINE(PT_MODE, offsetof(struct pt_regs, kernel_mode));
+       BLANK();
+
+       /* Magic offsets for PTRACE PEEK/POKE etc */
+       DEFINE(PT_TEXT_ADDR, sizeof(struct pt_regs) + 1);
+       DEFINE(PT_TEXT_LEN, sizeof(struct pt_regs) + 2);
+       DEFINE(PT_DATA_ADDR, sizeof(struct pt_regs) + 3);
+       BLANK();
+
+       /* struct task_struct */
+       DEFINE(TS_THREAD_INFO, offsetof(struct task_struct, stack));
+
+       /* struct thread_info */
+       DEFINE(TI_TASK, offsetof(struct thread_info, task));
+       DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain));
+       DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
+       DEFINE(TI_STATUS, offsetof(struct thread_info, status));
+       DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
+       DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count));
+       DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit));
+       DEFINE(TI_RESTART_BLOCK, offsetof(struct thread_info, restart_block));
+       DEFINE(TI_CPU_CONTEXT, offsetof(struct thread_info, cpu_context));
+       BLANK();
+
+       /* struct cpu_context */
+       DEFINE(CC_R1, offsetof(struct cpu_context, r1)); /* r1 */
+       DEFINE(CC_R2, offsetof(struct cpu_context, r2));
+       /* dedicated registers */
+       DEFINE(CC_R13, offsetof(struct cpu_context, r13));
+       DEFINE(CC_R14, offsetof(struct cpu_context, r14));
+       DEFINE(CC_R15, offsetof(struct cpu_context, r15));
+       DEFINE(CC_R16, offsetof(struct cpu_context, r16));
+       DEFINE(CC_R17, offsetof(struct cpu_context, r17));
+       DEFINE(CC_R18, offsetof(struct cpu_context, r18));
+       /* non-volatile registers */
+       DEFINE(CC_R19, offsetof(struct cpu_context, r19));
+       DEFINE(CC_R20, offsetof(struct cpu_context, r20));
+       DEFINE(CC_R21, offsetof(struct cpu_context, r21));
+       DEFINE(CC_R22, offsetof(struct cpu_context, r22));
+       DEFINE(CC_R23, offsetof(struct cpu_context, r23));
+       DEFINE(CC_R24, offsetof(struct cpu_context, r24));
+       DEFINE(CC_R25, offsetof(struct cpu_context, r25));
+       DEFINE(CC_R26, offsetof(struct cpu_context, r26));
+       DEFINE(CC_R27, offsetof(struct cpu_context, r27));
+       DEFINE(CC_R28, offsetof(struct cpu_context, r28));
+       DEFINE(CC_R29, offsetof(struct cpu_context, r29));
+       DEFINE(CC_R30, offsetof(struct cpu_context, r30));
+       /* special purpose registers */
+       DEFINE(CC_MSR, offsetof(struct cpu_context, msr));
+       DEFINE(CC_EAR, offsetof(struct cpu_context, ear));
+       DEFINE(CC_ESR, offsetof(struct cpu_context, esr));
+       DEFINE(CC_FSR, offsetof(struct cpu_context, fsr));
+       BLANK();
+
+       return 0;
+}
diff --git a/arch/microblaze/kernel/cpu/Makefile b/arch/microblaze/kernel/cpu/Makefile
new file mode 100644 (file)
index 0000000..20646e5
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Build the appropriate CPU version support
+#
+
+EXTRA_CFLAGS += -DCPU_MAJOR=$(CPU_MAJOR) -DCPU_MINOR=$(CPU_MINOR) \
+               -DCPU_REV=$(CPU_REV)
+
+obj-y += cache.o cpuinfo.o cpuinfo-pvr-full.o cpuinfo-static.o mb.o pvr.o
diff --git a/arch/microblaze/kernel/cpu/cache.c b/arch/microblaze/kernel/cpu/cache.c
new file mode 100644 (file)
index 0000000..be9fecc
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * Cache control for MicroBlaze cache memories
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * 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.
+ */
+
+#include <asm/cacheflush.h>
+#include <linux/cache.h>
+#include <asm/cpuinfo.h>
+
+/* Exported functions */
+
+void _enable_icache(void)
+{
+       if (cpuinfo.use_icache) {
+#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+               __asm__ __volatile__ ("                                 \
+                               msrset  r0, %0;                         \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_ICE)                         \
+                               : "memory");
+#else
+               __asm__ __volatile__ ("                                 \
+                               mfs     r12, rmsr;                      \
+                               nop;                                    \
+                               ori     r12, r12, %0;                   \
+                               mts     rmsr, r12;                      \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_ICE)                         \
+                               : "memory", "r12");
+#endif
+       }
+}
+
+void _disable_icache(void)
+{
+       if (cpuinfo.use_icache) {
+#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+               __asm__ __volatile__ ("                                 \
+                               msrclr r0, %0;                          \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_ICE)                         \
+                               : "memory");
+#else
+               __asm__ __volatile__ ("                                 \
+                               mfs     r12, rmsr;                      \
+                               nop;                                    \
+                               andi    r12, r12, ~%0;                  \
+                               mts     rmsr, r12;                      \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_ICE)                         \
+                               : "memory", "r12");
+#endif
+       }
+}
+
+void _invalidate_icache(unsigned int addr)
+{
+       if (cpuinfo.use_icache) {
+               __asm__ __volatile__ ("                                 \
+                               wic     %0, r0"                         \
+                               :                                       \
+                               : "r" (addr));
+       }
+}
+
+void _enable_dcache(void)
+{
+       if (cpuinfo.use_dcache) {
+#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+               __asm__ __volatile__ ("                                 \
+                               msrset  r0, %0;                         \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_DCE)                         \
+                               : "memory");
+#else
+               __asm__ __volatile__ ("                                 \
+                               mfs     r12, rmsr;                      \
+                               nop;                                    \
+                               ori     r12, r12, %0;                   \
+                               mts     rmsr, r12;                      \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_DCE)                 \
+                               : "memory", "r12");
+#endif
+       }
+}
+
+void _disable_dcache(void)
+{
+       if (cpuinfo.use_dcache) {
+#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+               __asm__ __volatile__ ("                                 \
+                               msrclr  r0, %0;                         \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_DCE)                 \
+                               : "memory");
+#else
+               __asm__ __volatile__ ("                                 \
+                               mfs     r12, rmsr;                      \
+                               nop;                                    \
+                               andi    r12, r12, ~%0;                  \
+                               mts     rmsr, r12;                      \
+                               nop; "                                  \
+                               :                                       \
+                               : "i" (MSR_DCE)                 \
+                               : "memory", "r12");
+#endif
+       }
+}
+
+void _invalidate_dcache(unsigned int addr)
+{
+       if (cpuinfo.use_dcache)
+               __asm__ __volatile__ ("                                 \
+                               wdc     %0, r0"                         \
+                               :                                       \
+                               : "r" (addr));
+}
+
+void __invalidate_icache_all(void)
+{
+       unsigned int i;
+       unsigned flags;
+
+       if (cpuinfo.use_icache) {
+               local_irq_save(flags);
+               __disable_icache();
+
+               /* Just loop through cache size and invalidate, no need to add
+                       CACHE_BASE address */
+               for (i = 0; i < cpuinfo.icache_size;
+                       i += cpuinfo.icache_line)
+                               __invalidate_icache(i);
+
+               __enable_icache();
+               local_irq_restore(flags);
+       }
+}
+
+void __invalidate_icache_range(unsigned long start, unsigned long end)
+{
+       unsigned int i;
+       unsigned flags;
+       unsigned int align;
+
+       if (cpuinfo.use_icache) {
+               /*
+                * No need to cover entire cache range,
+                * just cover cache footprint
+                */
+               end = min(start + cpuinfo.icache_size, end);
+               align = ~(cpuinfo.icache_line - 1);
+               start &= align; /* Make sure we are aligned */
+               /* Push end up to the next cache line */
+               end = ((end & align) + cpuinfo.icache_line);
+
+               local_irq_save(flags);
+               __disable_icache();
+
+               for (i = start; i < end; i += cpuinfo.icache_line)
+                       __invalidate_icache(i);
+
+               __enable_icache();
+               local_irq_restore(flags);
+       }
+}
+
+void __invalidate_icache_page(struct vm_area_struct *vma, struct page *page)
+{
+       __invalidate_icache_all();
+}
+
+void __invalidate_icache_user_range(struct vm_area_struct *vma,
+                               struct page *page, unsigned long adr,
+                               int len)
+{
+       __invalidate_icache_all();
+}
+
+void __invalidate_cache_sigtramp(unsigned long addr)
+{
+       __invalidate_icache_range(addr, addr + 8);
+}
+
+void __invalidate_dcache_all(void)
+{
+       unsigned int i;
+       unsigned flags;
+
+       if (cpuinfo.use_dcache) {
+               local_irq_save(flags);
+               __disable_dcache();
+
+               /*
+                * Just loop through cache size and invalidate,
+                * no need to add CACHE_BASE address
+                */
+               for (i = 0; i < cpuinfo.dcache_size;
+                       i += cpuinfo.dcache_line)
+                               __invalidate_dcache(i);
+
+               __enable_dcache();
+               local_irq_restore(flags);
+       }
+}
+
+void __invalidate_dcache_range(unsigned long start, unsigned long end)
+{
+       unsigned int i;
+       unsigned flags;
+       unsigned int align;
+
+       if (cpuinfo.use_dcache) {
+               /*
+                * No need to cover entire cache range,
+                * just cover cache footprint
+                */
+               end = min(start + cpuinfo.dcache_size, end);
+               align = ~(cpuinfo.dcache_line - 1);
+               start &= align; /* Make sure we are aligned */
+               /* Push end up to the next cache line */
+               end = ((end & align) + cpuinfo.dcache_line);
+               local_irq_save(flags);
+               __disable_dcache();
+
+               for (i = start; i < end; i += cpuinfo.dcache_line)
+                       __invalidate_dcache(i);
+
+               __enable_dcache();
+               local_irq_restore(flags);
+       }
+}
+
+void __invalidate_dcache_page(struct vm_area_struct *vma, struct page *page)
+{
+       __invalidate_dcache_all();
+}
+
+void __invalidate_dcache_user_range(struct vm_area_struct *vma,
+                               struct page *page, unsigned long adr,
+                               int len)
+{
+       __invalidate_dcache_all();
+}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c b/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c
new file mode 100644 (file)
index 0000000..cf7424a
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Support for MicroBlaze PVR (processor version register)
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/string.h>
+#include <asm/pvr.h>
+#include <asm/cpuinfo.h>
+
+/*
+ * Helper macro to map between fields in our struct cpuinfo, and
+ * the PVR macros in pvr.h.
+ */
+
+#define CI(c, p) { ci->c = PVR_##p(pvr); }
+#define err_printk(x) \
+       early_printk("ERROR: Microblaze " x " - different for PVR and DTS\n");
+
+void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu)
+{
+       struct pvr_s pvr;
+       int temp; /* for saving temp value */
+       get_pvr(&pvr);
+
+       temp = PVR_USE_BARREL(pvr) | PVR_USE_MSR_INSTR(pvr) |\
+               PVR_USE_PCMP_INSTR(pvr) | PVR_USE_DIV(pvr);
+       if (ci->use_instr != temp)
+               err_printk("BARREL, MSR, PCMP or DIV");
+       ci->use_instr = temp;
+
+       temp = PVR_USE_HW_MUL(pvr) | PVR_USE_MUL64(pvr);
+       if (ci->use_mult != temp)
+               err_printk("HW_MUL");
+       ci->use_mult = temp;
+
+       temp = PVR_USE_FPU(pvr) | PVR_USE_FPU2(pvr);
+       if (ci->use_fpu != temp)
+               err_printk("HW_FPU");
+       ci->use_fpu = temp;
+
+       ci->use_exc = PVR_OPCODE_0x0_ILLEGAL(pvr) |\
+                       PVR_UNALIGNED_EXCEPTION(pvr) |\
+                       PVR_ILL_OPCODE_EXCEPTION(pvr) |\
+                       PVR_IOPB_BUS_EXCEPTION(pvr) |\
+                       PVR_DOPB_BUS_EXCEPTION(pvr) |\
+                       PVR_DIV_ZERO_EXCEPTION(pvr) |\
+                       PVR_FPU_EXCEPTION(pvr) |\
+                       PVR_FSL_EXCEPTION(pvr);
+
+       CI(pvr_user1, USER1);
+       CI(pvr_user2, USER2);
+
+       CI(mmu, USE_MMU);
+
+       CI(ver_code, VERSION);
+
+       CI(use_icache, USE_ICACHE);
+       CI(icache_tagbits, ICACHE_ADDR_TAG_BITS);
+       CI(icache_write, ICACHE_ALLOW_WR);
+       CI(icache_line, ICACHE_LINE_LEN);
+       CI(icache_size, ICACHE_BYTE_SIZE);
+       CI(icache_base, ICACHE_BASEADDR);
+       CI(icache_high, ICACHE_HIGHADDR);
+
+       CI(use_dcache, USE_DCACHE);
+       CI(dcache_tagbits, DCACHE_ADDR_TAG_BITS);
+       CI(dcache_write, DCACHE_ALLOW_WR);
+       CI(dcache_line, DCACHE_LINE_LEN);
+       CI(dcache_size, DCACHE_BYTE_SIZE);
+       CI(dcache_base, DCACHE_BASEADDR);
+       CI(dcache_high, DCACHE_HIGHADDR);
+
+       CI(use_dopb, D_OPB);
+       CI(use_iopb, I_OPB);
+       CI(use_dlmb, D_LMB);
+       CI(use_ilmb, I_LMB);
+       CI(num_fsl, FSL_LINKS);
+
+       CI(irq_edge, INTERRUPT_IS_EDGE);
+       CI(irq_positive, EDGE_IS_POSITIVE);
+
+       CI(area_optimised, AREA_OPTIMISED);
+
+       CI(hw_debug, DEBUG_ENABLED);
+       CI(num_pc_brk, NUMBER_OF_PC_BRK);
+       CI(num_rd_brk, NUMBER_OF_RD_ADDR_BRK);
+       CI(num_wr_brk, NUMBER_OF_WR_ADDR_BRK);
+
+       CI(fpga_family_code, TARGET_FAMILY);
+
+       /* take timebase-frequency from DTS */
+       ci->cpu_clock_freq = fcpu(cpu, "timebase-frequency");
+}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo-static.c b/arch/microblaze/kernel/cpu/cpuinfo-static.c
new file mode 100644 (file)
index 0000000..cfe44ef
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/string.h>
+#include <asm/cpuinfo.h>
+#include <asm/pvr.h>
+
+const static char family_string[] = CONFIG_XILINX_MICROBLAZE0_FAMILY;
+const static char cpu_ver_string[] = CONFIG_XILINX_MICROBLAZE0_HW_VER;
+
+#define err_printk(x) \
+       early_printk("ERROR: Microblaze " x "- different for kernel and DTS\n");
+
+void __init set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu)
+{
+       int i = 0;
+
+       ci->use_instr =
+               (fcpu(cpu, "xlnx,use-barrel") ? PVR0_USE_BARREL_MASK : 0) |
+               (fcpu(cpu, "xlnx,use-msr-instr") ? PVR2_USE_MSR_INSTR : 0) |
+               (fcpu(cpu, "xlnx,use-pcmp-instr") ? PVR2_USE_PCMP_INSTR : 0) |
+               (fcpu(cpu, "xlnx,use-div") ? PVR0_USE_DIV_MASK : 0);
+       if (CONFIG_XILINX_MICROBLAZE0_USE_BARREL)
+               i |= PVR0_USE_BARREL_MASK;
+       if (CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR)
+               i |= PVR2_USE_MSR_INSTR;
+       if (CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR)
+               i |= PVR2_USE_PCMP_INSTR;
+       if (CONFIG_XILINX_MICROBLAZE0_USE_DIV)
+               i |= PVR0_USE_DIV_MASK;
+       if (ci->use_instr != i)
+               err_printk("BARREL, MSR, PCMP or DIV");
+
+       ci->use_mult = fcpu(cpu, "xlnx,use-hw-mul");
+       if (ci->use_mult != CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)
+               err_printk("HW_MUL");
+       ci->use_mult =
+               (ci->use_mult > 1 ?
+                               (PVR2_USE_MUL64_MASK | PVR0_USE_HW_MUL_MASK) :
+                               (ci->use_mult == 1 ? PVR0_USE_HW_MUL_MASK : 0));
+
+       ci->use_fpu = fcpu(cpu, "xlnx,use-fpu");
+       if (ci->use_fpu != CONFIG_XILINX_MICROBLAZE0_USE_FPU)
+               err_printk("HW_FPU");
+       ci->use_fpu = (ci->use_fpu > 1 ?
+                               (PVR2_USE_FPU2_MASK | PVR0_USE_FPU_MASK) :
+                               (ci->use_fpu == 1 ? PVR0_USE_FPU_MASK : 0));
+
+       ci->use_exc =
+               (fcpu(cpu, "xlnx,unaligned-exceptions") ?
+                               PVR2_UNALIGNED_EXC_MASK : 0) |
+               (fcpu(cpu, "xlnx,ill-opcode-exception") ?
+                               PVR2_ILL_OPCODE_EXC_MASK : 0) |
+               (fcpu(cpu, "xlnx,iopb-bus-exception") ?
+                               PVR2_IOPB_BUS_EXC_MASK : 0) |
+               (fcpu(cpu, "xlnx,dopb-bus-exception") ?
+                               PVR2_DOPB_BUS_EXC_MASK : 0) |
+               (fcpu(cpu, "xlnx,div-zero-exception") ?
+                               PVR2_DIV_ZERO_EXC_MASK : 0) |
+               (fcpu(cpu, "xlnx,fpu-exception") ? PVR2_FPU_EXC_MASK : 0) |
+               (fcpu(cpu, "xlnx,fsl-exception") ? PVR2_USE_EXTEND_FSL : 0);
+
+       ci->use_icache = fcpu(cpu, "xlnx,use-icache");
+       ci->icache_tagbits = fcpu(cpu, "xlnx,addr-tag-bits");
+       ci->icache_write = fcpu(cpu, "xlnx,allow-icache-wr");
+       ci->icache_line = fcpu(cpu, "xlnx,icache-line-len") << 2;
+       if (!ci->icache_line) {
+               if (fcpu(cpu, "xlnx,icache-use-fsl"))
+                       ci->icache_line = 4 << 2;
+               else
+                       ci->icache_line = 1 << 2;
+       }
+       ci->icache_size = fcpu(cpu, "i-cache-size");
+       ci->icache_base = fcpu(cpu, "i-cache-baseaddr");
+       ci->icache_high = fcpu(cpu, "i-cache-highaddr");
+
+       ci->use_dcache = fcpu(cpu, "xlnx,use-dcache");
+       ci->dcache_tagbits = fcpu(cpu, "xlnx,dcache-addr-tag");
+       ci->dcache_write = fcpu(cpu, "xlnx,allow-dcache-wr");
+       ci->dcache_line = fcpu(cpu, "xlnx,dcache-line-len") << 2;
+       if (!ci->dcache_line) {
+               if (fcpu(cpu, "xlnx,dcache-use-fsl"))
+                       ci->dcache_line = 4 << 2;
+               else
+                       ci->dcache_line = 1 << 2;
+       }
+       ci->dcache_size = fcpu(cpu, "d-cache-size");
+       ci->dcache_base = fcpu(cpu, "d-cache-baseaddr");
+       ci->dcache_high = fcpu(cpu, "d-cache-highaddr");
+
+       ci->use_dopb = fcpu(cpu, "xlnx,d-opb");
+       ci->use_iopb = fcpu(cpu, "xlnx,i-opb");
+       ci->use_dlmb = fcpu(cpu, "xlnx,d-lmb");
+       ci->use_ilmb = fcpu(cpu, "xlnx,i-lmb");
+
+       ci->num_fsl = fcpu(cpu, "xlnx,fsl-links");
+       ci->irq_edge = fcpu(cpu, "xlnx,interrupt-is-edge");
+       ci->irq_positive = fcpu(cpu, "xlnx,edge-is-positive");
+       ci->area_optimised = 0;
+
+       ci->hw_debug = fcpu(cpu, "xlnx,debug-enabled");
+       ci->num_pc_brk = fcpu(cpu, "xlnx,number-of-pc-brk");
+       ci->num_rd_brk = fcpu(cpu, "xlnx,number-of-rd-addr-brk");
+       ci->num_wr_brk = fcpu(cpu, "xlnx,number-of-wr-addr-brk");
+
+       ci->cpu_clock_freq = fcpu(cpu, "timebase-frequency");
+
+       ci->pvr_user1 = fcpu(cpu, "xlnx,pvr-user1");
+       ci->pvr_user2 = fcpu(cpu, "xlnx,pvr-user2");
+
+       ci->mmu = fcpu(cpu, "xlnx,use-mmu");
+
+       ci->ver_code = 0;
+       ci->fpga_family_code = 0;
+
+       /* Do various fixups based on CPU version and FPGA family strings */
+
+       /* Resolved the CPU version code */
+       for (i = 0; cpu_ver_lookup[i].s != NULL; i++) {
+               if (strcmp(cpu_ver_lookup[i].s, cpu_ver_string) == 0)
+                       ci->ver_code = cpu_ver_lookup[i].k;
+       }
+
+       /* Resolved the fpga family code */
+       for (i = 0; family_string_lookup[i].s != NULL; i++) {
+               if (strcmp(family_string_lookup[i].s, family_string) == 0)
+                       ci->fpga_family_code = family_string_lookup[i].k;
+       }
+
+       /* FIXME - mb3 and spartan2 do not exist in PVR */
+       /* This is mb3 and on a non Spartan2 */
+       if (ci->ver_code == 0x20 && ci->fpga_family_code != 0xf0)
+               /* Hardware Multiplier in use */
+               ci->use_mult = 1;
+}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo.c b/arch/microblaze/kernel/cpu/cpuinfo.c
new file mode 100644 (file)
index 0000000..4a740df
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <asm/cpuinfo.h>
+#include <asm/pvr.h>
+
+const struct cpu_ver_key cpu_ver_lookup[] = {
+       /* These key value are as per MBV field in PVR0 */
+       {"5.00.a", 0x01},
+       {"5.00.b", 0x02},
+       {"5.00.c", 0x03},
+       {"6.00.a", 0x04},
+       {"6.00.b", 0x06},
+       {"7.00.a", 0x05},
+       {"7.00.b", 0x07},
+       {"7.10.a", 0x08},
+       {"7.10.b", 0x09},
+       {"7.10.c", 0x0a},
+       {"7.10.d", 0x0b},
+       /* FIXME There is no keycode defined in MBV for these versions */
+       {"2.10.a", 0x10},
+       {"3.00.a", 0x20},
+       {"4.00.a", 0x30},
+       {"4.00.b", 0x40},
+       {NULL, 0},
+};
+
+/*
+ * FIXME Not sure if the actual key is defined by Xilinx in the PVR
+ */
+const struct family_string_key family_string_lookup[] = {
+       {"virtex2", 0x4},
+       {"virtex2pro", 0x5},
+       {"spartan3", 0x6},
+       {"virtex4", 0x7},
+       {"virtex5", 0x8},
+       {"spartan3e", 0x9},
+       {"spartan3a", 0xa},
+       {"spartan3an", 0xb},
+       {"spartan3adsp", 0xc},
+       /* FIXME There is no key code defined for spartan2 */
+       {"spartan2", 0xf0},
+       {NULL, 0},
+};
+
+struct cpuinfo cpuinfo;
+
+void __init setup_cpuinfo(void)
+{
+       struct device_node *cpu = NULL;
+
+       cpu = (struct device_node *) of_find_node_by_type(NULL, "cpu");
+       if (!cpu)
+               printk(KERN_ERR "You don't have cpu!!!\n");
+
+       printk(KERN_INFO "%s: initialising\n", __func__);
+
+       switch (cpu_has_pvr()) {
+       case 0:
+               printk(KERN_WARNING
+                       "%s: No PVR support. Using static CPU info from FDT\n",
+                       __func__);
+               set_cpuinfo_static(&cpuinfo, cpu);
+               break;
+/* FIXME I found weird behavior with MB 7.00.a/b
+ * please do not use FULL PVR with MMU */
+       case 1:
+               printk(KERN_INFO "%s: Using full CPU PVR support\n",
+                       __func__);
+               set_cpuinfo_static(&cpuinfo, cpu);
+               set_cpuinfo_pvr_full(&cpuinfo, cpu);
+               break;
+       default:
+               printk(KERN_WARNING "%s: Unsupported PVR setting\n", __func__);
+               set_cpuinfo_static(&cpuinfo, cpu);
+       }
+}
diff --git a/arch/microblaze/kernel/cpu/mb.c b/arch/microblaze/kernel/cpu/mb.c
new file mode 100644 (file)
index 0000000..3b6212b
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * CPU-version specific code
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006-2009 PetaLogix
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/string.h>
+#include <linux/seq_file.h>
+#include <linux/cpu.h>
+#include <linux/initrd.h>
+
+#include <linux/bug.h>
+#include <asm/cpuinfo.h>
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <asm/page.h>
+#include <linux/param.h>
+#include <asm/pvr.h>
+#include <asm/sections.h>
+#include <asm/setup.h>
+
+static int show_cpuinfo(struct seq_file *m, void *v)
+{
+       int count = 0;
+       char *fpga_family = "Unknown";
+       char *cpu_ver = "Unknown";
+       int i;
+
+       /* Denormalised to get the fpga family string */
+       for (i = 0; family_string_lookup[i].s != NULL; i++) {
+               if (cpuinfo.fpga_family_code == family_string_lookup[i].k) {
+                       fpga_family = (char *)family_string_lookup[i].s;
+                       break;
+               }
+       }
+
+       /* Denormalised to get the hw version string */
+       for (i = 0; cpu_ver_lookup[i].s != NULL; i++) {
+               if (cpuinfo.ver_code == cpu_ver_lookup[i].k) {
+                       cpu_ver = (char *)cpu_ver_lookup[i].s;
+                       break;
+               }
+       }
+
+       count = seq_printf(m,
+                       "CPU-Family:    MicroBlaze\n"
+                       "FPGA-Arch:     %s\n"
+                       "CPU-Ver:       %s\n"
+                       "CPU-MHz:       %d.%02d\n"
+                       "BogoMips:      %lu.%02lu\n",
+                       fpga_family,
+                       cpu_ver,
+                       cpuinfo.cpu_clock_freq /
+                       1000000,
+                       cpuinfo.cpu_clock_freq %
+                       1000000,
+                       loops_per_jiffy / (500000 / HZ),
+                       (loops_per_jiffy / (5000 / HZ)) % 100);
+
+       count += seq_printf(m,
+               "HW:\n Shift:\t\t%s\n"
+               " MSR:\t\t%s\n"
+               " PCMP:\t\t%s\n"
+               " DIV:\t\t%s\n",
+               (cpuinfo.use_instr & PVR0_USE_BARREL_MASK) ? "yes" : "no",
+               (cpuinfo.use_instr & PVR2_USE_MSR_INSTR) ? "yes" : "no",
+               (cpuinfo.use_instr & PVR2_USE_PCMP_INSTR) ? "yes" : "no",
+               (cpuinfo.use_instr & PVR0_USE_DIV_MASK) ? "yes" : "no");
+
+       count += seq_printf(m,
+                       " MMU:\t\t%x\n",
+                       cpuinfo.mmu);
+
+       count += seq_printf(m,
+               " MUL:\t\t%s\n"
+               " FPU:\t\t%s\n",
+               (cpuinfo.use_mult & PVR2_USE_MUL64_MASK) ? "v2" :
+                       (cpuinfo.use_mult & PVR0_USE_HW_MUL_MASK) ? "v1" : "no",
+               (cpuinfo.use_fpu & PVR2_USE_FPU2_MASK) ? "v2" :
+                       (cpuinfo.use_fpu & PVR0_USE_FPU_MASK) ? "v1" : "no");
+
+       count += seq_printf(m,
+               " Exc:\t\t%s%s%s%s%s%s%s%s\n",
+               (cpuinfo.use_exc & PVR2_OPCODE_0x0_ILL_MASK) ? "op0x0 " : "",
+               (cpuinfo.use_exc & PVR2_UNALIGNED_EXC_MASK) ? "unal " : "",
+               (cpuinfo.use_exc & PVR2_ILL_OPCODE_EXC_MASK) ? "ill " : "",
+               (cpuinfo.use_exc & PVR2_IOPB_BUS_EXC_MASK) ? "iopb " : "",
+               (cpuinfo.use_exc & PVR2_DOPB_BUS_EXC_MASK) ? "dopb " : "",
+               (cpuinfo.use_exc & PVR2_DIV_ZERO_EXC_MASK) ? "zero " : "",
+               (cpuinfo.use_exc & PVR2_FPU_EXC_MASK) ? "fpu " : "",
+               (cpuinfo.use_exc & PVR2_USE_FSL_EXC) ? "fsl " : "");
+
+       if (cpuinfo.use_icache)
+               count += seq_printf(m,
+                               "Icache:\t\t%ukB\n",
+                               cpuinfo.icache_size >> 10);
+       else
+               count += seq_printf(m, "Icache:\t\tno\n");
+
+       if (cpuinfo.use_dcache)
+               count += seq_printf(m,
+                               "Dcache:\t\t%ukB\n",
+                               cpuinfo.dcache_size >> 10);
+       else
+               count += seq_printf(m, "Dcache:\t\tno\n");
+
+       count += seq_printf(m,
+                       "HW-Debug:\t%s\n",
+                       cpuinfo.hw_debug ? "yes" : "no");
+
+       count += seq_printf(m,
+                       "PVR-USR1:\t%x\n"
+                       "PVR-USR2:\t%x\n",
+                       cpuinfo.pvr_user1,
+                       cpuinfo.pvr_user2);
+
+       return 0;
+}
+
+static void *c_start(struct seq_file *m, loff_t *pos)
+{
+       int i = *pos;
+
+       return i < NR_CPUS ? (void *) (i + 1) : NULL;
+}
+
+static void *c_next(struct seq_file *m, void *v, loff_t *pos)
+{
+       ++*pos;
+       return c_start(m, pos);
+}
+
+static void c_stop(struct seq_file *m, void *v)
+{
+}
+
+const struct seq_operations cpuinfo_op = {
+       .start = c_start,
+       .next = c_next,
+       .stop = c_stop,
+       .show = show_cpuinfo,
+};
diff --git a/arch/microblaze/kernel/cpu/pvr.c b/arch/microblaze/kernel/cpu/pvr.c
new file mode 100644 (file)
index 0000000..c9a4340
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Support for MicroBlaze PVR (processor version register)
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/compiler.h>
+#include <asm/system.h>
+#include <asm/exceptions.h>
+#include <asm/pvr.h>
+
+/*
+ * Until we get an assembler that knows about the pvr registers,
+ * this horrible cruft will have to do.
+ * That hardcoded opcode is mfs r3, rpvrNN
+ */
+
+#define get_single_pvr(pvrid, val)                             \
+{                                                              \
+       register unsigned tmp __asm__("r3");                    \
+       tmp = 0x0;      /* Prevent warning about unused */      \
+       __asm__ __volatile__ (                                  \
+                       ".byte 0x94,0x60,0xa0, " #pvrid "\n\t"  \
+                       : "=r" (tmp) : : "memory");             \
+       val = tmp;                                              \
+}
+
+/*
+ * Does the CPU support the PVR register?
+ * return value:
+ * 0: no PVR
+ * 1: simple PVR
+ * 2: full PVR
+ *
+ * This must work on all CPU versions, including those before the
+ * PVR was even an option.
+ */
+
+int cpu_has_pvr(void)
+{
+       unsigned flags;
+       unsigned pvr0;
+
+       local_save_flags(flags);
+
+       /* PVR bit in MSR tells us if there is any support */
+       if (!(flags & PVR_MSR_BIT))
+               return 0;
+
+       get_single_pvr(0x00, pvr0);
+       pr_debug("%s: pvr0 is 0x%08x\n", __func__, pvr0);
+
+       if (pvr0 & PVR0_PVR_FULL_MASK)
+               return 1;
+
+       /* for partial PVR use static cpuinfo */
+       return 2;
+}
+
+void get_pvr(struct pvr_s *p)
+{
+       get_single_pvr(0, p->pvr[0]);
+       get_single_pvr(1, p->pvr[1]);
+       get_single_pvr(2, p->pvr[2]);
+       get_single_pvr(3, p->pvr[3]);
+       get_single_pvr(4, p->pvr[4]);
+       get_single_pvr(5, p->pvr[5]);
+       get_single_pvr(6, p->pvr[6]);
+       get_single_pvr(7, p->pvr[7]);
+       get_single_pvr(8, p->pvr[8]);
+       get_single_pvr(9, p->pvr[9]);
+       get_single_pvr(10, p->pvr[10]);
+       get_single_pvr(11, p->pvr[11]);
+}
diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c
new file mode 100644 (file)
index 0000000..62cc789
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Early printk support for Microblaze.
+ *
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2003-2006 Yasushi SHOJI <yashi@atmark-techno.com>
+ *
+ * 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.
+ */
+
+#include <linux/console.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/string.h>
+#include <linux/tty.h>
+#include <linux/io.h>
+#include <asm/processor.h>
+#include <linux/fcntl.h>
+#include <asm/setup.h>
+#include <asm/prom.h>
+
+static u32 early_console_initialized;
+static u32 base_addr;
+
+static void early_printk_putc(char c)
+{
+       /*
+        * Limit how many times we'll spin waiting for TX FIFO status.
+        * This will prevent lockups if the base address is incorrectly
+        * set, or any other issue on the UARTLITE.
+        * This limit is pretty arbitrary, unless we are at about 10 baud
+        * we'll never timeout on a working UART.
+        */
+
+       unsigned retries = 10000;
+       /* read status bit - 0x8 offset */
+       while (retries-- && (in_be32(base_addr + 8) & (1 << 3)))
+               ;
+
+       /* Only attempt the iowrite if we didn't timeout */
+       /* write to TX_FIFO - 0x4 offset */
+       if (retries)
+               out_be32(base_addr + 4, c & 0xff);
+}
+
+static void early_printk_write(struct console *unused,
+                                       const char *s, unsigned n)
+{
+       while (*s && n-- > 0) {
+               early_printk_putc(*s);
+               if (*s == '\n')
+                       early_printk_putc('\r');
+               s++;
+       }
+}
+
+static struct console early_serial_console = {
+       .name = "earlyser",
+       .write = early_printk_write,
+       .flags = CON_PRINTBUFFER,
+       .index = -1,
+};
+
+static struct console *early_console = &early_serial_console;
+
+void early_printk(const char *fmt, ...)
+{
+       char buf[512];
+       int n;
+       va_list ap;
+
+       if (early_console_initialized) {
+               va_start(ap, fmt);
+               n = vscnprintf(buf, 512, fmt, ap);
+               early_console->write(early_console, buf, n);
+               va_end(ap);
+       }
+}
+
+int __init setup_early_printk(char *opt)
+{
+       if (early_console_initialized)
+               return 1;
+
+       base_addr = early_uartlite_console();
+       if (base_addr) {
+               early_console_initialized = 1;
+               early_printk("early_printk_console is enabled at 0x%08x\n",
+                                                       base_addr);
+
+               /* register_console(early_console); */
+
+               return 0;
+       } else
+               return 1;
+}
+
+void __init disable_early_printk(void)
+{
+       if (!early_console_initialized || !early_console)
+               return;
+       printk(KERN_WARNING "disabling early console\n");
+       unregister_console(early_console);
+       early_console_initialized = 0;
+}
diff --git a/arch/microblaze/kernel/entry-nommu.S b/arch/microblaze/kernel/entry-nommu.S
new file mode 100644 (file)
index 0000000..f24b126
--- /dev/null
@@ -0,0 +1,596 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/linkage.h>
+#include <asm/thread_info.h>
+#include <asm/errno.h>
+#include <asm/entry.h>
+#include <asm/asm-offsets.h>
+#include <asm/registers.h>
+#include <asm/unistd.h>
+#include <asm/percpu.h>
+#include <asm/signal.h>
+
+#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
+       .macro  disable_irq
+       msrclr r0, MSR_IE
+       .endm
+
+       .macro  enable_irq
+       msrset r0, MSR_IE
+       .endm
+
+       .macro  clear_bip
+       msrclr r0, MSR_BIP
+       .endm
+#else
+       .macro  disable_irq
+       mfs r11, rmsr
+       andi r11, r11, ~MSR_IE
+       mts rmsr, r11
+       .endm
+
+       .macro  enable_irq
+       mfs r11, rmsr
+       ori r11, r11, MSR_IE
+       mts rmsr, r11
+       .endm
+
+       .macro  clear_bip
+       mfs r11, rmsr
+       andi r11, r11, ~MSR_BIP
+       mts rmsr, r11
+       .endm
+#endif
+
+ENTRY(_interrupt)
+       swi     r1, r0, PER_CPU(ENTRY_SP)       /* save the current sp */
+       swi     r11, r0, PER_CPU(R11_SAVE)      /* temporarily save r11 */
+       lwi     r11, r0, PER_CPU(KM)            /* load mode indicator */
+       beqid   r11, 1f
+       nop
+       brid    2f                              /* jump over */
+       addik   r1, r1, (-PT_SIZE)      /* room for pt_regs (delay slot) */
+1:                                             /* switch to kernel stack */
+       lwi     r1, r0, PER_CPU(CURRENT_SAVE)   /* get the saved current */
+       lwi     r1, r1, TS_THREAD_INFO          /* get the thread info */
+       /* calculate kernel stack pointer */
+       addik   r1, r1, THREAD_SIZE - PT_SIZE
+2:
+       swi     r11, r1, PT_MODE                /* store the mode */
+       lwi     r11, r0, PER_CPU(R11_SAVE)      /* reload r11 */
+       swi     r2, r1, PT_R2
+       swi     r3, r1, PT_R3
+       swi     r4, r1, PT_R4
+       swi     r5, r1, PT_R5
+       swi     r6, r1, PT_R6
+       swi     r7, r1, PT_R7
+       swi     r8, r1, PT_R8
+       swi     r9, r1, PT_R9
+       swi     r10, r1, PT_R10
+       swi     r11, r1, PT_R11
+       swi     r12, r1, PT_R12
+       swi     r13, r1, PT_R13
+       swi     r14, r1, PT_R14
+       swi     r14, r1, PT_PC
+       swi     r15, r1, PT_R15
+       swi     r16, r1, PT_R16
+       swi     r17, r1, PT_R17
+       swi     r18, r1, PT_R18
+       swi     r19, r1, PT_R19
+       swi     r20, r1, PT_R20
+       swi     r21, r1, PT_R21
+       swi     r22, r1, PT_R22
+       swi     r23, r1, PT_R23
+       swi     r24, r1, PT_R24
+       swi     r25, r1, PT_R25
+       swi     r26, r1, PT_R26
+       swi     r27, r1, PT_R27
+       swi     r28, r1, PT_R28
+       swi     r29, r1, PT_R29
+       swi     r30, r1, PT_R30
+       swi     r31, r1, PT_R31
+       /* special purpose registers */
+       mfs     r11, rmsr
+       swi     r11, r1, PT_MSR
+       mfs     r11, rear
+       swi     r11, r1, PT_EAR
+       mfs     r11, resr
+       swi     r11, r1, PT_ESR
+       mfs     r11, rfsr
+       swi     r11, r1, PT_FSR
+       /* reload original stack pointer and save it */
+       lwi     r11, r0, PER_CPU(ENTRY_SP)
+       swi     r11, r1, PT_R1
+       /* update mode indicator we are in kernel mode */
+       addik   r11, r0, 1
+       swi     r11, r0, PER_CPU(KM)
+       /* restore r31 */
+       lwi     r31, r0, PER_CPU(CURRENT_SAVE)
+       /* prepare the link register, the argument and jump */
+       la      r15, r0, ret_from_intr - 8
+       addk    r6, r0, r15
+       braid   do_IRQ
+       add     r5, r0, r1
+
+ret_from_intr:
+       lwi     r11, r1, PT_MODE
+       bneid   r11, 3f
+
+       lwi     r6, r31, TS_THREAD_INFO /* get thread info */
+       lwi     r19, r6, TI_FLAGS       /* get flags in thread info */
+                               /* do an extra work if any bits are set */
+
+       andi    r11, r19, _TIF_NEED_RESCHED
+       beqi    r11, 1f
+       bralid  r15, schedule
+       nop
+1:     andi    r11, r19, _TIF_SIGPENDING
+       beqid   r11, no_intr_reshed
+       addk    r5, r1, r0
+       addk    r7, r0, r0
+       bralid  r15, do_signal
+       addk    r6, r0, r0
+
+no_intr_reshed:
+       /* save mode indicator */
+       lwi     r11, r1, PT_MODE
+3:
+       swi     r11, r0, PER_CPU(KM)
+
+       /* save r31 */
+       swi     r31, r0, PER_CPU(CURRENT_SAVE)
+restore_context:
+       /* special purpose registers */
+       lwi     r11, r1, PT_FSR
+       mts     rfsr, r11
+       lwi     r11, r1, PT_ESR
+       mts     resr, r11
+       lwi     r11, r1, PT_EAR
+       mts     rear, r11
+       lwi     r11, r1, PT_MSR
+       mts     rmsr, r11
+
+       lwi     r31, r1, PT_R31
+       lwi     r30, r1, PT_R30
+       lwi     r29, r1, PT_R29
+       lwi     r28, r1, PT_R28
+       lwi     r27, r1, PT_R27
+       lwi     r26, r1, PT_R26
+       lwi     r25, r1, PT_R25
+       lwi     r24, r1, PT_R24
+       lwi     r23, r1, PT_R23
+       lwi     r22, r1, PT_R22
+       lwi     r21, r1, PT_R21
+       lwi     r20, r1, PT_R20
+       lwi     r19, r1, PT_R19
+       lwi     r18, r1, PT_R18
+       lwi     r17, r1, PT_R17
+       lwi     r16, r1, PT_R16
+       lwi     r15, r1, PT_R15
+       lwi     r14, r1, PT_PC
+       lwi     r13, r1, PT_R13
+       lwi     r12, r1, PT_R12
+       lwi     r11, r1, PT_R11
+       lwi     r10, r1, PT_R10
+       lwi     r9, r1, PT_R9
+       lwi     r8, r1, PT_R8
+       lwi     r7, r1, PT_R7
+       lwi     r6, r1, PT_R6
+       lwi     r5, r1, PT_R5
+       lwi     r4, r1, PT_R4
+       lwi     r3, r1, PT_R3
+       lwi     r2, r1, PT_R2
+       lwi     r1, r1, PT_R1
+       rtid    r14, 0
+       nop
+
+ENTRY(_reset)
+       brai    0;
+
+ENTRY(_user_exception)
+       swi     r1, r0, PER_CPU(ENTRY_SP)       /* save the current sp */
+       swi     r11, r0, PER_CPU(R11_SAVE)      /* temporarily save r11 */
+       lwi     r11, r0, PER_CPU(KM)            /* load mode indicator */
+       beqid   r11, 1f                         /* Already in kernel mode? */
+       nop
+       brid    2f                              /* jump over */
+       addik   r1, r1, (-PT_SIZE)      /* Room for pt_regs (delay slot) */
+1:                                             /* Switch to kernel stack */
+       lwi     r1, r0, PER_CPU(CURRENT_SAVE)   /* get the saved current */
+       lwi     r1, r1, TS_THREAD_INFO          /* get the thread info */
+       /* calculate kernel stack pointer */
+       addik   r1, r1, THREAD_SIZE - PT_SIZE
+       swi     r11, r0, PER_CPU(R11_SAVE)      /* temporarily save r11 */
+       lwi     r11, r0, PER_CPU(KM)            /* load mode indicator */
+2:
+       swi     r11, r1, PT_MODE                /* store the mode */
+       lwi     r11, r0, PER_CPU(R11_SAVE)      /* reload r11 */
+       /* save them on stack */
+       swi     r2, r1, PT_R2
+       swi     r3, r1, PT_R3 /* r3: _always_ in clobber list; see unistd.h */
+       swi     r4, r1, PT_R4 /* r4: _always_ in clobber list; see unistd.h */
+       swi     r5, r1, PT_R5
+       swi     r6, r1, PT_R6
+       swi     r7, r1, PT_R7
+       swi     r8, r1, PT_R8
+       swi     r9, r1, PT_R9
+       swi     r10, r1, PT_R10
+       swi     r11, r1, PT_R11
+       /* r12: _always_ in clobber list; see unistd.h */
+       swi     r12, r1, PT_R12
+       swi     r13, r1, PT_R13
+       /* r14: _always_ in clobber list; see unistd.h */
+       swi     r14, r1, PT_R14
+       /* but we want to return to the next inst. */
+       addik   r14, r14, 0x4
+       swi     r14, r1, PT_PC          /* increment by 4 and store in pc */
+       swi     r15, r1, PT_R15
+       swi     r16, r1, PT_R16
+       swi     r17, r1, PT_R17
+       swi     r18, r1, PT_R18
+       swi     r19, r1, PT_R19
+       swi     r20, r1, PT_R20
+       swi     r21, r1, PT_R21
+       swi     r22, r1, PT_R22
+       swi     r23, r1, PT_R23
+       swi     r24, r1, PT_R24
+       swi     r25, r1, PT_R25
+       swi     r26, r1, PT_R26
+       swi     r27, r1, PT_R27
+       swi     r28, r1, PT_R28
+       swi     r29, r1, PT_R29
+       swi     r30, r1, PT_R30
+       swi     r31, r1, PT_R31
+
+       disable_irq
+       nop             /* make sure IE bit is in effect */
+       clear_bip       /* once IE is in effect it is safe to clear BIP */
+       nop
+
+       /* special purpose registers */
+       mfs     r11, rmsr
+       swi     r11, r1, PT_MSR
+       mfs     r11, rear
+       swi     r11, r1, PT_EAR
+       mfs     r11, resr
+       swi     r11, r1, PT_ESR
+       mfs     r11, rfsr
+       swi     r11, r1, PT_FSR
+       /* reload original stack pointer and save it */
+       lwi     r11, r0, PER_CPU(ENTRY_SP)
+       swi     r11, r1, PT_R1
+       /* update mode indicator we are in kernel mode */
+       addik   r11, r0, 1
+       swi     r11, r0, PER_CPU(KM)
+       /* restore r31 */
+       lwi     r31, r0, PER_CPU(CURRENT_SAVE)
+       /* re-enable interrupts now we are in kernel mode */
+       enable_irq
+
+       /* See if the system call number is valid. */
+       addi    r11, r12, -__NR_syscalls
+       bgei    r11, 1f                 /* return to user if not valid */
+       /* Figure out which function to use for this system call. */
+       /* Note Microblaze barrel shift is optional, so don't rely on it */
+       add     r12, r12, r12                   /* convert num -> ptr */
+       add     r12, r12, r12
+       lwi     r12, r12, sys_call_table        /* Get function pointer */
+       la      r15, r0, ret_to_user-8          /* set return address */
+       bra     r12                             /* Make the system call. */
+       bri     0                               /* won't reach here */
+1:
+       brid    ret_to_user                     /* jump to syscall epilogue */
+       addi    r3, r0, -ENOSYS                 /* set errno in delay slot */
+
+/*
+ * Debug traps are like a system call, but entered via brki r14, 0x60
+ * All we need to do is send the SIGTRAP signal to current, ptrace and do_signal
+ * will handle the rest
+ */
+ENTRY(_debug_exception)
+       swi     r1, r0, PER_CPU(ENTRY_SP)       /* save the current sp */
+       lwi     r1, r0, PER_CPU(CURRENT_SAVE)   /* get the saved current */
+       lwi     r1, r1, TS_THREAD_INFO          /* get the thread info */
+       addik   r1, r1, THREAD_SIZE - PT_SIZE   /* get the kernel stack */
+       swi     r11, r0, PER_CPU(R11_SAVE)      /* temporarily save r11 */
+       lwi     r11, r0, PER_CPU(KM)            /* load mode indicator */
+//save_context:
+       swi     r11, r1, PT_MODE        /* store the mode */
+       lwi     r11, r0, PER_CPU(R11_SAVE)      /* reload r11 */
+       /* save them on stack */
+       swi     r2, r1, PT_R2
+       swi     r3, r1, PT_R3 /* r3: _always_ in clobber list; see unistd.h */
+       swi     r4, r1, PT_R4 /* r4: _always_ in clobber list; see unistd.h */
+       swi     r5, r1, PT_R5
+       swi     r6, r1, PT_R6
+       swi     r7, r1, PT_R7
+       swi     r8, r1, PT_R8
+       swi     r9, r1, PT_R9
+       swi     r10, r1, PT_R10
+       swi     r11, r1, PT_R11
+       /* r12: _always_ in clobber list; see unistd.h */
+       swi     r12, r1, PT_R12
+       swi     r13, r1, PT_R13
+       /* r14: _always_ in clobber list; see unistd.h */
+       swi     r14, r1, PT_R14
+       swi     r14, r1, PT_PC /* Will return to interrupted instruction */
+       swi     r15, r1, PT_R15
+       swi     r16, r1, PT_R16
+       swi     r17, r1, PT_R17
+       swi     r18, r1, PT_R18
+       swi     r19, r1, PT_R19
+       swi     r20, r1, PT_R20
+       swi     r21, r1, PT_R21
+       swi     r22, r1, PT_R22
+       swi     r23, r1, PT_R23
+       swi     r24, r1, PT_R24
+       swi     r25, r1, PT_R25
+       swi     r26, r1, PT_R26
+       swi     r27, r1, PT_R27
+       swi     r28, r1, PT_R28
+       swi     r29, r1, PT_R29
+       swi     r30, r1, PT_R30
+       swi     r31, r1, PT_R31
+
+       disable_irq
+       nop             /* make sure IE bit is in effect */
+       clear_bip       /* once IE is in effect it is safe to clear BIP */
+       nop
+
+       /* special purpose registers */
+       mfs     r11, rmsr
+       swi     r11, r1, PT_MSR
+       mfs     r11, rear
+       swi     r11, r1, PT_EAR
+       mfs     r11, resr
+       swi     r11, r1, PT_ESR
+       mfs     r11, rfsr
+       swi     r11, r1, PT_FSR
+       /* reload original stack pointer and save it */
+       lwi     r11, r0, PER_CPU(ENTRY_SP)
+       swi     r11, r1, PT_R1
+       /* update mode indicator we are in kernel mode */
+       addik   r11, r0, 1
+       swi     r11, r0, PER_CPU(KM)
+       /* restore r31 */
+       lwi     r31, r0, PER_CPU(CURRENT_SAVE)
+       /* re-enable interrupts now we are in kernel mode */
+       enable_irq
+
+       addi    r5, r0, SIGTRAP                 /* sending the trap signal */
+       add     r6, r0, r31                     /* to current */
+       bralid  r15, send_sig
+       add     r7, r0, r0                      /* 3rd param zero */
+
+       /* Restore r3/r4 to work around how ret_to_user works */
+       lwi     r3, r1, PT_R3
+       lwi     r4, r1, PT_R4
+       bri     ret_to_user
+
+ENTRY(_break)
+       bri     0
+
+/* struct task_struct *_switch_to(struct thread_info *prev,
+                                       struct thread_info *next); */
+ENTRY(_switch_to)
+       /* prepare return value */
+       addk    r3, r0, r31
+
+       /* save registers in cpu_context */
+       /* use r11 and r12, volatile registers, as temp register */
+       addik   r11, r5, TI_CPU_CONTEXT
+       swi     r1, r11, CC_R1
+       swi     r2, r11, CC_R2
+       /* skip volatile registers.
+        * they are saved on stack when we jumped to _switch_to() */
+       /* dedicated registers */
+       swi     r13, r11, CC_R13
+       swi     r14, r11, CC_R14
+       swi     r15, r11, CC_R15
+       swi     r16, r11, CC_R16
+       swi     r17, r11, CC_R17
+       swi     r18, r11, CC_R18
+       /* save non-volatile registers */
+       swi     r19, r11, CC_R19
+       swi     r20, r11, CC_R20
+       swi     r21, r11, CC_R21
+       swi     r22, r11, CC_R22
+       swi     r23, r11, CC_R23
+       swi     r24, r11, CC_R24
+       swi     r25, r11, CC_R25
+       swi     r26, r11, CC_R26
+       swi     r27, r11, CC_R27
+       swi     r28, r11, CC_R28
+       swi     r29, r11, CC_R29
+       swi     r30, r11, CC_R30
+       /* special purpose registers */
+       mfs     r12, rmsr
+       swi     r12, r11, CC_MSR
+       mfs     r12, rear
+       swi     r12, r11, CC_EAR
+       mfs     r12, resr
+       swi     r12, r11, CC_ESR
+       mfs     r12, rfsr
+       swi     r12, r11, CC_FSR
+
+       /* update r31, the current */
+       lwi     r31, r6, TI_TASK
+       swi     r31, r0, PER_CPU(CURRENT_SAVE)
+
+       /* get new process' cpu context and restore */
+       addik   r11, r6, TI_CPU_CONTEXT
+
+       /* special purpose registers */
+       lwi     r12, r11, CC_FSR
+       mts     rfsr, r12
+       lwi     r12, r11, CC_ESR
+       mts     resr, r12
+       lwi     r12, r11, CC_EAR
+       mts     rear, r12
+       lwi     r12, r11, CC_MSR
+       mts     rmsr, r12
+       /* non-volatile registers */
+       lwi     r30, r11, CC_R30
+       lwi     r29, r11, CC_R29
+       lwi     r28, r11, CC_R28
+       lwi     r27, r11, CC_R27
+       lwi     r26, r11, CC_R26
+       lwi     r25, r11, CC_R25
+       lwi     r24, r11, CC_R24
+       lwi     r23, r11, CC_R23
+       lwi     r22, r11, CC_R22
+       lwi     r21, r11, CC_R21
+       lwi     r20, r11, CC_R20
+       lwi     r19, r11, CC_R19
+       /* dedicated registers */
+       lwi     r18, r11, CC_R18
+       lwi     r17, r11, CC_R17
+       lwi     r16, r11, CC_R16
+       lwi     r15, r11, CC_R15
+       lwi     r14, r11, CC_R14
+       lwi     r13, r11, CC_R13
+       /* skip volatile registers */
+       lwi     r2, r11, CC_R2
+       lwi     r1, r11, CC_R1
+
+       rtsd    r15, 8
+       nop
+
+ENTRY(ret_from_fork)
+       addk    r5, r0, r3
+       addk    r6, r0, r1
+       brlid   r15, schedule_tail
+       nop
+       swi     r31, r1, PT_R31         /* save r31 in user context. */
+                       /* will soon be restored to r31 in ret_to_user */
+       addk    r3, r0, r0
+       brid    ret_to_user
+       nop
+
+work_pending:
+       andi    r11, r19, _TIF_NEED_RESCHED
+       beqi    r11, 1f
+       bralid  r15, schedule
+       nop
+1:     andi    r11, r19, _TIF_SIGPENDING
+       beqi    r11, no_work_pending
+       addk    r5, r1, r0
+       addik   r7, r0, 1
+       bralid  r15, do_signal
+       addk    r6, r0, r0
+       bri     no_work_pending
+
+ENTRY(ret_to_user)
+       disable_irq
+
+       swi     r4, r1, PT_R4           /* return val */
+       swi     r3, r1, PT_R3           /* return val */
+
+       lwi     r6, r31, TS_THREAD_INFO /* get thread info */
+       lwi     r19, r6, TI_FLAGS /* get flags in thread info */
+       bnei    r19, work_pending /* do an extra work if any bits are set */
+no_work_pending:
+       disable_irq
+
+       /* save r31 */
+       swi     r31, r0, PER_CPU(CURRENT_SAVE)
+       /* save mode indicator */
+       lwi     r18, r1, PT_MODE
+       swi     r18, r0, PER_CPU(KM)
+//restore_context:
+       /* special purpose registers */
+       lwi     r18, r1, PT_FSR
+       mts     rfsr, r18
+       lwi     r18, r1, PT_ESR
+       mts     resr, r18
+       lwi     r18, r1, PT_EAR
+       mts     rear, r18
+       lwi     r18, r1, PT_MSR
+       mts     rmsr, r18
+
+       lwi     r31, r1, PT_R31
+       lwi     r30, r1, PT_R30
+       lwi     r29, r1, PT_R29
+       lwi     r28, r1, PT_R28
+       lwi     r27, r1, PT_R27
+       lwi     r26, r1, PT_R26
+       lwi     r25, r1, PT_R25
+       lwi     r24, r1, PT_R24
+       lwi     r23, r1, PT_R23
+       lwi     r22, r1, PT_R22
+       lwi     r21, r1, PT_R21
+       lwi     r20, r1, PT_R20
+       lwi     r19, r1, PT_R19
+       lwi     r18, r1, PT_R18
+       lwi     r17, r1, PT_R17
+       lwi     r16, r1, PT_R16
+       lwi     r15, r1, PT_R15
+       lwi     r14, r1, PT_PC
+       lwi     r13, r1, PT_R13
+       lwi     r12, r1, PT_R12
+       lwi     r11, r1, PT_R11
+       lwi     r10, r1, PT_R10
+       lwi     r9, r1, PT_R9
+       lwi     r8, r1, PT_R8
+       lwi     r7, r1, PT_R7
+       lwi     r6, r1, PT_R6
+       lwi     r5, r1, PT_R5
+       lwi     r4, r1, PT_R4           /* return val */
+       lwi     r3, r1, PT_R3           /* return val */
+       lwi     r2, r1, PT_R2
+       lwi     r1, r1, PT_R1
+
+       rtid    r14, 0
+       nop
+
+sys_vfork_wrapper:
+       brid    sys_vfork
+       addk    r5, r1, r0
+
+sys_clone_wrapper:
+       brid    sys_clone
+       addk    r7, r1, r0
+
+sys_execve_wrapper:
+       brid    sys_execve
+       addk    r8, r1, r0
+
+sys_sigreturn_wrapper:
+       brid    sys_sigreturn
+       addk    r5, r1, r0
+
+sys_rt_sigreturn_wrapper:
+       brid    sys_rt_sigreturn
+       addk    r5, r1, r0
+
+sys_sigsuspend_wrapper:
+       brid    sys_rt_sigsuspend
+       addk    r6, r1, r0
+
+sys_rt_sigsuspend_wrapper:
+       brid    sys_rt_sigsuspend
+       addk    r7, r1, r0
+
+       /* Interrupt vector table */
+       .section        .init.ivt, "ax"
+       .org 0x0
+       brai    _reset
+       brai    _user_exception
+       brai    _interrupt
+       brai    _break
+       brai    _hw_exception_handler
+       .org 0x60
+       brai    _debug_exception
+
+.section .rodata,"a"
+#include "syscall_table.S"
+
+syscall_table_size=(.-sys_call_table)
diff --git a/arch/microblaze/kernel/exceptions.c b/arch/microblaze/kernel/exceptions.c
new file mode 100644 (file)
index 0000000..4a8a406
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * HW exception handling
+ *
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008 PetaLogix
+ *
+ * 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.
+ */
+
+/*
+ * This file handles the architecture-dependent parts of hardware exceptions
+ */
+
+#include <linux/kernel.h>
+#include <linux/signal.h>
+#include <linux/sched.h>
+#include <linux/kallsyms.h>
+#include <linux/module.h>
+
+#include <asm/exceptions.h>
+#include <asm/entry.h>         /* For KM CPU var */
+#include <asm/uaccess.h>
+#include <asm/errno.h>
+#include <asm/ptrace.h>
+#include <asm/current.h>
+
+#define MICROBLAZE_ILL_OPCODE_EXCEPTION        0x02
+#define MICROBLAZE_IBUS_EXCEPTION      0x03
+#define MICROBLAZE_DBUS_EXCEPTION      0x04
+#define MICROBLAZE_DIV_ZERO_EXCEPTION  0x05
+#define MICROBLAZE_FPU_EXCEPTION       0x06
+#define MICROBLAZE_PRIVILEG_EXCEPTION  0x07
+
+static DEFINE_SPINLOCK(die_lock);
+
+void die(const char *str, struct pt_regs *fp, long err)
+{
+       console_verbose();
+       spin_lock_irq(&die_lock);
+       printk(KERN_WARNING "Oops: %s, sig: %ld\n", str, err);
+       show_regs(fp);
+       spin_unlock_irq(&die_lock);
+       /* do_exit() should take care of panic'ing from an interrupt
+        * context so we don't handle it here
+        */
+       do_exit(err);
+}
+
+void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
+{
+       siginfo_t info;
+
+       if (kernel_mode(regs)) {
+               debugger(regs);
+               die("Exception in kernel mode", regs, signr);
+       }
+       info.si_signo = signr;
+       info.si_errno = 0;
+       info.si_code = code;
+       info.si_addr = (void __user *) addr;
+       force_sig_info(signr, &info, current);
+}
+
+asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
+                                                       int fsr, int addr)
+{
+#if 0
+       printk(KERN_WARNING "Exception %02x in %s mode, FSR=%08x PC=%08x ESR=%08x\n",
+                       type, user_mode(regs) ? "user" : "kernel", fsr,
+                       (unsigned int) regs->pc, (unsigned int) regs->esr);
+#endif
+
+       switch (type & 0x1F) {
+       case MICROBLAZE_ILL_OPCODE_EXCEPTION:
+               _exception(SIGILL, regs, ILL_ILLOPC, addr);
+               break;
+       case MICROBLAZE_IBUS_EXCEPTION:
+               if (user_mode(regs)) {
+                       printk(KERN_WARNING "Instruction bus error exception in user mode.\n");
+                       _exception(SIGBUS, regs, BUS_ADRERR, addr);
+                       return;
+               }
+               printk(KERN_WARNING "Instruction bus error exception in kernel mode.\n");
+               die("bus exception", regs, SIGBUS);
+               break;
+       case MICROBLAZE_DBUS_EXCEPTION:
+               if (user_mode(regs)) {
+                       printk(KERN_WARNING "Data bus error exception in user mode.\n");
+                       _exception(SIGBUS, regs, BUS_ADRERR, addr);
+                       return;
+               }
+               printk(KERN_WARNING "Data bus error exception in kernel mode.\n");
+               die("bus exception", regs, SIGBUS);
+               break;
+       case MICROBLAZE_DIV_ZERO_EXCEPTION:
+               printk(KERN_WARNING "Divide by zero exception\n");
+               _exception(SIGILL, regs, ILL_ILLOPC, addr);
+               break;
+
+       case MICROBLAZE_FPU_EXCEPTION:
+               /* IEEE FP exception */
+               /* I removed fsr variable and use code var for storing fsr */
+               if (fsr & FSR_IO)
+                       fsr = FPE_FLTINV;
+               else if (fsr & FSR_OF)
+                       fsr = FPE_FLTOVF;
+               else if (fsr & FSR_UF)
+                       fsr = FPE_FLTUND;
+               else if (fsr & FSR_DZ)
+                       fsr = FPE_FLTDIV;
+               else if (fsr & FSR_DO)
+                       fsr = FPE_FLTRES;
+               _exception(SIGFPE, regs, fsr, addr);
+               break;
+
+       default:
+               printk(KERN_WARNING "Unexpected exception %02x "
+                       "PC=%08x in %s mode\n", type, (unsigned int) addr,
+                       kernel_mode(regs) ? "kernel" : "user");
+       }
+       return;
+}
diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S
new file mode 100644 (file)
index 0000000..319dc35
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/linkage.h>
+#include <asm/thread_info.h>
+#include <asm/page.h>
+
+       .text
+ENTRY(_start)
+       mfs     r1, rmsr
+       andi    r1, r1, ~2
+       mts     rmsr, r1
+
+/* save fdt to kernel location */
+/* r7 stores pointer to fdt blob */
+       beqi    r7, no_fdt_arg
+       or      r11, r0, r0 /* incremment */
+       ori     r4, r0, TOPHYS(_fdt_start) /* save bram context */
+       ori     r3, r0, (0x4000 - 4)
+_copy_fdt:
+       lw      r12, r7, r11 /* r12 = r7 + r11 */
+       sw      r12, r4, r11 /* addr[r4 + r11] = r12 */
+       addik   r11, r11, 4 /* increment counting */
+       bgtid   r3, _copy_fdt /* loop for all entries */
+       addik   r3, r3, -4 /* descrement loop */
+no_fdt_arg:
+
+       /* Initialize small data anchors */
+       la      r13, r0, _KERNEL_SDA_BASE_
+       la      r2, r0, _KERNEL_SDA2_BASE_
+
+       /* Initialize stack pointer */
+       la      r1, r0, init_thread_union + THREAD_SIZE - 4
+
+       /* Initialize r31 with current task address */
+       la      r31, r0, init_task
+
+       /*
+        * Call platform dependent initialize function.
+        * Please see $(ARCH)/mach-$(SUBARCH)/setup.c for
+        * the function.
+        */
+       la      r8, r0, machine_early_init
+       brald   r15, r8
+       nop
+
+       la      r15, r0, machine_halt
+       braid   start_kernel
+       nop
diff --git a/arch/microblaze/kernel/heartbeat.c b/arch/microblaze/kernel/heartbeat.c
new file mode 100644 (file)
index 0000000..1bdf202
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/sched.h>
+#include <linux/io.h>
+
+#include <asm/setup.h>
+#include <asm/page.h>
+#include <asm/prom.h>
+
+static unsigned int base_addr;
+
+void heartbeat(void)
+{
+       static unsigned int cnt, period, dist;
+
+       if (base_addr) {
+               if (cnt == 0 || cnt == dist)
+                       out_be32(base_addr, 1);
+               else if (cnt == 7 || cnt == dist + 7)
+                       out_be32(base_addr, 0);
+
+               if (++cnt > period) {
+                       cnt = 0;
+                       /*
+                        * The hyperbolic function below modifies the heartbeat
+                        * period length in dependency of the current (5min)
+                        * load. It goes through the points f(0)=126, f(1)=86,
+                        * f(5)=51, f(inf)->30.
+                        */
+                       period = ((672 << FSHIFT) / (5 * avenrun[0] +
+                                               (7 << FSHIFT))) + 30;
+                       dist = period / 4;
+               }
+       }
+}
+
+void setup_heartbeat(void)
+{
+       struct device_node *gpio = NULL;
+       int j;
+       char *gpio_list[] = {
+                               "xlnx,xps-gpio-1.00.a",
+                               "xlnx,opb-gpio-1.00.a",
+                               NULL
+                       };
+
+       for (j = 0; gpio_list[j] != NULL; j++) {
+               gpio = of_find_compatible_node(NULL, NULL, gpio_list[j]);
+               if (gpio)
+                       break;
+       }
+
+       base_addr = *(int *) of_get_property(gpio, "reg", NULL);
+       base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);
+       printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr);
+
+       if (*(int *) of_get_property(gpio, "xlnx,is-bidir", NULL))
+               out_be32(base_addr + 4, 0); /* GPIO is configured as output */
+}
diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S
new file mode 100644 (file)
index 0000000..cf9486d
--- /dev/null
@@ -0,0 +1,458 @@
+/*
+ * Exception handling for Microblaze
+ *
+ * Rewriten interrupt handling
+ *
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ *
+ * uClinux customisation (C) 2005 John Williams
+ *
+ * MMU code derived from arch/ppc/kernel/head_4xx.S:
+ *     Copyright (C) 1995-1996 Gary Thomas <gdt@linuxppc.org>
+ *             Initial PowerPC version.
+ *     Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
+ *             Rewritten for PReP
+ *     Copyright (C) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
+ *             Low-level exception handers, MMU support, and rewrite.
+ *     Copyright (C) 1997 Dan Malek <dmalek@jlc.net>
+ *             PowerPC 8xx modifications.
+ *     Copyright (C) 1998-1999 TiVo, Inc.
+ *             PowerPC 403GCX modifications.
+ *     Copyright (C) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *             PowerPC 403GCX/405GP modifications.
+ *     Copyright 2000 MontaVista Software Inc.
+ *             PPC405 modifications
+ *     PowerPC 403GCX/405GP modifications.
+ *             Author: MontaVista Software, Inc.
+ *             frank_rowand@mvista.com or source@mvista.com
+ *             debbie_chu@mvista.com
+ *
+ * Original code
+ * Copyright (C) 2004 Xilinx, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+
+/*
+ * Here are the handlers which don't require enabling translation
+ * and calling other kernel code thus we can keep their design very simple
+ * and do all processing in real mode. All what they need is a valid current
+ * (that is an issue for the CONFIG_REGISTER_TASK_PTR case)
+ * This handlers use r3,r4,r5,r6 and optionally r[current] to work therefore
+ * these registers are saved/restored
+ * The handlers which require translation are in entry.S --KAA
+ *
+ * Microblaze HW Exception Handler
+ * - Non self-modifying exception handler for the following exception conditions
+ *   - Unalignment
+ *   - Instruction bus error
+ *   - Data bus error
+ *   - Illegal instruction opcode
+ *   - Divide-by-zero
+ *
+ * Note we disable interrupts during exception handling, otherwise we will
+ * possibly get multiple re-entrancy if interrupt handles themselves cause
+ * exceptions. JW
+ */
+
+#include <asm/exceptions.h>
+#include <asm/unistd.h>
+#include <asm/page.h>
+
+#include <asm/entry.h>
+#include <asm/current.h>
+#include <linux/linkage.h>
+
+#include <asm/mmu.h>
+#include <asm/pgtable.h>
+#include <asm/asm-offsets.h>
+
+/* Helpful Macros */
+#define EX_HANDLER_STACK_SIZ   (4*19)
+#define NUM_TO_REG(num)                r ## num
+
+#define LWREG_NOP                      \
+       bri     ex_handler_unhandled;   \
+       nop;
+
+#define SWREG_NOP                      \
+       bri     ex_handler_unhandled;   \
+       nop;
+
+/* FIXME this is weird - for noMMU kernel is not possible to use brid
+ * instruction which can shorten executed time
+ */
+
+/* r3 is the source */
+#define R3_TO_LWREG_V(regnum)                          \
+       swi     r3, r1, 4 * regnum;                             \
+       bri     ex_handler_done;
+
+/* r3 is the source */
+#define R3_TO_LWREG(regnum)                            \
+       or      NUM_TO_REG (regnum), r0, r3;            \
+       bri     ex_handler_done;
+
+/* r3 is the target */
+#define SWREG_TO_R3_V(regnum)                          \
+       lwi     r3, r1, 4 * regnum;                             \
+       bri     ex_sw_tail;
+
+/* r3 is the target */
+#define SWREG_TO_R3(regnum)                            \
+       or      r3, r0, NUM_TO_REG (regnum);            \
+       bri     ex_sw_tail;
+
+.extern other_exception_handler /* Defined in exception.c */
+
+/*
+ * hw_exception_handler - Handler for exceptions
+ *
+ * Exception handler notes:
+ * - Handles all exceptions
+ * - Does not handle unaligned exceptions during load into r17, r1, r0.
+ * - Does not handle unaligned exceptions during store from r17 (cannot be
+ *   done) and r1 (slows down common case)
+ *
+ *  Relevant register structures
+ *
+ *  EAR - |----|----|----|----|----|----|----|----|
+ *      - <  ##   32 bit faulting address     ##  >
+ *
+ *  ESR - |----|----|----|----|----| - | - |-----|-----|
+ *      -                            W   S   REG   EXC
+ *
+ *
+ * STACK FRAME STRUCTURE (for NO_MMU)
+ * ---------------------------------
+ *
+ *      +-------------+         + 0
+ *      |     MSR     |
+ *      +-------------+         + 4
+ *      |     r1      |
+ *      |      .      |
+ *      |      .      |
+ *      |      .      |
+ *      |      .      |
+ *      |     r18     |
+ *      +-------------+         + 76
+ *      |      .      |
+ *      |      .      |
+ *
+ * NO_MMU kernel use the same r0_ram pointed space - look to vmlinux.lds.S
+ * which is used for storing register values - old style was, that value were
+ * stored in stack but in case of failure you lost information about register.
+ * Currently you can see register value in memory in specific place.
+ * In compare to with previous solution the speed should be the same.
+ *
+ * MMU exception handler has different handling compare to no MMU kernel.
+ * Exception handler use jump table for directing of what happen. For MMU kernel
+ * is this approach better because MMU relate exception are handled by asm code
+ * in this file. In compare to with MMU expect of unaligned exception
+ * is everything handled by C code.
+ */
+
+/*
+ * every of these handlers is entered having R3/4/5/6/11/current saved on stack
+ * and clobbered so care should be taken to restore them if someone is going to
+ * return from exception
+ */
+
+/* wrappers to restore state before coming to entry.S */
+
+.global _hw_exception_handler
+.section .text
+.align 4
+.ent _hw_exception_handler
+_hw_exception_handler:
+       addik   r1, r1, -(EX_HANDLER_STACK_SIZ); /* Create stack frame */
+       swi     r3, r1, PT_R3
+       swi     r4, r1, PT_R4
+       swi     r5, r1, PT_R5
+       swi     r6, r1, PT_R6
+
+       mfs     r5, rmsr;
+       nop
+       swi     r5, r1, 0;
+       mfs     r4, rbtr        /* Save BTR before jumping to handler */
+       nop
+       mfs     r3, resr
+       nop
+
+       andi    r5, r3, 0x1000;         /* Check ESR[DS] */
+       beqi    r5, not_in_delay_slot;  /* Branch if ESR[DS] not set */
+       mfs     r17, rbtr;      /* ESR[DS] set - return address in BTR */
+       nop
+not_in_delay_slot:
+       swi     r17, r1, PT_R17
+
+       andi    r5, r3, 0x1F;           /* Extract ESR[EXC] */
+
+       /* Exceptions enabled here. This will allow nested exceptions */
+       mfs     r6, rmsr;
+       nop
+       swi     r6, r1, 0; /* RMSR_OFFSET */
+       ori     r6, r6, 0x100; /* Turn ON the EE bit */
+       andi    r6, r6, ~2; /* Disable interrupts */
+       mts     rmsr, r6;
+       nop
+
+       xori    r6, r5, 1; /* 00001 = Unaligned Exception */
+       /* Jump to unalignment exception handler */
+       beqi    r6, handle_unaligned_ex;
+
+handle_other_ex: /* Handle Other exceptions here */
+       /* Save other volatiles before we make procedure calls below */
+       swi     r7, r1, PT_R7
+       swi     r8, r1, PT_R8
+       swi     r9, r1, PT_R9
+       swi     r10, r1, PT_R10
+       swi     r11, r1, PT_R11
+       swi     r12, r1, PT_R12
+       swi     r14, r1, PT_R14
+       swi     r15, r1, PT_R15
+       swi     r18, r1, PT_R18
+
+       or      r5, r1, r0
+       andi    r6, r3, 0x1F; /* Load ESR[EC] */
+       lwi     r7, r0, PER_CPU(KM) /* MS: saving current kernel mode to regs */
+       swi     r7, r1, PT_MODE
+       mfs     r7, rfsr
+       nop
+       addk    r8, r17, r0; /* Load exception address */
+       bralid  r15, full_exception; /* Branch to the handler */
+       nop;
+
+       /*
+        * Trigger execution of the signal handler by enabling
+        * interrupts and calling an invalid syscall.
+        */
+       mfs     r5, rmsr;
+       nop
+       ori     r5, r5, 2;
+       mts     rmsr, r5; /* enable interrupt */
+       nop
+       addi    r12, r0, __NR_syscalls;
+       brki    r14, 0x08;
+       mfs     r5, rmsr; /* disable interrupt */
+       nop
+       andi    r5, r5, ~2;
+       mts     rmsr, r5;
+       nop
+
+       lwi     r7, r1, PT_R7
+       lwi     r8, r1, PT_R8
+       lwi     r9, r1, PT_R9
+       lwi     r10, r1, PT_R10
+       lwi     r11, r1, PT_R11
+       lwi     r12, r1, PT_R12
+       lwi     r14, r1, PT_R14
+       lwi     r15, r1, PT_R15
+       lwi     r18, r1, PT_R18
+
+       bri     ex_handler_done; /* Complete exception handling */
+
+/* 0x01 - Unaligned data access exception
+ * This occurs when a word access is not aligned on a word boundary,
+ * or when a 16-bit access is not aligned on a 16-bit boundary.
+ * This handler perform the access, and returns, except for MMU when
+ * the unaligned address is last on a 4k page or the physical address is
+ * not found in the page table, in which case unaligned_data_trap is called.
+ */
+handle_unaligned_ex:
+       /* Working registers already saved: R3, R4, R5, R6
+        *  R3 = ESR
+        *  R4 = BTR
+        */
+       mfs     r4, rear;
+       nop
+
+       andi    r6, r3, 0x3E0; /* Mask and extract the register operand */
+       srl     r6, r6; /* r6 >> 5 */
+       srl     r6, r6;
+       srl     r6, r6;
+       srl     r6, r6;
+       srl     r6, r6;
+       /* Store the register operand in a temporary location */
+       sbi     r6, r0, TOPHYS(ex_reg_op);
+
+       andi    r6, r3, 0x400; /* Extract ESR[S] */
+       bnei    r6, ex_sw;
+ex_lw:
+       andi    r6, r3, 0x800; /* Extract ESR[W] */
+       beqi    r6, ex_lhw;
+       lbui    r5, r4, 0; /* Exception address in r4 */
+       /* Load a word, byte-by-byte from destination address
+               and save it in tmp space */
+       sbi     r5, r0, TOPHYS(ex_tmp_data_loc_0);
+       lbui    r5, r4, 1;
+       sbi     r5, r0, TOPHYS(ex_tmp_data_loc_1);
+       lbui    r5, r4, 2;
+       sbi     r5, r0, TOPHYS(ex_tmp_data_loc_2);
+       lbui    r5, r4, 3;
+       sbi     r5, r0, TOPHYS(ex_tmp_data_loc_3);
+       /* Get the destination register value into r3 */
+       lwi     r3, r0, TOPHYS(ex_tmp_data_loc_0);
+       bri     ex_lw_tail;
+ex_lhw:
+       lbui    r5, r4, 0; /* Exception address in r4 */
+       /* Load a half-word, byte-by-byte from destination
+               address and save it in tmp space */
+       sbi     r5, r0, TOPHYS(ex_tmp_data_loc_0);
+       lbui    r5, r4, 1;
+       sbi     r5, r0, TOPHYS(ex_tmp_data_loc_1);
+       /* Get the destination register value into r3 */
+       lhui    r3, r0, TOPHYS(ex_tmp_data_loc_0);
+ex_lw_tail:
+       /* Get the destination register number into r5 */
+       lbui    r5, r0, TOPHYS(ex_reg_op);
+       /* Form load_word jump table offset (lw_table + (8 * regnum)) */
+       la      r6, r0, TOPHYS(lw_table);
+       addk    r5, r5, r5;
+       addk    r5, r5, r5;
+       addk    r5, r5, r5;
+       addk    r5, r5, r6;
+       bra     r5;
+ex_lw_end: /* Exception handling of load word, ends */
+ex_sw:
+       /* Get the destination register number into r5 */
+       lbui    r5, r0, TOPHYS(ex_reg_op);
+       /* Form store_word jump table offset (sw_table + (8 * regnum)) */
+       la      r6, r0, TOPHYS(sw_table);
+       add     r5, r5, r5;
+       add     r5, r5, r5;
+       add     r5, r5, r5;
+       add     r5, r5, r6;
+       bra     r5;
+ex_sw_tail:
+       mfs     r6, resr;
+       nop
+       andi    r6, r6, 0x800; /* Extract ESR[W] */
+       beqi    r6, ex_shw;
+       /* Get the word - delay slot */
+       swi     r3, r0, TOPHYS(ex_tmp_data_loc_0);
+       /* Store the word, byte-by-byte into destination address */
+       lbui    r3, r0, TOPHYS(ex_tmp_data_loc_0);
+       sbi     r3, r4, 0;
+       lbui    r3, r0, TOPHYS(ex_tmp_data_loc_1);
+       sbi     r3, r4, 1;
+       lbui    r3, r0, TOPHYS(ex_tmp_data_loc_2);
+       sbi     r3, r4, 2;
+       lbui    r3, r0, TOPHYS(ex_tmp_data_loc_3);
+       sbi     r3, r4, 3;
+       bri     ex_handler_done;
+
+ex_shw:
+       /* Store the lower half-word, byte-by-byte into destination address */
+       swi     r3, r0, TOPHYS(ex_tmp_data_loc_0);
+       lbui    r3, r0, TOPHYS(ex_tmp_data_loc_2);
+       sbi     r3, r4, 0;
+       lbui    r3, r0, TOPHYS(ex_tmp_data_loc_3);
+       sbi     r3, r4, 1;
+ex_sw_end: /* Exception handling of store word, ends. */
+
+ex_handler_done:
+       lwi     r5, r1, 0 /* RMSR */
+       mts     rmsr, r5
+       nop
+       lwi     r3, r1, PT_R3
+       lwi     r4, r1, PT_R4
+       lwi     r5, r1, PT_R5
+       lwi     r6, r1, PT_R6
+       lwi     r17, r1, PT_R17
+
+       rted    r17, 0
+       addik   r1, r1, (EX_HANDLER_STACK_SIZ); /* Restore stack frame */
+
+.end _hw_exception_handler
+
+ex_handler_unhandled:
+/* FIXME add handle function for unhandled exception - dump register */
+       bri 0
+
+.section .text
+.align 4
+lw_table:
+lw_r0:         R3_TO_LWREG     (0);
+lw_r1:         LWREG_NOP;
+lw_r2:         R3_TO_LWREG     (2);
+lw_r3:         R3_TO_LWREG_V   (3);
+lw_r4:         R3_TO_LWREG_V   (4);
+lw_r5:         R3_TO_LWREG_V   (5);
+lw_r6:         R3_TO_LWREG_V   (6);
+lw_r7:         R3_TO_LWREG     (7);
+lw_r8:         R3_TO_LWREG     (8);
+lw_r9:         R3_TO_LWREG     (9);
+lw_r10:                R3_TO_LWREG     (10);
+lw_r11:                R3_TO_LWREG     (11);
+lw_r12:                R3_TO_LWREG     (12);
+lw_r13:                R3_TO_LWREG     (13);
+lw_r14:                R3_TO_LWREG     (14);
+lw_r15:                R3_TO_LWREG     (15);
+lw_r16:                R3_TO_LWREG     (16);
+lw_r17:                LWREG_NOP;
+lw_r18:                R3_TO_LWREG     (18);
+lw_r19:                R3_TO_LWREG     (19);
+lw_r20:                R3_TO_LWREG     (20);
+lw_r21:                R3_TO_LWREG     (21);
+lw_r22:                R3_TO_LWREG     (22);
+lw_r23:                R3_TO_LWREG     (23);
+lw_r24:                R3_TO_LWREG     (24);
+lw_r25:                R3_TO_LWREG     (25);
+lw_r26:                R3_TO_LWREG     (26);
+lw_r27:                R3_TO_LWREG     (27);
+lw_r28:                R3_TO_LWREG     (28);
+lw_r29:                R3_TO_LWREG     (29);
+lw_r30:                R3_TO_LWREG     (30);
+lw_r31:                R3_TO_LWREG     (31);
+
+sw_table:
+sw_r0:         SWREG_TO_R3     (0);
+sw_r1:         SWREG_NOP;
+sw_r2:         SWREG_TO_R3     (2);
+sw_r3:         SWREG_TO_R3_V   (3);
+sw_r4:         SWREG_TO_R3_V   (4);
+sw_r5:         SWREG_TO_R3_V   (5);
+sw_r6:         SWREG_TO_R3_V   (6);
+sw_r7:         SWREG_TO_R3     (7);
+sw_r8:         SWREG_TO_R3     (8);
+sw_r9:         SWREG_TO_R3     (9);
+sw_r10:                SWREG_TO_R3     (10);
+sw_r11:                SWREG_TO_R3     (11);
+sw_r12:                SWREG_TO_R3     (12);
+sw_r13:                SWREG_TO_R3     (13);
+sw_r14:                SWREG_TO_R3     (14);
+sw_r15:                SWREG_TO_R3     (15);
+sw_r16:                SWREG_TO_R3     (16);
+sw_r17:                SWREG_NOP;
+sw_r18:                SWREG_TO_R3     (18);
+sw_r19:                SWREG_TO_R3     (19);
+sw_r20:                SWREG_TO_R3     (20);
+sw_r21:                SWREG_TO_R3     (21);
+sw_r22:                SWREG_TO_R3     (22);
+sw_r23:                SWREG_TO_R3     (23);
+sw_r24:                SWREG_TO_R3     (24);
+sw_r25:                SWREG_TO_R3     (25);
+sw_r26:                SWREG_TO_R3     (26);
+sw_r27:                SWREG_TO_R3     (27);
+sw_r28:                SWREG_TO_R3     (28);
+sw_r29:                SWREG_TO_R3     (29);
+sw_r30:                SWREG_TO_R3     (30);
+sw_r31:                SWREG_TO_R3     (31);
+
+/* Temporary data structures used in the handler */
+.section .data
+.align 4
+ex_tmp_data_loc_0:
+       .byte 0
+ex_tmp_data_loc_1:
+       .byte 0
+ex_tmp_data_loc_2:
+       .byte 0
+ex_tmp_data_loc_3:
+       .byte 0
+ex_reg_op:
+       .byte 0
diff --git a/arch/microblaze/kernel/init_task.c b/arch/microblaze/kernel/init_task.c
new file mode 100644 (file)
index 0000000..48eb9fb
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/module.h>
+#include <linux/sched.h>
+#include <linux/init_task.h>
+#include <linux/fs.h>
+#include <linux/mqueue.h>
+
+#include <asm/pgtable.h>
+
+static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
+static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
+struct mm_struct init_mm = INIT_MM(init_mm);
+EXPORT_SYMBOL(init_mm);
+
+union thread_union init_thread_union
+       __attribute__((__section__(".data.init_task"))) =
+{ INIT_THREAD_INFO(init_task) };
+
+struct task_struct init_task = INIT_TASK(init_task);
+EXPORT_SYMBOL(init_task);
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c
new file mode 100644 (file)
index 0000000..a69d3e3
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/irq.h>
+#include <asm/page.h>
+#include <linux/io.h>
+
+#include <asm/prom.h>
+#include <asm/irq.h>
+
+#ifdef CONFIG_SELFMOD_INTC
+#include <asm/selfmod.h>
+#define INTC_BASE      BARRIER_BASE_ADDR
+#else
+static unsigned int intc_baseaddr;
+#define INTC_BASE      intc_baseaddr
+#endif
+
+unsigned int nr_irq;
+
+/* No one else should require these constants, so define them locally here. */
+#define ISR 0x00                       /* Interrupt Status Register */
+#define IPR 0x04                       /* Interrupt Pending Register */
+#define IER 0x08                       /* Interrupt Enable Register */
+#define IAR 0x0c                       /* Interrupt Acknowledge Register */
+#define SIE 0x10                       /* Set Interrupt Enable bits */
+#define CIE 0x14                       /* Clear Interrupt Enable bits */
+#define IVR 0x18                       /* Interrupt Vector Register */
+#define MER 0x1c                       /* Master Enable Register */
+
+#define MER_ME (1<<0)
+#define MER_HIE (1<<1)
+
+static void intc_enable_or_unmask(unsigned int irq)
+{
+       pr_debug("enable_or_unmask: %d\n", irq);
+       out_be32(INTC_BASE + SIE, 1 << irq);
+}
+
+static void intc_disable_or_mask(unsigned int irq)
+{
+       pr_debug("disable: %d\n", irq);
+       out_be32(INTC_BASE + CIE, 1 << irq);
+}
+
+static void intc_ack(unsigned int irq)
+{
+       pr_debug("ack: %d\n", irq);
+       out_be32(INTC_BASE + IAR, 1 << irq);
+}
+
+static void intc_mask_ack(unsigned int irq)
+{
+       unsigned long mask = 1 << irq;
+       pr_debug("disable_and_ack: %d\n", irq);
+       out_be32(INTC_BASE + CIE, mask);
+       out_be32(INTC_BASE + IAR, mask);
+}
+
+static void intc_end(unsigned int irq)
+{
+       unsigned long mask = 1 << irq;
+       pr_debug("end: %d\n", irq);
+       if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
+               out_be32(INTC_BASE + SIE, mask);
+               /* ack level sensitive intr */
+               if (irq_desc[irq].status & IRQ_LEVEL)
+                       out_be32(INTC_BASE + IAR, mask);
+       }
+}
+
+static struct irq_chip intc_dev = {
+       .name = "Xilinx INTC",
+       .unmask = intc_enable_or_unmask,
+       .mask = intc_disable_or_mask,
+       .ack = intc_ack,
+       .mask_ack = intc_mask_ack,
+       .end = intc_end,
+};
+
+unsigned int get_irq(struct pt_regs *regs)
+{
+       int irq;
+
+       /*
+        * NOTE: This function is the one that needs to be improved in
+        * order to handle multiple interrupt controllers. It currently
+        * is hardcoded to check for interrupts only on the first INTC.
+        */
+       irq = in_be32(INTC_BASE + IVR);
+       pr_debug("get_irq: %d\n", irq);
+
+       return irq;
+}
+
+void __init init_IRQ(void)
+{
+       u32 i, j, intr_type;
+       struct device_node *intc = NULL;
+#ifdef CONFIG_SELFMOD_INTC
+       unsigned int intc_baseaddr = 0;
+       static int arr_func[] = {
+                               (int)&get_irq,
+                               (int)&intc_enable_or_unmask,
+                               (int)&intc_disable_or_mask,
+                               (int)&intc_mask_ack,
+                               (int)&intc_ack,
+                               (int)&intc_end,
+                               0
+                       };
+#endif
+       static char *intc_list[] = {
+                               "xlnx,xps-intc-1.00.a",
+                               "xlnx,opb-intc-1.00.c",
+                               "xlnx,opb-intc-1.00.b",
+                               "xlnx,opb-intc-1.00.a",
+                               NULL
+                       };
+
+       for (j = 0; intc_list[j] != NULL; j++) {
+               intc = of_find_compatible_node(NULL, NULL, intc_list[j]);
+               if (intc)
+                       break;
+       }
+
+       intc_baseaddr = *(int *) of_get_property(intc, "reg", NULL);
+       intc_baseaddr = (unsigned long) ioremap(intc_baseaddr, PAGE_SIZE);
+       nr_irq = *(int *) of_get_property(intc, "xlnx,num-intr-inputs", NULL);
+
+       intr_type =
+               *(int *) of_get_property(intc, "xlnx,kind-of-intr", NULL);
+       if (intr_type >= (1 << nr_irq))
+               printk(KERN_INFO " ERROR: Mishmash in king-of-intr param\n");
+
+#ifdef CONFIG_SELFMOD_INTC
+       selfmod_function((int *) arr_func, intc_baseaddr);
+#endif
+       printk(KERN_INFO "%s #0 at 0x%08x, num_irq=%d, edge=0x%x\n",
+               intc_list[j], intc_baseaddr, nr_irq, intr_type);
+
+       /*
+        * Disable all external interrupts until they are
+        * explicity requested.
+        */
+       out_be32(intc_baseaddr + IER, 0);
+
+       /* Acknowledge any pending interrupts just in case. */
+       out_be32(intc_baseaddr + IAR, 0xffffffff);
+
+       /* Turn on the Master Enable. */
+       out_be32(intc_baseaddr + MER, MER_HIE | MER_ME);
+
+       for (i = 0; i < nr_irq; ++i) {
+               if (intr_type & (0x00000001 << i)) {
+                       set_irq_chip_and_handler_name(i, &intc_dev,
+                               handle_edge_irq, intc_dev.name);
+                       irq_desc[i].status &= ~IRQ_LEVEL;
+               } else {
+                       set_irq_chip_and_handler_name(i, &intc_dev,
+                               handle_level_irq, intc_dev.name);
+                       irq_desc[i].status |= IRQ_LEVEL;
+               }
+       }
+}
diff --git a/arch/microblaze/kernel/irq.c b/arch/microblaze/kernel/irq.c
new file mode 100644 (file)
index 0000000..f688ee9
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/hardirq.h>
+#include <linux/interrupt.h>
+#include <linux/irqflags.h>
+#include <linux/seq_file.h>
+#include <linux/kernel_stat.h>
+#include <linux/irq.h>
+
+#include <asm/prom.h>
+
+unsigned int irq_of_parse_and_map(struct device_node *dev, int index)
+{
+       struct of_irq oirq;
+
+       if (of_irq_map_one(dev, index, &oirq))
+               return NO_IRQ;
+
+       return oirq.specifier[0];
+}
+EXPORT_SYMBOL_GPL(irq_of_parse_and_map);
+
+/*
+ * 'what should we do if we get a hw irq event on an illegal vector'.
+ * each architecture has to answer this themselves.
+ */
+void ack_bad_irq(unsigned int irq)
+{
+       printk(KERN_WARNING "unexpected IRQ trap at vector %02x\n", irq);
+}
+
+static u32 concurrent_irq;
+
+void do_IRQ(struct pt_regs *regs)
+{
+       unsigned int irq;
+       struct pt_regs *old_regs = set_irq_regs(regs);
+
+       irq_enter();
+       irq = get_irq(regs);
+next_irq:
+       BUG_ON(irq == -1U);
+       generic_handle_irq(irq);
+
+       irq = get_irq(regs);
+       if (irq != -1U) {
+               pr_debug("next irq: %d\n", irq);
+               ++concurrent_irq;
+               goto next_irq;
+       }
+
+       irq_exit();
+       set_irq_regs(old_regs);
+}
+
+int show_interrupts(struct seq_file *p, void *v)
+{
+       int i = *(loff_t *) v, j;
+       struct irqaction *action;
+       unsigned long flags;
+
+       if (i == 0) {
+               seq_printf(p, "         ");
+               for_each_online_cpu(j)
+                       seq_printf(p, "CPU%-8d", j);
+               seq_putc(p, '\n');
+       }
+
+       if (i < nr_irq) {
+               spin_lock_irqsave(&irq_desc[i].lock, flags);
+               action = irq_desc[i].action;
+               if (!action)
+                       goto skip;
+               seq_printf(p, "%3d: ", i);
+#ifndef CONFIG_SMP
+               seq_printf(p, "%10u ", kstat_irqs(i));
+#else
+               for_each_online_cpu(j)
+                       seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
+#endif
+               seq_printf(p, " %8s", irq_desc[i].status &
+                                       IRQ_LEVEL ? "level" : "edge");
+               seq_printf(p, " %8s", irq_desc[i].chip->name);
+               seq_printf(p, "  %s", action->name);
+
+               for (action = action->next; action; action = action->next)
+                       seq_printf(p, ", %s", action->name);
+
+               seq_putc(p, '\n');
+skip:
+               spin_unlock_irqrestore(&irq_desc[i].lock, flags);
+       }
+       return 0;
+}
diff --git a/arch/microblaze/kernel/microblaze_ksyms.c b/arch/microblaze/kernel/microblaze_ksyms.c
new file mode 100644 (file)
index 0000000..5f71790
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/string.h>
+#include <linux/cryptohash.h>
+#include <linux/delay.h>
+#include <linux/in6.h>
+#include <linux/syscalls.h>
+
+#include <asm/checksum.h>
+#include <linux/io.h>
+#include <asm/page.h>
+#include <asm/system.h>
+#include <linux/uaccess.h>
+
+/*
+ * libgcc functions - functions that are used internally by the
+ * compiler... (prototypes are not correct though, but that
+ * doesn't really matter since they're not versioned).
+ */
+extern void __ashldi3(void);
+EXPORT_SYMBOL(__ashldi3);
+extern void __ashrdi3(void);
+EXPORT_SYMBOL(__ashrdi3);
+extern void __divsi3(void);
+EXPORT_SYMBOL(__divsi3);
+extern void __lshrdi3(void);
+EXPORT_SYMBOL(__lshrdi3);
+extern void __modsi3(void);
+EXPORT_SYMBOL(__modsi3);
+extern void __mulsi3(void);
+EXPORT_SYMBOL(__mulsi3);
+extern void __muldi3(void);
+EXPORT_SYMBOL(__muldi3);
+extern void __ucmpdi2(void);
+EXPORT_SYMBOL(__ucmpdi2);
+extern void __udivsi3(void);
+EXPORT_SYMBOL(__udivsi3);
+extern void __umodsi3(void);
+EXPORT_SYMBOL(__umodsi3);
diff --git a/arch/microblaze/kernel/module.c b/arch/microblaze/kernel/module.c
new file mode 100644 (file)
index 0000000..5141417
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleloader.h>
+#include <linux/kernel.h>
+#include <linux/elf.h>
+#include <linux/vmalloc.h>
+#include <linux/slab.h>
+#include <linux/fs.h>
+#include <linux/string.h>
+
+#include <asm/pgtable.h>
+
+void *module_alloc(unsigned long size)
+{
+       void *ret;
+       ret = (size == 0) ? NULL : vmalloc(size);
+       pr_debug("module_alloc (%08lx@%08lx)\n", size, (unsigned long int)ret);
+       return ret;
+}
+
+void module_free(struct module *module, void *region)
+{
+       pr_debug("module_free(%s,%08lx)\n", module->name,
+                                       (unsigned long)region);
+       vfree(region);
+}
+
+int module_frob_arch_sections(Elf_Ehdr *hdr,
+                               Elf_Shdr *sechdrs,
+                               char *secstrings,
+                               struct module *mod)
+{
+       return 0;
+}
+
+int apply_relocate(Elf32_Shdr *sechdrs, const char *strtab,
+       unsigned int symindex, unsigned int relsec, struct module *module)
+{
+       printk(KERN_ERR "module %s: ADD RELOCATION unsupported\n",
+               module->name);
+       return -ENOEXEC;
+}
+
+int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
+       unsigned int symindex, unsigned int relsec, struct module *module)
+{
+
+       unsigned int i;
+       Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr;
+       Elf32_Sym *sym;
+       unsigned long int *location;
+       unsigned long int locoffs;
+       unsigned long int value;
+#if __GNUC__ < 4
+       unsigned long int old_value;
+#endif
+
+       pr_debug("Applying add relocation section %u to %u\n",
+               relsec, sechdrs[relsec].sh_info);
+
+       for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) {
+
+               location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr +
+                               rela[i].r_offset;
+               sym = (Elf32_Sym *)sechdrs[symindex].sh_addr +
+                       ELF32_R_SYM(rela[i].r_info);
+               value = sym->st_value + rela[i].r_addend;
+
+               switch (ELF32_R_TYPE(rela[i].r_info)) {
+
+               /*
+                * Be careful! mb-gcc / mb-ld splits the relocs between the
+                * text and the reloc table. In general this means we must
+                * read the current contents of (*location), add any offset
+                * then store the result back in
+                */
+
+               case R_MICROBLAZE_32:
+#if __GNUC__ < 4
+                       old_value = *location;
+                       *location = value + old_value;
+
+                       pr_debug("R_MICROBLAZE_32 (%08lx->%08lx)\n",
+                               old_value, value);
+#else
+                       *location = value;
+#endif
+                       break;
+
+               case R_MICROBLAZE_64:
+#if __GNUC__ < 4
+                       /* Split relocs only required/used pre gcc4.1.1 */
+                       old_value = ((location[0] & 0x0000FFFF) << 16) |
+                                       (location[1] & 0x0000FFFF);
+                       value += old_value;
+#endif
+                       location[0] = (location[0] & 0xFFFF0000) |
+                                       (value >> 16);
+                       location[1] = (location[1] & 0xFFFF0000) |
+                                       (value & 0xFFFF);
+#if __GNUC__ < 4
+                       pr_debug("R_MICROBLAZE_64 (%08lx->%08lx)\n",
+                               old_value, value);
+#endif
+                       break;
+
+               case R_MICROBLAZE_64_PCREL:
+                       locoffs = (location[0] & 0xFFFF) << 16 |
+                               (location[1] & 0xFFFF);
+                       value -= (unsigned long int)(location) + 4 +
+                               locoffs;
+                       location[0] = (location[0] & 0xFFFF0000) |
+                                       (value >> 16);
+                       location[1] = (location[1] & 0xFFFF0000) |
+                                       (value & 0xFFFF);
+                       pr_debug("R_MICROBLAZE_64_PCREL (%08lx)\n",
+                               value);
+                       break;
+
+               case R_MICROBLAZE_NONE:
+                       pr_debug("R_MICROBLAZE_NONE\n");
+                       break;
+
+               default:
+                       printk(KERN_ERR "module %s: "
+                               "Unknown relocation: %u\n",
+                               module->name,
+                               ELF32_R_TYPE(rela->r_info));
+                       return -ENOEXEC;
+               }
+       }
+       return 0;
+}
+
+int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
+               struct module *module)
+{
+       return 0;
+}
+
+void module_arch_cleanup(struct module *mod)
+{
+}
diff --git a/arch/microblaze/kernel/of_device.c b/arch/microblaze/kernel/of_device.c
new file mode 100644 (file)
index 0000000..717edf4
--- /dev/null
@@ -0,0 +1,115 @@
+#include <linux/string.h>
+#include <linux/kernel.h>
+#include <linux/of.h>
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/mod_devicetable.h>
+#include <linux/slab.h>
+#include <linux/of_device.h>
+
+#include <linux/errno.h>
+
+void of_device_make_bus_id(struct of_device *dev)
+{
+       static atomic_t bus_no_reg_magic;
+       struct device_node *node = dev->node;
+       char *name = dev->dev.bus_id;
+       const u32 *reg;
+       u64 addr;
+       int magic;
+
+       /*
+        * For MMIO, get the physical address
+        */
+       reg = of_get_property(node, "reg", NULL);
+       if (reg) {
+               addr = of_translate_address(node, reg);
+               if (addr != OF_BAD_ADDR) {
+                       snprintf(name, BUS_ID_SIZE,
+                                "%llx.%s", (unsigned long long)addr,
+                                node->name);
+                       return;
+               }
+       }
+
+       /*
+        * No BusID, use the node name and add a globally incremented
+        * counter (and pray...)
+        */
+       magic = atomic_add_return(1, &bus_no_reg_magic);
+       snprintf(name, BUS_ID_SIZE, "%s.%d", node->name, magic - 1);
+}
+EXPORT_SYMBOL(of_device_make_bus_id);
+
+struct of_device *of_device_alloc(struct device_node *np,
+                                 const char *bus_id,
+                                 struct device *parent)
+{
+       struct of_device *dev;
+
+       dev = kzalloc(sizeof(*dev), GFP_KERNEL);
+       if (!dev)
+               return NULL;
+
+       dev->node = of_node_get(np);
+       dev->dev.dma_mask = &dev->dma_mask;
+       dev->dev.parent = parent;
+       dev->dev.release = of_release_dev;
+       dev->dev.archdata.of_node = np;
+
+       if (bus_id)
+               strlcpy(dev->dev.bus_id, bus_id, BUS_ID_SIZE);
+       else
+               of_device_make_bus_id(dev);
+
+       return dev;
+}
+EXPORT_SYMBOL(of_device_alloc);
+
+int of_device_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+       struct of_device *ofdev;
+       const char *compat;
+       int seen = 0, cplen, sl;
+
+       if (!dev)
+               return -ENODEV;
+
+       ofdev = to_of_device(dev);
+
+       if (add_uevent_var(env, "OF_NAME=%s", ofdev->node->name))
+               return -ENOMEM;
+
+       if (add_uevent_var(env, "OF_TYPE=%s", ofdev->node->type))
+               return -ENOMEM;
+
+       /* Since the compatible field can contain pretty much anything
+        * it's not really legal to split it out with commas. We split it
+        * up using a number of environment variables instead. */
+
+       compat = of_get_property(ofdev->node, "compatible", &cplen);
+       while (compat && *compat && cplen > 0) {
+               if (add_uevent_var(env, "OF_COMPATIBLE_%d=%s", seen, compat))
+                       return -ENOMEM;
+
+               sl = strlen(compat) + 1;
+               compat += sl;
+               cplen -= sl;
+               seen++;
+       }
+
+       if (add_uevent_var(env, "OF_COMPATIBLE_N=%d", seen))
+               return -ENOMEM;
+
+       /* modalias is trickier, we add it in 2 steps */
+       if (add_uevent_var(env, "MODALIAS="))
+               return -ENOMEM;
+       sl = of_device_get_modalias(ofdev, &env->buf[env->buflen-1],
+                                   sizeof(env->buf) - env->buflen);
+       if (sl >= (sizeof(env->buf) - env->buflen))
+               return -ENOMEM;
+       env->buflen += sl;
+
+       return 0;
+}
+EXPORT_SYMBOL(of_device_uevent);
diff --git a/arch/microblaze/kernel/of_platform.c b/arch/microblaze/kernel/of_platform.c
new file mode 100644 (file)
index 0000000..acf4574
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ *    Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
+ *                      <benh@kernel.crashing.org>
+ *    and               Arnd Bergmann, IBM Corp.
+ *
+ *  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.
+ *
+ */
+
+#undef DEBUG
+
+#include <linux/string.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/mod_devicetable.h>
+#include <linux/slab.h>
+#include <linux/pci.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/of_platform.h>
+
+#include <linux/errno.h>
+#include <linux/topology.h>
+#include <asm/atomic.h>
+
+struct bus_type of_platform_bus_type = {
+       .uevent = of_device_uevent,
+};
+EXPORT_SYMBOL(of_platform_bus_type);
+
+static int __init of_bus_driver_init(void)
+{
+       return of_bus_type_init(&of_platform_bus_type, "of_platform");
+}
+postcore_initcall(of_bus_driver_init);
+
+struct of_device *of_platform_device_create(struct device_node *np,
+                                           const char *bus_id,
+                                           struct device *parent)
+{
+       struct of_device *dev;
+
+       dev = of_device_alloc(np, bus_id, parent);
+       if (!dev)
+               return NULL;
+
+       dev->dma_mask = 0xffffffffUL;
+       dev->dev.bus = &of_platform_bus_type;
+
+       /* We do not fill the DMA ops for platform devices by default.
+        * This is currently the responsibility of the platform code
+        * to do such, possibly using a device notifier
+        */
+
+       if (of_device_register(dev) != 0) {
+               of_device_free(dev);
+               return NULL;
+       }
+
+       return dev;
+}
+EXPORT_SYMBOL(of_platform_device_create);
+
+/**
+ * of_platform_bus_create - Create an OF device for a bus node and all its
+ * children. Optionally recursively instanciate matching busses.
+ * @bus: device node of the bus to instanciate
+ * @matches: match table, NULL to use the default, OF_NO_DEEP_PROBE to
+ * disallow recursive creation of child busses
+ */
+static int of_platform_bus_create(const struct device_node *bus,
+                                 const struct of_device_id *matches,
+                                 struct device *parent)
+{
+       struct device_node *child;
+       struct of_device *dev;
+       int rc = 0;
+
+       for_each_child_of_node(bus, child) {
+               pr_debug("   create child: %s\n", child->full_name);
+               dev = of_platform_device_create(child, NULL, parent);
+               if (dev == NULL)
+                       rc = -ENOMEM;
+               else if (!of_match_node(matches, child))
+                       continue;
+               if (rc == 0) {
+                       pr_debug("   and sub busses\n");
+                       rc = of_platform_bus_create(child, matches, &dev->dev);
+               }
+               if (rc) {
+                       of_node_put(child);
+                       break;
+               }
+       }
+       return rc;
+}
+
+
+/**
+ * of_platform_bus_probe - Probe the device-tree for platform busses
+ * @root: parent of the first level to probe or NULL for the root of the tree
+ * @matches: match table, NULL to use the default
+ * @parent: parent to hook devices from, NULL for toplevel
+ *
+ * Note that children of the provided root are not instanciated as devices
+ * unless the specified root itself matches the bus list and is not NULL.
+ */
+
+int of_platform_bus_probe(struct device_node *root,
+                         const struct of_device_id *matches,
+                         struct device *parent)
+{
+       struct device_node *child;
+       struct of_device *dev;
+       int rc = 0;
+
+       if (matches == NULL)
+               matches = of_default_bus_ids;
+       if (matches == OF_NO_DEEP_PROBE)
+               return -EINVAL;
+       if (root == NULL)
+               root = of_find_node_by_path("/");
+       else
+               of_node_get(root);
+
+       pr_debug("of_platform_bus_probe()\n");
+       pr_debug(" starting at: %s\n", root->full_name);
+
+       /* Do a self check of bus type, if there's a match, create
+        * children
+        */
+       if (of_match_node(matches, root)) {
+               pr_debug(" root match, create all sub devices\n");
+               dev = of_platform_device_create(root, NULL, parent);
+               if (dev == NULL) {
+                       rc = -ENOMEM;
+                       goto bail;
+               }
+               pr_debug(" create all sub busses\n");
+               rc = of_platform_bus_create(root, matches, &dev->dev);
+               goto bail;
+       }
+       for_each_child_of_node(root, child) {
+               if (!of_match_node(matches, child))
+                       continue;
+
+               pr_debug("  match: %s\n", child->full_name);
+               dev = of_platform_device_create(child, NULL, parent);
+               if (dev == NULL)
+                       rc = -ENOMEM;
+               else
+                       rc = of_platform_bus_create(child, matches, &dev->dev);
+               if (rc) {
+                       of_node_put(child);
+                       break;
+               }
+       }
+ bail:
+       of_node_put(root);
+       return rc;
+}
+EXPORT_SYMBOL(of_platform_bus_probe);
+
+static int of_dev_node_match(struct device *dev, void *data)
+{
+       return to_of_device(dev)->node == data;
+}
+
+struct of_device *of_find_device_by_node(struct device_node *np)
+{
+       struct device *dev;
+
+       dev = bus_find_device(&of_platform_bus_type,
+                             NULL, np, of_dev_node_match);
+       if (dev)
+               return to_of_device(dev);
+       return NULL;
+}
+EXPORT_SYMBOL(of_find_device_by_node);
+
+static int of_dev_phandle_match(struct device *dev, void *data)
+{
+       phandle *ph = data;
+       return to_of_device(dev)->node->linux_phandle == *ph;
+}
+
+struct of_device *of_find_device_by_phandle(phandle ph)
+{
+       struct device *dev;
+
+       dev = bus_find_device(&of_platform_bus_type,
+                             NULL, &ph, of_dev_phandle_match);
+       if (dev)
+               return to_of_device(dev);
+       return NULL;
+}
+EXPORT_SYMBOL(of_find_device_by_phandle);
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c
new file mode 100644 (file)
index 0000000..60e9ed7
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/module.h>
+#include <linux/sched.h>
+#include <linux/pm.h>
+#include <linux/tick.h>
+#include <linux/bitops.h>
+#include <asm/system.h>
+#include <asm/pgalloc.h>
+
+void show_regs(struct pt_regs *regs)
+{
+       printk(KERN_INFO " Registers dump: mode=%X\r\n", regs->kernel_mode);
+       printk(KERN_INFO " r1=%08lX, r2=%08lX, r3=%08lX, r4=%08lX\n",
+                               regs->r1, regs->r2, regs->r3, regs->r4);
+       printk(KERN_INFO " r5=%08lX, r6=%08lX, r7=%08lX, r8=%08lX\n",
+                               regs->r5, regs->r6, regs->r7, regs->r8);
+       printk(KERN_INFO " r9=%08lX, r10=%08lX, r11=%08lX, r12=%08lX\n",
+                               regs->r9, regs->r10, regs->r11, regs->r12);
+       printk(KERN_INFO " r13=%08lX, r14=%08lX, r15=%08lX, r16=%08lX\n",
+                               regs->r13, regs->r14, regs->r15, regs->r16);
+       printk(KERN_INFO " r17=%08lX, r18=%08lX, r19=%08lX, r20=%08lX\n",
+                               regs->r17, regs->r18, regs->r19, regs->r20);
+       printk(KERN_INFO " r21=%08lX, r22=%08lX, r23=%08lX, r24=%08lX\n",
+                               regs->r21, regs->r22, regs->r23, regs->r24);
+       printk(KERN_INFO " r25=%08lX, r26=%08lX, r27=%08lX, r28=%08lX\n",
+                               regs->r25, regs->r26, regs->r27, regs->r28);
+       printk(KERN_INFO " r29=%08lX, r30=%08lX, r31=%08lX, rPC=%08lX\n",
+                               regs->r29, regs->r30, regs->r31, regs->pc);
+       printk(KERN_INFO " msr=%08lX, ear=%08lX, esr=%08lX, fsr=%08lX\n",
+                               regs->msr, regs->ear, regs->esr, regs->fsr);
+       while (1)
+               ;
+}
+
+void (*pm_idle)(void);
+void (*pm_power_off)(void) = NULL;
+EXPORT_SYMBOL(pm_power_off);
+
+static int hlt_counter = 1;
+
+void disable_hlt(void)
+{
+       hlt_counter++;
+}
+EXPORT_SYMBOL(disable_hlt);
+
+void enable_hlt(void)
+{
+       hlt_counter--;
+}
+EXPORT_SYMBOL(enable_hlt);
+
+static int __init nohlt_setup(char *__unused)
+{
+       hlt_counter = 1;
+       return 1;
+}
+__setup("nohlt", nohlt_setup);
+
+static int __init hlt_setup(char *__unused)
+{
+       hlt_counter = 0;
+       return 1;
+}
+__setup("hlt", hlt_setup);
+
+void default_idle(void)
+{
+       if (!hlt_counter) {
+               clear_thread_flag(TIF_POLLING_NRFLAG);
+               smp_mb__after_clear_bit();
+               local_irq_disable();
+               while (!need_resched())
+                       cpu_sleep();
+               local_irq_enable();
+               set_thread_flag(TIF_POLLING_NRFLAG);
+       } else
+               while (!need_resched())
+                       cpu_relax();
+}
+
+void cpu_idle(void)
+{
+       set_thread_flag(TIF_POLLING_NRFLAG);
+
+       /* endless idle loop with no priority at all */
+       while (1) {
+               void (*idle)(void) = pm_idle;
+
+               if (!idle)
+                       idle = default_idle;
+
+               tick_nohz_stop_sched_tick(1);
+               while (!need_resched())
+                       idle();
+               tick_nohz_restart_sched_tick();
+
+               preempt_enable_no_resched();
+               schedule();
+               preempt_disable();
+               check_pgt_cache();
+       }
+}
+
+void flush_thread(void)
+{
+}
+
+/* FIXME - here will be a proposed change -> remove nr parameter */
+int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
+               unsigned long unused,
+               struct task_struct *p, struct pt_regs *regs)
+{
+       struct pt_regs *childregs = task_pt_regs(p);
+       struct thread_info *ti = task_thread_info(p);
+
+       *childregs = *regs;
+       if (user_mode(regs))
+               childregs->r1 = usp;
+       else
+               childregs->r1 = ((unsigned long) ti) + THREAD_SIZE;
+
+       memset(&ti->cpu_context, 0, sizeof(struct cpu_context));
+       ti->cpu_context.r1 = (unsigned long)childregs;
+       ti->cpu_context.msr = (unsigned long)childregs->msr;
+       ti->cpu_context.r15 = (unsigned long)ret_from_fork - 8;
+
+       if (clone_flags & CLONE_SETTLS)
+               ;
+
+       return 0;
+}
+
+/*
+ * Return saved PC of a blocked thread.
+ */
+unsigned long thread_saved_pc(struct task_struct *tsk)
+{
+       struct cpu_context *ctx =
+               &(((struct thread_info *)(tsk->stack))->cpu_context);
+
+       /* Check whether the thread is blocked in resume() */
+       if (in_sched_functions(ctx->r15))
+               return (unsigned long)ctx->r15;
+       else
+               return ctx->r14;
+}
+
+static void kernel_thread_helper(int (*fn)(void *), void *arg)
+{
+       fn(arg);
+       do_exit(-1);
+}
+
+int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
+{
+       struct pt_regs regs;
+       int ret;
+
+       memset(&regs, 0, sizeof(regs));
+       /* store them in non-volatile registers */
+       regs.r5 = (unsigned long)fn;
+       regs.r6 = (unsigned long)arg;
+       local_save_flags(regs.msr);
+       regs.pc = (unsigned long)kernel_thread_helper;
+       regs.kernel_mode = 1;
+
+       ret = do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0,
+                       &regs, 0, NULL, NULL);
+
+       return ret;
+}
+
+unsigned long get_wchan(struct task_struct *p)
+{
+/* TBD (used by procfs) */
+       return 0;
+}
diff --git a/arch/microblaze/kernel/prom.c b/arch/microblaze/kernel/prom.c
new file mode 100644 (file)
index 0000000..475b1fa
--- /dev/null
@@ -0,0 +1,1147 @@
+/*
+ * Procedures for creating, accessing and interpreting the device tree.
+ *
+ * Paul Mackerras      August 1996.
+ * Copyright (C) 1996-2005 Paul Mackerras.
+ *
+ *  Adapted for 64bit PowerPC by Dave Engebretsen and Peter Bergner.
+ *    {engebret|bergner}@us.ibm.com
+ *
+ *      This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ */
+
+#include <stdarg.h>
+#include <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/init.h>
+#include <linux/threads.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
+#include <linux/pci.h>
+#include <linux/stringify.h>
+#include <linux/delay.h>
+#include <linux/initrd.h>
+#include <linux/bitops.h>
+#include <linux/module.h>
+#include <linux/kexec.h>
+#include <linux/debugfs.h>
+#include <linux/irq.h>
+#include <linux/lmb.h>
+
+#include <asm/prom.h>
+#include <asm/page.h>
+#include <asm/processor.h>
+#include <asm/irq.h>
+#include <linux/io.h>
+#include <asm/system.h>
+#include <asm/mmu.h>
+#include <asm/pgtable.h>
+#include <linux/pci.h>
+#include <asm/sections.h>
+#include <asm/pci-bridge.h>
+
+static int __initdata dt_root_addr_cells;
+static int __initdata dt_root_size_cells;
+
+typedef u32 cell_t;
+
+static struct boot_param_header *initial_boot_params;
+
+/* export that to outside world */
+struct device_node *of_chosen;
+
+static inline char *find_flat_dt_string(u32 offset)
+{
+       return ((char *)initial_boot_params) +
+               initial_boot_params->off_dt_strings + offset;
+}
+
+/**
+ * This function is used to scan the flattened device-tree, it is
+ * used to extract the memory informations at boot before we can
+ * unflatten the tree
+ */
+int __init of_scan_flat_dt(int (*it)(unsigned long node,
+                                    const char *uname, int depth,
+                                    void *data),
+                          void *data)
+{
+       unsigned long p = ((unsigned long)initial_boot_params) +
+               initial_boot_params->off_dt_struct;
+       int rc = 0;
+       int depth = -1;
+
+       do {
+               u32 tag = *((u32 *)p);
+               char *pathp;
+
+               p += 4;
+               if (tag == OF_DT_END_NODE) {
+                       depth--;
+                       continue;
+               }
+               if (tag == OF_DT_NOP)
+                       continue;
+               if (tag == OF_DT_END)
+                       break;
+               if (tag == OF_DT_PROP) {
+                       u32 sz = *((u32 *)p);
+                       p += 8;
+                       if (initial_boot_params->version < 0x10)
+                               p = _ALIGN(p, sz >= 8 ? 8 : 4);
+                       p += sz;
+                       p = _ALIGN(p, 4);
+                       continue;
+               }
+               if (tag != OF_DT_BEGIN_NODE) {
+                       printk(KERN_WARNING "Invalid tag %x scanning flattened"
+                               " device tree !\n", tag);
+                       return -EINVAL;
+               }
+               depth++;
+               pathp = (char *)p;
+               p = _ALIGN(p + strlen(pathp) + 1, 4);
+               if ((*pathp) == '/') {
+                       char *lp, *np;
+                       for (lp = NULL, np = pathp; *np; np++)
+                               if ((*np) == '/')
+                                       lp = np+1;
+                       if (lp != NULL)
+                               pathp = lp;
+               }
+               rc = it(p, pathp, depth, data);
+               if (rc != 0)
+                       break;
+       } while (1);
+
+       return rc;
+}
+
+unsigned long __init of_get_flat_dt_root(void)
+{
+       unsigned long p = ((unsigned long)initial_boot_params) +
+               initial_boot_params->off_dt_struct;
+
+       while (*((u32 *)p) == OF_DT_NOP)
+               p += 4;
+       BUG_ON(*((u32 *)p) != OF_DT_BEGIN_NODE);
+       p += 4;
+       return _ALIGN(p + strlen((char *)p) + 1, 4);
+}
+
+/**
+ * This function can be used within scan_flattened_dt callback to get
+ * access to properties
+ */
+void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
+                               unsigned long *size)
+{
+       unsigned long p = node;
+
+       do {
+               u32 tag = *((u32 *)p);
+               u32 sz, noff;
+               const char *nstr;
+
+               p += 4;
+               if (tag == OF_DT_NOP)
+                       continue;
+               if (tag != OF_DT_PROP)
+                       return NULL;
+
+               sz = *((u32 *)p);
+               noff = *((u32 *)(p + 4));
+               p += 8;
+               if (initial_boot_params->version < 0x10)
+                       p = _ALIGN(p, sz >= 8 ? 8 : 4);
+
+               nstr = find_flat_dt_string(noff);
+               if (nstr == NULL) {
+                       printk(KERN_WARNING "Can't find property index"
+                               " name !\n");
+                       return NULL;
+               }
+               if (strcmp(name, nstr) == 0) {
+                       if (size)
+                               *size = sz;
+                       return (void *)p;
+               }
+               p += sz;
+               p = _ALIGN(p, 4);
+       } while (1);
+}
+
+int __init of_flat_dt_is_compatible(unsigned long node, const char *compat)
+{
+       const char *cp;
+       unsigned long cplen, l;
+
+       cp = of_get_flat_dt_prop(node, "compatible", &cplen);
+       if (cp == NULL)
+               return 0;
+       while (cplen > 0) {
+               if (strncasecmp(cp, compat, strlen(compat)) == 0)
+                       return 1;
+               l = strlen(cp) + 1;
+               cp += l;
+               cplen -= l;
+       }
+
+       return 0;
+}
+
+static void *__init unflatten_dt_alloc(unsigned long *mem, unsigned long size,
+                                       unsigned long align)
+{
+       void *res;
+
+       *mem = _ALIGN(*mem, align);
+       res = (void *)*mem;
+       *mem += size;
+
+       return res;
+}
+
+static unsigned long __init unflatten_dt_node(unsigned long mem,
+                                       unsigned long *p,
+                                       struct device_node *dad,
+                                       struct device_node ***allnextpp,
+                                       unsigned long fpsize)
+{
+       struct device_node *np;
+       struct property *pp, **prev_pp = NULL;
+       char *pathp;
+       u32 tag;
+       unsigned int l, allocl;
+       int has_name = 0;
+       int new_format = 0;
+
+       tag = *((u32 *)(*p));
+       if (tag != OF_DT_BEGIN_NODE) {
+               printk("Weird tag at start of node: %x\n", tag);
+               return mem;
+       }
+       *p += 4;
+       pathp = (char *)*p;
+       l = allocl = strlen(pathp) + 1;
+       *p = _ALIGN(*p + l, 4);
+
+       /* version 0x10 has a more compact unit name here instead of the full
+        * path. we accumulate the full path size using "fpsize", we'll rebuild
+        * it later. We detect this because the first character of the name is
+        * not '/'.
+        */
+       if ((*pathp) != '/') {
+               new_format = 1;
+               if (fpsize == 0) {
+                       /* root node: special case. fpsize accounts for path
+                        * plus terminating zero. root node only has '/', so
+                        * fpsize should be 2, but we want to avoid the first
+                        * level nodes to have two '/' so we use fpsize 1 here
+                        */
+                       fpsize = 1;
+                       allocl = 2;
+               } else {
+                       /* account for '/' and path size minus terminal 0
+                        * already in 'l'
+                        */
+                       fpsize += l;
+                       allocl = fpsize;
+               }
+       }
+
+       np = unflatten_dt_alloc(&mem, sizeof(struct device_node) + allocl,
+                               __alignof__(struct device_node));
+       if (allnextpp) {
+               memset(np, 0, sizeof(*np));
+               np->full_name = ((char *)np) + sizeof(struct device_node);
+               if (new_format) {
+                       char *p2 = np->full_name;
+                       /* rebuild full path for new format */
+                       if (dad && dad->parent) {
+                               strcpy(p2, dad->full_name);
+#ifdef DEBUG
+                               if ((strlen(p2) + l + 1) != allocl) {
+                                       pr_debug("%s: p: %d, l: %d, a: %d\n",
+                                               pathp, (int)strlen(p2),
+                                               l, allocl);
+                               }
+#endif
+                               p2 += strlen(p2);
+                       }
+                       *(p2++) = '/';
+                       memcpy(p2, pathp, l);
+               } else
+                       memcpy(np->full_name, pathp, l);
+               prev_pp = &np->properties;
+               **allnextpp = np;
+               *allnextpp = &np->allnext;
+               if (dad != NULL) {
+                       np->parent = dad;
+                       /* we temporarily use the next field as `last_child'*/
+                       if (dad->next == NULL)
+                               dad->child = np;
+                       else
+                               dad->next->sibling = np;
+                       dad->next = np;
+               }
+               kref_init(&np->kref);
+       }
+       while (1) {
+               u32 sz, noff;
+               char *pname;
+
+               tag = *((u32 *)(*p));
+               if (tag == OF_DT_NOP) {
+                       *p += 4;
+                       continue;
+               }
+               if (tag != OF_DT_PROP)
+                       break;
+               *p += 4;
+               sz = *((u32 *)(*p));
+               noff = *((u32 *)((*p) + 4));
+               *p += 8;
+               if (initial_boot_params->version < 0x10)
+                       *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
+
+               pname = find_flat_dt_string(noff);
+               if (pname == NULL) {
+                       printk(KERN_INFO
+                               "Can't find property name in list !\n");
+                       break;
+               }
+               if (strcmp(pname, "name") == 0)
+                       has_name = 1;
+               l = strlen(pname) + 1;
+               pp = unflatten_dt_alloc(&mem, sizeof(struct property),
+                                       __alignof__(struct property));
+               if (allnextpp) {
+                       if (strcmp(pname, "linux,phandle") == 0) {
+                               np->node = *((u32 *)*p);
+                               if (np->linux_phandle == 0)
+                                       np->linux_phandle = np->node;
+                       }
+                       if (strcmp(pname, "ibm,phandle") == 0)
+                               np->linux_phandle = *((u32 *)*p);
+                       pp->name = pname;
+                       pp->length = sz;
+                       pp->value = (void *)*p;
+                       *prev_pp = pp;
+                       prev_pp = &pp->next;
+               }
+               *p = _ALIGN((*p) + sz, 4);
+       }
+       /* with version 0x10 we may not have the name property, recreate
+        * it here from the unit name if absent
+        */
+       if (!has_name) {
+               char *p1 = pathp, *ps = pathp, *pa = NULL;
+               int sz;
+
+               while (*p1) {
+                       if ((*p1) == '@')
+                               pa = p1;
+                       if ((*p1) == '/')
+                               ps = p1 + 1;
+                       p1++;
+               }
+               if (pa < ps)
+                       pa = p1;
+               sz = (pa - ps) + 1;
+               pp = unflatten_dt_alloc(&mem, sizeof(struct property) + sz,
+                                       __alignof__(struct property));
+               if (allnextpp) {
+                       pp->name = "name";
+                       pp->length = sz;
+                       pp->value = pp + 1;
+                       *prev_pp = pp;
+                       prev_pp = &pp->next;
+                       memcpy(pp->value, ps, sz - 1);
+                       ((char *)pp->value)[sz - 1] = 0;
+                       pr_debug("fixed up name for %s -> %s\n", pathp,
+                               (char *)pp->value);
+               }
+       }
+       if (allnextpp) {
+               *prev_pp = NULL;
+               np->name = of_get_property(np, "name", NULL);
+               np->type = of_get_property(np, "device_type", NULL);
+
+               if (!np->name)
+                       np->name = "<NULL>";
+               if (!np->type)
+                       np->type = "<NULL>";
+       }
+       while (tag == OF_DT_BEGIN_NODE) {
+               mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize);
+               tag = *((u32 *)(*p));
+       }
+       if (tag != OF_DT_END_NODE) {
+               printk(KERN_INFO "Weird tag at end of node: %x\n", tag);
+               return mem;
+       }
+       *p += 4;
+       return mem;
+}
+
+/**
+ * unflattens the device-tree passed by the firmware, creating the
+ * tree of struct device_node. It also fills the "name" and "type"
+ * pointers of the nodes so the normal device-tree walking functions
+ * can be used (this used to be done by finish_device_tree)
+ */
+void __init unflatten_device_tree(void)
+{
+       unsigned long start, mem, size;
+       struct device_node **allnextp = &allnodes;
+
+       pr_debug(" -> unflatten_device_tree()\n");
+
+       /* First pass, scan for size */
+       start = ((unsigned long)initial_boot_params) +
+               initial_boot_params->off_dt_struct;
+       size = unflatten_dt_node(0, &start, NULL, NULL, 0);
+       size = (size | 3) + 1;
+
+       pr_debug("  size is %lx, allocating...\n", size);
+
+       /* Allocate memory for the expanded device tree */
+       mem = lmb_alloc(size + 4, __alignof__(struct device_node));
+       mem = (unsigned long) __va(mem);
+
+       ((u32 *)mem)[size / 4] = 0xdeadbeef;
+
+       pr_debug("  unflattening %lx...\n", mem);
+
+       /* Second pass, do actual unflattening */
+       start = ((unsigned long)initial_boot_params) +
+               initial_boot_params->off_dt_struct;
+       unflatten_dt_node(mem, &start, NULL, &allnextp, 0);
+       if (*((u32 *)start) != OF_DT_END)
+               printk(KERN_WARNING "Weird tag at end of tree: %08x\n",
+                       *((u32 *)start));
+       if (((u32 *)mem)[size / 4] != 0xdeadbeef)
+               printk(KERN_WARNING "End of tree marker overwritten: %08x\n",
+                       ((u32 *)mem)[size / 4]);
+       *allnextp = NULL;
+
+       /* Get pointer to OF "/chosen" node for use everywhere */
+       of_chosen = of_find_node_by_path("/chosen");
+       if (of_chosen == NULL)
+               of_chosen = of_find_node_by_path("/chosen@0");
+
+       pr_debug(" <- unflatten_device_tree()\n");
+}
+
+#define early_init_dt_scan_drconf_memory(node) 0
+
+static int __init early_init_dt_scan_cpus(unsigned long node,
+                                         const char *uname, int depth,
+                                         void *data)
+{
+       static int logical_cpuid;
+       char *type = of_get_flat_dt_prop(node, "device_type", NULL);
+       const u32 *intserv;
+       int i, nthreads;
+       int found = 0;
+
+       /* We are scanning "cpu" nodes only */
+       if (type == NULL || strcmp(type, "cpu") != 0)
+               return 0;
+
+       /* Get physical cpuid */
+       intserv = of_get_flat_dt_prop(node, "reg", NULL);
+       nthreads = 1;
+
+       /*
+        * Now see if any of these threads match our boot cpu.
+        * NOTE: This must match the parsing done in smp_setup_cpu_maps.
+        */
+       for (i = 0; i < nthreads; i++) {
+               /*
+                * version 2 of the kexec param format adds the phys cpuid of
+                * booted proc.
+                */
+               if (initial_boot_params && initial_boot_params->version >= 2) {
+                       if (intserv[i] ==
+                                       initial_boot_params->boot_cpuid_phys) {
+                               found = 1;
+                               break;
+                       }
+               } else {
+                       /*
+                        * Check if it's the boot-cpu, set it's hw index now,
+                        * unfortunately this format did not support booting
+                        * off secondary threads.
+                        */
+                       if (of_get_flat_dt_prop(node,
+                                       "linux,boot-cpu", NULL) != NULL) {
+                               found = 1;
+                               break;
+                       }
+               }
+
+#ifdef CONFIG_SMP
+               /* logical cpu id is always 0 on UP kernels */
+               logical_cpuid++;
+#endif
+       }
+
+       if (found) {
+               pr_debug("boot cpu: logical %d physical %d\n", logical_cpuid,
+                       intserv[i]);
+               boot_cpuid = logical_cpuid;
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_BLK_DEV_INITRD
+static void __init early_init_dt_check_for_initrd(unsigned long node)
+{
+       unsigned long l;
+       u32 *prop;
+
+       pr_debug("Looking for initrd properties... ");
+
+       prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
+       if (prop) {
+               initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
+
+               prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
+               if (prop) {
+                       initrd_end = (unsigned long)
+                                       __va(of_read_ulong(prop, l/4));
+                       initrd_below_start_ok = 1;
+               } else {
+                       initrd_start = 0;
+               }
+       }
+
+       pr_debug("initrd_start=0x%lx  initrd_end=0x%lx\n",
+                                       initrd_start, initrd_end);
+}
+#else
+static inline void early_init_dt_check_for_initrd(unsigned long node)
+{
+}
+#endif /* CONFIG_BLK_DEV_INITRD */
+
+static int __init early_init_dt_scan_chosen(unsigned long node,
+                               const char *uname, int depth, void *data)
+{
+       unsigned long l;
+       char *p;
+
+       pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
+
+       if (depth != 1 ||
+               (strcmp(uname, "chosen") != 0 &&
+                               strcmp(uname, "chosen@0") != 0))
+               return 0;
+
+#ifdef CONFIG_KEXEC
+       lprop = (u64 *)of_get_flat_dt_prop(node,
+                               "linux,crashkernel-base", NULL);
+       if (lprop)
+               crashk_res.start = *lprop;
+
+       lprop = (u64 *)of_get_flat_dt_prop(node,
+                               "linux,crashkernel-size", NULL);
+       if (lprop)
+               crashk_res.end = crashk_res.start + *lprop - 1;
+#endif
+
+       early_init_dt_check_for_initrd(node);
+
+       /* Retreive command line */
+       p = of_get_flat_dt_prop(node, "bootargs", &l);
+       if (p != NULL && l > 0)
+               strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE));
+
+#ifdef CONFIG_CMDLINE
+       if (p == NULL || l == 0 || (l == 1 && (*p) == 0))
+               strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+#endif /* CONFIG_CMDLINE */
+
+       pr_debug("Command line is: %s\n", cmd_line);
+
+       /* break now */
+       return 1;
+}
+
+static int __init early_init_dt_scan_root(unsigned long node,
+                               const char *uname, int depth, void *data)
+{
+       u32 *prop;
+
+       if (depth != 0)
+               return 0;
+
+       prop = of_get_flat_dt_prop(node, "#size-cells", NULL);
+       dt_root_size_cells = (prop == NULL) ? 1 : *prop;
+       pr_debug("dt_root_size_cells = %x\n", dt_root_size_cells);
+
+       prop = of_get_flat_dt_prop(node, "#address-cells", NULL);
+       dt_root_addr_cells = (prop == NULL) ? 2 : *prop;
+       pr_debug("dt_root_addr_cells = %x\n", dt_root_addr_cells);
+
+       /* break now */
+       return 1;
+}
+
+static u64 __init dt_mem_next_cell(int s, cell_t **cellp)
+{
+       cell_t *p = *cellp;
+
+       *cellp = p + s;
+       return of_read_number(p, s);
+}
+
+static int __init early_init_dt_scan_memory(unsigned long node,
+                               const char *uname, int depth, void *data)
+{
+       char *type = of_get_flat_dt_prop(node, "device_type", NULL);
+       cell_t *reg, *endp;
+       unsigned long l;
+
+       /* Look for the ibm,dynamic-reconfiguration-memory node */
+/*     if (depth == 1 &&
+               strcmp(uname, "ibm,dynamic-reconfiguration-memory") == 0)
+               return early_init_dt_scan_drconf_memory(node);
+*/
+       /* We are scanning "memory" nodes only */
+       if (type == NULL) {
+               /*
+                * The longtrail doesn't have a device_type on the
+                * /memory node, so look for the node called /memory@0.
+                */
+               if (depth != 1 || strcmp(uname, "memory@0") != 0)
+                       return 0;
+       } else if (strcmp(type, "memory") != 0)
+               return 0;
+
+       reg = (cell_t *)of_get_flat_dt_prop(node, "linux,usable-memory", &l);
+       if (reg == NULL)
+               reg = (cell_t *)of_get_flat_dt_prop(node, "reg", &l);
+       if (reg == NULL)
+               return 0;
+
+       endp = reg + (l / sizeof(cell_t));
+
+       pr_debug("memory scan node %s, reg size %ld, data: %x %x %x %x,\n",
+               uname, l, reg[0], reg[1], reg[2], reg[3]);
+
+       while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
+               u64 base, size;
+
+               base = dt_mem_next_cell(dt_root_addr_cells, &reg);
+               size = dt_mem_next_cell(dt_root_size_cells, &reg);
+
+               if (size == 0)
+                       continue;
+               pr_debug(" - %llx ,  %llx\n", (unsigned long long)base,
+                       (unsigned long long)size);
+
+               lmb_add(base, size);
+       }
+       return 0;
+}
+
+#ifdef CONFIG_PHYP_DUMP
+/**
+ * phyp_dump_calculate_reserve_size() - reserve variable boot area 5% or arg
+ *
+ * Function to find the largest size we need to reserve
+ * during early boot process.
+ *
+ * It either looks for boot param and returns that OR
+ * returns larger of 256 or 5% rounded down to multiples of 256MB.
+ *
+ */
+static inline unsigned long phyp_dump_calculate_reserve_size(void)
+{
+       unsigned long tmp;
+
+       if (phyp_dump_info->reserve_bootvar)
+               return phyp_dump_info->reserve_bootvar;
+
+       /* divide by 20 to get 5% of value */
+       tmp = lmb_end_of_DRAM();
+       do_div(tmp, 20);
+
+       /* round it down in multiples of 256 */
+       tmp = tmp & ~0x0FFFFFFFUL;
+
+       return (tmp > PHYP_DUMP_RMR_END ? tmp : PHYP_DUMP_RMR_END);
+}
+
+/**
+ * phyp_dump_reserve_mem() - reserve all not-yet-dumped mmemory
+ *
+ * This routine may reserve memory regions in the kernel only
+ * if the system is supported and a dump was taken in last
+ * boot instance or if the hardware is supported and the
+ * scratch area needs to be setup. In other instances it returns
+ * without reserving anything. The memory in case of dump being
+ * active is freed when the dump is collected (by userland tools).
+ */
+static void __init phyp_dump_reserve_mem(void)
+{
+       unsigned long base, size;
+       unsigned long variable_reserve_size;
+
+       if (!phyp_dump_info->phyp_dump_configured) {
+               printk(KERN_ERR "Phyp-dump not supported on this hardware\n");
+               return;
+       }
+
+       if (!phyp_dump_info->phyp_dump_at_boot) {
+               printk(KERN_INFO "Phyp-dump disabled at boot time\n");
+               return;
+       }
+
+       variable_reserve_size = phyp_dump_calculate_reserve_size();
+
+       if (phyp_dump_info->phyp_dump_is_active) {
+               /* Reserve *everything* above RMR.Area freed by userland tools*/
+               base = variable_reserve_size;
+               size = lmb_end_of_DRAM() - base;
+
+               /* XXX crashed_ram_end is wrong, since it may be beyond
+                * the memory_limit, it will need to be adjusted. */
+               lmb_reserve(base, size);
+
+               phyp_dump_info->init_reserve_start = base;
+               phyp_dump_info->init_reserve_size = size;
+       } else {
+               size = phyp_dump_info->cpu_state_size +
+                       phyp_dump_info->hpte_region_size +
+                       variable_reserve_size;
+               base = lmb_end_of_DRAM() - size;
+               lmb_reserve(base, size);
+               phyp_dump_info->init_reserve_start = base;
+               phyp_dump_info->init_reserve_size = size;
+       }
+}
+#else
+static inline void __init phyp_dump_reserve_mem(void) {}
+#endif /* CONFIG_PHYP_DUMP  && CONFIG_PPC_RTAS */
+
+#ifdef CONFIG_EARLY_PRINTK
+/* MS this is Microblaze specifig function */
+static int __init early_init_dt_scan_serial(unsigned long node,
+                               const char *uname, int depth, void *data)
+{
+       unsigned long l;
+       char *p;
+       int *addr;
+
+       pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
+
+/* find all serial nodes */
+       if (strncmp(uname, "serial", 6) != 0)
+               return 0;
+
+       early_init_dt_check_for_initrd(node);
+
+/* find compatible node with uartlite */
+       p = of_get_flat_dt_prop(node, "compatible", &l);
+       if ((strncmp(p, "xlnx,xps-uartlite", 17) != 0) &&
+                       (strncmp(p, "xlnx,opb-uartlite", 17) != 0))
+               return 0;
+
+       addr = of_get_flat_dt_prop(node, "reg", &l);
+       return *addr; /* return address */
+}
+
+/* this function is looking for early uartlite console - Microblaze specific */
+int __init early_uartlite_console(void)
+{
+       return of_scan_flat_dt(early_init_dt_scan_serial, NULL);
+}
+#endif
+
+void __init early_init_devtree(void *params)
+{
+       pr_debug(" -> early_init_devtree(%p)\n", params);
+
+       /* Setup flat device-tree pointer */
+       initial_boot_params = params;
+
+#ifdef CONFIG_PHYP_DUMP
+       /* scan tree to see if dump occured during last boot */
+       of_scan_flat_dt(early_init_dt_scan_phyp_dump, NULL);
+#endif
+
+       /* Retrieve various informations from the /chosen node of the
+        * device-tree, including the platform type, initrd location and
+        * size, TCE reserve, and more ...
+        */
+       of_scan_flat_dt(early_init_dt_scan_chosen, NULL);
+
+       /* Scan memory nodes and rebuild LMBs */
+       lmb_init();
+       of_scan_flat_dt(early_init_dt_scan_root, NULL);
+       of_scan_flat_dt(early_init_dt_scan_memory, NULL);
+
+       /* Save command line for /proc/cmdline and then parse parameters */
+       strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
+       parse_early_param();
+
+       lmb_analyze();
+
+       pr_debug("Phys. mem: %lx\n", (unsigned long) lmb_phys_mem_size());
+
+       pr_debug("Scanning CPUs ...\n");
+
+       /* Retreive CPU related informations from the flat tree
+        * (altivec support, boot CPU ID, ...)
+        */
+       of_scan_flat_dt(early_init_dt_scan_cpus, NULL);
+
+       pr_debug(" <- early_init_devtree()\n");
+}
+
+/**
+ * Indicates whether the root node has a given value in its
+ * compatible property.
+ */
+int machine_is_compatible(const char *compat)
+{
+       struct device_node *root;
+       int rc = 0;
+
+       root = of_find_node_by_path("/");
+       if (root) {
+               rc = of_device_is_compatible(root, compat);
+               of_node_put(root);
+       }
+       return rc;
+}
+EXPORT_SYMBOL(machine_is_compatible);
+
+/*******
+ *
+ * New implementation of the OF "find" APIs, return a refcounted
+ * object, call of_node_put() when done.  The device tree and list
+ * are protected by a rw_lock.
+ *
+ * Note that property management will need some locking as well,
+ * this isn't dealt with yet.
+ *
+ *******/
+
+/**
+ *     of_find_node_by_phandle - Find a node given a phandle
+ *     @handle:        phandle of the node to find
+ *
+ *     Returns a node pointer with refcount incremented, use
+ *     of_node_put() on it when done.
+ */
+struct device_node *of_find_node_by_phandle(phandle handle)
+{
+       struct device_node *np;
+
+       read_lock(&devtree_lock);
+       for (np = allnodes; np != NULL; np = np->allnext)
+               if (np->linux_phandle == handle)
+                       break;
+       of_node_get(np);
+       read_unlock(&devtree_lock);
+       return np;
+}
+EXPORT_SYMBOL(of_find_node_by_phandle);
+
+/**
+ *     of_find_all_nodes - Get next node in global list
+ *     @prev:  Previous node or NULL to start iteration
+ *             of_node_put() will be called on it
+ *
+ *     Returns a node pointer with refcount incremented, use
+ *     of_node_put() on it when done.
+ */
+struct device_node *of_find_all_nodes(struct device_node *prev)
+{
+       struct device_node *np;
+
+       read_lock(&devtree_lock);
+       np = prev ? prev->allnext : allnodes;
+       for (; np != NULL; np = np->allnext)
+               if (of_node_get(np))
+                       break;
+       of_node_put(prev);
+       read_unlock(&devtree_lock);
+       return np;
+}
+EXPORT_SYMBOL(of_find_all_nodes);
+
+/**
+ *     of_node_get - Increment refcount of a node
+ *     @node:  Node to inc refcount, NULL is supported to
+ *             simplify writing of callers
+ *
+ *     Returns node.
+ */
+struct device_node *of_node_get(struct device_node *node)
+{
+       if (node)
+               kref_get(&node->kref);
+       return node;
+}
+EXPORT_SYMBOL(of_node_get);
+
+static inline struct device_node *kref_to_device_node(struct kref *kref)
+{
+       return container_of(kref, struct device_node, kref);
+}
+
+/**
+ *     of_node_release - release a dynamically allocated node
+ *     @kref:  kref element of the node to be released
+ *
+ *     In of_node_put() this function is passed to kref_put()
+ *     as the destructor.
+ */
+static void of_node_release(struct kref *kref)
+{
+       struct device_node *node = kref_to_device_node(kref);
+       struct property *prop = node->properties;
+
+       /* We should never be releasing nodes that haven't been detached. */
+       if (!of_node_check_flag(node, OF_DETACHED)) {
+               printk(KERN_INFO "WARNING: Bad of_node_put() on %s\n",
+                       node->full_name);
+               dump_stack();
+               kref_init(&node->kref);
+               return;
+       }
+
+       if (!of_node_check_flag(node, OF_DYNAMIC))
+               return;
+
+       while (prop) {
+               struct property *next = prop->next;
+               kfree(prop->name);
+               kfree(prop->value);
+               kfree(prop);
+               prop = next;
+
+               if (!prop) {
+                       prop = node->deadprops;
+                       node->deadprops = NULL;
+               }
+       }
+       kfree(node->full_name);
+       kfree(node->data);
+       kfree(node);
+}
+
+/**
+ *     of_node_put - Decrement refcount of a node
+ *     @node:  Node to dec refcount, NULL is supported to
+ *             simplify writing of callers
+ *
+ */
+void of_node_put(struct device_node *node)
+{
+       if (node)
+               kref_put(&node->kref, of_node_release);
+}
+EXPORT_SYMBOL(of_node_put);
+
+/*
+ * Plug a device node into the tree and global list.
+ */
+void of_attach_node(struct device_node *np)
+{
+       unsigned long flags;
+
+       write_lock_irqsave(&devtree_lock, flags);
+       np->sibling = np->parent->child;
+       np->allnext = allnodes;
+       np->parent->child = np;
+       allnodes = np;
+       write_unlock_irqrestore(&devtree_lock, flags);
+}
+
+/*
+ * "Unplug" a node from the device tree.  The caller must hold
+ * a reference to the node.  The memory associated with the node
+ * is not freed until its refcount goes to zero.
+ */
+void of_detach_node(struct device_node *np)
+{
+       struct device_node *parent;
+       unsigned long flags;
+
+       write_lock_irqsave(&devtree_lock, flags);
+
+       parent = np->parent;
+       if (!parent)
+               goto out_unlock;
+
+       if (allnodes == np)
+               allnodes = np->allnext;
+       else {
+               struct device_node *prev;
+               for (prev = allnodes;
+                    prev->allnext != np;
+                    prev = prev->allnext)
+                       ;
+               prev->allnext = np->allnext;
+       }
+
+       if (parent->child == np)
+               parent->child = np->sibling;
+       else {
+               struct device_node *prevsib;
+               for (prevsib = np->parent->child;
+                    prevsib->sibling != np;
+                    prevsib = prevsib->sibling)
+                       ;
+               prevsib->sibling = np->sibling;
+       }
+
+       of_node_set_flag(np, OF_DETACHED);
+
+out_unlock:
+       write_unlock_irqrestore(&devtree_lock, flags);
+}
+
+/*
+ * Add a property to a node
+ */
+int prom_add_property(struct device_node *np, struct property *prop)
+{
+       struct property **next;
+       unsigned long flags;
+
+       prop->next = NULL;
+       write_lock_irqsave(&devtree_lock, flags);
+       next = &np->properties;
+       while (*next) {
+               if (strcmp(prop->name, (*next)->name) == 0) {
+                       /* duplicate ! don't insert it */
+                       write_unlock_irqrestore(&devtree_lock, flags);
+                       return -1;
+               }
+               next = &(*next)->next;
+       }
+       *next = prop;
+       write_unlock_irqrestore(&devtree_lock, flags);
+
+#ifdef CONFIG_PROC_DEVICETREE
+       /* try to add to proc as well if it was initialized */
+       if (np->pde)
+               proc_device_tree_add_prop(np->pde, prop);
+#endif /* CONFIG_PROC_DEVICETREE */
+
+       return 0;
+}
+
+/*
+ * Remove a property from a node.  Note that we don't actually
+ * remove it, since we have given out who-knows-how-many pointers
+ * to the data using get-property.  Instead we just move the property
+ * to the "dead properties" list, so it won't be found any more.
+ */
+int prom_remove_property(struct device_node *np, struct property *prop)
+{
+       struct property **next;
+       unsigned long flags;
+       int found = 0;
+
+       write_lock_irqsave(&devtree_lock, flags);
+       next = &np->properties;
+       while (*next) {
+               if (*next == prop) {
+                       /* found the node */
+                       *next = prop->next;
+                       prop->next = np->deadprops;
+                       np->deadprops = prop;
+                       found = 1;
+                       break;
+               }
+               next = &(*next)->next;
+       }
+       write_unlock_irqrestore(&devtree_lock, flags);
+
+       if (!found)
+               return -ENODEV;
+
+#ifdef CONFIG_PROC_DEVICETREE
+       /* try to remove the proc node as well */
+       if (np->pde)
+               proc_device_tree_remove_prop(np->pde, prop);
+#endif /* CONFIG_PROC_DEVICETREE */
+
+       return 0;
+}
+
+/*
+ * Update a property in a node.  Note that we don't actually
+ * remove it, since we have given out who-knows-how-many pointers
+ * to the data using get-property.  Instead we just move the property
+ * to the "dead properties" list, and add the new property to the
+ * property list
+ */
+int prom_update_property(struct device_node *np,
+                        struct property *newprop,
+                        struct property *oldprop)
+{
+       struct property **next;
+       unsigned long flags;
+       int found = 0;
+
+       write_lock_irqsave(&devtree_lock, flags);
+       next = &np->properties;
+       while (*next) {
+               if (*next == oldprop) {
+                       /* found the node */
+                       newprop->next = oldprop->next;
+                       *next = newprop;
+                       oldprop->next = np->deadprops;
+                       np->deadprops = oldprop;
+                       found = 1;
+                       break;
+               }
+               next = &(*next)->next;
+       }
+       write_unlock_irqrestore(&devtree_lock, flags);
+
+       if (!found)
+               return -ENODEV;
+
+#ifdef CONFIG_PROC_DEVICETREE
+       /* try to add to proc as well if it was initialized */
+       if (np->pde)
+               proc_device_tree_update_prop(np->pde, newprop, oldprop);
+#endif /* CONFIG_PROC_DEVICETREE */
+
+       return 0;
+}
+
+#if defined(CONFIG_DEBUG_FS) && defined(DEBUG)
+static struct debugfs_blob_wrapper flat_dt_blob;
+
+static int __init export_flat_device_tree(void)
+{
+       struct dentry *d;
+
+       flat_dt_blob.data = initial_boot_params;
+       flat_dt_blob.size = initial_boot_params->totalsize;
+
+       d = debugfs_create_blob("flat-device-tree", S_IFREG | S_IRUSR,
+                               of_debugfs_root, &flat_dt_blob);
+       if (!d)
+               return 1;
+
+       return 0;
+}
+device_initcall(export_flat_device_tree);
+#endif
diff --git a/arch/microblaze/kernel/prom_parse.c b/arch/microblaze/kernel/prom_parse.c
new file mode 100644 (file)
index 0000000..ae0352e
--- /dev/null
@@ -0,0 +1,1025 @@
+#undef DEBUG
+
+#include <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/pci_regs.h>
+#include <linux/module.h>
+#include <linux/ioport.h>
+#include <linux/etherdevice.h>
+#include <asm/prom.h>
+#include <asm/pci-bridge.h>
+
+#define PRu64  "%llx"
+
+/* Max address size we deal with */
+#define OF_MAX_ADDR_CELLS      4
+#define OF_CHECK_COUNTS(na, ns)        ((na) > 0 && (na) <= OF_MAX_ADDR_CELLS && \
+                       (ns) > 0)
+
+static struct of_bus *of_match_bus(struct device_node *np);
+static int __of_address_to_resource(struct device_node *dev,
+               const u32 *addrp, u64 size, unsigned int flags,
+               struct resource *r);
+
+/* Debug utility */
+#ifdef DEBUG
+static void of_dump_addr(const char *s, const u32 *addr, int na)
+{
+       printk(KERN_INFO "%s", s);
+       while (na--)
+               printk(KERN_INFO " %08x", *(addr++));
+       printk(KERN_INFO "\n");
+}
+#else
+static void of_dump_addr(const char *s, const u32 *addr, int na) { }
+#endif
+
+/* Callbacks for bus specific translators */
+struct of_bus {
+       const char      *name;
+       const char      *addresses;
+       int             (*match)(struct device_node *parent);
+       void            (*count_cells)(struct device_node *child,
+                                       int *addrc, int *sizec);
+       u64             (*map)(u32 *addr, const u32 *range,
+                               int na, int ns, int pna);
+       int             (*translate)(u32 *addr, u64 offset, int na);
+       unsigned int    (*get_flags)(const u32 *addr);
+};
+
+/*
+ * Default translator (generic bus)
+ */
+
+static void of_bus_default_count_cells(struct device_node *dev,
+                                       int *addrc, int *sizec)
+{
+       if (addrc)
+               *addrc = of_n_addr_cells(dev);
+       if (sizec)
+               *sizec = of_n_size_cells(dev);
+}
+
+static u64 of_bus_default_map(u32 *addr, const u32 *range,
+               int na, int ns, int pna)
+{
+       u64 cp, s, da;
+
+       cp = of_read_number(range, na);
+       s  = of_read_number(range + na + pna, ns);
+       da = of_read_number(addr, na);
+
+       pr_debug("OF: default map, cp="PRu64", s="PRu64", da="PRu64"\n",
+               cp, s, da);
+
+       if (da < cp || da >= (cp + s))
+               return OF_BAD_ADDR;
+       return da - cp;
+}
+
+static int of_bus_default_translate(u32 *addr, u64 offset, int na)
+{
+       u64 a = of_read_number(addr, na);
+       memset(addr, 0, na * 4);
+       a += offset;
+       if (na > 1)
+               addr[na - 2] = a >> 32;
+       addr[na - 1] = a & 0xffffffffu;
+
+       return 0;
+}
+
+static unsigned int of_bus_default_get_flags(const u32 *addr)
+{
+       return IORESOURCE_MEM;
+}
+
+#ifdef CONFIG_PCI
+/*
+ * PCI bus specific translator
+ */
+
+static int of_bus_pci_match(struct device_node *np)
+{
+       /* "vci" is for the /chaos bridge on 1st-gen PCI powermacs */
+       return !strcmp(np->type, "pci") || !strcmp(np->type, "vci");
+}
+
+static void of_bus_pci_count_cells(struct device_node *np,
+                               int *addrc, int *sizec)
+{
+       if (addrc)
+               *addrc = 3;
+       if (sizec)
+               *sizec = 2;
+}
+
+static u64 of_bus_pci_map(u32 *addr, const u32 *range, int na, int ns, int pna)
+{
+       u64 cp, s, da;
+
+       /* Check address type match */
+       if ((addr[0] ^ range[0]) & 0x03000000)
+               return OF_BAD_ADDR;
+
+       /* Read address values, skipping high cell */
+       cp = of_read_number(range + 1, na - 1);
+       s  = of_read_number(range + na + pna, ns);
+       da = of_read_number(addr + 1, na - 1);
+
+       pr_debug("OF: PCI map, cp="PRu64", s="PRu64", da="PRu64"\n", cp, s, da);
+
+       if (da < cp || da >= (cp + s))
+               return OF_BAD_ADDR;
+       return da - cp;
+}
+
+static int of_bus_pci_translate(u32 *addr, u64 offset, int na)
+{
+       return of_bus_default_translate(addr + 1, offset, na - 1);
+}
+
+static unsigned int of_bus_pci_get_flags(const u32 *addr)
+{
+       unsigned int flags = 0;
+       u32 w = addr[0];
+
+       switch ((w >> 24) & 0x03) {
+       case 0x01:
+               flags |= IORESOURCE_IO;
+               break;
+       case 0x02: /* 32 bits */
+       case 0x03: /* 64 bits */
+               flags |= IORESOURCE_MEM;
+               break;
+       }
+       if (w & 0x40000000)
+               flags |= IORESOURCE_PREFETCH;
+       return flags;
+}
+
+const u32 *of_get_pci_address(struct device_node *dev, int bar_no, u64 *size,
+                       unsigned int *flags)
+{
+       const u32 *prop;
+       unsigned int psize;
+       struct device_node *parent;
+       struct of_bus *bus;
+       int onesize, i, na, ns;
+
+       /* Get parent & match bus type */
+       parent = of_get_parent(dev);
+       if (parent == NULL)
+               return NULL;
+       bus = of_match_bus(parent);
+       if (strcmp(bus->name, "pci")) {
+               of_node_put(parent);
+               return NULL;
+       }
+       bus->count_cells(dev, &na, &ns);
+       of_node_put(parent);
+       if (!OF_CHECK_COUNTS(na, ns))
+               return NULL;
+
+       /* Get "reg" or "assigned-addresses" property */
+       prop = of_get_property(dev, bus->addresses, &psize);
+       if (prop == NULL)
+               return NULL;
+       psize /= 4;
+
+       onesize = na + ns;
+       for (i = 0; psize >= onesize; psize -= onesize, prop += onesize, i++)
+               if ((prop[0] & 0xff) == ((bar_no * 4) + PCI_BASE_ADDRESS_0)) {
+                       if (size)
+                               *size = of_read_number(prop + na, ns);
+                       if (flags)
+                               *flags = bus->get_flags(prop);
+                       return prop;
+               }
+       return NULL;
+}
+EXPORT_SYMBOL(of_get_pci_address);
+
+int of_pci_address_to_resource(struct device_node *dev, int bar,
+                               struct resource *r)
+{
+       const u32       *addrp;
+       u64             size;
+       unsigned int    flags;
+
+       addrp = of_get_pci_address(dev, bar, &size, &flags);
+       if (addrp == NULL)
+               return -EINVAL;
+       return __of_address_to_resource(dev, addrp, size, flags, r);
+}
+EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
+
+static u8 of_irq_pci_swizzle(u8 slot, u8 pin)
+{
+       return (((pin - 1) + slot) % 4) + 1;
+}
+
+int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
+{
+       struct device_node *dn, *ppnode;
+       struct pci_dev *ppdev;
+       u32 lspec;
+       u32 laddr[3];
+       u8 pin;
+       int rc;
+
+       /* Check if we have a device node, if yes, fallback to standard OF
+        * parsing
+        */
+       dn = pci_device_to_OF_node(pdev);
+       if (dn)
+               return of_irq_map_one(dn, 0, out_irq);
+
+       /* Ok, we don't, time to have fun. Let's start by building up an
+        * interrupt spec.  we assume #interrupt-cells is 1, which is standard
+        * for PCI. If you do different, then don't use that routine.
+        */
+       rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
+       if (rc != 0)
+               return rc;
+       /* No pin, exit */
+       if (pin == 0)
+               return -ENODEV;
+
+       /* Now we walk up the PCI tree */
+       lspec = pin;
+       for (;;) {
+               /* Get the pci_dev of our parent */
+               ppdev = pdev->bus->self;
+
+               /* Ouch, it's a host bridge... */
+               if (ppdev == NULL) {
+                       struct pci_controller *host;
+                       host = pci_bus_to_host(pdev->bus);
+                       ppnode = host ? host->arch_data : NULL;
+                       /* No node for host bridge ? give up */
+                       if (ppnode == NULL)
+                               return -EINVAL;
+               } else
+                       /* We found a P2P bridge, check if it has a node */
+                       ppnode = pci_device_to_OF_node(ppdev);
+
+               /* Ok, we have found a parent with a device-node, hand over to
+                * the OF parsing code.
+                * We build a unit address from the linux device to be used for
+                * resolution. Note that we use the linux bus number which may
+                * not match your firmware bus numbering.
+                * Fortunately, in most cases, interrupt-map-mask doesn't
+                * include the bus number as part of the matching.
+                * You should still be careful about that though if you intend
+                * to rely on this function (you ship  a firmware that doesn't
+                * create device nodes for all PCI devices).
+                */
+               if (ppnode)
+                       break;
+
+               /* We can only get here if we hit a P2P bridge with no node,
+                * let's do standard swizzling and try again
+                */
+               lspec = of_irq_pci_swizzle(PCI_SLOT(pdev->devfn), lspec);
+               pdev = ppdev;
+       }
+
+       laddr[0] = (pdev->bus->number << 16)
+               | (pdev->devfn << 8);
+       laddr[1]  = laddr[2] = 0;
+       return of_irq_map_raw(ppnode, &lspec, 1, laddr, out_irq);
+}
+EXPORT_SYMBOL_GPL(of_irq_map_pci);
+#endif /* CONFIG_PCI */
+
+/*
+ * ISA bus specific translator
+ */
+
+static int of_bus_isa_match(struct device_node *np)
+{
+       return !strcmp(np->name, "isa");
+}
+
+static void of_bus_isa_count_cells(struct device_node *child,
+                               int *addrc, int *sizec)
+{
+       if (addrc)
+               *addrc = 2;
+       if (sizec)
+               *sizec = 1;
+}
+
+static u64 of_bus_isa_map(u32 *addr, const u32 *range, int na, int ns, int pna)
+{
+       u64 cp, s, da;
+
+       /* Check address type match */
+       if ((addr[0] ^ range[0]) & 0x00000001)
+               return OF_BAD_ADDR;
+
+       /* Read address values, skipping high cell */
+       cp = of_read_number(range + 1, na - 1);
+       s  = of_read_number(range + na + pna, ns);
+       da = of_read_number(addr + 1, na - 1);
+
+       pr_debug("OF: ISA map, cp="PRu64", s="PRu64", da="PRu64"\n", cp, s, da);
+
+       if (da < cp || da >= (cp + s))
+               return OF_BAD_ADDR;
+       return da - cp;
+}
+
+static int of_bus_isa_translate(u32 *addr, u64 offset, int na)
+{
+       return of_bus_default_translate(addr + 1, offset, na - 1);
+}
+
+static unsigned int of_bus_isa_get_flags(const u32 *addr)
+{
+       unsigned int flags = 0;
+       u32 w = addr[0];
+
+       if (w & 1)
+               flags |= IORESOURCE_IO;
+       else
+               flags |= IORESOURCE_MEM;
+       return flags;
+}
+
+/*
+ * Array of bus specific translators
+ */
+
+static struct of_bus of_busses[] = {
+#ifdef CONFIG_PCI
+       /* PCI */
+       {
+               .name = "pci",
+               .addresses = "assigned-addresses",
+               .match = of_bus_pci_match,
+               .count_cells = of_bus_pci_count_cells,
+               .map = of_bus_pci_map,
+               .translate = of_bus_pci_translate,
+               .get_flags = of_bus_pci_get_flags,
+       },
+#endif /* CONFIG_PCI */
+       /* ISA */
+       {
+               .name = "isa",
+               .addresses = "reg",
+               .match = of_bus_isa_match,
+               .count_cells = of_bus_isa_count_cells,
+               .map = of_bus_isa_map,
+               .translate = of_bus_isa_translate,
+               .get_flags = of_bus_isa_get_flags,
+       },
+       /* Default */
+       {
+               .name = "default",
+               .addresses = "reg",
+               .match = NULL,
+               .count_cells = of_bus_default_count_cells,
+               .map = of_bus_default_map,
+               .translate = of_bus_default_translate,
+               .get_flags = of_bus_default_get_flags,
+       },
+};
+
+static struct of_bus *of_match_bus(struct device_node *np)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(of_busses); i++)
+               if (!of_busses[i].match || of_busses[i].match(np))
+                       return &of_busses[i];
+       BUG();
+       return NULL;
+}
+
+static int of_translate_one(struct device_node *parent, struct of_bus *bus,
+                       struct of_bus *pbus, u32 *addr,
+                       int na, int ns, int pna)
+{
+       const u32 *ranges;
+       unsigned int rlen;
+       int rone;
+       u64 offset = OF_BAD_ADDR;
+
+       /* Normally, an absence of a "ranges" property means we are
+        * crossing a non-translatable boundary, and thus the addresses
+        * below the current not cannot be converted to CPU physical ones.
+        * Unfortunately, while this is very clear in the spec, it's not
+        * what Apple understood, and they do have things like /uni-n or
+        * /ht nodes with no "ranges" property and a lot of perfectly
+        * useable mapped devices below them. Thus we treat the absence of
+        * "ranges" as equivalent to an empty "ranges" property which means
+        * a 1:1 translation at that level. It's up to the caller not to try
+        * to translate addresses that aren't supposed to be translated in
+        * the first place. --BenH.
+        */
+       ranges = of_get_property(parent, "ranges", (int *) &rlen);
+       if (ranges == NULL || rlen == 0) {
+               offset = of_read_number(addr, na);
+               memset(addr, 0, pna * 4);
+               pr_debug("OF: no ranges, 1:1 translation\n");
+               goto finish;
+       }
+
+       pr_debug("OF: walking ranges...\n");
+
+       /* Now walk through the ranges */
+       rlen /= 4;
+       rone = na + pna + ns;
+       for (; rlen >= rone; rlen -= rone, ranges += rone) {
+               offset = bus->map(addr, ranges, na, ns, pna);
+               if (offset != OF_BAD_ADDR)
+                       break;
+       }
+       if (offset == OF_BAD_ADDR) {
+               pr_debug("OF: not found !\n");
+               return 1;
+       }
+       memcpy(addr, ranges + na, 4 * pna);
+
+ finish:
+       of_dump_addr("OF: parent translation for:", addr, pna);
+       pr_debug("OF: with offset: "PRu64"\n", offset);
+
+       /* Translate it into parent bus space */
+       return pbus->translate(addr, offset, pna);
+}
+
+/*
+ * Translate an address from the device-tree into a CPU physical address,
+ * this walks up the tree and applies the various bus mappings on the
+ * way.
+ *
+ * Note: We consider that crossing any level with #size-cells == 0 to mean
+ * that translation is impossible (that is we are not dealing with a value
+ * that can be mapped to a cpu physical address). This is not really specified
+ * that way, but this is traditionally the way IBM at least do things
+ */
+u64 of_translate_address(struct device_node *dev, const u32 *in_addr)
+{
+       struct device_node *parent = NULL;
+       struct of_bus *bus, *pbus;
+       u32 addr[OF_MAX_ADDR_CELLS];
+       int na, ns, pna, pns;
+       u64 result = OF_BAD_ADDR;
+
+       pr_debug("OF: ** translation for device %s **\n", dev->full_name);
+
+       /* Increase refcount at current level */
+       of_node_get(dev);
+
+       /* Get parent & match bus type */
+       parent = of_get_parent(dev);
+       if (parent == NULL)
+               goto bail;
+       bus = of_match_bus(parent);
+
+       /* Cound address cells & copy address locally */
+       bus->count_cells(dev, &na, &ns);
+       if (!OF_CHECK_COUNTS(na, ns)) {
+               printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
+                       dev->full_name);
+               goto bail;
+       }
+       memcpy(addr, in_addr, na * 4);
+
+       pr_debug("OF: bus is %s (na=%d, ns=%d) on %s\n",
+               bus->name, na, ns, parent->full_name);
+       of_dump_addr("OF: translating address:", addr, na);
+
+       /* Translate */
+       for (;;) {
+               /* Switch to parent bus */
+               of_node_put(dev);
+               dev = parent;
+               parent = of_get_parent(dev);
+
+               /* If root, we have finished */
+               if (parent == NULL) {
+                       pr_debug("OF: reached root node\n");
+                       result = of_read_number(addr, na);
+                       break;
+               }
+
+               /* Get new parent bus and counts */
+               pbus = of_match_bus(parent);
+               pbus->count_cells(dev, &pna, &pns);
+               if (!OF_CHECK_COUNTS(pna, pns)) {
+                       printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
+                               dev->full_name);
+                       break;
+               }
+
+               pr_debug("OF: parent bus is %s (na=%d, ns=%d) on %s\n",
+                       pbus->name, pna, pns, parent->full_name);
+
+               /* Apply bus translation */
+               if (of_translate_one(dev, bus, pbus, addr, na, ns, pna))
+                       break;
+
+               /* Complete the move up one level */
+               na = pna;
+               ns = pns;
+               bus = pbus;
+
+               of_dump_addr("OF: one level translation:", addr, na);
+       }
+ bail:
+       of_node_put(parent);
+       of_node_put(dev);
+
+       return result;
+}
+EXPORT_SYMBOL(of_translate_address);
+
+const u32 *of_get_address(struct device_node *dev, int index, u64 *size,
+                       unsigned int *flags)
+{
+       const u32 *prop;
+       unsigned int psize;
+       struct device_node *parent;
+       struct of_bus *bus;
+       int onesize, i, na, ns;
+
+       /* Get parent & match bus type */
+       parent = of_get_parent(dev);
+       if (parent == NULL)
+               return NULL;
+       bus = of_match_bus(parent);
+       bus->count_cells(dev, &na, &ns);
+       of_node_put(parent);
+       if (!OF_CHECK_COUNTS(na, ns))
+               return NULL;
+
+       /* Get "reg" or "assigned-addresses" property */
+       prop = of_get_property(dev, bus->addresses, (int *) &psize);
+       if (prop == NULL)
+               return NULL;
+       psize /= 4;
+
+       onesize = na + ns;
+       for (i = 0; psize >= onesize; psize -= onesize, prop += onesize, i++)
+               if (i == index) {
+                       if (size)
+                               *size = of_read_number(prop + na, ns);
+                       if (flags)
+                               *flags = bus->get_flags(prop);
+                       return prop;
+               }
+       return NULL;
+}
+EXPORT_SYMBOL(of_get_address);
+
+static int __of_address_to_resource(struct device_node *dev, const u32 *addrp,
+                               u64 size, unsigned int flags,
+                               struct resource *r)
+{
+       u64 taddr;
+
+       if ((flags & (IORESOURCE_IO | IORESOURCE_MEM)) == 0)
+               return -EINVAL;
+       taddr = of_translate_address(dev, addrp);
+       if (taddr == OF_BAD_ADDR)
+               return -EINVAL;
+       memset(r, 0, sizeof(struct resource));
+       if (flags & IORESOURCE_IO) {
+               unsigned long port;
+               port = -1; /* pci_address_to_pio(taddr); */
+               if (port == (unsigned long)-1)
+                       return -EINVAL;
+               r->start = port;
+               r->end = port + size - 1;
+       } else {
+               r->start = taddr;
+               r->end = taddr + size - 1;
+       }
+       r->flags = flags;
+       r->name = dev->name;
+       return 0;
+}
+
+int of_address_to_resource(struct device_node *dev, int index,
+                       struct resource *r)
+{
+       const u32       *addrp;
+       u64             size;
+       unsigned int    flags;
+
+       addrp = of_get_address(dev, index, &size, &flags);
+       if (addrp == NULL)
+               return -EINVAL;
+       return __of_address_to_resource(dev, addrp, size, flags, r);
+}
+EXPORT_SYMBOL_GPL(of_address_to_resource);
+
+void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
+               unsigned long *busno, unsigned long *phys, unsigned long *size)
+{
+       const u32 *dma_window;
+       u32 cells;
+       const unsigned char *prop;
+
+       dma_window = dma_window_prop;
+
+       /* busno is always one cell */
+       *busno = *(dma_window++);
+
+       prop = of_get_property(dn, "ibm,#dma-address-cells", NULL);
+       if (!prop)
+               prop = of_get_property(dn, "#address-cells", NULL);
+
+       cells = prop ? *(u32 *)prop : of_n_addr_cells(dn);
+       *phys = of_read_number(dma_window, cells);
+
+       dma_window += cells;
+
+       prop = of_get_property(dn, "ibm,#dma-size-cells", NULL);
+       cells = prop ? *(u32 *)prop : of_n_size_cells(dn);
+       *size = of_read_number(dma_window, cells);
+}
+
+/*
+ * Interrupt remapper
+ */
+
+static unsigned int of_irq_workarounds;
+static struct device_node *of_irq_dflt_pic;
+
+static struct device_node *of_irq_find_parent(struct device_node *child)
+{
+       struct device_node *p;
+       const phandle *parp;
+
+       if (!of_node_get(child))
+               return NULL;
+
+       do {
+               parp = of_get_property(child, "interrupt-parent", NULL);
+               if (parp == NULL)
+                       p = of_get_parent(child);
+               else {
+                       if (of_irq_workarounds & OF_IMAP_NO_PHANDLE)
+                               p = of_node_get(of_irq_dflt_pic);
+                       else
+                               p = of_find_node_by_phandle(*parp);
+               }
+               of_node_put(child);
+               child = p;
+       } while (p && of_get_property(p, "#interrupt-cells", NULL) == NULL);
+
+       return p;
+}
+
+/* This doesn't need to be called if you don't have any special workaround
+ * flags to pass
+ */
+void of_irq_map_init(unsigned int flags)
+{
+       of_irq_workarounds = flags;
+
+       /* OldWorld, don't bother looking at other things */
+       if (flags & OF_IMAP_OLDWORLD_MAC)
+               return;
+
+       /* If we don't have phandles, let's try to locate a default interrupt
+        * controller (happens when booting with BootX). We do a first match
+        * here, hopefully, that only ever happens on machines with one
+        * controller.
+        */
+       if (flags & OF_IMAP_NO_PHANDLE) {
+               struct device_node *np;
+
+               for (np = NULL; (np = of_find_all_nodes(np)) != NULL;) {
+                       if (of_get_property(np, "interrupt-controller", NULL)
+                               == NULL)
+                               continue;
+                       /* Skip /chosen/interrupt-controller */
+                       if (strcmp(np->name, "chosen") == 0)
+                               continue;
+                       /* It seems like at least one person on this planet
+                        * wants to use BootX on a machine with an AppleKiwi
+                        * controller which happens to pretend to be an
+                        * interrupt controller too.
+                        */
+                       if (strcmp(np->name, "AppleKiwi") == 0)
+                               continue;
+                       /* I think we found one ! */
+                       of_irq_dflt_pic = np;
+                       break;
+               }
+       }
+
+}
+
+int of_irq_map_raw(struct device_node *parent, const u32 *intspec, u32 ointsize,
+               const u32 *addr, struct of_irq *out_irq)
+{
+       struct device_node *ipar, *tnode, *old = NULL, *newpar = NULL;
+       const u32 *tmp, *imap, *imask;
+       u32 intsize = 1, addrsize, newintsize = 0, newaddrsize = 0;
+       int imaplen, match, i;
+
+       pr_debug("of_irq_map_raw: par=%s,intspec=[0x%08x 0x%08x...],"
+               "ointsize=%d\n",
+               parent->full_name, intspec[0], intspec[1], ointsize);
+
+       ipar = of_node_get(parent);
+
+       /* First get the #interrupt-cells property of the current cursor
+        * that tells us how to interpret the passed-in intspec. If there
+        * is none, we are nice and just walk up the tree
+        */
+       do {
+               tmp = of_get_property(ipar, "#interrupt-cells", NULL);
+               if (tmp != NULL) {
+                       intsize = *tmp;
+                       break;
+               }
+               tnode = ipar;
+               ipar = of_irq_find_parent(ipar);
+               of_node_put(tnode);
+       } while (ipar);
+       if (ipar == NULL) {
+               pr_debug(" -> no parent found !\n");
+               goto fail;
+       }
+
+       pr_debug("of_irq_map_raw: ipar=%s, size=%d\n",
+                       ipar->full_name, intsize);
+
+       if (ointsize != intsize)
+               return -EINVAL;
+
+       /* Look for this #address-cells. We have to implement the old linux
+        * trick of looking for the parent here as some device-trees rely on it
+        */
+       old = of_node_get(ipar);
+       do {
+               tmp = of_get_property(old, "#address-cells", NULL);
+               tnode = of_get_parent(old);
+               of_node_put(old);
+               old = tnode;
+       } while (old && tmp == NULL);
+       of_node_put(old);
+       old = NULL;
+       addrsize = (tmp == NULL) ? 2 : *tmp;
+
+       pr_debug(" -> addrsize=%d\n", addrsize);
+
+       /* Now start the actual "proper" walk of the interrupt tree */
+       while (ipar != NULL) {
+               /* Now check if cursor is an interrupt-controller and if it is
+                * then we are done
+                */
+               if (of_get_property(ipar, "interrupt-controller", NULL) !=
+                               NULL) {
+                       pr_debug(" -> got it !\n");
+                       memcpy(out_irq->specifier, intspec,
+                               intsize * sizeof(u32));
+                       out_irq->size = intsize;
+                       out_irq->controller = ipar;
+                       of_node_put(old);
+                       return 0;
+               }
+
+               /* Now look for an interrupt-map */
+               imap = of_get_property(ipar, "interrupt-map", &imaplen);
+               /* No interrupt map, check for an interrupt parent */
+               if (imap == NULL) {
+                       pr_debug(" -> no map, getting parent\n");
+                       newpar = of_irq_find_parent(ipar);
+                       goto skiplevel;
+               }
+               imaplen /= sizeof(u32);
+
+               /* Look for a mask */
+               imask = of_get_property(ipar, "interrupt-map-mask", NULL);
+
+               /* If we were passed no "reg" property and we attempt to parse
+                * an interrupt-map, then #address-cells must be 0.
+                * Fail if it's not.
+                */
+               if (addr == NULL && addrsize != 0) {
+                       pr_debug(" -> no reg passed in when needed !\n");
+                       goto fail;
+               }
+
+               /* Parse interrupt-map */
+               match = 0;
+               while (imaplen > (addrsize + intsize + 1) && !match) {
+                       /* Compare specifiers */
+                       match = 1;
+                       for (i = 0; i < addrsize && match; ++i) {
+                               u32 mask = imask ? imask[i] : 0xffffffffu;
+                               match = ((addr[i] ^ imap[i]) & mask) == 0;
+                       }
+                       for (; i < (addrsize + intsize) && match; ++i) {
+                               u32 mask = imask ? imask[i] : 0xffffffffu;
+                               match =
+                                       ((intspec[i-addrsize] ^ imap[i])
+                                               & mask) == 0;
+                       }
+                       imap += addrsize + intsize;
+                       imaplen -= addrsize + intsize;
+
+                       pr_debug(" -> match=%d (imaplen=%d)\n", match, imaplen);
+
+                       /* Get the interrupt parent */
+                       if (of_irq_workarounds & OF_IMAP_NO_PHANDLE)
+                               newpar = of_node_get(of_irq_dflt_pic);
+                       else
+                               newpar =
+                                       of_find_node_by_phandle((phandle)*imap);
+                       imap++;
+                       --imaplen;
+
+                       /* Check if not found */
+                       if (newpar == NULL) {
+                               pr_debug(" -> imap parent not found !\n");
+                               goto fail;
+                       }
+
+                       /* Get #interrupt-cells and #address-cells of new
+                        * parent
+                        */
+                       tmp = of_get_property(newpar, "#interrupt-cells", NULL);
+                       if (tmp == NULL) {
+                               pr_debug(" -> parent lacks "
+                                               "#interrupt-cells!\n");
+                               goto fail;
+                       }
+                       newintsize = *tmp;
+                       tmp = of_get_property(newpar, "#address-cells", NULL);
+                       newaddrsize = (tmp == NULL) ? 0 : *tmp;
+
+                       pr_debug(" -> newintsize=%d, newaddrsize=%d\n",
+                               newintsize, newaddrsize);
+
+                       /* Check for malformed properties */
+                       if (imaplen < (newaddrsize + newintsize))
+                               goto fail;
+
+                       imap += newaddrsize + newintsize;
+                       imaplen -= newaddrsize + newintsize;
+
+                       pr_debug(" -> imaplen=%d\n", imaplen);
+               }
+               if (!match)
+                       goto fail;
+
+               of_node_put(old);
+               old = of_node_get(newpar);
+               addrsize = newaddrsize;
+               intsize = newintsize;
+               intspec = imap - intsize;
+               addr = intspec - addrsize;
+
+skiplevel:
+               /* Iterate again with new parent */
+               pr_debug(" -> new parent: %s\n",
+                               newpar ? newpar->full_name : "<>");
+               of_node_put(ipar);
+               ipar = newpar;
+               newpar = NULL;
+       }
+fail:
+       of_node_put(ipar);
+       of_node_put(old);
+       of_node_put(newpar);
+
+       return -EINVAL;
+}
+EXPORT_SYMBOL_GPL(of_irq_map_raw);
+
+int of_irq_map_one(struct device_node *device,
+                       int index, struct of_irq *out_irq)
+{
+       struct device_node *p;
+       const u32 *intspec, *tmp, *addr;
+       u32 intsize, intlen;
+       int res;
+
+       pr_debug("of_irq_map_one: dev=%s, index=%d\n",
+                       device->full_name, index);
+
+       /* Get the interrupts property */
+       intspec = of_get_property(device, "interrupts", (int *) &intlen);
+       if (intspec == NULL)
+               return -EINVAL;
+       intlen /= sizeof(u32);
+
+       pr_debug(" intspec=%d intlen=%d\n", *intspec, intlen);
+
+       /* Get the reg property (if any) */
+       addr = of_get_property(device, "reg", NULL);
+
+       /* Look for the interrupt parent. */
+       p = of_irq_find_parent(device);
+       if (p == NULL)
+               return -EINVAL;
+
+       /* Get size of interrupt specifier */
+       tmp = of_get_property(p, "#interrupt-cells", NULL);
+       if (tmp == NULL) {
+               of_node_put(p);
+               return -EINVAL;
+       }
+       intsize = *tmp;
+
+       pr_debug(" intsize=%d intlen=%d\n", intsize, intlen);
+
+       /* Check index */
+       if ((index + 1) * intsize > intlen)
+               return -EINVAL;
+
+       /* Get new specifier and map it */
+       res = of_irq_map_raw(p, intspec + index * intsize, intsize,
+                               addr, out_irq);
+       of_node_put(p);
+       return res;
+}
+EXPORT_SYMBOL_GPL(of_irq_map_one);
+
+/**
+ * Search the device tree for the best MAC address to use.  'mac-address' is
+ * checked first, because that is supposed to contain to "most recent" MAC
+ * address. If that isn't set, then 'local-mac-address' is checked next,
+ * because that is the default address.  If that isn't set, then the obsolete
+ * 'address' is checked, just in case we're using an old device tree.
+ *
+ * Note that the 'address' property is supposed to contain a virtual address of
+ * the register set, but some DTS files have redefined that property to be the
+ * MAC address.
+ *
+ * All-zero MAC addresses are rejected, because those could be properties that
+ * exist in the device tree, but were not set by U-Boot.  For example, the
+ * DTS could define 'mac-address' and 'local-mac-address', with zero MAC
+ * addresses.  Some older U-Boots only initialized 'local-mac-address'.  In
+ * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
+ * but is all zeros.
+*/
+const void *of_get_mac_address(struct device_node *np)
+{
+       struct property *pp;
+
+       pp = of_find_property(np, "mac-address", NULL);
+       if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
+               return pp->value;
+
+       pp = of_find_property(np, "local-mac-address", NULL);
+       if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
+               return pp->value;
+
+       pp = of_find_property(np, "address", NULL);
+       if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
+               return pp->value;
+
+       return NULL;
+}
+EXPORT_SYMBOL(of_get_mac_address);
+
+int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
+{
+       struct of_irq out_irq;
+       int irq;
+       int res;
+
+       res = of_irq_map_one(dev, index, &out_irq);
+
+       /* Get irq for the device */
+       if (res) {
+               pr_debug("IRQ not found... code = %d", res);
+               return NO_IRQ;
+       }
+       /* Assuming single interrupt controller... */
+       irq = out_irq.specifier[0];
+
+       pr_debug("IRQ found = %d", irq);
+
+       /* Only dereference the resource if both the
+        * resource and the irq are valid. */
+       if (r && irq != NO_IRQ) {
+               r->start = r->end = irq;
+               r->flags = IORESOURCE_IRQ;
+       }
+
+       return irq;
+}
+EXPORT_SYMBOL_GPL(of_irq_to_resource);
+
+void __iomem *of_iomap(struct device_node *np, int index)
+{
+       struct resource res;
+
+       if (of_address_to_resource(np, index, &res))
+               return NULL;
+
+       return ioremap(res.start, 1 + res.end - res.start);
+}
+EXPORT_SYMBOL(of_iomap);
diff --git a/arch/microblaze/kernel/ptrace.c b/arch/microblaze/kernel/ptrace.c
new file mode 100644 (file)
index 0000000..3171e39
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * `ptrace' system call
+ *
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2004-2007 John Williams <john.williams@petalogix.com>
+ *
+ * derived from arch/v850/kernel/ptrace.c
+ *
+ * Copyright (C) 2002,03 NEC Electronics Corporation
+ * Copyright (C) 2002,03 Miles Bader <miles@gnu.org>
+ *
+ * Derived from arch/mips/kernel/ptrace.c:
+ *
+ * Copyright (C) 1992 Ross Biro
+ * Copyright (C) Linus Torvalds
+ * Copyright (C) 1994, 95, 96, 97, 98, 2000 Ralf Baechle
+ * Copyright (C) 1996 David S. Miller
+ * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
+ * Copyright (C) 1999 MIPS Technologies, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/sched.h>
+#include <linux/smp_lock.h>
+#include <linux/ptrace.h>
+#include <linux/signal.h>
+
+#include <linux/errno.h>
+#include <linux/ptrace.h>
+#include <asm/processor.h>
+#include <linux/uaccess.h>
+#include <asm/asm-offsets.h>
+
+/* Returns the address where the register at REG_OFFS in P is stashed away. */
+static microblaze_reg_t *reg_save_addr(unsigned reg_offs,
+                                       struct task_struct *t)
+{
+       struct pt_regs *regs;
+
+       /*
+        * Three basic cases:
+        *
+        * (1)  A register normally saved before calling the scheduler, is
+        *      available in the kernel entry pt_regs structure at the top
+        *      of the kernel stack. The kernel trap/irq exit path takes
+        *      care to save/restore almost all registers for ptrace'd
+        *      processes.
+        *
+        * (2)  A call-clobbered register, where the process P entered the
+        *      kernel via [syscall] trap, is not stored anywhere; that's
+        *      OK, because such registers are not expected to be preserved
+        *      when the trap returns anyway (so we don't actually bother to
+        *      test for this case).
+        *
+        * (3)  A few registers not used at all by the kernel, and so
+        *      normally never saved except by context-switches, are in the
+        *      context switch state.
+        */
+
+       /* Register saved during kernel entry (or not available). */
+       regs = task_pt_regs(t);
+
+       return (microblaze_reg_t *)((char *)regs + reg_offs);
+}
+
+long arch_ptrace(struct task_struct *child, long request, long addr, long data)
+{
+       int rval;
+       unsigned long val = 0;
+       unsigned long copied;
+
+       switch (request) {
+       case PTRACE_PEEKTEXT: /* read word at location addr. */
+       case PTRACE_PEEKDATA:
+               pr_debug("PEEKTEXT/PEEKDATA at %08lX\n", addr);
+               copied = access_process_vm(child, addr, &val, sizeof(val), 0);
+               rval = -EIO;
+               if (copied != sizeof(val))
+                       break;
+               rval = put_user(val, (unsigned long *)data);
+               break;
+
+       case PTRACE_POKETEXT: /* write the word at location addr. */
+       case PTRACE_POKEDATA:
+               pr_debug("POKETEXT/POKEDATA to %08lX\n", addr);
+               rval = 0;
+               if (access_process_vm(child, addr, &data, sizeof(data), 1)
+                   == sizeof(data))
+                       break;
+               rval = -EIO;
+               break;
+
+       /* Read/write the word at location ADDR in the registers. */
+       case PTRACE_PEEKUSR:
+       case PTRACE_POKEUSR:
+               pr_debug("PEEKUSR/POKEUSR : 0x%08lx\n", addr);
+               rval = 0;
+               if (addr >= PT_SIZE && request == PTRACE_PEEKUSR) {
+                       /*
+                        * Special requests that don't actually correspond
+                        * to offsets in struct pt_regs.
+                        */
+                       if (addr == PT_TEXT_ADDR) {
+                               val = child->mm->start_code;
+                       } else if (addr == PT_DATA_ADDR) {
+                               val = child->mm->start_data;
+                       } else if (addr == PT_TEXT_LEN) {
+                               val = child->mm->end_code
+                                       - child->mm->start_code;
+                       } else {
+                               rval = -EIO;
+                       }
+               } else if (addr >= 0 && addr < PT_SIZE && (addr & 0x3) == 0) {
+                       microblaze_reg_t *reg_addr = reg_save_addr(addr, child);
+                       if (request == PTRACE_PEEKUSR)
+                               val = *reg_addr;
+                       else
+                               *reg_addr = data;
+               } else
+                       rval = -EIO;
+
+               if (rval == 0 && request == PTRACE_PEEKUSR)
+                       rval = put_user(val, (unsigned long *)data);
+               break;
+       /* Continue and stop at next (return from) syscall */
+       case PTRACE_SYSCALL:
+               pr_debug("PTRACE_SYSCALL\n");
+       case PTRACE_SINGLESTEP:
+               pr_debug("PTRACE_SINGLESTEP\n");
+       /* Restart after a signal.  */
+       case PTRACE_CONT:
+               pr_debug("PTRACE_CONT\n");
+               rval = -EIO;
+               if (!valid_signal(data))
+                       break;
+
+               if (request == PTRACE_SYSCALL)
+                       set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
+               else
+                       clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
+
+               child->exit_code = data;
+               pr_debug("wakeup_process\n");
+               wake_up_process(child);
+               rval = 0;
+               break;
+
+       /*
+        * make the child exit.  Best I can do is send it a sigkill.
+        * perhaps it should be put in the status that it wants to
+        * exit.
+        */
+       case PTRACE_KILL:
+               pr_debug("PTRACE_KILL\n");
+               rval = 0;
+               if (child->exit_state == EXIT_ZOMBIE)   /* already dead */
+                       break;
+               child->exit_code = SIGKILL;
+               wake_up_process(child);
+               break;
+
+       case PTRACE_DETACH: /* detach a process that was attached. */
+               pr_debug("PTRACE_DETACH\n");
+               rval = ptrace_detach(child, data);
+               break;
+       default:
+               /* rval = ptrace_request(child, request, addr, data); noMMU */
+               rval = -EIO;
+       }
+       return rval;
+}
+
+void ptrace_disable(struct task_struct *child)
+{
+       /* nothing to do */
+}
diff --git a/arch/microblaze/kernel/selfmod.c b/arch/microblaze/kernel/selfmod.c
new file mode 100644 (file)
index 0000000..89508bd
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2009 PetaLogix
+ *
+ * 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.
+ */
+
+#include <linux/interrupt.h>
+#include <asm/selfmod.h>
+
+#undef DEBUG
+
+#if __GNUC__ > 3
+#error GCC 4 unsupported SELFMOD. Please disable SELFMOD from menuconfig.
+#endif
+
+#define OPCODE_IMM             0xB0000000
+#define OPCODE_LWI             0xE8000000
+#define OPCODE_LWI_MASK                0xEC000000
+#define OPCODE_RTSD            0xB60F0008 /* return from func: rtsd r15, 8 */
+#define OPCODE_ADDIK           0x30000000
+#define OPCODE_ADDIK_MASK      0xFC000000
+
+#define IMM_BASE       (OPCODE_IMM | (BARRIER_BASE_ADDR >> 16))
+#define LWI_BASE       (OPCODE_LWI | (BARRIER_BASE_ADDR & 0x0000ff00))
+#define LWI_BASE_MASK  (OPCODE_LWI_MASK | (BARRIER_BASE_ADDR & 0x0000ff00))
+#define ADDIK_BASE     (OPCODE_ADDIK | (BARRIER_BASE_ADDR & 0x0000ff00))
+#define ADDIK_BASE_MASK        (OPCODE_ADDIK_MASK | (BARRIER_BASE_ADDR & 0x0000ff00))
+
+#define MODIFY_INSTR {                                         \
+       pr_debug("%s: curr instr, (%d):0x%x, next(%d):0x%x\n",          \
+               __func__, i, addr[i], i + 1, addr[i + 1]);              \
+       addr[i] = OPCODE_IMM + (base >> 16);                            \
+       /* keep instruction opcode and add only last 16bits */          \
+       addr[i + 1] = (addr[i + 1] & 0xffff00ff) + (base & 0xffff);     \
+       __invalidate_icache(addr[i]);                                   \
+       __invalidate_icache(addr[i + 1]);                               \
+       pr_debug("%s: hack instr, (%d):0x%x, next(%d):0x%x\n",          \
+               __func__, i, addr[i], i + 1, addr[i + 1]); }
+
+/* NOTE
+ * self-modified part of code for improvement of interrupt controller
+ * save instruction in interrupt rutine
+ */
+void selfmod_function(const int *arr_fce, const unsigned int base)
+{
+       unsigned int flags, i, j, *addr = NULL;
+
+       local_irq_save(flags);
+       __disable_icache();
+
+       /* zero terminated array */
+       for (j = 0; arr_fce[j] != 0; j++) {
+               /* get start address of function */
+               addr = (unsigned int *) arr_fce[j];
+               pr_debug("%s: func(%d) at 0x%x\n",
+                                       __func__, j, (unsigned int) addr);
+               for (i = 0; ; i++) {
+                       pr_debug("%s: instruction code at %d: 0x%x\n",
+                                               __func__, i, addr[i]);
+                       if (addr[i] == IMM_BASE) {
+                               /* detecting of lwi (0xE8) or swi (0xF8) instr
+                                * I can detect both opcode with one mask */
+                               if ((addr[i + 1] & LWI_BASE_MASK) == LWI_BASE) {
+                                       MODIFY_INSTR;
+                               } else /* detection addik for ack */
+                               if ((addr[i + 1] & ADDIK_BASE_MASK) ==
+                                                               ADDIK_BASE) {
+                                       MODIFY_INSTR;
+                               }
+                       } else if (addr[i] == OPCODE_RTSD) {
+                               /* return from function means end of function */
+                               pr_debug("%s: end of array %d\n", __func__, i);
+                               break;
+                       }
+               }
+       }
+       local_irq_restore(flags);
+} /* end of self-modified code */
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c
new file mode 100644 (file)
index 0000000..eb6b417
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/string.h>
+#include <linux/seq_file.h>
+#include <linux/cpu.h>
+#include <linux/initrd.h>
+#include <linux/console.h>
+#include <linux/debugfs.h>
+
+#include <asm/setup.h>
+#include <asm/sections.h>
+#include <asm/page.h>
+#include <linux/io.h>
+#include <linux/bug.h>
+#include <linux/param.h>
+#include <linux/cache.h>
+#include <asm/cacheflush.h>
+#include <asm/entry.h>
+#include <asm/cpuinfo.h>
+
+#include <asm/system.h>
+#include <asm/prom.h>
+#include <asm/pgtable.h>
+
+DEFINE_PER_CPU(unsigned int, KSP);     /* Saved kernel stack pointer */
+DEFINE_PER_CPU(unsigned int, KM);      /* Kernel/user mode */
+DEFINE_PER_CPU(unsigned int, ENTRY_SP);        /* Saved SP on kernel entry */
+DEFINE_PER_CPU(unsigned int, R11_SAVE);        /* Temp variable for entry */
+DEFINE_PER_CPU(unsigned int, CURRENT_SAVE);    /* Saved current pointer */
+
+unsigned int boot_cpuid;
+char cmd_line[COMMAND_LINE_SIZE];
+
+void __init setup_arch(char **cmdline_p)
+{
+#ifdef CONFIG_CMDLINE_FORCE
+       strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+       strlcpy(boot_command_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+#endif
+       *cmdline_p = cmd_line;
+
+       console_verbose();
+
+       unflatten_device_tree();
+
+       /* NOTE I think that this function is not necessary to call */
+       /* irq_early_init(); */
+       setup_cpuinfo();
+
+       __invalidate_icache_all();
+       __enable_icache();
+
+       __invalidate_dcache_all();
+       __enable_dcache();
+
+       panic_timeout = 120;
+
+       setup_memory();
+
+#if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER)
+       printk(KERN_NOTICE "Self modified code enable\n");
+#endif
+
+#ifdef CONFIG_VT
+#if defined(CONFIG_XILINX_CONSOLE)
+       conswitchp = &xil_con;
+#elif defined(CONFIG_DUMMY_CONSOLE)
+       conswitchp = &dummy_con;
+#endif
+#endif
+}
+
+#ifdef CONFIG_MTD_UCLINUX
+/* Handle both romfs and cramfs types, without generating unnecessary
+ code (ie no point checking for CRAMFS if it's not even enabled) */
+inline unsigned get_romfs_len(unsigned *addr)
+{
+#ifdef CONFIG_ROMFS_FS
+       if (memcmp(&addr[0], "-rom1fs-", 8) == 0) /* romfs */
+               return be32_to_cpu(addr[2]);
+#endif
+
+#ifdef CONFIG_CRAMFS
+       if (addr[0] == le32_to_cpu(0x28cd3d45)) /* cramfs */
+               return le32_to_cpu(addr[1]);
+#endif
+       return 0;
+}
+#endif /* CONFIG_MTD_UCLINUX_EBSS */
+
+void __init machine_early_init(const char *cmdline, unsigned int ram,
+               unsigned int fdt)
+{
+       unsigned long *src, *dst = (unsigned long *)0x0;
+
+/* clearing bss section */
+       memset(__bss_start, 0, __bss_stop-__bss_start);
+       memset(_ssbss, 0, _esbss-_ssbss);
+
+       /*
+        * Copy command line passed from bootloader, or use default
+        * if none provided, or forced
+        */
+#ifndef CONFIG_CMDLINE_BOOL
+       if (cmdline && cmdline[0] != '\0')
+               strlcpy(cmd_line, cmdline, COMMAND_LINE_SIZE);
+#endif
+
+/* initialize device tree for usage in early_printk */
+       early_init_devtree((void *)_fdt_start);
+
+#ifdef CONFIG_EARLY_PRINTK
+       setup_early_printk(NULL);
+#endif
+
+       early_printk("Ramdisk addr 0x%08x, FDT 0x%08x\n", ram, fdt);
+       printk(KERN_NOTICE "Found FDT at 0x%08x\n", fdt);
+
+#ifdef CONFIG_MTD_UCLINUX
+       {
+               int size;
+               unsigned int romfs_base;
+               romfs_base = (ram ? ram : (unsigned int)&__init_end);
+               /* if CONFIG_MTD_UCLINUX_EBSS is defined, assume ROMFS is at the
+                * end of kernel, which is ROMFS_LOCATION defined above. */
+               size = PAGE_ALIGN(get_romfs_len((unsigned *)romfs_base));
+               early_printk("Found romfs @ 0x%08x (0x%08x)\n",
+                               romfs_base, size);
+               early_printk("#### klimit %p ####\n", klimit);
+               BUG_ON(size < 0); /* What else can we do? */
+
+               /* Use memmove to handle likely case of memory overlap */
+               early_printk("Moving 0x%08x bytes from 0x%08x to 0x%08x\n",
+                       size, romfs_base, (unsigned)&_ebss);
+               memmove(&_ebss, (int *)romfs_base, size);
+
+               /* update klimit */
+               klimit += PAGE_ALIGN(size);
+               early_printk("New klimit: 0x%08x\n", (unsigned)klimit);
+       }
+#endif
+
+       for (src = __ivt_start; src < __ivt_end; src++, dst++)
+               *dst = *src;
+
+       /* Initialize global data */
+       per_cpu(KM, 0) = 0x1;   /* We start in kernel mode */
+       per_cpu(CURRENT_SAVE, 0) = (unsigned long)current;
+}
+
+#ifdef CONFIG_DEBUG_FS
+struct dentry *of_debugfs_root;
+
+static int microblaze_debugfs_init(void)
+{
+       of_debugfs_root = debugfs_create_dir("microblaze", NULL);
+
+       return of_debugfs_root == NULL;
+}
+arch_initcall(microblaze_debugfs_init);
+#endif
+
+void machine_restart(char *cmd)
+{
+       printk(KERN_NOTICE "Machine restart...\n");
+       dump_stack();
+       while (1)
+               ;
+}
+
+void machine_shutdown(void)
+{
+       printk(KERN_NOTICE "Machine shutdown...\n");
+       while (1)
+               ;
+}
+
+void machine_halt(void)
+{
+       printk(KERN_NOTICE "Machine halt...\n");
+       while (1)
+               ;
+}
+
+void machine_power_off(void)
+{
+       printk(KERN_NOTICE "Machine power off...\n");
+       while (1)
+               ;
+}
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c
new file mode 100644 (file)
index 0000000..ff347b9
--- /dev/null
@@ -0,0 +1,538 @@
+/*
+ * Signal handling
+ *
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2003,2004 John Williams <jwilliams@itee.uq.edu.au>
+ * Copyright (C) 2001 NEC Corporation
+ * Copyright (C) 2001 Miles Bader <miles@gnu.org>
+ * Copyright (C) 1999,2000 Niibe Yutaka & Kaz Kojima
+ * Copyright (C) 1991,1992 Linus Torvalds
+ *
+ * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson
+ *
+ * This file was was derived from the sh version, arch/sh/kernel/signal.c
+ *
+ * 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.
+ */
+
+#include <linux/sched.h>
+#include <linux/mm.h>
+#include <linux/smp.h>
+#include <linux/smp_lock.h>
+#include <linux/kernel.h>
+#include <linux/signal.h>
+#include <linux/errno.h>
+#include <linux/wait.h>
+#include <linux/ptrace.h>
+#include <linux/unistd.h>
+#include <linux/stddef.h>
+#include <linux/personality.h>
+#include <linux/percpu.h>
+#include <linux/linkage.h>
+#include <asm/entry.h>
+#include <asm/ucontext.h>
+#include <linux/uaccess.h>
+#include <asm/pgtable.h>
+#include <asm/pgalloc.h>
+#include <linux/signal.h>
+#include <linux/syscalls.h>
+#include <asm/cacheflush.h>
+#include <asm/syscalls.h>
+
+#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
+
+asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset, int in_sycall);
+
+/*
+ * Atomically swap in the new signal mask, and wait for a signal.
+ */
+asmlinkage int
+sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs)
+{
+       sigset_t saveset;
+
+       mask &= _BLOCKABLE;
+       spin_lock_irq(&current->sighand->siglock);
+       saveset = current->blocked;
+       siginitset(&current->blocked, mask);
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+
+       regs->r3 = -EINTR;
+       while (1) {
+               current->state = TASK_INTERRUPTIBLE;
+               schedule();
+               if (do_signal(regs, &saveset, 1))
+                       return -EINTR;
+       }
+}
+
+asmlinkage int
+sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
+               struct pt_regs *regs)
+{
+       sigset_t saveset, newset;
+
+       /* XXX: Don't preclude handling different sized sigset_t's. */
+       if (sigsetsize != sizeof(sigset_t))
+               return -EINVAL;
+
+       if (copy_from_user(&newset, unewset, sizeof(newset)))
+               return -EFAULT;
+       sigdelsetmask(&newset, ~_BLOCKABLE);
+       spin_lock_irq(&current->sighand->siglock);
+       saveset = current->blocked;
+       current->blocked = newset;
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+
+       regs->r3 = -EINTR;
+       while (1) {
+               current->state = TASK_INTERRUPTIBLE;
+               schedule();
+               if (do_signal(regs, &saveset, 1))
+                       return -EINTR;
+       }
+}
+
+asmlinkage int
+sys_sigaction(int sig, const struct old_sigaction *act,
+               struct old_sigaction *oact)
+{
+       struct k_sigaction new_ka, old_ka;
+       int ret;
+
+       if (act) {
+               old_sigset_t mask;
+               if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
+                       __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
+                       __get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
+                       return -EFAULT;
+               __get_user(new_ka.sa.sa_flags, &act->sa_flags);
+               __get_user(mask, &act->sa_mask);
+               siginitset(&new_ka.sa.sa_mask, mask);
+       }
+
+       ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
+
+       if (!ret && oact) {
+               if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
+                       __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
+                       __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
+                       return -EFAULT;
+               __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
+               __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
+       }
+
+       return ret;
+}
+
+asmlinkage int
+sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
+               struct pt_regs *regs)
+{
+       return do_sigaltstack(uss, uoss, regs->r1);
+}
+
+/*
+ * Do a signal return; undo the signal stack.
+ */
+
+struct sigframe {
+       struct sigcontext sc;
+       unsigned long extramask[_NSIG_WORDS-1];
+       unsigned long tramp[2]; /* signal trampoline */
+};
+
+struct rt_sigframe {
+       struct siginfo info;
+       struct ucontext uc;
+       unsigned long tramp[2]; /* signal trampoline */
+};
+
+static int
+restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *rval_p)
+{
+       unsigned int err = 0;
+
+#define COPY(x)                {err |= __get_user(regs->x, &sc->regs.x); }
+       COPY(r0);
+       COPY(r1);
+       COPY(r2);       COPY(r3);       COPY(r4);       COPY(r5);
+       COPY(r6);       COPY(r7);       COPY(r8);       COPY(r9);
+       COPY(r10);      COPY(r11);      COPY(r12);      COPY(r13);
+       COPY(r14);      COPY(r15);      COPY(r16);      COPY(r17);
+       COPY(r18);      COPY(r19);      COPY(r20);      COPY(r21);
+       COPY(r22);      COPY(r23);      COPY(r24);      COPY(r25);
+       COPY(r26);      COPY(r27);      COPY(r28);      COPY(r29);
+       COPY(r30);      COPY(r31);
+       COPY(pc);       COPY(ear);      COPY(esr);      COPY(fsr);
+#undef COPY
+
+       *rval_p = regs->r3;
+
+       return err;
+}
+
+asmlinkage int sys_sigreturn(struct pt_regs *regs)
+{
+       struct sigframe *frame = (struct sigframe *)regs->r1;
+       sigset_t set;
+       int rval;
+
+       if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
+               goto badframe;
+
+       if (__get_user(set.sig[0], &frame->sc.oldmask)
+               || (_NSIG_WORDS > 1
+               && __copy_from_user(&set.sig[1], &frame->extramask,
+                                       sizeof(frame->extramask))))
+               goto badframe;
+
+       sigdelsetmask(&set, ~_BLOCKABLE);
+
+       spin_lock_irq(&current->sighand->siglock);
+       current->blocked = set;
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+
+       if (restore_sigcontext(regs, &frame->sc, &rval))
+               goto badframe;
+       return rval;
+
+badframe:
+       force_sig(SIGSEGV, current);
+       return 0;
+}
+
+asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
+{
+       struct rt_sigframe *frame = (struct rt_sigframe *)regs->r1;
+       sigset_t set;
+       stack_t st;
+       int rval;
+
+       if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
+               goto badframe;
+
+       if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
+               goto badframe;
+
+       sigdelsetmask(&set, ~_BLOCKABLE);
+       spin_lock_irq(&current->sighand->siglock);
+       current->blocked = set;
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+
+       if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &rval))
+               goto badframe;
+
+       if (__copy_from_user((void *)&st, &frame->uc.uc_stack, sizeof(st)))
+               goto badframe;
+       /* It is more difficult to avoid calling this function than to
+        call it and ignore errors. */
+       do_sigaltstack(&st, NULL, regs->r1);
+
+       return rval;
+
+badframe:
+       force_sig(SIGSEGV, current);
+       return 0;
+}
+
+/*
+ * Set up a signal frame.
+ */
+
+static int
+setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
+               unsigned long mask)
+{
+       int err = 0;
+
+#define COPY(x)                {err |= __put_user(regs->x, &sc->regs.x); }
+       COPY(r0);
+       COPY(r1);
+       COPY(r2);       COPY(r3);       COPY(r4);       COPY(r5);
+       COPY(r6);       COPY(r7);       COPY(r8);       COPY(r9);
+       COPY(r10);      COPY(r11);      COPY(r12);      COPY(r13);
+       COPY(r14);      COPY(r15);      COPY(r16);      COPY(r17);
+       COPY(r18);      COPY(r19);      COPY(r20);      COPY(r21);
+       COPY(r22);      COPY(r23);      COPY(r24);      COPY(r25);
+       COPY(r26);      COPY(r27);      COPY(r28);      COPY(r29);
+       COPY(r30);      COPY(r31);
+       COPY(pc);       COPY(ear);      COPY(esr);      COPY(fsr);
+#undef COPY
+
+       err |= __put_user(mask, &sc->oldmask);
+
+       return err;
+}
+
+/*
+ * Determine which stack to use..
+ */
+static inline void *
+get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size)
+{
+       /* Default to using normal stack */
+       unsigned long sp = regs->r1;
+
+       if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && !on_sig_stack(sp))
+               sp = current->sas_ss_sp + current->sas_ss_size;
+
+       return (void *)((sp - frame_size) & -8UL);
+}
+
+static void setup_frame(int sig, struct k_sigaction *ka,
+                       sigset_t *set, struct pt_regs *regs)
+{
+       struct sigframe *frame;
+       int err = 0;
+       int signal;
+
+       frame = get_sigframe(ka, regs, sizeof(*frame));
+
+       if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
+               goto give_sigsegv;
+
+       signal = current_thread_info()->exec_domain
+               && current_thread_info()->exec_domain->signal_invmap
+               && sig < 32
+               ? current_thread_info()->exec_domain->signal_invmap[sig]
+               : sig;
+
+       err |= setup_sigcontext(&frame->sc, regs, set->sig[0]);
+
+       if (_NSIG_WORDS > 1) {
+               err |= __copy_to_user(frame->extramask, &set->sig[1],
+                                       sizeof(frame->extramask));
+       }
+
+       /* Set up to return from userspace. If provided, use a stub
+        already in userspace. */
+       /* minus 8 is offset to cater for "rtsd r15,8" offset */
+       if (ka->sa.sa_flags & SA_RESTORER) {
+               regs->r15 = ((unsigned long)ka->sa.sa_restorer)-8;
+       } else {
+               /* Note, these encodings are _big endian_! */
+
+               /* addi r12, r0, __NR_sigreturn */
+               err |= __put_user(0x31800000 | __NR_sigreturn ,
+                               frame->tramp + 0);
+               /* brki r14, 0x8 */
+               err |= __put_user(0xb9cc0008, frame->tramp + 1);
+
+               /* Return from sighandler will jump to the tramp.
+                Negative 8 offset because return is rtsd r15, 8 */
+               regs->r15 = ((unsigned long)frame->tramp)-8;
+
+               __invalidate_cache_sigtramp((unsigned long)frame->tramp);
+       }
+
+       if (err)
+               goto give_sigsegv;
+
+       /* Set up registers for signal handler */
+       regs->r1 = (unsigned long) frame;
+       /* Signal handler args: */
+       regs->r5 = signal; /* Arg 0: signum */
+       regs->r6 = (unsigned long) &frame->sc; /* arg 1: sigcontext */
+
+       /* Offset of 4 to handle microblaze rtid r14, 0 */
+       regs->pc = (unsigned long)ka->sa.sa_handler;
+
+       set_fs(USER_DS);
+
+#ifdef DEBUG_SIG
+       printk(KERN_INFO "SIG deliver (%s:%d): sp=%p pc=%08lx\n",
+               current->comm, current->pid, frame, regs->pc);
+#endif
+
+       return;
+
+give_sigsegv:
+       if (sig == SIGSEGV)
+               ka->sa.sa_handler = SIG_DFL;
+       force_sig(SIGSEGV, current);
+}
+
+static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
+                       sigset_t *set, struct pt_regs *regs)
+{
+       struct rt_sigframe *frame;
+       int err = 0;
+       int signal;
+
+       frame = get_sigframe(ka, regs, sizeof(*frame));
+
+       if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
+               goto give_sigsegv;
+
+       signal = current_thread_info()->exec_domain
+               && current_thread_info()->exec_domain->signal_invmap
+               && sig < 32
+               ? current_thread_info()->exec_domain->signal_invmap[sig]
+               : sig;
+
+       err |= copy_siginfo_to_user(&frame->info, info);
+
+       /* Create the ucontext. */
+       err |= __put_user(0, &frame->uc.uc_flags);
+       err |= __put_user(0, &frame->uc.uc_link);
+       err |= __put_user((void *)current->sas_ss_sp,
+                       &frame->uc.uc_stack.ss_sp);
+       err |= __put_user(sas_ss_flags(regs->r1),
+                       &frame->uc.uc_stack.ss_flags);
+       err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
+       err |= setup_sigcontext(&frame->uc.uc_mcontext,
+                       regs, set->sig[0]);
+       err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
+
+       /* Set up to return from userspace. If provided, use a stub
+        already in userspace. */
+       /* minus 8 is offset to cater for "rtsd r15,8" */
+       if (ka->sa.sa_flags & SA_RESTORER) {
+               regs->r15 = ((unsigned long)ka->sa.sa_restorer)-8;
+       } else {
+               /* addi r12, r0, __NR_sigreturn */
+               err |= __put_user(0x31800000 | __NR_rt_sigreturn ,
+                               frame->tramp + 0);
+               /* brki r14, 0x8 */
+               err |= __put_user(0xb9cc0008, frame->tramp + 1);
+
+               /* Return from sighandler will jump to the tramp.
+                Negative 8 offset because return is rtsd r15, 8 */
+               regs->r15 = ((unsigned long)frame->tramp)-8;
+
+               __invalidate_cache_sigtramp((unsigned long)frame->tramp);
+       }
+
+       if (err)
+               goto give_sigsegv;
+
+       /* Set up registers for signal handler */
+       regs->r1 = (unsigned long) frame;
+       /* Signal handler args: */
+       regs->r5 = signal; /* arg 0: signum */
+       regs->r6 = (unsigned long) &frame->info; /* arg 1: siginfo */
+       regs->r7 = (unsigned long) &frame->uc; /* arg2: ucontext */
+       /* Offset to handle microblaze rtid r14, 0 */
+       regs->pc = (unsigned long)ka->sa.sa_handler;
+
+       set_fs(USER_DS);
+
+#ifdef DEBUG_SIG
+       printk(KERN_INFO "SIG deliver (%s:%d): sp=%p pc=%08lx\n",
+               current->comm, current->pid, frame, regs->pc);
+#endif
+
+       return;
+
+give_sigsegv:
+       if (sig == SIGSEGV)
+               ka->sa.sa_handler = SIG_DFL;
+       force_sig(SIGSEGV, current);
+}
+
+/* Handle restarting system calls */
+static inline void
+handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)
+{
+       switch (regs->r3) {
+       case -ERESTART_RESTARTBLOCK:
+       case -ERESTARTNOHAND:
+               if (!has_handler)
+                       goto do_restart;
+               regs->r3 = -EINTR;
+               break;
+       case -ERESTARTSYS:
+               if (has_handler && !(ka->sa.sa_flags & SA_RESTART)) {
+                       regs->r3 = -EINTR;
+                       break;
+       }
+       /* fallthrough */
+       case -ERESTARTNOINTR:
+do_restart:
+               /* offset of 4 bytes to re-execute trap (brki) instruction */
+               regs->pc -= 4;
+               break;
+       }
+}
+
+/*
+ * OK, we're invoking a handler
+ */
+
+static void
+handle_signal(unsigned long sig, struct k_sigaction *ka,
+               siginfo_t *info, sigset_t *oldset, struct pt_regs *regs)
+{
+       /* Set up the stack frame */
+       if (ka->sa.sa_flags & SA_SIGINFO)
+               setup_rt_frame(sig, ka, info, oldset, regs);
+       else
+               setup_frame(sig, ka, oldset, regs);
+
+       if (ka->sa.sa_flags & SA_ONESHOT)
+               ka->sa.sa_handler = SIG_DFL;
+
+       if (!(ka->sa.sa_flags & SA_NODEFER)) {
+               spin_lock_irq(&current->sighand->siglock);
+               sigorsets(&current->blocked,
+                               &current->blocked, &ka->sa.sa_mask);
+               sigaddset(&current->blocked, sig);
+               recalc_sigpending();
+               spin_unlock_irq(&current->sighand->siglock);
+       }
+}
+
+/*
+ * Note that 'init' is a special process: it doesn't get signals it doesn't
+ * want to handle. Thus you cannot kill init even with a SIGKILL even by
+ * mistake.
+ *
+ * Note that we go through the signals twice: once to check the signals that
+ * the kernel can handle, and then we build all the user-level signal handling
+ * stack-frames in one go after that.
+ */
+int do_signal(struct pt_regs *regs, sigset_t *oldset, int in_syscall)
+{
+       siginfo_t info;
+       int signr;
+       struct k_sigaction ka;
+#ifdef DEBUG_SIG
+       printk(KERN_INFO "do signal: %p %p %d\n", regs, oldset, in_syscall);
+       printk(KERN_INFO "do signal2: %lx %lx %ld [%lx]\n", regs->pc, regs->r1,
+                       regs->r12, current_thread_info()->flags);
+#endif
+       /*
+        * We want the common case to go fast, which
+        * is why we may in certain cases get here from
+        * kernel mode. Just return without doing anything
+        * if so.
+        */
+       if (kernel_mode(regs))
+               return 1;
+
+       if (!oldset)
+               oldset = &current->blocked;
+
+       signr = get_signal_to_deliver(&info, &ka, regs, NULL);
+       if (signr > 0) {
+               /* Whee! Actually deliver the signal. */
+               if (in_syscall)
+                       handle_restart(regs, &ka, 1);
+               handle_signal(signr, &ka, &info, oldset, regs);
+               return 1;
+       }
+
+       if (in_syscall)
+               handle_restart(regs, NULL, 0);
+
+       /* Did we come from a system call? */
+       return 0;
+}
diff --git a/arch/microblaze/kernel/sys_microblaze.c b/arch/microblaze/kernel/sys_microblaze.c
new file mode 100644 (file)
index 0000000..d90b548
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
+ *
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *     Yasushi SHOJI <yashi@atmark-techno.com>
+ *     Tetsuya OHKAWA <tetsuya@atmark-techno.com>
+ *
+ * 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.
+ */
+
+#include <linux/errno.h>
+#include <linux/mm.h>
+#include <linux/smp.h>
+#include <linux/smp_lock.h>
+#include <linux/syscalls.h>
+#include <linux/sem.h>
+#include <linux/msg.h>
+#include <linux/shm.h>
+#include <linux/stat.h>
+#include <linux/mman.h>
+#include <linux/sys.h>
+#include <linux/ipc.h>
+#include <linux/utsname.h>
+#include <linux/file.h>
+#include <linux/module.h>
+#include <linux/err.h>
+#include <linux/fs.h>
+#include <linux/ipc.h>
+#include <linux/semaphore.h>
+#include <linux/syscalls.h>
+#include <linux/uaccess.h>
+#include <linux/unistd.h>
+
+#include <asm/syscalls.h>
+/*
+ * sys_ipc() is the de-multiplexer for the SysV IPC calls..
+ *
+ * This is really horribly ugly. This will be remove with new toolchain.
+ */
+asmlinkage int
+sys_ipc(uint call, int first, int second, int third, void *ptr, long fifth)
+{
+       int version, ret;
+
+       version = call >> 16; /* hack for backward compatibility */
+       call &= 0xffff;
+
+       ret = -EINVAL;
+       switch (call) {
+       case SEMOP:
+               ret = sys_semop(first, (struct sembuf *)ptr, second);
+               break;
+       case SEMGET:
+               ret = sys_semget(first, second, third);
+               break;
+       case SEMCTL:
+       {
+               union semun fourth;
+
+               if (!ptr)
+                       break;
+               ret = (access_ok(VERIFY_READ, ptr, sizeof(long)) ? 0 : -EFAULT)
+                               || (get_user(fourth.__pad, (void **)ptr)) ;
+               if (ret)
+                       break;
+               ret = sys_semctl(first, second, third, fourth);
+               break;
+       }
+       case MSGSND:
+               ret = sys_msgsnd(first, (struct msgbuf *) ptr, second, third);
+               break;
+       case MSGRCV:
+               switch (version) {
+               case 0: {
+                       struct ipc_kludge tmp;
+
+                       if (!ptr)
+                               break;
+                       ret = (access_ok(VERIFY_READ, ptr, sizeof(tmp))
+                               ? 0 : -EFAULT) || copy_from_user(&tmp,
+                               (struct ipc_kludge *) ptr, sizeof(tmp));
+                       if (ret)
+                               break;
+                       ret = sys_msgrcv(first, tmp.msgp, second, tmp.msgtyp,
+                                       third);
+                       break;
+                       }
+               default:
+                       ret = sys_msgrcv(first, (struct msgbuf *) ptr,
+                                       second, fifth, third);
+                       break;
+               }
+               break;
+       case MSGGET:
+               ret = sys_msgget((key_t) first, second);
+               break;
+       case MSGCTL:
+               ret = sys_msgctl(first, second, (struct msqid_ds *) ptr);
+               break;
+       case SHMAT:
+               switch (version) {
+               default: {
+                       ulong raddr;
+                       ret = access_ok(VERIFY_WRITE, (ulong *) third,
+                                       sizeof(ulong)) ? 0 : -EFAULT;
+                       if (ret)
+                               break;
+                       ret = do_shmat(first, (char *) ptr, second, &raddr);
+                       if (ret)
+                               break;
+                       ret = put_user(raddr, (ulong *) third);
+                       break;
+                       }
+               case 1: /* iBCS2 emulator entry point */
+                       if (!segment_eq(get_fs(), get_ds()))
+                               break;
+                       ret = do_shmat(first, (char *) ptr, second,
+                                       (ulong *) third);
+                       break;
+               }
+               break;
+       case SHMDT:
+               ret = sys_shmdt((char *)ptr);
+               break;
+       case SHMGET:
+               ret = sys_shmget(first, second, third);
+               break;
+       case SHMCTL:
+               ret = sys_shmctl(first, second, (struct shmid_ds *) ptr);
+               break;
+       }
+       return -EINVAL;
+}
+
+asmlinkage int sys_vfork(struct pt_regs *regs)
+{
+       return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->r1,
+                                               regs, 0, NULL, NULL);
+}
+
+asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs)
+{
+       if (!stack)
+               stack = regs->r1;
+       return do_fork(flags, stack, regs, 0, NULL, NULL);
+}
+
+asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
+                       char __user *__user *envp, struct pt_regs *regs)
+{
+       int error;
+       char *filename;
+
+       filename = getname(filenamei);
+       error = PTR_ERR(filename);
+       if (IS_ERR(filename))
+               goto out;
+       error = do_execve(filename, argv, envp, regs);
+       putname(filename);
+out:
+       return error;
+}
+
+asmlinkage unsigned long
+sys_mmap2(unsigned long addr, size_t len,
+       unsigned long prot, unsigned long flags,
+       unsigned long fd, unsigned long pgoff)
+{
+       struct file *file = NULL;
+       int ret = -EBADF;
+
+       flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
+       if (!(flags & MAP_ANONYMOUS)) {
+               file = fget(fd);
+               if (!file) {
+                       printk(KERN_INFO "no fd in mmap\r\n");
+                       goto out;
+               }
+       }
+
+       down_write(&current->mm->mmap_sem);
+       ret = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
+       up_write(&current->mm->mmap_sem);
+       if (file)
+               fput(file);
+out:
+       return ret;
+}
+
+asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
+                       unsigned long prot, unsigned long flags,
+                       unsigned long fd, off_t offset)
+{
+       int err = -EINVAL;
+
+       if (offset & ~PAGE_MASK) {
+               printk(KERN_INFO "no pagemask in mmap\r\n");
+               goto out;
+       }
+
+       err = sys_mmap2(addr, len, prot, flags, fd, offset >> PAGE_SHIFT);
+out:
+       return err;
+}
+
+/*
+ * Do a system call from kernel instead of calling sys_execve so we
+ * end up with proper pt_regs.
+ */
+int kernel_execve(const char *filename, char *const argv[], char *const envp[])
+{
+       register const char *__a __asm__("r5") = filename;
+       register const void *__b __asm__("r6") = argv;
+       register const void *__c __asm__("r7") = envp;
+       register unsigned long __syscall __asm__("r12") = __NR_execve;
+       register unsigned long __ret __asm__("r3");
+       __asm__ __volatile__ ("brki r14, 0x8"
+                       : "=r" (__ret), "=r" (__syscall)
+                       : "1" (__syscall), "r" (__a), "r" (__b), "r" (__c)
+                       : "r4", "r8", "r9",
+                       "r10", "r11", "r14", "cc", "memory");
+       return __ret;
+}
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S
new file mode 100644 (file)
index 0000000..529b0db
--- /dev/null
@@ -0,0 +1,365 @@
+ENTRY(sys_call_table)
+       .long sys_restart_syscall       /* 0 - old "setup()" system call,
+                                        * used for restarting */
+       .long sys_exit
+       .long sys_ni_syscall            /* was fork */
+       .long sys_read
+       .long sys_write
+       .long sys_open                  /* 5 */
+       .long sys_close
+       .long sys_waitpid
+       .long sys_creat
+       .long sys_link
+       .long sys_unlink                /* 10 */
+       .long sys_execve_wrapper
+       .long sys_chdir
+       .long sys_time
+       .long sys_mknod
+       .long sys_chmod                 /* 15 */
+       .long sys_lchown
+       .long sys_ni_syscall            /* old break syscall holder */
+       .long sys_ni_syscall            /* old stat */
+       .long sys_lseek
+       .long sys_getpid                /* 20 */
+       .long sys_mount
+       .long sys_oldumount
+       .long sys_setuid
+       .long sys_getuid
+       .long sys_stime                 /* 25 */
+       .long sys_ptrace
+       .long sys_alarm
+       .long sys_ni_syscall            /* oldfstat */
+       .long sys_pause
+       .long sys_utime                 /* 30 */
+       .long sys_ni_syscall            /* old stty syscall holder */
+       .long sys_ni_syscall            /* old gtty syscall holder */
+       .long sys_access
+       .long sys_nice
+       .long sys_ni_syscall            /* 35 - old ftime syscall holder */
+       .long sys_sync
+       .long sys_kill
+       .long sys_rename
+       .long sys_mkdir
+       .long sys_rmdir                 /* 40 */
+       .long sys_dup
+       .long sys_pipe
+       .long sys_times
+       .long sys_ni_syscall            /* old prof syscall holder */
+       .long sys_brk                   /* 45 */
+       .long sys_setgid
+       .long sys_getgid
+       .long sys_signal
+       .long sys_geteuid
+       .long sys_getegid               /* 50 */
+       .long sys_acct
+       .long sys_umount                /* recycled never used phys() */
+       .long sys_ni_syscall            /* old lock syscall holder */
+       .long sys_ioctl
+       .long sys_fcntl                 /* 55 */
+       .long sys_ni_syscall            /* old mpx syscall holder */
+       .long sys_setpgid
+       .long sys_ni_syscall            /* old ulimit syscall holder */
+       .long sys_ni_syscall            /* olduname */
+       .long sys_umask                 /* 60 */
+       .long sys_chroot
+       .long sys_ustat
+       .long sys_dup2
+       .long sys_getppid
+       .long sys_getpgrp               /* 65 */
+       .long sys_setsid
+       .long sys_sigaction
+       .long sys_sgetmask
+       .long sys_ssetmask
+       .long sys_setreuid              /* 70 */
+       .long sys_setregid
+       .long sys_sigsuspend_wrapper
+       .long sys_sigpending
+       .long sys_sethostname
+       .long sys_setrlimit             /* 75 */
+       .long sys_ni_syscall            /* old_getrlimit */
+       .long sys_getrusage
+       .long sys_gettimeofday
+       .long sys_settimeofday
+       .long sys_getgroups             /* 80 */
+       .long sys_setgroups
+       .long sys_ni_syscall            /* old_select */
+       .long sys_symlink
+       .long sys_ni_syscall            /* oldlstat */
+       .long sys_readlink              /* 85 */
+       .long sys_uselib
+       .long sys_swapon
+       .long sys_reboot
+       .long sys_ni_syscall            /* old_readdir */
+       .long sys_mmap                  /* 90 */ /* old_mmap */
+       .long sys_munmap
+       .long sys_truncate
+       .long sys_ftruncate
+       .long sys_fchmod
+       .long sys_fchown                /* 95 */
+       .long sys_getpriority
+       .long sys_setpriority
+       .long sys_ni_syscall            /* old profil syscall holder */
+       .long sys_statfs
+       .long sys_fstatfs               /* 100 */
+       .long sys_ni_syscall            /* ioperm */
+       .long sys_socketcall
+       .long sys_syslog                /* operation with system console */
+       .long sys_setitimer
+       .long sys_getitimer             /* 105 */
+       .long sys_newstat
+       .long sys_newlstat
+       .long sys_newfstat
+       .long sys_ni_syscall            /* uname */
+       .long sys_ni_syscall            /* 110 */ /* iopl */
+       .long sys_vhangup
+       .long sys_ni_syscall            /* old "idle" system call */
+       .long sys_ni_syscall            /* old sys_vm86old */
+       .long sys_wait4
+       .long sys_swapoff               /* 115 */
+       .long sys_sysinfo
+       .long sys_ipc
+       .long sys_fsync
+       .long sys_sigreturn_wrapper
+       .long sys_clone_wrapper         /* 120 */
+       .long sys_setdomainname
+       .long sys_newuname
+       .long sys_ni_syscall            /* modify_ldt */
+       .long sys_adjtimex
+       .long sys_mprotect              /* 125: sys_mprotect */
+       .long sys_sigprocmask
+       .long sys_ni_syscall            /* old "create_module" */
+       .long sys_init_module
+       .long sys_delete_module
+       .long sys_ni_syscall            /* 130: old "get_kernel_syms" */
+       .long sys_quotactl
+       .long sys_getpgid
+       .long sys_fchdir
+       .long sys_bdflush
+       .long sys_sysfs                 /* 135 */
+       .long sys_personality
+       .long sys_ni_syscall            /* reserved for afs_syscall */
+       .long sys_setfsuid
+       .long sys_setfsgid
+       .long sys_llseek                /* 140 */
+       .long sys_getdents
+       .long sys_select
+       .long sys_flock
+       .long sys_msync
+       .long sys_readv                 /* 145 */
+       .long sys_writev
+       .long sys_getsid
+       .long sys_fdatasync
+       .long sys_sysctl
+       .long sys_mlock         /* 150: sys_mlock */
+       .long sys_munlock
+       .long sys_mlockall
+       .long sys_munlockall
+       .long sys_sched_setparam
+       .long sys_sched_getparam        /* 155 */
+       .long sys_sched_setscheduler
+       .long sys_sched_getscheduler
+       .long sys_sched_yield
+       .long sys_sched_get_priority_max
+       .long sys_sched_get_priority_min        /* 160 */
+       .long sys_sched_rr_get_interval
+       .long sys_nanosleep
+       .long sys_mremap
+       .long sys_setresuid
+       .long sys_getresuid             /* 165 */
+       .long sys_ni_syscall            /* sys_vm86 */
+       .long sys_ni_syscall            /* Old sys_query_module */
+       .long sys_poll
+       .long sys_nfsservctl
+       .long sys_setresgid             /* 170 */
+       .long sys_getresgid
+       .long sys_prctl
+       .long sys_rt_sigreturn_wrapper
+       .long sys_rt_sigaction
+       .long sys_rt_sigprocmask        /* 175 */
+       .long sys_rt_sigpending
+       .long sys_rt_sigtimedwait
+       .long sys_rt_sigqueueinfo
+       .long sys_rt_sigsuspend_wrapper
+       .long sys_pread64               /* 180 */
+       .long sys_pwrite64
+       .long sys_chown
+       .long sys_getcwd
+       .long sys_capget
+       .long sys_capset                /* 185 */
+       .long sys_ni_syscall            /* sigaltstack */
+       .long sys_sendfile
+       .long sys_ni_syscall            /* reserved for streams1 */
+       .long sys_ni_syscall            /* reserved for streams2 */
+       .long sys_vfork_wrapper         /* 190 */
+       .long sys_getrlimit
+       .long sys_mmap2                 /* mmap2 */
+       .long sys_truncate64
+       .long sys_ftruncate64
+       .long sys_stat64                /* 195 */
+       .long sys_lstat64
+       .long sys_fstat64
+       .long sys_lchown
+       .long sys_getuid
+       .long sys_getgid                /* 200 */
+       .long sys_geteuid
+       .long sys_getegid
+       .long sys_setreuid
+       .long sys_setregid
+       .long sys_getgroups             /* 205 */
+       .long sys_setgroups
+       .long sys_fchown
+       .long sys_setresuid
+       .long sys_getresuid
+       .long sys_setresgid             /* 210 */
+       .long sys_getresgid
+       .long sys_chown
+       .long sys_setuid
+       .long sys_setgid
+       .long sys_setfsuid              /* 215 */
+       .long sys_setfsgid
+       .long sys_pivot_root
+       .long sys_mincore
+       .long sys_madvise
+       .long sys_getdents64            /* 220 */
+       .long sys_fcntl64
+       .long sys_ni_syscall            /* reserved for TUX */
+       .long sys_ni_syscall
+       .long sys_gettid
+       .long sys_readahead             /* 225 */
+       .long sys_setxattr
+       .long sys_lsetxattr
+       .long sys_fsetxattr
+       .long sys_getxattr
+       .long sys_lgetxattr             /* 230 */
+       .long sys_fgetxattr
+       .long sys_listxattr
+       .long sys_llistxattr
+       .long sys_flistxattr
+       .long sys_removexattr           /* 235 */
+       .long sys_lremovexattr
+       .long sys_fremovexattr
+       .long sys_tkill
+       .long sys_sendfile64
+       .long sys_futex                 /* 240 */
+       .long sys_sched_setaffinity
+       .long sys_sched_getaffinity
+       .long sys_ni_syscall            /* set_thread_area */
+       .long sys_ni_syscall            /* get_thread_area */
+       .long sys_io_setup              /* 245 */
+       .long sys_io_destroy
+       .long sys_io_getevents
+       .long sys_io_submit
+       .long sys_io_cancel
+       .long sys_fadvise64             /* 250 */
+       .long sys_ni_syscall
+       .long sys_exit_group
+       .long sys_lookup_dcookie
+       .long sys_epoll_create
+       .long sys_epoll_ctl             /* 255 */
+       .long sys_epoll_wait
+       .long sys_remap_file_pages
+       .long sys_set_tid_address
+       .long sys_timer_create
+       .long sys_timer_settime         /* 260 */
+       .long sys_timer_gettime
+       .long sys_timer_getoverrun
+       .long sys_timer_delete
+       .long sys_clock_settime
+       .long sys_clock_gettime         /* 265 */
+       .long sys_clock_getres
+       .long sys_clock_nanosleep
+       .long sys_statfs64
+       .long sys_fstatfs64
+       .long sys_tgkill                /* 270 */
+       .long sys_utimes
+       .long sys_fadvise64_64
+       .long sys_ni_syscall            /* sys_vserver */
+       .long sys_mbind
+       .long sys_get_mempolicy
+       .long sys_set_mempolicy
+       .long sys_mq_open
+       .long sys_mq_unlink
+       .long sys_mq_timedsend
+       .long sys_mq_timedreceive       /* 280 */
+       .long sys_mq_notify
+       .long sys_mq_getsetattr
+       .long sys_kexec_load
+       .long sys_waitid
+       .long sys_ni_syscall            /* 285 */ /* available */
+       .long sys_add_key
+       .long sys_request_key
+       .long sys_keyctl
+       .long sys_ioprio_set
+       .long sys_ioprio_get            /* 290 */
+       .long sys_inotify_init
+       .long sys_inotify_add_watch
+       .long sys_inotify_rm_watch
+       .long sys_ni_syscall            /* sys_migrate_pages */
+       .long sys_openat        /* 295 */
+       .long sys_mkdirat
+       .long sys_mknodat
+       .long sys_fchownat
+       .long sys_ni_syscall
+       .long sys_fstatat64             /* 300 */
+       .long sys_unlinkat
+       .long sys_renameat
+       .long sys_linkat
+       .long sys_symlinkat
+       .long sys_readlinkat            /* 305 */
+       .long sys_fchmodat
+       .long sys_faccessat
+       .long sys_ni_syscall /* pselect6 */
+       .long sys_ni_syscall /* sys_ppoll */
+       .long sys_unshare               /* 310 */
+       .long sys_set_robust_list
+       .long sys_get_robust_list
+       .long sys_splice
+       .long sys_sync_file_range
+       .long sys_tee                   /* 315 */
+       .long sys_vmsplice
+       .long sys_move_pages
+       .long sys_getcpu
+       .long sys_epoll_pwait
+       .long sys_utimensat             /* 320 */
+       .long sys_signalfd
+       .long sys_timerfd_create
+       .long sys_eventfd
+       .long sys_fallocate
+       .long sys_semtimedop            /* 325 */
+       .long sys_timerfd_settime
+       .long sys_timerfd_gettime
+       .long sys_semctl
+       .long sys_semget
+       .long sys_semop                 /* 330 */
+       .long sys_msgctl
+       .long sys_msgget
+       .long sys_msgrcv
+       .long sys_msgsnd
+       .long sys_shmat                 /* 335 */
+       .long sys_shmctl
+       .long sys_shmdt
+       .long sys_shmget
+       .long sys_signalfd4     /* new syscall */
+       .long sys_eventfd2              /* 340 */
+       .long sys_epoll_create1
+       .long sys_dup3
+       .long sys_pipe2
+       .long sys_inotify_init1
+       .long sys_socket                /* 345 */
+       .long sys_socketpair
+       .long sys_bind
+       .long sys_listen
+       .long sys_accept
+       .long sys_connect               /* 350 */
+       .long sys_getsockname
+       .long sys_getpeername
+       .long sys_sendto
+       .long sys_send
+       .long sys_recvfrom              /* 355 */
+       .long sys_recv
+       .long sys_setsockopt
+       .long sys_getsockopt
+       .long sys_shutdown
+       .long sys_sendmsg               /* 360 */
+       .long sys_recvmsg
+       .long sys_ni_syscall
diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c
new file mode 100644 (file)
index 0000000..05a497e
--- /dev/null
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/param.h>
+#include <linux/interrupt.h>
+#include <linux/profile.h>
+#include <linux/irq.h>
+#include <linux/delay.h>
+#include <linux/sched.h>
+#include <linux/spinlock.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/clocksource.h>
+#include <linux/clockchips.h>
+#include <linux/io.h>
+#include <asm/cpuinfo.h>
+#include <asm/setup.h>
+#include <asm/prom.h>
+#include <asm/irq.h>
+#include <asm/system.h>
+
+#ifdef CONFIG_SELFMOD_TIMER
+#include <asm/selfmod.h>
+#define TIMER_BASE     BARRIER_BASE_ADDR
+#else
+static unsigned int timer_baseaddr;
+#define TIMER_BASE     timer_baseaddr
+#endif
+
+#define TCSR0  (0x00)
+#define TLR0   (0x04)
+#define TCR0   (0x08)
+#define TCSR1  (0x10)
+#define TLR1   (0x14)
+#define TCR1   (0x18)
+
+#define TCSR_MDT       (1<<0)
+#define TCSR_UDT       (1<<1)
+#define TCSR_GENT      (1<<2)
+#define TCSR_CAPT      (1<<3)
+#define TCSR_ARHT      (1<<4)
+#define TCSR_LOAD      (1<<5)
+#define TCSR_ENIT      (1<<6)
+#define TCSR_ENT       (1<<7)
+#define TCSR_TINT      (1<<8)
+#define TCSR_PWMA      (1<<9)
+#define TCSR_ENALL     (1<<10)
+
+static inline void microblaze_timer0_stop(void)
+{
+       out_be32(TIMER_BASE + TCSR0, in_be32(TIMER_BASE + TCSR0) & ~TCSR_ENT);
+}
+
+static inline void microblaze_timer0_start_periodic(unsigned long load_val)
+{
+       if (!load_val)
+               load_val = 1;
+       out_be32(TIMER_BASE + TLR0, load_val); /* loading value to timer reg */
+
+       /* load the initial value */
+       out_be32(TIMER_BASE + TCSR0, TCSR_LOAD);
+
+       /* see timer data sheet for detail
+        * !ENALL - don't enable 'em all
+        * !PWMA - disable pwm
+        * TINT - clear interrupt status
+        * ENT- enable timer itself
+        * EINT - enable interrupt
+        * !LOAD - clear the bit to let go
+        * ARHT - auto reload
+        * !CAPT - no external trigger
+        * !GENT - no external signal
+        * UDT - set the timer as down counter
+        * !MDT0 - generate mode
+        */
+       out_be32(TIMER_BASE + TCSR0,
+                       TCSR_TINT|TCSR_ENIT|TCSR_ENT|TCSR_ARHT|TCSR_UDT);
+}
+
+static inline void microblaze_timer0_start_oneshot(unsigned long load_val)
+{
+       if (!load_val)
+               load_val = 1;
+       out_be32(TIMER_BASE + TLR0, load_val); /* loading value to timer reg */
+
+       /* load the initial value */
+       out_be32(TIMER_BASE + TCSR0, TCSR_LOAD);
+
+       out_be32(TIMER_BASE + TCSR0,
+                       TCSR_TINT|TCSR_ENIT|TCSR_ENT|TCSR_ARHT|TCSR_UDT);
+}
+
+static int microblaze_timer_set_next_event(unsigned long delta,
+                                       struct clock_event_device *dev)
+{
+       pr_debug("%s: next event, delta %x\n", __func__, (u32)delta);
+       microblaze_timer0_start_oneshot(delta);
+       return 0;
+}
+
+static void microblaze_timer_set_mode(enum clock_event_mode mode,
+                               struct clock_event_device *evt)
+{
+       switch (mode) {
+       case CLOCK_EVT_MODE_PERIODIC:
+               printk(KERN_INFO "%s: periodic\n", __func__);
+               microblaze_timer0_start_periodic(cpuinfo.freq_div_hz);
+               break;
+       case CLOCK_EVT_MODE_ONESHOT:
+               printk(KERN_INFO "%s: oneshot\n", __func__);
+               break;
+       case CLOCK_EVT_MODE_UNUSED:
+               printk(KERN_INFO "%s: unused\n", __func__);
+               break;
+       case CLOCK_EVT_MODE_SHUTDOWN:
+               printk(KERN_INFO "%s: shutdown\n", __func__);
+               microblaze_timer0_stop();
+               break;
+       case CLOCK_EVT_MODE_RESUME:
+               printk(KERN_INFO "%s: resume\n", __func__);
+               break;
+       }
+}
+
+static struct clock_event_device clockevent_microblaze_timer = {
+       .name           = "microblaze_clockevent",
+       .features       = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
+       .shift          = 24,
+       .rating         = 300,
+       .set_next_event = microblaze_timer_set_next_event,
+       .set_mode       = microblaze_timer_set_mode,
+};
+
+static inline void timer_ack(void)
+{
+       out_be32(TIMER_BASE + TCSR0, in_be32(TIMER_BASE + TCSR0));
+}
+
+static irqreturn_t timer_interrupt(int irq, void *dev_id)
+{
+       struct clock_event_device *evt = &clockevent_microblaze_timer;
+#ifdef CONFIG_HEART_BEAT
+       heartbeat();
+#endif
+       timer_ack();
+       evt->event_handler(evt);
+       return IRQ_HANDLED;
+}
+
+static struct irqaction timer_irqaction = {
+       .handler = timer_interrupt,
+       .flags = IRQF_DISABLED | IRQF_TIMER,
+       .name = "timer",
+       .dev_id = &clockevent_microblaze_timer,
+};
+
+static __init void microblaze_clockevent_init(void)
+{
+       clockevent_microblaze_timer.mult =
+               div_sc(cpuinfo.cpu_clock_freq, NSEC_PER_SEC,
+                               clockevent_microblaze_timer.shift);
+       clockevent_microblaze_timer.max_delta_ns =
+               clockevent_delta2ns((u32)~0, &clockevent_microblaze_timer);
+       clockevent_microblaze_timer.min_delta_ns =
+               clockevent_delta2ns(1, &clockevent_microblaze_timer);
+       clockevent_microblaze_timer.cpumask = cpumask_of(0);
+       clockevents_register_device(&clockevent_microblaze_timer);
+}
+
+static cycle_t microblaze_read(void)
+{
+       /* reading actual value of timer 1 */
+       return (cycle_t) (in_be32(TIMER_BASE + TCR1));
+}
+
+static struct clocksource clocksource_microblaze = {
+       .name           = "microblaze_clocksource",
+       .rating         = 300,
+       .read           = microblaze_read,
+       .mask           = CLOCKSOURCE_MASK(32),
+       .shift          = 24, /* I can shift it */
+       .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
+};
+
+static int __init microblaze_clocksource_init(void)
+{
+       clocksource_microblaze.mult =
+                       clocksource_hz2mult(cpuinfo.cpu_clock_freq,
+                                               clocksource_microblaze.shift);
+       if (clocksource_register(&clocksource_microblaze))
+               panic("failed to register clocksource");
+
+       /* stop timer1 */
+       out_be32(TIMER_BASE + TCSR1, in_be32(TIMER_BASE + TCSR1) & ~TCSR_ENT);
+       /* start timer1 - up counting without interrupt */
+       out_be32(TIMER_BASE + TCSR1, TCSR_TINT|TCSR_ENT|TCSR_ARHT);
+       return 0;
+}
+
+void __init time_init(void)
+{
+       u32 irq, i = 0;
+       u32 timer_num = 1;
+       struct device_node *timer = NULL;
+#ifdef CONFIG_SELFMOD_TIMER
+       unsigned int timer_baseaddr = 0;
+       int arr_func[] = {
+                               (int)&microblaze_read,
+                               (int)&timer_interrupt,
+                               (int)&microblaze_clocksource_init,
+                               (int)&microblaze_timer_set_mode,
+                               (int)&microblaze_timer_set_next_event,
+                               0
+                       };
+#endif
+       char *timer_list[] = {
+                               "xlnx,xps-timer-1.00.a",
+                               "xlnx,opb-timer-1.00.b",
+                               "xlnx,opb-timer-1.00.a",
+                               NULL
+                       };
+
+       for (i = 0; timer_list[i] != NULL; i++) {
+               timer = of_find_compatible_node(NULL, NULL, timer_list[i]);
+               if (timer)
+                       break;
+       }
+
+       timer_baseaddr = *(int *) of_get_property(timer, "reg", NULL);
+       timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE);
+       irq = *(int *) of_get_property(timer, "interrupts", NULL);
+       timer_num =
+               *(int *) of_get_property(timer, "xlnx,one-timer-only", NULL);
+       if (timer_num) {
+               printk(KERN_EMERG "Please enable two timers in HW\n");
+               BUG();
+       }
+
+#ifdef CONFIG_SELFMOD_TIMER
+       selfmod_function((int *) arr_func, timer_baseaddr);
+#endif
+       printk(KERN_INFO "%s #0 at 0x%08x, irq=%d\n",
+               timer_list[i], timer_baseaddr, irq);
+
+       cpuinfo.freq_div_hz = cpuinfo.cpu_clock_freq / HZ;
+
+       setup_irq(irq, &timer_irqaction);
+#ifdef CONFIG_HEART_BEAT
+       setup_heartbeat();
+#endif
+       microblaze_clocksource_init();
+       microblaze_clockevent_init();
+}
diff --git a/arch/microblaze/kernel/traps.c b/arch/microblaze/kernel/traps.c
new file mode 100644 (file)
index 0000000..fbdc533
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2007-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/kallsyms.h>
+#include <linux/module.h>
+#include <linux/sched.h>
+#include <linux/debug_locks.h>
+
+#include <asm/exceptions.h>
+#include <asm/system.h>
+
+void trap_init(void)
+{
+       __enable_hw_exceptions();
+}
+
+void __bad_xchg(volatile void *ptr, int size)
+{
+       printk(KERN_INFO "xchg: bad data size: pc 0x%p, ptr 0x%p, size %d\n",
+               __builtin_return_address(0), ptr, size);
+       BUG();
+}
+EXPORT_SYMBOL(__bad_xchg);
+
+static int kstack_depth_to_print = 24;
+
+static int __init kstack_setup(char *s)
+{
+       kstack_depth_to_print = strict_strtoul(s, 0, 0);
+
+       return 1;
+}
+__setup("kstack=", kstack_setup);
+
+void show_trace(struct task_struct *task, unsigned long *stack)
+{
+       unsigned long addr;
+
+       if (!stack)
+               stack = (unsigned long *)&stack;
+
+       printk(KERN_NOTICE "Call Trace: ");
+#ifdef CONFIG_KALLSYMS
+       printk(KERN_NOTICE "\n");
+#endif
+       while (!kstack_end(stack)) {
+               addr = *stack++;
+               /*
+                * If the address is either in the text segment of the
+                * kernel, or in the region which contains vmalloc'ed
+                * memory, it *may* be the address of a calling
+                * routine; if so, print it so that someone tracing
+                * down the cause of the crash will be able to figure
+                * out the call path that was taken.
+                */
+               if (kernel_text_address(addr))
+                       print_ip_sym(addr);
+       }
+       printk(KERN_NOTICE "\n");
+
+       if (!task)
+               task = current;
+
+       debug_show_held_locks(task);
+}
+
+void show_stack(struct task_struct *task, unsigned long *sp)
+{
+       unsigned long *stack;
+       int i;
+
+       if (sp == NULL) {
+               if (task)
+                       sp = (unsigned long *) ((struct thread_info *)
+                                               (task->stack))->cpu_context.r1;
+               else
+                       sp = (unsigned long *)&sp;
+       }
+
+       stack = sp;
+
+       printk(KERN_INFO "\nStack:\n  ");
+
+       for (i = 0; i < kstack_depth_to_print; i++) {
+               if (kstack_end(sp))
+                       break;
+               if (i && ((i % 8) == 0))
+                       printk("\n  ");
+               printk("%08lx ", *sp++);
+       }
+       printk("\n");
+       show_trace(task, stack);
+}
+
+void dump_stack(void)
+{
+       show_stack(NULL, NULL);
+}
+EXPORT_SYMBOL(dump_stack);
diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
new file mode 100644 (file)
index 0000000..840385e
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+OUTPUT_FORMAT("elf32-microblaze", "elf32-microblaze", "elf32-microblaze")
+OUTPUT_ARCH(microblaze)
+ENTRY(_start)
+
+#include <asm-generic/vmlinux.lds.h>
+
+jiffies = jiffies_64 + 4;
+
+SECTIONS {
+       . = CONFIG_KERNEL_BASE_ADDR;
+
+       .text : {
+               _text = . ;
+               _stext = . ;
+               *(.text .text.*)
+               *(.fixup)
+
+               *(.exitcall.exit)
+               SCHED_TEXT
+               LOCK_TEXT
+               KPROBES_TEXT
+               . = ALIGN (4) ;
+               _etext = . ;
+       }
+
+       . = ALIGN (4) ;
+       _fdt_start = . ; /* place for fdt blob */
+       . = . + 0x4000;
+       _fdt_end = . ;
+
+       . = ALIGN(16);
+       RODATA
+       . = ALIGN(16);
+       __ex_table : {
+               __start___ex_table = .;
+               *(__ex_table)
+               __stop___ex_table = .;
+       }
+
+       /*
+        * sdata2 section can go anywhere, but must be word aligned
+        * and SDA2_BASE must point to the middle of it
+        */
+       .sdata2 : {
+               _ssrw = .;
+               . = ALIGN(4096); /* page aligned when MMU used - origin 0x8 */
+               *(.sdata2)
+       . = ALIGN(8);
+       _essrw = .;
+       _ssrw_size = _essrw - _ssrw;
+       _KERNEL_SDA2_BASE_ = _ssrw + (_ssrw_size / 2);
+       }
+
+       _sdata = . ;
+       .data ALIGN (4096) : { /* page aligned when MMU used - origin 0x4 */
+               *(.data)
+       }
+       . = ALIGN(32);
+       .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+       _edata = . ;
+
+       /* Reserve some low RAM for r0 based memory references */
+       . = ALIGN(0x4) ;
+       r0_ram = . ;
+       . = . +  4096;  /* a page should be enough */
+
+       /* The initial task */
+       . = ALIGN(8192);
+       .data.init_task : { *(.data.init_task) }
+
+       /* Under the microblaze ABI, .sdata and .sbss must be contiguous */
+       . = ALIGN(8);
+       .sdata : {
+               _ssro = .;
+               *(.sdata)
+       }
+
+       .sbss : {
+               _ssbss = .;
+               *(.sbss)
+               _esbss = .;
+               _essro = .;
+               _ssro_size = _essro - _ssro ;
+               _KERNEL_SDA_BASE_ = _ssro + (_ssro_size / 2) ;
+       }
+
+       __init_begin = .;
+
+       . = ALIGN(4096);
+       .init.text : {
+               _sinittext = . ;
+               *(.init.text)
+               *(.exit.text)
+               *(.exit.data)
+               _einittext = .;
+       }
+
+       .init.data : { *(.init.data) }
+
+       . = ALIGN(4);
+       .init.ivt : {
+               __ivt_start = .;
+               *(.init.ivt)
+               __ivt_end = .;
+       }
+
+       .init.setup : {
+               __setup_start = .;
+               *(.init.setup)
+               __setup_end = .;
+       }
+
+       .initcall.init : {
+               __initcall_start = .;
+               INITCALLS
+               __initcall_end = .;
+       }
+
+       .con_initcall.init : {
+               __con_initcall_start = .;
+               *(.con_initcall.init)
+               __con_initcall_end = .;
+       }
+
+       __init_end_before_initramfs = .;
+
+       .init.ramfs ALIGN(4096) : {
+               __initramfs_start = .;
+               *(.init.ramfs)
+               __initramfs_end = .;
+               . = ALIGN(4);
+               LONG(0);
+/*
+ * FIXME this can break initramfs for MMU.
+ * Pad init.ramfs up to page boundary,
+ * so that __init_end == __bss_start. This will make image.elf
+ * consistent with the image.bin
+ */
+               /* . = ALIGN(4096); */
+       }
+       __init_end = .;
+
+       .bss ALIGN (4096) : { /* page aligned when MMU used */
+               __bss_start = . ;
+                       *(.bss*)
+                       *(COMMON)
+               . = ALIGN (4) ;
+               __bss_stop = . ;
+               _ebss = . ;
+       }
+       . = ALIGN(4096);
+       _end = .;
+}
diff --git a/arch/microblaze/lib/Makefile b/arch/microblaze/lib/Makefile
new file mode 100644 (file)
index 0000000..d27126b
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# Makefile
+#
+
+lib-y :=  memset.o checksum.o
+
+ifeq ($(CONFIG_OPT_LIB_ASM),y)
+lib-y += fastcopy.o
+else
+lib-y += memcpy.o memmove.o
+endif
+
+lib-y +=  uaccess.o
diff --git a/arch/microblaze/lib/checksum.c b/arch/microblaze/lib/checksum.c
new file mode 100644 (file)
index 0000000..8093400
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ *
+ * INET                An implementation of the TCP/IP protocol suite for the LINUX
+ *             operating system.  INET is implemented using the  BSD Socket
+ *             interface as the means of communication with the user level.
+ *
+ *             IP/TCP/UDP checksumming routines
+ *
+ * Authors:    Jorge Cwik, <jorge@laser.satlink.net>
+ *             Arnt Gulbrandsen, <agulbra@nvg.unit.no>
+ *             Tom May, <ftom@netcom.com>
+ *             Andreas Schwab, <schwab@issan.informatik.uni-dortmund.de>
+ *             Lots of code moved from tcp.c and ip.c; see those files
+ *             for more names.
+ *
+ * 03/02/96    Jes Sorensen, Andreas Schwab, Roman Hodek:
+ *             Fixed some nasty bugs, causing some horrible crashes.
+ *             A: At some points, the sum (%0) was used as
+ *             length-counter instead of the length counter
+ *             (%1). Thanks to Roman Hodek for pointing this out.
+ *             B: GCC seems to mess up if one uses too many
+ *             data-registers to hold input values and one tries to
+ *             specify d0 and d1 as scratch registers. Letting gcc
+ *             choose these registers itself solves the problem.
+ *
+ *             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.
+ */
+
+/* Revised by Kenneth Albanowski for m68knommu. Basic problem: unaligned access
+ kills, so most of the assembly has to go. */
+
+#include <net/checksum.h>
+#include <asm/checksum.h>
+#include <linux/module.h>
+
+static inline unsigned short from32to16(unsigned long x)
+{
+       /* add up 16-bit and 16-bit for 16+c bit */
+       x = (x & 0xffff) + (x >> 16);
+       /* add up carry.. */
+       x = (x & 0xffff) + (x >> 16);
+       return x;
+}
+
+static unsigned int do_csum(const unsigned char *buff, int len)
+{
+       int odd, count;
+       unsigned long result = 0;
+
+       if (len <= 0)
+               goto out;
+       odd = 1 & (unsigned long) buff;
+       if (odd) {
+               result = *buff;
+               len--;
+               buff++;
+       }
+       count = len >> 1;               /* nr of 16-bit words.. */
+       if (count) {
+               if (2 & (unsigned long) buff) {
+                       result += *(unsigned short *) buff;
+                       count--;
+                       len -= 2;
+                       buff += 2;
+               }
+               count >>= 1;            /* nr of 32-bit words.. */
+               if (count) {
+                       unsigned long carry = 0;
+                       do {
+                               unsigned long w = *(unsigned long *) buff;
+                               count--;
+                               buff += 4;
+                               result += carry;
+                               result += w;
+                               carry = (w > result);
+                       } while (count);
+                       result += carry;
+                       result = (result & 0xffff) + (result >> 16);
+               }
+               if (len & 2) {
+                       result += *(unsigned short *) buff;
+                       buff += 2;
+               }
+       }
+       if (len & 1)
+               result += (*buff << 8);
+       result = from32to16(result);
+       if (odd)
+               result = ((result >> 8) & 0xff) | ((result & 0xff) << 8);
+out:
+       return result;
+}
+
+/*
+ *     This is a version of ip_compute_csum() optimized for IP headers,
+ *     which always checksum on 4 octet boundaries.
+ */
+__sum16 ip_fast_csum(const void *iph, unsigned int ihl)
+{
+       return (__force __sum16)~do_csum(iph, ihl*4);
+}
+
+/*
+ * computes the checksum of a memory block at buff, length len,
+ * and adds in "sum" (32-bit)
+ *
+ * returns a 32-bit number suitable for feeding into itself
+ * or csum_tcpudp_magic
+ *
+ * this function must be called with even lengths, except
+ * for the last fragment, which may be odd
+ *
+ * it's best to have buff aligned on a 32-bit boundary
+ */
+__wsum csum_partial(const void *buff, int len, __wsum sum)
+{
+       unsigned int result = do_csum(buff, len);
+
+       /* add in old sum, and carry.. */
+       result += sum;
+       if (sum > result)
+               result += 1;
+       return result;
+}
+EXPORT_SYMBOL(csum_partial);
+
+/*
+ * this routine is used for miscellaneous IP-like checksums, mainly
+ * in icmp.c
+ */
+__sum16 ip_compute_csum(const unsigned char *buff, int len)
+{
+       return ~do_csum(buff, len);
+}
+EXPORT_SYMBOL(ip_compute_csum);
+
+/*
+ * copy from fs while checksumming, otherwise like csum_partial
+ */
+__wsum
+csum_partial_copy_from_user(const char __user *src, char *dst, int len,
+                                               int sum, int *csum_err)
+{
+       if (csum_err)
+               *csum_err = 0;
+       memcpy(dst, src, len);
+       return csum_partial(dst, len, sum);
+}
+EXPORT_SYMBOL(csum_partial_copy_from_user);
+
+/*
+ * copy from ds while checksumming, otherwise like csum_partial
+ */
+__wsum
+csum_partial_copy(const char *src, char *dst, int len, int sum)
+{
+       memcpy(dst, src, len);
+       return csum_partial(dst, len, sum);
+}
+EXPORT_SYMBOL(csum_partial_copy);
diff --git a/arch/microblaze/lib/fastcopy.S b/arch/microblaze/lib/fastcopy.S
new file mode 100644 (file)
index 0000000..02e3ab4
--- /dev/null
@@ -0,0 +1,662 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2008 Jim Law - Iris LP  All rights reserved.
+ *
+ * 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.
+ *
+ * Written by Jim Law <jlaw@irispower.com>
+ *
+ * intended to replace:
+ *     memcpy in memcpy.c and
+ *     memmove in memmove.c
+ * ... in arch/microblaze/lib
+ *
+ *
+ * assly_fastcopy.S
+ *
+ * Attempt at quicker memcpy and memmove for MicroBlaze
+ *     Input : Operand1 in Reg r5 - destination address
+ *             Operand2 in Reg r6 - source address
+ *             Operand3 in Reg r7 - number of bytes to transfer
+ *     Output: Result in Reg r3 - starting destinaition address
+ *
+ *
+ * Explanation:
+ *     Perform (possibly unaligned) copy of a block of memory
+ *     between mem locations with size of xfer spec'd in bytes
+ */
+
+#include <linux/linkage.h>
+
+       .globl  memcpy
+       .ent    memcpy
+
+memcpy:
+fast_memcpy_ascending:
+       /* move d to return register as value of function */
+       addi    r3, r5, 0
+
+       addi    r4, r0, 4       /* n = 4 */
+       cmpu    r4, r4, r7      /* n = c - n  (unsigned) */
+       blti    r4, a_xfer_end  /* if n < 0, less than one word to transfer */
+
+       /* transfer first 0~3 bytes to get aligned dest address */
+       andi    r4, r5, 3               /* n = d & 3 */
+       /* if zero, destination already aligned */
+       beqi    r4, a_dalign_done
+       /* n = 4 - n (yields 3, 2, 1 transfers for 1, 2, 3 addr offset) */
+       rsubi   r4, r4, 4
+       rsub    r7, r4, r7              /* c = c - n adjust c */
+
+a_xfer_first_loop:
+       /* if no bytes left to transfer, transfer the bulk */
+       beqi    r4, a_dalign_done
+       lbui    r11, r6, 0              /* h = *s */
+       sbi     r11, r5, 0              /* *d = h */
+       addi    r6, r6, 1               /* s++ */
+       addi    r5, r5, 1               /* d++ */
+       brid    a_xfer_first_loop       /* loop */
+       addi    r4, r4, -1              /* n-- (IN DELAY SLOT) */
+
+a_dalign_done:
+       addi    r4, r0, 32              /* n = 32 */
+       cmpu    r4, r4, r7              /* n = c - n  (unsigned) */
+       /* if n < 0, less than one block to transfer */
+       blti    r4, a_block_done
+
+a_block_xfer:
+       andi    r4, r7, 0xffffffe0      /* n = c & ~31 */
+       rsub    r7, r4, r7              /* c = c - n */
+
+       andi    r9, r6, 3               /* t1 = s & 3 */
+       /* if temp != 0, unaligned transfers needed */
+       bnei    r9, a_block_unaligned
+
+a_block_aligned:
+       lwi     r9, r6, 0               /* t1 = *(s + 0) */
+       lwi     r10, r6, 4              /* t2 = *(s + 4) */
+       lwi     r11, r6, 8              /* t3 = *(s + 8) */
+       lwi     r12, r6, 12             /* t4 = *(s + 12) */
+       swi     r9, r5, 0               /* *(d + 0) = t1 */
+       swi     r10, r5, 4              /* *(d + 4) = t2 */
+       swi     r11, r5, 8              /* *(d + 8) = t3 */
+       swi     r12, r5, 12             /* *(d + 12) = t4 */
+       lwi     r9, r6, 16              /* t1 = *(s + 16) */
+       lwi     r10, r6, 20             /* t2 = *(s + 20) */
+       lwi     r11, r6, 24             /* t3 = *(s + 24) */
+       lwi     r12, r6, 28             /* t4 = *(s + 28) */
+       swi     r9, r5, 16              /* *(d + 16) = t1 */
+       swi     r10, r5, 20             /* *(d + 20) = t2 */
+       swi     r11, r5, 24             /* *(d + 24) = t3 */
+       swi     r12, r5, 28             /* *(d + 28) = t4 */
+       addi    r6, r6, 32              /* s = s + 32 */
+       addi    r4, r4, -32             /* n = n - 32 */
+       bneid   r4, a_block_aligned     /* while (n) loop */
+       addi    r5, r5, 32              /* d = d + 32 (IN DELAY SLOT) */
+       bri     a_block_done
+
+a_block_unaligned:
+       andi    r8, r6, 0xfffffffc      /* as = s & ~3 */
+       add     r6, r6, r4              /* s = s + n */
+       lwi     r11, r8, 0              /* h = *(as + 0) */
+
+       addi    r9, r9, -1
+       beqi    r9, a_block_u1          /* t1 was 1 => 1 byte offset */
+       addi    r9, r9, -1
+       beqi    r9, a_block_u2          /* t1 was 2 => 2 byte offset */
+
+a_block_u3:
+       bslli   r11, r11, 24    /* h = h << 24 */
+a_bu3_loop:
+       lwi     r12, r8, 4      /* v = *(as + 4) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 0       /* *(d + 0) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 8      /* v = *(as + 8) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 4       /* *(d + 4) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 12     /* v = *(as + 12) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 8       /* *(d + 8) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 16     /* v = *(as + 16) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 12      /* *(d + 12) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 20     /* v = *(as + 20) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 16      /* *(d + 16) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 24     /* v = *(as + 24) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 20      /* *(d + 20) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 28     /* v = *(as + 28) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 24      /* *(d + 24) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       lwi     r12, r8, 32     /* v = *(as + 32) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 28      /* *(d + 28) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       addi    r8, r8, 32      /* as = as + 32 */
+       addi    r4, r4, -32     /* n = n - 32 */
+       bneid   r4, a_bu3_loop  /* while (n) loop */
+       addi    r5, r5, 32      /* d = d + 32 (IN DELAY SLOT) */
+       bri     a_block_done
+
+a_block_u1:
+       bslli   r11, r11, 8     /* h = h << 8 */
+a_bu1_loop:
+       lwi     r12, r8, 4      /* v = *(as + 4) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 0       /* *(d + 0) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 8      /* v = *(as + 8) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 4       /* *(d + 4) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 12     /* v = *(as + 12) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 8       /* *(d + 8) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 16     /* v = *(as + 16) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 12      /* *(d + 12) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 20     /* v = *(as + 20) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 16      /* *(d + 16) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 24     /* v = *(as + 24) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 20      /* *(d + 20) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 28     /* v = *(as + 28) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 24      /* *(d + 24) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       lwi     r12, r8, 32     /* v = *(as + 32) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 28      /* *(d + 28) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       addi    r8, r8, 32      /* as = as + 32 */
+       addi    r4, r4, -32     /* n = n - 32 */
+       bneid   r4, a_bu1_loop  /* while (n) loop */
+       addi    r5, r5, 32      /* d = d + 32 (IN DELAY SLOT) */
+       bri     a_block_done
+
+a_block_u2:
+       bslli   r11, r11, 16    /* h = h << 16 */
+a_bu2_loop:
+       lwi     r12, r8, 4      /* v = *(as + 4) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 0       /* *(d + 0) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 8      /* v = *(as + 8) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 4       /* *(d + 4) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 12     /* v = *(as + 12) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 8       /* *(d + 8) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 16     /* v = *(as + 16) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 12      /* *(d + 12) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 20     /* v = *(as + 20) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 16      /* *(d + 16) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 24     /* v = *(as + 24) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 20      /* *(d + 20) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 28     /* v = *(as + 28) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 24      /* *(d + 24) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       lwi     r12, r8, 32     /* v = *(as + 32) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 28      /* *(d + 28) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       addi    r8, r8, 32      /* as = as + 32 */
+       addi    r4, r4, -32     /* n = n - 32 */
+       bneid   r4, a_bu2_loop  /* while (n) loop */
+       addi    r5, r5, 32      /* d = d + 32 (IN DELAY SLOT) */
+
+a_block_done:
+       addi    r4, r0, 4       /* n = 4 */
+       cmpu    r4, r4, r7      /* n = c - n  (unsigned) */
+       blti    r4, a_xfer_end  /* if n < 0, less than one word to transfer */
+
+a_word_xfer:
+       andi    r4, r7, 0xfffffffc      /* n = c & ~3 */
+       addi    r10, r0, 0              /* offset = 0 */
+
+       andi    r9, r6, 3               /* t1 = s & 3 */
+       /* if temp != 0, unaligned transfers needed */
+       bnei    r9, a_word_unaligned
+
+a_word_aligned:
+       lw      r9, r6, r10             /* t1 = *(s+offset) */
+       sw      r9, r5, r10             /* *(d+offset) = t1 */
+       addi    r4, r4,-4               /* n-- */
+       bneid   r4, a_word_aligned      /* loop */
+       addi    r10, r10, 4             /* offset++ (IN DELAY SLOT) */
+
+       bri     a_word_done
+
+a_word_unaligned:
+       andi    r8, r6, 0xfffffffc      /* as = s & ~3 */
+       lwi     r11, r8, 0              /* h = *(as + 0) */
+       addi    r8, r8, 4               /* as = as + 4 */
+
+       addi    r9, r9, -1
+       beqi    r9, a_word_u1           /* t1 was 1 => 1 byte offset */
+       addi    r9, r9, -1
+       beqi    r9, a_word_u2           /* t1 was 2 => 2 byte offset */
+
+a_word_u3:
+       bslli   r11, r11, 24    /* h = h << 24 */
+a_wu3_loop:
+       lw      r12, r8, r10    /* v = *(as + offset) */
+       bsrli   r9, r12, 8      /* t1 = v >> 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       sw      r9, r5, r10     /* *(d + offset) = t1 */
+       bslli   r11, r12, 24    /* h = v << 24 */
+       addi    r4, r4,-4       /* n = n - 4 */
+       bneid   r4, a_wu3_loop  /* while (n) loop */
+       addi    r10, r10, 4     /* offset = ofset + 4 (IN DELAY SLOT) */
+
+       bri     a_word_done
+
+a_word_u1:
+       bslli   r11, r11, 8     /* h = h << 8 */
+a_wu1_loop:
+       lw      r12, r8, r10    /* v = *(as + offset) */
+       bsrli   r9, r12, 24     /* t1 = v >> 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       sw      r9, r5, r10     /* *(d + offset) = t1 */
+       bslli   r11, r12, 8     /* h = v << 8 */
+       addi    r4, r4,-4       /* n = n - 4 */
+       bneid   r4, a_wu1_loop  /* while (n) loop */
+       addi    r10, r10, 4     /* offset = ofset + 4 (IN DELAY SLOT) */
+
+       bri     a_word_done
+
+a_word_u2:
+       bslli   r11, r11, 16    /* h = h << 16 */
+a_wu2_loop:
+       lw      r12, r8, r10    /* v = *(as + offset) */
+       bsrli   r9, r12, 16     /* t1 = v >> 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       sw      r9, r5, r10     /* *(d + offset) = t1 */
+       bslli   r11, r12, 16    /* h = v << 16 */
+       addi    r4, r4,-4       /* n = n - 4 */
+       bneid   r4, a_wu2_loop  /* while (n) loop */
+       addi    r10, r10, 4     /* offset = ofset + 4 (IN DELAY SLOT) */
+
+a_word_done:
+       add     r5, r5, r10     /* d = d + offset */
+       add     r6, r6, r10     /* s = s + offset */
+       rsub    r7, r10, r7     /* c = c - offset */
+
+a_xfer_end:
+a_xfer_end_loop:
+       beqi    r7, a_done              /* while (c) */
+       lbui    r9, r6, 0               /* t1 = *s */
+       addi    r6, r6, 1               /* s++ */
+       sbi     r9, r5, 0               /* *d = t1 */
+       addi    r7, r7, -1              /* c-- */
+       brid    a_xfer_end_loop         /* loop */
+       addi    r5, r5, 1               /* d++ (IN DELAY SLOT) */
+
+a_done:
+       rtsd    r15, 8
+       nop
+
+.end memcpy
+/*----------------------------------------------------------------------------*/
+       .globl  memmove
+       .ent    memmove
+
+memmove:
+       cmpu    r4, r5, r6      /* n = s - d */
+       bgei    r4,fast_memcpy_ascending
+
+fast_memcpy_descending:
+       /* move d to return register as value of function */
+       addi    r3, r5, 0
+
+       add     r5, r5, r7      /* d = d + c */
+       add     r6, r6, r7      /* s = s + c */
+
+       addi    r4, r0, 4       /* n = 4 */
+       cmpu    r4, r4, r7      /* n = c - n  (unsigned) */
+       blti    r4,d_xfer_end   /* if n < 0, less than one word to transfer */
+
+       /* transfer first 0~3 bytes to get aligned dest address */
+       andi    r4, r5, 3               /* n = d & 3 */
+       /* if zero, destination already aligned */
+       beqi    r4,d_dalign_done
+       rsub    r7, r4, r7              /* c = c - n adjust c */
+
+d_xfer_first_loop:
+       /* if no bytes left to transfer, transfer the bulk */
+       beqi    r4,d_dalign_done
+       addi    r6, r6, -1              /* s-- */
+       addi    r5, r5, -1              /* d-- */
+       lbui    r11, r6, 0              /* h = *s */
+       sbi     r11, r5, 0              /* *d = h */
+       brid    d_xfer_first_loop       /* loop */
+       addi    r4, r4, -1              /* n-- (IN DELAY SLOT) */
+
+d_dalign_done:
+       addi    r4, r0, 32      /* n = 32 */
+       cmpu    r4, r4, r7      /* n = c - n  (unsigned) */
+       /* if n < 0, less than one block to transfer */
+       blti    r4, d_block_done
+
+d_block_xfer:
+       andi    r4, r7, 0xffffffe0      /* n = c & ~31 */
+       rsub    r7, r4, r7              /* c = c - n */
+
+       andi    r9, r6, 3               /* t1 = s & 3 */
+       /* if temp != 0, unaligned transfers needed */
+       bnei    r9, d_block_unaligned
+
+d_block_aligned:
+       addi    r6, r6, -32             /* s = s - 32 */
+       addi    r5, r5, -32             /* d = d - 32 */
+       lwi     r9, r6, 28              /* t1 = *(s + 28) */
+       lwi     r10, r6, 24             /* t2 = *(s + 24) */
+       lwi     r11, r6, 20             /* t3 = *(s + 20) */
+       lwi     r12, r6, 16             /* t4 = *(s + 16) */
+       swi     r9, r5, 28              /* *(d + 28) = t1 */
+       swi     r10, r5, 24             /* *(d + 24) = t2 */
+       swi     r11, r5, 20             /* *(d + 20) = t3 */
+       swi     r12, r5, 16             /* *(d + 16) = t4 */
+       lwi     r9, r6, 12              /* t1 = *(s + 12) */
+       lwi     r10, r6, 8              /* t2 = *(s + 8) */
+       lwi     r11, r6, 4              /* t3 = *(s + 4) */
+       lwi     r12, r6, 0              /* t4 = *(s + 0) */
+       swi     r9, r5, 12              /* *(d + 12) = t1 */
+       swi     r10, r5, 8              /* *(d + 8) = t2 */
+       swi     r11, r5, 4              /* *(d + 4) = t3 */
+       addi    r4, r4, -32             /* n = n - 32 */
+       bneid   r4, d_block_aligned     /* while (n) loop */
+       swi     r12, r5, 0              /* *(d + 0) = t4 (IN DELAY SLOT) */
+       bri     d_block_done
+
+d_block_unaligned:
+       andi    r8, r6, 0xfffffffc      /* as = s & ~3 */
+       rsub    r6, r4, r6              /* s = s - n */
+       lwi     r11, r8, 0              /* h = *(as + 0) */
+
+       addi    r9, r9, -1
+       beqi    r9,d_block_u1           /* t1 was 1 => 1 byte offset */
+       addi    r9, r9, -1
+       beqi    r9,d_block_u2           /* t1 was 2 => 2 byte offset */
+
+d_block_u3:
+       bsrli   r11, r11, 8     /* h = h >> 8 */
+d_bu3_loop:
+       addi    r8, r8, -32     /* as = as - 32 */
+       addi    r5, r5, -32     /* d = d - 32 */
+       lwi     r12, r8, 28     /* v = *(as + 28) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 28      /* *(d + 28) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 24     /* v = *(as + 24) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 24      /* *(d + 24) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 20     /* v = *(as + 20) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 20      /* *(d + 20) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 16     /* v = *(as + 16) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 16      /* *(d + 16) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 12     /* v = *(as + 12) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 12      /* *(d + 112) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 8      /* v = *(as + 8) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 8       /* *(d + 8) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 4      /* v = *(as + 4) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 4       /* *(d + 4) = t1 */
+       bsrli   r11, r12, 8     /* h = v >> 8 */
+       lwi     r12, r8, 0      /* v = *(as + 0) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 0       /* *(d + 0) = t1 */
+       addi    r4, r4, -32     /* n = n - 32 */
+       bneid   r4, d_bu3_loop  /* while (n) loop */
+       bsrli   r11, r12, 8     /* h = v >> 8 (IN DELAY SLOT) */
+       bri     d_block_done
+
+d_block_u1:
+       bsrli   r11, r11, 24    /* h = h >> 24 */
+d_bu1_loop:
+       addi    r8, r8, -32     /* as = as - 32 */
+       addi    r5, r5, -32     /* d = d - 32 */
+       lwi     r12, r8, 28     /* v = *(as + 28) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 28      /* *(d + 28) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 24     /* v = *(as + 24) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 24      /* *(d + 24) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 20     /* v = *(as + 20) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 20      /* *(d + 20) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 16     /* v = *(as + 16) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 16      /* *(d + 16) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 12     /* v = *(as + 12) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 12      /* *(d + 112) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 8      /* v = *(as + 8) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 8       /* *(d + 8) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 4      /* v = *(as + 4) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 4       /* *(d + 4) = t1 */
+       bsrli   r11, r12, 24    /* h = v >> 24 */
+       lwi     r12, r8, 0      /* v = *(as + 0) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 0       /* *(d + 0) = t1 */
+       addi    r4, r4, -32     /* n = n - 32 */
+       bneid   r4, d_bu1_loop  /* while (n) loop */
+       bsrli   r11, r12, 24    /* h = v >> 24 (IN DELAY SLOT) */
+       bri     d_block_done
+
+d_block_u2:
+       bsrli   r11, r11, 16    /* h = h >> 16 */
+d_bu2_loop:
+       addi    r8, r8, -32     /* as = as - 32 */
+       addi    r5, r5, -32     /* d = d - 32 */
+       lwi     r12, r8, 28     /* v = *(as + 28) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 28      /* *(d + 28) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 24     /* v = *(as + 24) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 24      /* *(d + 24) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 20     /* v = *(as + 20) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 20      /* *(d + 20) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 16     /* v = *(as + 16) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 16      /* *(d + 16) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 12     /* v = *(as + 12) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 12      /* *(d + 112) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 8      /* v = *(as + 8) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 8       /* *(d + 8) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 4      /* v = *(as + 4) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 4       /* *(d + 4) = t1 */
+       bsrli   r11, r12, 16    /* h = v >> 16 */
+       lwi     r12, r8, 0      /* v = *(as + 0) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       swi     r9, r5, 0       /* *(d + 0) = t1 */
+       addi    r4, r4, -32     /* n = n - 32 */
+       bneid   r4, d_bu2_loop  /* while (n) loop */
+       bsrli   r11, r12, 16    /* h = v >> 16 (IN DELAY SLOT) */
+
+d_block_done:
+       addi    r4, r0, 4       /* n = 4 */
+       cmpu    r4, r4, r7      /* n = c - n  (unsigned) */
+       blti    r4,d_xfer_end   /* if n < 0, less than one word to transfer */
+
+d_word_xfer:
+       andi    r4, r7, 0xfffffffc      /* n = c & ~3 */
+       rsub    r5, r4, r5              /* d = d - n */
+       rsub    r6, r4, r6              /* s = s - n */
+       rsub    r7, r4, r7              /* c = c - n */
+
+       andi    r9, r6, 3               /* t1 = s & 3 */
+       /* if temp != 0, unaligned transfers needed */
+       bnei    r9, d_word_unaligned
+
+d_word_aligned:
+       addi    r4, r4,-4               /* n-- */
+       lw      r9, r6, r4              /* t1 = *(s+n) */
+       bneid   r4, d_word_aligned      /* loop */
+       sw      r9, r5, r4              /* *(d+n) = t1 (IN DELAY SLOT) */
+
+       bri     d_word_done
+
+d_word_unaligned:
+       andi    r8, r6, 0xfffffffc      /* as = s & ~3 */
+       lw      r11, r8, r4             /* h = *(as + n) */
+
+       addi    r9, r9, -1
+       beqi    r9,d_word_u1            /* t1 was 1 => 1 byte offset */
+       addi    r9, r9, -1
+       beqi    r9,d_word_u2            /* t1 was 2 => 2 byte offset */
+
+d_word_u3:
+       bsrli   r11, r11, 8     /* h = h >> 8 */
+d_wu3_loop:
+       addi    r4, r4,-4       /* n = n - 4 */
+       lw      r12, r8, r4     /* v = *(as + n) */
+       bslli   r9, r12, 24     /* t1 = v << 24 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       sw      r9, r5, r4      /* *(d + n) = t1 */
+       bneid   r4, d_wu3_loop  /* while (n) loop */
+       bsrli   r11, r12, 8     /* h = v >> 8 (IN DELAY SLOT) */
+
+       bri     d_word_done
+
+d_word_u1:
+       bsrli   r11, r11, 24    /* h = h >> 24 */
+d_wu1_loop:
+       addi    r4, r4,-4       /* n = n - 4 */
+       lw      r12, r8, r4     /* v = *(as + n) */
+       bslli   r9, r12, 8      /* t1 = v << 8 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       sw      r9, r5, r4      /* *(d + n) = t1 */
+       bneid   r4, d_wu1_loop  /* while (n) loop */
+       bsrli   r11, r12, 24    /* h = v >> 24 (IN DELAY SLOT) */
+
+       bri     d_word_done
+
+d_word_u2:
+       bsrli   r11, r11, 16    /* h = h >> 16 */
+d_wu2_loop:
+       addi    r4, r4,-4       /* n = n - 4 */
+       lw      r12, r8, r4     /* v = *(as + n) */
+       bslli   r9, r12, 16     /* t1 = v << 16 */
+       or      r9, r11, r9     /* t1 = h | t1 */
+       sw      r9, r5, r4      /* *(d + n) = t1 */
+       bneid   r4, d_wu2_loop  /* while (n) loop */
+       bsrli   r11, r12, 16    /* h = v >> 16 (IN DELAY SLOT) */
+
+d_word_done:
+
+d_xfer_end:
+d_xfer_end_loop:
+       beqi    r7, a_done              /* while (c) */
+       addi    r6, r6, -1              /* s-- */
+       lbui    r9, r6, 0               /* t1 = *s */
+       addi    r5, r5, -1              /* d-- */
+       sbi     r9, r5, 0               /* *d = t1 */
+       brid    d_xfer_end_loop         /* loop */
+       addi    r7, r7, -1              /* c-- (IN DELAY SLOT) */
+
+d_done:
+       rtsd    r15, 8
+       nop
+
+.end memmove
diff --git a/arch/microblaze/lib/memcpy.c b/arch/microblaze/lib/memcpy.c
new file mode 100644 (file)
index 0000000..5880119
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2007 John Williams
+ *
+ * Reasonably optimised generic C-code for memcpy on Microblaze
+ * This is generic C code to do efficient, alignment-aware memcpy.
+ *
+ * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
+ * http://www.embedded.com/showArticle.jhtml?articleID=19205567
+ *
+ * Attempts were made, unsuccesfully, to contact the original
+ * author of this code (Michael Morrow, Intel).  Below is the original
+ * copyright notice.
+ *
+ * This software has been developed by Intel Corporation.
+ * Intel specifically disclaims all warranties, express or
+ * implied, and all liability, including consequential and
+ * other indirect damages, for the use of this program, including
+ * liability for infringement of any proprietary rights,
+ * and including the warranties of merchantability and fitness
+ * for a particular purpose. Intel does not assume any
+ * responsibility for and errors which may appear in this program
+ * not any responsibility to update it.
+ */
+
+#include <linux/types.h>
+#include <linux/stddef.h>
+#include <linux/compiler.h>
+#include <linux/module.h>
+
+#include <linux/string.h>
+#include <asm/system.h>
+
+#ifdef __HAVE_ARCH_MEMCPY
+void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c)
+{
+       const char *src = v_src;
+       char *dst = v_dst;
+#ifndef CONFIG_OPT_LIB_FUNCTION
+       /* Simple, byte oriented memcpy. */
+       while (c--)
+               *dst++ = *src++;
+
+       return v_dst;
+#else
+       /* The following code tries to optimize the copy by using unsigned
+        * alignment. This will work fine if both source and destination are
+        * aligned on the same boundary. However, if they are aligned on
+        * different boundaries shifts will be necessary. This might result in
+        * bad performance on MicroBlaze systems without a barrel shifter.
+        */
+       const uint32_t *i_src;
+       uint32_t *i_dst;
+
+       if (c >= 4) {
+               unsigned  value, buf_hold;
+
+               /* Align the dstination to a word boundry. */
+               /* This is done in an endian independant manner. */
+               switch ((unsigned long)dst & 3) {
+               case 1:
+                       *dst++ = *src++;
+                       --c;
+               case 2:
+                       *dst++ = *src++;
+                       --c;
+               case 3:
+                       *dst++ = *src++;
+                       --c;
+               }
+
+               i_dst = (void *)dst;
+
+               /* Choose a copy scheme based on the source */
+               /* alignment relative to dstination. */
+               switch ((unsigned long)src & 3) {
+               case 0x0:       /* Both byte offsets are aligned */
+                       i_src  = (const void *)src;
+
+                       for (; c >= 4; c -= 4)
+                               *i_dst++ = *i_src++;
+
+                       src  = (const void *)i_src;
+                       break;
+               case 0x1:       /* Unaligned - Off by 1 */
+                       /* Word align the source */
+                       i_src = (const void *) ((unsigned)src & ~3);
+
+                       /* Load the holding buffer */
+                       buf_hold = *i_src++ << 8;
+
+                       for (; c >= 4; c -= 4) {
+                               value = *i_src++;
+                               *i_dst++ = buf_hold | value >> 24;
+                               buf_hold = value << 8;
+                       }
+
+                       /* Realign the source */
+                       src = (const void *)i_src;
+                       src -= 3;
+                       break;
+               case 0x2:       /* Unaligned - Off by 2 */
+                       /* Word align the source */
+                       i_src = (const void *) ((unsigned)src & ~3);
+
+                       /* Load the holding buffer */
+                       buf_hold = *i_src++ << 16;
+
+                       for (; c >= 4; c -= 4) {
+                               value = *i_src++;
+                               *i_dst++ = buf_hold | value >> 16;
+                               buf_hold = value << 16;
+                       }
+
+                       /* Realign the source */
+                       src = (const void *)i_src;
+                       src -= 2;
+                       break;
+               case 0x3:       /* Unaligned - Off by 3 */
+                       /* Word align the source */
+                       i_src = (const void *) ((unsigned)src & ~3);
+
+                       /* Load the holding buffer */
+                       buf_hold = *i_src++ << 24;
+
+                       for (; c >= 4; c -= 4) {
+                               value = *i_src++;
+                               *i_dst++ = buf_hold | value >> 8;
+                               buf_hold = value << 24;
+                       }
+
+                       /* Realign the source */
+                       src = (const void *)i_src;
+                       src -= 1;
+                       break;
+               }
+               dst = (void *)i_dst;
+       }
+
+       /* Finish off any remaining bytes */
+       /* simple fast copy, ... unless a cache boundry is crossed */
+       switch (c) {
+       case 3:
+               *dst++ = *src++;
+       case 2:
+               *dst++ = *src++;
+       case 1:
+               *dst++ = *src++;
+       }
+
+       return v_dst;
+#endif
+}
+EXPORT_SYMBOL(memcpy);
+#endif /* __HAVE_ARCH_MEMCPY */
+
+void *cacheable_memcpy(void *d, const void *s, __kernel_size_t c)
+{
+       return memcpy(d, s, c);
+}
diff --git a/arch/microblaze/lib/memmove.c b/arch/microblaze/lib/memmove.c
new file mode 100644 (file)
index 0000000..d4e9f49
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2007 John Williams
+ *
+ * Reasonably optimised generic C-code for memcpy on Microblaze
+ * This is generic C code to do efficient, alignment-aware memmove.
+ *
+ * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
+ * http://www.embedded.com/showArticle.jhtml?articleID=19205567
+ *
+ * Attempts were made, unsuccesfully, to contact the original
+ * author of this code (Michael Morrow, Intel).  Below is the original
+ * copyright notice.
+ *
+ * This software has been developed by Intel Corporation.
+ * Intel specifically disclaims all warranties, express or
+ * implied, and all liability, including consequential and
+ * other indirect damages, for the use of this program, including
+ * liability for infringement of any proprietary rights,
+ * and including the warranties of merchantability and fitness
+ * for a particular purpose. Intel does not assume any
+ * responsibility for and errors which may appear in this program
+ * not any responsibility to update it.
+ */
+
+#include <linux/types.h>
+#include <linux/stddef.h>
+#include <linux/compiler.h>
+#include <linux/module.h>
+#include <linux/string.h>
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
+{
+       const char *src = v_src;
+       char *dst = v_dst;
+
+#ifdef CONFIG_OPT_LIB_FUNCTION
+       const uint32_t *i_src;
+       uint32_t *i_dst;
+#endif
+
+       if (!c)
+               return v_dst;
+
+       /* Use memcpy when source is higher than dest */
+       if (v_dst <= v_src)
+               return memcpy(v_dst, v_src, c);
+
+#ifndef CONFIG_OPT_LIB_FUNCTION
+       /* copy backwards, from end to beginning */
+       src += c;
+       dst += c;
+
+       /* Simple, byte oriented memmove. */
+       while (c--)
+               *--dst = *--src;
+
+       return v_dst;
+#else
+       /* The following code tries to optimize the copy by using unsigned
+        * alignment. This will work fine if both source and destination are
+        * aligned on the same boundary. However, if they are aligned on
+        * different boundaries shifts will be necessary. This might result in
+        * bad performance on MicroBlaze systems without a barrel shifter.
+        */
+       /* FIXME this part needs more test */
+       /* Do a descending copy - this is a bit trickier! */
+       dst += c;
+       src += c;
+
+       if (c >= 4) {
+               unsigned  value, buf_hold;
+
+               /* Align the destination to a word boundry. */
+               /* This is done in an endian independant manner. */
+
+               switch ((unsigned long)dst & 3) {
+               case 3:
+                       *--dst = *--src;
+                       --c;
+               case 2:
+                       *--dst = *--src;
+                       --c;
+               case 1:
+                       *--dst = *--src;
+                       --c;
+               }
+
+               i_dst = (void *)dst;
+               /* Choose a copy scheme based on the source */
+               /* alignment relative to dstination. */
+               switch ((unsigned long)src & 3) {
+               case 0x0:       /* Both byte offsets are aligned */
+
+                       i_src  = (const void *)src;
+
+                       for (; c >= 4; c -= 4)
+                               *--i_dst = *--i_src;
+
+                       src  = (const void *)i_src;
+                       break;
+               case 0x1:       /* Unaligned - Off by 1 */
+                       /* Word align the source */
+                       i_src = (const void *) (((unsigned)src + 4) & ~3);
+
+                       /* Load the holding buffer */
+                       buf_hold = *--i_src >> 24;
+
+                       for (; c >= 4; c -= 4) {
+                               value = *--i_src;
+                               *--i_dst = buf_hold << 8 | value;
+                               buf_hold = value >> 24;
+                       }
+
+                       /* Realign the source */
+                       src = (const void *)i_src;
+                       src += 1;
+                       break;
+               case 0x2:       /* Unaligned - Off by 2 */
+                       /* Word align the source */
+                       i_src = (const void *) (((unsigned)src + 4) & ~3);
+
+                       /* Load the holding buffer */
+                       buf_hold = *--i_src >> 16;
+
+                       for (; c >= 4; c -= 4) {
+                               value = *--i_src;
+                               *--i_dst = buf_hold << 16 | value;
+                               buf_hold = value >> 16;
+                       }
+
+                       /* Realign the source */
+                       src = (const void *)i_src;
+                       src += 2;
+                       break;
+               case 0x3:       /* Unaligned - Off by 3 */
+                       /* Word align the source */
+                       i_src = (const void *) (((unsigned)src + 4) & ~3);
+
+                       /* Load the holding buffer */
+                       buf_hold = *--i_src >> 8;
+
+                       for (; c >= 4; c -= 4) {
+                               value = *--i_src;
+                               *--i_dst = buf_hold << 24 | value;
+                               buf_hold = value >> 8;
+                       }
+
+                       /* Realign the source */
+                       src = (const void *)i_src;
+                       src += 3;
+                       break;
+               }
+               dst = (void *)i_dst;
+       }
+
+       /* simple fast copy, ... unless a cache boundry is crossed */
+       /* Finish off any remaining bytes */
+       switch (c) {
+       case 4:
+               *--dst = *--src;
+       case 3:
+               *--dst = *--src;
+       case 2:
+               *--dst = *--src;
+       case 1:
+               *--dst = *--src;
+       }
+       return v_dst;
+#endif
+}
+EXPORT_SYMBOL(memmove);
+#endif /* __HAVE_ARCH_MEMMOVE */
diff --git a/arch/microblaze/lib/memset.c b/arch/microblaze/lib/memset.c
new file mode 100644 (file)
index 0000000..941dc8f
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2008-2009 PetaLogix
+ * Copyright (C) 2007 John Williams
+ *
+ * Reasonably optimised generic C-code for memset on Microblaze
+ * This is generic C code to do efficient, alignment-aware memcpy.
+ *
+ * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
+ * http://www.embedded.com/showArticle.jhtml?articleID=19205567
+ *
+ * Attempts were made, unsuccesfully, to contact the original
+ * author of this code (Michael Morrow, Intel).  Below is the original
+ * copyright notice.
+ *
+ * This software has been developed by Intel Corporation.
+ * Intel specifically disclaims all warranties, express or
+ * implied, and all liability, including consequential and
+ * other indirect damages, for the use of this program, including
+ * liability for infringement of any proprietary rights,
+ * and including the warranties of merchantability and fitness
+ * for a particular purpose. Intel does not assume any
+ * responsibility for and errors which may appear in this program
+ * not any responsibility to update it.
+ */
+
+#include <linux/types.h>
+#include <linux/stddef.h>
+#include <linux/compiler.h>
+#include <linux/module.h>
+#include <linux/string.h>
+
+#ifdef __HAVE_ARCH_MEMSET
+void *memset(void *v_src, int c, __kernel_size_t n)
+{
+
+       char *src = v_src;
+#ifdef CONFIG_OPT_LIB_FUNCTION
+       uint32_t *i_src;
+       uint32_t w32;
+#endif
+       /* Truncate c to 8 bits */
+       c = (c & 0xFF);
+
+#ifdef CONFIG_OPT_LIB_FUNCTION
+       /* Make a repeating word out of it */
+       w32 = c;
+       w32 |= w32 << 8;
+       w32 |= w32 << 16;
+
+       if (n >= 4) {
+               /* Align the destination to a word boundary */
+               /* This is done in an endian independant manner */
+               switch ((unsigned) src & 3) {
+               case 1:
+                       *src++ = c;
+                       --n;
+               case 2:
+                       *src++ = c;
+                       --n;
+               case 3:
+                       *src++ = c;
+                       --n;
+               }
+
+               i_src  = (void *)src;
+
+               /* Do as many full-word copies as we can */
+               for (; n >= 4; n -= 4)
+                       *i_src++ = w32;
+
+               src  = (void *)i_src;
+       }
+#endif
+       /* Simple, byte oriented memset or the rest of count. */
+       while (n--)
+               *src++ = c;
+
+       return v_src;
+}
+EXPORT_SYMBOL(memset);
+#endif /* __HAVE_ARCH_MEMSET */
diff --git a/arch/microblaze/lib/uaccess.c b/arch/microblaze/lib/uaccess.c
new file mode 100644 (file)
index 0000000..8eb9df5
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/string.h>
+#include <asm/uaccess.h>
+
+#include <asm/bug.h>
+
+long strnlen_user(const char __user *src, long count)
+{
+       return strlen(src) + 1;
+}
+
+#define __do_strncpy_from_user(dst, src, count, res)                   \
+       do {                                                            \
+               char *tmp;                                              \
+               strncpy(dst, src, count);                               \
+               for (tmp = dst; *tmp && count > 0; tmp++, count--)      \
+                       ;                                               \
+               res = (tmp - dst);                                      \
+       } while (0)
+
+long __strncpy_from_user(char *dst, const char __user *src, long count)
+{
+       long res;
+       __do_strncpy_from_user(dst, src, count, res);
+       return res;
+}
+
+long strncpy_from_user(char *dst, const char __user *src, long count)
+{
+       long res = -EFAULT;
+       if (access_ok(VERIFY_READ, src, 1))
+               __do_strncpy_from_user(dst, src, count, res);
+       return res;
+}
diff --git a/arch/microblaze/mm/Makefile b/arch/microblaze/mm/Makefile
new file mode 100644 (file)
index 0000000..bf9e447
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# Makefile
+#
+
+obj-y := init.o
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
new file mode 100644 (file)
index 0000000..b0c8213
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * 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.
+ */
+
+#include <linux/bootmem.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/lmb.h>
+#include <linux/mm.h> /* mem_init */
+#include <linux/initrd.h>
+#include <linux/pagemap.h>
+#include <linux/pfn.h>
+#include <linux/swap.h>
+
+#include <asm/page.h>
+#include <asm/mmu_context.h>
+#include <asm/pgalloc.h>
+#include <asm/sections.h>
+#include <asm/tlb.h>
+
+unsigned int __page_offset;
+/* EXPORT_SYMBOL(__page_offset); */
+
+char *klimit = _end;
+
+/*
+ * Initialize the bootmem system and give it all the memory we
+ * have available.
+ */
+unsigned int memory_start;
+unsigned int memory_end; /* due to mm/nommu.c */
+unsigned int memory_size;
+
+/*
+ * paging_init() sets up the page tables - in fact we've already done this.
+ */
+static void __init paging_init(void)
+{
+       int i;
+       unsigned long zones_size[MAX_NR_ZONES];
+
+       /*
+        * old: we can DMA to/from any address.put all page into ZONE_DMA
+        * We use only ZONE_NORMAL
+        */
+       zones_size[ZONE_NORMAL] = max_mapnr;
+
+       /* every other zones are empty */
+       for (i = 1; i < MAX_NR_ZONES; i++)
+               zones_size[i] = 0;
+
+       free_area_init(zones_size);
+}
+
+void __init setup_memory(void)
+{
+       int i;
+       unsigned long map_size;
+       u32 kernel_align_start, kernel_align_size;
+
+       /* Find main memory where is the kernel */
+       for (i = 0; i < lmb.memory.cnt; i++) {
+               memory_start = (u32) lmb.memory.region[i].base;
+               memory_end = (u32) lmb.memory.region[i].base
+                               + (u32) lmb.memory.region[i].size;
+               if ((memory_start <= (u32)_text) &&
+                                       ((u32)_text <= memory_end)) {
+                       memory_size = memory_end - memory_start;
+                       PAGE_OFFSET = memory_start;
+                       printk(KERN_INFO "%s: Main mem: 0x%x-0x%x, "
+                               "size 0x%08x\n", __func__, memory_start,
+                                               memory_end, memory_size);
+                       break;
+               }
+       }
+
+       if (!memory_start || !memory_end) {
+               panic("%s: Missing memory setting 0x%08x-0x%08x\n",
+                       __func__, memory_start, memory_end);
+       }
+
+       /* reservation of region where is the kernel */
+       kernel_align_start = PAGE_DOWN((u32)_text);
+       /* ALIGN can be remove because _end in vmlinux.lds.S is align */
+       kernel_align_size = PAGE_UP((u32)klimit) - kernel_align_start;
+       lmb_reserve(kernel_align_start, kernel_align_size);
+       printk(KERN_INFO "%s: kernel addr=0x%08x-0x%08x size=0x%08x\n",
+               __func__, kernel_align_start, kernel_align_start
+                       + kernel_align_size, kernel_align_size);
+
+       /*
+        * Kernel:
+        * start: base phys address of kernel - page align
+        * end: base phys address of kernel - page align
+        *
+        * min_low_pfn - the first page (mm/bootmem.c - node_boot_start)
+        * max_low_pfn
+        * max_mapnr - the first unused page (mm/bootmem.c - node_low_pfn)
+        * num_physpages - number of all pages
+        */
+
+       /* memory start is from the kernel end (aligned) to higher addr */
+       min_low_pfn = memory_start >> PAGE_SHIFT; /* minimum for allocation */
+       /* RAM is assumed contiguous */
+       num_physpages = max_mapnr = memory_size >> PAGE_SHIFT;
+       max_pfn = max_low_pfn = memory_end >> PAGE_SHIFT;
+
+       printk(KERN_INFO "%s: max_mapnr: %#lx\n", __func__, max_mapnr);
+       printk(KERN_INFO "%s: min_low_pfn: %#lx\n", __func__, min_low_pfn);
+       printk(KERN_INFO "%s: max_low_pfn: %#lx\n", __func__, max_low_pfn);
+
+       /*
+        * Find an area to use for the bootmem bitmap.
+        * We look for the first area which is at least
+        * 128kB in length (128kB is enough for a bitmap
+        * for 4GB of memory, using 4kB pages), plus 1 page
+        * (in case the address isn't page-aligned).
+        */
+       map_size = init_bootmem_node(NODE_DATA(0), PFN_UP(TOPHYS((u32)_end)),
+                                       min_low_pfn, max_low_pfn);
+
+       lmb_reserve(PFN_UP(TOPHYS((u32)_end)) << PAGE_SHIFT, map_size);
+
+       /* free bootmem is whole main memory */
+       free_bootmem(memory_start, memory_size);
+
+       /* reserve allocate blocks */
+       for (i = 0; i < lmb.reserved.cnt; i++) {
+               pr_debug("reserved %d - 0x%08x-0x%08x\n", i,
+                       (u32) lmb.reserved.region[i].base,
+                       (u32) lmb_size_bytes(&lmb.reserved, i));
+               reserve_bootmem(lmb.reserved.region[i].base,
+                       lmb_size_bytes(&lmb.reserved, i) - 1, BOOTMEM_DEFAULT);
+       }
+       paging_init();
+}
+
+void free_init_pages(char *what, unsigned long begin, unsigned long end)
+{
+       unsigned long addr;
+
+       for (addr = begin; addr < end; addr += PAGE_SIZE) {
+               ClearPageReserved(virt_to_page(addr));
+               init_page_count(virt_to_page(addr));
+               memset((void *)addr, 0xcc, PAGE_SIZE);
+               free_page(addr);
+               totalram_pages++;
+       }
+       printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
+}
+
+#ifdef CONFIG_BLK_DEV_INITRD
+void free_initrd_mem(unsigned long start, unsigned long end)
+{
+       int pages = 0;
+       for (; start < end; start += PAGE_SIZE) {
+               ClearPageReserved(virt_to_page(start));
+               init_page_count(virt_to_page(start));
+               free_page(start);
+               totalram_pages++;
+               pages++;
+       }
+       printk(KERN_NOTICE "Freeing initrd memory: %dk freed\n", pages);
+}
+#endif
+
+void free_initmem(void)
+{
+       free_init_pages("unused kernel memory",
+                       (unsigned long)(&__init_begin),
+                       (unsigned long)(&__init_end));
+}
+
+/* FIXME from arch/powerpc/mm/mem.c*/
+void show_mem(void)
+{
+       printk(KERN_NOTICE "%s\n", __func__);
+}
+
+void __init mem_init(void)
+{
+       high_memory = (void *)__va(memory_end);
+       /* this will put all memory onto the freelists */
+       totalram_pages += free_all_bootmem();
+
+       printk(KERN_INFO "Memory: %luk/%luk available\n",
+              (unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
+              num_physpages << (PAGE_SHIFT-10));
+}
+
+/* Check against bounds of physical memory */
+int ___range_ok(unsigned long addr, unsigned long size)
+{
+       return ((addr < memory_start) ||
+               ((addr + size) > memory_end));
+}
diff --git a/arch/microblaze/platform/Kconfig.platform b/arch/microblaze/platform/Kconfig.platform
new file mode 100644 (file)
index 0000000..8e9b475
--- /dev/null
@@ -0,0 +1,85 @@
+# For a description of the syntax of this configuration file,
+# see Documentation/kbuild/kconfig-language.txt.
+#
+# Platform selection Kconfig menu for MicroBlaze targets
+#
+
+menu "Platform options"
+choice
+       prompt "Platform"
+       default PLATFORM_MICROBLAZE_AUTO
+       help
+         Choose which hardware board/platform you are targeting.
+
+config PLATFORM_GENERIC
+       bool "Generic"
+       help
+         Choose this option for the Generic platform.
+
+endchoice
+
+config SELFMOD
+       bool "Use self modified code for intc/timer"
+       depends on EXPERIMENTAL && NO_MMU
+       default n
+       help
+         This choice enables self-modified code for interrupt controller
+         and timer.
+
+config SELFMOD_INTC
+       bool "Use self modified code for intc"
+       depends on SELFMOD
+       default y
+       help
+         This choice enables self-modified code for interrupt controller.
+
+config SELFMOD_TIMER
+       bool "Use self modified code for timer"
+       depends on SELFMOD
+       default y
+       help
+         This choice enables self-modified code for timer.
+
+config OPT_LIB_FUNCTION
+       bool "Optimalized lib function"
+       default y
+       help
+         Allows turn on optimalized library function (memcpy and memmove).
+         They are optimized by using word alignment. This will work
+         fine if both source and destination are aligned on the same
+         boundary. However, if they are aligned on different boundaries
+         shifts will be necessary. This might result in bad performance
+         on MicroBlaze systems without a barrel shifter.
+
+config OPT_LIB_ASM
+       bool "Optimalized lib function ASM"
+       depends on OPT_LIB_FUNCTION
+       default n
+       help
+         Allows turn on optimalized library function (memcpy and memmove).
+         Function are written in asm code.
+
+# This is still a bit broken - disabling for now JW 20070504
+config ALLOW_EDIT_AUTO
+       bool "Permit Display/edit of Kconfig.auto platform settings"
+       default n
+       help
+         Allows the editing of auto-generated platform settings from
+         the Kconfig.auto file. Obviously this does not change the
+         underlying hardware, so be very careful if you go editing
+         these settings.
+
+         Also, if you enable this, and edit various Kconfig.auto
+         settings, YOUR CHANGES WILL BE LOST if you then disable it
+         again. You have been warned!
+
+         If unsure, say no.
+
+comment "Automatic platform settings from Kconfig.auto"
+       depends on ALLOW_EDIT_AUTO
+
+if PLATFORM_GENERIC=y
+       source "arch/microblaze/platform/generic/Kconfig.auto"
+endif
+
+endmenu
diff --git a/arch/microblaze/platform/Makefile b/arch/microblaze/platform/Makefile
new file mode 100644 (file)
index 0000000..ea1b75c
--- /dev/null
@@ -0,0 +1,6 @@
+#
+# Makefile for arch/microblaze/platform directory
+#
+#obj-$(CONFIG_PLATFORM_GENERIC) += generic/
+
+obj-y  += platform.o
diff --git a/arch/microblaze/platform/generic/Kconfig.auto b/arch/microblaze/platform/generic/Kconfig.auto
new file mode 100644 (file)
index 0000000..fbca22d
--- /dev/null
@@ -0,0 +1,62 @@
+#
+# (C) Copyright 2007 Michal Simek
+#
+# Michal SIMEK <monstr@monstr.eu>
+#
+# 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
+#
+
+# Definitions for MICROBLAZE0
+comment "Definitions for MICROBLAZE0"
+       depends on ALLOW_EDIT_AUTO
+
+config KERNEL_BASE_ADDR
+       hex "Physical address where Linux Kernel is"
+       default "0x90000000"
+       help
+         BASE Address for kernel
+
+config XILINX_MICROBLAZE0_FAMILY
+       string "Targetted FPGA family" if ALLOW_EDIT_AUTO
+       default "virtex5"
+
+config XILINX_MICROBLAZE0_USE_MSR_INSTR
+       int "USE_MSR_INSTR range (0:1)" if ALLOW_EDIT_AUTO
+       default 1
+
+config XILINX_MICROBLAZE0_USE_PCMP_INSTR
+       int "USE_PCMP_INSTR range (0:1)" if ALLOW_EDIT_AUTO
+       default 1
+
+config XILINX_MICROBLAZE0_USE_BARREL
+       int "USE_BARREL range (0:1)" if ALLOW_EDIT_AUTO
+       default 1
+
+config XILINX_MICROBLAZE0_USE_DIV
+       int "USE_DIV range (0:1)" if ALLOW_EDIT_AUTO
+       default 1
+
+config XILINX_MICROBLAZE0_USE_HW_MUL
+       int "USE_HW_MUL values (0=NONE, 1=MUL32, 2=MUL64)" if ALLOW_EDIT_AUTO
+       default 2
+
+config XILINX_MICROBLAZE0_USE_FPU
+       int "USE_FPU values (0=NONE, 1=BASIC, 2=EXTENDED)" if ALLOW_EDIT_AUTO
+       default 2
+
+config XILINX_MICROBLAZE0_HW_VER
+       string "Core version number" if ALLOW_EDIT_AUTO
+       default 7.10.d
diff --git a/arch/microblaze/platform/generic/Makefile b/arch/microblaze/platform/generic/Makefile
new file mode 100644 (file)
index 0000000..9a8b1bd
--- /dev/null
@@ -0,0 +1,3 @@
+#
+# Empty Makefile to keep make clean happy
+#
diff --git a/arch/microblaze/platform/generic/system.dts b/arch/microblaze/platform/generic/system.dts
new file mode 100644 (file)
index 0000000..29993f6
--- /dev/null
@@ -0,0 +1,332 @@
+/*
+ * Device Tree Generator version: 1.1
+ *
+ * (C) Copyright 2007-2008 Xilinx, Inc.
+ * (C) Copyright 2007-2009 Michal Simek
+ *
+ * Michal SIMEK <monstr@monstr.eu>
+ *
+ * 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
+ *
+ * CAUTION: This file is automatically generated by libgen.
+ * Version: Xilinx EDK 10.1.03 EDK_K_SP3.6
+ *
+ * XPS project directory: Xilinx-ML505-ll_temac-sgdma-MMU-FDT-edk101
+ */
+
+/dts-v1/;
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+       compatible = "xlnx,microblaze";
+       model = "testing";
+       DDR2_SDRAM: memory@90000000 {
+               device_type = "memory";
+               reg = < 0x90000000 0x10000000 >;
+       } ;
+       chosen {
+               bootargs = "console=ttyUL0,115200 highres=on";
+               linux,stdout-path = "/plb@0/serial@84000000";
+       } ;
+       cpus {
+               #address-cells = <1>;
+               #cpus = <0x1>;
+               #size-cells = <0>;
+               microblaze_0: cpu@0 {
+                       clock-frequency = <125000000>;
+                       compatible = "xlnx,microblaze-7.10.d";
+                       d-cache-baseaddr = <0x90000000>;
+                       d-cache-highaddr = <0x9fffffff>;
+                       d-cache-line-size = <0x10>;
+                       d-cache-size = <0x2000>;
+                       device_type = "cpu";
+                       i-cache-baseaddr = <0x90000000>;
+                       i-cache-highaddr = <0x9fffffff>;
+                       i-cache-line-size = <0x10>;
+                       i-cache-size = <0x2000>;
+                       model = "microblaze,7.10.d";
+                       reg = <0>;
+                       timebase-frequency = <125000000>;
+                       xlnx,addr-tag-bits = <0xf>;
+                       xlnx,allow-dcache-wr = <0x1>;
+                       xlnx,allow-icache-wr = <0x1>;
+                       xlnx,area-optimized = <0x0>;
+                       xlnx,cache-byte-size = <0x2000>;
+                       xlnx,d-lmb = <0x1>;
+                       xlnx,d-opb = <0x0>;
+                       xlnx,d-plb = <0x1>;
+                       xlnx,data-size = <0x20>;
+                       xlnx,dcache-addr-tag = <0xf>;
+                       xlnx,dcache-always-used = <0x1>;
+                       xlnx,dcache-byte-size = <0x2000>;
+                       xlnx,dcache-line-len = <0x4>;
+                       xlnx,dcache-use-fsl = <0x1>;
+                       xlnx,debug-enabled = <0x1>;
+                       xlnx,div-zero-exception = <0x1>;
+                       xlnx,dopb-bus-exception = <0x0>;
+                       xlnx,dynamic-bus-sizing = <0x1>;
+                       xlnx,edge-is-positive = <0x1>;
+                       xlnx,family = "virtex5";
+                       xlnx,fpu-exception = <0x1>;
+                       xlnx,fsl-data-size = <0x20>;
+                       xlnx,fsl-exception = <0x0>;
+                       xlnx,fsl-links = <0x0>;
+                       xlnx,i-lmb = <0x1>;
+                       xlnx,i-opb = <0x0>;
+                       xlnx,i-plb = <0x1>;
+                       xlnx,icache-always-used = <0x1>;
+                       xlnx,icache-line-len = <0x4>;
+                       xlnx,icache-use-fsl = <0x1>;
+                       xlnx,ill-opcode-exception = <0x1>;
+                       xlnx,instance = "microblaze_0";
+                       xlnx,interconnect = <0x1>;
+                       xlnx,interrupt-is-edge = <0x0>;
+                       xlnx,iopb-bus-exception = <0x0>;
+                       xlnx,mmu-dtlb-size = <0x4>;
+                       xlnx,mmu-itlb-size = <0x2>;
+                       xlnx,mmu-tlb-access = <0x3>;
+                       xlnx,mmu-zones = <0x10>;
+                       xlnx,number-of-pc-brk = <0x1>;
+                       xlnx,number-of-rd-addr-brk = <0x0>;
+                       xlnx,number-of-wr-addr-brk = <0x0>;
+                       xlnx,opcode-0x0-illegal = <0x1>;
+                       xlnx,pvr = <0x2>;
+                       xlnx,pvr-user1 = <0x0>;
+                       xlnx,pvr-user2 = <0x0>;
+                       xlnx,reset-msr = <0x0>;
+                       xlnx,sco = <0x0>;
+                       xlnx,unaligned-exceptions = <0x1>;
+                       xlnx,use-barrel = <0x1>;
+                       xlnx,use-dcache = <0x1>;
+                       xlnx,use-div = <0x1>;
+                       xlnx,use-ext-brk = <0x1>;
+                       xlnx,use-ext-nm-brk = <0x1>;
+                       xlnx,use-extended-fsl-instr = <0x0>;
+                       xlnx,use-fpu = <0x2>;
+                       xlnx,use-hw-mul = <0x2>;
+                       xlnx,use-icache = <0x1>;
+                       xlnx,use-interrupt = <0x1>;
+                       xlnx,use-mmu = <0x3>;
+                       xlnx,use-msr-instr = <0x1>;
+                       xlnx,use-pcmp-instr = <0x1>;
+               } ;
+       } ;
+       mb_plb: plb@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
+               ranges ;
+               FLASH: flash@a0000000 {
+                       bank-width = <2>;
+                       compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
+                       reg = < 0xa0000000 0x2000000 >;
+                       xlnx,family = "virtex5";
+                       xlnx,include-datawidth-matching-0 = <0x1>;
+                       xlnx,include-datawidth-matching-1 = <0x0>;
+                       xlnx,include-datawidth-matching-2 = <0x0>;
+                       xlnx,include-datawidth-matching-3 = <0x0>;
+                       xlnx,include-negedge-ioregs = <0x0>;
+                       xlnx,include-plb-ipif = <0x1>;
+                       xlnx,include-wrbuf = <0x1>;
+                       xlnx,max-mem-width = <0x10>;
+                       xlnx,mch-native-dwidth = <0x20>;
+                       xlnx,mch-plb-clk-period-ps = <0x1f40>;
+                       xlnx,mch-splb-awidth = <0x20>;
+                       xlnx,mch0-accessbuf-depth = <0x10>;
+                       xlnx,mch0-protocol = <0x0>;
+                       xlnx,mch0-rddatabuf-depth = <0x10>;
+                       xlnx,mch1-accessbuf-depth = <0x10>;
+                       xlnx,mch1-protocol = <0x0>;
+                       xlnx,mch1-rddatabuf-depth = <0x10>;
+                       xlnx,mch2-accessbuf-depth = <0x10>;
+                       xlnx,mch2-protocol = <0x0>;
+                       xlnx,mch2-rddatabuf-depth = <0x10>;
+                       xlnx,mch3-accessbuf-depth = <0x10>;
+                       xlnx,mch3-protocol = <0x0>;
+                       xlnx,mch3-rddatabuf-depth = <0x10>;
+                       xlnx,mem0-width = <0x10>;
+                       xlnx,mem1-width = <0x20>;
+                       xlnx,mem2-width = <0x20>;
+                       xlnx,mem3-width = <0x20>;
+                       xlnx,num-banks-mem = <0x1>;
+                       xlnx,num-channels = <0x0>;
+                       xlnx,priority-mode = <0x0>;
+                       xlnx,synch-mem-0 = <0x0>;
+                       xlnx,synch-mem-1 = <0x0>;
+                       xlnx,synch-mem-2 = <0x0>;
+                       xlnx,synch-mem-3 = <0x0>;
+                       xlnx,synch-pipedelay-0 = <0x2>;
+                       xlnx,synch-pipedelay-1 = <0x2>;
+                       xlnx,synch-pipedelay-2 = <0x2>;
+                       xlnx,synch-pipedelay-3 = <0x2>;
+                       xlnx,tavdv-ps-mem-0 = <0x1adb0>;
+                       xlnx,tavdv-ps-mem-1 = <0x3a98>;
+                       xlnx,tavdv-ps-mem-2 = <0x3a98>;
+                       xlnx,tavdv-ps-mem-3 = <0x3a98>;
+                       xlnx,tcedv-ps-mem-0 = <0x1adb0>;
+                       xlnx,tcedv-ps-mem-1 = <0x3a98>;
+                       xlnx,tcedv-ps-mem-2 = <0x3a98>;
+                       xlnx,tcedv-ps-mem-3 = <0x3a98>;
+                       xlnx,thzce-ps-mem-0 = <0x88b8>;
+                       xlnx,thzce-ps-mem-1 = <0x1b58>;
+                       xlnx,thzce-ps-mem-2 = <0x1b58>;
+                       xlnx,thzce-ps-mem-3 = <0x1b58>;
+                       xlnx,thzoe-ps-mem-0 = <0x1b58>;
+                       xlnx,thzoe-ps-mem-1 = <0x1b58>;
+                       xlnx,thzoe-ps-mem-2 = <0x1b58>;
+                       xlnx,thzoe-ps-mem-3 = <0x1b58>;
+                       xlnx,tlzwe-ps-mem-0 = <0x88b8>;
+                       xlnx,tlzwe-ps-mem-1 = <0x0>;
+                       xlnx,tlzwe-ps-mem-2 = <0x0>;
+                       xlnx,tlzwe-ps-mem-3 = <0x0>;
+                       xlnx,twc-ps-mem-0 = <0x2af8>;
+                       xlnx,twc-ps-mem-1 = <0x3a98>;
+                       xlnx,twc-ps-mem-2 = <0x3a98>;
+                       xlnx,twc-ps-mem-3 = <0x3a98>;
+                       xlnx,twp-ps-mem-0 = <0x11170>;
+                       xlnx,twp-ps-mem-1 = <0x2ee0>;
+                       xlnx,twp-ps-mem-2 = <0x2ee0>;
+                       xlnx,twp-ps-mem-3 = <0x2ee0>;
+                       xlnx,xcl0-linesize = <0x4>;
+                       xlnx,xcl0-writexfer = <0x1>;
+                       xlnx,xcl1-linesize = <0x4>;
+                       xlnx,xcl1-writexfer = <0x1>;
+                       xlnx,xcl2-linesize = <0x4>;
+                       xlnx,xcl2-writexfer = <0x1>;
+                       xlnx,xcl3-linesize = <0x4>;
+                       xlnx,xcl3-writexfer = <0x1>;
+               } ;
+               Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "xlnx,compound";
+                       ethernet@81c00000 {
+                               compatible = "xlnx,xps-ll-temac-1.01.b";
+                               device_type = "network";
+                               interrupt-parent = <&xps_intc_0>;
+                               interrupts = < 5 2 >;
+                               llink-connected = <&PIM3>;
+                               local-mac-address = [ 02 00 00 00 00 00 ];
+                               reg = < 0x81c00000 0x40 >;
+                               xlnx,bus2core-clk-ratio = <0x1>;
+                               xlnx,phy-type = <0x1>;
+                               xlnx,phyaddr = <0x1>;
+                               xlnx,rxcsum = <0x0>;
+                               xlnx,rxfifo = <0x1000>;
+                               xlnx,temac-type = <0x0>;
+                               xlnx,txcsum = <0x0>;
+                               xlnx,txfifo = <0x1000>;
+                       } ;
+               } ;
+               IIC_EEPROM: i2c@81600000 {
+                       compatible = "xlnx,xps-iic-2.00.a";
+                       interrupt-parent = <&xps_intc_0>;
+                       interrupts = < 6 2 >;
+                       reg = < 0x81600000 0x10000 >;
+                       xlnx,clk-freq = <0x7735940>;
+                       xlnx,family = "virtex5";
+                       xlnx,gpo-width = <0x1>;
+                       xlnx,iic-freq = <0x186a0>;
+                       xlnx,scl-inertial-delay = <0x0>;
+                       xlnx,sda-inertial-delay = <0x0>;
+                       xlnx,ten-bit-adr = <0x0>;
+               } ;
+               LEDs_8Bit: gpio@81400000 {
+                       compatible = "xlnx,xps-gpio-1.00.a";
+                       interrupt-parent = <&xps_intc_0>;
+                       interrupts = < 7 2 >;
+                       reg = < 0x81400000 0x10000 >;
+                       xlnx,all-inputs = <0x0>;
+                       xlnx,all-inputs-2 = <0x0>;
+                       xlnx,dout-default = <0x0>;
+                       xlnx,dout-default-2 = <0x0>;
+                       xlnx,family = "virtex5";
+                       xlnx,gpio-width = <0x8>;
+                       xlnx,interrupt-present = <0x1>;
+                       xlnx,is-bidir = <0x1>;
+                       xlnx,is-bidir-2 = <0x1>;
+                       xlnx,is-dual = <0x0>;
+                       xlnx,tri-default = <0xffffffff>;
+                       xlnx,tri-default-2 = <0xffffffff>;
+               } ;
+               RS232_Uart_1: serial@84000000 {
+                       clock-frequency = <125000000>;
+                       compatible = "xlnx,xps-uartlite-1.00.a";
+                       current-speed = <115200>;
+                       device_type = "serial";
+                       interrupt-parent = <&xps_intc_0>;
+                       interrupts = < 8 0 >;
+                       port-number = <0>;
+                       reg = < 0x84000000 0x10000 >;
+                       xlnx,baudrate = <0x1c200>;
+                       xlnx,data-bits = <0x8>;
+                       xlnx,family = "virtex5";
+                       xlnx,odd-parity = <0x0>;
+                       xlnx,use-parity = <0x0>;
+               } ;
+               SysACE_CompactFlash: sysace@83600000 {
+                       compatible = "xlnx,xps-sysace-1.00.a";
+                       interrupt-parent = <&xps_intc_0>;
+                       interrupts = < 4 2 >;
+                       reg = < 0x83600000 0x10000 >;
+                       xlnx,family = "virtex5";
+                       xlnx,mem-width = <0x10>;
+               } ;
+               debug_module: debug@84400000 {
+                       compatible = "xlnx,mdm-1.00.d";
+                       reg = < 0x84400000 0x10000 >;
+                       xlnx,family = "virtex5";
+                       xlnx,interconnect = <0x1>;
+                       xlnx,jtag-chain = <0x2>;
+                       xlnx,mb-dbg-ports = <0x1>;
+                       xlnx,uart-width = <0x8>;
+                       xlnx,use-uart = <0x1>;
+                       xlnx,write-fsl-ports = <0x0>;
+               } ;
+               mpmc@90000000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "xlnx,mpmc-4.02.a";
+                       PIM3: sdma@84600180 {
+                               compatible = "xlnx,ll-dma-1.00.a";
+                               interrupt-parent = <&xps_intc_0>;
+                               interrupts = < 2 2 1 2 >;
+                               reg = < 0x84600180 0x80 >;
+                       } ;
+               } ;
+               xps_intc_0: interrupt-controller@81800000 {
+                       #interrupt-cells = <0x2>;
+                       compatible = "xlnx,xps-intc-1.00.a";
+                       interrupt-controller ;
+                       reg = < 0x81800000 0x10000 >;
+                       xlnx,kind-of-intr = <0x100>;
+                       xlnx,num-intr-inputs = <0x9>;
+               } ;
+               xps_timer_1: timer@83c00000 {
+                       compatible = "xlnx,xps-timer-1.00.a";
+                       interrupt-parent = <&xps_intc_0>;
+                       interrupts = < 3 2 >;
+                       reg = < 0x83c00000 0x10000 >;
+                       xlnx,count-width = <0x20>;
+                       xlnx,family = "virtex5";
+                       xlnx,gen0-assert = <0x1>;
+                       xlnx,gen1-assert = <0x1>;
+                       xlnx,one-timer-only = <0x0>;
+                       xlnx,trig0-assert = <0x1>;
+                       xlnx,trig1-assert = <0x1>;
+               } ;
+       } ;
+}  ;
diff --git a/arch/microblaze/platform/platform.c b/arch/microblaze/platform/platform.c
new file mode 100644 (file)
index 0000000..56e0234
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2008 Michal Simek <monstr@monstr.eu>
+ *
+ * based on virtex.c file
+ *
+ * Copyright 2007 Secret Lab Technologies Ltd.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2. This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include <linux/init.h>
+#include <linux/of_platform.h>
+#include <asm/prom.h>
+
+static struct of_device_id xilinx_of_bus_ids[] __initdata = {
+       { .compatible = "simple-bus", },
+       { .compatible = "xlnx,plb-v46-1.00.a", },
+       { .compatible = "xlnx,opb-v20-1.10.c", },
+       { .compatible = "xlnx,opb-v20-1.10.b", },
+       { .compatible = "xlnx,compound", },
+       {}
+};
+
+static int __init microblaze_device_probe(void)
+{
+       of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
+       return 0;
+}
+device_initcall(microblaze_device_probe);
index 6673a28ec07adbffdffe1fb602a9f2f61c4f1d5e..dd0c8ff52a682b6c622bdc3cd9be939760c0b561 100644 (file)
@@ -94,42 +94,8 @@ ifdef CONFIG_DEBUG_INFO
 KBUILD_AFLAGS  += -Wa,--gdwarf2
 endif
 
-###################################################################################################
 #
-# juggle some symlinks in the MN10300 asm include dir
+# include the appropriate processor- and unit-specific headers
 #
-#      Update machine proc and unit symlinks if something which affects
-#      them changed.  We use .proc / .unit to indicate when they were
-#      updated last, otherwise make uses the target directory mtime.
-#
-###################################################################################################
-
-# processor specific definitions
-include/asm-mn10300/.proc: $(wildcard include/config/proc/*.h) include/config/auto.conf
-       @echo '  SYMLINK include/asm-mn10300/proc -> include/asm-mn10300/proc-$(PROCESSOR)'
-ifneq ($(KBUILD_SRC),)
-       $(Q)mkdir -p include/asm-mn10300
-       $(Q)ln -fsn $(srctree)/include/asm-mn10300/proc-$(PROCESSOR) include/asm-mn10300/proc
-else
-       $(Q)ln -fsn proc-$(PROCESSOR) include/asm-mn10300/proc
-endif
-       @touch $@
-
-CLEAN_FILES += include/asm-mn10300/proc include/asm-mn10300/.proc
-
-prepare: include/asm-mn10300/.proc
-
-# unit specific definitions
-include/asm-mn10300/.unit: $(wildcard include/config/unit/*.h) include/config/auto.conf
-       @echo '  SYMLINK include/asm-mn10300/unit -> include/asm-mn10300/unit-$(UNIT)'
-ifneq ($(KBUILD_SRC),)
-       $(Q)mkdir -p include/asm-mn10300
-       $(Q)ln -fsn $(srctree)/include/asm-mn10300/unit-$(UNIT) include/asm-mn10300/unit
-else
-       $(Q)ln -fsn unit-$(UNIT) include/asm-mn10300/unit
-endif
-       @touch $@
-
-CLEAN_FILES += include/asm-mn10300/unit include/asm-mn10300/.unit
-
-prepare: include/asm-mn10300/.unit
+KBUILD_CPPFLAGS += -I$(srctree)/arch/mn10300/proc-$(PROCESSOR)/include
+KBUILD_CPPFLAGS += -I$(srctree)/arch/mn10300/unit-$(UNIT)/include
diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild
new file mode 100644 (file)
index 0000000..c68e168
--- /dev/null
@@ -0,0 +1 @@
+include include/asm-generic/Kbuild.asm
diff --git a/arch/mn10300/include/asm/atomic.h b/arch/mn10300/include/asm/atomic.h
new file mode 100644 (file)
index 0000000..bc06482
--- /dev/null
@@ -0,0 +1,157 @@
+/* MN10300 Atomic counter operations
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_ATOMIC_H
+#define _ASM_ATOMIC_H
+
+#ifdef CONFIG_SMP
+#error not SMP safe
+#endif
+
+/*
+ * Atomic operations that C can't guarantee us.  Useful for
+ * resource counting etc..
+ */
+
+#define ATOMIC_INIT(i) { (i) }
+
+#ifdef __KERNEL__
+
+/**
+ * atomic_read - read atomic variable
+ * @v: pointer of type atomic_t
+ *
+ * Atomically reads the value of @v.  Note that the guaranteed
+ * useful range of an atomic_t is only 24 bits.
+ */
+#define atomic_read(v) ((v)->counter)
+
+/**
+ * atomic_set - set atomic variable
+ * @v: pointer of type atomic_t
+ * @i: required value
+ *
+ * Atomically sets the value of @v to @i.  Note that the guaranteed
+ * useful range of an atomic_t is only 24 bits.
+ */
+#define atomic_set(v, i) (((v)->counter) = (i))
+
+#include <asm/system.h>
+
+/**
+ * atomic_add_return - add integer to atomic variable
+ * @i: integer value to add
+ * @v: pointer of type atomic_t
+ *
+ * Atomically adds @i to @v and returns the result
+ * Note that the guaranteed useful range of an atomic_t is only 24 bits.
+ */
+static inline int atomic_add_return(int i, atomic_t *v)
+{
+       unsigned long flags;
+       int temp;
+
+       local_irq_save(flags);
+       temp = v->counter;
+       temp += i;
+       v->counter = temp;
+       local_irq_restore(flags);
+
+       return temp;
+}
+
+/**
+ * atomic_sub_return - subtract integer from atomic variable
+ * @i: integer value to subtract
+ * @v: pointer of type atomic_t
+ *
+ * Atomically subtracts @i from @v and returns the result
+ * Note that the guaranteed useful range of an atomic_t is only 24 bits.
+ */
+static inline int atomic_sub_return(int i, atomic_t *v)
+{
+       unsigned long flags;
+       int temp;
+
+       local_irq_save(flags);
+       temp = v->counter;
+       temp -= i;
+       v->counter = temp;
+       local_irq_restore(flags);
+
+       return temp;
+}
+
+static inline int atomic_add_negative(int i, atomic_t *v)
+{
+       return atomic_add_return(i, v) < 0;
+}
+
+static inline void atomic_add(int i, atomic_t *v)
+{
+       atomic_add_return(i, v);
+}
+
+static inline void atomic_sub(int i, atomic_t *v)
+{
+       atomic_sub_return(i, v);
+}
+
+static inline void atomic_inc(atomic_t *v)
+{
+       atomic_add_return(1, v);
+}
+
+static inline void atomic_dec(atomic_t *v)
+{
+       atomic_sub_return(1, v);
+}
+
+#define atomic_dec_return(v)           atomic_sub_return(1, (v))
+#define atomic_inc_return(v)           atomic_add_return(1, (v))
+
+#define atomic_sub_and_test(i, v)      (atomic_sub_return((i), (v)) == 0)
+#define atomic_dec_and_test(v)         (atomic_sub_return(1, (v)) == 0)
+#define atomic_inc_and_test(v)         (atomic_add_return(1, (v)) == 0)
+
+#define atomic_add_unless(v, a, u)                             \
+({                                                             \
+       int c, old;                                             \
+       c = atomic_read(v);                                     \
+       while (c != (u) && (old = atomic_cmpxchg((v), c, c + (a))) != c) \
+               c = old;                                        \
+       c != (u);                                               \
+})
+
+#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+
+static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
+{
+       unsigned long flags;
+
+       mask = ~mask;
+       local_irq_save(flags);
+       *addr &= mask;
+       local_irq_restore(flags);
+}
+
+#define atomic_xchg(ptr, v)            (xchg(&(ptr)->counter, (v)))
+#define atomic_cmpxchg(v, old, new)    (cmpxchg(&((v)->counter), (old), (new)))
+
+/* Atomic operations are already serializing on MN10300??? */
+#define smp_mb__before_atomic_dec()    barrier()
+#define smp_mb__after_atomic_dec()     barrier()
+#define smp_mb__before_atomic_inc()    barrier()
+#define smp_mb__after_atomic_inc()     barrier()
+
+#include <asm-generic/atomic.h>
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_ATOMIC_H */
diff --git a/arch/mn10300/include/asm/auxvec.h b/arch/mn10300/include/asm/auxvec.h
new file mode 100644 (file)
index 0000000..4fdb60b
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _ASM_AUXVEC_H
+#define _ASM_AUXVEC_H
+
+#endif
diff --git a/arch/mn10300/include/asm/bitops.h b/arch/mn10300/include/asm/bitops.h
new file mode 100644 (file)
index 0000000..0b610f4
--- /dev/null
@@ -0,0 +1,240 @@
+/* MN10300 bit operations
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ *
+ * These have to be done with inline assembly: that way the bit-setting
+ * is guaranteed to be atomic. All bit operations return 0 if the bit
+ * was cleared before the operation and != 0 if it was not.
+ *
+ * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1).
+ */
+#ifndef __ASM_BITOPS_H
+#define __ASM_BITOPS_H
+
+#include <asm/cpu-regs.h>
+
+#define smp_mb__before_clear_bit()     barrier()
+#define smp_mb__after_clear_bit()      barrier()
+
+/*
+ * set bit
+ */
+#define __set_bit(nr, addr)                                    \
+({                                                             \
+       volatile unsigned char *_a = (unsigned char *)(addr);   \
+       const unsigned shift = (nr) & 7;                        \
+       _a += (nr) >> 3;                                        \
+                                                               \
+       asm volatile("bset %2,(%1) # set_bit reg"               \
+                    : "=m"(*_a)                                \
+                    : "a"(_a), "d"(1 << shift),  "m"(*_a)      \
+                    : "memory", "cc");                         \
+})
+
+#define set_bit(nr, addr) __set_bit((nr), (addr))
+
+/*
+ * clear bit
+ */
+#define ___clear_bit(nr, addr)                                 \
+({                                                             \
+       volatile unsigned char *_a = (unsigned char *)(addr);   \
+       const unsigned shift = (nr) & 7;                        \
+       _a += (nr) >> 3;                                        \
+                                                               \
+       asm volatile("bclr %2,(%1) # clear_bit reg"             \
+                    : "=m"(*_a)                                \
+                    : "a"(_a), "d"(1 << shift), "m"(*_a)       \
+                    : "memory", "cc");                         \
+})
+
+#define clear_bit(nr, addr) ___clear_bit((nr), (addr))
+
+
+static inline void __clear_bit(int nr, volatile void *addr)
+{
+       unsigned int *a = (unsigned int *) addr;
+       int mask;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       *a &= ~mask;
+}
+
+/*
+ * test bit
+ */
+static inline int test_bit(int nr, const volatile void *addr)
+{
+       return 1UL & (((const unsigned int *) addr)[nr >> 5] >> (nr & 31));
+}
+
+/*
+ * change bit
+ */
+static inline void __change_bit(int nr, volatile void *addr)
+{
+       int     mask;
+       unsigned int *a = (unsigned int *) addr;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       *a ^= mask;
+}
+
+extern void change_bit(int nr, volatile void *addr);
+
+/*
+ * test and set bit
+ */
+#define __test_and_set_bit(nr,addr)                            \
+({                                                             \
+       volatile unsigned char *_a = (unsigned char *)(addr);   \
+       const unsigned shift = (nr) & 7;                        \
+       unsigned epsw;                                          \
+       _a += (nr) >> 3;                                        \
+                                                               \
+       asm volatile("bset %3,(%2) # test_set_bit reg\n"        \
+                    "mov epsw,%1"                              \
+                    : "=m"(*_a), "=d"(epsw)                    \
+                    : "a"(_a), "d"(1 << shift), "m"(*_a)       \
+                    : "memory", "cc");                         \
+                                                               \
+       !(epsw & EPSW_FLAG_Z);                                  \
+})
+
+#define test_and_set_bit(nr, addr) __test_and_set_bit((nr), (addr))
+
+/*
+ * test and clear bit
+ */
+#define __test_and_clear_bit(nr, addr)                         \
+({                                                             \
+        volatile unsigned char *_a = (unsigned char *)(addr);  \
+       const unsigned shift = (nr) & 7;                        \
+       unsigned epsw;                                          \
+       _a += (nr) >> 3;                                        \
+                                                               \
+       asm volatile("bclr %3,(%2) # test_clear_bit reg\n"      \
+                    "mov epsw,%1"                              \
+                    : "=m"(*_a), "=d"(epsw)                    \
+                    : "a"(_a), "d"(1 << shift), "m"(*_a)       \
+                    : "memory", "cc");                         \
+                                                               \
+       !(epsw & EPSW_FLAG_Z);                                  \
+})
+
+#define test_and_clear_bit(nr, addr) __test_and_clear_bit((nr), (addr))
+
+/*
+ * test and change bit
+ */
+static inline int __test_and_change_bit(int nr, volatile void *addr)
+{
+       int     mask, retval;
+       unsigned int *a = (unsigned int *)addr;
+
+       a += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       retval = (mask & *a) != 0;
+       *a ^= mask;
+
+       return retval;
+}
+
+extern int test_and_change_bit(int nr, volatile void *addr);
+
+#include <asm-generic/bitops/lock.h>
+
+#ifdef __KERNEL__
+
+/**
+ * __ffs - find first bit set
+ * @x: the word to search
+ *
+ * - return 31..0 to indicate bit 31..0 most least significant bit set
+ * - if no bits are set in x, the result is undefined
+ */
+static inline __attribute__((const))
+unsigned long __ffs(unsigned long x)
+{
+       int bit;
+       asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x));
+       return bit;
+}
+
+/*
+ * special slimline version of fls() for calculating ilog2_u32()
+ * - note: no protection against n == 0
+ */
+static inline __attribute__((const))
+int __ilog2_u32(u32 n)
+{
+       int bit;
+       asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(n));
+       return bit;
+}
+
+/**
+ * fls - find last bit set
+ * @x: the word to search
+ *
+ * This is defined the same way as ffs:
+ * - return 32..1 to indicate bit 31..0 most significant bit set
+ * - return 0 to indicate no bits set
+ */
+static inline __attribute__((const))
+int fls(int x)
+{
+       return (x != 0) ? __ilog2_u32(x) + 1 : 0;
+}
+
+/**
+ * __fls - find last (most-significant) set bit in a long word
+ * @word: the word to search
+ *
+ * Undefined if no set bit exists, so code should check against 0 first.
+ */
+static inline unsigned long __fls(unsigned long word)
+{
+       return __ilog2_u32(word);
+}
+
+/**
+ * ffs - find first bit set
+ * @x: the word to search
+ *
+ * - return 32..1 to indicate bit 31..0 most least significant bit set
+ * - return 0 to indicate no bits set
+ */
+static inline __attribute__((const))
+int ffs(int x)
+{
+       /* Note: (x & -x) gives us a mask that is the least significant
+        * (rightmost) 1-bit of the value in x.
+        */
+       return fls(x & -x);
+}
+
+#include <asm-generic/bitops/ffz.h>
+#include <asm-generic/bitops/fls64.h>
+#include <asm-generic/bitops/find.h>
+#include <asm-generic/bitops/sched.h>
+#include <asm-generic/bitops/hweight.h>
+
+#define ext2_set_bit_atomic(lock, nr, addr) \
+       test_and_set_bit((nr) ^ 0x18, (addr))
+#define ext2_clear_bit_atomic(lock, nr, addr) \
+       test_and_clear_bit((nr) ^ 0x18, (addr))
+
+#include <asm-generic/bitops/ext2-non-atomic.h>
+#include <asm-generic/bitops/minix-le.h>
+
+#endif /* __KERNEL__ */
+#endif /* __ASM_BITOPS_H */
diff --git a/arch/mn10300/include/asm/bug.h b/arch/mn10300/include/asm/bug.h
new file mode 100644 (file)
index 0000000..4fcf338
--- /dev/null
@@ -0,0 +1,35 @@
+/* MN10300 Kernel bug reporting
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_BUG_H
+#define _ASM_BUG_H
+
+/*
+ * Tell the user there is some problem.
+ */
+#define _debug_bug_trap()                                      \
+do {                                                           \
+       asm volatile(                                           \
+               "       syscall 15                      \n"     \
+               "0:                                     \n"     \
+               "       .section __bug_table,\"a\"      \n"     \
+               "       .long 0b,%0,%1                  \n"     \
+               "       .previous                       \n"     \
+               :                                               \
+               : "i"(__FILE__), "i"(__LINE__)                  \
+               );                                              \
+} while (0)
+
+#define BUG() _debug_bug_trap()
+
+#define HAVE_ARCH_BUG
+#include <asm-generic/bug.h>
+
+#endif /* _ASM_BUG_H */
diff --git a/arch/mn10300/include/asm/bugs.h b/arch/mn10300/include/asm/bugs.h
new file mode 100644 (file)
index 0000000..31c8bc5
--- /dev/null
@@ -0,0 +1,20 @@
+/* MN10300 Checks for architecture-dependent bugs
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_BUGS_H
+#define _ASM_BUGS_H
+
+#include <asm/processor.h>
+
+static inline void __init check_bugs(void)
+{
+}
+
+#endif /* _ASM_BUGS_H */
diff --git a/arch/mn10300/include/asm/busctl-regs.h b/arch/mn10300/include/asm/busctl-regs.h
new file mode 100644 (file)
index 0000000..1632aef
--- /dev/null
@@ -0,0 +1,151 @@
+/* AM33v2 on-board bus controller registers
+ *
+ * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_BUSCTL_REGS_H
+#define _ASM_BUSCTL_REGS_H
+
+#include <asm/cpu-regs.h>
+
+#ifdef __KERNEL__
+
+/* bus controller registers */
+#define BCCR                   __SYSREG(0xc0002000, u32)       /* bus controller control reg */
+#define BCCR_B0AD              0x00000003      /* block 0 (80000000-83ffffff) bus allocation */
+#define BCCR_B1AD              0x0000000c      /* block 1 (84000000-87ffffff) bus allocation */
+#define BCCR_B2AD              0x00000030      /* block 2 (88000000-8bffffff) bus allocation */
+#define BCCR_B3AD              0x000000c0      /* block 3 (8c000000-8fffffff) bus allocation */
+#define BCCR_B4AD              0x00000300      /* block 4 (90000000-93ffffff) bus allocation */
+#define BCCR_B5AD              0x00000c00      /* block 5 (94000000-97ffffff) bus allocation */
+#define BCCR_B6AD              0x00003000      /* block 6 (98000000-9bffffff) bus allocation */
+#define BCCR_B7AD              0x0000c000      /* block 7 (9c000000-9fffffff) bus allocation */
+#define BCCR_BxAD_EXBUS                0x0             /* - direct to system bus controller */
+#define BCCR_BxAD_OPEXBUS      0x1             /* - direct to memory bus controller */
+#define BCCR_BxAD_OCMBUS       0x2             /* - direct to on chip memory */
+#define BCCR_API               0x00070000      /* bus arbitration priority */
+#define BCCR_API_DMACICD       0x00000000      /* - DMA > CI > CD */
+#define BCCR_API_DMACDCI       0x00010000      /* - DMA > CD > CI */
+#define BCCR_API_CICDDMA       0x00020000      /* - CI > CD > DMA */
+#define BCCR_API_CDCIDMA       0x00030000      /* - CD > CI > DMA */
+#define BCCR_API_ROUNDROBIN    0x00040000      /* - round robin */
+#define BCCR_BEPRI_DMACICD     0x00c00000      /* bus error address priority */
+#define BCCR_BEPRI_DMACDCI     0x00000000      /* - DMA > CI > CD */
+#define BCCR_BEPRI_CICDDMA     0x00400000      /* - DMA > CD > CI */
+#define BCCR_BEPRI_CDCIDMA     0x00800000      /* - CI > CD > DMA */
+#define BCCR_BEPRI             0x00c00000      /* - CD > CI > DMA */
+#define BCCR_TMON              0x03000000      /* timeout value settings */
+#define BCCR_TMON_16IOCLK      0x00000000      /* - 16 IOCLK cycles */
+#define BCCR_TMON_256IOCLK     0x01000000      /* - 256 IOCLK cycles */
+#define BCCR_TMON_4096IOCLK    0x02000000      /* - 4096 IOCLK cycles */
+#define BCCR_TMON_65536IOCLK   0x03000000      /* - 65536 IOCLK cycles */
+#define BCCR_TMOE              0x10000000      /* timeout detection enable */
+
+#define BCBERR                 __SYSREG(0xc0002010, u32)       /* bus error source reg */
+#define BCBERR_BESB            0x0000001f      /* erroneous access destination space */
+#define BCBERR_BESB_MON                0x00000001      /* - monitor space */
+#define BCBERR_BESB_IO         0x00000002      /* - IO bus */
+#define BCBERR_BESB_EX         0x00000004      /* - EX bus */
+#define BCBERR_BESB_OPEX       0x00000008      /* - OpEX bus */
+#define BCBERR_BESB_OCM                0x00000010      /* - on chip memory */
+#define BCBERR_BERW            0x00000100      /* type of access */
+#define BCBERR_BERW_WRITE      0x00000000      /* - write */
+#define BCBERR_BERW_READ       0x00000100      /* - read */
+#define BCBERR_BESD            0x00000200      /* error detector */
+#define BCBERR_BESD_BCU                0x00000000      /* - BCU detected error */
+#define BCBERR_BESD_SLAVE_BUS  0x00000200      /* - slave bus detected error */
+#define BCBERR_BEBST           0x00000400      /* type of access */
+#define BCBERR_BEBST_SINGLE    0x00000000      /* - single */
+#define BCBERR_BEBST_BURST     0x00000400      /* - burst */
+#define BCBERR_BEME            0x00000800      /* multiple bus error flag */
+#define BCBERR_BEMR            0x00007000      /* master bus that caused the error */
+#define BCBERR_BEMR_NOERROR    0x00000000      /* - no error */
+#define BCBERR_BEMR_CI         0x00001000      /* - CPU instruction fetch bus caused error */
+#define BCBERR_BEMR_CD         0x00002000      /* - CPU data bus caused error */
+#define BCBERR_BEMR_DMA                0x00004000      /* - DMA bus caused error */
+
+#define BCBEAR                 __SYSREGC(0xc0002020, u32)      /* bus error address reg */
+
+/* system bus controller registers */
+#define SBBASE(X)              __SYSREG(0xd8c00100 + (X) * 0x10, u32)  /* SBC base addr regs */
+#define SBBASE_BE              0x00000001      /* bank enable */
+#define SBBASE_BAM             0x0000fffe      /* bank address mask [31:17] */
+#define SBBASE_BBA             0xfffe0000      /* bank base address [31:17] */
+
+#define SBCNTRL0(X)            __SYSREG(0xd8c00200 + (X) * 0x10, u32)  /* SBC bank ctrl0 regs */
+#define SBCNTRL0_WEH           0x00000f00      /* write enable hold */
+#define SBCNTRL0_REH           0x0000f000      /* read enable hold */
+#define SBCNTRL0_RWH           0x000f0000      /* SRW signal hold */
+#define SBCNTRL0_CSH           0x00f00000      /* chip select hold */
+#define SBCNTRL0_DAH           0x0f000000      /* data hold */
+#define SBCNTRL0_ADH           0xf0000000      /* address hold */
+
+#define SBCNTRL1(X)            __SYSREG(0xd8c00204 + (X) * 0x10, u32)  /* SBC bank ctrl1 regs */
+#define SBCNTRL1_WED           0x00000f00      /* write enable delay */
+#define SBCNTRL1_RED           0x0000f000      /* read enable delay */
+#define SBCNTRL1_RWD           0x000f0000      /* SRW signal delay */
+#define SBCNTRL1_ASW           0x00f00000      /* address strobe width */
+#define SBCNTRL1_CSD           0x0f000000      /* chip select delay */
+#define SBCNTRL1_ASD           0xf0000000      /* address strobe delay */
+
+#define SBCNTRL2(X)            __SYSREG(0xd8c00208 + (X) * 0x10, u32)  /* SBC bank ctrl2 regs */
+#define SBCNTRL2_WC            0x000000ff      /* wait count */
+#define SBCNTRL2_BWC           0x00000f00      /* burst wait count */
+#define SBCNTRL2_WM            0x01000000      /* wait mode setting */
+#define SBCNTRL2_WM_FIXEDWAIT  0x00000000      /* - fixed wait access */
+#define SBCNTRL2_WM_HANDSHAKE  0x01000000      /* - handshake access */
+#define SBCNTRL2_BM            0x02000000      /* bus synchronisation mode */
+#define SBCNTRL2_BM_SYNC       0x00000000      /* - synchronous mode */
+#define SBCNTRL2_BM_ASYNC      0x02000000      /* - asynchronous mode */
+#define SBCNTRL2_BW            0x04000000      /* bus width */
+#define SBCNTRL2_BW_32         0x00000000      /* - 32 bits */
+#define SBCNTRL2_BW_16         0x04000000      /* - 16 bits */
+#define SBCNTRL2_RWINV         0x08000000      /* R/W signal invert polarity */
+#define SBCNTRL2_RWINV_NORM    0x00000000      /* - normal (read high) */
+#define SBCNTRL2_RWINV_INV     0x08000000      /* - inverted (read low) */
+#define SBCNTRL2_BT            0x70000000      /* bus type setting */
+#define SBCNTRL2_BT_SRAM       0x00000000      /* - SRAM interface */
+#define SBCNTRL2_BT_ADMUX      0x00000000      /* - addr/data multiplexed interface */
+#define SBCNTRL2_BT_BROM       0x00000000      /* - burst ROM interface */
+#define SBCNTRL2_BTSE          0x80000000      /* burst enable */
+
+/* memory bus controller */
+#define SDBASE(X)              __SYSREG(0xda000008 + (X) * 0x4, u32)   /* MBC base addr regs */
+#define SDBASE_CE              0x00000001      /* chip enable */
+#define SDBASE_CBAM            0x0000fff0      /* chip base address mask [31:20] */
+#define SDBASE_CBAM_SHIFT      16
+#define SDBASE_CBA             0xfff00000      /* chip base address [31:20] */
+
+#define SDRAMBUS               __SYSREG(0xda000000, u32)       /* bus mode control reg */
+#define SDRAMBUS_REFEN         0x00000004      /* refresh enable */
+#define SDRAMBUS_TRC           0x00000018      /* refresh command delay time */
+#define SDRAMBUS_BSTPT         0x00000020      /* burst stop command enable */
+#define SDRAMBUS_PONSEQ                0x00000040      /* power on sequence */
+#define SDRAMBUS_SELFREQ       0x00000080      /* self-refresh mode request */
+#define SDRAMBUS_SELFON                0x00000100      /* self-refresh mode on */
+#define SDRAMBUS_SIZE          0x00030000      /* SDRAM size */
+#define SDRAMBUS_SIZE_64Mbit   0x00010000      /* 64Mbit SDRAM (x16) */
+#define SDRAMBUS_SIZE_128Mbit  0x00020000      /* 128Mbit SDRAM (x16) */
+#define SDRAMBUS_SIZE_256Mbit  0x00030000      /* 256Mbit SDRAM (x16) */
+#define SDRAMBUS_TRASWAIT      0x000c0000      /* row address precharge command cycle number */
+#define SDRAMBUS_REFNUM                0x00300000      /* refresh command number */
+#define SDRAMBUS_BSTWAIT       0x00c00000      /* burst stop command cycle */
+#define SDRAMBUS_SETWAIT       0x03000000      /* mode register setting command cycle */
+#define SDRAMBUS_PREWAIT       0x0c000000      /* precharge command cycle */
+#define SDRAMBUS_RASLATE       0x30000000      /* RAS latency */
+#define SDRAMBUS_CASLATE       0xc0000000      /* CAS latency */
+
+#define SDREFCNT               __SYSREG(0xda000004, u32)       /* refresh period reg */
+#define SDREFCNT_PERI          0x00000fff      /* refresh period */
+
+#define SDSHDW                 __SYSREG(0xda000010, u32)       /* test reg */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_BUSCTL_REGS_H */
diff --git a/arch/mn10300/include/asm/byteorder.h b/arch/mn10300/include/asm/byteorder.h
new file mode 100644 (file)
index 0000000..5dd0bdd
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_BYTEORDER_H
+#define _ASM_BYTEORDER_H
+
+#include <linux/byteorder/little_endian.h>
+
+#endif /* _ASM_BYTEORDER_H */
diff --git a/arch/mn10300/include/asm/cache.h b/arch/mn10300/include/asm/cache.h
new file mode 100644 (file)
index 0000000..e03cfa2
--- /dev/null
@@ -0,0 +1,54 @@
+/* MN10300 cache management registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_CACHE_H
+#define _ASM_CACHE_H
+
+#include <asm/cpu-regs.h>
+#include <proc/cache.h>
+
+#ifndef __ASSEMBLY__
+#define L1_CACHE_DISPARITY     (L1_CACHE_NENTRIES * L1_CACHE_BYTES)
+#else
+#define L1_CACHE_DISPARITY     L1_CACHE_NENTRIES * L1_CACHE_BYTES
+#endif
+
+/* data cache purge registers
+ * - read from the register to unconditionally purge that cache line
+ * - write address & 0xffffff00 to conditionally purge that cache line
+ *   - clear LSB to request invalidation as well
+ */
+#define DCACHE_PURGE(WAY, ENTRY) \
+       __SYSREG(0xc8400000 + (WAY) * L1_CACHE_WAYDISP + \
+                (ENTRY) * L1_CACHE_BYTES, u32)
+
+#define DCACHE_PURGE_WAY0(ENTRY) \
+       __SYSREG(0xc8400000 + 0 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
+#define DCACHE_PURGE_WAY1(ENTRY) \
+       __SYSREG(0xc8400000 + 1 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
+#define DCACHE_PURGE_WAY2(ENTRY) \
+       __SYSREG(0xc8400000 + 2 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
+#define DCACHE_PURGE_WAY3(ENTRY) \
+       __SYSREG(0xc8400000 + 3 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
+
+/* instruction cache access registers */
+#define ICACHE_DATA(WAY, ENTRY, OFF) \
+       __SYSREG(0xc8000000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10 + (OFF) * 4, u32)
+#define ICACHE_TAG(WAY, ENTRY)  \
+       __SYSREG(0xc8100000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10, u32)
+
+/* instruction cache access registers */
+#define DCACHE_DATA(WAY, ENTRY, OFF) \
+       __SYSREG(0xc8200000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10 + (OFF) * 4, u32)
+#define DCACHE_TAG(WAY, ENTRY)  \
+       __SYSREG(0xc8300000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10, u32)
+
+#endif /* _ASM_CACHE_H */
diff --git a/arch/mn10300/include/asm/cacheflush.h b/arch/mn10300/include/asm/cacheflush.h
new file mode 100644 (file)
index 0000000..2db746a
--- /dev/null
@@ -0,0 +1,116 @@
+/* MN10300 Cache flushing
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_CACHEFLUSH_H
+#define _ASM_CACHEFLUSH_H
+
+#ifndef __ASSEMBLY__
+
+/* Keep includes the same across arches.  */
+#include <linux/mm.h>
+
+/*
+ * virtually-indexed cache managment (our cache is physically indexed)
+ */
+#define flush_cache_all()                      do {} while (0)
+#define flush_cache_mm(mm)                     do {} while (0)
+#define flush_cache_dup_mm(mm)                 do {} while (0)
+#define flush_cache_range(mm, start, end)      do {} while (0)
+#define flush_cache_page(vma, vmaddr, pfn)     do {} while (0)
+#define flush_cache_vmap(start, end)           do {} while (0)
+#define flush_cache_vunmap(start, end)         do {} while (0)
+#define flush_dcache_page(page)                        do {} while (0)
+#define flush_dcache_mmap_lock(mapping)                do {} while (0)
+#define flush_dcache_mmap_unlock(mapping)      do {} while (0)
+
+/*
+ * physically-indexed cache managment
+ */
+#ifndef CONFIG_MN10300_CACHE_DISABLED
+
+extern void flush_icache_range(unsigned long start, unsigned long end);
+extern void flush_icache_page(struct vm_area_struct *vma, struct page *pg);
+
+#else
+
+#define flush_icache_range(start, end)         do {} while (0)
+#define flush_icache_page(vma, pg)             do {} while (0)
+
+#endif
+
+#define flush_icache_user_range(vma, pg, adr, len) \
+       flush_icache_range(adr, adr + len)
+
+#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
+       do {                                    \
+               memcpy(dst, src, len);          \
+               flush_icache_page(vma, page);   \
+       } while (0)
+
+#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
+       memcpy(dst, src, len)
+
+/*
+ * primitive routines
+ */
+#ifndef CONFIG_MN10300_CACHE_DISABLED
+extern void mn10300_icache_inv(void);
+extern void mn10300_dcache_inv(void);
+extern void mn10300_dcache_inv_page(unsigned start);
+extern void mn10300_dcache_inv_range(unsigned start, unsigned end);
+extern void mn10300_dcache_inv_range2(unsigned start, unsigned size);
+#ifdef CONFIG_MN10300_CACHE_WBACK
+extern void mn10300_dcache_flush(void);
+extern void mn10300_dcache_flush_page(unsigned start);
+extern void mn10300_dcache_flush_range(unsigned start, unsigned end);
+extern void mn10300_dcache_flush_range2(unsigned start, unsigned size);
+extern void mn10300_dcache_flush_inv(void);
+extern void mn10300_dcache_flush_inv_page(unsigned start);
+extern void mn10300_dcache_flush_inv_range(unsigned start, unsigned end);
+extern void mn10300_dcache_flush_inv_range2(unsigned start, unsigned size);
+#else
+#define mn10300_dcache_flush()                         do {} while (0)
+#define mn10300_dcache_flush_page(start)               do {} while (0)
+#define mn10300_dcache_flush_range(start, end)         do {} while (0)
+#define mn10300_dcache_flush_range2(start, size)       do {} while (0)
+#define mn10300_dcache_flush_inv()                     mn10300_dcache_inv()
+#define mn10300_dcache_flush_inv_page(start) \
+       mn10300_dcache_inv_page((start))
+#define mn10300_dcache_flush_inv_range(start, end) \
+       mn10300_dcache_inv_range((start), (end))
+#define mn10300_dcache_flush_inv_range2(start, size) \
+       mn10300_dcache_inv_range2((start), (size))
+#endif /* CONFIG_MN10300_CACHE_WBACK */
+#else
+#define mn10300_icache_inv()                           do {} while (0)
+#define mn10300_dcache_inv()                           do {} while (0)
+#define mn10300_dcache_inv_page(start)                 do {} while (0)
+#define mn10300_dcache_inv_range(start, end)           do {} while (0)
+#define mn10300_dcache_inv_range2(start, size)         do {} while (0)
+#define mn10300_dcache_flush()                         do {} while (0)
+#define mn10300_dcache_flush_inv_page(start)           do {} while (0)
+#define mn10300_dcache_flush_inv()                     do {} while (0)
+#define mn10300_dcache_flush_inv_range(start, end)     do {} while (0)
+#define mn10300_dcache_flush_inv_range2(start, size)   do {} while (0)
+#define mn10300_dcache_flush_page(start)               do {} while (0)
+#define mn10300_dcache_flush_range(start, end)         do {} while (0)
+#define mn10300_dcache_flush_range2(start, size)       do {} while (0)
+#endif /* CONFIG_MN10300_CACHE_DISABLED */
+
+/*
+ * internal debugging function
+ */
+#ifdef CONFIG_DEBUG_PAGEALLOC
+extern void kernel_map_pages(struct page *page, int numpages, int enable);
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_CACHEFLUSH_H */
diff --git a/arch/mn10300/include/asm/checksum.h b/arch/mn10300/include/asm/checksum.h
new file mode 100644 (file)
index 0000000..9fb2a8d
--- /dev/null
@@ -0,0 +1,86 @@
+/* MN10300 Optimised checksumming code
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_CHECKSUM_H
+#define _ASM_CHECKSUM_H
+
+extern __wsum csum_partial(const void *buff, int len, __wsum sum);
+extern __wsum csum_partial_copy_nocheck(const void *src, void *dst,
+                                       int len, __wsum sum);
+extern __wsum csum_partial_copy_from_user(const void *src, void *dst,
+                                         int len, __wsum sum,
+                                         int *err_ptr);
+extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
+extern __wsum csum_partial(const void *buff, int len, __wsum sum);
+extern __sum16 ip_compute_csum(const void *buff, int len);
+
+#define csum_partial_copy_fromuser csum_partial_copy
+extern __wsum csum_partial_copy(const void *src, void *dst, int len,
+                               __wsum sum);
+
+static inline __sum16 csum_fold(__wsum sum)
+{
+       asm(
+               "       add     %1,%0           \n"
+               "       addc    0xffff,%0       \n"
+               : "=r" (sum)
+               : "r" (sum << 16), "0" (sum & 0xffff0000)
+               : "cc"
+           );
+       return (~sum) >> 16;
+}
+
+static inline __wsum csum_tcpudp_nofold(unsigned long saddr,
+                                       unsigned long daddr,
+                                       unsigned short len,
+                                       unsigned short proto,
+                                       __wsum sum)
+{
+       __wsum tmp;
+
+       tmp = (__wsum) ntohs(len) << 16;
+       tmp += (__wsum) proto << 8;
+
+       asm(
+               "       add     %1,%0           \n"
+               "       addc    %2,%0           \n"
+               "       addc    %3,%0           \n"
+               "       addc    0,%0            \n"
+               : "=r" (sum)
+               : "r" (daddr), "r"(saddr), "r"(tmp), "0"(sum)
+               : "cc"
+           );
+       return sum;
+}
+
+/*
+ * computes the checksum of the TCP/UDP pseudo-header
+ * returns a 16-bit checksum, already complemented
+ */
+static inline __sum16 csum_tcpudp_magic(unsigned long saddr,
+                                       unsigned long daddr,
+                                       unsigned short len,
+                                       unsigned short proto,
+                                       __wsum sum)
+{
+       return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
+}
+
+#undef _HAVE_ARCH_IPV6_CSUM
+
+/*
+ *     Copy and checksum to user
+ */
+#define HAVE_CSUM_COPY_USER
+extern __wsum csum_and_copy_to_user(const void *src, void *dst, int len,
+                                   __wsum sum, int *err_ptr);
+
+
+#endif /* _ASM_CHECKSUM_H */
diff --git a/arch/mn10300/include/asm/cpu-regs.h b/arch/mn10300/include/asm/cpu-regs.h
new file mode 100644 (file)
index 0000000..757e9b5
--- /dev/null
@@ -0,0 +1,290 @@
+/* MN10300 Core system registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_CPU_REGS_H
+#define _ASM_CPU_REGS_H
+
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#endif
+
+#ifdef CONFIG_MN10300_CPU_AM33V2
+/* we tell the compiler to pretend to be AM33 so that it doesn't try and use
+ * the FP regs, but tell the assembler that we're actually allowed AM33v2
+ * instructions */
+#ifndef __ASSEMBLY__
+asm(" .am33_2\n");
+#else
+.am33_2
+#endif
+#endif
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+#define __SYSREG(ADDR, TYPE) (*(volatile TYPE *)(ADDR))
+#define __SYSREGC(ADDR, TYPE) (*(const volatile TYPE *)(ADDR))
+#else
+#define __SYSREG(ADDR, TYPE) ADDR
+#define __SYSREGC(ADDR, TYPE) ADDR
+#endif
+
+/* CPU registers */
+#define EPSW_FLAG_Z            0x00000001      /* zero flag */
+#define EPSW_FLAG_N            0x00000002      /* negative flag */
+#define EPSW_FLAG_C            0x00000004      /* carry flag */
+#define EPSW_FLAG_V            0x00000008      /* overflow flag */
+#define EPSW_IM                        0x00000700      /* interrupt mode */
+#define EPSW_IM_0              0x00000000      /* interrupt mode 0 */
+#define EPSW_IM_1              0x00000100      /* interrupt mode 1 */
+#define EPSW_IM_2              0x00000200      /* interrupt mode 2 */
+#define EPSW_IM_3              0x00000300      /* interrupt mode 3 */
+#define EPSW_IM_4              0x00000400      /* interrupt mode 4 */
+#define EPSW_IM_5              0x00000500      /* interrupt mode 5 */
+#define EPSW_IM_6              0x00000600      /* interrupt mode 6 */
+#define EPSW_IM_7              0x00000700      /* interrupt mode 7 */
+#define EPSW_IE                        0x00000800      /* interrupt enable */
+#define EPSW_S                 0x00003000      /* software auxilliary bits */
+#define EPSW_T                 0x00008000      /* trace enable */
+#define EPSW_nSL               0x00010000      /* not supervisor level */
+#define EPSW_NMID              0x00020000      /* nonmaskable interrupt disable */
+#define EPSW_nAR               0x00040000      /* register bank control */
+#define EPSW_ML                        0x00080000      /* monitor level */
+#define EPSW_FE                        0x00100000      /* FPU enable */
+
+/* FPU registers */
+#define FPCR_EF_I              0x00000001      /* inexact result FPU exception flag */
+#define FPCR_EF_U              0x00000002      /* underflow FPU exception flag */
+#define FPCR_EF_O              0x00000004      /* overflow FPU exception flag */
+#define FPCR_EF_Z              0x00000008      /* zero divide FPU exception flag */
+#define FPCR_EF_V              0x00000010      /* invalid operand FPU exception flag */
+#define FPCR_EE_I              0x00000020      /* inexact result FPU exception enable */
+#define FPCR_EE_U              0x00000040      /* underflow FPU exception enable */
+#define FPCR_EE_O              0x00000080      /* overflow FPU exception enable */
+#define FPCR_EE_Z              0x00000100      /* zero divide FPU exception enable */
+#define FPCR_EE_V              0x00000200      /* invalid operand FPU exception enable */
+#define FPCR_EC_I              0x00000400      /* inexact result FPU exception cause */
+#define FPCR_EC_U              0x00000800      /* underflow FPU exception cause */
+#define FPCR_EC_O              0x00001000      /* overflow FPU exception cause */
+#define FPCR_EC_Z              0x00002000      /* zero divide FPU exception cause */
+#define FPCR_EC_V              0x00004000      /* invalid operand FPU exception cause */
+#define FPCR_RM                        0x00030000      /* rounding mode */
+#define FPCR_RM_NEAREST                0x00000000      /* - round to nearest value */
+#define FPCR_FCC_U             0x00040000      /* FPU unordered condition code */
+#define FPCR_FCC_E             0x00080000      /* FPU equal condition code */
+#define FPCR_FCC_G             0x00100000      /* FPU greater than condition code */
+#define FPCR_FCC_L             0x00200000      /* FPU less than condition code */
+#define FPCR_INIT              0x00000000      /* no exceptions, rounding to nearest */
+
+/* CPU control registers */
+#define CPUP                   __SYSREG(0xc0000020, u16)       /* CPU pipeline register */
+#define CPUP_DWBD              0x0020          /* write buffer disable flag */
+#define CPUP_IPFD              0x0040          /* instruction prefetch disable flag */
+#define CPUP_EXM               0x0080          /* exception operation mode */
+#define CPUP_EXM_AM33V1                0x0000          /* - AM33 v1 exception mode */
+#define CPUP_EXM_AM33V2                0x0080          /* - AM33 v2 exception mode */
+
+#define CPUM                   __SYSREG(0xc0000040, u16)       /* CPU mode register */
+#define CPUM_SLEEP             0x0004          /* set to enter sleep state */
+#define CPUM_HALT              0x0008          /* set to enter halt state */
+#define CPUM_STOP              0x0010          /* set to enter stop state */
+
+#define CPUREV                 __SYSREGC(0xc0000050, u32)      /* CPU revision register */
+#define CPUREV_TYPE            0x0000000f      /* CPU type */
+#define CPUREV_TYPE_S          0
+#define CPUREV_TYPE_AM33V1     0x00000000      /* - AM33 V1 core, AM33/1.00 arch */
+#define CPUREV_TYPE_AM33V2     0x00000001      /* - AM33 V2 core, AM33/2.00 arch */
+#define CPUREV_TYPE_AM34V1     0x00000002      /* - AM34 V1 core, AM33/2.00 arch */
+#define CPUREV_REVISION                0x000000f0      /* CPU revision */
+#define CPUREV_REVISION_S      4
+#define CPUREV_ICWAY           0x00000f00      /* number of instruction cache ways */
+#define CPUREV_ICWAY_S         8
+#define CPUREV_ICSIZE          0x0000f000      /* instruction cache way size */
+#define CPUREV_ICSIZE_S                12
+#define CPUREV_DCWAY           0x000f0000      /* number of data cache ways */
+#define CPUREV_DCWAY_S         16
+#define CPUREV_DCSIZE          0x00f00000      /* data cache way size */
+#define CPUREV_DCSIZE_S                20
+#define CPUREV_FPUTYPE         0x0f000000      /* FPU core type */
+#define CPUREV_FPUTYPE_NONE    0x00000000      /* - no FPU core implemented */
+#define CPUREV_OCDCTG          0xf0000000      /* on-chip debug function category */
+
+#define DCR                    __SYSREG(0xc0000030, u16)       /* Debug control register */
+
+/* interrupt/exception control registers */
+#define IVAR0                  __SYSREG(0xc0000000, u16)       /* interrupt vector 0 */
+#define IVAR1                  __SYSREG(0xc0000004, u16)       /* interrupt vector 1 */
+#define IVAR2                  __SYSREG(0xc0000008, u16)       /* interrupt vector 2 */
+#define IVAR3                  __SYSREG(0xc000000c, u16)       /* interrupt vector 3 */
+#define IVAR4                  __SYSREG(0xc0000010, u16)       /* interrupt vector 4 */
+#define IVAR5                  __SYSREG(0xc0000014, u16)       /* interrupt vector 5 */
+#define IVAR6                  __SYSREG(0xc0000018, u16)       /* interrupt vector 6 */
+
+#define TBR                    __SYSREG(0xc0000024, u32)       /* Trap table base */
+#define TBR_TB                 0xff000000      /* table base address bits 31-24 */
+#define TBR_INT_CODE           0x00ffffff      /* interrupt code */
+
+#define DEAR                   __SYSREG(0xc0000038, u32)       /* Data access exception address */
+
+#define sISR                   __SYSREG(0xc0000044, u32)       /* Supervisor interrupt status */
+#define        sISR_IRQICE             0x00000001      /* ICE interrupt */
+#define        sISR_ISTEP              0x00000002      /* single step interrupt */
+#define        sISR_MISSA              0x00000004      /* memory access address misalignment fault */
+#define        sISR_UNIMP              0x00000008      /* unimplemented instruction execution fault */
+#define        sISR_PIEXE              0x00000010      /* program interrupt */
+#define        sISR_MEMERR             0x00000020      /* illegal memory access fault */
+#define        sISR_IBREAK             0x00000040      /* instraction break interrupt */
+#define        sISR_DBSRL              0x00000080      /* debug serial interrupt */
+#define        sISR_PERIDB             0x00000100      /* peripheral debug interrupt */
+#define        sISR_EXUNIMP            0x00000200      /* unimplemented ex-instruction execution fault */
+#define        sISR_OBREAK             0x00000400      /* operand break interrupt */
+#define        sISR_PRIV               0x00000800      /* privileged instruction execution fault */
+#define        sISR_BUSERR             0x00001000      /* bus error fault */
+#define        sISR_DBLFT              0x00002000      /* double fault */
+#define        sISR_DBG                0x00008000      /* debug reserved interrupt */
+#define sISR_ITMISS            0x00010000      /* instruction TLB miss */
+#define sISR_DTMISS            0x00020000      /* data TLB miss */
+#define sISR_ITEX              0x00040000      /* instruction TLB access exception */
+#define sISR_DTEX              0x00080000      /* data TLB access exception */
+#define sISR_ILGIA             0x00100000      /* illegal instruction access exception */
+#define sISR_ILGDA             0x00200000      /* illegal data access exception */
+#define sISR_IOIA              0x00400000      /* internal I/O space instruction access excep */
+#define sISR_PRIVA             0x00800000      /* privileged space instruction access excep */
+#define sISR_PRIDA             0x01000000      /* privileged space data access excep */
+#define sISR_DISA              0x02000000      /* data space instruction access excep */
+#define sISR_SYSC              0x04000000      /* system call instruction excep */
+#define sISR_FPUD              0x08000000      /* FPU disabled excep */
+#define sISR_FPUUI             0x10000000      /* FPU unimplemented instruction excep */
+#define sISR_FPUOP             0x20000000      /* FPU operation excep */
+#define sISR_NE                        0x80000000      /* multiple synchronous exceptions excep */
+
+/* cache control registers */
+#define CHCTR                  __SYSREG(0xc0000070, u16)       /* cache control */
+#define CHCTR_ICEN             0x0001          /* instruction cache enable */
+#define CHCTR_DCEN             0x0002          /* data cache enable */
+#define CHCTR_ICBUSY           0x0004          /* instruction cache busy */
+#define CHCTR_DCBUSY           0x0008          /* data cache busy */
+#define CHCTR_ICINV            0x0010          /* instruction cache invalidate */
+#define CHCTR_DCINV            0x0020          /* data cache invalidate */
+#define CHCTR_DCWTMD           0x0040          /* data cache writing mode */
+#define CHCTR_DCWTMD_WRBACK    0x0000          /* - write back mode */
+#define CHCTR_DCWTMD_WRTHROUGH 0x0040          /* - write through mode */
+#define CHCTR_DCALMD           0x0080          /* data cache allocation mode */
+#define CHCTR_ICWMD            0x0f00          /* instruction cache way mode */
+#define CHCTR_DCWMD            0xf000          /* data cache way mode */
+
+/* MMU control registers */
+#define MMUCTR                 __SYSREG(0xc0000090, u32)       /* MMU control register */
+#define MMUCTR_IRP             0x0000003f      /* instruction TLB replace pointer */
+#define MMUCTR_ITE             0x00000040      /* instruction TLB enable */
+#define MMUCTR_IIV             0x00000080      /* instruction TLB invalidate */
+#define MMUCTR_ITL             0x00000700      /* instruction TLB lock pointer */
+#define MMUCTR_ITL_NOLOCK      0x00000000      /* - no lock */
+#define MMUCTR_ITL_LOCK0       0x00000100      /* - entry 0 locked */
+#define MMUCTR_ITL_LOCK0_1     0x00000200      /* - entry 0-1 locked */
+#define MMUCTR_ITL_LOCK0_3     0x00000300      /* - entry 0-3 locked */
+#define MMUCTR_ITL_LOCK0_7     0x00000400      /* - entry 0-7 locked */
+#define MMUCTR_ITL_LOCK0_15    0x00000500      /* - entry 0-15 locked */
+#define MMUCTR_CE              0x00008000      /* cacheable bit enable */
+#define MMUCTR_DRP             0x003f0000      /* data TLB replace pointer */
+#define MMUCTR_DTE             0x00400000      /* data TLB enable */
+#define MMUCTR_DIV             0x00800000      /* data TLB invalidate */
+#define MMUCTR_DTL             0x07000000      /* data TLB lock pointer */
+#define MMUCTR_DTL_NOLOCK      0x00000000      /* - no lock */
+#define MMUCTR_DTL_LOCK0       0x01000000      /* - entry 0 locked */
+#define MMUCTR_DTL_LOCK0_1     0x02000000      /* - entry 0-1 locked */
+#define MMUCTR_DTL_LOCK0_3     0x03000000      /* - entry 0-3 locked */
+#define MMUCTR_DTL_LOCK0_7     0x04000000      /* - entry 0-7 locked */
+#define MMUCTR_DTL_LOCK0_15    0x05000000      /* - entry 0-15 locked */
+
+#define PIDR                   __SYSREG(0xc0000094, u16)       /* PID register */
+#define PIDR_PID               0x00ff          /* process identifier */
+
+#define PTBR                   __SYSREG(0xc0000098, unsigned long) /* Page table base register */
+
+#define IPTEL                  __SYSREG(0xc00000a0, u32)       /* instruction TLB entry */
+#define DPTEL                  __SYSREG(0xc00000b0, u32)       /* data TLB entry */
+#define xPTEL_V                        0x00000001      /* TLB entry valid */
+#define xPTEL_UNUSED1          0x00000002      /* unused bit */
+#define xPTEL_UNUSED2          0x00000004      /* unused bit */
+#define xPTEL_C                        0x00000008      /* cached if set */
+#define xPTEL_PV               0x00000010      /* page valid */
+#define xPTEL_D                        0x00000020      /* dirty */
+#define xPTEL_PR               0x000001c0      /* page protection */
+#define xPTEL_PR_ROK           0x00000000      /* - R/O kernel */
+#define xPTEL_PR_RWK           0x00000100      /* - R/W kernel */
+#define xPTEL_PR_ROK_ROU       0x00000080      /* - R/O kernel and R/O user */
+#define xPTEL_PR_RWK_ROU       0x00000180      /* - R/W kernel and R/O user */
+#define xPTEL_PR_RWK_RWU       0x000001c0      /* - R/W kernel and R/W user */
+#define xPTEL_G                        0x00000200      /* global (use PID if 0) */
+#define xPTEL_PS               0x00000c00      /* page size */
+#define xPTEL_PS_4Kb           0x00000000      /* - 4Kb page */
+#define xPTEL_PS_128Kb         0x00000400      /* - 128Kb page */
+#define xPTEL_PS_1Kb           0x00000800      /* - 1Kb page */
+#define xPTEL_PS_4Mb           0x00000c00      /* - 4Mb page */
+#define xPTEL_PPN              0xfffff006      /* physical page number */
+
+#define xPTEL_V_BIT            0       /* bit numbers corresponding to above masks */
+#define xPTEL_UNUSED1_BIT      1
+#define xPTEL_UNUSED2_BIT      2
+#define xPTEL_C_BIT            3
+#define xPTEL_PV_BIT           4
+#define xPTEL_D_BIT            5
+#define xPTEL_G_BIT            9
+
+#define IPTEU                  __SYSREG(0xc00000a4, u32)       /* instruction TLB virtual addr */
+#define DPTEU                  __SYSREG(0xc00000b4, u32)       /* data TLB virtual addr */
+#define xPTEU_VPN              0xfffffc00      /* virtual page number */
+#define xPTEU_PID              0x000000ff      /* process identifier to which applicable */
+
+#define IPTEL2                 __SYSREG(0xc00000a8, u32)       /* instruction TLB entry */
+#define DPTEL2                 __SYSREG(0xc00000b8, u32)       /* data TLB entry */
+#define xPTEL2_V               0x00000001      /* TLB entry valid */
+#define xPTEL2_C               0x00000002      /* cacheable */
+#define xPTEL2_PV              0x00000004      /* page valid */
+#define xPTEL2_D               0x00000008      /* dirty */
+#define xPTEL2_PR              0x00000070      /* page protection */
+#define xPTEL2_PR_ROK          0x00000000      /* - R/O kernel */
+#define xPTEL2_PR_RWK          0x00000040      /* - R/W kernel */
+#define xPTEL2_PR_ROK_ROU      0x00000020      /* - R/O kernel and R/O user */
+#define xPTEL2_PR_RWK_ROU      0x00000060      /* - R/W kernel and R/O user */
+#define xPTEL2_PR_RWK_RWU      0x00000070      /* - R/W kernel and R/W user */
+#define xPTEL2_G               0x00000080      /* global (use PID if 0) */
+#define xPTEL2_PS              0x00000300      /* page size */
+#define xPTEL2_PS_4Kb          0x00000000      /* - 4Kb page */
+#define xPTEL2_PS_128Kb                0x00000100      /* - 128Kb page */
+#define xPTEL2_PS_1Kb          0x00000200      /* - 1Kb page */
+#define xPTEL2_PS_4Mb          0x00000300      /* - 4Mb page */
+#define xPTEL2_PPN             0xfffffc00      /* physical page number */
+
+#define MMUFCR                 __SYSREGC(0xc000009c, u32)      /* MMU exception cause */
+#define MMUFCR_IFC             __SYSREGC(0xc000009c, u16)      /* MMU instruction excep cause */
+#define MMUFCR_DFC             __SYSREGC(0xc000009e, u16)      /* MMU data exception cause */
+#define MMUFCR_xFC_TLBMISS     0x0001          /* TLB miss flag */
+#define MMUFCR_xFC_INITWR      0x0002          /* initial write excep flag */
+#define MMUFCR_xFC_PGINVAL     0x0004          /* page invalid excep flag */
+#define MMUFCR_xFC_PROTVIOL    0x0008          /* protection violation excep flag */
+#define MMUFCR_xFC_ACCESS      0x0010          /* access level flag */
+#define MMUFCR_xFC_ACCESS_USR  0x0000          /* - user mode */
+#define MMUFCR_xFC_ACCESS_SR   0x0010          /* - supervisor mode */
+#define MMUFCR_xFC_TYPE                0x0020          /* access type flag */
+#define MMUFCR_xFC_TYPE_READ   0x0000          /* - read */
+#define MMUFCR_xFC_TYPE_WRITE  0x0020          /* - write */
+#define MMUFCR_xFC_PR          0x01c0          /* page protection flag */
+#define MMUFCR_xFC_PR_ROK      0x0000          /* - R/O kernel */
+#define MMUFCR_xFC_PR_RWK      0x0100          /* - R/W kernel */
+#define MMUFCR_xFC_PR_ROK_ROU  0x0080          /* - R/O kernel and R/O user */
+#define MMUFCR_xFC_PR_RWK_ROU  0x0180          /* - R/W kernel and R/O user */
+#define MMUFCR_xFC_PR_RWK_RWU  0x01c0          /* - R/W kernel and R/W user */
+#define MMUFCR_xFC_ILLADDR     0x0200          /* illegal address excep flag */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_CPU_REGS_H */
diff --git a/arch/mn10300/include/asm/cputime.h b/arch/mn10300/include/asm/cputime.h
new file mode 100644 (file)
index 0000000..6d68ad7
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/cputime.h>
diff --git a/arch/mn10300/include/asm/current.h b/arch/mn10300/include/asm/current.h
new file mode 100644 (file)
index 0000000..ca6027d
--- /dev/null
@@ -0,0 +1,37 @@
+/* MN10300 Current task structure accessor
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_CURRENT_H
+#define _ASM_CURRENT_H
+
+#include <linux/thread_info.h>
+
+/*
+ * dedicate E2 to keeping the current task pointer
+ */
+#ifdef CONFIG_MN10300_CURRENT_IN_E2
+
+register struct task_struct *const current asm("e2") __attribute__((used));
+
+#define get_current() current
+
+extern struct task_struct *__current;
+
+#else
+static inline __attribute__((const))
+struct task_struct *get_current(void)
+{
+       return current_thread_info()->task;
+}
+
+#define current get_current()
+#endif
+
+#endif /* _ASM_CURRENT_H */
diff --git a/arch/mn10300/include/asm/delay.h b/arch/mn10300/include/asm/delay.h
new file mode 100644 (file)
index 0000000..34517b3
--- /dev/null
@@ -0,0 +1,19 @@
+/* MN10300 Uninterruptible delay routines
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_DELAY_H
+#define _ASM_DELAY_H
+
+extern void __udelay(unsigned long usecs);
+extern void __delay(unsigned long loops);
+
+#define udelay(n) __udelay(n)
+
+#endif /* _ASM_DELAY_H */
diff --git a/arch/mn10300/include/asm/device.h b/arch/mn10300/include/asm/device.h
new file mode 100644 (file)
index 0000000..f0a4c25
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/device.h>
diff --git a/arch/mn10300/include/asm/div64.h b/arch/mn10300/include/asm/div64.h
new file mode 100644 (file)
index 0000000..3a8329b
--- /dev/null
@@ -0,0 +1,100 @@
+/* MN10300 64-bit division
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_DIV64
+#define _ASM_DIV64
+
+#include <linux/types.h>
+
+extern void ____unhandled_size_in_do_div___(void);
+
+/*
+ * divide n by base, leaving the result in n and returning the remainder
+ * - we can do this quite efficiently on the MN10300 by cascading the divides
+ *   through the MDR register
+ */
+#define do_div(n, base)                                                        \
+({                                                                     \
+       unsigned __rem = 0;                                             \
+       if (sizeof(n) <= 4) {                                           \
+               asm("mov        %1,mdr  \n"                             \
+                   "divu       %2,%0   \n"                             \
+                   "mov        mdr,%1  \n"                             \
+                   : "+r"(n), "=d"(__rem)                              \
+                   : "r"(base), "1"(__rem)                             \
+                   : "cc"                                              \
+                   );                                                  \
+       } else if (sizeof(n) <= 8) {                                    \
+               union {                                                 \
+                       unsigned long long l;                           \
+                       u32 w[2];                                       \
+               } __quot;                                               \
+               __quot.l = n;                                           \
+               asm("mov        %0,mdr  \n"     /* MDR = 0 */           \
+                   "divu       %3,%1   \n"                             \
+                   /* __quot.MSL = __div.MSL / base, */                \
+                   /* MDR = MDR:__div.MSL % base */                    \
+                   "divu       %3,%2   \n"                             \
+                   /* __quot.LSL = MDR:__div.LSL / base, */            \
+                   /* MDR = MDR:__div.LSL % base */                    \
+                   "mov        mdr,%0  \n"                             \
+                   : "=d"(__rem), "=r"(__quot.w[1]), "=r"(__quot.w[0]) \
+                   : "r"(base), "0"(__rem), "1"(__quot.w[1]),          \
+                     "2"(__quot.w[0])                                  \
+                   : "cc"                                              \
+                   );                                                  \
+               n = __quot.l;                                           \
+       } else {                                                        \
+               ____unhandled_size_in_do_div___();                      \
+       }                                                               \
+       __rem;                                                          \
+})
+
+/*
+ * do an unsigned 32-bit multiply and divide with intermediate 64-bit product
+ * so as not to lose accuracy
+ * - we use the MDR register to hold the MSW of the product
+ */
+static inline __attribute__((const))
+unsigned __muldiv64u(unsigned val, unsigned mult, unsigned div)
+{
+       unsigned result;
+
+       asm("mulu       %2,%0   \n"     /* MDR:val = val*mult */
+           "divu       %3,%0   \n"     /* val = MDR:val/div;
+                                        * MDR = MDR:val%div */
+           : "=r"(result)
+           : "0"(val), "ir"(mult), "r"(div)
+           );
+
+       return result;
+}
+
+/*
+ * do a signed 32-bit multiply and divide with intermediate 64-bit product so
+ * as not to lose accuracy
+ * - we use the MDR register to hold the MSW of the product
+ */
+static inline __attribute__((const))
+signed __muldiv64s(signed val, signed mult, signed div)
+{
+       signed result;
+
+       asm("mul        %2,%0   \n"     /* MDR:val = val*mult */
+           "div        %3,%0   \n"     /* val = MDR:val/div;
+                                        * MDR = MDR:val%div */
+           : "=r"(result)
+           : "0"(val), "ir"(mult), "r"(div)
+           );
+
+       return result;
+}
+
+#endif /* _ASM_DIV64 */
diff --git a/arch/mn10300/include/asm/dma-mapping.h b/arch/mn10300/include/asm/dma-mapping.h
new file mode 100644 (file)
index 0000000..ccae8f6
--- /dev/null
@@ -0,0 +1,234 @@
+/* DMA mapping routines for the MN10300 arch
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_DMA_MAPPING_H
+#define _ASM_DMA_MAPPING_H
+
+#include <linux/mm.h>
+#include <linux/scatterlist.h>
+
+#include <asm/cache.h>
+#include <asm/io.h>
+
+extern void *dma_alloc_coherent(struct device *dev, size_t size,
+                               dma_addr_t *dma_handle, int flag);
+
+extern void dma_free_coherent(struct device *dev, size_t size,
+                             void *vaddr, dma_addr_t dma_handle);
+
+#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent((d), (s), (h), (f))
+#define dma_free_noncoherent(d, s, v, h)  dma_free_coherent((d), (s), (v), (h))
+
+/*
+ * Map a single buffer of the indicated size for DMA in streaming mode.  The
+ * 32-bit bus address to use is returned.
+ *
+ * Once the device is given the dma address, the device owns this memory until
+ * either pci_unmap_single or pci_dma_sync_single is performed.
+ */
+static inline
+dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
+                         enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+       mn10300_dcache_flush_inv();
+       return virt_to_bus(ptr);
+}
+
+/*
+ * Unmap a single streaming mode DMA translation.  The dma_addr and size must
+ * match what was provided for in a previous pci_map_single call.  All other
+ * usages are undefined.
+ *
+ * After this call, reads by the cpu to the buffer are guarenteed to see
+ * whatever the device wrote there.
+ */
+static inline
+void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
+                     enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+}
+
+/*
+ * Map a set of buffers described by scatterlist in streaming mode for DMA.
+ * This is the scather-gather version of the above pci_map_single interface.
+ * Here the scatter gather list elements are each tagged with the appropriate
+ * dma address and length.  They are obtained via sg_dma_{address,length}(SG).
+ *
+ * NOTE: An implementation may be able to use a smaller number of DMA
+ *       address/length pairs than there are SG table elements.  (for example
+ *       via virtual mapping capabilities) The routine returns the number of
+ *       addr/length pairs actually used, at most nents.
+ *
+ * Device ownership issues as mentioned above for pci_map_single are the same
+ * here.
+ */
+static inline
+int dma_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
+              enum dma_data_direction direction)
+{
+       struct scatterlist *sg;
+       int i;
+
+       BUG_ON(!valid_dma_direction(direction));
+       WARN_ON(nents == 0 || sglist[0].length == 0);
+
+       for_each_sg(sglist, sg, nents, i) {
+               BUG_ON(!sg_page(sg));
+
+               sg->dma_address = sg_phys(sg);
+       }
+
+       mn10300_dcache_flush_inv();
+       return nents;
+}
+
+/*
+ * Unmap a set of streaming mode DMA translations.
+ * Again, cpu read rules concerning calls here are the same as for
+ * pci_unmap_single() above.
+ */
+static inline
+void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
+                 enum dma_data_direction direction)
+{
+       BUG_ON(!valid_dma_direction(direction));
+}
+
+/*
+ * pci_{map,unmap}_single_page maps a kernel page to a dma_addr_t. identical
+ * to pci_map_single, but takes a struct page instead of a virtual address
+ */
+static inline
+dma_addr_t dma_map_page(struct device *dev, struct page *page,
+                       unsigned long offset, size_t size,
+                       enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+       return page_to_bus(page) + offset;
+}
+
+static inline
+void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
+                   enum dma_data_direction direction)
+{
+       BUG_ON(direction == DMA_NONE);
+}
+
+/*
+ * Make physical memory consistent for a single streaming mode DMA translation
+ * after a transfer.
+ *
+ * If you perform a pci_map_single() but wish to interrogate the buffer using
+ * the cpu, yet do not wish to teardown the PCI dma mapping, you must call this
+ * function before doing so.  At the next point you give the PCI dma address
+ * back to the card, the device again owns the buffer.
+ */
+static inline
+void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
+                            size_t size, enum dma_data_direction direction)
+{
+}
+
+static inline
+void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
+                               size_t size, enum dma_data_direction direction)
+{
+       mn10300_dcache_flush_inv();
+}
+
+static inline
+void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle,
+                                  unsigned long offset, size_t size,
+                                  enum dma_data_direction direction)
+{
+}
+
+static inline void
+dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle,
+                                unsigned long offset, size_t size,
+                                enum dma_data_direction direction)
+{
+       mn10300_dcache_flush_inv();
+}
+
+
+/*
+ * Make physical memory consistent for a set of streaming mode DMA translations
+ * after a transfer.
+ *
+ * The same as pci_dma_sync_single but for a scatter-gather list, same rules
+ * and usage.
+ */
+static inline
+void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
+                        int nelems, enum dma_data_direction direction)
+{
+}
+
+static inline
+void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
+                           int nelems, enum dma_data_direction direction)
+{
+       mn10300_dcache_flush_inv();
+}
+
+static inline
+int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
+{
+       return 0;
+}
+
+/*
+ * Return whether the given PCI device DMA address mask can be supported
+ * properly.  For example, if your device can only drive the low 24-bits during
+ * PCI bus mastering, then you would pass 0x00ffffff as the mask to this
+ * function.
+ */
+static inline
+int dma_supported(struct device *dev, u64 mask)
+{
+       /*
+        * we fall back to GFP_DMA when the mask isn't all 1s, so we can't
+        * guarantee allocations that must be within a tighter range than
+        * GFP_DMA
+        */
+       if (mask < 0x00ffffff)
+               return 0;
+       return 1;
+}
+
+static inline
+int dma_set_mask(struct device *dev, u64 mask)
+{
+       if (!dev->dma_mask || !dma_supported(dev, mask))
+               return -EIO;
+
+       *dev->dma_mask = mask;
+       return 0;
+}
+
+static inline
+int dma_get_cache_alignment(void)
+{
+       return 1 << L1_CACHE_SHIFT;
+}
+
+#define dma_is_consistent(d)   (1)
+
+static inline
+void dma_cache_sync(void *vaddr, size_t size,
+                   enum dma_data_direction direction)
+{
+       mn10300_dcache_flush_inv();
+}
+
+#endif
diff --git a/arch/mn10300/include/asm/dma.h b/arch/mn10300/include/asm/dma.h
new file mode 100644 (file)
index 0000000..098df2e
--- /dev/null
@@ -0,0 +1,118 @@
+/* MN10300 ISA DMA handlers and definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_DMA_H
+#define _ASM_DMA_H
+
+#include <asm/system.h>
+#include <linux/spinlock.h>
+#include <asm/io.h>
+#include <linux/delay.h>
+
+#undef MAX_DMA_CHANNELS                /* switch off linux/kernel/dma.c */
+#define MAX_DMA_ADDRESS                0xbfffffff
+
+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)
+{
+}
+
+static inline void disable_dma(unsigned int dmanr)
+{
+}
+
+/* Clear the 'DMA Pointer Flip Flop'.
+ * Write 0 for LSB/MSB, 1 for MSB/LSB access.
+ * 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 holding the DMA lock ! ---
+ */
+static inline void clear_dma_ff(unsigned int dmanr)
+{
+}
+
+/* set mode (above) for a specific DMA channel */
+static inline void set_dma_mode(unsigned int dmanr, char mode)
+{
+}
+
+/* Set only the page register bits of the transfer address.
+ * This is used for successive transfers when we know the contents of
+ * the lower 16 bits of the DMA current address register, but a 64k boundary
+ * may have been crossed.
+ */
+static inline void set_dma_page(unsigned int dmanr, char pagenr)
+{
+}
+
+
+/* Set transfer address & page bits for specific DMA channel.
+ * Assumes dma flipflop is clear.
+ */
+static inline void set_dma_addr(unsigned int dmanr, unsigned int a)
+{
+}
+
+
+/* Set transfer size (max 64k for DMA1..3, 128k for DMA5..7) for
+ * a specific DMA channel.
+ * You must ensure the parameters are valid.
+ * NOTE: from a manual: "the number of transfers is one more
+ * than the initial word count"! This is taken into account.
+ * Assumes dma flip-flop is clear.
+ * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7.
+ */
+static inline void set_dma_count(unsigned int dmanr, unsigned int count)
+{
+}
+
+
+/* Get DMA residue count. After a DMA transfer, this
+ * should return zero. Reading this while a DMA transfer is
+ * still in progress will return unpredictable results.
+ * If called before the channel has been used, it may return 1.
+ * Otherwise, it returns the number of _bytes_ left to transfer.
+ *
+ * Assumes DMA flip-flop is clear.
+ */
+static inline int get_dma_residue(unsigned int dmanr)
+{
+       return 0;
+}
+
+
+/* These are in kernel/dma.c: */
+extern int request_dma(unsigned int dmanr, const char *device_id);
+extern void free_dma(unsigned int dmanr);
+
+/* From PCI */
+
+#ifdef CONFIG_PCI
+extern int isa_dma_bridge_buggy;
+#else
+#define isa_dma_bridge_buggy   (0)
+#endif
+
+#endif /* _ASM_DMA_H */
diff --git a/arch/mn10300/include/asm/dmactl-regs.h b/arch/mn10300/include/asm/dmactl-regs.h
new file mode 100644 (file)
index 0000000..58a199d
--- /dev/null
@@ -0,0 +1,101 @@
+/* MN10300 on-board DMA controller registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_DMACTL_REGS_H
+#define _ASM_DMACTL_REGS_H
+
+#include <asm/cpu-regs.h>
+
+#ifdef __KERNEL__
+
+/* DMA registers */
+#define        DMxCTR(N)               __SYSREG(0xd2000000 + ((N) * 0x100), u32)       /* control reg */
+#define        DMxCTR_BG               0x0000001f      /* transfer request source */
+#define        DMxCTR_BG_SOFT          0x00000000      /* - software source */
+#define        DMxCTR_BG_SC0TX         0x00000002      /* - serial port 0 transmission */
+#define        DMxCTR_BG_SC0RX         0x00000003      /* - serial port 0 reception */
+#define        DMxCTR_BG_SC1TX         0x00000004      /* - serial port 1 transmission */
+#define        DMxCTR_BG_SC1RX         0x00000005      /* - serial port 1 reception */
+#define        DMxCTR_BG_SC2TX         0x00000006      /* - serial port 2 transmission */
+#define        DMxCTR_BG_SC2RX         0x00000007      /* - serial port 2 reception */
+#define        DMxCTR_BG_TM0UFLOW      0x00000008      /* - timer 0 underflow */
+#define        DMxCTR_BG_TM1UFLOW      0x00000009      /* - timer 1 underflow */
+#define        DMxCTR_BG_TM2UFLOW      0x0000000a      /* - timer 2 underflow */
+#define        DMxCTR_BG_TM3UFLOW      0x0000000b      /* - timer 3 underflow */
+#define        DMxCTR_BG_TM6ACMPCAP    0x0000000c      /* - timer 6A compare/capture */
+#define        DMxCTR_BG_AFE           0x0000000d      /* - analogue front-end interrupt source */
+#define        DMxCTR_BG_ADC           0x0000000e      /* - A/D conversion end interrupt source */
+#define        DMxCTR_BG_IRDA          0x0000000f      /* - IrDA interrupt source */
+#define        DMxCTR_BG_RTC           0x00000010      /* - RTC interrupt source */
+#define        DMxCTR_BG_XIRQ0         0x00000011      /* - XIRQ0 pin interrupt source */
+#define        DMxCTR_BG_XIRQ1         0x00000012      /* - XIRQ1 pin interrupt source */
+#define        DMxCTR_BG_XDMR0         0x00000013      /* - external request 0 source (XDMR0 pin) */
+#define        DMxCTR_BG_XDMR1         0x00000014      /* - external request 1 source (XDMR1 pin) */
+#define        DMxCTR_SAM              0x000000e0      /* DMA transfer src addr mode */
+#define        DMxCTR_SAM_INCR         0x00000000      /* - increment */
+#define        DMxCTR_SAM_DECR         0x00000020      /* - decrement */
+#define        DMxCTR_SAM_FIXED        0x00000040      /* - fixed */
+#define        DMxCTR_DAM              0x00000000      /* DMA transfer dest addr mode */
+#define        DMxCTR_DAM_INCR         0x00000000      /* - increment */
+#define        DMxCTR_DAM_DECR         0x00000100      /* - decrement */
+#define        DMxCTR_DAM_FIXED        0x00000200      /* - fixed */
+#define        DMxCTR_TM               0x00001800      /* DMA transfer mode */
+#define        DMxCTR_TM_BATCH         0x00000000      /* - batch transfer */
+#define        DMxCTR_TM_INTERM        0x00001000      /* - intermittent transfer */
+#define        DMxCTR_UT               0x00006000      /* DMA transfer unit */
+#define        DMxCTR_UT_1             0x00000000      /* - 1 byte */
+#define        DMxCTR_UT_2             0x00002000      /* - 2 byte */
+#define        DMxCTR_UT_4             0x00004000      /* - 4 byte */
+#define        DMxCTR_UT_16            0x00006000      /* - 16 byte */
+#define        DMxCTR_TEN              0x00010000      /* DMA channel transfer enable */
+#define        DMxCTR_RQM              0x00060000      /* external request input source mode */
+#define        DMxCTR_RQM_FALLEDGE     0x00000000      /* - falling edge */
+#define        DMxCTR_RQM_RISEEDGE     0x00020000      /* - rising edge */
+#define        DMxCTR_RQM_LOLEVEL      0x00040000      /* - low level */
+#define        DMxCTR_RQM_HILEVEL      0x00060000      /* - high level */
+#define        DMxCTR_RQF              0x01000000      /* DMA transfer request flag */
+#define        DMxCTR_XEND             0x80000000      /* DMA transfer end flag */
+
+#define        DMxSRC(N)               __SYSREG(0xd2000004 + ((N) * 0x100), u32)       /* control reg */
+
+#define        DMxDST(N)               __SYSREG(0xd2000008 + ((N) * 0x100), u32)       /* src addr reg */
+
+#define        DMxSIZ(N)               __SYSREG(0xd200000c + ((N) * 0x100), u32)       /* dest addr reg */
+#define DMxSIZ_CT              0x000fffff      /* number of bytes to transfer */
+
+#define        DMxCYC(N)               __SYSREG(0xd2000010 + ((N) * 0x100), u32)       /* intermittent
+                                                                                * size reg */
+#define DMxCYC_CYC             0x000000ff      /* number of interrmittent transfers -1 */
+
+#define DM0IRQ                 16              /* DMA channel 0 complete IRQ */
+#define DM1IRQ                 17              /* DMA channel 1 complete IRQ */
+#define DM2IRQ                 18              /* DMA channel 2 complete IRQ */
+#define DM3IRQ                 19              /* DMA channel 3 complete IRQ */
+
+#define        DM0ICR                  GxICR(DM0IRQ)   /* DMA channel 0 complete intr ctrl reg */
+#define        DM1ICR                  GxICR(DM0IR1)   /* DMA channel 1 complete intr ctrl reg */
+#define        DM2ICR                  GxICR(DM0IR2)   /* DMA channel 2 complete intr ctrl reg */
+#define        DM3ICR                  GxICR(DM0IR3)   /* DMA channel 3 complete intr ctrl reg */
+
+#ifndef __ASSEMBLY__
+
+struct mn10300_dmactl_regs {
+       u32             ctr;
+       const void      *src;
+       void            *dst;
+       u32             siz;
+       u32             cyc;
+} __attribute__((aligned(0x100)));
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_DMACTL_REGS_H */
diff --git a/arch/mn10300/include/asm/elf.h b/arch/mn10300/include/asm/elf.h
new file mode 100644 (file)
index 0000000..bf09f8b
--- /dev/null
@@ -0,0 +1,147 @@
+/* MN10300 ELF constant and register definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_ELF_H
+#define _ASM_ELF_H
+
+#include <linux/utsname.h>
+#include <asm/ptrace.h>
+#include <asm/user.h>
+
+/*
+ * AM33 relocations
+ */
+#define R_MN10300_NONE         0       /* No reloc.  */
+#define R_MN10300_32           1       /* Direct 32 bit.  */
+#define R_MN10300_16           2       /* Direct 16 bit.  */
+#define R_MN10300_8            3       /* Direct 8 bit.  */
+#define R_MN10300_PCREL32      4       /* PC-relative 32-bit.  */
+#define R_MN10300_PCREL16      5       /* PC-relative 16-bit signed.  */
+#define R_MN10300_PCREL8       6       /* PC-relative 8-bit signed.  */
+#define R_MN10300_24           9       /* Direct 24 bit.  */
+#define R_MN10300_RELATIVE     23      /* Adjust by program base.  */
+
+/*
+ * ELF register definitions..
+ */
+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];
+
+#define ELF_NFPREG 32
+typedef float elf_fpreg_t;
+
+typedef struct {
+       elf_fpreg_t     fpregs[ELF_NFPREG];
+       u_int32_t       fpcr;
+} elf_fpregset_t;
+
+extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
+
+/*
+ * This is used to ensure we don't load something for the wrong architecture
+ */
+#define elf_check_arch(x) \
+       (((x)->e_machine == EM_CYGNUS_MN10300) ||       \
+        ((x)->e_machine == EM_MN10300))
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_CLASS      ELFCLASS32
+#define ELF_DATA       ELFDATA2LSB
+#define ELF_ARCH       EM_MN10300
+
+/*
+ * ELF process initialiser
+ */
+#define ELF_PLAT_INIT(_r, load_addr)                                   \
+do {                                                                   \
+       struct pt_regs *_ur = current->thread.uregs;                    \
+       _ur->a3   = 0;  _ur->a2   = 0;  _ur->d3   = 0;  _ur->d2   = 0;  \
+       _ur->mcvf = 0;  _ur->mcrl = 0;  _ur->mcrh = 0;  _ur->mdrq = 0;  \
+       _ur->e1   = 0;  _ur->e0   = 0;  _ur->e7   = 0;  _ur->e6   = 0;  \
+       _ur->e5   = 0;  _ur->e4   = 0;  _ur->e3   = 0;  _ur->e2   = 0;  \
+       _ur->lar  = 0;  _ur->lir  = 0;  _ur->mdr  = 0;                  \
+       _ur->a1   = 0;  _ur->a0   = 0;  _ur->d1   = 0;  _ur->d0   = 0;  \
+} while (0)
+
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE      4096
+
+/*
+ * This is the location that an ET_DYN program is loaded if exec'ed.  Typical
+ * use of this is to invoke "./ld.so someprog" to test out a new version of
+ * 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.
+ * - must clear the VMALLOC area
+ */
+#define ELF_ET_DYN_BASE         0x04000000
+
+/*
+ * regs is struct pt_regs, pr_reg is elf_gregset_t (which is
+ * now struct user_regs, they are different)
+ * - ELF_CORE_COPY_REGS has been guessed, and may be wrong
+ */
+#define ELF_CORE_COPY_REGS(pr_reg, regs)       \
+do {                                           \
+       pr_reg[0]       = regs->a3;             \
+       pr_reg[1]       = regs->a2;             \
+       pr_reg[2]       = regs->d3;             \
+       pr_reg[3]       = regs->d2;             \
+       pr_reg[4]       = regs->mcvf;           \
+       pr_reg[5]       = regs->mcrl;           \
+       pr_reg[6]       = regs->mcrh;           \
+       pr_reg[7]       = regs->mdrq;           \
+       pr_reg[8]       = regs->e1;             \
+       pr_reg[9]       = regs->e0;             \
+       pr_reg[10]      = regs->e7;             \
+       pr_reg[11]      = regs->e6;             \
+       pr_reg[12]      = regs->e5;             \
+       pr_reg[13]      = regs->e4;             \
+       pr_reg[14]      = regs->e3;             \
+       pr_reg[15]      = regs->e2;             \
+       pr_reg[16]      = regs->sp;             \
+       pr_reg[17]      = regs->lar;            \
+       pr_reg[18]      = regs->lir;            \
+       pr_reg[19]      = regs->mdr;            \
+       pr_reg[20]      = regs->a1;             \
+       pr_reg[21]      = regs->a0;             \
+       pr_reg[22]      = regs->d1;             \
+       pr_reg[23]      = regs->d0;             \
+       pr_reg[24]      = regs->orig_d0;        \
+       pr_reg[25]      = regs->epsw;           \
+       pr_reg[26]      = regs->pc;             \
+} while (0);
+
+/*
+ * This yields a mask that user programs can use to figure out what
+ * instruction set this CPU supports.  This could be done in user space,
+ * but it's not easy, and we've already done it here.
+ */
+#define ELF_HWCAP      (0)
+
+/*
+ * This yields a string that ld.so will use to load implementation
+ * specific libraries for optimization.  This is more specific in
+ * intent than poking at uname or /proc/cpuinfo.
+ *
+ * For the moment, we have only optimizations for the Intel generations,
+ * but that could change...
+ */
+#define ELF_PLATFORM  (NULL)
+
+#ifdef __KERNEL__
+#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
+#endif
+
+#endif /* _ASM_ELF_H */
diff --git a/arch/mn10300/include/asm/emergency-restart.h b/arch/mn10300/include/asm/emergency-restart.h
new file mode 100644 (file)
index 0000000..3711bd9
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/emergency-restart.h>
diff --git a/arch/mn10300/include/asm/errno.h b/arch/mn10300/include/asm/errno.h
new file mode 100644 (file)
index 0000000..4c82b50
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/errno.h>
diff --git a/arch/mn10300/include/asm/exceptions.h b/arch/mn10300/include/asm/exceptions.h
new file mode 100644 (file)
index 0000000..fa16466
--- /dev/null
@@ -0,0 +1,121 @@
+/* MN10300 Microcontroller core exceptions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_EXCEPTIONS_H
+#define _ASM_EXCEPTIONS_H
+
+#include <linux/linkage.h>
+
+/*
+ * define the breakpoint instruction opcode to use
+ * - note that the JTAG unit steals 0xFF, so we want to avoid that if we can
+ *   (can use 0xF7)
+ */
+#define GDBSTUB_BKPT           0xFF
+
+#ifndef __ASSEMBLY__
+
+/*
+ * enumeration of exception codes (as extracted from TBR MSW)
+ */
+enum exception_code {
+       EXCEP_RESET             = 0x000000,     /* reset */
+
+       /* MMU exceptions */
+       EXCEP_ITLBMISS          = 0x000100,     /* instruction TLB miss */
+       EXCEP_DTLBMISS          = 0x000108,     /* data TLB miss */
+       EXCEP_IAERROR           = 0x000110,     /* instruction address */
+       EXCEP_DAERROR           = 0x000118,     /* data address */
+
+       /* system exceptions */
+       EXCEP_TRAP              = 0x000128,     /* program interrupt (PI instruction) */
+       EXCEP_ISTEP             = 0x000130,     /* single step */
+       EXCEP_IBREAK            = 0x000150,     /* instruction breakpoint */
+       EXCEP_OBREAK            = 0x000158,     /* operand breakpoint */
+       EXCEP_PRIVINS           = 0x000160,     /* privileged instruction execution */
+       EXCEP_UNIMPINS          = 0x000168,     /* unimplemented instruction execution */
+       EXCEP_UNIMPEXINS        = 0x000170,     /* unimplemented extended instruction execution */
+       EXCEP_MEMERR            = 0x000178,     /* illegal memory access */
+       EXCEP_MISALIGN          = 0x000180,     /* misalignment */
+       EXCEP_BUSERROR          = 0x000188,     /* bus error */
+       EXCEP_ILLINSACC         = 0x000190,     /* illegal instruction access */
+       EXCEP_ILLDATACC         = 0x000198,     /* illegal data access */
+       EXCEP_IOINSACC          = 0x0001a0,     /* I/O space instruction access */
+       EXCEP_PRIVINSACC        = 0x0001a8,     /* privileged space instruction access */
+       EXCEP_PRIVDATACC        = 0x0001b0,     /* privileged space data access */
+       EXCEP_DATINSACC         = 0x0001b8,     /* data space instruction access */
+       EXCEP_DOUBLE_FAULT      = 0x000200,     /* double fault */
+
+       /* FPU exceptions */
+       EXCEP_FPU_DISABLED      = 0x0001c0,     /* FPU disabled */
+       EXCEP_FPU_UNIMPINS      = 0x0001c8,     /* FPU unimplemented operation */
+       EXCEP_FPU_OPERATION     = 0x0001d0,     /* FPU operation */
+
+       /* interrupts */
+       EXCEP_WDT               = 0x000240,     /* watchdog timer overflow */
+       EXCEP_NMI               = 0x000248,     /* non-maskable interrupt */
+       EXCEP_IRQ_LEVEL0        = 0x000280,     /* level 0 maskable interrupt */
+       EXCEP_IRQ_LEVEL1        = 0x000288,     /* level 1 maskable interrupt */
+       EXCEP_IRQ_LEVEL2        = 0x000290,     /* level 2 maskable interrupt */
+       EXCEP_IRQ_LEVEL3        = 0x000298,     /* level 3 maskable interrupt */
+       EXCEP_IRQ_LEVEL4        = 0x0002a0,     /* level 4 maskable interrupt */
+       EXCEP_IRQ_LEVEL5        = 0x0002a8,     /* level 5 maskable interrupt */
+       EXCEP_IRQ_LEVEL6        = 0x0002b0,     /* level 6 maskable interrupt */
+
+       /* system calls */
+       EXCEP_SYSCALL0          = 0x000300,     /* system call 0 */
+       EXCEP_SYSCALL1          = 0x000308,     /* system call 1 */
+       EXCEP_SYSCALL2          = 0x000310,     /* system call 2 */
+       EXCEP_SYSCALL3          = 0x000318,     /* system call 3 */
+       EXCEP_SYSCALL4          = 0x000320,     /* system call 4 */
+       EXCEP_SYSCALL5          = 0x000328,     /* system call 5 */
+       EXCEP_SYSCALL6          = 0x000330,     /* system call 6 */
+       EXCEP_SYSCALL7          = 0x000338,     /* system call 7 */
+       EXCEP_SYSCALL8          = 0x000340,     /* system call 8 */
+       EXCEP_SYSCALL9          = 0x000348,     /* system call 9 */
+       EXCEP_SYSCALL10         = 0x000350,     /* system call 10 */
+       EXCEP_SYSCALL11         = 0x000358,     /* system call 11 */
+       EXCEP_SYSCALL12         = 0x000360,     /* system call 12 */
+       EXCEP_SYSCALL13         = 0x000368,     /* system call 13 */
+       EXCEP_SYSCALL14         = 0x000370,     /* system call 14 */
+       EXCEP_SYSCALL15         = 0x000378,     /* system call 15 */
+};
+
+extern void __set_intr_stub(enum exception_code code, void *handler);
+extern void set_intr_stub(enum exception_code code, void *handler);
+extern void set_jtag_stub(enum exception_code code, void *handler);
+
+struct pt_regs;
+
+extern asmlinkage void __common_exception(void);
+extern asmlinkage void itlb_miss(void);
+extern asmlinkage void dtlb_miss(void);
+extern asmlinkage void itlb_aerror(void);
+extern asmlinkage void dtlb_aerror(void);
+extern asmlinkage void raw_bus_error(void);
+extern asmlinkage void double_fault(void);
+extern asmlinkage int  system_call(struct pt_regs *);
+extern asmlinkage void fpu_exception(struct pt_regs *, enum exception_code);
+extern asmlinkage void nmi(struct pt_regs *, enum exception_code);
+extern asmlinkage void uninitialised_exception(struct pt_regs *,
+                                              enum exception_code);
+extern asmlinkage void irq_handler(void);
+extern asmlinkage void profile_handler(void);
+extern asmlinkage void nmi_handler(void);
+extern asmlinkage void misalignment(struct pt_regs *, enum exception_code);
+
+extern void die(const char *, struct pt_regs *, enum exception_code)
+       ATTRIB_NORET;
+
+extern int die_if_no_fixup(const char *, struct pt_regs *, enum exception_code);
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_EXCEPTIONS_H */
diff --git a/arch/mn10300/include/asm/fb.h b/arch/mn10300/include/asm/fb.h
new file mode 100644 (file)
index 0000000..697b24a
--- /dev/null
@@ -0,0 +1,23 @@
+/* MN10300 Frame buffer stuff
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_FB_H
+#define _ASM_FB_H
+
+#include <linux/fb.h>
+
+#define fb_pgprotect(...) do {} while (0)
+
+static inline int fb_is_primary_device(struct fb_info *info)
+{
+       return 0;
+}
+
+#endif /* _ASM_FB_H */
diff --git a/arch/mn10300/include/asm/fcntl.h b/arch/mn10300/include/asm/fcntl.h
new file mode 100644 (file)
index 0000000..46ab12d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/fcntl.h>
diff --git a/arch/mn10300/include/asm/fpu.h b/arch/mn10300/include/asm/fpu.h
new file mode 100644 (file)
index 0000000..64a2b83
--- /dev/null
@@ -0,0 +1,85 @@
+/* MN10300 FPU definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * Derived from include/asm-i386/i387.h: Copyright (C) 1994 Linus Torvalds
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_FPU_H
+#define _ASM_FPU_H
+
+#include <asm/processor.h>
+#include <asm/sigcontext.h>
+#include <asm/user.h>
+
+#ifdef __KERNEL__
+
+/* the task that owns the FPU state */
+extern struct task_struct *fpu_state_owner;
+
+#define set_using_fpu(tsk)                             \
+do {                                                   \
+       (tsk)->thread.fpu_flags |= THREAD_USING_FPU;    \
+} while (0)
+
+#define clear_using_fpu(tsk)                           \
+do {                                                   \
+       (tsk)->thread.fpu_flags &= ~THREAD_USING_FPU;   \
+} while (0)
+
+#define is_using_fpu(tsk) ((tsk)->thread.fpu_flags & THREAD_USING_FPU)
+
+#define unlazy_fpu(tsk)                                        \
+do {                                                   \
+       preempt_disable();                              \
+       if (fpu_state_owner == (tsk))                   \
+               fpu_save(&tsk->thread.fpu_state);       \
+       preempt_enable();                               \
+} while (0)
+
+#define exit_fpu()                             \
+do {                                           \
+       struct task_struct *__tsk = current;    \
+       preempt_disable();                      \
+       if (fpu_state_owner == __tsk)           \
+               fpu_state_owner = NULL;         \
+       preempt_enable();                       \
+} while (0)
+
+#define flush_fpu()                                    \
+do {                                                   \
+       struct task_struct *__tsk = current;            \
+       preempt_disable();                              \
+       if (fpu_state_owner == __tsk) {                 \
+               fpu_state_owner = NULL;                 \
+               __tsk->thread.uregs->epsw &= ~EPSW_FE;  \
+       }                                               \
+       preempt_enable();                               \
+       clear_using_fpu(__tsk);                         \
+} while (0)
+
+extern asmlinkage void fpu_init_state(void);
+extern asmlinkage void fpu_kill_state(struct task_struct *);
+extern asmlinkage void fpu_disabled(struct pt_regs *, enum exception_code);
+extern asmlinkage void fpu_exception(struct pt_regs *, enum exception_code);
+
+#ifdef CONFIG_FPU
+extern asmlinkage void fpu_save(struct fpu_state_struct *);
+extern asmlinkage void fpu_restore(struct fpu_state_struct *);
+#else
+#define fpu_save(a)
+#define fpu_restore(a)
+#endif /* CONFIG_FPU  */
+
+/*
+ * signal frame handlers
+ */
+extern int fpu_setup_sigcontext(struct fpucontext *buf);
+extern int fpu_restore_sigcontext(struct fpucontext *buf);
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_FPU_H */
diff --git a/arch/mn10300/include/asm/frame.inc b/arch/mn10300/include/asm/frame.inc
new file mode 100644 (file)
index 0000000..5b1949b
--- /dev/null
@@ -0,0 +1,91 @@
+/* MN10300 Microcontroller core system register definitions -*- asm -*-
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_FRAME_INC
+#define _ASM_FRAME_INC
+
+#ifndef __ASSEMBLY__
+#error not for use in C files
+#endif
+
+#ifndef __ASM_OFFSETS_H__
+#include <asm/asm-offsets.h>
+#endif
+
+#define pi break
+
+#define fp a3
+
+###############################################################################
+#
+# build a stack frame from the registers
+# - the caller has subtracted 4 from SP before coming here
+#
+###############################################################################
+.macro SAVE_ALL
+       add     -4,sp                           # next exception frame ptr save area
+       movm    [other],(sp)
+       mov     usp,a1
+       mov     a1,(sp)                         # USP in MOVM[other] dummy slot
+       movm    [d2,d3,a2,a3,exreg0,exreg1,exother],(sp)
+       mov     sp,fp                           # FRAME pointer in A3
+       add     -12,sp                          # allow for calls to be made
+       mov     (__frame),a1
+       mov     a1,(REG_NEXT,fp)
+       mov     fp,(__frame)
+
+       and     ~EPSW_FE,epsw                   # disable the FPU inside the kernel
+
+       # we may be holding current in E2
+#ifdef CONFIG_MN10300_CURRENT_IN_E2
+       mov     (__current),e2
+#endif
+.endm
+
+###############################################################################
+#
+# restore the registers from a stack frame
+#
+###############################################################################
+.macro RESTORE_ALL
+       # peel back the stack to the calling frame
+       # - this permits execve() to discard extra frames due to kernel syscalls
+       mov     (__frame),fp
+       mov     fp,sp
+       mov     (REG_NEXT,fp),d0                # userspace has regs->next == 0
+       mov     d0,(__frame)
+
+#ifndef CONFIG_MN10300_USING_JTAG
+       mov     (REG_EPSW,fp),d0
+       btst    EPSW_T,d0
+       beq     99f
+
+       or      EPSW_NMID,epsw
+       movhu   (DCR),d1
+       or      0x0001, d1
+       movhu   d1,(DCR)
+
+99:
+#endif
+       movm    (sp),[d2,d3,a2,a3,exreg0,exreg1,exother]
+
+       # must restore usp even if returning to kernel space,
+       # when CONFIG_PREEMPT is enabled.
+       mov     (sp),a1                         # USP in MOVM[other] dummy slot
+       mov     a1,usp
+
+       movm    (sp),[other]
+       add     8,sp
+       rti
+
+.endm
+
+
+#endif /* _ASM_FRAME_INC */
diff --git a/arch/mn10300/include/asm/ftrace.h b/arch/mn10300/include/asm/ftrace.h
new file mode 100644 (file)
index 0000000..40a8c17
--- /dev/null
@@ -0,0 +1 @@
+/* empty */
diff --git a/arch/mn10300/include/asm/futex.h b/arch/mn10300/include/asm/futex.h
new file mode 100644 (file)
index 0000000..0b74582
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/futex.h>
diff --git a/arch/mn10300/include/asm/gdb-stub.h b/arch/mn10300/include/asm/gdb-stub.h
new file mode 100644 (file)
index 0000000..e5a6368
--- /dev/null
@@ -0,0 +1,183 @@
+/* MN10300 Kernel GDB stub definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from asm-mips/gdb-stub.h (c) 1995 Andreas Busse
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_GDB_STUB_H
+#define _ASM_GDB_STUB_H
+
+#include <asm/exceptions.h>
+
+/*
+ * register ID numbers in GDB remote protocol
+ */
+
+#define GDB_REGID_PC           9
+#define GDB_REGID_FP           7
+#define GDB_REGID_SP           8
+
+/*
+ * virtual stack layout for the GDB exception handler
+ */
+#define NUMREGS                        64
+
+#define GDB_FR_D0              (0 * 4)
+#define GDB_FR_D1              (1 * 4)
+#define GDB_FR_D2              (2 * 4)
+#define GDB_FR_D3              (3 * 4)
+#define GDB_FR_A0              (4 * 4)
+#define GDB_FR_A1              (5 * 4)
+#define GDB_FR_A2              (6 * 4)
+#define GDB_FR_A3              (7 * 4)
+
+#define GDB_FR_SP              (8 * 4)
+#define GDB_FR_PC              (9 * 4)
+#define GDB_FR_MDR             (10 * 4)
+#define GDB_FR_EPSW            (11 * 4)
+#define GDB_FR_LIR             (12 * 4)
+#define GDB_FR_LAR             (13 * 4)
+#define GDB_FR_MDRQ            (14 * 4)
+
+#define GDB_FR_E0              (15 * 4)
+#define GDB_FR_E1              (16 * 4)
+#define GDB_FR_E2              (17 * 4)
+#define GDB_FR_E3              (18 * 4)
+#define GDB_FR_E4              (19 * 4)
+#define GDB_FR_E5              (20 * 4)
+#define GDB_FR_E6              (21 * 4)
+#define GDB_FR_E7              (22 * 4)
+
+#define GDB_FR_SSP             (23 * 4)
+#define GDB_FR_MSP             (24 * 4)
+#define GDB_FR_USP             (25 * 4)
+#define GDB_FR_MCRH            (26 * 4)
+#define GDB_FR_MCRL            (27 * 4)
+#define GDB_FR_MCVF            (28 * 4)
+
+#define GDB_FR_FPCR            (29 * 4)
+#define GDB_FR_DUMMY0          (30 * 4)
+#define GDB_FR_DUMMY1          (31 * 4)
+
+#define GDB_FR_FS0             (32 * 4)
+
+#define GDB_FR_SIZE            (NUMREGS * 4)
+
+#ifndef __ASSEMBLY__
+
+/*
+ * This is the same as above, but for the high-level
+ * part of the GDB stub.
+ */
+
+struct gdb_regs {
+       /* saved main processor registers */
+       u32     d0, d1, d2, d3, a0, a1, a2, a3;
+       u32     sp, pc, mdr, epsw, lir, lar, mdrq;
+       u32     e0, e1, e2, e3, e4, e5, e6, e7;
+       u32     ssp, msp, usp, mcrh, mcrl, mcvf;
+
+       /* saved floating point registers */
+       u32     fpcr, _dummy0, _dummy1;
+       u32     fs0,  fs1,  fs2,  fs3,  fs4,  fs5,  fs6,  fs7;
+       u32     fs8,  fs9,  fs10, fs11, fs12, fs13, fs14, fs15;
+       u32     fs16, fs17, fs18, fs19, fs20, fs21, fs22, fs23;
+       u32     fs24, fs25, fs26, fs27, fs28, fs29, fs30, fs31;
+};
+
+/*
+ * Prototypes
+ */
+extern void show_registers_only(struct pt_regs *regs);
+
+extern asmlinkage void gdbstub_init(void);
+extern asmlinkage void gdbstub_exit(int status);
+extern asmlinkage void gdbstub_io_init(void);
+extern asmlinkage void gdbstub_io_set_baud(unsigned baud);
+extern asmlinkage int  gdbstub_io_rx_char(unsigned char *_ch, int nonblock);
+extern asmlinkage void gdbstub_io_tx_char(unsigned char ch);
+extern asmlinkage void gdbstub_io_tx_flush(void);
+
+extern asmlinkage void gdbstub_io_rx_handler(void);
+extern asmlinkage void gdbstub_rx_irq(struct pt_regs *, enum exception_code);
+extern asmlinkage int  gdbstub_intercept(struct pt_regs *, enum exception_code);
+extern asmlinkage void gdbstub_exception(struct pt_regs *, enum exception_code);
+extern asmlinkage void __gdbstub_bug_trap(void);
+extern asmlinkage void __gdbstub_pause(void);
+extern asmlinkage void start_kernel(void);
+
+#ifndef CONFIG_MN10300_CACHE_DISABLED
+extern asmlinkage void gdbstub_purge_cache(void);
+#else
+#define gdbstub_purge_cache()  do {} while (0)
+#endif
+
+/* Used to prevent crashes in memory access */
+extern asmlinkage int  gdbstub_read_byte(const u8 *, u8 *);
+extern asmlinkage int  gdbstub_read_word(const u8 *, u8 *);
+extern asmlinkage int  gdbstub_read_dword(const u8 *, u8 *);
+extern asmlinkage int  gdbstub_write_byte(u32, u8 *);
+extern asmlinkage int  gdbstub_write_word(u32, u8 *);
+extern asmlinkage int  gdbstub_write_dword(u32, u8 *);
+
+extern asmlinkage void gdbstub_read_byte_guard(void);
+extern asmlinkage void gdbstub_read_byte_cont(void);
+extern asmlinkage void gdbstub_read_word_guard(void);
+extern asmlinkage void gdbstub_read_word_cont(void);
+extern asmlinkage void gdbstub_read_dword_guard(void);
+extern asmlinkage void gdbstub_read_dword_cont(void);
+extern asmlinkage void gdbstub_write_byte_guard(void);
+extern asmlinkage void gdbstub_write_byte_cont(void);
+extern asmlinkage void gdbstub_write_word_guard(void);
+extern asmlinkage void gdbstub_write_word_cont(void);
+extern asmlinkage void gdbstub_write_dword_guard(void);
+extern asmlinkage void gdbstub_write_dword_cont(void);
+
+extern u8      gdbstub_rx_buffer[PAGE_SIZE];
+extern u32     gdbstub_rx_inp;
+extern u32     gdbstub_rx_outp;
+extern u8      gdbstub_rx_overflow;
+extern u8      gdbstub_busy;
+extern u8      gdbstub_rx_unget;
+
+#ifdef CONFIG_GDBSTUB_DEBUGGING
+extern void gdbstub_printk(const char *fmt, ...)
+       __attribute__((format(printf, 1, 2)));
+#else
+static inline __attribute__((format(printf, 1, 2)))
+void gdbstub_printk(const char *fmt, ...)
+{
+}
+#endif
+
+#ifdef CONFIG_GDBSTUB_DEBUG_ENTRY
+#define gdbstub_entry(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
+#else
+#define gdbstub_entry(FMT, ...) ({ 0; })
+#endif
+
+#ifdef CONFIG_GDBSTUB_DEBUG_PROTOCOL
+#define gdbstub_proto(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
+#else
+#define gdbstub_proto(FMT, ...) ({ 0; })
+#endif
+
+#ifdef CONFIG_GDBSTUB_DEBUG_IO
+#define gdbstub_io(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
+#else
+#define gdbstub_io(FMT, ...) ({ 0; })
+#endif
+
+#ifdef CONFIG_GDBSTUB_DEBUG_BREAKPOINT
+#define gdbstub_bkpt(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
+#else
+#define gdbstub_bkpt(FMT, ...) ({ 0; })
+#endif
+
+#endif /* !__ASSEMBLY__ */
+#endif /* _ASM_GDB_STUB_H */
diff --git a/arch/mn10300/include/asm/hardirq.h b/arch/mn10300/include/asm/hardirq.h
new file mode 100644 (file)
index 0000000..54d9501
--- /dev/null
@@ -0,0 +1,48 @@
+/* MN10300 Hardware IRQ statistics and management
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Modified by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_HARDIRQ_H
+#define _ASM_HARDIRQ_H
+
+#include <linux/threads.h>
+#include <linux/irq.h>
+#include <asm/exceptions.h>
+
+/* assembly code in softirq.h is sensitive to the offsets of these fields */
+typedef struct {
+       unsigned int    __softirq_pending;
+       unsigned long   idle_timestamp;
+       unsigned int    __nmi_count;    /* arch dependent */
+       unsigned int    __irq_count;    /* arch dependent */
+} ____cacheline_aligned irq_cpustat_t;
+
+#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
+
+extern void ack_bad_irq(int irq);
+
+/*
+ * manipulate stubs in the MN10300 CPU Trap/Interrupt Vector table
+ * - these should jump to __common_exception in entry.S unless there's a good
+ *   reason to do otherwise (see trap_preinit() in traps.c)
+ */
+typedef void (*intr_stub_fnx)(struct pt_regs *regs,
+                             enum exception_code intcode);
+
+/*
+ * manipulate pointers in the Exception table (see entry.S)
+ * - these are indexed by decoding the lower 24 bits of the TBR register
+ * - note that the MN103E010 doesn't always trap through the correct vector,
+ *   but does always set the TBR correctly
+ */
+extern asmlinkage void set_excp_vector(enum exception_code code,
+                                      intr_stub_fnx handler);
+
+#endif /* _ASM_HARDIRQ_H */
diff --git a/arch/mn10300/include/asm/highmem.h b/arch/mn10300/include/asm/highmem.h
new file mode 100644 (file)
index 0000000..90f2abb
--- /dev/null
@@ -0,0 +1,116 @@
+/* MN10300 Virtual kernel memory mappings for high memory
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-i386/highmem.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_HIGHMEM_H
+#define _ASM_HIGHMEM_H
+
+#ifdef __KERNEL__
+
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/highmem.h>
+#include <asm/kmap_types.h>
+#include <asm/pgtable.h>
+
+/* undef for production */
+#undef HIGHMEM_DEBUG
+
+/* declarations for highmem.c */
+extern unsigned long highstart_pfn, highend_pfn;
+
+extern pte_t *kmap_pte;
+extern pgprot_t kmap_prot;
+extern pte_t *pkmap_page_table;
+
+extern void __init kmap_init(void);
+
+/*
+ * Right now we initialize only a single pte table. It can be extended
+ * easily, subsequent pte tables have to be allocated in one physical
+ * chunk of RAM.
+ */
+#define PKMAP_BASE     0xfe000000UL
+#define LAST_PKMAP     1024
+#define LAST_PKMAP_MASK (LAST_PKMAP - 1)
+#define PKMAP_NR(virt)  ((virt - PKMAP_BASE) >> PAGE_SHIFT)
+#define PKMAP_ADDR(nr)  (PKMAP_BASE + ((nr) << PAGE_SHIFT))
+
+extern unsigned long kmap_high(struct page *page);
+extern void kunmap_high(struct page *page);
+
+static inline unsigned long kmap(struct page *page)
+{
+       if (in_interrupt())
+               BUG();
+       if (page < highmem_start_page)
+               return page_address(page);
+       return kmap_high(page);
+}
+
+static inline void kunmap(struct page *page)
+{
+       if (in_interrupt())
+               BUG();
+       if (page < highmem_start_page)
+               return;
+       kunmap_high(page);
+}
+
+/*
+ * The use of kmap_atomic/kunmap_atomic is discouraged - kmap/kunmap
+ * gives a more generic (and caching) interface. But kmap_atomic can
+ * be used in IRQ contexts, so in some (very limited) cases we need
+ * it.
+ */
+static inline unsigned long kmap_atomic(struct page *page, enum km_type type)
+{
+       enum fixed_addresses idx;
+       unsigned long vaddr;
+
+       if (page < highmem_start_page)
+               return page_address(page);
+
+       debug_kmap_atomic(type);
+       idx = type + KM_TYPE_NR * smp_processor_id();
+       vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
+#if HIGHMEM_DEBUG
+       if (!pte_none(*(kmap_pte - idx)))
+               BUG();
+#endif
+       set_pte(kmap_pte - idx, mk_pte(page, kmap_prot));
+       __flush_tlb_one(vaddr);
+
+       return vaddr;
+}
+
+static inline void kunmap_atomic(unsigned long vaddr, enum km_type type)
+{
+#if HIGHMEM_DEBUG
+       enum fixed_addresses idx = type + KM_TYPE_NR * smp_processor_id();
+
+       if (vaddr < FIXADDR_START) /* FIXME */
+               return;
+
+       if (vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx))
+               BUG();
+
+       /*
+        * force other mappings to Oops if they'll try to access
+        * this pte without first remap it
+        */
+       pte_clear(kmap_pte - idx);
+       __flush_tlb_one(vaddr);
+#endif
+}
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_HIGHMEM_H */
diff --git a/arch/mn10300/include/asm/hw_irq.h b/arch/mn10300/include/asm/hw_irq.h
new file mode 100644 (file)
index 0000000..7061990
--- /dev/null
@@ -0,0 +1,14 @@
+/* MN10300 Hardware interrupt definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_HW_IRQ_H
+#define _ASM_HW_IRQ_H
+
+#endif /* _ASM_HW_IRQ_H */
diff --git a/arch/mn10300/include/asm/intctl-regs.h b/arch/mn10300/include/asm/intctl-regs.h
new file mode 100644 (file)
index 0000000..ba544c7
--- /dev/null
@@ -0,0 +1,73 @@
+/* MN10300 On-board interrupt controller registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_INTCTL_REGS_H
+#define _ASM_INTCTL_REGS_H
+
+#include <asm/cpu-regs.h>
+
+#ifdef __KERNEL__
+
+/* interrupt controller registers */
+#define GxICR(X)               __SYSREG(0xd4000000 + (X) * 4, u16)     /* group irq ctrl regs */
+
+#define IAGR                   __SYSREG(0xd4000100, u16)       /* intr acceptance group reg */
+#define IAGR_GN                        0x00fc          /* group number register
+                                                * (documentation _has_ to be wrong)
+                                                */
+
+#define EXTMD                  __SYSREG(0xd4000200, u16)       /* external pin intr spec reg */
+#define GET_XIRQ_TRIGGER(X) ((EXTMD >> ((X) * 2)) & 3)
+
+#define SET_XIRQ_TRIGGER(X,Y)                  \
+do {                                           \
+       u16 x = EXTMD;                          \
+       x &= ~(3 << ((X) * 2));                 \
+       x |= ((Y) & 3) << ((X) * 2);            \
+       EXTMD = x;                              \
+} while (0)
+
+#define XIRQ_TRIGGER_LOWLEVEL  0
+#define XIRQ_TRIGGER_HILEVEL   1
+#define XIRQ_TRIGGER_NEGEDGE   2
+#define XIRQ_TRIGGER_POSEDGE   3
+
+/* non-maskable interrupt control */
+#define NMIIRQ                 0
+#define NMICR                  GxICR(NMIIRQ)   /* NMI control register */
+#define NMICR_NMIF             0x0001          /* NMI pin interrupt flag */
+#define NMICR_WDIF             0x0002          /* watchdog timer overflow flag */
+#define NMICR_ABUSERR          0x0008          /* async bus error flag */
+
+/* maskable interrupt control */
+#define GxICR_DETECT           0x0001          /* interrupt detect flag */
+#define GxICR_REQUEST          0x0010          /* interrupt request flag */
+#define GxICR_ENABLE           0x0100          /* interrupt enable flag */
+#define GxICR_LEVEL            0x7000          /* interrupt priority level */
+#define GxICR_LEVEL_0          0x0000          /* - level 0 */
+#define GxICR_LEVEL_1          0x1000          /* - level 1 */
+#define GxICR_LEVEL_2          0x2000          /* - level 2 */
+#define GxICR_LEVEL_3          0x3000          /* - level 3 */
+#define GxICR_LEVEL_4          0x4000          /* - level 4 */
+#define GxICR_LEVEL_5          0x5000          /* - level 5 */
+#define GxICR_LEVEL_6          0x6000          /* - level 6 */
+#define GxICR_LEVEL_SHIFT      12
+
+#ifndef __ASSEMBLY__
+extern void set_intr_level(int irq, u16 level);
+extern void set_intr_postackable(int irq);
+#endif
+
+/* external interrupts */
+#define XIRQxICR(X)            GxICR((X))      /* external interrupt control regs */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_INTCTL_REGS_H */
diff --git a/arch/mn10300/include/asm/io.h b/arch/mn10300/include/asm/io.h
new file mode 100644 (file)
index 0000000..c1a4119
--- /dev/null
@@ -0,0 +1,301 @@
+/* MN10300 I/O port emulation and memory-mapped I/O
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_IO_H
+#define _ASM_IO_H
+
+#include <asm/page.h> /* I/O is all done through memory accesses */
+#include <asm/cpu-regs.h>
+#include <asm/cacheflush.h>
+
+#define mmiowb() do {} while (0)
+
+/*****************************************************************************/
+/*
+ * readX/writeX() are used to access memory mapped devices. On some
+ * architectures the memory mapped IO stuff needs to be accessed
+ * differently. On the x86 architecture, we just read/write the
+ * memory location directly.
+ */
+static inline u8 readb(const volatile void __iomem *addr)
+{
+       return *(const volatile u8 *) addr;
+}
+
+static inline u16 readw(const volatile void __iomem *addr)
+{
+       return *(const volatile u16 *) addr;
+}
+
+static inline u32 readl(const volatile void __iomem *addr)
+{
+       return *(const volatile u32 *) addr;
+}
+
+#define __raw_readb readb
+#define __raw_readw readw
+#define __raw_readl readl
+
+#define readb_relaxed readb
+#define readw_relaxed readw
+#define readl_relaxed readl
+
+static inline void writeb(u8 b, volatile void __iomem *addr)
+{
+       *(volatile u8 *) addr = b;
+}
+
+static inline void writew(u16 b, volatile void __iomem *addr)
+{
+       *(volatile u16 *) addr = b;
+}
+
+static inline void writel(u32 b, volatile void __iomem *addr)
+{
+       *(volatile u32 *) addr = b;
+}
+
+#define __raw_writeb writeb
+#define __raw_writew writew
+#define __raw_writel writel
+
+/*****************************************************************************/
+/*
+ * traditional input/output functions
+ */
+static inline u8 inb_local(unsigned long addr)
+{
+       return readb((volatile void __iomem *) addr);
+}
+
+static inline void outb_local(u8 b, unsigned long addr)
+{
+       return writeb(b, (volatile void __iomem *) addr);
+}
+
+static inline u8 inb(unsigned long addr)
+{
+       return readb((volatile void __iomem *) addr);
+}
+
+static inline u16 inw(unsigned long addr)
+{
+       return readw((volatile void __iomem *) addr);
+}
+
+static inline u32 inl(unsigned long addr)
+{
+       return readl((volatile void __iomem *) addr);
+}
+
+static inline void outb(u8 b, unsigned long addr)
+{
+       return writeb(b, (volatile void __iomem *) addr);
+}
+
+static inline void outw(u16 b, unsigned long addr)
+{
+       return writew(b, (volatile void __iomem *) addr);
+}
+
+static inline void outl(u32 b, unsigned long addr)
+{
+       return writel(b, (volatile void __iomem *) addr);
+}
+
+#define inb_p(addr)    inb(addr)
+#define inw_p(addr)    inw(addr)
+#define inl_p(addr)    inl(addr)
+#define outb_p(x, addr)        outb((x), (addr))
+#define outw_p(x, addr)        outw((x), (addr))
+#define outl_p(x, addr)        outl((x), (addr))
+
+static inline void insb(unsigned long addr, void *buffer, int count)
+{
+       if (count) {
+               u8 *buf = buffer;
+               do {
+                       u8 x = inb(addr);
+                       *buf++ = x;
+               } while (--count);
+       }
+}
+
+static inline void insw(unsigned long addr, void *buffer, int count)
+{
+       if (count) {
+               u16 *buf = buffer;
+               do {
+                       u16 x = inw(addr);
+                       *buf++ = x;
+               } while (--count);
+       }
+}
+
+static inline void insl(unsigned long addr, void *buffer, int count)
+{
+       if (count) {
+               u32 *buf = buffer;
+               do {
+                       u32 x = inl(addr);
+                       *buf++ = x;
+               } while (--count);
+       }
+}
+
+static inline void outsb(unsigned long addr, const void *buffer, int count)
+{
+       if (count) {
+               const u8 *buf = buffer;
+               do {
+                       outb(*buf++, addr);
+               } while (--count);
+       }
+}
+
+static inline void outsw(unsigned long addr, const void *buffer, int count)
+{
+       if (count) {
+               const u16 *buf = buffer;
+               do {
+                       outw(*buf++, addr);
+               } while (--count);
+       }
+}
+
+extern void __outsl(unsigned long addr, const void *buffer, int count);
+static inline void outsl(unsigned long addr, const void *buffer, int count)
+{
+       if ((unsigned long) buffer & 0x3)
+               return __outsl(addr, buffer, count);
+
+       if (count) {
+               const u32 *buf = buffer;
+               do {
+                       outl(*buf++, addr);
+               } while (--count);
+       }
+}
+
+#define ioread8(addr)          readb(addr)
+#define ioread16(addr)         readw(addr)
+#define ioread32(addr)         readl(addr)
+
+#define iowrite8(v, addr)      writeb((v), (addr))
+#define iowrite16(v, addr)     writew((v), (addr))
+#define iowrite32(v, addr)     writel((v), (addr))
+
+#define ioread8_rep(p, dst, count) \
+       insb((unsigned long) (p), (dst), (count))
+#define ioread16_rep(p, dst, count) \
+       insw((unsigned long) (p), (dst), (count))
+#define ioread32_rep(p, dst, count) \
+       insl((unsigned long) (p), (dst), (count))
+
+#define iowrite8_rep(p, src, count) \
+       outsb((unsigned long) (p), (src), (count))
+#define iowrite16_rep(p, src, count) \
+       outsw((unsigned long) (p), (src), (count))
+#define iowrite32_rep(p, src, count) \
+       outsl((unsigned long) (p), (src), (count))
+
+
+#define IO_SPACE_LIMIT 0xffffffff
+
+#ifdef __KERNEL__
+
+#include <linux/vmalloc.h>
+#define __io_virt(x) ((void *) (x))
+
+/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
+struct pci_dev;
+extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
+static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
+{
+}
+
+/*
+ * Change virtual addresses to physical addresses and vv.
+ * These are pretty trivial
+ */
+static inline unsigned long virt_to_phys(volatile void *address)
+{
+       return __pa(address);
+}
+
+static inline void *phys_to_virt(unsigned long address)
+{
+       return __va(address);
+}
+
+/*
+ * Change "struct page" to physical address.
+ */
+static inline void *__ioremap(unsigned long offset, unsigned long size,
+                             unsigned long flags)
+{
+       return (void *) offset;
+}
+
+static inline void *ioremap(unsigned long offset, unsigned long size)
+{
+       return (void *) offset;
+}
+
+/*
+ * This one maps high address device memory and turns off caching for that
+ * area.  it's useful if some control registers are in such an area and write
+ * combining or read caching is not desirable:
+ */
+static inline void *ioremap_nocache(unsigned long offset, unsigned long size)
+{
+       return (void *) (offset | 0x20000000);
+}
+
+#define ioremap_wc ioremap_nocache
+
+static inline void iounmap(void *addr)
+{
+}
+
+static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
+{
+       return (void __iomem *) port;
+}
+
+static inline void ioport_unmap(void __iomem *p)
+{
+}
+
+#define xlate_dev_kmem_ptr(p)  ((void *) (p))
+#define xlate_dev_mem_ptr(p)   ((void *) (p))
+
+/*
+ * PCI bus iomem addresses must be in the region 0x80000000-0x9fffffff
+ */
+static inline unsigned long virt_to_bus(volatile void *address)
+{
+       return ((unsigned long) address) & ~0x20000000;
+}
+
+static inline void *bus_to_virt(unsigned long address)
+{
+       return (void *) address;
+}
+
+#define page_to_bus page_to_phys
+
+#define memset_io(a, b, c)     memset(__io_virt(a), (b), (c))
+#define memcpy_fromio(a, b, c) memcpy((a), __io_virt(b), (c))
+#define memcpy_toio(a, b, c)   memcpy(__io_virt(a), (b), (c))
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_IO_H */
diff --git a/arch/mn10300/include/asm/ioctl.h b/arch/mn10300/include/asm/ioctl.h
new file mode 100644 (file)
index 0000000..b279fe0
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/ioctl.h>
diff --git a/arch/mn10300/include/asm/ioctls.h b/arch/mn10300/include/asm/ioctls.h
new file mode 100644 (file)
index 0000000..dcbfb45
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ASM_IOCTLS_H
+#define _ASM_IOCTLS_H
+
+#include <asm/ioctl.h>
+
+/* 0x54 is just a magic number to make these relatively unique ('T') */
+
+#define TCGETS         0x5401
+#define TCSETS         0x5402
+#define TCSETSW                0x5403
+#define TCSETSF                0x5404
+#define TCGETA         0x5405
+#define TCSETA         0x5406
+#define TCSETAW                0x5407
+#define TCSETAF                0x5408
+#define TCSBRK         0x5409
+#define TCXONC         0x540A
+#define TCFLSH         0x540B
+#define TIOCEXCL       0x540C
+#define TIOCNXCL       0x540D
+#define TIOCSCTTY      0x540E
+#define TIOCGPGRP      0x540F
+#define TIOCSPGRP      0x5410
+#define TIOCOUTQ       0x5411
+#define TIOCSTI                0x5412
+#define TIOCGWINSZ     0x5413
+#define TIOCSWINSZ     0x5414
+#define TIOCMGET       0x5415
+#define TIOCMBIS       0x5416
+#define TIOCMBIC       0x5417
+#define TIOCMSET       0x5418
+#define TIOCGSOFTCAR   0x5419
+#define TIOCSSOFTCAR   0x541A
+#define FIONREAD       0x541B
+#define TIOCINQ                FIONREAD
+#define TIOCLINUX      0x541C
+#define TIOCCONS       0x541D
+#define TIOCGSERIAL    0x541E
+#define TIOCSSERIAL    0x541F
+#define TIOCPKT                0x5420
+#define FIONBIO                0x5421
+#define TIOCNOTTY      0x5422
+#define TIOCSETD       0x5423
+#define TIOCGETD       0x5424
+#define TCSBRKP                0x5425  /* Needed for POSIX tcsendbreak() */
+/* #define TIOCTTYGSTRUCT 0x5426 - Former debugging-only ioctl */
+#define TIOCSBRK       0x5427  /* BSD compatibility */
+#define TIOCCBRK       0x5428  /* BSD compatibility */
+#define TIOCGSID       0x5429  /* Return the session ID of FD */
+#define TCGETS2                _IOR('T', 0x2A, struct termios2)
+#define TCSETS2                _IOW('T', 0x2B, struct termios2)
+#define TCSETSW2       _IOW('T', 0x2C, struct termios2)
+#define TCSETSF2       _IOW('T', 0x2D, struct termios2)
+#define TIOCGPTN       _IOR('T', 0x30, unsigned int) /* Get Pty Number
+                                                      * (of pty-mux device) */
+#define TIOCSPTLCK     _IOW('T', 0x31, int)  /* Lock/unlock Pty */
+
+#define FIONCLEX       0x5450
+#define FIOCLEX                0x5451
+#define FIOASYNC       0x5452
+#define TIOCSERCONFIG  0x5453
+#define TIOCSERGWILD   0x5454
+#define TIOCSERSWILD   0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
+#define TIOCSERGETLSR   0x5459 /* Get line status register */
+#define TIOCSERGETMULTI 0x545A /* Get multiport config  */
+#define TIOCSERSETMULTI 0x545B /* Set multiport config */
+
+#define TIOCMIWAIT     0x545C  /* wait for a change on serial input line(s) */
+#define TIOCGICOUNT    0x545D  /* read serial port inline interrupt counts */
+#define TIOCGHAYESESP   0x545E  /* Get Hayes ESP configuration */
+#define TIOCSHAYESESP   0x545F  /* Set Hayes ESP configuration */
+#define FIOQSIZE       0x5460
+
+/* Used for packet mode */
+#define TIOCPKT_DATA            0
+#define TIOCPKT_FLUSHREAD       1
+#define TIOCPKT_FLUSHWRITE      2
+#define TIOCPKT_STOP            4
+#define TIOCPKT_START           8
+#define TIOCPKT_NOSTOP         16
+#define TIOCPKT_DOSTOP         32
+
+#define TIOCSER_TEMT    0x01   /* Transmitter physically empty */
+
+#endif /* _ASM_IOCTLS_H */
diff --git a/arch/mn10300/include/asm/ipc.h b/arch/mn10300/include/asm/ipc.h
new file mode 100644 (file)
index 0000000..a46e3d9
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/ipc.h>
diff --git a/arch/mn10300/include/asm/ipcbuf.h b/arch/mn10300/include/asm/ipcbuf.h
new file mode 100644 (file)
index 0000000..f6f63d4
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef _ASM_IPCBUF_H
+#define _ASM_IPCBUF_H
+
+/*
+ * The ipc64_perm structure for MN10300 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 32-bit mode_t and seq
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct ipc64_perm
+{
+       __kernel_key_t          key;
+       __kernel_uid32_t        uid;
+       __kernel_gid32_t        gid;
+       __kernel_uid32_t        cuid;
+       __kernel_gid32_t        cgid;
+       __kernel_mode_t         mode;
+       unsigned short          __pad1;
+       unsigned short          seq;
+       unsigned short          __pad2;
+       unsigned long           __unused1;
+       unsigned long           __unused2;
+};
+
+#endif /* _ASM_IPCBUF_H */
diff --git a/arch/mn10300/include/asm/irq.h b/arch/mn10300/include/asm/irq.h
new file mode 100644 (file)
index 0000000..25c045d
--- /dev/null
@@ -0,0 +1,32 @@
+/* MN10300 Hardware interrupt definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Modified by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-i386/irq.h:
+ *   - (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_IRQ_H
+#define _ASM_IRQ_H
+
+#include <asm/intctl-regs.h>
+#include <asm/reset-regs.h>
+#include <proc/irq.h>
+
+/* this number is used when no interrupt has been assigned */
+#define NO_IRQ         INT_MAX
+
+/* hardware irq numbers */
+#define NR_IRQS                GxICR_NUM_IRQS
+
+/* external hardware irq numbers */
+#define NR_XIRQS       GxICR_NUM_XIRQS
+
+#define irq_canonicalize(IRQ) (IRQ)
+
+#endif /* _ASM_IRQ_H */
diff --git a/arch/mn10300/include/asm/irq_regs.h b/arch/mn10300/include/asm/irq_regs.h
new file mode 100644 (file)
index 0000000..a848cd2
--- /dev/null
@@ -0,0 +1,24 @@
+/* MN10300 IRQ registers pointer definition
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_IRQ_REGS_H
+#define _ASM_IRQ_REGS_H
+
+/*
+ * Per-cpu current frame pointer - the location of the last exception frame on
+ * the stack
+ */
+#define ARCH_HAS_OWN_IRQ_REGS
+
+#ifndef __ASSEMBLY__
+#define get_irq_regs() (__frame)
+#endif
+
+#endif /* _ASM_IRQ_REGS_H */
diff --git a/arch/mn10300/include/asm/kdebug.h b/arch/mn10300/include/asm/kdebug.h
new file mode 100644 (file)
index 0000000..0f47e11
--- /dev/null
@@ -0,0 +1,22 @@
+/* MN10300 In-kernel death knells
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_KDEBUG_H
+#define _ASM_KDEBUG_H
+
+/* Grossly misnamed. */
+enum die_val {
+       DIE_OOPS = 1,
+       DIE_BREAKPOINT,
+       DIE_GPF,
+};
+
+#endif /* _ASM_KDEBUG_H */
diff --git a/arch/mn10300/include/asm/kmap_types.h b/arch/mn10300/include/asm/kmap_types.h
new file mode 100644 (file)
index 0000000..3398f9f
--- /dev/null
@@ -0,0 +1,31 @@
+/* MN10300 kmap_atomic() slot IDs
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_KMAP_TYPES_H
+#define _ASM_KMAP_TYPES_H
+
+enum km_type {
+       KM_BOUNCE_READ,
+       KM_SKB_SUNRPC_DATA,
+       KM_SKB_DATA_SOFTIRQ,
+       KM_USER0,
+       KM_USER1,
+       KM_BIO_SRC_IRQ,
+       KM_BIO_DST_IRQ,
+       KM_PTE0,
+       KM_PTE1,
+       KM_IRQ0,
+       KM_IRQ1,
+       KM_SOFTIRQ0,
+       KM_SOFTIRQ1,
+       KM_TYPE_NR
+};
+
+#endif /* _ASM_KMAP_TYPES_H */
diff --git a/arch/mn10300/include/asm/kprobes.h b/arch/mn10300/include/asm/kprobes.h
new file mode 100644 (file)
index 0000000..c800b59
--- /dev/null
@@ -0,0 +1,50 @@
+/* MN10300 Kernel Probes support
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by Mark Salter (msalter@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public Licence as published by
+ * the Free Software Foundation; either version 2 of the Licence, 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 Licence for more details.
+ *
+ * You should have received a copy of the GNU General Public Licence
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+#ifndef _ASM_KPROBES_H
+#define _ASM_KPROBES_H
+
+#include <linux/types.h>
+#include <linux/ptrace.h>
+
+struct kprobe;
+
+typedef unsigned char kprobe_opcode_t;
+#define BREAKPOINT_INSTRUCTION 0xff
+#define MAX_INSN_SIZE 8
+#define MAX_STACK_SIZE 128
+
+/* Architecture specific copy of original instruction */
+struct arch_specific_insn {
+       /*  copy of original instruction
+        */
+       kprobe_opcode_t insn[MAX_INSN_SIZE];
+};
+
+extern const int kretprobe_blacklist_size;
+
+extern int kprobe_exceptions_notify(struct notifier_block *self,
+                                   unsigned long val, void *data);
+
+#define flush_insn_slot(p)  do {} while (0)
+
+extern void arch_remove_kprobe(struct kprobe *p);
+
+#endif /* _ASM_KPROBES_H */
diff --git a/arch/mn10300/include/asm/linkage.h b/arch/mn10300/include/asm/linkage.h
new file mode 100644 (file)
index 0000000..dda3002
--- /dev/null
@@ -0,0 +1,20 @@
+/* MN10300 Linkage and calling-convention overrides
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_LINKAGE_H
+#define _ASM_LINKAGE_H
+
+/* don't override anything */
+#define asmlinkage
+
+#define __ALIGN                .align 4,0xcb
+#define __ALIGN_STR    ".align 4,0xcb"
+
+#endif
diff --git a/arch/mn10300/include/asm/local.h b/arch/mn10300/include/asm/local.h
new file mode 100644 (file)
index 0000000..c11c530
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/local.h>
diff --git a/arch/mn10300/include/asm/mc146818rtc.h b/arch/mn10300/include/asm/mc146818rtc.h
new file mode 100644 (file)
index 0000000..df6bc6e
--- /dev/null
@@ -0,0 +1 @@
+#include <asm/rtc-regs.h>
diff --git a/arch/mn10300/include/asm/mman.h b/arch/mn10300/include/asm/mman.h
new file mode 100644 (file)
index 0000000..b7986b6
--- /dev/null
@@ -0,0 +1,28 @@
+/* MN10300 Constants for mmap and co.
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * - Derived from asm-x86/mman.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_MMAN_H
+#define _ASM_MMAN_H
+
+#include <asm-generic/mman.h>
+
+#define MAP_GROWSDOWN  0x0100          /* stack-like segment */
+#define MAP_DENYWRITE  0x0800          /* ETXTBSY */
+#define MAP_EXECUTABLE 0x1000          /* mark it as an executable */
+#define MAP_LOCKED     0x2000          /* pages are locked */
+#define MAP_NORESERVE  0x4000          /* don't check for reservations */
+#define MAP_POPULATE   0x8000          /* populate (prefault) pagetables */
+#define MAP_NONBLOCK   0x10000         /* do not block on IO */
+
+#define MCL_CURRENT    1               /* lock all current mappings */
+#define MCL_FUTURE     2               /* lock all future mappings */
+
+#endif /* _ASM_MMAN_H */
diff --git a/arch/mn10300/include/asm/mmu.h b/arch/mn10300/include/asm/mmu.h
new file mode 100644 (file)
index 0000000..2d2d097
--- /dev/null
@@ -0,0 +1,19 @@
+/* MN10300 Memory management context
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-frv/mmu.h
+ */
+
+#ifndef _ASM_MMU_H
+#define _ASM_MMU_H
+
+/*
+ * MMU context
+ */
+typedef struct {
+       unsigned long   tlbpid[NR_CPUS];        /* TLB PID for this process on
+                                                * each CPU */
+} mm_context_t;
+
+#endif /* _ASM_MMU_H */
diff --git a/arch/mn10300/include/asm/mmu_context.h b/arch/mn10300/include/asm/mmu_context.h
new file mode 100644 (file)
index 0000000..a9e2e34
--- /dev/null
@@ -0,0 +1,138 @@
+/* MN10300 MMU context management
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Modified by David Howells (dhowells@redhat.com)
+ * - Derived from include/asm-m32r/mmu_context.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ *
+ *
+ * This implements an algorithm to provide TLB PID mappings to provide
+ * selective access to the TLB for processes, thus reducing the number of TLB
+ * flushes required.
+ *
+ * Note, however, that the M32R algorithm is technically broken as it does not
+ * handle version wrap-around, and could, theoretically, have a problem with a
+ * very long lived program that sleeps long enough for the version number to
+ * wrap all the way around so that its TLB mappings appear valid once again.
+ */
+#ifndef _ASM_MMU_CONTEXT_H
+#define _ASM_MMU_CONTEXT_H
+
+#include <asm/atomic.h>
+#include <asm/pgalloc.h>
+#include <asm/tlbflush.h>
+#include <asm-generic/mm_hooks.h>
+
+#define MMU_CONTEXT_TLBPID_MASK                0x000000ffUL
+#define MMU_CONTEXT_VERSION_MASK       0xffffff00UL
+#define MMU_CONTEXT_FIRST_VERSION      0x00000100UL
+#define MMU_NO_CONTEXT                 0x00000000UL
+
+extern unsigned long mmu_context_cache[NR_CPUS];
+#define mm_context(mm) (mm->context.tlbpid[smp_processor_id()])
+
+#define enter_lazy_tlb(mm, tsk)        do {} while (0)
+
+#ifdef CONFIG_SMP
+#define cpu_ran_vm(cpu, task) \
+       cpu_set((cpu), (task)->cpu_vm_mask)
+#define cpu_maybe_ran_vm(cpu, task) \
+       cpu_test_and_set((cpu), (task)->cpu_vm_mask)
+#else
+#define cpu_ran_vm(cpu, task)          do {} while (0)
+#define cpu_maybe_ran_vm(cpu, task)    true
+#endif /* CONFIG_SMP */
+
+/*
+ * allocate an MMU context
+ */
+static inline unsigned long allocate_mmu_context(struct mm_struct *mm)
+{
+       unsigned long *pmc = &mmu_context_cache[smp_processor_id()];
+       unsigned long mc = ++(*pmc);
+
+       if (!(mc & MMU_CONTEXT_TLBPID_MASK)) {
+               /* we exhausted the TLB PIDs of this version on this CPU, so we
+                * flush this CPU's TLB in its entirety and start new cycle */
+               flush_tlb_all();
+
+               /* fix the TLB version if needed (we avoid version #0 so as to
+                * distingush MMU_NO_CONTEXT) */
+               if (!mc)
+                       *pmc = mc = MMU_CONTEXT_FIRST_VERSION;
+       }
+       mm_context(mm) = mc;
+       return mc;
+}
+
+/*
+ * get an MMU context if one is needed
+ */
+static inline unsigned long get_mmu_context(struct mm_struct *mm)
+{
+       unsigned long mc = MMU_NO_CONTEXT, cache;
+
+       if (mm) {
+               cache = mmu_context_cache[smp_processor_id()];
+               mc = mm_context(mm);
+
+               /* if we have an old version of the context, replace it */
+               if ((mc ^ cache) & MMU_CONTEXT_VERSION_MASK)
+                       mc = allocate_mmu_context(mm);
+       }
+       return mc;
+}
+
+/*
+ * initialise the context related info for a new mm_struct instance
+ */
+static inline int init_new_context(struct task_struct *tsk,
+                                  struct mm_struct *mm)
+{
+       int num_cpus = NR_CPUS, i;
+
+       for (i = 0; i < num_cpus; i++)
+               mm->context.tlbpid[i] = MMU_NO_CONTEXT;
+       return 0;
+}
+
+/*
+ * destroy context related info for an mm_struct that is about to be put to
+ * rest
+ */
+#define destroy_context(mm)    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.
+ */
+static inline void activate_context(struct mm_struct *mm, int cpu)
+{
+       PIDR = get_mmu_context(mm) & MMU_CONTEXT_TLBPID_MASK;
+}
+
+/*
+ * change between virtual memory sets
+ */
+static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
+                            struct task_struct *tsk)
+{
+       int cpu = smp_processor_id();
+
+       if (prev != next) {
+               cpu_ran_vm(cpu, next);
+               activate_context(next, cpu);
+               PTBR = (unsigned long) next->pgd;
+       } else if (!cpu_maybe_ran_vm(cpu, next)) {
+               activate_context(next, cpu);
+       }
+}
+
+#define deactivate_mm(tsk, mm) do {} while (0)
+#define activate_mm(prev, next)        switch_mm((prev), (next), NULL)
+
+#endif /* _ASM_MMU_CONTEXT_H */
diff --git a/arch/mn10300/include/asm/module.h b/arch/mn10300/include/asm/module.h
new file mode 100644 (file)
index 0000000..5d7057d
--- /dev/null
@@ -0,0 +1,27 @@
+/* MN10300 Arch-specific module definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by Mark Salter (msalter@redhat.com)
+ * Derived from include/asm-i386/module.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_MODULE_H
+#define _ASM_MODULE_H
+
+struct mod_arch_specific {
+};
+
+#define Elf_Shdr       Elf32_Shdr
+#define Elf_Sym                Elf32_Sym
+#define Elf_Ehdr       Elf32_Ehdr
+
+/*
+ * Include the MN10300 architecture version.
+ */
+#define MODULE_ARCH_VERMAGIC __stringify(PROCESSOR_MODEL_NAME) " "
+
+#endif /* _ASM_MODULE_H */
diff --git a/arch/mn10300/include/asm/msgbuf.h b/arch/mn10300/include/asm/msgbuf.h
new file mode 100644 (file)
index 0000000..8b60245
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef _ASM_MSGBUF_H
+#define _ASM_MSGBUF_H
+
+/*
+ * The msqid64_ds structure for MN10300 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct msqid64_ds {
+       struct ipc64_perm       msg_perm;
+       __kernel_time_t         msg_stime;      /* last msgsnd time */
+       unsigned long           __unused1;
+       __kernel_time_t         msg_rtime;      /* last msgrcv time */
+       unsigned long           __unused2;
+       __kernel_time_t         msg_ctime;      /* last change time */
+       unsigned long           __unused3;
+       unsigned long           msg_cbytes;     /* current number of bytes on queue */
+       unsigned long           msg_qnum;       /* number of messages in queue */
+       unsigned long           msg_qbytes;     /* max number of bytes on queue */
+       __kernel_pid_t          msg_lspid;      /* pid of last msgsnd */
+       __kernel_pid_t          msg_lrpid;      /* last receive pid */
+       unsigned long           __unused4;
+       unsigned long           __unused5;
+};
+
+#endif /* _ASM_MSGBUF_H */
diff --git a/arch/mn10300/include/asm/mutex.h b/arch/mn10300/include/asm/mutex.h
new file mode 100644 (file)
index 0000000..84f5490
--- /dev/null
@@ -0,0 +1,16 @@
+/* MN10300 Mutex fastpath
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ *
+ *
+ * TODO: implement optimized primitives instead, or leave the generic
+ * implementation in place, or pick the atomic_xchg() based generic
+ * implementation. (see asm-generic/mutex-xchg.h for details)
+ */
+#include <asm-generic/mutex-null.h>
diff --git a/arch/mn10300/include/asm/nmi.h b/arch/mn10300/include/asm/nmi.h
new file mode 100644 (file)
index 0000000..f3671cb
--- /dev/null
@@ -0,0 +1,14 @@
+/* MN10300 NMI handling
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_NMI_H
+#define _ASM_NMI_H
+
+#endif /* _ASM_NMI_H */
diff --git a/arch/mn10300/include/asm/page.h b/arch/mn10300/include/asm/page.h
new file mode 100644 (file)
index 0000000..8288e12
--- /dev/null
@@ -0,0 +1,128 @@
+/* MN10300 Page table definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PAGE_H
+#define _ASM_PAGE_H
+
+/* PAGE_SHIFT determines the page size */
+#define PAGE_SHIFT     12
+
+#ifndef __ASSEMBLY__
+#define PAGE_SIZE      (1UL << PAGE_SHIFT)
+#define PAGE_MASK      (~(PAGE_SIZE - 1))
+#else
+#define PAGE_SIZE      +(1 << PAGE_SHIFT)      /* unary plus marks an
+                                                * immediate val not an addr */
+#define PAGE_MASK      +(~(PAGE_SIZE - 1))
+#endif
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+#define clear_page(page)       memset((void *)(page), 0, PAGE_SIZE)
+#define copy_page(to, from)    memcpy((void *)(to), (void *)(from), PAGE_SIZE)
+
+#define clear_user_page(addr, vaddr, page)     clear_page(addr)
+#define copy_user_page(vto, vfrom, vaddr, to)  copy_page(vto, vfrom)
+
+/*
+ * These are used to make use of C type-checking..
+ */
+typedef struct { unsigned long pte; } pte_t;
+typedef struct { unsigned long pgd; } pgd_t;
+typedef struct { unsigned long pgprot; } pgprot_t;
+typedef struct page *pgtable_t;
+
+#define PTE_MASK       PAGE_MASK
+#define HPAGE_SHIFT    22
+
+#ifdef CONFIG_HUGETLB_PAGE
+#define HPAGE_SIZE             ((1UL) << HPAGE_SHIFT)
+#define HPAGE_MASK             (~(HPAGE_SIZE - 1))
+#define HUGETLB_PAGE_ORDER     (HPAGE_SHIFT - PAGE_SHIFT)
+#endif
+
+#define pte_val(x)     ((x).pte)
+#define pgd_val(x)     ((x).pgd)
+#define pgprot_val(x)  ((x).pgprot)
+
+#define __pte(x)       ((pte_t) { (x) })
+#define __pgd(x)       ((pgd_t) { (x) })
+#define __pgprot(x)    ((pgprot_t) { (x) })
+
+#include <asm-generic/pgtable-nopmd.h>
+
+#endif /* !__ASSEMBLY__ */
+
+/*
+ * This handles the memory map.. We could make this a config
+ * option, but too many people screw it up, and too few need
+ * it.
+ *
+ * A __PAGE_OFFSET of 0xC0000000 means that the kernel has
+ * a virtual address space of one gigabyte, which limits the
+ * amount of physical memory you can use to about 950MB.
+ */
+
+#ifndef __ASSEMBLY__
+
+/* Pure 2^n version of get_order */
+static inline int get_order(unsigned long size) __attribute__((const));
+static inline int get_order(unsigned long size)
+{
+       int order;
+
+       size = (size - 1) >> (PAGE_SHIFT - 1);
+       order = -1;
+       do {
+               size >>= 1;
+               order++;
+       } while (size);
+       return order;
+}
+
+#endif /* __ASSEMBLY__ */
+
+#include <asm/page_offset.h>
+
+#define __PAGE_OFFSET          (PAGE_OFFSET_RAW)
+#define PAGE_OFFSET            ((unsigned long) __PAGE_OFFSET)
+
+/*
+ * main RAM and kernel working space are coincident at 0x90000000, but to make
+ * life more interesting, there's also an uncached virtual shadow at 0xb0000000
+ * - these mappings are fixed in the MMU
+ */
+#define __pfn_disp             (CONFIG_KERNEL_RAM_BASE_ADDRESS >> PAGE_SHIFT)
+
+#define __pa(x)                        ((unsigned long)(x))
+#define __va(x)                        ((void *)(unsigned long)(x))
+#define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
+#define pfn_to_page(pfn)       (mem_map + ((pfn) - __pfn_disp))
+#define page_to_pfn(page)      ((unsigned long)((page) - mem_map) + __pfn_disp)
+
+#define pfn_valid(pfn)                                 \
+({                                                     \
+       unsigned long __pfn = (pfn) - __pfn_disp;       \
+       __pfn < max_mapnr;                              \
+})
+
+#define virt_to_page(kaddr)    pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
+#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
+#define page_to_phys(page)     (page_to_pfn(page) << PAGE_SHIFT)
+
+#define VM_DATA_DEFAULT_FLAGS \
+       (VM_READ | VM_WRITE | \
+       ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
+                VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_PAGE_H */
diff --git a/arch/mn10300/include/asm/page_offset.h b/arch/mn10300/include/asm/page_offset.h
new file mode 100644 (file)
index 0000000..8eb5b16
--- /dev/null
@@ -0,0 +1,11 @@
+/* MN10300 Kernel base address
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ */
+#ifndef _ASM_PAGE_OFFSET_H
+#define _ASM_PAGE_OFFSET_H
+
+#define PAGE_OFFSET_RAW CONFIG_KERNEL_RAM_BASE_ADDRESS
+
+#endif
diff --git a/arch/mn10300/include/asm/param.h b/arch/mn10300/include/asm/param.h
new file mode 100644 (file)
index 0000000..789b1df
--- /dev/null
@@ -0,0 +1,34 @@
+/* MN10300 Kernel parameters
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PARAM_H
+#define _ASM_PARAM_H
+
+#ifdef __KERNEL__
+#define HZ             CONFIG_HZ       /* Internal kernel timer frequency */
+#define USER_HZ                100             /* .. some user interfaces are in
+                                        * "ticks" */
+#define CLOCKS_PER_SEC (USER_HZ)       /* like times() */
+#endif
+
+#ifndef HZ
+#define HZ             100
+#endif
+
+#define EXEC_PAGESIZE  4096
+
+#ifndef NOGROUP
+#define NOGROUP                (-1)
+#endif
+
+#define MAXHOSTNAMELEN 64      /* max length of hostname */
+#define COMMAND_LINE_SIZE 256
+
+#endif /* _ASM_PARAM_H */
diff --git a/arch/mn10300/include/asm/pci.h b/arch/mn10300/include/asm/pci.h
new file mode 100644 (file)
index 0000000..0517b45
--- /dev/null
@@ -0,0 +1,129 @@
+/* MN10300 PCI definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PCI_H
+#define _ASM_PCI_H
+
+#ifdef __KERNEL__
+#include <linux/mm.h>          /* for struct page */
+
+#if 0
+#define __pcbdebug(FMT, ADDR, ...) \
+       printk(KERN_DEBUG "PCIBRIDGE[%08x]: "FMT"\n", \
+              (u32)(ADDR), ##__VA_ARGS__)
+
+#define __pcidebug(FMT, BUS, DEVFN, WHERE,...)         \
+do {                                                   \
+       printk(KERN_DEBUG "PCI[%02x:%02x.%x + %02x]: "FMT"\n",  \
+              (BUS)->number,                                   \
+              PCI_SLOT(DEVFN),                                 \
+              PCI_FUNC(DEVFN),                                 \
+              (u32)(WHERE), ##__VA_ARGS__);                    \
+} while (0)
+
+#else
+#define __pcbdebug(FMT, ADDR, ...)             do {} while (0)
+#define __pcidebug(FMT, BUS, DEVFN, WHERE, ...)        do {} while (0)
+#endif
+
+/* Can be used to override the logic in pci_scan_bus for skipping
+ * already-configured bus numbers - to be used for buggy BIOSes or
+ * architectures with incomplete PCI setup by the loader */
+
+#ifdef CONFIG_PCI
+#define pcibios_assign_all_busses()    1
+extern void unit_pci_init(void);
+#else
+#define pcibios_assign_all_busses()    0
+#endif
+
+extern unsigned long pci_mem_start;
+#define PCIBIOS_MIN_IO         0xBE000004
+#define PCIBIOS_MIN_MEM                0xB8000000
+
+void pcibios_set_master(struct pci_dev *dev);
+void pcibios_penalize_isa_irq(int irq);
+
+/* Dynamic DMA mapping stuff.
+ * i386 has everything mapped statically.
+ */
+
+#include <linux/types.h>
+#include <linux/slab.h>
+#include <asm/scatterlist.h>
+#include <linux/string.h>
+#include <linux/mm.h>
+#include <asm/io.h>
+
+struct pci_dev;
+
+/* The PCI address space does equal the physical memory
+ * address space.  The networking and block device layers use
+ * this boolean for bounce buffer decisions.
+ */
+#define PCI_DMA_BUS_IS_PHYS    (1)
+
+
+/* This is always fine. */
+#define pci_dac_dma_supported(pci_dev, mask)   (0)
+
+/* Return the index of the PCI controller for device. */
+static inline int pci_controller_num(struct pci_dev *dev)
+{
+       return 0;
+}
+
+#define HAVE_PCI_MMAP
+extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
+                              enum pci_mmap_state mmap_state,
+                              int write_combine);
+
+#endif /* __KERNEL__ */
+
+/* implement the pci_ DMA API in terms of the generic device dma_ one */
+#include <asm-generic/pci-dma-compat.h>
+
+/**
+ * pcibios_resource_to_bus - convert resource to PCI bus address
+ * @dev: device which owns this resource
+ * @region: converted bus-centric region (start,end)
+ * @res: resource to convert
+ *
+ * Convert a resource to a PCI device bus address or bus window.
+ */
+extern void pcibios_resource_to_bus(struct pci_dev *dev,
+                                   struct pci_bus_region *region,
+                                   struct resource *res);
+
+extern void pcibios_bus_to_resource(struct pci_dev *dev,
+                                   struct resource *res,
+                                   struct pci_bus_region *region);
+
+static inline struct resource *
+pcibios_select_root(struct pci_dev *pdev, struct resource *res)
+{
+       struct resource *root = NULL;
+
+       if (res->flags & IORESOURCE_IO)
+               root = &ioport_resource;
+       if (res->flags & IORESOURCE_MEM)
+               root = &iomem_resource;
+
+       return root;
+}
+
+#define pcibios_scan_all_fns(a, b)     0
+
+static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
+{
+       return channel ? 15 : 14;
+}
+
+#endif /* _ASM_PCI_H */
diff --git a/arch/mn10300/include/asm/percpu.h b/arch/mn10300/include/asm/percpu.h
new file mode 100644 (file)
index 0000000..06a959d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/percpu.h>
diff --git a/arch/mn10300/include/asm/pgalloc.h b/arch/mn10300/include/asm/pgalloc.h
new file mode 100644 (file)
index 0000000..ec057e1
--- /dev/null
@@ -0,0 +1,56 @@
+/* MN10300 Page and page table/directory allocation
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PGALLOC_H
+#define _ASM_PGALLOC_H
+
+#include <asm/processor.h>
+#include <asm/page.h>
+#include <linux/threads.h>
+#include <linux/mm.h>          /* for struct page */
+
+struct mm_struct;
+struct page;
+
+/* attach a page table to a PMD entry */
+#define pmd_populate_kernel(mm, pmd, pte) \
+       set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE))
+
+static inline
+void pmd_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte)
+{
+       set_pmd(pmd, __pmd((page_to_pfn(pte) << PAGE_SHIFT) | _PAGE_TABLE));
+}
+#define pmd_pgtable(pmd) pmd_page(pmd)
+
+/*
+ * Allocate and free page tables.
+ */
+
+extern pgd_t *pgd_alloc(struct mm_struct *);
+extern void pgd_free(struct mm_struct *, pgd_t *);
+
+extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
+extern struct page *pte_alloc_one(struct mm_struct *, unsigned long);
+
+static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
+{
+       free_page((unsigned long) pte);
+}
+
+static inline void pte_free(struct mm_struct *mm, struct page *pte)
+{
+       __free_page(pte);
+}
+
+
+#define __pte_free_tlb(tlb, pte) tlb_remove_page((tlb), (pte))
+
+#endif /* _ASM_PGALLOC_H */
diff --git a/arch/mn10300/include/asm/pgtable.h b/arch/mn10300/include/asm/pgtable.h
new file mode 100644 (file)
index 0000000..6dc30fc
--- /dev/null
@@ -0,0 +1,492 @@
+/* MN10300 Page table manipulators and constants
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ *
+ *
+ * The Linux memory management assumes a three-level page table setup. On
+ * the i386, we use that, but "fold" the mid level into the top-level page
+ * table, so that we physically have the same two-level page table as the
+ * i386 mmu expects.
+ *
+ * This file contains the functions and defines necessary to modify and use
+ * the i386 page table tree for the purposes of the MN10300 TLB handler
+ * functions.
+ */
+#ifndef _ASM_PGTABLE_H
+#define _ASM_PGTABLE_H
+
+#include <asm/cpu-regs.h>
+
+#ifndef __ASSEMBLY__
+#include <asm/processor.h>
+#include <asm/cache.h>
+#include <linux/threads.h>
+
+#include <asm/bitops.h>
+
+#include <linux/slab.h>
+#include <linux/list.h>
+#include <linux/spinlock.h>
+
+/*
+ * ZERO_PAGE is a global shared page that is always zero: used
+ * for zero-mapped memory areas etc..
+ */
+#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
+extern unsigned long empty_zero_page[1024];
+extern spinlock_t pgd_lock;
+extern struct page *pgd_list;
+
+extern void pmd_ctor(void *, struct kmem_cache *, unsigned long);
+extern void pgtable_cache_init(void);
+extern void paging_init(void);
+
+#endif /* !__ASSEMBLY__ */
+
+/*
+ * The Linux mn10300 paging architecture only implements both the traditional
+ * 2-level page tables
+ */
+#define PGDIR_SHIFT    22
+#define PTRS_PER_PGD   1024
+#define PTRS_PER_PUD   1       /* we don't really have any PUD physically */
+#define PTRS_PER_PMD   1       /* we don't really have any PMD physically */
+#define PTRS_PER_PTE   1024
+
+#define PGD_SIZE       PAGE_SIZE
+#define PMD_SIZE       (1UL << PMD_SHIFT)
+#define PGDIR_SIZE     (1UL << PGDIR_SHIFT)
+#define PGDIR_MASK     (~(PGDIR_SIZE - 1))
+
+#define USER_PTRS_PER_PGD      (TASK_SIZE / PGDIR_SIZE)
+#define FIRST_USER_ADDRESS     0
+
+#define USER_PGD_PTRS          (PAGE_OFFSET >> PGDIR_SHIFT)
+#define KERNEL_PGD_PTRS                (PTRS_PER_PGD - USER_PGD_PTRS)
+
+#define TWOLEVEL_PGDIR_SHIFT   22
+#define BOOT_USER_PGD_PTRS     (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT)
+#define BOOT_KERNEL_PGD_PTRS   (1024 - BOOT_USER_PGD_PTRS)
+
+#ifndef __ASSEMBLY__
+extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
+#endif
+
+/*
+ * Unfortunately, due to the way the MMU works on the MN10300, the vmalloc VM
+ * area has to be in the lower half of the virtual address range (the upper
+ * half is not translated through the TLB).
+ *
+ * So in this case, the vmalloc area goes at the bottom of the address map
+ * (leaving a hole at the very bottom to catch addressing errors), and
+ * userspace starts immediately above.
+ *
+ * The vmalloc() routines also leaves a hole of 4kB between each vmalloced
+ * area to catch addressing errors.
+ */
+#define VMALLOC_OFFSET (8 * 1024 * 1024)
+#define VMALLOC_START  (0x70000000)
+#define VMALLOC_END    (0x7C000000)
+
+#ifndef __ASSEMBLY__
+extern pte_t kernel_vmalloc_ptes[(VMALLOC_END - VMALLOC_START) / PAGE_SIZE];
+#endif
+
+/* IPTEL/DPTEL bit assignments */
+#define _PAGE_BIT_VALID                xPTEL_V_BIT
+#define _PAGE_BIT_ACCESSED     xPTEL_UNUSED1_BIT       /* mustn't be loaded into IPTEL/DPTEL */
+#define _PAGE_BIT_NX           xPTEL_UNUSED2_BIT       /* mustn't be loaded into IPTEL/DPTEL */
+#define _PAGE_BIT_CACHE                xPTEL_C_BIT
+#define _PAGE_BIT_PRESENT      xPTEL_PV_BIT
+#define _PAGE_BIT_DIRTY                xPTEL_D_BIT
+#define _PAGE_BIT_GLOBAL       xPTEL_G_BIT
+
+#define _PAGE_VALID            xPTEL_V
+#define _PAGE_ACCESSED         xPTEL_UNUSED1
+#define _PAGE_NX               xPTEL_UNUSED2           /* no-execute bit */
+#define _PAGE_CACHE            xPTEL_C
+#define _PAGE_PRESENT          xPTEL_PV
+#define _PAGE_DIRTY            xPTEL_D
+#define _PAGE_PROT             xPTEL_PR
+#define _PAGE_PROT_RKNU                xPTEL_PR_ROK
+#define _PAGE_PROT_WKNU                xPTEL_PR_RWK
+#define _PAGE_PROT_RKRU                xPTEL_PR_ROK_ROU
+#define _PAGE_PROT_WKRU                xPTEL_PR_RWK_ROU
+#define _PAGE_PROT_WKWU                xPTEL_PR_RWK_RWU
+#define _PAGE_GLOBAL           xPTEL_G
+#define _PAGE_PSE              xPTEL_PS_4Mb            /* 4MB page */
+
+#define _PAGE_FILE             xPTEL_UNUSED1_BIT       /* set:pagecache unset:swap */
+
+#define __PAGE_PROT_UWAUX      0x040
+#define __PAGE_PROT_USER       0x080
+#define __PAGE_PROT_WRITE      0x100
+
+#define _PAGE_PRESENTV         (_PAGE_PRESENT|_PAGE_VALID)
+#define _PAGE_PROTNONE         0x000   /* If not present */
+
+#ifndef __ASSEMBLY__
+
+#define VMALLOC_VMADDR(x) ((unsigned long)(x))
+
+#define _PAGE_TABLE    (_PAGE_PRESENTV | _PAGE_PROT_WKNU | _PAGE_ACCESSED | _PAGE_DIRTY)
+#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
+
+#define __PAGE_NONE    (_PAGE_PRESENTV | _PAGE_PROT_RKNU | _PAGE_ACCESSED | _PAGE_CACHE)
+#define __PAGE_SHARED  (_PAGE_PRESENTV | _PAGE_PROT_WKWU | _PAGE_ACCESSED | _PAGE_CACHE)
+#define __PAGE_COPY    (_PAGE_PRESENTV | _PAGE_PROT_RKRU | _PAGE_ACCESSED | _PAGE_CACHE)
+#define __PAGE_READONLY        (_PAGE_PRESENTV | _PAGE_PROT_RKRU | _PAGE_ACCESSED | _PAGE_CACHE)
+
+#define PAGE_NONE              __pgprot(__PAGE_NONE     | _PAGE_NX)
+#define PAGE_SHARED_NOEXEC     __pgprot(__PAGE_SHARED   | _PAGE_NX)
+#define PAGE_COPY_NOEXEC       __pgprot(__PAGE_COPY     | _PAGE_NX)
+#define PAGE_READONLY_NOEXEC   __pgprot(__PAGE_READONLY | _PAGE_NX)
+#define PAGE_SHARED_EXEC       __pgprot(__PAGE_SHARED)
+#define PAGE_COPY_EXEC         __pgprot(__PAGE_COPY)
+#define PAGE_READONLY_EXEC     __pgprot(__PAGE_READONLY)
+#define PAGE_COPY              PAGE_COPY_NOEXEC
+#define PAGE_READONLY          PAGE_READONLY_NOEXEC
+#define PAGE_SHARED            PAGE_SHARED_EXEC
+
+#define __PAGE_KERNEL_BASE (_PAGE_PRESENTV | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
+
+#define __PAGE_KERNEL          (__PAGE_KERNEL_BASE | _PAGE_PROT_WKNU | _PAGE_CACHE | _PAGE_NX)
+#define __PAGE_KERNEL_NOCACHE  (__PAGE_KERNEL_BASE | _PAGE_PROT_WKNU | _PAGE_NX)
+#define __PAGE_KERNEL_EXEC     (__PAGE_KERNEL & ~_PAGE_NX)
+#define __PAGE_KERNEL_RO       (__PAGE_KERNEL_BASE | _PAGE_PROT_RKNU | _PAGE_CACHE | _PAGE_NX)
+#define __PAGE_KERNEL_LARGE    (__PAGE_KERNEL | _PAGE_PSE)
+#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
+
+#define PAGE_KERNEL            __pgprot(__PAGE_KERNEL)
+#define PAGE_KERNEL_RO         __pgprot(__PAGE_KERNEL_RO)
+#define PAGE_KERNEL_EXEC       __pgprot(__PAGE_KERNEL_EXEC)
+#define PAGE_KERNEL_NOCACHE    __pgprot(__PAGE_KERNEL_NOCACHE)
+#define PAGE_KERNEL_LARGE      __pgprot(__PAGE_KERNEL_LARGE)
+#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
+
+/*
+ * Whilst the MN10300 can do page protection for execute (given separate data
+ * and insn TLBs), we are not supporting it at the moment. Write permission,
+ * however, always implies read permission (but not execute permission).
+ */
+#define __P000 PAGE_NONE
+#define __P001 PAGE_READONLY_NOEXEC
+#define __P010 PAGE_COPY_NOEXEC
+#define __P011 PAGE_COPY_NOEXEC
+#define __P100 PAGE_READONLY_EXEC
+#define __P101 PAGE_READONLY_EXEC
+#define __P110 PAGE_COPY_EXEC
+#define __P111 PAGE_COPY_EXEC
+
+#define __S000 PAGE_NONE
+#define __S001 PAGE_READONLY_NOEXEC
+#define __S010 PAGE_SHARED_NOEXEC
+#define __S011 PAGE_SHARED_NOEXEC
+#define __S100 PAGE_READONLY_EXEC
+#define __S101 PAGE_READONLY_EXEC
+#define __S110 PAGE_SHARED_EXEC
+#define __S111 PAGE_SHARED_EXEC
+
+/*
+ * Define this to warn about kernel memory accesses that are
+ * done without a 'verify_area(VERIFY_WRITE,..)'
+ */
+#undef TEST_VERIFY_AREA
+
+#define pte_present(x) (pte_val(x) & _PAGE_VALID)
+#define pte_clear(mm, addr, xp)                                \
+do {                                                   \
+       set_pte_at((mm), (addr), (xp), __pte(0));       \
+} while (0)
+
+#define pmd_none(x)    (!pmd_val(x))
+#define pmd_present(x) (!pmd_none(x))
+#define pmd_clear(xp)  do { set_pmd(xp, __pmd(0)); } while (0)
+#define        pmd_bad(x)      0
+
+
+#define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT))
+
+#ifndef __ASSEMBLY__
+
+/*
+ * The following only work if pte_present() is true.
+ * Undefined behaviour if not..
+ */
+static inline int pte_user(pte_t pte)  { return pte_val(pte) & __PAGE_PROT_USER; }
+static inline int pte_read(pte_t pte)  { return pte_val(pte) & __PAGE_PROT_USER; }
+static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
+static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
+static inline int pte_write(pte_t pte) { return pte_val(pte) & __PAGE_PROT_WRITE; }
+static inline int pte_special(pte_t pte){ return 0; }
+
+/*
+ * The following only works if pte_present() is not true.
+ */
+static inline int pte_file(pte_t pte)  { return pte_val(pte) & _PAGE_FILE; }
+
+static inline pte_t pte_rdprotect(pte_t pte)
+{
+       pte_val(pte) &= ~(__PAGE_PROT_USER|__PAGE_PROT_UWAUX); return pte;
+}
+static inline pte_t pte_exprotect(pte_t pte)
+{
+       pte_val(pte) |= _PAGE_NX; return pte;
+}
+
+static inline pte_t pte_wrprotect(pte_t pte)
+{
+       pte_val(pte) &= ~(__PAGE_PROT_WRITE|__PAGE_PROT_UWAUX); return pte;
+}
+
+static inline pte_t pte_mkclean(pte_t pte)     { pte_val(pte) &= ~_PAGE_DIRTY; return pte; }
+static inline pte_t pte_mkold(pte_t pte)       { pte_val(pte) &= ~_PAGE_ACCESSED; return pte; }
+static inline pte_t pte_mkdirty(pte_t pte)     { pte_val(pte) |= _PAGE_DIRTY; return pte; }
+static inline pte_t pte_mkyoung(pte_t pte)     { pte_val(pte) |= _PAGE_ACCESSED; return pte; }
+static inline pte_t pte_mkexec(pte_t pte)      { pte_val(pte) &= ~_PAGE_NX; return pte; }
+
+static inline pte_t pte_mkread(pte_t pte)
+{
+       pte_val(pte) |= __PAGE_PROT_USER;
+       if (pte_write(pte))
+               pte_val(pte) |= __PAGE_PROT_UWAUX;
+       return pte;
+}
+static inline pte_t pte_mkwrite(pte_t pte)
+{
+       pte_val(pte) |= __PAGE_PROT_WRITE;
+       if (pte_val(pte) & __PAGE_PROT_USER)
+               pte_val(pte) |= __PAGE_PROT_UWAUX;
+       return pte;
+}
+
+static inline pte_t pte_mkspecial(pte_t pte)   { return pte; }
+
+#define pte_ERROR(e) \
+       printk(KERN_ERR "%s:%d: bad pte %08lx.\n", \
+              __FILE__, __LINE__, pte_val(e))
+#define pgd_ERROR(e) \
+       printk(KERN_ERR "%s:%d: bad pgd %08lx.\n", \
+              __FILE__, __LINE__, pgd_val(e))
+
+/*
+ * The "pgd_xxx()" functions here are trivial for a folded two-level
+ * setup: the pgd is never bad, and a pmd always exists (as it's folded
+ * into the pgd entry)
+ */
+#define pgd_clear(xp)                          do { } while (0)
+
+/*
+ * Certain architectures need to do special things when PTEs
+ * within a page table are directly modified.  Thus, the following
+ * hook is made available.
+ */
+#define set_pte(pteptr, pteval)                        (*(pteptr) = pteval)
+#define set_pte_at(mm, addr, ptep, pteval)     set_pte((ptep), (pteval))
+#define set_pte_atomic(pteptr, pteval)         set_pte((pteptr), (pteval))
+
+/*
+ * (pmds are folded into pgds so this doesn't get actually called,
+ * but the define is needed for a generic inline function.)
+ */
+#define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval)
+
+#define ptep_get_and_clear(mm, addr, ptep) \
+       __pte(xchg(&(ptep)->pte, 0))
+#define pte_same(a, b)         (pte_val(a) == pte_val(b))
+#define pte_page(x)            pfn_to_page(pte_pfn(x))
+#define pte_none(x)            (!pte_val(x))
+#define pte_pfn(x)             ((unsigned long) (pte_val(x) >> PAGE_SHIFT))
+#define __pfn_addr(pfn)                ((pfn) << PAGE_SHIFT)
+#define pfn_pte(pfn, prot)     __pte(__pfn_addr(pfn) | pgprot_val(prot))
+#define pfn_pmd(pfn, prot)     __pmd(__pfn_addr(pfn) | pgprot_val(prot))
+
+/*
+ * All present user pages are user-executable:
+ */
+static inline int pte_exec(pte_t pte)
+{
+       return pte_user(pte);
+}
+
+/*
+ * All present pages are kernel-executable:
+ */
+static inline int pte_exec_kernel(pte_t pte)
+{
+       return 1;
+}
+
+/*
+ * Bits 0 and 1 are taken, split up the 29 bits of offset
+ * into this range:
+ */
+#define PTE_FILE_MAX_BITS      29
+
+#define pte_to_pgoff(pte)      (pte_val(pte) >> 2)
+#define pgoff_to_pte(off)      __pte((off) << 2 | _PAGE_FILE)
+
+/* Encode and de-code a swap entry */
+#define __swp_type(x)                  (((x).val >> 2) & 0x3f)
+#define __swp_offset(x)                        ((x).val >> 8)
+#define __swp_entry(type, offset) \
+       ((swp_entry_t) { ((type) << 2) | ((offset) << 8) })
+#define __pte_to_swp_entry(pte)                ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x)          __pte((x).val)
+
+static inline
+int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr,
+                             pte_t *ptep)
+{
+       if (!pte_dirty(*ptep))
+               return 0;
+       return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte);
+}
+
+static inline
+int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr,
+                             pte_t *ptep)
+{
+       if (!pte_young(*ptep))
+               return 0;
+       return test_and_clear_bit(_PAGE_BIT_ACCESSED, &ptep->pte);
+}
+
+static inline
+void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+{
+       pte_val(*ptep) &= ~(__PAGE_PROT_WRITE|__PAGE_PROT_UWAUX);
+}
+
+static inline void ptep_mkdirty(pte_t *ptep)
+{
+       set_bit(_PAGE_BIT_DIRTY, &ptep->pte);
+}
+
+/*
+ * Macro to mark a page protection value as "uncacheable".  On processors which
+ * do not support it, this is a no-op.
+ */
+#define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_CACHE)
+
+
+/*
+ * Conversion functions: convert a page and protection to a page entry,
+ * and a page entry and page directory to the page they refer to.
+ */
+
+#define mk_pte(page, pgprot)   pfn_pte(page_to_pfn(page), (pgprot))
+#define mk_pte_huge(entry) \
+       ((entry).pte |= _PAGE_PRESENT | _PAGE_PSE | _PAGE_VALID)
+
+static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
+{
+       pte_val(pte) &= _PAGE_CHG_MASK;
+       pte_val(pte) |= pgprot_val(newprot);
+       return pte;
+}
+
+#define page_pte(page) page_pte_prot((page), __pgprot(0))
+
+#define pmd_page_kernel(pmd) \
+       ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
+
+#define pmd_page(pmd)  pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT)
+
+#define pmd_large(pmd) \
+       ((pmd_val(pmd) & (_PAGE_PSE | _PAGE_PRESENT)) == \
+        (_PAGE_PSE | _PAGE_PRESENT))
+
+/*
+ * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
+ *
+ * this macro returns the index of the entry in the pgd page which would
+ * control the given virtual address
+ */
+#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
+
+/*
+ * pgd_offset() returns a (pgd_t *)
+ * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
+ */
+#define pgd_offset(mm, address)        ((mm)->pgd + pgd_index(address))
+
+/*
+ * a shortcut which implies the use of the kernel's pgd, instead
+ * of a process's
+ */
+#define pgd_offset_k(address)  pgd_offset(&init_mm, address)
+
+/*
+ * the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
+ *
+ * this macro returns the index of the entry in the pmd page which would
+ * control the given virtual address
+ */
+#define pmd_index(address) \
+       (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
+
+/*
+ * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
+ *
+ * this macro returns the index of the entry in the pte page which would
+ * control the given virtual address
+ */
+#define pte_index(address) \
+       (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
+
+#define pte_offset_kernel(dir, address) \
+       ((pte_t *) pmd_page_kernel(*(dir)) +  pte_index(address))
+
+/*
+ * Make a given kernel text page executable/non-executable.
+ * Returns the previous executability setting of that page (which
+ * is used to restore the previous state). Used by the SMP bootup code.
+ * NOTE: this is an __init function for security reasons.
+ */
+static inline int set_kernel_exec(unsigned long vaddr, int enable)
+{
+       return 0;
+}
+
+#define pte_offset_map(dir, address) \
+       ((pte_t *) page_address(pmd_page(*(dir))) + pte_index(address))
+#define pte_offset_map_nested(dir, address) pte_offset_map(dir, address)
+#define pte_unmap(pte)         do {} while (0)
+#define pte_unmap_nested(pte)  do {} while (0)
+
+/*
+ * The MN10300 has external MMU info in the form of a TLB: this is adapted from
+ * the kernel page tables containing the necessary information by tlb-mn10300.S
+ */
+extern void update_mmu_cache(struct vm_area_struct *vma,
+                            unsigned long address, pte_t pte);
+
+#endif /* !__ASSEMBLY__ */
+
+#define kern_addr_valid(addr)  (1)
+
+#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
+       remap_pfn_range((vma), (vaddr), (pfn), (size), (prot))
+
+#define MK_IOSPACE_PFN(space, pfn)     (pfn)
+#define GET_IOSPACE(pfn)               0
+#define GET_PFN(pfn)                   (pfn)
+
+#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
+#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
+#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
+#define __HAVE_ARCH_PTEP_SET_WRPROTECT
+#define __HAVE_ARCH_PTEP_MKDIRTY
+#define __HAVE_ARCH_PTE_SAME
+#include <asm-generic/pgtable.h>
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_PGTABLE_H */
diff --git a/arch/mn10300/include/asm/pio-regs.h b/arch/mn10300/include/asm/pio-regs.h
new file mode 100644 (file)
index 0000000..96bc818
--- /dev/null
@@ -0,0 +1,233 @@
+/* MN10300 On-board I/O port module registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PIO_REGS_H
+#define _ASM_PIO_REGS_H
+
+#include <asm/cpu-regs.h>
+#include <asm/intctl-regs.h>
+
+#ifdef __KERNEL__
+
+/* I/O port 0 */
+#define        P0MD                    __SYSREG(0xdb000000, u16)       /* mode reg */
+#define P0MD_0                 0x0003  /* mask */
+#define P0MD_0_IN              0x0000  /* input mode */
+#define P0MD_0_OUT             0x0001  /* output mode */
+#define P0MD_0_TM0IO           0x0002  /* timer 0 I/O mode */
+#define P0MD_0_EYECLK          0x0003  /* test signal output (clock) */
+#define P0MD_1                 0x000c
+#define P0MD_1_IN              0x0000
+#define P0MD_1_OUT             0x0004
+#define P0MD_1_TM1IO           0x0008  /* timer 1 I/O mode */
+#define P0MD_1_EYED            0x000c  /* test signal output (data) */
+#define P0MD_2                 0x0030
+#define P0MD_2_IN              0x0000
+#define P0MD_2_OUT             0x0010
+#define P0MD_2_TM2IO           0x0020  /* timer 2 I/O mode */
+#define P0MD_3                 0x00c0
+#define P0MD_3_IN              0x0000
+#define P0MD_3_OUT             0x0040
+#define P0MD_3_TM3IO           0x0080  /* timer 3 I/O mode */
+#define P0MD_4                 0x0300
+#define P0MD_4_IN              0x0000
+#define P0MD_4_OUT             0x0100
+#define P0MD_4_TM4IO           0x0200  /* timer 4 I/O mode */
+#define P0MD_4_XCTS            0x0300  /* XCTS input for serial port 2 */
+#define P0MD_5                 0x0c00
+#define P0MD_5_IN              0x0000
+#define P0MD_5_OUT             0x0400
+#define P0MD_5_TM5IO           0x0800  /* timer 5 I/O mode */
+#define P0MD_6                 0x3000
+#define P0MD_6_IN              0x0000
+#define P0MD_6_OUT             0x1000
+#define P0MD_6_TM6IOA          0x2000  /* timer 6 I/O mode A */
+#define P0MD_7                 0xc000
+#define P0MD_7_IN              0x0000
+#define P0MD_7_OUT             0x4000
+#define P0MD_7_TM6IOB          0x8000  /* timer 6 I/O mode B */
+
+#define        P0IN                    __SYSREG(0xdb000004, u8)        /* in reg */
+#define        P0OUT                   __SYSREG(0xdb000008, u8)        /* out reg */
+
+#define        P0TMIO                  __SYSREG(0xdb00000c, u8)        /* TM pin I/O control reg */
+#define P0TMIO_TM0_IN          0x00
+#define P0TMIO_TM0_OUT         0x01
+#define P0TMIO_TM1_IN          0x00
+#define P0TMIO_TM1_OUT         0x02
+#define P0TMIO_TM2_IN          0x00
+#define P0TMIO_TM2_OUT         0x04
+#define P0TMIO_TM3_IN          0x00
+#define P0TMIO_TM3_OUT         0x08
+#define P0TMIO_TM4_IN          0x00
+#define P0TMIO_TM4_OUT         0x10
+#define P0TMIO_TM5_IN          0x00
+#define P0TMIO_TM5_OUT         0x20
+#define P0TMIO_TM6A_IN         0x00
+#define P0TMIO_TM6A_OUT                0x40
+#define P0TMIO_TM6B_IN         0x00
+#define P0TMIO_TM6B_OUT                0x80
+
+/* I/O port 1 */
+#define        P1MD                    __SYSREG(0xdb000100, u16)       /* mode reg */
+#define P1MD_0                 0x0003  /* mask */
+#define P1MD_0_IN              0x0000  /* input mode */
+#define P1MD_0_OUT             0x0001  /* output mode */
+#define P1MD_0_TM7IO           0x0002  /* timer 7 I/O mode */
+#define P1MD_0_ADTRG           0x0003  /* A/D converter trigger mode */
+#define P1MD_1                 0x000c
+#define P1MD_1_IN              0x0000
+#define P1MD_1_OUT             0x0004
+#define P1MD_1_TM8IO           0x0008  /* timer 8 I/O mode */
+#define P1MD_1_XDMR0           0x000c  /* DMA request input 0 mode */
+#define P1MD_2                 0x0030
+#define P1MD_2_IN              0x0000
+#define P1MD_2_OUT             0x0010
+#define P1MD_2_TM9IO           0x0020  /* timer 9 I/O mode */
+#define P1MD_2_XDMR1           0x0030  /* DMA request input 1 mode */
+#define P1MD_3                 0x00c0
+#define P1MD_3_IN              0x0000
+#define P1MD_3_OUT             0x0040
+#define P1MD_3_TM10IO          0x0080  /* timer 10 I/O mode */
+#define P1MD_3_FRQS0           0x00c0  /* CPU clock multiplier setting input 0 mode */
+#define P1MD_4                 0x0300
+#define P1MD_4_IN              0x0000
+#define P1MD_4_OUT             0x0100
+#define P1MD_4_TM11IO          0x0200  /* timer 11 I/O mode */
+#define P1MD_4_FRQS1           0x0300  /* CPU clock multiplier setting input 1 mode */
+
+#define        P1IN                    __SYSREG(0xdb000104, u8)        /* in reg */
+#define        P1OUT                   __SYSREG(0xdb000108, u8)        /* out reg */
+#define        P1TMIO                  __SYSREG(0xdb00010c, u8)        /* TM pin I/O control reg */
+#define P1TMIO_TM11_IN         0x00
+#define P1TMIO_TM11_OUT                0x01
+#define P1TMIO_TM10_IN         0x00
+#define P1TMIO_TM10_OUT                0x02
+#define P1TMIO_TM9_IN          0x00
+#define P1TMIO_TM9_OUT         0x04
+#define P1TMIO_TM8_IN          0x00
+#define P1TMIO_TM8_OUT         0x08
+#define P1TMIO_TM7_IN          0x00
+#define P1TMIO_TM7_OUT         0x10
+
+/* I/O port 2 */
+#define        P2MD                    __SYSREG(0xdb000200, u16)       /* mode reg */
+#define P2MD_0                 0x0003  /* mask */
+#define P2MD_0_IN              0x0000  /* input mode */
+#define P2MD_0_OUT             0x0001  /* output mode */
+#define P2MD_0_BOOTBW          0x0003  /* boot bus width selector mode */
+#define P2MD_1                 0x000c
+#define P2MD_1_IN              0x0000
+#define P2MD_1_OUT             0x0004
+#define P2MD_1_BOOTSEL         0x000c  /* boot device selector mode */
+#define P2MD_2                 0x0030
+#define P2MD_2_IN              0x0000
+#define P2MD_2_OUT             0x0010
+#define P2MD_3                 0x00c0
+#define P2MD_3_IN              0x0000
+#define P2MD_3_OUT             0x0040
+#define P2MD_3_CKIO            0x00c0  /* mode */
+#define P2MD_4                 0x0300
+#define P2MD_4_IN              0x0000
+#define P2MD_4_OUT             0x0100
+#define P2MD_4_CMOD            0x0300  /* mode */
+
+#define        P2IN                    __SYSREG(0xdb000204, u8)        /* in reg */
+#define        P2OUT                   __SYSREG(0xdb000208, u8)        /* out reg */
+#define        P2TMIO                  __SYSREG(0xdb00020c, u8)        /* TM pin I/O control reg */
+
+/* I/O port 3 */
+#define        P3MD                    __SYSREG(0xdb000300, u16)       /* mode reg */
+#define P3MD_0                 0x0003  /* mask */
+#define P3MD_0_IN              0x0000  /* input mode */
+#define P3MD_0_OUT             0x0001  /* output mode */
+#define P3MD_0_AFRXD           0x0002  /* AFR interface mode */
+#define P3MD_1                 0x000c
+#define P3MD_1_IN              0x0000
+#define P3MD_1_OUT             0x0004
+#define P3MD_1_AFTXD           0x0008  /* AFR interface mode */
+#define P3MD_2                 0x0030
+#define P3MD_2_IN              0x0000
+#define P3MD_2_OUT             0x0010
+#define P3MD_2_AFSCLK          0x0020  /* AFR interface mode */
+#define P3MD_3                 0x00c0
+#define P3MD_3_IN              0x0000
+#define P3MD_3_OUT             0x0040
+#define P3MD_3_AFFS            0x0080  /* AFR interface mode */
+#define P3MD_4                 0x0300
+#define P3MD_4_IN              0x0000
+#define P3MD_4_OUT             0x0100
+#define P3MD_4_AFEHC           0x0200  /* AFR interface mode */
+
+#define        P3IN                    __SYSREG(0xdb000304, u8)        /* in reg */
+#define        P3OUT                   __SYSREG(0xdb000308, u8)        /* out reg */
+
+/* I/O port 4 */
+#define        P4MD                    __SYSREG(0xdb000400, u16)       /* mode reg */
+#define P4MD_0                 0x0003  /* mask */
+#define P4MD_0_IN              0x0000  /* input mode */
+#define P4MD_0_OUT             0x0001  /* output mode */
+#define P4MD_0_SCL0            0x0002  /* I2C/serial mode */
+#define P4MD_1                 0x000c
+#define P4MD_1_IN              0x0000
+#define P4MD_1_OUT             0x0004
+#define P4MD_1_SDA0            0x0008
+#define P4MD_2                 0x0030
+#define P4MD_2_IN              0x0000
+#define P4MD_2_OUT             0x0010
+#define P4MD_2_SCL1            0x0020
+#define P4MD_3                 0x00c0
+#define P4MD_3_IN              0x0000
+#define P4MD_3_OUT             0x0040
+#define P4MD_3_SDA1            0x0080
+#define P4MD_4                 0x0300
+#define P4MD_4_IN              0x0000
+#define P4MD_4_OUT             0x0100
+#define P4MD_4_SBO0            0x0200
+#define P4MD_5                 0x0c00
+#define P4MD_5_IN              0x0000
+#define P4MD_5_OUT             0x0400
+#define P4MD_5_SBO1            0x0800
+#define P4MD_6                 0x3000
+#define P4MD_6_IN              0x0000
+#define P4MD_6_OUT             0x1000
+#define P4MD_6_SBT0            0x2000
+#define P4MD_7                 0xc000
+#define P4MD_7_IN              0x0000
+#define P4MD_7_OUT             0x4000
+#define P4MD_7_SBT1            0x8000
+
+#define        P4IN                    __SYSREG(0xdb000404, u8)        /* in reg */
+#define        P4OUT                   __SYSREG(0xdb000408, u8)        /* out reg */
+
+/* I/O port 5 */
+#define        P5MD                    __SYSREG(0xdb000500, u16)       /* mode reg */
+#define P5MD_0                 0x0003  /* mask */
+#define P5MD_0_IN              0x0000  /* input mode */
+#define P5MD_0_OUT             0x0001  /* output mode */
+#define P5MD_0_IRTXD           0x0002  /* IrDA mode */
+#define P5MD_0_SOUT            0x0004  /* serial mode */
+#define P5MD_1                 0x000c
+#define P5MD_1_IN              0x0000
+#define P5MD_1_OUT             0x0004
+#define P5MD_1_IRRXDS          0x0008  /* IrDA mode */
+#define P5MD_1_SIN             0x000c  /* serial mode */
+#define P5MD_2                 0x0030
+#define P5MD_2_IN              0x0000
+#define P5MD_2_OUT             0x0010
+#define P5MD_2_IRRXDF          0x0020  /* IrDA mode */
+
+#define        P5IN                    __SYSREG(0xdb000504, u8)        /* in reg */
+#define        P5OUT                   __SYSREG(0xdb000508, u8)        /* out reg */
+
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_PIO_REGS_H */
diff --git a/arch/mn10300/include/asm/poll.h b/arch/mn10300/include/asm/poll.h
new file mode 100644 (file)
index 0000000..c98509d
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/poll.h>
diff --git a/arch/mn10300/include/asm/posix_types.h b/arch/mn10300/include/asm/posix_types.h
new file mode 100644 (file)
index 0000000..077567c
--- /dev/null
@@ -0,0 +1,132 @@
+/* MN10300 POSIX types
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_POSIX_TYPES_H
+#define _ASM_POSIX_TYPES_H
+
+/*
+ * This file is generally used by user-level software, so you need to
+ * be a little careful about namespace pollution etc.  Also, we cannot
+ * assume GCC is being used.
+ */
+
+typedef unsigned long  __kernel_ino_t;
+typedef unsigned short __kernel_mode_t;
+typedef unsigned short __kernel_nlink_t;
+typedef long           __kernel_off_t;
+typedef int            __kernel_pid_t;
+typedef unsigned short __kernel_ipc_pid_t;
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+typedef unsigned long  __kernel_size_t;
+typedef long           __kernel_ssize_t;
+typedef int            __kernel_ptrdiff_t;
+typedef long           __kernel_time_t;
+typedef long           __kernel_suseconds_t;
+typedef long           __kernel_clock_t;
+typedef int            __kernel_timer_t;
+typedef int            __kernel_clockid_t;
+typedef int            __kernel_daddr_t;
+typedef char *         __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int   __kernel_uid32_t;
+typedef unsigned int   __kernel_gid32_t;
+
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+typedef unsigned short __kernel_old_dev_t;
+
+#ifdef __GNUC__
+typedef long long      __kernel_loff_t;
+#endif
+
+typedef struct {
+#if defined(__KERNEL__) || defined(__USE_ALL)
+       int     val[2];
+#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
+       int     __val[2];
+#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
+} __kernel_fsid_t;
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+#undef __FD_SET
+static inline void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
+{
+       unsigned long __tmp = __fd / __NFDBITS;
+       unsigned long __rem = __fd % __NFDBITS;
+       __fdsetp->fds_bits[__tmp] |= (1UL<<__rem);
+}
+
+#undef __FD_CLR
+static inline void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp)
+{
+       unsigned long __tmp = __fd / __NFDBITS;
+       unsigned long __rem = __fd % __NFDBITS;
+       __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem);
+}
+
+
+#undef __FD_ISSET
+static inline int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p)
+{
+       unsigned long __tmp = __fd / __NFDBITS;
+       unsigned long __rem = __fd % __NFDBITS;
+       return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0;
+}
+
+/*
+ * This will unroll the loop for the normal constant case (8 ints,
+ * for a 256-bit fd_set)
+ */
+#undef __FD_ZERO
+static inline void __FD_ZERO(__kernel_fd_set *__p)
+{
+       unsigned long *__tmp = __p->fds_bits;
+       int __i;
+
+       if (__builtin_constant_p(__FDSET_LONGS)) {
+               switch (__FDSET_LONGS) {
+               case 16:
+                       __tmp[ 0] = 0; __tmp[ 1] = 0;
+                       __tmp[ 2] = 0; __tmp[ 3] = 0;
+                       __tmp[ 4] = 0; __tmp[ 5] = 0;
+                       __tmp[ 6] = 0; __tmp[ 7] = 0;
+                       __tmp[ 8] = 0; __tmp[ 9] = 0;
+                       __tmp[10] = 0; __tmp[11] = 0;
+                       __tmp[12] = 0; __tmp[13] = 0;
+                       __tmp[14] = 0; __tmp[15] = 0;
+                       return;
+
+               case 8:
+                       __tmp[ 0] = 0; __tmp[ 1] = 0;
+                       __tmp[ 2] = 0; __tmp[ 3] = 0;
+                       __tmp[ 4] = 0; __tmp[ 5] = 0;
+                       __tmp[ 6] = 0; __tmp[ 7] = 0;
+                       return;
+
+               case 4:
+                       __tmp[ 0] = 0; __tmp[ 1] = 0;
+                       __tmp[ 2] = 0; __tmp[ 3] = 0;
+                       return;
+               }
+       }
+       __i = __FDSET_LONGS;
+       while (__i) {
+               __i--;
+               *__tmp = 0;
+               __tmp++;
+       }
+}
+
+#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
+
+#endif /* _ASM_POSIX_TYPES_H */
diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
new file mode 100644 (file)
index 0000000..7323927
--- /dev/null
@@ -0,0 +1,186 @@
+/* MN10300 Processor specifics
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_PROCESSOR_H
+#define _ASM_PROCESSOR_H
+
+#include <asm/page.h>
+#include <asm/ptrace.h>
+#include <asm/cpu-regs.h>
+#include <linux/threads.h>
+
+/* Forward declaration, a strange C thing */
+struct task_struct;
+struct mm_struct;
+
+/*
+ * Default implementation of macro that returns current
+ * instruction pointer ("program counter").
+ */
+#define current_text_addr()                    \
+({                                             \
+       void *__pc;                             \
+       asm("mov pc,%0" : "=a"(__pc));          \
+       __pc;                                   \
+})
+
+extern void show_registers(struct pt_regs *regs);
+
+/*
+ *  CPU type and hardware bug flags. Kept separately for each CPU.
+ *  Members of this structure are referenced in head.S, so think twice
+ *  before touching them. [mj]
+ */
+
+struct mn10300_cpuinfo {
+       int             type;
+       unsigned long   loops_per_sec;
+       char            hard_math;
+       unsigned long   *pgd_quick;
+       unsigned long   *pte_quick;
+       unsigned long   pgtable_cache_sz;
+};
+
+extern struct mn10300_cpuinfo boot_cpu_data;
+
+#define cpu_data &boot_cpu_data
+#define current_cpu_data boot_cpu_data
+
+extern void identify_cpu(struct mn10300_cpuinfo *);
+extern void print_cpu_info(struct mn10300_cpuinfo *);
+extern void dodgy_tsc(void);
+#define cpu_relax() barrier()
+
+/*
+ * User space process size: 1.75GB (default).
+ */
+#define TASK_SIZE              0x70000000
+
+/*
+ * Where to put the userspace stack by default
+ */
+#define STACK_TOP              0x70000000
+#define STACK_TOP_MAX          STACK_TOP
+
+/* This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE     0x30000000
+
+typedef struct {
+       unsigned long   seg;
+} mm_segment_t;
+
+struct fpu_state_struct {
+       unsigned long   fs[32];         /* fpu registers */
+       unsigned long   fpcr;           /* fpu control register */
+};
+
+struct thread_struct {
+       struct pt_regs          *uregs;         /* userspace register frame */
+       unsigned long           pc;             /* kernel PC */
+       unsigned long           sp;             /* kernel SP */
+       unsigned long           a3;             /* kernel FP */
+       unsigned long           wchan;
+       unsigned long           usp;
+       struct pt_regs          *__frame;
+       unsigned long           fpu_flags;
+#define THREAD_USING_FPU       0x00000001      /* T if this task is using the FPU */
+       struct fpu_state_struct fpu_state;
+};
+
+#define INIT_THREAD                            \
+{                                              \
+       .uregs          = init_uregs,           \
+       .pc             = 0,                    \
+       .sp             = 0,                    \
+       .a3             = 0,                    \
+       .wchan          = 0,                    \
+       .__frame        = NULL,                 \
+}
+
+#define INIT_MMAP \
+{ &init_mm, 0, 0, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, \
+  NULL, NULL }
+
+/*
+ * do necessary setup to start up a newly executed thread
+ * - need to discard the frame stacked by the kernel thread invoking the execve
+ *   syscall (see RESTORE_ALL macro)
+ */
+#define start_thread(regs, new_pc, new_sp) do {                \
+       set_fs(USER_DS);                                \
+       __frame = current->thread.uregs;                \
+       __frame->epsw = EPSW_nSL | EPSW_IE | EPSW_IM;   \
+       __frame->pc = new_pc;                           \
+       __frame->sp = new_sp;                           \
+} while (0)
+
+/* Free all resources held by a thread. */
+extern void release_thread(struct task_struct *);
+
+/* Prepare to copy thread state - unlazy all lazy status */
+extern void prepare_to_copy(struct task_struct *tsk);
+
+/*
+ * create a kernel thread without removing it from tasklists
+ */
+extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
+
+/*
+ * Return saved PC of a blocked thread.
+ */
+extern unsigned long thread_saved_pc(struct task_struct *tsk);
+
+unsigned long get_wchan(struct task_struct *p);
+
+#define task_pt_regs(task)                                             \
+({                                                                     \
+       struct pt_regs *__regs__;                                       \
+       __regs__ = (struct pt_regs *) (KSTK_TOP(task_stack_page(task)) - 8); \
+       __regs__ - 1;                                                   \
+})
+
+#define KSTK_EIP(task) (task_pt_regs(task)->pc)
+#define KSTK_ESP(task) (task_pt_regs(task)->sp)
+
+#define KSTK_TOP(info)                         \
+({                                             \
+       (unsigned long)(info) + THREAD_SIZE;    \
+})
+
+#define ARCH_HAS_PREFETCH
+#define ARCH_HAS_PREFETCHW
+
+static inline void prefetch(const void *x)
+{
+#ifndef CONFIG_MN10300_CACHE_DISABLED
+#ifdef CONFIG_MN10300_PROC_MN103E010
+       asm volatile ("nop; nop; dcpf (%0)" : : "r"(x));
+#else
+       asm volatile ("dcpf (%0)" : : "r"(x));
+#endif
+#endif
+}
+
+static inline void prefetchw(const void *x)
+{
+#ifndef CONFIG_MN10300_CACHE_DISABLED
+#ifdef CONFIG_MN10300_PROC_MN103E010
+       asm volatile ("nop; nop; dcpf (%0)" : : "r"(x));
+#else
+       asm volatile ("dcpf (%0)" : : "r"(x));
+#endif
+#endif
+}
+
+#endif /* _ASM_PROCESSOR_H */
diff --git a/arch/mn10300/include/asm/ptrace.h b/arch/mn10300/include/asm/ptrace.h
new file mode 100644 (file)
index 0000000..7b06cc6
--- /dev/null
@@ -0,0 +1,103 @@
+/* MN10300 Exception frame layout and ptrace constants
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PTRACE_H
+#define _ASM_PTRACE_H
+
+#define PT_A3          0
+#define PT_A2          1
+#define PT_D3          2
+#define        PT_D2           3
+#define PT_MCVF                4
+#define        PT_MCRL         5
+#define PT_MCRH                6
+#define        PT_MDRQ         7
+#define        PT_E1           8
+#define        PT_E0           9
+#define        PT_E7           10
+#define        PT_E6           11
+#define        PT_E5           12
+#define        PT_E4           13
+#define        PT_E3           14
+#define        PT_E2           15
+#define        PT_SP           16
+#define        PT_LAR          17
+#define        PT_LIR          18
+#define        PT_MDR          19
+#define        PT_A1           20
+#define        PT_A0           21
+#define        PT_D1           22
+#define        PT_D0           23
+#define PT_ORIG_D0     24
+#define        PT_EPSW         25
+#define        PT_PC           26
+#define NR_PTREGS      27
+
+#ifndef __ASSEMBLY__
+/*
+ * This defines the way registers are stored in the event of an exception
+ * - the strange order is due to the MOVM instruction
+ */
+struct pt_regs {
+       unsigned long           a3;             /* syscall arg 3 */
+       unsigned long           a2;             /* syscall arg 4 */
+       unsigned long           d3;             /* syscall arg 5 */
+       unsigned long           d2;             /* syscall arg 6 */
+       unsigned long           mcvf;
+       unsigned long           mcrl;
+       unsigned long           mcrh;
+       unsigned long           mdrq;
+       unsigned long           e1;
+       unsigned long           e0;
+       unsigned long           e7;
+       unsigned long           e6;
+       unsigned long           e5;
+       unsigned long           e4;
+       unsigned long           e3;
+       unsigned long           e2;
+       unsigned long           sp;
+       unsigned long           lar;
+       unsigned long           lir;
+       unsigned long           mdr;
+       unsigned long           a1;
+       unsigned long           a0;             /* syscall arg 1 */
+       unsigned long           d1;             /* syscall arg 2 */
+       unsigned long           d0;             /* syscall ret */
+       struct pt_regs          *next;          /* next frame pointer */
+       unsigned long           orig_d0;        /* syscall number */
+       unsigned long           epsw;
+       unsigned long           pc;
+};
+#endif
+
+extern struct pt_regs *__frame; /* current frame pointer */
+
+/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
+#define PTRACE_GETREGS            12
+#define PTRACE_SETREGS            13
+#define PTRACE_GETFPREGS          14
+#define PTRACE_SETFPREGS          15
+
+/* options set using PTRACE_SETOPTIONS */
+#define PTRACE_O_TRACESYSGOOD     0x00000001
+
+#if defined(__KERNEL__)
+
+#if !defined(__ASSEMBLY__)
+#define user_mode(regs)                        (((regs)->epsw & EPSW_nSL) == EPSW_nSL)
+#define instruction_pointer(regs)      ((regs)->pc)
+extern void show_regs(struct pt_regs *);
+#endif  /*  !__ASSEMBLY  */
+
+#define profile_pc(regs) ((regs)->pc)
+
+#endif  /*  __KERNEL__  */
+
+#endif /* _ASM_PTRACE_H */
diff --git a/arch/mn10300/include/asm/reset-regs.h b/arch/mn10300/include/asm/reset-regs.h
new file mode 100644 (file)
index 0000000..174523d
--- /dev/null
@@ -0,0 +1,64 @@
+/* MN10300 Reset controller and watchdog timer definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_RESET_REGS_H
+#define _ASM_RESET_REGS_H
+
+#include <asm/cpu-regs.h>
+#include <asm/exceptions.h>
+
+#ifdef __KERNEL__
+
+#ifdef CONFIG_MN10300_WD_TIMER
+#define ARCH_HAS_NMI_WATCHDOG          /* See include/linux/nmi.h */
+#endif
+
+/*
+ * watchdog timer registers
+ */
+#define WDBC                   __SYSREGC(0xc0001000, u8) /* watchdog binary counter reg */
+
+#define WDCTR                  __SYSREG(0xc0001002, u8)  /* watchdog timer control reg */
+#define WDCTR_WDCK             0x07    /* clock source selection */
+#define WDCTR_WDCK_256th       0x00    /* - OSCI/256 */
+#define WDCTR_WDCK_1024th      0x01    /* - OSCI/1024 */
+#define WDCTR_WDCK_2048th      0x02    /* - OSCI/2048 */
+#define WDCTR_WDCK_16384th     0x03    /* - OSCI/16384 */
+#define WDCTR_WDCK_65536th     0x04    /* - OSCI/65536 */
+#define WDCTR_WDRST            0x40    /* binary counter reset */
+#define WDCTR_WDCNE            0x80    /* watchdog timer enable */
+
+#define RSTCTR                 __SYSREG(0xc0001004, u8) /* reset control reg */
+#define RSTCTR_CHIPRST         0x01    /* chip reset */
+#define RSTCTR_DBFRST          0x02    /* double fault reset flag */
+#define RSTCTR_WDTRST          0x04    /* watchdog timer reset flag */
+#define RSTCTR_WDREN           0x08    /* watchdog timer reset enable */
+
+#ifndef __ASSEMBLY__
+
+static inline void mn10300_proc_hard_reset(void)
+{
+       RSTCTR &= ~RSTCTR_CHIPRST;
+       RSTCTR |= RSTCTR_CHIPRST;
+}
+
+extern unsigned int watchdog_alert_counter;
+
+extern void watchdog_go(void);
+extern asmlinkage void watchdog_handler(void);
+extern asmlinkage
+void watchdog_interrupt(struct pt_regs *, enum exception_code);
+
+#endif
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_RESET_REGS_H */
diff --git a/arch/mn10300/include/asm/resource.h b/arch/mn10300/include/asm/resource.h
new file mode 100644 (file)
index 0000000..04bc4db
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/resource.h>
diff --git a/arch/mn10300/include/asm/rtc-regs.h b/arch/mn10300/include/asm/rtc-regs.h
new file mode 100644 (file)
index 0000000..c42deef
--- /dev/null
@@ -0,0 +1,86 @@
+/* MN10300 on-chip Real-Time Clock registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_RTC_REGS_H
+#define _ASM_RTC_REGS_H
+
+#include <asm/intctl-regs.h>
+
+#ifdef __KERNEL__
+
+#define RTSCR                  __SYSREG(0xd8600000, u8) /* RTC seconds count reg */
+#define RTSAR                  __SYSREG(0xd8600001, u8) /* RTC seconds alarm reg */
+#define RTMCR                  __SYSREG(0xd8600002, u8) /* RTC minutes count reg */
+#define RTMAR                  __SYSREG(0xd8600003, u8) /* RTC minutes alarm reg */
+#define RTHCR                  __SYSREG(0xd8600004, u8) /* RTC hours count reg */
+#define RTHAR                  __SYSREG(0xd8600005, u8) /* RTC hours alarm reg */
+#define RTDWCR                 __SYSREG(0xd8600006, u8) /* RTC day of the week count reg */
+#define RTDMCR                 __SYSREG(0xd8600007, u8) /* RTC days count reg */
+#define RTMTCR                 __SYSREG(0xd8600008, u8) /* RTC months count reg */
+#define RTYCR                  __SYSREG(0xd8600009, u8) /* RTC years count reg */
+
+#define RTCRA                  __SYSREG(0xd860000a, u8)/* RTC control reg A */
+#define RTCRA_RS               0x0f    /* periodic timer interrupt cycle setting */
+#define RTCRA_RS_NONE          0x00    /* - off */
+#define RTCRA_RS_3_90625ms     0x01    /* - 3.90625ms  (1/256s) */
+#define RTCRA_RS_7_8125ms      0x02    /* - 7.8125ms   (1/128s) */
+#define RTCRA_RS_122_070us     0x03    /* - 122.070us  (1/8192s) */
+#define RTCRA_RS_244_141us     0x04    /* - 244.141us  (1/4096s) */
+#define RTCRA_RS_488_281us     0x05    /* - 488.281us  (1/2048s) */
+#define RTCRA_RS_976_5625us    0x06    /* - 976.5625us (1/1024s) */
+#define RTCRA_RS_1_953125ms    0x07    /* - 1.953125ms (1/512s) */
+#define RTCRA_RS_3_90624ms     0x08    /* - 3.90624ms  (1/256s) */
+#define RTCRA_RS_7_8125ms_b    0x09    /* - 7.8125ms   (1/128s) */
+#define RTCRA_RS_15_625ms      0x0a    /* - 15.625ms   (1/64s) */
+#define RTCRA_RS_31_25ms       0x0b    /* - 31.25ms    (1/32s) */
+#define RTCRA_RS_62_5ms                0x0c    /* - 62.5ms     (1/16s) */
+#define RTCRA_RS_125ms         0x0d    /* - 125ms      (1/8s) */
+#define RTCRA_RS_250ms         0x0e    /* - 250ms      (1/4s) */
+#define RTCRA_RS_500ms         0x0f    /* - 500ms      (1/2s) */
+#define RTCRA_DVR              0x40    /* divider reset */
+#define RTCRA_UIP              0x80    /* clock update flag */
+
+#define RTCRB                  __SYSREG(0xd860000b, u8) /* RTC control reg B */
+#define RTCRB_DSE              0x01    /* daylight savings time enable */
+#define RTCRB_TM               0x02    /* time format */
+#define RTCRB_TM_12HR          0x00    /* - 12 hour format */
+#define RTCRB_TM_24HR          0x02    /* - 24 hour format */
+#define RTCRB_DM               0x04    /* numeric value format */
+#define RTCRB_DM_BCD           0x00    /* - BCD */
+#define RTCRB_DM_BINARY                0x04    /* - binary */
+#define RTCRB_UIE              0x10    /* update interrupt disable */
+#define RTCRB_AIE              0x20    /* alarm interrupt disable */
+#define RTCRB_PIE              0x40    /* periodic interrupt disable */
+#define RTCRB_SET              0x80    /* clock update enable */
+
+#define RTSRC                  __SYSREG(0xd860000c, u8) /* RTC status reg C */
+#define RTSRC_UF               0x10    /* update end interrupt flag */
+#define RTSRC_AF               0x20    /* alarm interrupt flag */
+#define RTSRC_PF               0x40    /* periodic interrupt flag */
+#define RTSRC_IRQF             0x80    /* interrupt flag */
+
+#define RTIRQ                  32
+#define RTICR                  GxICR(RTIRQ)
+
+/*
+ * MC146818 RTC compatibility defs for the MN10300 on-chip RTC
+ */
+#define RTC_PORT(x)            0xd8600000
+#define RTC_ALWAYS_BCD         1       /* RTC operates in binary mode */
+
+#define CMOS_READ(addr)                __SYSREG(0xd8600000 + (addr), u8)
+#define CMOS_WRITE(val, addr)  \
+       do { __SYSREG(0xd8600000 + (addr), u8) = val; } while (0)
+
+#define RTC_IRQ                        RTIRQ
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_RTC_REGS_H */
diff --git a/arch/mn10300/include/asm/rtc.h b/arch/mn10300/include/asm/rtc.h
new file mode 100644 (file)
index 0000000..c295194
--- /dev/null
@@ -0,0 +1,41 @@
+/* MN10300 Real time clock definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_RTC_H
+#define _ASM_RTC_H
+
+#ifdef CONFIG_MN10300_RTC
+
+#include <linux/init.h>
+
+extern void check_rtc_time(void);
+extern void __init calibrate_clock(void);
+extern unsigned long __init get_initial_rtc_time(void);
+
+#else /* !CONFIG_MN10300_RTC */
+
+static inline void check_rtc_time(void)
+{
+}
+
+static inline void calibrate_clock(void)
+{
+}
+
+static inline unsigned long get_initial_rtc_time(void)
+{
+       return 0;
+}
+
+#endif /* !CONFIG_MN10300_RTC */
+
+#include <asm-generic/rtc.h>
+
+#endif /* _ASM_RTC_H */
diff --git a/arch/mn10300/include/asm/scatterlist.h b/arch/mn10300/include/asm/scatterlist.h
new file mode 100644 (file)
index 0000000..6753590
--- /dev/null
@@ -0,0 +1,55 @@
+/* MN10300 Scatterlist definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SCATTERLIST_H
+#define _ASM_SCATTERLIST_H
+
+#include <asm/types.h>
+
+/*
+ * Drivers must set either ->address or (preferred) page and ->offset
+ * to indicate where data must be transferred to/from.
+ *
+ * Using page is recommended since it handles highmem data as well as
+ * low mem. ->address is restricted to data which has a virtual mapping, and
+ * it will go away in the future. Updating to page can be automated very
+ * easily -- something like
+ *
+ * sg->address = some_ptr;
+ *
+ * can be rewritten as
+ *
+ * sg_set_page(virt_to_page(some_ptr));
+ * sg->offset = (unsigned long) some_ptr & ~PAGE_MASK;
+ *
+ * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens
+ */
+struct scatterlist {
+#ifdef CONFIG_DEBUG_SG
+       unsigned long   sg_magic;
+#endif
+       unsigned long   page_link;
+       unsigned int    offset;         /* for highmem, page offset */
+       dma_addr_t      dma_address;
+       unsigned int    length;
+};
+
+#define ISA_DMA_THRESHOLD (0x00ffffff)
+
+/*
+ * These macros should be used after a pci_map_sg call has been done
+ * to get bus addresses of each of the SG entries and their lengths.
+ * You should only work with the number of sg entries pci_map_sg
+ * returns.
+ */
+#define sg_dma_address(sg)     ((sg)->dma_address)
+#define sg_dma_len(sg)         ((sg)->length)
+
+#endif /* _ASM_SCATTERLIST_H */
diff --git a/arch/mn10300/include/asm/sections.h b/arch/mn10300/include/asm/sections.h
new file mode 100644 (file)
index 0000000..2b8c516
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/sections.h>
diff --git a/arch/mn10300/include/asm/sembuf.h b/arch/mn10300/include/asm/sembuf.h
new file mode 100644 (file)
index 0000000..301f3f9
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _ASM_SEMBUF_H
+#define _ASM_SEMBUF_H
+
+/*
+ * The semid64_ds structure for MN10300 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct semid64_ds {
+       struct ipc64_perm sem_perm;             /* permissions .. see ipc.h */
+       __kernel_time_t sem_otime;              /* last semop time */
+       unsigned long   __unused1;
+       __kernel_time_t sem_ctime;              /* last change time */
+       unsigned long   __unused2;
+       unsigned long   sem_nsems;              /* no. of semaphores in array */
+       unsigned long   __unused3;
+       unsigned long   __unused4;
+};
+
+#endif /* _ASM_SEMBUF_H */
diff --git a/arch/mn10300/include/asm/serial-regs.h b/arch/mn10300/include/asm/serial-regs.h
new file mode 100644 (file)
index 0000000..6498469
--- /dev/null
@@ -0,0 +1,160 @@
+/* MN10300 on-board serial port module registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_SERIAL_REGS_H
+#define _ASM_SERIAL_REGS_H
+
+#include <asm/cpu-regs.h>
+#include <asm/intctl-regs.h>
+
+#ifdef __KERNEL__
+
+/* serial port 0 */
+#define        SC0CTR                  __SYSREG(0xd4002000, u16)       /* control reg */
+#define        SC01CTR_CK              0x0007  /* clock source select */
+#define        SC0CTR_CK_TM8UFLOW_8    0x0000  /* - 1/8 timer 8 underflow (serial port 0 only) */
+#define        SC1CTR_CK_TM9UFLOW_8    0x0000  /* - 1/8 timer 9 underflow (serial port 1 only) */
+#define        SC01CTR_CK_IOCLK_8      0x0001  /* - 1/8 IOCLK */
+#define        SC01CTR_CK_IOCLK_32     0x0002  /* - 1/32 IOCLK */
+#define        SC0CTR_CK_TM2UFLOW_2    0x0003  /* - 1/2 timer 2 underflow (serial port 0 only) */
+#define        SC1CTR_CK_TM3UFLOW_2    0x0003  /* - 1/2 timer 3 underflow (serial port 1 only) */
+#define        SC0CTR_CK_TM0UFLOW_8    0x0004  /* - 1/8 timer 1 underflow (serial port 0 only) */
+#define        SC1CTR_CK_TM1UFLOW_8    0x0004  /* - 1/8 timer 2 underflow (serial port 1 only) */
+#define        SC0CTR_CK_TM2UFLOW_8    0x0005  /* - 1/8 timer 2 underflow (serial port 0 only) */
+#define        SC1CTR_CK_TM3UFLOW_8    0x0005  /* - 1/8 timer 3 underflow (serial port 1 only) */
+#define        SC01CTR_CK_EXTERN_8     0x0006  /* - 1/8 external closk */
+#define        SC01CTR_CK_EXTERN       0x0007  /* - external closk */
+#define        SC01CTR_STB             0x0008  /* stop bit select */
+#define        SC01CTR_STB_1BIT        0x0000  /* - 1 stop bit */
+#define        SC01CTR_STB_2BIT        0x0008  /* - 2 stop bits */
+#define        SC01CTR_PB              0x0070  /* parity bit select */
+#define        SC01CTR_PB_NONE         0x0000  /* - no parity */
+#define        SC01CTR_PB_FIXED0       0x0040  /* - fixed at 0 */
+#define        SC01CTR_PB_FIXED1       0x0050  /* - fixed at 1 */
+#define        SC01CTR_PB_EVEN         0x0060  /* - even parity */
+#define        SC01CTR_PB_ODD          0x0070  /* - odd parity */
+#define        SC01CTR_CLN             0x0080  /* character length */
+#define        SC01CTR_CLN_7BIT        0x0000  /* - 7 bit chars */
+#define        SC01CTR_CLN_8BIT        0x0080  /* - 8 bit chars */
+#define        SC01CTR_TOE             0x0100  /* T input output enable */
+#define        SC01CTR_OD              0x0200  /* bit order select */
+#define        SC01CTR_OD_LSBFIRST     0x0000  /* - LSB first */
+#define        SC01CTR_OD_MSBFIRST     0x0200  /* - MSB first */
+#define        SC01CTR_MD              0x0c00  /* mode select */
+#define SC01CTR_MD_STST_SYNC   0x0000  /* - start-stop synchronous */
+#define SC01CTR_MD_CLOCK_SYNC1 0x0400  /* - clock synchronous 1 */
+#define SC01CTR_MD_I2C         0x0800  /* - I2C mode */
+#define SC01CTR_MD_CLOCK_SYNC2 0x0c00  /* - clock synchronous 2 */
+#define        SC01CTR_IIC             0x1000  /* I2C mode select */
+#define        SC01CTR_BKE             0x2000  /* break transmit enable */
+#define        SC01CTR_RXE             0x4000  /* receive enable */
+#define        SC01CTR_TXE             0x8000  /* transmit enable */
+
+#define        SC0ICR                  __SYSREG(0xd4002004, u8)        /* interrupt control reg */
+#define SC01ICR_DMD            0x80    /* output data mode */
+#define SC01ICR_TD             0x20    /* transmit DMA trigger cause */
+#define SC01ICR_TI             0x10    /* transmit interrupt cause */
+#define SC01ICR_RES            0x04    /* receive error select */
+#define SC01ICR_RI             0x01    /* receive interrupt cause */
+
+#define        SC0TXB                  __SYSREG(0xd4002008, u8)        /* transmit buffer reg */
+#define        SC0RXB                  __SYSREG(0xd4002009, u8)        /* receive buffer reg */
+
+#define        SC0STR                  __SYSREG(0xd400200c, u16)       /* status reg */
+#define SC01STR_OEF            0x0001  /* overrun error found */
+#define SC01STR_PEF            0x0002  /* parity error found */
+#define SC01STR_FEF            0x0004  /* framing error found */
+#define SC01STR_RBF            0x0010  /* receive buffer status */
+#define SC01STR_TBF            0x0020  /* transmit buffer status */
+#define SC01STR_RXF            0x0040  /* receive status */
+#define SC01STR_TXF            0x0080  /* transmit status */
+#define SC01STR_STF            0x0100  /* I2C start sequence found */
+#define SC01STR_SPF            0x0200  /* I2C stop sequence found */
+
+#define SC0RXIRQ               20      /* timer 0 Receive IRQ */
+#define SC0TXIRQ               21      /* timer 0 Transmit IRQ */
+
+#define        SC0RXICR                GxICR(SC0RXIRQ) /* serial 0 receive intr ctrl reg */
+#define        SC0TXICR                GxICR(SC0TXIRQ) /* serial 0 transmit intr ctrl reg */
+
+/* serial port 1 */
+#define        SC1CTR                  __SYSREG(0xd4002010, u16)       /* serial port 1 control */
+#define        SC1ICR                  __SYSREG(0xd4002014, u8)        /* interrupt control reg */
+#define        SC1TXB                  __SYSREG(0xd4002018, u8)        /* transmit buffer reg */
+#define        SC1RXB                  __SYSREG(0xd4002019, u8)        /* receive buffer reg */
+#define        SC1STR                  __SYSREG(0xd400201c, u16)       /* status reg */
+
+#define SC1RXIRQ               22      /* timer 1 Receive IRQ */
+#define SC1TXIRQ               23      /* timer 1 Transmit IRQ */
+
+#define        SC1RXICR                GxICR(SC1RXIRQ) /* serial 1 receive intr ctrl reg */
+#define        SC1TXICR                GxICR(SC1TXIRQ) /* serial 1 transmit intr ctrl reg */
+
+/* serial port 2 */
+#define        SC2CTR                  __SYSREG(0xd4002020, u16)       /* control reg */
+#define        SC2CTR_CK               0x0003  /* clock source select */
+#define        SC2CTR_CK_TM10UFLOW     0x0000  /* - timer 10 underflow */
+#define        SC2CTR_CK_TM2UFLOW      0x0001  /* - timer 2 underflow */
+#define        SC2CTR_CK_EXTERN        0x0002  /* - external closk */
+#define        SC2CTR_CK_TM3UFLOW      0x0003  /* - timer 3 underflow */
+#define        SC2CTR_STB              0x0008  /* stop bit select */
+#define        SC2CTR_STB_1BIT         0x0000  /* - 1 stop bit */
+#define        SC2CTR_STB_2BIT         0x0008  /* - 2 stop bits */
+#define        SC2CTR_PB               0x0070  /* parity bit select */
+#define        SC2CTR_PB_NONE          0x0000  /* - no parity */
+#define        SC2CTR_PB_FIXED0        0x0040  /* - fixed at 0 */
+#define        SC2CTR_PB_FIXED1        0x0050  /* - fixed at 1 */
+#define        SC2CTR_PB_EVEN          0x0060  /* - even parity */
+#define        SC2CTR_PB_ODD           0x0070  /* - odd parity */
+#define        SC2CTR_CLN              0x0080  /* character length */
+#define        SC2CTR_CLN_7BIT         0x0000  /* - 7 bit chars */
+#define        SC2CTR_CLN_8BIT         0x0080  /* - 8 bit chars */
+#define        SC2CTR_TWE              0x0100  /* transmit wait enable (enable XCTS control) */
+#define        SC2CTR_OD               0x0200  /* bit order select */
+#define        SC2CTR_OD_LSBFIRST      0x0000  /* - LSB first */
+#define        SC2CTR_OD_MSBFIRST      0x0200  /* - MSB first */
+#define        SC2CTR_TWS              0x1000  /* transmit wait select */
+#define        SC2CTR_TWS_XCTS_HIGH    0x0000  /* - interrupt TX when XCTS high */
+#define        SC2CTR_TWS_XCTS_LOW     0x1000  /* - interrupt TX when XCTS low */
+#define        SC2CTR_BKE              0x2000  /* break transmit enable */
+#define        SC2CTR_RXE              0x4000  /* receive enable */
+#define        SC2CTR_TXE              0x8000  /* transmit enable */
+
+#define        SC2ICR                  __SYSREG(0xd4002024, u8)        /* interrupt control reg */
+#define SC2ICR_TD              0x20    /* transmit DMA trigger cause */
+#define SC2ICR_TI              0x10    /* transmit interrupt cause */
+#define SC2ICR_RES             0x04    /* receive error select */
+#define SC2ICR_RI              0x01    /* receive interrupt cause */
+
+#define        SC2TXB                  __SYSREG(0xd4002018, u8)        /* transmit buffer reg */
+#define        SC2RXB                  __SYSREG(0xd4002019, u8)        /* receive buffer reg */
+#define        SC2STR                  __SYSREG(0xd400201c, u8)        /* status reg */
+#define SC2STR_OEF             0x0001  /* overrun error found */
+#define SC2STR_PEF             0x0002  /* parity error found */
+#define SC2STR_FEF             0x0004  /* framing error found */
+#define SC2STR_CTS             0x0008  /* XCTS input pin status (0 means high) */
+#define SC2STR_RBF             0x0010  /* receive buffer status */
+#define SC2STR_TBF             0x0020  /* transmit buffer status */
+#define SC2STR_RXF             0x0040  /* receive status */
+#define SC2STR_TXF             0x0080  /* transmit status */
+
+#define        SC2TIM                  __SYSREG(0xd400202d, u8)        /* status reg */
+
+#define SC2RXIRQ               24      /* serial 2 Receive IRQ */
+#define SC2TXIRQ               25      /* serial 2 Transmit IRQ */
+
+#define        SC2RXICR                GxICR(SC2RXIRQ) /* serial 2 receive intr ctrl reg */
+#define        SC2TXICR                GxICR(SC2TXIRQ) /* serial 2 transmit intr ctrl reg */
+
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_SERIAL_REGS_H */
diff --git a/arch/mn10300/include/asm/serial.h b/arch/mn10300/include/asm/serial.h
new file mode 100644 (file)
index 0000000..a29445c
--- /dev/null
@@ -0,0 +1,36 @@
+/* Standard UART definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+/*
+ * The ASB2305 has an 18.432 MHz clock the UART
+ */
+#define BASE_BAUD      (18432000 / 16)
+
+/* Standard COM flags (except for COM4, because of the 8514 problem) */
+#ifdef CONFIG_SERIAL_DETECT_IRQ
+#define STD_COM_FLAGS  (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
+#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
+#else
+#define STD_COM_FLAGS  (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
+#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
+#endif
+
+#ifdef CONFIG_SERIAL_MANY_PORTS
+#define FOURPORT_FLAGS ASYNC_FOURPORT
+#define ACCENT_FLAGS   0
+#define BOCA_FLAGS     0
+#define HUB6_FLAGS     0
+#define RS_TABLE_SIZE  64
+#else
+#define RS_TABLE_SIZE
+#endif
+
+#include <unit/serial.h>
diff --git a/arch/mn10300/include/asm/setup.h b/arch/mn10300/include/asm/setup.h
new file mode 100644 (file)
index 0000000..08356c8
--- /dev/null
@@ -0,0 +1,17 @@
+/* MN10300 Setup declarations
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SETUP_H
+#define _ASM_SETUP_H
+
+extern void __init unit_setup(void);
+extern void __init unit_init_IRQ(void);
+
+#endif /* _ASM_SETUP_H */
diff --git a/arch/mn10300/include/asm/shmbuf.h b/arch/mn10300/include/asm/shmbuf.h
new file mode 100644 (file)
index 0000000..8f300cc
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef _ASM_SHMBUF_H
+#define _ASM_SHMBUF_H
+
+/*
+ * The shmid64_ds structure for MN10300 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+
+struct shmid64_ds {
+       struct ipc64_perm       shm_perm;       /* operation perms */
+       size_t                  shm_segsz;      /* size of segment (bytes) */
+       __kernel_time_t         shm_atime;      /* last attach time */
+       unsigned long           __unused1;
+       __kernel_time_t         shm_dtime;      /* last detach time */
+       unsigned long           __unused2;
+       __kernel_time_t         shm_ctime;      /* last change time */
+       unsigned long           __unused3;
+       __kernel_pid_t          shm_cpid;       /* pid of creator */
+       __kernel_pid_t          shm_lpid;       /* pid of last operator */
+       unsigned long           shm_nattch;     /* no. of current attaches */
+       unsigned long           __unused4;
+       unsigned long           __unused5;
+};
+
+struct shminfo64 {
+       unsigned long   shmmax;
+       unsigned long   shmmin;
+       unsigned long   shmmni;
+       unsigned long   shmseg;
+       unsigned long   shmall;
+       unsigned long   __unused1;
+       unsigned long   __unused2;
+       unsigned long   __unused3;
+       unsigned long   __unused4;
+};
+
+#endif /* _ASM_SHMBUF_H */
diff --git a/arch/mn10300/include/asm/shmparam.h b/arch/mn10300/include/asm/shmparam.h
new file mode 100644 (file)
index 0000000..ab666ed
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _ASM_SHMPARAM_H
+#define _ASM_SHMPARAM_H
+
+#define        SHMLBA PAGE_SIZE                 /* attach addr a multiple of this */
+
+#endif /* _ASM_SHMPARAM_H */
diff --git a/arch/mn10300/include/asm/sigcontext.h b/arch/mn10300/include/asm/sigcontext.h
new file mode 100644 (file)
index 0000000..4de3aff
--- /dev/null
@@ -0,0 +1,52 @@
+/* MN10300 Userspace signal context
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SIGCONTEXT_H
+#define _ASM_SIGCONTEXT_H
+
+struct fpucontext {
+       /* Regular FPU environment */
+       unsigned long   fs[32];         /* fpu registers */
+       unsigned long   fpcr;           /* fpu control register */
+};
+
+struct sigcontext {
+       unsigned long   d0;
+       unsigned long   d1;
+       unsigned long   d2;
+       unsigned long   d3;
+       unsigned long   a0;
+       unsigned long   a1;
+       unsigned long   a2;
+       unsigned long   a3;
+       unsigned long   e0;
+       unsigned long   e1;
+       unsigned long   e2;
+       unsigned long   e3;
+       unsigned long   e4;
+       unsigned long   e5;
+       unsigned long   e6;
+       unsigned long   e7;
+       unsigned long   lar;
+       unsigned long   lir;
+       unsigned long   mdr;
+       unsigned long   mcvf;
+       unsigned long   mcrl;
+       unsigned long   mcrh;
+       unsigned long   mdrq;
+       unsigned long   sp;
+       unsigned long   epsw;
+       unsigned long   pc;
+       struct fpucontext *fpucontext;
+       unsigned long   oldmask;
+};
+
+
+#endif /* _ASM_SIGCONTEXT_H */
diff --git a/arch/mn10300/include/asm/siginfo.h b/arch/mn10300/include/asm/siginfo.h
new file mode 100644 (file)
index 0000000..0815d29
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/siginfo.h>
diff --git a/arch/mn10300/include/asm/signal.h b/arch/mn10300/include/asm/signal.h
new file mode 100644 (file)
index 0000000..e98817c
--- /dev/null
@@ -0,0 +1,171 @@
+/* MN10300 Signal definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SIGNAL_H
+#define _ASM_SIGNAL_H
+
+#include <linux/types.h>
+
+/* Avoid too many header ordering problems.  */
+struct siginfo;
+
+#ifdef __KERNEL__
+/* Most things should be clean enough to redefine this at will, if care
+   is taken to make libc match.  */
+
+#define _NSIG          64
+#define _NSIG_BPW      32
+#define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
+
+typedef unsigned long old_sigset_t;            /* at least 32 bits */
+
+typedef struct {
+       unsigned long   sig[_NSIG_WORDS];
+} sigset_t;
+
+#else
+/* Here we must cater to libcs that poke about in kernel headers.  */
+
+#define NSIG           32
+typedef unsigned long sigset_t;
+
+#endif /* __KERNEL__ */
+
+#define SIGHUP          1
+#define SIGINT          2
+#define SIGQUIT                 3
+#define SIGILL          4
+#define SIGTRAP                 5
+#define SIGABRT                 6
+#define SIGIOT          6
+#define SIGBUS          7
+#define SIGFPE          8
+#define SIGKILL                 9
+#define SIGUSR1                10
+#define SIGSEGV                11
+#define SIGUSR2                12
+#define SIGPIPE                13
+#define SIGALRM                14
+#define SIGTERM                15
+#define SIGSTKFLT      16
+#define SIGCHLD                17
+#define SIGCONT                18
+#define SIGSTOP                19
+#define SIGTSTP                20
+#define SIGTTIN                21
+#define SIGTTOU                22
+#define SIGURG         23
+#define SIGXCPU                24
+#define SIGXFSZ                25
+#define SIGVTALRM      26
+#define SIGPROF                27
+#define SIGWINCH       28
+#define SIGIO          29
+#define SIGPOLL                SIGIO
+/*
+#define SIGLOST                29
+*/
+#define SIGPWR         30
+#define SIGSYS         31
+#define        SIGUNUSED       31
+
+/* These should not be considered constants from userland.  */
+#define SIGRTMIN       32
+#define SIGRTMAX       (_NSIG-1)
+
+/*
+ * SA_FLAGS values:
+ *
+ * SA_ONSTACK indicates that a registered stack_t will be used.
+ * SA_RESTART flag to get restarting signals (which were the default long ago)
+ * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
+ * SA_RESETHAND clears the handler when the signal is delivered.
+ * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
+ * SA_NODEFER prevents the current signal from being masked in the handler.
+ *
+ * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
+ * Unix names RESETHAND and NODEFER respectively.
+ */
+#define SA_NOCLDSTOP   0x00000001U
+#define SA_NOCLDWAIT   0x00000002U
+#define SA_SIGINFO     0x00000004U
+#define SA_ONSTACK     0x08000000U
+#define SA_RESTART     0x10000000U
+#define SA_NODEFER     0x40000000U
+#define SA_RESETHAND   0x80000000U
+
+#define SA_NOMASK      SA_NODEFER
+#define SA_ONESHOT     SA_RESETHAND
+
+#define SA_RESTORER    0x04000000
+
+/*
+ * sigaltstack controls
+ */
+#define SS_ONSTACK     1
+#define SS_DISABLE     2
+
+#define MINSIGSTKSZ    2048
+#define SIGSTKSZ       8192
+
+#include <asm-generic/signal.h>
+
+#ifdef __KERNEL__
+struct old_sigaction {
+       __sighandler_t sa_handler;
+       old_sigset_t sa_mask;
+       unsigned long sa_flags;
+       __sigrestore_t sa_restorer;
+};
+
+struct sigaction {
+       __sighandler_t sa_handler;
+       unsigned long sa_flags;
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+};
+
+struct k_sigaction {
+       struct sigaction sa;
+};
+#else
+/* Here we must cater to libcs that poke about in kernel headers.  */
+
+struct sigaction {
+       union {
+         __sighandler_t _sa_handler;
+         void (*_sa_sigaction)(int, struct siginfo *, void *);
+       } _u;
+       sigset_t sa_mask;
+       unsigned long sa_flags;
+       void (*sa_restorer)(void);
+};
+
+#define sa_handler     _u._sa_handler
+#define sa_sigaction   _u._sa_sigaction
+
+#endif /* __KERNEL__ */
+
+typedef struct sigaltstack {
+       void __user     *ss_sp;
+       int             ss_flags;
+       size_t          ss_size;
+} stack_t;
+
+#ifdef __KERNEL__
+#include <asm/sigcontext.h>
+
+
+struct pt_regs;
+#define ptrace_signal_deliver(regs, cookie) do { } while (0)
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_SIGNAL_H */
diff --git a/arch/mn10300/include/asm/smp.h b/arch/mn10300/include/asm/smp.h
new file mode 100644 (file)
index 0000000..4eb8c61
--- /dev/null
@@ -0,0 +1,18 @@
+/* MN10300 SMP support
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SMP_H
+#define _ASM_SMP_H
+
+#ifdef CONFIG_SMP
+#error SMP not yet supported for MN10300
+#endif
+
+#endif
diff --git a/arch/mn10300/include/asm/socket.h b/arch/mn10300/include/asm/socket.h
new file mode 100644 (file)
index 0000000..fb5daf4
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef _ASM_SOCKET_H
+#define _ASM_SOCKET_H
+
+#include <asm/sockios.h>
+
+/* For setsockopt(2) */
+#define SOL_SOCKET     1
+
+#define SO_DEBUG       1
+#define SO_REUSEADDR   2
+#define SO_TYPE                3
+#define SO_ERROR       4
+#define SO_DONTROUTE   5
+#define SO_BROADCAST   6
+#define SO_SNDBUF      7
+#define SO_RCVBUF      8
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_KEEPALIVE   9
+#define SO_OOBINLINE   10
+#define SO_NO_CHECK    11
+#define SO_PRIORITY    12
+#define SO_LINGER      13
+#define SO_BSDCOMPAT   14
+/* To add :#define SO_REUSEPORT 15 */
+#define SO_PASSCRED    16
+#define SO_PEERCRED    17
+#define SO_RCVLOWAT    18
+#define SO_SNDLOWAT    19
+#define SO_RCVTIMEO    20
+#define SO_SNDTIMEO    21
+
+/* Security levels - as per NRL IPv6 - don't actually do anything */
+#define SO_SECURITY_AUTHENTICATION             22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT       23
+#define SO_SECURITY_ENCRYPTION_NETWORK         24
+
+#define SO_BINDTODEVICE        25
+
+/* Socket filtering */
+#define SO_ATTACH_FILTER        26
+#define SO_DETACH_FILTER        27
+
+#define SO_PEERNAME            28
+#define SO_TIMESTAMP           29
+#define SCM_TIMESTAMP          SO_TIMESTAMP
+
+#define SO_ACCEPTCONN          30
+
+#define SO_PEERSEC             31
+#define SO_PASSSEC             34
+#define SO_TIMESTAMPNS         35
+#define SCM_TIMESTAMPNS                SO_TIMESTAMPNS
+
+#define SO_MARK                        36
+
+#define SO_TIMESTAMPING                37
+#define SCM_TIMESTAMPING       SO_TIMESTAMPING
+
+#endif /* _ASM_SOCKET_H */
diff --git a/arch/mn10300/include/asm/sockios.h b/arch/mn10300/include/asm/sockios.h
new file mode 100644 (file)
index 0000000..b03043a
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _ASM_SOCKIOS_H
+#define _ASM_SOCKIOS_H
+
+/* Socket-level I/O control calls. */
+#define FIOSETOWN      0x8901
+#define SIOCSPGRP      0x8902
+#define FIOGETOWN      0x8903
+#define SIOCGPGRP      0x8904
+#define SIOCATMARK     0x8905
+#define SIOCGSTAMP     0x8906          /* Get stamp */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
+
+#endif /* _ASM_SOCKIOS_H */
diff --git a/arch/mn10300/include/asm/spinlock.h b/arch/mn10300/include/asm/spinlock.h
new file mode 100644 (file)
index 0000000..4bf9c8b
--- /dev/null
@@ -0,0 +1,16 @@
+/* MN10300 spinlock support
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SPINLOCK_H
+#define _ASM_SPINLOCK_H
+
+#error SMP spinlocks not implemented for MN10300
+
+#endif /* _ASM_SPINLOCK_H */
diff --git a/arch/mn10300/include/asm/stat.h b/arch/mn10300/include/asm/stat.h
new file mode 100644 (file)
index 0000000..63ff837
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef _ASM_STAT_H
+#define _ASM_STAT_H
+
+struct __old_kernel_stat {
+       unsigned short st_dev;
+       unsigned short st_ino;
+       unsigned short st_mode;
+       unsigned short st_nlink;
+       unsigned short st_uid;
+       unsigned short st_gid;
+       unsigned short st_rdev;
+       unsigned long  st_size;
+       unsigned long  st_atime;
+       unsigned long  st_mtime;
+       unsigned long  st_ctime;
+};
+
+struct stat {
+       unsigned long  st_dev;
+       unsigned long  st_ino;
+       unsigned short st_mode;
+       unsigned short st_nlink;
+       unsigned short st_uid;
+       unsigned short st_gid;
+       unsigned long  st_rdev;
+       unsigned long  st_size;
+       unsigned long  st_blksize;
+       unsigned long  st_blocks;
+       unsigned long  st_atime;
+       unsigned long  st_atime_nsec;
+       unsigned long  st_mtime;
+       unsigned long  st_mtime_nsec;
+       unsigned long  st_ctime;
+       unsigned long  st_ctime_nsec;
+       unsigned long  __unused4;
+       unsigned long  __unused5;
+};
+
+/* This matches struct stat64 in glibc2.1, hence the absolutely
+ * insane amounts of padding around dev_t's.
+ */
+struct stat64 {
+       unsigned long long      st_dev;
+       unsigned char   __pad0[4];
+
+#define STAT64_HAS_BROKEN_ST_INO       1
+       unsigned long   __st_ino;
+
+       unsigned int    st_mode;
+       unsigned int    st_nlink;
+
+       unsigned long   st_uid;
+       unsigned long   st_gid;
+
+       unsigned long long      st_rdev;
+       unsigned char   __pad3[4];
+
+       long long       st_size;
+       unsigned long   st_blksize;
+
+       unsigned long   st_blocks;      /* Number 512-byte blocks allocated. */
+       unsigned long   __pad4;         /* future possible st_blocks high bits */
+
+       unsigned long   st_atime;
+       unsigned long   st_atime_nsec;
+
+       unsigned long   st_mtime;
+       unsigned int    st_mtime_nsec;
+
+       unsigned long   st_ctime;
+       unsigned long   st_ctime_nsec;
+
+       unsigned long long      st_ino;
+};
+
+#define STAT_HAVE_NSEC 1
+
+#endif /* _ASM_STAT_H */
diff --git a/arch/mn10300/include/asm/statfs.h b/arch/mn10300/include/asm/statfs.h
new file mode 100644 (file)
index 0000000..0b91fe1
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/statfs.h>
diff --git a/arch/mn10300/include/asm/string.h b/arch/mn10300/include/asm/string.h
new file mode 100644 (file)
index 0000000..47dbd43
--- /dev/null
@@ -0,0 +1,32 @@
+/* MN10300 Optimised string functions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Modified by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_STRING_H
+#define _ASM_STRING_H
+
+#define __HAVE_ARCH_MEMSET
+#define __HAVE_ARCH_MEMCPY
+#define __HAVE_ARCH_MEMMOVE
+
+extern void *memset(void *dest, int ch, size_t count);
+extern void *memcpy(void *dest, const void *src, size_t count);
+extern void *memmove(void *dest, const void *src, size_t count);
+
+
+extern void __struct_cpy_bug(void);
+#define struct_cpy(x, y)                       \
+({                                              \
+       if (sizeof(*(x)) != sizeof(*(y)))       \
+               __struct_cpy_bug;               \
+       memcpy(x, y, sizeof(*(x)));             \
+})
+
+#endif /* _ASM_STRING_H */
diff --git a/arch/mn10300/include/asm/swab.h b/arch/mn10300/include/asm/swab.h
new file mode 100644 (file)
index 0000000..bd818a8
--- /dev/null
@@ -0,0 +1,42 @@
+/* MN10300 Byte-order primitive construction
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SWAB_H
+#define _ASM_SWAB_H
+
+#include <linux/types.h>
+
+#ifdef __GNUC__
+
+static inline __attribute__((const))
+__u32 __arch_swab32(__u32 x)
+{
+       __u32 ret;
+       asm("swap %1,%0" : "=r" (ret) : "r" (x));
+       return ret;
+}
+#define __arch_swab32 __arch_swab32
+
+static inline __attribute__((const))
+__u16 __arch_swab16(__u16 x)
+{
+       __u16 ret;
+       asm("swaph %1,%0" : "=r" (ret) : "r" (x));
+       return ret;
+}
+#define __arch_swab32 __arch_swab32
+
+#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+#  define __SWAB_64_THRU_32__
+#endif
+
+#endif /* __GNUC__ */
+
+#endif /* _ASM_SWAB_H */
diff --git a/arch/mn10300/include/asm/system.h b/arch/mn10300/include/asm/system.h
new file mode 100644 (file)
index 0000000..8214fb7
--- /dev/null
@@ -0,0 +1,237 @@
+/* MN10300 System definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_SYSTEM_H
+#define _ASM_SYSTEM_H
+
+#include <asm/cpu-regs.h>
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+#include <linux/kernel.h>
+
+struct task_struct;
+struct thread_struct;
+
+extern asmlinkage
+struct task_struct *__switch_to(struct thread_struct *prev,
+                               struct thread_struct *next,
+                               struct task_struct *prev_task);
+
+/* context switching is now performed out-of-line in switch_to.S */
+#define switch_to(prev, next, last)                                    \
+do {                                                                   \
+       current->thread.wchan = (u_long) __builtin_return_address(0);   \
+       (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \
+       mb();                                                           \
+       current->thread.wchan = 0;                                      \
+} while (0)
+
+#define arch_align_stack(x) (x)
+
+#define nop() asm volatile ("nop")
+
+#endif /* !__ASSEMBLY__ */
+
+/*
+ * Force strict CPU ordering.
+ * And yes, this is required on UP too when we're talking
+ * to devices.
+ *
+ * For now, "wmb()" doesn't actually do anything, as all
+ * Intel CPU's follow what Intel calls a *Processor Order*,
+ * in which all writes are seen in the program order even
+ * outside the CPU.
+ *
+ * I expect future Intel CPU's to have a weaker ordering,
+ * but I'd also expect them to finally get their act together
+ * and add some real memory barriers if so.
+ *
+ * Some non intel clones support out of order store. wmb() ceases to be a
+ * nop for these.
+ */
+
+#define mb()   asm volatile ("": : :"memory")
+#define rmb()  mb()
+#define wmb()  asm volatile ("": : :"memory")
+
+#ifdef CONFIG_SMP
+#define smp_mb()       mb()
+#define smp_rmb()      rmb()
+#define smp_wmb()      wmb()
+#else
+#define smp_mb()       barrier()
+#define smp_rmb()      barrier()
+#define smp_wmb()      barrier()
+#endif
+
+#define set_mb(var, value)  do { var = value;  mb(); } while (0)
+#define set_wmb(var, value) do { var = value; wmb(); } while (0)
+
+#define read_barrier_depends()         do {} while (0)
+#define smp_read_barrier_depends()     do {} while (0)
+
+/*****************************************************************************/
+/*
+ * interrupt control
+ * - "disabled": run in IM1/2
+ *   - level 0 - GDB stub
+ *   - level 1 - virtual serial DMA (if present)
+ *   - level 5 - normal interrupt priority
+ *   - level 6 - timer interrupt
+ * - "enabled":  run in IM7
+ */
+#ifdef CONFIG_MN10300_TTYSM
+#define MN10300_CLI_LEVEL      EPSW_IM_2
+#else
+#define MN10300_CLI_LEVEL      EPSW_IM_1
+#endif
+
+#define local_save_flags(x)                    \
+do {                                           \
+       typecheck(unsigned long, x);            \
+       asm volatile(                           \
+               "       mov epsw,%0     \n"     \
+               : "=d"(x)                       \
+               );                              \
+} while (0)
+
+#define local_irq_disable()                                            \
+do {                                                                   \
+       asm volatile(                                                   \
+               "       and %0,epsw     \n"                             \
+               "       or %1,epsw      \n"                             \
+               "       nop             \n"                             \
+               "       nop             \n"                             \
+               "       nop             \n"                             \
+               :                                                       \
+               : "i"(~EPSW_IM), "i"(EPSW_IE | MN10300_CLI_LEVEL)       \
+               );                                                      \
+} while (0)
+
+#define local_irq_save(x)                      \
+do {                                           \
+       local_save_flags(x);                    \
+       local_irq_disable();                    \
+} while (0)
+
+/*
+ * we make sure local_irq_enable() doesn't cause priority inversion
+ */
+#ifndef __ASSEMBLY__
+
+extern unsigned long __mn10300_irq_enabled_epsw;
+
+#endif
+
+#define local_irq_enable()                                             \
+do {                                                                   \
+       unsigned long tmp;                                              \
+                                                                       \
+       asm volatile(                                                   \
+               "       mov     epsw,%0         \n"                     \
+               "       and     %1,%0           \n"                     \
+               "       or      %2,%0           \n"                     \
+               "       mov     %0,epsw         \n"                     \
+               : "=&d"(tmp)                                            \
+               : "i"(~EPSW_IM), "r"(__mn10300_irq_enabled_epsw)        \
+               );                                                      \
+} while (0)
+
+#define local_irq_restore(x)                   \
+do {                                           \
+       typecheck(unsigned long, x);            \
+       asm volatile(                           \
+               "       mov %0,epsw     \n"     \
+               "       nop             \n"     \
+               "       nop             \n"     \
+               "       nop             \n"     \
+               :                               \
+               : "d"(x)                        \
+               : "memory", "cc"                \
+               );                              \
+} while (0)
+
+#define irqs_disabled()                                \
+({                                             \
+       unsigned long flags;                    \
+       local_save_flags(flags);                \
+       (flags & EPSW_IM) <= MN10300_CLI_LEVEL; \
+})
+
+/* hook to save power by halting the CPU
+ * - called from the idle loop
+ * - must reenable interrupts (which takes three instruction cycles to complete)
+ */
+#define safe_halt()                                                    \
+do {                                                                   \
+       asm volatile("  or      %0,epsw \n"                             \
+                    "  nop             \n"                             \
+                    "  nop             \n"                             \
+                    "  bset    %2,(%1) \n"                             \
+                    :                                                  \
+                    : "i"(EPSW_IE|EPSW_IM), "n"(&CPUM), "i"(CPUM_SLEEP)\
+                    : "cc"                                             \
+                    );                                                 \
+} while (0)
+
+#define STI    or EPSW_IE|EPSW_IM,epsw
+#define CLI    and ~EPSW_IM,epsw; or EPSW_IE|MN10300_CLI_LEVEL,epsw; nop; nop; nop
+
+/*****************************************************************************/
+/*
+ * MN10300 doesn't actually have an exchange instruction
+ */
+#ifndef __ASSEMBLY__
+
+struct __xchg_dummy { unsigned long a[100]; };
+#define __xg(x) ((struct __xchg_dummy *)(x))
+
+static inline
+unsigned long __xchg(volatile unsigned long *m, unsigned long val)
+{
+       unsigned long retval;
+       unsigned long flags;
+
+       local_irq_save(flags);
+       retval = *m;
+       *m = val;
+       local_irq_restore(flags);
+       return retval;
+}
+
+#define xchg(ptr, v)                                           \
+       ((__typeof__(*(ptr))) __xchg((unsigned long *)(ptr),    \
+                                    (unsigned long)(v)))
+
+static inline unsigned long __cmpxchg(volatile unsigned long *m,
+                                     unsigned long old, unsigned long new)
+{
+       unsigned long retval;
+       unsigned long flags;
+
+       local_irq_save(flags);
+       retval = *m;
+       if (retval == old)
+               *m = new;
+       local_irq_restore(flags);
+       return retval;
+}
+
+#define cmpxchg(ptr, o, n)                                     \
+       ((__typeof__(*(ptr))) __cmpxchg((unsigned long *)(ptr), \
+                                       (unsigned long)(o),     \
+                                       (unsigned long)(n)))
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_SYSTEM_H */
diff --git a/arch/mn10300/include/asm/termbits.h b/arch/mn10300/include/asm/termbits.h
new file mode 100644 (file)
index 0000000..eb2b0dc
--- /dev/null
@@ -0,0 +1,200 @@
+#ifndef _ASM_TERMBITS_H
+#define _ASM_TERMBITS_H
+
+#include <linux/posix_types.h>
+
+typedef unsigned char  cc_t;
+typedef unsigned int   speed_t;
+typedef unsigned int   tcflag_t;
+
+#define NCCS 19
+struct termios {
+       tcflag_t c_iflag;               /* input mode flags */
+       tcflag_t c_oflag;               /* output mode flags */
+       tcflag_t c_cflag;               /* control mode flags */
+       tcflag_t c_lflag;               /* local mode flags */
+       cc_t c_line;                    /* line discipline */
+       cc_t c_cc[NCCS];                /* control characters */
+};
+
+struct termios2 {
+       tcflag_t c_iflag;               /* input mode flags */
+       tcflag_t c_oflag;               /* output mode flags */
+       tcflag_t c_cflag;               /* control mode flags */
+       tcflag_t c_lflag;               /* local mode flags */
+       cc_t c_line;                    /* line discipline */
+       cc_t c_cc[NCCS];                /* control characters */
+       speed_t c_ispeed;               /* input speed */
+       speed_t c_ospeed;               /* output speed */
+};
+
+struct ktermios {
+       tcflag_t c_iflag;               /* input mode flags */
+       tcflag_t c_oflag;               /* output mode flags */
+       tcflag_t c_cflag;               /* control mode flags */
+       tcflag_t c_lflag;               /* local mode flags */
+       cc_t c_line;                    /* line discipline */
+       cc_t c_cc[NCCS];                /* control characters */
+       speed_t c_ispeed;               /* input speed */
+       speed_t c_ospeed;               /* output speed */
+};
+
+/* c_cc characters */
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
+
+
+/* c_iflag bits */
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK  0000020
+#define ISTRIP 0000040
+#define INLCR  0000100
+#define IGNCR  0000200
+#define ICRNL  0000400
+#define IUCLC  0001000
+#define IXON   0002000
+#define IXANY  0004000
+#define IXOFF  0010000
+#define IMAXBEL        0020000
+#define IUTF8  0040000
+
+/* c_oflag bits */
+#define OPOST  0000001
+#define OLCUC  0000002
+#define ONLCR  0000004
+#define OCRNL  0000010
+#define ONOCR  0000020
+#define ONLRET 0000040
+#define OFILL  0000100
+#define OFDEL  0000200
+#define NLDLY  0000400
+#define   NL0  0000000
+#define   NL1  0000400
+#define CRDLY  0003000
+#define   CR0  0000000
+#define   CR1  0001000
+#define   CR2  0002000
+#define   CR3  0003000
+#define TABDLY 0014000
+#define   TAB0 0000000
+#define   TAB1 0004000
+#define   TAB2 0010000
+#define   TAB3 0014000
+#define   XTABS        0014000
+#define BSDLY  0020000
+#define   BS0  0000000
+#define   BS1  0020000
+#define VTDLY  0040000
+#define   VT0  0000000
+#define   VT1  0040000
+#define FFDLY  0100000
+#define   FF0  0000000
+#define   FF1  0100000
+
+/* c_cflag bit meaning */
+#define CBAUD  0010017
+#define  B0    0000000         /* hang up */
+#define  B50   0000001
+#define  B75   0000002
+#define  B110  0000003
+#define  B134  0000004
+#define  B150  0000005
+#define  B200  0000006
+#define  B300  0000007
+#define  B600  0000010
+#define  B1200 0000011
+#define  B1800 0000012
+#define  B2400 0000013
+#define  B4800 0000014
+#define  B9600 0000015
+#define  B19200        0000016
+#define  B38400        0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE  0000060
+#define   CS5  0000000
+#define   CS6  0000020
+#define   CS7  0000040
+#define   CS8  0000060
+#define CSTOPB 0000100
+#define CREAD  0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL  0002000
+#define CLOCAL 0004000
+#define CBAUDEX 0010000
+#define   BOTHER  0010000
+#define    B57600 0010001
+#define   B115200 0010002
+#define   B230400 0010003
+#define   B460800 0010004
+#define   B500000 0010005
+#define   B576000 0010006
+#define   B921600 0010007
+#define  B1000000 0010010
+#define  B1152000 0010011
+#define  B1500000 0010012
+#define  B2000000 0010013
+#define  B2500000 0010014
+#define  B3000000 0010015
+#define  B3500000 0010016
+#define  B4000000 0010017
+#define CIBAUD   002003600000  /* input baud rate (not used) */
+#define CTVB     004000000000          /* VisioBraille Terminal flow control */
+#define CMSPAR   010000000000          /* mark or space (stick) parity */
+#define CRTSCTS          020000000000          /* flow control */
+
+#define IBSHIFT          16            /* Shift from CBAUD to CIBAUD */
+
+/* c_lflag bits */
+#define ISIG   0000001
+#define ICANON 0000002
+#define XCASE  0000004
+#define ECHO   0000010
+#define ECHOE  0000020
+#define ECHOK  0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define ECHOCTL        0001000
+#define ECHOPRT        0002000
+#define ECHOKE 0004000
+#define FLUSHO 0010000
+#define PENDIN 0040000
+#define IEXTEN 0100000
+
+/* tcflow() and TCXONC use these */
+#define        TCOOFF          0
+#define        TCOON           1
+#define        TCIOFF          2
+#define        TCION           3
+
+/* tcflush() and TCFLSH use these */
+#define        TCIFLUSH        0
+#define        TCOFLUSH        1
+#define        TCIOFLUSH       2
+
+/* tcsetattr uses these */
+#define        TCSANOW         0
+#define        TCSADRAIN       1
+#define        TCSAFLUSH       2
+
+#endif /* _ASM_TERMBITS_H */
diff --git a/arch/mn10300/include/asm/termios.h b/arch/mn10300/include/asm/termios.h
new file mode 100644 (file)
index 0000000..dd7cf61
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef _ASM_TERMIOS_H
+#define _ASM_TERMIOS_H
+
+#include <asm/termbits.h>
+#include <asm/ioctls.h>
+
+struct winsize {
+       unsigned short ws_row;
+       unsigned short ws_col;
+       unsigned short ws_xpixel;
+       unsigned short ws_ypixel;
+};
+
+#define NCC 8
+struct termio {
+       unsigned short c_iflag;         /* input mode flags */
+       unsigned short c_oflag;         /* output mode flags */
+       unsigned short c_cflag;         /* control mode flags */
+       unsigned short c_lflag;         /* local mode flags */
+       unsigned char c_line;           /* line discipline */
+       unsigned char c_cc[NCC];        /* control characters */
+};
+
+#ifdef __KERNEL__
+/*     intr=^C         quit=^|         erase=del       kill=^U
+       eof=^D          vtime=\0        vmin=\1         sxtc=\0
+       start=^Q        stop=^S         susp=^Z         eol=\0
+       reprint=^R      discard=^U      werase=^W       lnext=^V
+       eol2=\0
+*/
+#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
+#endif
+
+/* modem lines */
+#define TIOCM_LE       0x001
+#define TIOCM_DTR      0x002
+#define TIOCM_RTS      0x004
+#define TIOCM_ST       0x008
+#define TIOCM_SR       0x010
+#define TIOCM_CTS      0x020
+#define TIOCM_CAR      0x040
+#define TIOCM_RNG      0x080
+#define TIOCM_DSR      0x100
+#define TIOCM_CD       TIOCM_CAR
+#define TIOCM_RI       TIOCM_RNG
+#define TIOCM_OUT1     0x2000
+#define TIOCM_OUT2     0x4000
+#define TIOCM_LOOP     0x8000
+
+#define TIOCM_MODEM_BITS       TIOCM_OUT2      /* IRDA support */
+
+/*
+ * Translate a "termio" structure into a "termios". Ugh.
+ */
+#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
+       unsigned short __tmp; \
+       get_user(__tmp, &(termio)->x); \
+       *(unsigned short *) &(termios)->x = __tmp; \
+}
+
+#define user_termio_to_kernel_termios(termios, termio) \
+({ \
+       SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
+       SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
+       SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
+       SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
+       copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
+})
+
+/*
+ * Translate a "termios" structure into a "termio". Ugh.
+ */
+#define kernel_termios_to_user_termio(termio, termios) \
+({ \
+       put_user((termios)->c_iflag, &(termio)->c_iflag); \
+       put_user((termios)->c_oflag, &(termio)->c_oflag); \
+       put_user((termios)->c_cflag, &(termio)->c_cflag); \
+       put_user((termios)->c_lflag, &(termio)->c_lflag); \
+       put_user((termios)->c_line,  &(termio)->c_line); \
+       copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
+})
+
+#define user_termios_to_kernel_termios(k, u) \
+       copy_from_user(k, u, sizeof(struct termios2))
+#define kernel_termios_to_user_termios(u, k) \
+       copy_to_user(u, k, sizeof(struct termios2))
+#define user_termios_to_kernel_termios_1(k, u) \
+       copy_from_user(k, u, sizeof(struct termios))
+#define kernel_termios_to_user_termios_1(u, k) \
+       copy_to_user(u, k, sizeof(struct termios))
+
+#endif /* _ASM_TERMIOS_H */
diff --git a/arch/mn10300/include/asm/thread_info.h b/arch/mn10300/include/asm/thread_info.h
new file mode 100644 (file)
index 0000000..78a3881
--- /dev/null
@@ -0,0 +1,170 @@
+/* MN10300 Low-level thread information
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_THREAD_INFO_H
+#define _ASM_THREAD_INFO_H
+
+#ifdef __KERNEL__
+
+#include <asm/page.h>
+
+#ifndef __ASSEMBLY__
+#include <asm/processor.h>
+#endif
+
+#define PREEMPT_ACTIVE         0x10000000
+
+#ifdef CONFIG_4KSTACKS
+#define THREAD_SIZE            (4096)
+#else
+#define THREAD_SIZE            (8192)
+#endif
+
+#define STACK_WARN             (THREAD_SIZE / 8)
+
+/*
+ * low level task data that entry.S needs immediate access to
+ * - this struct should fit entirely inside of one cache line
+ * - this struct shares the supervisor stack pages
+ * - if the contents of this structure are changed, the assembly constants
+ *   must also be changed
+ */
+#ifndef __ASSEMBLY__
+
+struct thread_info {
+       struct task_struct      *task;          /* main task structure */
+       struct exec_domain      *exec_domain;   /* execution domain */
+       unsigned long           flags;          /* low level flags */
+       __u32                   cpu;            /* current CPU */
+       __s32                   preempt_count;  /* 0 => preemptable, <0 => BUG */
+
+       mm_segment_t            addr_limit;     /* thread address space:
+                                                  0-0xBFFFFFFF for user-thead
+                                                  0-0xFFFFFFFF for kernel-thread
+                                               */
+       struct restart_block    restart_block;
+
+       __u8                    supervisor_stack[0];
+};
+
+#else /* !__ASSEMBLY__ */
+
+#ifndef __ASM_OFFSETS_H__
+#include <asm/asm-offsets.h>
+#endif
+
+#endif
+
+/*
+ * macros/functions for gaining access to the thread information structure
+ *
+ * preempt_count needs to be 1 initially, until the scheduler is functional.
+ */
+#ifndef __ASSEMBLY__
+
+#define INIT_THREAD_INFO(tsk)                  \
+{                                              \
+       .task           = &tsk,                 \
+       .exec_domain    = &default_exec_domain, \
+       .flags          = 0,                    \
+       .cpu            = 0,                    \
+       .preempt_count  = 1,                    \
+       .addr_limit     = KERNEL_DS,            \
+       .restart_block = {                      \
+               .fn = do_no_restart_syscall,    \
+       },                                      \
+}
+
+#define init_thread_info       (init_thread_union.thread_info)
+#define init_stack             (init_thread_union.stack)
+#define init_uregs                                                     \
+       ((struct pt_regs *)                                             \
+        ((unsigned long) init_stack + THREAD_SIZE - sizeof(struct pt_regs)))
+
+extern struct thread_info *__current_ti;
+
+/* how to get the thread information struct from C */
+static inline __attribute__((const))
+struct thread_info *current_thread_info(void)
+{
+       struct thread_info *ti;
+       asm("mov sp,%0\n"
+           "and %1,%0\n"
+           : "=d" (ti)
+           : "i" (~(THREAD_SIZE - 1))
+           : "cc");
+       return ti;
+}
+
+/* how to get the current stack pointer from C */
+static inline unsigned long current_stack_pointer(void)
+{
+       unsigned long sp;
+       asm("mov sp,%0; ":"=r" (sp));
+       return sp;
+}
+
+#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
+
+/* thread information allocation */
+#ifdef CONFIG_DEBUG_STACK_USAGE
+#define alloc_thread_info(tsk) kzalloc(THREAD_SIZE, GFP_KERNEL)
+#else
+#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL)
+#endif
+
+#define free_thread_info(ti)   kfree((ti))
+#define get_thread_info(ti)    get_task_struct((ti)->task)
+#define put_thread_info(ti)    put_task_struct((ti)->task)
+
+#else /* !__ASSEMBLY__ */
+
+#ifndef __VMLINUX_LDS__
+/* how to get the thread information struct from ASM */
+.macro GET_THREAD_INFO reg
+       mov     sp,\reg
+       and     -THREAD_SIZE,\reg
+.endm
+#endif
+#endif
+
+/*
+ * thread information flags
+ * - these are process state flags that various assembly files may need to
+ *   access
+ * - pending work-to-be-done flags are in LSW
+ * - other flags in MSW
+ */
+#define TIF_SYSCALL_TRACE      0       /* syscall trace active */
+#define TIF_NOTIFY_RESUME      1       /* resumption notification requested */
+#define TIF_SIGPENDING         2       /* signal pending */
+#define TIF_NEED_RESCHED       3       /* rescheduling necessary */
+#define TIF_SINGLESTEP         4       /* restore singlestep on return to user mode */
+#define TIF_RESTORE_SIGMASK    5       /* restore signal mask in do_signal() */
+#define TIF_POLLING_NRFLAG     16      /* true if poll_idle() is polling TIF_NEED_RESCHED */
+#define TIF_MEMDIE             17      /* OOM killer killed process */
+#define TIF_FREEZE             18      /* freezing for suspend */
+
+#define _TIF_SYSCALL_TRACE     +(1 << TIF_SYSCALL_TRACE)
+#define _TIF_NOTIFY_RESUME     +(1 << TIF_NOTIFY_RESUME)
+#define _TIF_SIGPENDING                +(1 << TIF_SIGPENDING)
+#define _TIF_NEED_RESCHED      +(1 << TIF_NEED_RESCHED)
+#define _TIF_SINGLESTEP                +(1 << TIF_SINGLESTEP)
+#define _TIF_RESTORE_SIGMASK   +(1 << TIF_RESTORE_SIGMASK)
+#define _TIF_POLLING_NRFLAG    +(1 << TIF_POLLING_NRFLAG)
+#define _TIF_FREEZE            +(1 << TIF_FREEZE)
+
+#define _TIF_WORK_MASK         0x0000FFFE      /* work to do on interrupt/exception return */
+#define _TIF_ALLWORK_MASK      0x0000FFFF      /* work to do on any return to u-space */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_THREAD_INFO_H */
diff --git a/arch/mn10300/include/asm/timer-regs.h b/arch/mn10300/include/asm/timer-regs.h
new file mode 100644 (file)
index 0000000..1d883b7
--- /dev/null
@@ -0,0 +1,293 @@
+/* AM33v2 on-board timer module registers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_TIMER_REGS_H
+#define _ASM_TIMER_REGS_H
+
+#include <asm/cpu-regs.h>
+#include <asm/intctl-regs.h>
+
+#ifdef __KERNEL__
+
+/* timer prescalar control */
+#define        TMPSCNT                 __SYSREG(0xd4003071, u8) /* timer prescaler control */
+#define        TMPSCNT_ENABLE          0x80    /* timer prescaler enable */
+#define        TMPSCNT_DISABLE         0x00    /* timer prescaler disable */
+
+/* 8 bit timers */
+#define        TM0MD                   __SYSREG(0xd4003000, u8) /* timer 0 mode register */
+#define        TM0MD_SRC               0x07    /* timer source */
+#define        TM0MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM0MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM0MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM0MD_SRC_TM2IO         0x03    /* - TM2IO pin input */
+#define        TM0MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM0MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM0MD_SRC_TM0IO         0x07    /* - TM0IO pin input */
+#define        TM0MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM0MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM1MD                   __SYSREG(0xd4003001, u8) /* timer 1 mode register */
+#define        TM1MD_SRC               0x07    /* timer source */
+#define        TM1MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM1MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM1MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM1MD_SRC_TM0CASCADE    0x03    /* - cascade with timer 0 */
+#define        TM1MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM1MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM1MD_SRC_TM1IO         0x07    /* - TM1IO pin input */
+#define        TM1MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM1MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM2MD                   __SYSREG(0xd4003002, u8) /* timer 2 mode register */
+#define        TM2MD_SRC               0x07    /* timer source */
+#define        TM2MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM2MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM2MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM2MD_SRC_TM1CASCADE    0x03    /* - cascade with timer 1 */
+#define        TM2MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM2MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM2MD_SRC_TM2IO         0x07    /* - TM2IO pin input */
+#define        TM2MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM2MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM3MD                   __SYSREG(0xd4003003, u8) /* timer 3 mode register */
+#define        TM3MD_SRC               0x07    /* timer source */
+#define        TM3MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM3MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM3MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM3MD_SRC_TM1CASCADE    0x03    /* - cascade with timer 2 */
+#define        TM3MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM3MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM3MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM3MD_SRC_TM3IO         0x07    /* - TM3IO pin input */
+#define        TM3MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM3MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM01MD                  __SYSREG(0xd4003000, u16)  /* timer 0:1 mode register */
+
+#define        TM0BR                   __SYSREG(0xd4003010, u8)   /* timer 0 base register */
+#define        TM1BR                   __SYSREG(0xd4003011, u8)   /* timer 1 base register */
+#define        TM2BR                   __SYSREG(0xd4003012, u8)   /* timer 2 base register */
+#define        TM3BR                   __SYSREG(0xd4003013, u8)   /* timer 3 base register */
+#define        TM01BR                  __SYSREG(0xd4003010, u16)  /* timer 0:1 base register */
+
+#define        TM0BC                   __SYSREGC(0xd4003020, u8)  /* timer 0 binary counter */
+#define        TM1BC                   __SYSREGC(0xd4003021, u8)  /* timer 1 binary counter */
+#define        TM2BC                   __SYSREGC(0xd4003022, u8)  /* timer 2 binary counter */
+#define        TM3BC                   __SYSREGC(0xd4003023, u8)  /* timer 3 binary counter */
+#define        TM01BC                  __SYSREGC(0xd4003020, u16) /* timer 0:1 binary counter */
+
+#define TM0IRQ                 2       /* timer 0 IRQ */
+#define TM1IRQ                 3       /* timer 1 IRQ */
+#define TM2IRQ                 4       /* timer 2 IRQ */
+#define TM3IRQ                 5       /* timer 3 IRQ */
+
+#define        TM0ICR                  GxICR(TM0IRQ)   /* timer 0 uflow intr ctrl reg */
+#define        TM1ICR                  GxICR(TM1IRQ)   /* timer 1 uflow intr ctrl reg */
+#define        TM2ICR                  GxICR(TM2IRQ)   /* timer 2 uflow intr ctrl reg */
+#define        TM3ICR                  GxICR(TM3IRQ)   /* timer 3 uflow intr ctrl reg */
+
+/* 16-bit timers 4,5 & 7-11 */
+#define        TM4MD                   __SYSREG(0xd4003080, u8)   /* timer 4 mode register */
+#define        TM4MD_SRC               0x07    /* timer source */
+#define        TM4MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM4MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM4MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM4MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM4MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM4MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM4MD_SRC_TM4IO         0x07    /* - TM4IO pin input */
+#define        TM4MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM4MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM5MD                   __SYSREG(0xd4003082, u8)   /* timer 5 mode register */
+#define        TM5MD_SRC               0x07    /* timer source */
+#define        TM5MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM5MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM5MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM5MD_SRC_TM4CASCADE    0x03    /* - cascade with timer 4 */
+#define        TM5MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM5MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM5MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM5MD_SRC_TM5IO         0x07    /* - TM5IO pin input */
+#define        TM5MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM5MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM7MD                   __SYSREG(0xd4003086, u8)   /* timer 7 mode register */
+#define        TM7MD_SRC               0x07    /* timer source */
+#define        TM7MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM7MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM7MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM7MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM7MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM7MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM7MD_SRC_TM7IO         0x07    /* - TM7IO pin input */
+#define        TM7MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM7MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM8MD                   __SYSREG(0xd4003088, u8)   /* timer 8 mode register */
+#define        TM8MD_SRC               0x07    /* timer source */
+#define        TM8MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM8MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM8MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM8MD_SRC_TM7CASCADE    0x03    /* - cascade with timer 7 */
+#define        TM8MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM8MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM8MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM8MD_SRC_TM8IO         0x07    /* - TM8IO pin input */
+#define        TM8MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM8MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM9MD                   __SYSREG(0xd400308a, u8)   /* timer 9 mode register */
+#define        TM9MD_SRC               0x07    /* timer source */
+#define        TM9MD_SRC_IOCLK         0x00    /* - IOCLK */
+#define        TM9MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
+#define        TM9MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
+#define        TM9MD_SRC_TM8CASCADE    0x03    /* - cascade with timer 8 */
+#define        TM9MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
+#define        TM9MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
+#define        TM9MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
+#define        TM9MD_SRC_TM9IO         0x07    /* - TM9IO pin input */
+#define        TM9MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
+#define        TM9MD_COUNT_ENABLE      0x80    /* timer count enable */
+
+#define        TM10MD                  __SYSREG(0xd400308c, u8)   /* timer 10 mode register */
+#define        TM10MD_SRC              0x07    /* timer source */
+#define        TM10MD_SRC_IOCLK        0x00    /* - IOCLK */
+#define        TM10MD_SRC_IOCLK_8      0x01    /* - 1/8 IOCLK */
+#define        TM10MD_SRC_IOCLK_32     0x02    /* - 1/32 IOCLK */
+#define        TM10MD_SRC_TM9CASCADE   0x03    /* - cascade with timer 9 */
+#define        TM10MD_SRC_TM0UFLOW     0x04    /* - timer 0 underflow */
+#define        TM10MD_SRC_TM1UFLOW     0x05    /* - timer 1 underflow */
+#define        TM10MD_SRC_TM2UFLOW     0x06    /* - timer 2 underflow */
+#define        TM10MD_SRC_TM10IO       0x07    /* - TM10IO pin input */
+#define        TM10MD_INIT_COUNTER     0x40    /* initialize TMnBC = TMnBR */
+#define        TM10MD_COUNT_ENABLE     0x80    /* timer count enable */
+
+#define        TM11MD                  __SYSREG(0xd400308e, u8)   /* timer 11 mode register */
+#define        TM11MD_SRC              0x07    /* timer source */
+#define        TM11MD_SRC_IOCLK        0x00    /* - IOCLK */
+#define        TM11MD_SRC_IOCLK_8      0x01    /* - 1/8 IOCLK */
+#define        TM11MD_SRC_IOCLK_32     0x02    /* - 1/32 IOCLK */
+#define        TM11MD_SRC_TM7CASCADE   0x03    /* - cascade with timer 7 */
+#define        TM11MD_SRC_TM0UFLOW     0x04    /* - timer 0 underflow */
+#define        TM11MD_SRC_TM1UFLOW     0x05    /* - timer 1 underflow */
+#define        TM11MD_SRC_TM2UFLOW     0x06    /* - timer 2 underflow */
+#define        TM11MD_SRC_TM11IO       0x07    /* - TM11IO pin input */
+#define        TM11MD_INIT_COUNTER     0x40    /* initialize TMnBC = TMnBR */
+#define        TM11MD_COUNT_ENABLE     0x80    /* timer count enable */
+
+#define        TM4BR                   __SYSREG(0xd4003090, u16)  /* timer 4 base register */
+#define        TM5BR                   __SYSREG(0xd4003092, u16)  /* timer 5 base register */
+#define        TM7BR                   __SYSREG(0xd4003096, u16)  /* timer 7 base register */
+#define        TM8BR                   __SYSREG(0xd4003098, u16)  /* timer 8 base register */
+#define        TM9BR                   __SYSREG(0xd400309a, u16)  /* timer 9 base register */
+#define        TM10BR                  __SYSREG(0xd400309c, u16)  /* timer 10 base register */
+#define        TM11BR                  __SYSREG(0xd400309e, u16)  /* timer 11 base register */
+#define        TM45BR                  __SYSREG(0xd4003090, u32)  /* timer 4:5 base register */
+
+#define        TM4BC                   __SYSREG(0xd40030a0, u16)  /* timer 4 binary counter */
+#define        TM5BC                   __SYSREG(0xd40030a2, u16)  /* timer 5 binary counter */
+#define        TM45BC                  __SYSREG(0xd40030a0, u32)  /* timer 4:5 binary counter */
+
+#define        TM7BC                   __SYSREG(0xd40030a6, u16)  /* timer 7 binary counter */
+#define        TM8BC                   __SYSREG(0xd40030a8, u16)  /* timer 8 binary counter */
+#define        TM9BC                   __SYSREG(0xd40030aa, u16)  /* timer 9 binary counter */
+#define        TM10BC                  __SYSREG(0xd40030ac, u16)  /* timer 10 binary counter */
+#define        TM11BC                  __SYSREG(0xd40030ae, u16)  /* timer 11 binary counter */
+
+#define TM4IRQ                 6       /* timer 4 IRQ */
+#define TM5IRQ                 7       /* timer 5 IRQ */
+#define TM7IRQ                 11      /* timer 7 IRQ */
+#define TM8IRQ                 12      /* timer 8 IRQ */
+#define TM9IRQ                 13      /* timer 9 IRQ */
+#define TM10IRQ                        14      /* timer 10 IRQ */
+#define TM11IRQ                        15      /* timer 11 IRQ */
+
+#define        TM4ICR                  GxICR(TM4IRQ)   /* timer 4 uflow intr ctrl reg */
+#define        TM5ICR                  GxICR(TM5IRQ)   /* timer 5 uflow intr ctrl reg */
+#define        TM7ICR                  GxICR(TM7IRQ)   /* timer 7 uflow intr ctrl reg */
+#define        TM8ICR                  GxICR(TM8IRQ)   /* timer 8 uflow intr ctrl reg */
+#define        TM9ICR                  GxICR(TM9IRQ)   /* timer 9 uflow intr ctrl reg */
+#define        TM10ICR                 GxICR(TM10IRQ)  /* timer 10 uflow intr ctrl reg */
+#define        TM11ICR                 GxICR(TM11IRQ)  /* timer 11 uflow intr ctrl reg */
+
+/* 16-bit timer 6 */
+#define        TM6MD                   __SYSREG(0xd4003084, u16)  /* timer6 mode register */
+#define        TM6MD_SRC               0x0007  /* timer source */
+#define        TM6MD_SRC_IOCLK         0x0000  /* - IOCLK */
+#define        TM6MD_SRC_IOCLK_8       0x0001  /* - 1/8 IOCLK */
+#define        TM6MD_SRC_IOCLK_32      0x0002  /* - 1/32 IOCLK */
+#define        TM6MD_SRC_TM0UFLOW      0x0004  /* - timer 0 underflow */
+#define        TM6MD_SRC_TM1UFLOW      0x0005  /* - timer 1 underflow */
+#define        TM6MD_SRC_TM6IOB_BOTH   0x0006  /* - TM6IOB pin input (both edges) */
+#define        TM6MD_SRC_TM6IOB_SINGLE 0x0007  /* - TM6IOB pin input (single edge) */
+#define        TM6MD_CLR_ENABLE        0x0010  /* clear count enable */
+#define        TM6MD_ONESHOT_ENABLE    0x0040  /* oneshot count */
+#define        TM6MD_TRIG_ENABLE       0x0080  /* TM6IOB pin trigger enable */
+#define TM6MD_PWM              0x3800  /* PWM output mode */
+#define TM6MD_PWM_DIS          0x0000  /* - disabled */
+#define        TM6MD_PWM_10BIT         0x1000  /* - 10 bits mode */
+#define        TM6MD_PWM_11BIT         0x1800  /* - 11 bits mode */
+#define        TM6MD_PWM_12BIT         0x3000  /* - 12 bits mode */
+#define        TM6MD_PWM_14BIT         0x3800  /* - 14 bits mode */
+#define        TM6MD_INIT_COUNTER      0x4000  /* initialize TMnBC to zero */
+#define        TM6MD_COUNT_ENABLE      0x8000  /* timer count enable */
+
+#define        TM6MDA                  __SYSREG(0xd40030b4, u8)   /* timer6 cmp/cap A mode reg */
+#define TM6MDA_OUT             0x07    /* output select */
+#define        TM6MDA_OUT_SETA_RESETB  0x00    /* - set at match A, reset at match B */
+#define        TM6MDA_OUT_SETA_RESETOV 0x01    /* - set at match A, reset at overflow */
+#define        TM6MDA_OUT_SETA         0x02    /* - set at match A */
+#define        TM6MDA_OUT_RESETA       0x03    /* - reset at match A */
+#define        TM6MDA_OUT_TOGGLE       0x04    /* - toggle on match A */
+#define TM6MDA_MODE            0xc0    /* compare A register mode */
+#define        TM6MDA_MODE_CMP_SINGLE  0x00    /* - compare, single buffer mode */
+#define        TM6MDA_MODE_CMP_DOUBLE  0x40    /* - compare, double buffer mode */
+#define        TM6MDA_MODE_CAP_S_EDGE  0x80    /* - capture, single edge mode */
+#define        TM6MDA_MODE_CAP_D_EDGE  0xc0    /* - capture, double edge mode */
+#define TM6MDA_EDGE            0x20    /* compare A edge select */
+#define        TM6MDA_EDGE_FALLING     0x00    /* capture on falling edge */
+#define        TM6MDA_EDGE_RISING      0x20    /* capture on rising edge */
+#define        TM6MDA_CAPTURE_ENABLE   0x10    /* capture enable */
+
+#define        TM6MDB                  __SYSREG(0xd40030b5, u8)   /* timer6 cmp/cap B mode reg */
+#define TM6MDB_OUT             0x07    /* output select */
+#define        TM6MDB_OUT_SETB_RESETA  0x00    /* - set at match B, reset at match A */
+#define        TM6MDB_OUT_SETB_RESETOV 0x01    /* - set at match B */
+#define        TM6MDB_OUT_RESETB       0x03    /* - reset at match B */
+#define        TM6MDB_OUT_TOGGLE       0x04    /* - toggle on match B */
+#define TM6MDB_MODE            0xc0    /* compare B register mode */
+#define        TM6MDB_MODE_CMP_SINGLE  0x00    /* - compare, single buffer mode */
+#define        TM6MDB_MODE_CMP_DOUBLE  0x40    /* - compare, double buffer mode */
+#define        TM6MDB_MODE_CAP_S_EDGE  0x80    /* - capture, single edge mode */
+#define        TM6MDB_MODE_CAP_D_EDGE  0xc0    /* - capture, double edge mode */
+#define TM6MDB_EDGE            0x20    /* compare B edge select */
+#define        TM6MDB_EDGE_FALLING     0x00    /* capture on falling edge */
+#define        TM6MDB_EDGE_RISING      0x20    /* capture on rising edge */
+#define        TM6MDB_CAPTURE_ENABLE   0x10    /* capture enable */
+
+#define        TM6CA                   __SYSREG(0xd40030c4, u16)   /* timer6 cmp/capture reg A */
+#define        TM6CB                   __SYSREG(0xd40030d4, u16)   /* timer6 cmp/capture reg B */
+#define        TM6BC                   __SYSREG(0xd40030a4, u16)   /* timer6 binary counter */
+
+#define TM6IRQ                 6       /* timer 6 IRQ */
+#define TM6AIRQ                        9       /* timer 6A IRQ */
+#define TM6BIRQ                        10      /* timer 6B IRQ */
+
+#define        TM6ICR                  GxICR(TM6IRQ)   /* timer 6 uflow intr ctrl reg */
+#define        TM6AICR                 GxICR(TM6AIRQ)  /* timer 6A intr control reg */
+#define        TM6BICR                 GxICR(TM6BIRQ)  /* timer 6B intr control reg */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_TIMER_REGS_H */
diff --git a/arch/mn10300/include/asm/timex.h b/arch/mn10300/include/asm/timex.h
new file mode 100644 (file)
index 0000000..8d031f9
--- /dev/null
@@ -0,0 +1,33 @@
+/* MN10300 Architecture time management specifications
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_TIMEX_H
+#define _ASM_TIMEX_H
+
+#include <asm/hardirq.h>
+#include <unit/timex.h>
+
+#define TICK_SIZE (tick_nsec / 1000)
+
+#define CLOCK_TICK_RATE 1193180 /* Underlying HZ - this should probably be set
+                                * to something appropriate, but what? */
+
+extern cycles_t cacheflush_time;
+
+#ifdef __KERNEL__
+
+static inline cycles_t get_cycles(void)
+{
+       return read_timestamp_counter();
+}
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_TIMEX_H */
diff --git a/arch/mn10300/include/asm/tlb.h b/arch/mn10300/include/asm/tlb.h
new file mode 100644 (file)
index 0000000..65d232b
--- /dev/null
@@ -0,0 +1,34 @@
+/* MN10300 TLB definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_TLB_H
+#define _ASM_TLB_H
+
+#include <asm/tlbflush.h>
+
+extern void check_pgt_cache(void);
+
+/*
+ * we don't need any special per-pte or per-vma handling...
+ */
+#define tlb_start_vma(tlb, vma)                                do { } while (0)
+#define tlb_end_vma(tlb, vma)                          do { } while (0)
+#define __tlb_remove_tlb_entry(tlb, ptep, address)     do { } while (0)
+
+/*
+ * .. because we flush the whole mm when it fills up
+ */
+#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
+
+/* for now, just use the generic stuff */
+#include <asm-generic/tlb.h>
+
+#endif /* _ASM_TLB_H */
diff --git a/arch/mn10300/include/asm/tlbflush.h b/arch/mn10300/include/asm/tlbflush.h
new file mode 100644 (file)
index 0000000..e023986
--- /dev/null
@@ -0,0 +1,80 @@
+/* MN10300 TLB flushing functions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_TLBFLUSH_H
+#define _ASM_TLBFLUSH_H
+
+#include <asm/processor.h>
+
+#define __flush_tlb()                                          \
+do {                                                           \
+       int w;                                                  \
+       __asm__ __volatile__                                    \
+               ("      mov %1,%0               \n"             \
+                "      or %2,%0                \n"             \
+                "      mov %0,%1               \n"             \
+                : "=d"(w)                                      \
+                : "m"(MMUCTR), "i"(MMUCTR_IIV|MMUCTR_DIV)      \
+                : "memory"                                     \
+                );                                             \
+} while (0)
+
+#define __flush_tlb_all() __flush_tlb()
+#define __flush_tlb_one(addr) __flush_tlb()
+
+
+/*
+ * TLB flushing:
+ *
+ *  - flush_tlb() flushes the current mm struct TLBs
+ *  - flush_tlb_all() flushes all processes TLBs
+ *  - flush_tlb_mm(mm) flushes the specified mm context TLB's
+ *  - flush_tlb_page(vma, vmaddr) flushes one page
+ *  - flush_tlb_range(mm, start, end) flushes a range of pages
+ *  - flush_tlb_pgtables(mm, start, end) flushes a range of page tables
+ */
+#define flush_tlb_all()                                \
+do {                                           \
+       preempt_disable();                      \
+       __flush_tlb_all();                      \
+       preempt_enable();                       \
+} while (0)
+
+#define flush_tlb_mm(mm)                       \
+do {                                           \
+       preempt_disable();                      \
+       __flush_tlb_all();                      \
+       preempt_enable();                       \
+} while (0)
+
+#define flush_tlb_range(vma, start, end)                       \
+do {                                                           \
+       unsigned long __s __attribute__((unused)) = (start);    \
+       unsigned long __e __attribute__((unused)) = (end);      \
+       preempt_disable();                                      \
+       __flush_tlb_all();                                      \
+       preempt_enable();                                       \
+} while (0)
+
+
+#define __flush_tlb_global()                   flush_tlb_all()
+#define flush_tlb()                            flush_tlb_all()
+#define flush_tlb_kernel_range(start, end)                     \
+do {                                                           \
+       unsigned long __s __attribute__((unused)) = (start);    \
+       unsigned long __e __attribute__((unused)) = (end);      \
+       flush_tlb_all();                                        \
+} while (0)
+
+extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr);
+
+#define flush_tlb_pgtables(mm, start, end)     do {} while (0)
+
+#endif /* _ASM_TLBFLUSH_H */
diff --git a/arch/mn10300/include/asm/topology.h b/arch/mn10300/include/asm/topology.h
new file mode 100644 (file)
index 0000000..5428f33
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/topology.h>
diff --git a/arch/mn10300/include/asm/types.h b/arch/mn10300/include/asm/types.h
new file mode 100644 (file)
index 0000000..7b9f010
--- /dev/null
@@ -0,0 +1,38 @@
+/* MN10300 Basic type definitions
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_TYPES_H
+#define _ASM_TYPES_H
+
+#include <asm-generic/int-ll64.h>
+
+#ifndef __ASSEMBLY__
+
+typedef unsigned short umode_t;
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * These aren't exported outside the kernel to avoid name space clashes
+ */
+#ifdef __KERNEL__
+
+#define BITS_PER_LONG 32
+
+#ifndef __ASSEMBLY__
+
+/* Dma addresses are 32-bits wide.  */
+typedef u32 dma_addr_t;
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_TYPES_H */
diff --git a/arch/mn10300/include/asm/uaccess.h b/arch/mn10300/include/asm/uaccess.h
new file mode 100644 (file)
index 0000000..8a3a4dd
--- /dev/null
@@ -0,0 +1,490 @@
+/* MN10300 userspace access functions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UACCESS_H
+#define _ASM_UACCESS_H
+
+/*
+ * User space memory access functions
+ */
+#include <linux/sched.h>
+#include <asm/page.h>
+#include <asm/pgtable.h>
+#include <asm/errno.h>
+
+#define VERIFY_READ 0
+#define VERIFY_WRITE 1
+
+/*
+ * The fs value determines whether argument validity checking should be
+ * performed or not.  If get_fs() == USER_DS, checking is performed, with
+ * get_fs() == KERNEL_DS, checking is bypassed.
+ *
+ * For historical reasons, these macros are grossly misnamed.
+ */
+
+#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
+
+#define KERNEL_XDS     MAKE_MM_SEG(0xBFFFFFFF)
+#define KERNEL_DS      MAKE_MM_SEG(0x9FFFFFFF)
+#define USER_DS                MAKE_MM_SEG(TASK_SIZE)
+
+#define get_ds()       (KERNEL_DS)
+#define get_fs()       (current_thread_info()->addr_limit)
+#define set_fs(x)      (current_thread_info()->addr_limit = (x))
+#define __kernel_ds_p() (current_thread_info()->addr_limit.seg == 0x9FFFFFFF)
+
+#define segment_eq(a, b) ((a).seg == (b).seg)
+
+#define __addr_ok(addr) \
+       ((unsigned long)(addr) < (current_thread_info()->addr_limit.seg))
+
+/*
+ * check that a range of addresses falls within the current address limit
+ */
+static inline int ___range_ok(unsigned long addr, unsigned int size)
+{
+       int flag = 1, tmp;
+
+       asm("   add     %3,%1   \n"     /* set C-flag if addr + size > 4Gb */
+           "   bcs     0f      \n"
+           "   cmp     %4,%1   \n"     /* jump if addr+size>limit (error) */
+           "   bhi     0f      \n"
+           "   clr     %0      \n"     /* mark okay */
+           "0:                 \n"
+           : "=r"(flag), "=&r"(tmp)
+           : "1"(addr), "ir"(size),
+             "r"(current_thread_info()->addr_limit.seg), "0"(flag)
+           : "cc"
+           );
+
+       return flag;
+}
+
+#define __range_ok(addr, size) ___range_ok((unsigned long)(addr), (u32)(size))
+
+#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
+#define __access_ok(addr, size)     (__range_ok((addr), (size)) == 0)
+
+static inline int verify_area(int type, const void *addr, unsigned long size)
+{
+       return access_ok(type, addr, size) ? 0 : -EFAULT;
+}
+
+
+/*
+ * The exception table consists of pairs of addresses: the first is the
+ * address of an instruction that is allowed to fault, and the second is
+ * the address at which the program should continue.  No registers are
+ * modified, so it is entirely up to the continuation code to figure out
+ * what to do.
+ *
+ * All the routines below use bits of fixup code that are out of line
+ * with the main instruction path.  This means when everything is well,
+ * we don't even have to jump over them.  Further, they do not intrude
+ * on our cache or tlb entries.
+ */
+
+struct exception_table_entry
+{
+       unsigned long insn, fixup;
+};
+
+/* Returns 0 if exception not found and fixup otherwise.  */
+extern int fixup_exception(struct pt_regs *regs);
+
+#define put_user(x, ptr) __put_user_check((x), (ptr), sizeof(*(ptr)))
+#define get_user(x, ptr) __get_user_check((x), (ptr), sizeof(*(ptr)))
+
+/*
+ * The "__xxx" versions do not do address space checking, useful when
+ * doing multiple accesses to the same area (the user has to do the
+ * checks by hand with "access_ok()")
+ */
+#define __put_user(x, ptr) __put_user_nocheck((x), (ptr), sizeof(*(ptr)))
+#define __get_user(x, ptr) __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
+
+/*
+ * The "xxx_ret" versions return constant specified in third argument, if
+ * something bad happens. These macros can be optimized for the
+ * case of just returning from the function xxx_ret is used.
+ */
+
+#define put_user_ret(x, ptr, ret) \
+       ({ if (put_user((x), (ptr)))    return (ret); })
+#define get_user_ret(x, ptr, ret) \
+       ({ if (get_user((x), (ptr)))    return (ret); })
+#define __put_user_ret(x, ptr, ret) \
+       ({ if (__put_user((x), (ptr)))  return (ret); })
+#define __get_user_ret(x, ptr, ret) \
+       ({ if (__get_user((x), (ptr)))  return (ret); })
+
+struct __large_struct { unsigned long buf[100]; };
+#define __m(x) (*(struct __large_struct *)(x))
+
+#define __get_user_nocheck(x, ptr, size)       \
+({                                             \
+       __typeof(*(ptr)) __gu_val;              \
+       unsigned long __gu_addr;                \
+       int __gu_err;                           \
+       __gu_addr = (unsigned long) (ptr);      \
+       switch (size) {                         \
+       case 1:  __get_user_asm("bu"); break;   \
+       case 2:  __get_user_asm("hu"); break;   \
+       case 4:  __get_user_asm(""  ); break;   \
+       default: __get_user_unknown(); break;   \
+       }                                       \
+       x = (__typeof__(*(ptr))) __gu_val;      \
+       __gu_err;                               \
+})
+
+#define __get_user_check(x, ptr, size)                 \
+({                                                     \
+       __typeof__(*(ptr)) __gu_val;                    \
+       unsigned long __gu_addr;                        \
+       int __gu_err;                                   \
+       __gu_addr = (unsigned long) (ptr);              \
+       if (likely(__access_ok(__gu_addr,size))) {      \
+               switch (size) {                         \
+               case 1:  __get_user_asm("bu"); break;   \
+               case 2:  __get_user_asm("hu"); break;   \
+               case 4:  __get_user_asm(""  ); break;   \
+               default: __get_user_unknown(); break;   \
+               }                                       \
+       }                                               \
+       else {                                          \
+               __gu_err = -EFAULT;                     \
+               __gu_val = 0;                           \
+       }                                               \
+       x = (__typeof__(*(ptr))) __gu_val;              \
+       __gu_err;                                       \
+})
+
+#define __get_user_asm(INSN)                                   \
+({                                                             \
+       asm volatile(                                   \
+               "1:\n"                                          \
+               "       mov"INSN"       %2,%1\n"                \
+               "       mov             0,%0\n"                 \
+               "2:\n"                                          \
+               "       .section        .fixup,\"ax\"\n"        \
+               "3:\n\t"                                        \
+               "       mov             %3,%0\n"                \
+               "       jmp             2b\n"                   \
+               "       .previous\n"                            \
+               "       .section        __ex_table,\"a\"\n"     \
+               "       .balign         4\n"                    \
+               "       .long           1b, 3b\n"               \
+               "       .previous"                              \
+               : "=&r" (__gu_err), "=&r" (__gu_val)            \
+               : "m" (__m(__gu_addr)), "i" (-EFAULT));         \
+})
+
+extern int __get_user_unknown(void);
+
+#define __put_user_nocheck(x, ptr, size)                       \
+({                                                             \
+       union {                                                 \
+               __typeof__(*(ptr)) val;                         \
+               u32 bits[2];                                    \
+       } __pu_val;                                             \
+       unsigned long __pu_addr;                                \
+       int __pu_err;                                           \
+       __pu_val.val = (x);                                     \
+       __pu_addr = (unsigned long) (ptr);                      \
+       switch (size) {                                         \
+       case 1:  __put_user_asm("bu"); break;                   \
+       case 2:  __put_user_asm("hu"); break;                   \
+       case 4:  __put_user_asm(""  ); break;                   \
+       case 8:  __put_user_asm8();    break;                   \
+       default: __pu_err = __put_user_unknown(); break;        \
+       }                                                       \
+       __pu_err;                                               \
+})
+
+#define __put_user_check(x, ptr, size)                                 \
+({                                                                     \
+       union {                                                         \
+               __typeof__(*(ptr)) val;                                 \
+               u32 bits[2];                                            \
+       } __pu_val;                                                     \
+       unsigned long __pu_addr;                                        \
+       int __pu_err;                                                   \
+       __pu_val.val = (x);                                             \
+       __pu_addr = (unsigned long) (ptr);                              \
+       if (likely(__access_ok(__pu_addr, size))) {                     \
+               switch (size) {                                         \
+               case 1:  __put_user_asm("bu"); break;                   \
+               case 2:  __put_user_asm("hu"); break;                   \
+               case 4:  __put_user_asm(""  ); break;                   \
+               case 8:  __put_user_asm8();    break;                   \
+               default: __pu_err = __put_user_unknown(); break;        \
+               }                                                       \
+       }                                                               \
+       else {                                                          \
+               __pu_err = -EFAULT;                                     \
+       }                                                               \
+       __pu_err;                                                       \
+})
+
+#define __put_user_asm(INSN)                                   \
+({                                                             \
+       asm volatile(                                           \
+               "1:\n"                                          \
+               "       mov"INSN"       %1,%2\n"                \
+               "       mov             0,%0\n"                 \
+               "2:\n"                                          \
+               "       .section        .fixup,\"ax\"\n"        \
+               "3:\n"                                          \
+               "       mov             %3,%0\n"                \
+               "       jmp             2b\n"                   \
+               "       .previous\n"                            \
+               "       .section        __ex_table,\"a\"\n"     \
+               "       .balign         4\n"                    \
+               "       .long           1b, 3b\n"               \
+               "       .previous"                              \
+               : "=&r" (__pu_err)                              \
+               : "r" (__pu_val.val), "m" (__m(__pu_addr)),     \
+                 "i" (-EFAULT)                                 \
+               );                                              \
+})
+
+#define __put_user_asm8()                                              \
+({                                                                     \
+       asm volatile(                                                   \
+               "1:     mov             %1,%3           \n"             \
+               "2:     mov             %2,%4           \n"             \
+               "       mov             0,%0            \n"             \
+               "3:                                     \n"             \
+               "       .section        .fixup,\"ax\"   \n"             \
+               "4:                                     \n"             \
+               "       mov             %5,%0           \n"             \
+               "       jmp             3b              \n"             \
+               "       .previous                       \n"             \
+               "       .section        __ex_table,\"a\"\n"             \
+               "       .balign         4               \n"             \
+               "       .long           1b, 4b          \n"             \
+               "       .long           2b, 4b          \n"             \
+               "       .previous                       \n"             \
+               : "=&r" (__pu_err)                                      \
+               : "r" (__pu_val.bits[0]), "r" (__pu_val.bits[1]),       \
+                 "m" (__m(__pu_addr)), "m" (__m(__pu_addr+4)),         \
+                 "i" (-EFAULT)                                         \
+               );                                                      \
+})
+
+extern int __put_user_unknown(void);
+
+
+/*
+ * Copy To/From Userspace
+ */
+/* Generic arbitrary sized copy.  */
+#define __copy_user(to, from, size)                                    \
+do {                                                                   \
+       if (size) {                                                     \
+               void *__to = to;                                        \
+               const void *__from = from;                              \
+               int w;                                                  \
+               asm volatile(                                           \
+                       "0:     movbu   (%0),%3;\n"                     \
+                       "1:     movbu   %3,(%1);\n"                     \
+                       "       inc     %0;\n"                          \
+                       "       inc     %1;\n"                          \
+                       "       add     -1,%2;\n"                       \
+                       "       bne     0b;\n"                          \
+                       "2:\n"                                          \
+                       "       .section .fixup,\"ax\"\n"               \
+                       "3:     jmp     2b\n"                           \
+                       "       .previous\n"                            \
+                       "       .section __ex_table,\"a\"\n"            \
+                       "       .balign 4\n"                            \
+                       "       .long   0b,3b\n"                        \
+                       "       .long   1b,3b\n"                        \
+                       "       .previous\n"                            \
+                       : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
+                       : "0"(__from), "1"(__to), "2"(size)             \
+                       : "memory");                                    \
+       }                                                               \
+} while (0)
+
+#define __copy_user_zeroing(to, from, size)                            \
+do {                                                                   \
+       if (size) {                                                     \
+               void *__to = to;                                        \
+               const void *__from = from;                              \
+               int w;                                                  \
+               asm volatile(                                           \
+                       "0:     movbu   (%0),%3;\n"                     \
+                       "1:     movbu   %3,(%1);\n"                     \
+                       "       inc     %0;\n"                          \
+                       "       inc     %1;\n"                          \
+                       "       add     -1,%2;\n"                       \
+                       "       bne     0b;\n"                          \
+                       "2:\n"                                          \
+                       "       .section .fixup,\"ax\"\n"               \
+                       "3:\n"                                          \
+                       "       mov     %2,%0\n"                        \
+                       "       clr     %3\n"                           \
+                       "4:     movbu   %3,(%1);\n"                     \
+                       "       inc     %1;\n"                          \
+                       "       add     -1,%2;\n"                       \
+                       "       bne     4b;\n"                          \
+                       "       mov     %0,%2\n"                        \
+                       "       jmp     2b\n"                           \
+                       "       .previous\n"                            \
+                       "       .section __ex_table,\"a\"\n"            \
+                       "       .balign 4\n"                            \
+                       "       .long   0b,3b\n"                        \
+                       "       .long   1b,3b\n"                        \
+                       "       .previous\n"                            \
+                       : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
+                       : "0"(__from), "1"(__to), "2"(size)             \
+                       : "memory");                                    \
+       }                                                               \
+} while (0)
+
+/* We let the __ versions of copy_from/to_user inline, because they're often
+ * used in fast paths and have only a small space overhead.
+ */
+static inline
+unsigned long __generic_copy_from_user_nocheck(void *to, const void *from,
+                                              unsigned long n)
+{
+       __copy_user_zeroing(to, from, n);
+       return n;
+}
+
+static inline
+unsigned long __generic_copy_to_user_nocheck(void *to, const void *from,
+                                            unsigned long n)
+{
+       __copy_user(to, from, n);
+       return n;
+}
+
+
+#if 0
+#error don't use - these macros don't increment to & from pointers
+/* Optimize just a little bit when we know the size of the move. */
+#define __constant_copy_user(to, from, size)   \
+do {                                           \
+       asm volatile(                           \
+               "       mov %0,a0;\n"           \
+               "0:     movbu (%1),d3;\n"       \
+               "1:     movbu d3,(%2);\n"       \
+               "       add -1,a0;\n"           \
+               "       bne 0b;\n"              \
+               "2:;"                           \
+               ".section .fixup,\"ax\"\n"      \
+               "3:     jmp 2b\n"               \
+               ".previous\n"                   \
+               ".section __ex_table,\"a\"\n"   \
+               "       .balign 4\n"            \
+               "       .long 0b,3b\n"          \
+               "       .long 1b,3b\n"          \
+               ".previous"                     \
+               :                               \
+               : "d"(size), "d"(to), "d"(from) \
+               : "d3", "a0");                  \
+} while (0)
+
+/* Optimize just a little bit when we know the size of the move. */
+#define __constant_copy_user_zeroing(to, from, size)   \
+do {                                                   \
+       asm volatile(                                   \
+               "       mov %0,a0;\n"                   \
+               "0:     movbu (%1),d3;\n"               \
+               "1:     movbu d3,(%2);\n"               \
+               "       add -1,a0;\n"                   \
+               "       bne 0b;\n"                      \
+               "2:;"                                   \
+               ".section .fixup,\"ax\"\n"              \
+               "3:     jmp 2b\n"                       \
+               ".previous\n"                           \
+               ".section __ex_table,\"a\"\n"           \
+               "       .balign 4\n"                    \
+               "       .long 0b,3b\n"                  \
+               "       .long 1b,3b\n"                  \
+               ".previous"                             \
+               :                                       \
+               : "d"(size), "d"(to), "d"(from)         \
+               : "d3", "a0");                          \
+} while (0)
+
+static inline
+unsigned long __constant_copy_to_user(void *to, const void *from,
+                                     unsigned long n)
+{
+       if (access_ok(VERIFY_WRITE, to, n))
+               __constant_copy_user(to, from, n);
+       return n;
+}
+
+static inline
+unsigned long __constant_copy_from_user(void *to, const void *from,
+                                       unsigned long n)
+{
+       if (access_ok(VERIFY_READ, from, n))
+               __constant_copy_user_zeroing(to, from, n);
+       return n;
+}
+
+static inline
+unsigned long __constant_copy_to_user_nocheck(void *to, const void *from,
+                                             unsigned long n)
+{
+       __constant_copy_user(to, from, n);
+       return n;
+}
+
+static inline
+unsigned long __constant_copy_from_user_nocheck(void *to, const void *from,
+                                               unsigned long n)
+{
+       __constant_copy_user_zeroing(to, from, n);
+       return n;
+}
+#endif
+
+extern unsigned long __generic_copy_to_user(void __user *, const void *,
+                                           unsigned long);
+extern unsigned long __generic_copy_from_user(void *, const void __user *,
+                                             unsigned long);
+
+#define __copy_to_user_inatomic(to, from, n) \
+       __generic_copy_to_user_nocheck((to), (from), (n))
+#define __copy_from_user_inatomic(to, from, n) \
+       __generic_copy_from_user_nocheck((to), (from), (n))
+
+#define __copy_to_user(to, from, n)                    \
+({                                                     \
+       might_sleep();                                  \
+       __copy_to_user_inatomic((to), (from), (n));     \
+})
+
+#define __copy_from_user(to, from, n)                  \
+({                                                     \
+       might_sleep();                                  \
+       __copy_from_user_inatomic((to), (from), (n));   \
+})
+
+
+#define copy_to_user(to, from, n)   __generic_copy_to_user((to), (from), (n))
+#define copy_from_user(to, from, n) __generic_copy_from_user((to), (from), (n))
+
+extern long strncpy_from_user(char *dst, const char __user *src, long count);
+extern long __strncpy_from_user(char *dst, const char __user *src, long count);
+extern long strnlen_user(const char __user *str, long n);
+#define strlen_user(str) strnlen_user(str, ~0UL >> 1)
+extern unsigned long clear_user(void __user *mem, unsigned long len);
+extern unsigned long __clear_user(void __user *mem, unsigned long len);
+
+#endif /* _ASM_UACCESS_H */
diff --git a/arch/mn10300/include/asm/ucontext.h b/arch/mn10300/include/asm/ucontext.h
new file mode 100644 (file)
index 0000000..fcab5c1
--- /dev/null
@@ -0,0 +1,22 @@
+/* MN10300 User context
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UCONTEXT_H
+#define _ASM_UCONTEXT_H
+
+struct ucontext {
+       unsigned long     uc_flags;
+       struct ucontext  *uc_link;
+       stack_t           uc_stack;
+       struct sigcontext uc_mcontext;
+       sigset_t          uc_sigmask;   /* mask last for extensibility */
+};
+
+#endif /* _ASM_UCONTEXT_H */
diff --git a/arch/mn10300/include/asm/unaligned.h b/arch/mn10300/include/asm/unaligned.h
new file mode 100644 (file)
index 0000000..0df6713
--- /dev/null
@@ -0,0 +1,20 @@
+/* MN10300 Unaligned memory access handling
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_MN10300_UNALIGNED_H
+#define _ASM_MN10300_UNALIGNED_H
+
+#include <linux/unaligned/access_ok.h>
+#include <linux/unaligned/generic.h>
+
+#define get_unaligned  __get_unaligned_le
+#define put_unaligned  __put_unaligned_le
+
+#endif /* _ASM_MN10300_UNALIGNED_H */
diff --git a/arch/mn10300/include/asm/unistd.h b/arch/mn10300/include/asm/unistd.h
new file mode 100644 (file)
index 0000000..543a4f9
--- /dev/null
@@ -0,0 +1,390 @@
+/* MN10300 System call number list
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UNISTD_H
+#define _ASM_UNISTD_H
+
+#define __NR_restart_syscall      0
+#define __NR_exit                1
+#define __NR_fork                2
+#define __NR_read                3
+#define __NR_write               4
+#define __NR_open                5
+#define __NR_close               6
+#define __NR_waitpid             7
+#define __NR_creat               8
+#define __NR_link                9
+#define __NR_unlink             10
+#define __NR_execve             11
+#define __NR_chdir              12
+#define __NR_time               13
+#define __NR_mknod              14
+#define __NR_chmod              15
+#define __NR_lchown             16
+#define __NR_break              17
+#define __NR_oldstat            18
+#define __NR_lseek              19
+#define __NR_getpid             20
+#define __NR_mount              21
+#define __NR_umount             22
+#define __NR_setuid             23
+#define __NR_getuid             24
+#define __NR_stime              25
+#define __NR_ptrace             26
+#define __NR_alarm              27
+#define __NR_oldfstat           28
+#define __NR_pause              29
+#define __NR_utime              30
+#define __NR_stty               31
+#define __NR_gtty               32
+#define __NR_access             33
+#define __NR_nice               34
+#define __NR_ftime              35
+#define __NR_sync               36
+#define __NR_kill               37
+#define __NR_rename             38
+#define __NR_mkdir              39
+#define __NR_rmdir              40
+#define __NR_dup                41
+#define __NR_pipe               42
+#define __NR_times              43
+#define __NR_prof               44
+#define __NR_brk                45
+#define __NR_setgid             46
+#define __NR_getgid             47
+#define __NR_signal             48
+#define __NR_geteuid            49
+#define __NR_getegid            50
+#define __NR_acct               51
+#define __NR_umount2            52
+#define __NR_lock               53
+#define __NR_ioctl              54
+#define __NR_fcntl              55
+#define __NR_mpx                56
+#define __NR_setpgid            57
+#define __NR_ulimit             58
+#define __NR_oldolduname        59
+#define __NR_umask              60
+#define __NR_chroot             61
+#define __NR_ustat              62
+#define __NR_dup2               63
+#define __NR_getppid            64
+#define __NR_getpgrp            65
+#define __NR_setsid             66
+#define __NR_sigaction          67
+#define __NR_sgetmask           68
+#define __NR_ssetmask           69
+#define __NR_setreuid           70
+#define __NR_setregid           71
+#define __NR_sigsuspend                 72
+#define __NR_sigpending                 73
+#define __NR_sethostname        74
+#define __NR_setrlimit          75
+#define __NR_getrlimit          76     /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage          77
+#define __NR_gettimeofday       78
+#define __NR_settimeofday       79
+#define __NR_getgroups          80
+#define __NR_setgroups          81
+#define __NR_select             82
+#define __NR_symlink            83
+#define __NR_oldlstat           84
+#define __NR_readlink           85
+#define __NR_uselib             86
+#define __NR_swapon             87
+#define __NR_reboot             88
+#define __NR_readdir            89
+#define __NR_mmap               90
+#define __NR_munmap             91
+#define __NR_truncate           92
+#define __NR_ftruncate          93
+#define __NR_fchmod             94
+#define __NR_fchown             95
+#define __NR_getpriority        96
+#define __NR_setpriority        97
+#define __NR_profil             98
+#define __NR_statfs             99
+#define __NR_fstatfs           100
+#define __NR_ioperm            101
+#define __NR_socketcall                102
+#define __NR_syslog            103
+#define __NR_setitimer         104
+#define __NR_getitimer         105
+#define __NR_stat              106
+#define __NR_lstat             107
+#define __NR_fstat             108
+#define __NR_olduname          109
+#define __NR_iopl              110
+#define __NR_vhangup           111
+#define __NR_idle              112
+#define __NR_vm86old           113
+#define __NR_wait4             114
+#define __NR_swapoff           115
+#define __NR_sysinfo           116
+#define __NR_ipc               117
+#define __NR_fsync             118
+#define __NR_sigreturn         119
+#define __NR_clone             120
+#define __NR_setdomainname     121
+#define __NR_uname             122
+#define __NR_modify_ldt                123
+#define __NR_adjtimex          124
+#define __NR_mprotect          125
+#define __NR_sigprocmask       126
+#define __NR_create_module     127
+#define __NR_init_module       128
+#define __NR_delete_module     129
+#define __NR_get_kernel_syms   130
+#define __NR_quotactl          131
+#define __NR_getpgid           132
+#define __NR_fchdir            133
+#define __NR_bdflush           134
+#define __NR_sysfs             135
+#define __NR_personality       136
+#define __NR_afs_syscall       137 /* Syscall for Andrew File System */
+#define __NR_setfsuid          138
+#define __NR_setfsgid          139
+#define __NR__llseek           140
+#define __NR_getdents          141
+#define __NR__newselect                142
+#define __NR_flock             143
+#define __NR_msync             144
+#define __NR_readv             145
+#define __NR_writev            146
+#define __NR_getsid            147
+#define __NR_fdatasync         148
+#define __NR__sysctl           149
+#define __NR_mlock             150
+#define __NR_munlock           151
+#define __NR_mlockall          152
+#define __NR_munlockall                153
+#define __NR_sched_setparam            154
+#define __NR_sched_getparam            155
+#define __NR_sched_setscheduler                156
+#define __NR_sched_getscheduler                157
+#define __NR_sched_yield               158
+#define __NR_sched_get_priority_max    159
+#define __NR_sched_get_priority_min    160
+#define __NR_sched_rr_get_interval     161
+#define __NR_nanosleep         162
+#define __NR_mremap            163
+#define __NR_setresuid         164
+#define __NR_getresuid         165
+#define __NR_vm86              166
+#define __NR_query_module      167
+#define __NR_poll              168
+#define __NR_nfsservctl                169
+#define __NR_setresgid         170
+#define __NR_getresgid         171
+#define __NR_prctl              172
+#define __NR_rt_sigreturn      173
+#define __NR_rt_sigaction      174
+#define __NR_rt_sigprocmask    175
+#define __NR_rt_sigpending     176
+#define __NR_rt_sigtimedwait   177
+#define __NR_rt_sigqueueinfo   178
+#define __NR_rt_sigsuspend     179
+#define __NR_pread64           180
+#define __NR_pwrite64          181
+#define __NR_chown             182
+#define __NR_getcwd            183
+#define __NR_capget            184
+#define __NR_capset            185
+#define __NR_sigaltstack       186
+#define __NR_sendfile          187
+#define __NR_getpmsg           188     /* some people actually want streams */
+#define __NR_putpmsg           189     /* some people actually want streams */
+#define __NR_vfork             190
+#define __NR_ugetrlimit                191     /* SuS compliant getrlimit */
+#define __NR_mmap2             192
+#define __NR_truncate64                193
+#define __NR_ftruncate64       194
+#define __NR_stat64            195
+#define __NR_lstat64           196
+#define __NR_fstat64           197
+#define __NR_lchown32          198
+#define __NR_getuid32          199
+#define __NR_getgid32          200
+#define __NR_geteuid32         201
+#define __NR_getegid32         202
+#define __NR_setreuid32                203
+#define __NR_setregid32                204
+#define __NR_getgroups32       205
+#define __NR_setgroups32       206
+#define __NR_fchown32          207
+#define __NR_setresuid32       208
+#define __NR_getresuid32       209
+#define __NR_setresgid32       210
+#define __NR_getresgid32       211
+#define __NR_chown32           212
+#define __NR_setuid32          213
+#define __NR_setgid32          214
+#define __NR_setfsuid32                215
+#define __NR_setfsgid32                216
+#define __NR_pivot_root                217
+#define __NR_mincore           218
+#define __NR_madvise           219
+#define __NR_madvise1          219     /* delete when C lib stub is removed */
+#define __NR_getdents64                220
+#define __NR_fcntl64           221
+/* 223 is unused */
+#define __NR_gettid            224
+#define __NR_readahead         225
+#define __NR_setxattr          226
+#define __NR_lsetxattr         227
+#define __NR_fsetxattr         228
+#define __NR_getxattr          229
+#define __NR_lgetxattr         230
+#define __NR_fgetxattr         231
+#define __NR_listxattr         232
+#define __NR_llistxattr                233
+#define __NR_flistxattr                234
+#define __NR_removexattr       235
+#define __NR_lremovexattr      236
+#define __NR_fremovexattr      237
+#define __NR_tkill             238
+#define __NR_sendfile64                239
+#define __NR_futex             240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area   243
+#define __NR_get_thread_area   244
+#define __NR_io_setup          245
+#define __NR_io_destroy                246
+#define __NR_io_getevents      247
+#define __NR_io_submit         248
+#define __NR_io_cancel         249
+#define __NR_fadvise64         250
+
+#define __NR_exit_group                252
+#define __NR_lookup_dcookie    253
+#define __NR_epoll_create      254
+#define __NR_epoll_ctl         255
+#define __NR_epoll_wait                256
+#define __NR_remap_file_pages  257
+#define __NR_set_tid_address   258
+#define __NR_timer_create      259
+#define __NR_timer_settime     (__NR_timer_create+1)
+#define __NR_timer_gettime     (__NR_timer_create+2)
+#define __NR_timer_getoverrun  (__NR_timer_create+3)
+#define __NR_timer_delete      (__NR_timer_create+4)
+#define __NR_clock_settime     (__NR_timer_create+5)
+#define __NR_clock_gettime     (__NR_timer_create+6)
+#define __NR_clock_getres      (__NR_timer_create+7)
+#define __NR_clock_nanosleep   (__NR_timer_create+8)
+#define __NR_statfs64          268
+#define __NR_fstatfs64         269
+#define __NR_tgkill            270
+#define __NR_utimes            271
+#define __NR_fadvise64_64      272
+#define __NR_vserver           273
+#define __NR_mbind             274
+#define __NR_get_mempolicy     275
+#define __NR_set_mempolicy     276
+#define __NR_mq_open           277
+#define __NR_mq_unlink         (__NR_mq_open+1)
+#define __NR_mq_timedsend      (__NR_mq_open+2)
+#define __NR_mq_timedreceive   (__NR_mq_open+3)
+#define __NR_mq_notify         (__NR_mq_open+4)
+#define __NR_mq_getsetattr     (__NR_mq_open+5)
+#define __NR_kexec_load                283
+#define __NR_waitid            284
+#define __NR_add_key           286
+#define __NR_request_key       287
+#define __NR_keyctl            288
+#define __NR_cacheflush                289
+#define __NR_ioprio_set                290
+#define __NR_ioprio_get                291
+#define __NR_inotify_init      292
+#define __NR_inotify_add_watch 293
+#define __NR_inotify_rm_watch  294
+#define __NR_migrate_pages     295
+#define __NR_openat            296
+#define __NR_mkdirat           297
+#define __NR_mknodat           298
+#define __NR_fchownat          299
+#define __NR_futimesat         300
+#define __NR_fstatat64         301
+#define __NR_unlinkat          302
+#define __NR_renameat          303
+#define __NR_linkat            304
+#define __NR_symlinkat         305
+#define __NR_readlinkat                306
+#define __NR_fchmodat          307
+#define __NR_faccessat         308
+#define __NR_pselect6          309
+#define __NR_ppoll             310
+#define __NR_unshare           311
+#define __NR_set_robust_list   312
+#define __NR_get_robust_list   313
+#define __NR_splice            314
+#define __NR_sync_file_range   315
+#define __NR_tee               316
+#define __NR_vmsplice          317
+#define __NR_move_pages                318
+#define __NR_getcpu            319
+#define __NR_epoll_pwait       320
+#define __NR_utimensat         321
+#define __NR_signalfd          322
+#define __NR_timerfd_create    323
+#define __NR_eventfd           324
+#define __NR_fallocate         325
+#define __NR_timerfd_settime   326
+#define __NR_timerfd_gettime   327
+#define __NR_signalfd4         328
+#define __NR_eventfd2          329
+#define __NR_epoll_create1     330
+#define __NR_dup3              331
+#define __NR_pipe2             332
+#define __NR_inotify_init1     333
+
+#ifdef __KERNEL__
+
+#define NR_syscalls 326
+
+/*
+ * specify the deprecated syscalls we want to support on this arch
+ */
+#define __ARCH_WANT_IPC_PARSE_VERSION
+#define __ARCH_WANT_OLD_READDIR
+#define __ARCH_WANT_OLD_STAT
+#define __ARCH_WANT_STAT64
+#define __ARCH_WANT_SYS_ALARM
+#define __ARCH_WANT_SYS_GETHOSTNAME
+#define __ARCH_WANT_SYS_PAUSE
+#define __ARCH_WANT_SYS_SGETMASK
+#define __ARCH_WANT_SYS_SIGNAL
+#define __ARCH_WANT_SYS_TIME
+#define __ARCH_WANT_SYS_UTIME
+#define __ARCH_WANT_SYS_WAITPID
+#define __ARCH_WANT_SYS_SOCKETCALL
+#define __ARCH_WANT_SYS_FADVISE64
+#define __ARCH_WANT_SYS_GETPGRP
+#define __ARCH_WANT_SYS_LLSEEK
+#define __ARCH_WANT_SYS_NICE
+#define __ARCH_WANT_SYS_OLD_GETRLIMIT
+#define __ARCH_WANT_SYS_OLDUMOUNT
+#define __ARCH_WANT_SYS_SIGPENDING
+#define __ARCH_WANT_SYS_SIGPROCMASK
+#define __ARCH_WANT_SYS_RT_SIGACTION
+#define __ARCH_WANT_SYS_RT_SIGSUSPEND
+
+/*
+ * "Conditional" syscalls
+ *
+ * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
+ * but it doesn't work on all toolchains, so we just do it by hand
+ */
+#ifndef cond_syscall
+#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
+#endif
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_UNISTD_H */
diff --git a/arch/mn10300/include/asm/user.h b/arch/mn10300/include/asm/user.h
new file mode 100644 (file)
index 0000000..e119390
--- /dev/null
@@ -0,0 +1,53 @@
+/* MN10300 User process data
+ *
+ * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_USER_H
+#define _ASM_USER_H
+
+#include <asm/page.h>
+#include <linux/ptrace.h>
+
+#ifndef __ASSEMBLY__
+/*
+ * When the kernel dumps core, it starts by dumping the user struct - this will
+ * be used by gdb to figure out where the data and stack segments are within
+ * the file, and what virtual addresses to use.
+ */
+struct user {
+       /* We start with the registers, to mimic the way that "memory" is
+        * returned from the ptrace(3,...) function.
+        */
+       struct pt_regs regs;            /* Where the registers are actually stored */
+
+       /* The rest of this junk is to help gdb figure out what goes where */
+       unsigned long int u_tsize;      /* Text segment size (pages). */
+       unsigned long int u_dsize;      /* Data segment size (pages). */
+       unsigned long int u_ssize;      /* Stack segment size (pages). */
+       unsigned long start_code;       /* Starting virtual address of text. */
+       unsigned long start_stack;      /* Starting virtual address of stack area.
+                                          This is actually the bottom of the stack,
+                                          the top of the stack is always found in the
+                                          esp register.  */
+       long int signal;                /* Signal that caused the core dump. */
+       int reserved;                   /* No longer used */
+       struct user_pt_regs *u_ar0;     /* Used by gdb to help find the values for */
+
+       /* the registers */
+       unsigned long magic;            /* To uniquely identify a core file */
+       char u_comm[32];                /* User command that was responsible */
+};
+#endif
+
+#define NBPG PAGE_SIZE
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR   +(u.start_code)
+#define HOST_STACK_END_ADDR    +(u.start_stack + u.u_ssize * NBPG)
+
+#endif /* _ASM_USER_H */
diff --git a/arch/mn10300/include/asm/vga.h b/arch/mn10300/include/asm/vga.h
new file mode 100644 (file)
index 0000000..0163e50
--- /dev/null
@@ -0,0 +1,17 @@
+/* MN10300 VGA register definitions
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_VGA_H
+#define _ASM_VGA_H
+
+
+
+#endif /* _ASM_VGA_H */
diff --git a/arch/mn10300/include/asm/xor.h b/arch/mn10300/include/asm/xor.h
new file mode 100644 (file)
index 0000000..c82eb12
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-generic/xor.h>
index ceeaaaa359e231431838c003c5d8cc20f56f7918..34ab5a293153b2eb8637d738faa880dde2a5aeea 100644 (file)
@@ -20,7 +20,7 @@
 #include <asm/intctl-regs.h>
 #include <asm/busctl-regs.h>
 #include <asm/timer-regs.h>
-#include <asm/unit/leds.h>
+#include <unit/leds.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
 #include <asm/errno.h>
index c68dcd05220101e91877c05f6825386824bf4b4b..4998b24f5d3a4e2081e3983b3b0e43cdf86bc670 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/thread_info.h>
 #include <asm/frame.inc>
 #include <asm/intctl-regs.h>
-#include <asm/unit/serial.h>
+#include <unit/serial.h>
 
        .text
 
index 11584c51acd93669dfe587cd2983ca81663397b5..ae663dc717e94ab807fbeb3169955e8fbaebd04b 100644 (file)
@@ -22,7 +22,7 @@
 #include <asm/gdb-stub.h>
 #include <asm/exceptions.h>
 #include <asm/serial-regs.h>
-#include <asm/unit/serial.h>
+#include <unit/serial.h>
 
 /*
  * initialise the GDB stub
index 677c7876307ca1abdc2a6dedbe829882894bc599..060b7cca735ddb70291d10d116668a3000a85de7 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/cpu-regs.h>
 #include <asm/frame.inc>
 #include <asm/intctl-regs.h>
-#include <asm/unit/serial.h>
+#include <unit/serial.h>
 #include "mn10300-serial.h"
 
        .text
index e94c25e8ca058e47d077060a76c3d12c7db7e910..a560bbc3137d3c93fd2a14eddbb79ed5b8abc23f 100644 (file)
@@ -20,7 +20,7 @@
 #include <asm/system.h>
 #include <asm/gdb-stub.h>
 #include <asm/exceptions.h>
-#include <asm/unit/clock.h>
+#include <unit/clock.h>
 #include "mn10300-serial.h"
 
 #if defined(CONFIG_GDBSTUB_ON_TTYSM0)
index 0ea7482c1522712d73af221a199f8fa7c0b78738..41b11706c8ed1ee70f0742bec2d9ac301187aea1 100644 (file)
 #include <asm/cacheflush.h>
 #include <asm/serial-regs.h>
 #include <asm/busctl-regs.h>
-#include <asm/unit/leds.h>
-#include <asm/unit/serial.h>
+#include <unit/leds.h>
+#include <unit/serial.h>
 
 /* define to use F7F7 rather than FF which is subverted by JTAG debugger */
 #undef GDBSTUB_USE_F7F7_AS_BREAKPOINT
index 606bd8c6758d011be7ba26039f4039728a095e30..8a8309fbe3c4de9db158920e472ec9a68df7527a 100644 (file)
@@ -17,7 +17,7 @@
 #include <asm/pgtable.h>
 #include <asm/frame.inc>
 #include <asm/param.h>
-#include <asm/unit/serial.h>
+#include <unit/serial.h>
 
        .section .text.head,"ax"
 
index ef3f4c1df2a4cb88fab88a56225f295a751dc0c5..2244853882283a1070e844e8a8ddc088af19e632 100644 (file)
@@ -18,8 +18,8 @@
 #include <asm/cpu-regs.h>
 #include <asm/frame.inc>
 #include <asm/timer-regs.h>
-#include <asm/proc/cache.h>
-#include <asm/unit/timex.h>
+#include <proc/cache.h>
+#include <unit/timex.h>
 #include "mn10300-serial.h"
 
 #define        SCxCTR  0x00
index 59b9c4bf9583a67e8e1467576d6e7fc49125eca7..2fd59664d00ab1b60cd782ab31d4647a559387d6 100644 (file)
@@ -41,7 +41,7 @@ static const char serial_revdate[] = "2007-11-06";
 #include <asm/irq.h>
 #include <asm/bitops.h>
 #include <asm/serial-regs.h>
-#include <asm/unit/timex.h>
+#include <unit/timex.h>
 #include "mn10300-serial.h"
 
 static inline __attribute__((format(printf, 1, 2)))
index 2e370d88a87a22d7302f6dd386bf85a7dbe2ae97..f362d9d138f1ad90012d5fa5e69f1f8b387dbcba 100644 (file)
@@ -25,7 +25,7 @@
 #include <asm/div64.h>
 #include <asm/smp.h>
 #include <asm/gdb-stub.h>
-#include <asm/proc/clock.h>
+#include <proc/clock.h>
 
 static DEFINE_SPINLOCK(watchdog_print_lock);
 static unsigned int watchdog;
index e1d88ab51008896ce6fa423d6e8e1fd1ce5b3672..71414e19fd166441198cd789feaddcbb47c6961a 100644 (file)
@@ -30,7 +30,7 @@
 #include <asm/setup.h>
 #include <asm/io.h>
 #include <asm/smp.h>
-#include <asm/proc/proc.h>
+#include <proc/proc.h>
 #include <asm/busctl-regs.h>
 #include <asm/fpu.h>
 #include <asm/sections.h>
index fcb9a03d46a8a33212b852354b9928b9c575a6e0..681ad8c9e4fb68b59eebd992a7ee32f8be747e18 100644 (file)
@@ -37,7 +37,7 @@
 #include <asm/cacheflush.h>
 #include <asm/cpu-regs.h>
 #include <asm/busctl-regs.h>
-#include <asm/unit/leds.h>
+#include <unit/leds.h>
 #include <asm/fpu.h>
 #include <asm/gdb-stub.h>
 #include <asm/sections.h>
diff --git a/arch/mn10300/proc-mn103e010/include/proc/cache.h b/arch/mn10300/proc-mn103e010/include/proc/cache.h
new file mode 100644 (file)
index 0000000..bdc1f9a
--- /dev/null
@@ -0,0 +1,33 @@
+/* MN103E010 Cache specification
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PROC_CACHE_H
+#define _ASM_PROC_CACHE_H
+
+/* L1 cache */
+
+#define L1_CACHE_NWAYS         4       /* number of ways in caches */
+#define L1_CACHE_NENTRIES      256     /* number of entries in each way */
+#define L1_CACHE_BYTES         16      /* bytes per entry */
+#define L1_CACHE_SHIFT         4       /* shift for bytes per entry */
+#define L1_CACHE_WAYDISP       0x1000  /* displacement of one way from the next */
+
+#define L1_CACHE_TAG_VALID     0x00000001      /* cache tag valid bit */
+#define L1_CACHE_TAG_DIRTY     0x00000008      /* data cache tag dirty bit */
+#define L1_CACHE_TAG_ENTRY     0x00000ff0      /* cache tag entry address mask */
+#define L1_CACHE_TAG_ADDRESS   0xfffff000      /* cache tag line address mask */
+
+/*
+ * specification of the interval between interrupt checking intervals whilst
+ * managing the cache with the interrupts disabled
+ */
+#define MN10300_DCACHE_INV_RANGE_INTR_LOG2_INTERVAL    4
+
+#endif /* _ASM_PROC_CACHE_H */
diff --git a/arch/mn10300/proc-mn103e010/include/proc/clock.h b/arch/mn10300/proc-mn103e010/include/proc/clock.h
new file mode 100644 (file)
index 0000000..aa23e14
--- /dev/null
@@ -0,0 +1,18 @@
+/* MN103E010-specific clocks
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_PROC_CLOCK_H
+#define _ASM_PROC_CLOCK_H
+
+#include <unit/clock.h>
+
+#define MN10300_WDCLK          MN10300_IOCLK
+
+#endif /* _ASM_PROC_CLOCK_H */
diff --git a/arch/mn10300/proc-mn103e010/include/proc/irq.h b/arch/mn10300/proc-mn103e010/include/proc/irq.h
new file mode 100644 (file)
index 0000000..aa6ee8f
--- /dev/null
@@ -0,0 +1,34 @@
+/* MN103E010 On-board interrupt controller numbers
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_PROC_IRQ_H
+#define _ASM_PROC_IRQ_H
+
+#ifdef __KERNEL__
+
+#define GxICR_NUM_IRQS         42
+
+#define GxICR_NUM_XIRQS                8
+
+#define XIRQ0          34
+#define XIRQ1          35
+#define XIRQ2          36
+#define XIRQ3          37
+#define XIRQ4          38
+#define XIRQ5          39
+#define XIRQ6          40
+#define XIRQ7          41
+
+#define XIRQ2IRQ(num)  (XIRQ0 + num)
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_PROC_IRQ_H */
diff --git a/arch/mn10300/proc-mn103e010/include/proc/proc.h b/arch/mn10300/proc-mn103e010/include/proc/proc.h
new file mode 100644 (file)
index 0000000..22a2b93
--- /dev/null
@@ -0,0 +1,18 @@
+/* MN103E010 Processor description
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_PROC_PROC_H
+#define _ASM_PROC_PROC_H
+
+#define PROCESSOR_VENDOR_NAME  "Matsushita"
+#define PROCESSOR_MODEL_NAME   "mn103e010"
+
+#endif /* _ASM_PROC_PROC_H */
diff --git a/arch/mn10300/unit-asb2303/include/unit/clock.h b/arch/mn10300/unit-asb2303/include/unit/clock.h
new file mode 100644 (file)
index 0000000..8b450e9
--- /dev/null
@@ -0,0 +1,45 @@
+/* ASB2303-specific clocks
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UNIT_CLOCK_H
+#define _ASM_UNIT_CLOCK_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_MN10300_RTC
+
+extern unsigned long mn10300_ioclk;    /* IOCLK (crystal speed) in HZ */
+extern unsigned long mn10300_iobclk;
+extern unsigned long mn10300_tsc_per_HZ;
+
+#define MN10300_IOCLK          ((unsigned long)mn10300_ioclk)
+/* If this processors has a another clock, uncomment the below. */
+/* #define MN10300_IOBCLK      ((unsigned long)mn10300_iobclk) */
+
+#else /* !CONFIG_MN10300_RTC */
+
+#define MN10300_IOCLK          33333333UL
+/* #define MN10300_IOBCLK      66666666UL */
+
+#endif /* !CONFIG_MN10300_RTC */
+
+#define MN10300_JCCLK          MN10300_IOCLK
+#define MN10300_TSCCLK         MN10300_IOCLK
+
+#ifdef CONFIG_MN10300_RTC
+#define MN10300_TSC_PER_HZ     ((unsigned long)mn10300_tsc_per_HZ)
+#else /* !CONFIG_MN10300_RTC */
+#define MN10300_TSC_PER_HZ     (MN10300_TSCCLK/HZ)
+#endif /* !CONFIG_MN10300_RTC */
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_UNIT_CLOCK_H */
diff --git a/arch/mn10300/unit-asb2303/include/unit/leds.h b/arch/mn10300/unit-asb2303/include/unit/leds.h
new file mode 100644 (file)
index 0000000..3a7543e
--- /dev/null
@@ -0,0 +1,43 @@
+/* ASB2303-specific LEDs
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UNIT_LEDS_H
+#define _ASM_UNIT_LEDS_H
+
+#include <asm/pio-regs.h>
+#include <asm/cpu-regs.h>
+#include <asm/exceptions.h>
+
+#define ASB2303_GPIO0DEF       __SYSREG(0xDB000000, u32)
+#define ASB2303_7SEGLEDS       __SYSREG(0xDB000008, u32)
+
+/*
+ * use the 7-segment LEDs to indicate states
+ */
+
+/* flip the 7-segment LEDs between "G" and "-" */
+#define mn10300_set_gdbleds(ONOFF)                     \
+do {                                                   \
+       ASB2303_7SEGLEDS = (ONOFF) ? 0x85 : 0x7f;       \
+} while (0)
+
+/* indicate double-fault by displaying "d" on the LEDs */
+#define mn10300_set_dbfleds                    \
+       mov     0x43,d0                 ;       \
+       movbu   d0,(ASB2303_7SEGLEDS)
+
+#ifndef __ASSEMBLY__
+extern void peripheral_leds_display_exception(enum exception_code code);
+extern void peripheral_leds_led_chase(void);
+extern void debug_to_serial(const char *p, int n);
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_UNIT_LEDS_H */
diff --git a/arch/mn10300/unit-asb2303/include/unit/serial.h b/arch/mn10300/unit-asb2303/include/unit/serial.h
new file mode 100644 (file)
index 0000000..047566c
--- /dev/null
@@ -0,0 +1,136 @@
+/* ASB2303-specific 8250 serial ports
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UNIT_SERIAL_H
+#define _ASM_UNIT_SERIAL_H
+
+#include <asm/cpu-regs.h>
+#include <proc/irq.h>
+#include <linux/serial_reg.h>
+
+#define SERIAL_PORT0_BASE_ADDRESS      0xA6FB0000
+#define SERIAL_PORT1_BASE_ADDRESS      0xA6FC0000
+
+#define SERIAL_IRQ     XIRQ0   /* Dual serial (PC16552)        (Hi) */
+
+/*
+ * dispose of the /dev/ttyS0 and /dev/ttyS1 serial ports
+ */
+#ifndef CONFIG_GDBSTUB_ON_TTYSx
+
+#define SERIAL_PORT_DFNS                                               \
+       {                                                               \
+       .baud_base              = BASE_BAUD,                            \
+       .irq                    = SERIAL_IRQ,                           \
+       .flags                  = STD_COM_FLAGS,                        \
+       .iomem_base             = (u8 *) SERIAL_PORT0_BASE_ADDRESS,     \
+       .iomem_reg_shift        = 2,                                    \
+       .io_type                = SERIAL_IO_MEM,                        \
+       },                                                              \
+       {                                                               \
+       .baud_base              = BASE_BAUD,                            \
+       .irq                    = SERIAL_IRQ,                           \
+       .flags                  = STD_COM_FLAGS,                        \
+       .iomem_base             = (u8 *) SERIAL_PORT1_BASE_ADDRESS,     \
+       .iomem_reg_shift        = 2,                                    \
+       .io_type                = SERIAL_IO_MEM,                        \
+       },
+
+#ifndef __ASSEMBLY__
+
+static inline void __debug_to_serial(const char *p, int n)
+{
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#else /* CONFIG_GDBSTUB_ON_TTYSx */
+
+#define SERIAL_PORT_DFNS /* both stolen by gdb-stub because they share an IRQ */
+
+#if defined(CONFIG_GDBSTUB_ON_TTYS0)
+#define GDBPORT_SERIAL_RX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_RX  * 4, u8)
+#define GDBPORT_SERIAL_TX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_TX  * 4, u8)
+#define GDBPORT_SERIAL_DLL     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLL * 4, u8)
+#define GDBPORT_SERIAL_DLM     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLM * 4, u8)
+#define GDBPORT_SERIAL_IER     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IER * 4, u8)
+#define GDBPORT_SERIAL_IIR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IIR * 4, u8)
+#define GDBPORT_SERIAL_FCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_FCR * 4, u8)
+#define GDBPORT_SERIAL_LCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LCR * 4, u8)
+#define GDBPORT_SERIAL_MCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MCR * 4, u8)
+#define GDBPORT_SERIAL_LSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LSR * 4, u8)
+#define GDBPORT_SERIAL_MSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MSR * 4, u8)
+#define GDBPORT_SERIAL_SCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_SCR * 4, u8)
+#define GDBPORT_SERIAL_IRQ     SERIAL_IRQ
+
+#elif defined(CONFIG_GDBSTUB_ON_TTYS1)
+#define GDBPORT_SERIAL_RX      __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_RX  * 4, u8)
+#define GDBPORT_SERIAL_TX      __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_TX  * 4, u8)
+#define GDBPORT_SERIAL_DLL     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_DLL * 4, u8)
+#define GDBPORT_SERIAL_DLM     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_DLM * 4, u8)
+#define GDBPORT_SERIAL_IER     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_IER * 4, u8)
+#define GDBPORT_SERIAL_IIR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_IIR * 4, u8)
+#define GDBPORT_SERIAL_FCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_FCR * 4, u8)
+#define GDBPORT_SERIAL_LCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_LCR * 4, u8)
+#define GDBPORT_SERIAL_MCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_MCR * 4, u8)
+#define GDBPORT_SERIAL_LSR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_LSR * 4, u8)
+#define GDBPORT_SERIAL_MSR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_MSR * 4, u8)
+#define GDBPORT_SERIAL_SCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_SCR * 4, u8)
+#define GDBPORT_SERIAL_IRQ     SERIAL_IRQ
+#endif
+
+#ifndef __ASSEMBLY__
+
+#define LSR_WAIT_FOR(STATE)                                    \
+do {                                                           \
+       while (!(GDBPORT_SERIAL_LSR & UART_LSR_##STATE)) {}     \
+} while (0)
+#define FLOWCTL_WAIT_FOR(LINE)                                 \
+do {                                                           \
+       while (!(GDBPORT_SERIAL_MSR & UART_MSR_##LINE)) {}      \
+} while (0)
+#define FLOWCTL_CLEAR(LINE)                    \
+do {                                           \
+       GDBPORT_SERIAL_MCR &= ~UART_MCR_##LINE; \
+} while (0)
+#define FLOWCTL_SET(LINE)                      \
+do {                                           \
+       GDBPORT_SERIAL_MCR |= UART_MCR_##LINE;  \
+} while (0)
+#define FLOWCTL_QUERY(LINE)    ({ GDBPORT_SERIAL_MSR & UART_MSR_##LINE; })
+
+static inline void __debug_to_serial(const char *p, int n)
+{
+       char ch;
+
+       FLOWCTL_SET(DTR);
+
+       for (; n > 0; n--) {
+               LSR_WAIT_FOR(THRE);
+               FLOWCTL_WAIT_FOR(CTS);
+
+               ch = *p++;
+               if (ch == 0x0a) {
+                       GDBPORT_SERIAL_TX = 0x0d;
+                       LSR_WAIT_FOR(THRE);
+                       FLOWCTL_WAIT_FOR(CTS);
+               }
+               GDBPORT_SERIAL_TX = ch;
+       }
+
+       FLOWCTL_CLEAR(DTR);
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* CONFIG_GDBSTUB_ON_TTYSx */
+
+#endif /* _ASM_UNIT_SERIAL_H */
diff --git a/arch/mn10300/unit-asb2303/include/unit/smc91111.h b/arch/mn10300/unit-asb2303/include/unit/smc91111.h
new file mode 100644 (file)
index 0000000..dd456e9
--- /dev/null
@@ -0,0 +1,50 @@
+/* Support for the SMC91C111 NIC on an ASB2303
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UNIT_SMC91111_H
+#define _ASM_UNIT_SMC91111_H
+
+#include <asm/intctl-regs.h>
+
+#define SMC91111_BASE          0xAA000300UL
+#define SMC91111_BASE_END      0xAA000400UL
+#define SMC91111_IRQ           XIRQ3
+
+#define SMC_CAN_USE_8BIT       0
+#define SMC_CAN_USE_16BIT      1
+#define SMC_CAN_USE_32BIT      0
+#define SMC_NOWAIT             1
+#define SMC_IRQ_FLAGS          (0)
+
+#if SMC_CAN_USE_8BIT
+#define SMC_inb(a, r)          inb((unsigned long) ((a) + (r)))
+#define SMC_outb(v, a, r)      outb(v, (unsigned long) ((a) + (r)))
+#endif
+
+#if SMC_CAN_USE_16BIT
+#define SMC_inw(a, r)          inw((unsigned long) ((a) + (r)))
+#define SMC_outw(v, a, r)      outw(v, (unsigned long) ((a) + (r)))
+#define SMC_insw(a, r, p, l)   insw((unsigned long) ((a) + (r)), (p), (l))
+#define SMC_outsw(a, r, p, l)  outsw((unsigned long) ((a) + (r)), (p), (l))
+#endif
+
+#if SMC_CAN_USE_32BIT
+#define SMC_inl(a, r)          inl((unsigned long) ((a) + (r)))
+#define SMC_outl(v, a, r)      outl(v, (unsigned long) ((a) + (r)))
+#define SMC_insl(a, r, p, l)   insl((unsigned long) ((a) + (r)), (p), (l))
+#define SMC_outsl(a, r, p, l)  outsl((unsigned long) ((a) + (r)), (p), (l))
+#endif
+
+#define RPC_LSA_DEFAULT                RPC_LED_100_10
+#define RPC_LSB_DEFAULT                RPC_LED_TX_RX
+
+#define set_irq_type(irq, type)
+
+#endif /*  _ASM_UNIT_SMC91111_H */
diff --git a/arch/mn10300/unit-asb2303/include/unit/timex.h b/arch/mn10300/unit-asb2303/include/unit/timex.h
new file mode 100644 (file)
index 0000000..f206b63
--- /dev/null
@@ -0,0 +1,135 @@
+/* ASB2303-specific timer specifcations
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UNIT_TIMEX_H
+#define _ASM_UNIT_TIMEX_H
+
+#ifndef __ASSEMBLY__
+#include <linux/irq.h>
+#endif /* __ASSEMBLY__ */
+
+#include <asm/timer-regs.h>
+#include <unit/clock.h>
+
+/*
+ * jiffies counter specifications
+ */
+
+#define        TMJCBR_MAX              0xffff
+#define        TMJCBC                  TM01BC
+
+#define        TMJCMD                  TM01MD
+#define        TMJCBR                  TM01BR
+#define        TMJCIRQ                 TM1IRQ
+#define        TMJCICR                 TM1ICR
+#define        TMJCICR_LEVEL           GxICR_LEVEL_5
+
+#ifndef __ASSEMBLY__
+
+static inline void startup_jiffies_counter(void)
+{
+       unsigned rate;
+       u16 md, t16;
+
+       /* use as little prescaling as possible to avoid losing accuracy */
+       md = TM0MD_SRC_IOCLK;
+       rate = MN10300_JCCLK / HZ;
+
+       if (rate > TMJCBR_MAX) {
+               md = TM0MD_SRC_IOCLK_8;
+               rate = MN10300_JCCLK / 8 / HZ;
+
+               if (rate > TMJCBR_MAX) {
+                       md = TM0MD_SRC_IOCLK_32;
+                       rate = MN10300_JCCLK / 32 / HZ;
+
+                       if (rate > TMJCBR_MAX)
+                               BUG();
+               }
+       }
+
+       TMJCBR = rate - 1;
+       t16 = TMJCBR;
+
+       TMJCMD =
+               md |
+               TM1MD_SRC_TM0CASCADE << 8 |
+               TM0MD_INIT_COUNTER |
+               TM1MD_INIT_COUNTER << 8;
+
+       TMJCMD =
+               md |
+               TM1MD_SRC_TM0CASCADE << 8 |
+               TM0MD_COUNT_ENABLE |
+               TM1MD_COUNT_ENABLE << 8;
+
+       t16 = TMJCMD;
+
+       TMJCICR |= GxICR_ENABLE | GxICR_DETECT | GxICR_REQUEST;
+       t16 = TMJCICR;
+}
+
+static inline void shutdown_jiffies_counter(void)
+{
+}
+
+#endif /* !__ASSEMBLY__ */
+
+
+/*
+ * timestamp counter specifications
+ */
+
+#define        TMTSCBR_MAX             0xffffffff
+#define        TMTSCBC                 TM45BC
+
+#ifndef __ASSEMBLY__
+
+static inline void startup_timestamp_counter(void)
+{
+       /* set up timer 4 & 5 cascaded as a 32-bit counter to count real time
+        * - count down from 4Gig-1 to 0 and wrap at IOCLK rate
+        */
+       TM45BR = TMTSCBR_MAX;
+
+       TM4MD = TM4MD_SRC_IOCLK;
+       TM4MD |= TM4MD_INIT_COUNTER;
+       TM4MD &= ~TM4MD_INIT_COUNTER;
+       TM4ICR = 0;
+
+       TM5MD = TM5MD_SRC_TM4CASCADE;
+       TM5MD |= TM5MD_INIT_COUNTER;
+       TM5MD &= ~TM5MD_INIT_COUNTER;
+       TM5ICR = 0;
+
+       TM5MD |= TM5MD_COUNT_ENABLE;
+       TM4MD |= TM4MD_COUNT_ENABLE;
+}
+
+static inline void shutdown_timestamp_counter(void)
+{
+       TM4MD = 0;
+       TM5MD = 0;
+}
+
+/*
+ * we use a cascaded pair of 16-bit down-counting timers to count I/O
+ * clock cycles for the purposes of time keeping
+ */
+typedef unsigned long cycles_t;
+
+static inline cycles_t read_timestamp_counter(void)
+{
+       return (cycles_t)TMTSCBC;
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_UNIT_TIMEX_H */
index cd4bc78ccfc819f83ebac006d67b93f25cb1ca08..c03839357a140e67ede804f1da357a5f7d0f42a0 100644 (file)
@@ -16,7 +16,7 @@
 #include <asm/processor.h>
 #include <asm/intctl-regs.h>
 #include <asm/rtc-regs.h>
-#include <asm/unit/leds.h>
+#include <unit/leds.h>
 
 #if 0
 static const u8 asb2303_led_hex_tbl[16] = {
index 30875dd65631859bc79e5aecd45801f4e3510138..43c246439413b8c5f70d9b50d79b733443e42882 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/timex.h>
 #include <asm/processor.h>
 #include <asm/intctl-regs.h>
-#include <asm/unit/smc91111.h>
+#include <unit/smc91111.h>
 
 static struct resource smc91c111_resources[] = {
        [0] = {
diff --git a/arch/mn10300/unit-asb2305/include/unit/clock.h b/arch/mn10300/unit-asb2305/include/unit/clock.h
new file mode 100644 (file)
index 0000000..7d51484
--- /dev/null
@@ -0,0 +1,45 @@
+/* ASB2305-specific clocks
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UNIT_CLOCK_H
+#define _ASM_UNIT_CLOCK_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_MN10300_RTC
+
+extern unsigned long mn10300_ioclk;    /* IOCLK (crystal speed) in HZ */
+extern unsigned long mn10300_iobclk;
+extern unsigned long mn10300_tsc_per_HZ;
+
+#define MN10300_IOCLK          ((unsigned long)mn10300_ioclk)
+/* If this processors has a another clock, uncomment the below. */
+/* #define MN10300_IOBCLK      ((unsigned long)mn10300_iobclk) */
+
+#else /* !CONFIG_MN10300_RTC */
+
+#define MN10300_IOCLK          33333333UL
+/* #define MN10300_IOBCLK      66666666UL */
+
+#endif /* !CONFIG_MN10300_RTC */
+
+#define MN10300_JCCLK          MN10300_IOCLK
+#define MN10300_TSCCLK         MN10300_IOCLK
+
+#ifdef CONFIG_MN10300_RTC
+#define MN10300_TSC_PER_HZ     ((unsigned long)mn10300_tsc_per_HZ)
+#else /* !CONFIG_MN10300_RTC */
+#define MN10300_TSC_PER_HZ     (MN10300_TSCCLK/HZ)
+#endif /* !CONFIG_MN10300_RTC */
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_UNIT_CLOCK_H */
diff --git a/arch/mn10300/unit-asb2305/include/unit/leds.h b/arch/mn10300/unit-asb2305/include/unit/leds.h
new file mode 100644 (file)
index 0000000..bc471f6
--- /dev/null
@@ -0,0 +1,51 @@
+/* ASB2305-specific LEDs
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+#ifndef _ASM_UNIT_LEDS_H
+#define _ASM_UNIT_LEDS_H
+
+#include <asm/pio-regs.h>
+#include <asm/cpu-regs.h>
+#include <asm/exceptions.h>
+
+#define ASB2305_7SEGLEDS       __SYSREG(0xA6F90000, u32)
+
+/* perform a hard reset by driving PIO06 low */
+#define mn10300_unit_hard_reset()              \
+do {                                           \
+       P0OUT &= 0xbf;                          \
+       P0MD = (P0MD & P0MD_6) | P0MD_6_OUT;    \
+} while (0)
+
+/*
+ * use the 7-segment LEDs to indicate states
+ */
+/* indicate double-fault by displaying "db-f" on the LEDs */
+#define mn10300_set_dbfleds                    \
+       mov     0x43077f1d,d0           ;       \
+       mov     d0,(ASB2305_7SEGLEDS)
+
+/* flip the 7-segment LEDs between "Gdb-" and "----" */
+#define mn10300_set_gdbleds(ONOFF)                             \
+do {                                                           \
+       ASB2305_7SEGLEDS = (ONOFF) ? 0x8543077f : 0x7f7f7f7f;   \
+} while (0)
+
+#ifndef __ASSEMBLY__
+extern void peripheral_leds_display_exception(enum exception_code);
+extern void peripheral_leds_led_chase(void);
+extern void peripheral_leds7x4_display_dec(unsigned int, unsigned int);
+extern void peripheral_leds7x4_display_hex(unsigned int, unsigned int);
+extern void peripheral_leds7x4_display_minssecs(unsigned int, unsigned int);
+extern void peripheral_leds7x4_display_rtc(void);
+#endif /* __ASSEMBLY__ */
+
+#endif /* _ASM_UNIT_LEDS_H */
diff --git a/arch/mn10300/unit-asb2305/include/unit/serial.h b/arch/mn10300/unit-asb2305/include/unit/serial.h
new file mode 100644 (file)
index 0000000..3bfc909
--- /dev/null
@@ -0,0 +1,120 @@
+/* ASB2305-specific 8250 serial ports
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UNIT_SERIAL_H
+#define _ASM_UNIT_SERIAL_H
+
+#include <asm/cpu/cpu-regs.h>
+#include <proc/irq.h>
+#include <linux/serial_reg.h>
+
+#define SERIAL_PORT0_BASE_ADDRESS      0xA6FB0000
+#define ASB2305_DEBUG_MCR      __SYSREG(0xA6FB0000 + UART_MCR * 2, u8)
+
+#define SERIAL_IRQ     XIRQ0   /* Dual serial (PC16552)        (Hi) */
+
+/*
+ * dispose of the /dev/ttyS0 serial port
+ */
+#ifndef CONFIG_GDBSTUB_ON_TTYSx
+
+#define SERIAL_PORT_DFNS                                               \
+       {                                                               \
+       .baud_base              = BASE_BAUD,                            \
+       .irq                    = SERIAL_IRQ,                           \
+       .flags                  = STD_COM_FLAGS,                        \
+       .iomem_base             = (u8 *) SERIAL_PORT0_BASE_ADDRESS,     \
+       .iomem_reg_shift        = 2,                                    \
+       .io_type                = SERIAL_IO_MEM,                        \
+       },
+
+#ifndef __ASSEMBLY__
+
+static inline void __debug_to_serial(const char *p, int n)
+{
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#else /* CONFIG_GDBSTUB_ON_TTYSx */
+
+#define SERIAL_PORT_DFNS /* stolen by gdb-stub */
+
+#if defined(CONFIG_GDBSTUB_ON_TTYS0)
+#define GDBPORT_SERIAL_RX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_RX  * 4, u8)
+#define GDBPORT_SERIAL_TX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_TX  * 4, u8)
+#define GDBPORT_SERIAL_DLL     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLL * 4, u8)
+#define GDBPORT_SERIAL_DLM     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLM * 4, u8)
+#define GDBPORT_SERIAL_IER     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IER * 4, u8)
+#define GDBPORT_SERIAL_IIR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IIR * 4, u8)
+#define GDBPORT_SERIAL_FCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_FCR * 4, u8)
+#define GDBPORT_SERIAL_LCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LCR * 4, u8)
+#define GDBPORT_SERIAL_MCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MCR * 4, u8)
+#define GDBPORT_SERIAL_LSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LSR * 4, u8)
+#define GDBPORT_SERIAL_MSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MSR * 4, u8)
+#define GDBPORT_SERIAL_SCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_SCR * 4, u8)
+#define GDBPORT_SERIAL_IRQ     SERIAL_IRQ
+
+#elif defined(CONFIG_GDBSTUB_ON_TTYS1)
+#error The ASB2305 doesnt have a /dev/ttyS1
+#endif
+
+#ifndef __ASSEMBLY__
+
+#define TTYS0_TX       __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_TX  * 4, u8)
+#define TTYS0_MCR      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MCR * 4, u8)
+#define TTYS0_LSR      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LSR * 4, u8)
+#define TTYS0_MSR      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MSR * 4, u8)
+
+#define LSR_WAIT_FOR(STATE)                            \
+do {                                                   \
+       while (!(TTYS0_LSR & UART_LSR_##STATE)) {}      \
+} while (0)
+#define FLOWCTL_WAIT_FOR(LINE)                         \
+do {                                                   \
+       while (!(TTYS0_MSR & UART_MSR_##LINE)) {}       \
+} while (0)
+#define FLOWCTL_CLEAR(LINE)                    \
+do {                                           \
+       TTYS0_MCR &= ~UART_MCR_##LINE;          \
+} while (0)
+#define FLOWCTL_SET(LINE)                      \
+do {                                           \
+       TTYS0_MCR |= UART_MCR_##LINE;           \
+} while (0)
+#define FLOWCTL_QUERY(LINE)    ({ TTYS0_MSR & UART_MSR_##LINE; })
+
+static inline void __debug_to_serial(const char *p, int n)
+{
+       char ch;
+
+       FLOWCTL_SET(DTR);
+
+       for (; n > 0; n--) {
+               LSR_WAIT_FOR(THRE);
+               FLOWCTL_WAIT_FOR(CTS);
+
+               ch = *p++;
+               if (ch == 0x0a) {
+                       TTYS0_TX = 0x0d;
+                       LSR_WAIT_FOR(THRE);
+                       FLOWCTL_WAIT_FOR(CTS);
+               }
+               TTYS0_TX = ch;
+       }
+
+       FLOWCTL_CLEAR(DTR);
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* CONFIG_GDBSTUB_ON_TTYSx */
+
+#endif /* _ASM_UNIT_SERIAL_H */
diff --git a/arch/mn10300/unit-asb2305/include/unit/timex.h b/arch/mn10300/unit-asb2305/include/unit/timex.h
new file mode 100644 (file)
index 0000000..a71c49a
--- /dev/null
@@ -0,0 +1,135 @@
+/* ASB2305 timer specifcations
+ *
+ * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _ASM_UNIT_TIMEX_H
+#define _ASM_UNIT_TIMEX_H
+
+#ifndef __ASSEMBLY__
+#include <linux/irq.h>
+#endif /* __ASSEMBLY__ */
+
+#include <asm/cpu/timer-regs.h>
+#include <unit/clock.h>
+
+/*
+ * jiffies counter specifications
+ */
+
+#define        TMJCBR_MAX              0xffff
+#define        TMJCBC                  TM01BC
+
+#define        TMJCMD                  TM01MD
+#define        TMJCBR                  TM01BR
+#define        TMJCIRQ                 TM1IRQ
+#define        TMJCICR                 TM1ICR
+#define        TMJCICR_LEVEL           GxICR_LEVEL_5
+
+#ifndef __ASSEMBLY__
+
+static inline void startup_jiffies_counter(void)
+{
+       unsigned rate;
+       u16 md, t16;
+
+       /* use as little prescaling as possible to avoid losing accuracy */
+       md = TM0MD_SRC_IOCLK;
+       rate = MN10300_JCCLK / HZ;
+
+       if (rate > TMJCBR_MAX) {
+               md = TM0MD_SRC_IOCLK_8;
+               rate = MN10300_JCCLK / 8 / HZ;
+
+               if (rate > TMJCBR_MAX) {
+                       md = TM0MD_SRC_IOCLK_32;
+                       rate = MN10300_JCCLK / 32 / HZ;
+
+                       if (rate > TMJCBR_MAX)
+                               BUG();
+               }
+       }
+
+       TMJCBR = rate - 1;
+       t16 = TMJCBR;
+
+       TMJCMD =
+               md |
+               TM1MD_SRC_TM0CASCADE << 8 |
+               TM0MD_INIT_COUNTER |
+               TM1MD_INIT_COUNTER << 8;
+
+       TMJCMD =
+               md |
+               TM1MD_SRC_TM0CASCADE << 8 |
+               TM0MD_COUNT_ENABLE |
+               TM1MD_COUNT_ENABLE << 8;
+
+       t16 = TMJCMD;
+
+       TMJCICR |= GxICR_ENABLE | GxICR_DETECT | GxICR_REQUEST;
+       t16 = TMJCICR;
+}
+
+static inline void shutdown_jiffies_counter(void)
+{
+}
+
+#endif /* !__ASSEMBLY__ */
+
+
+/*
+ * timestamp counter specifications
+ */
+
+#define        TMTSCBR_MAX             0xffffffff
+#define        TMTSCBC                 TM45BC
+
+#ifndef __ASSEMBLY__
+
+static inline void startup_timestamp_counter(void)
+{
+       /* set up timer 4 & 5 cascaded as a 32-bit counter to count real time
+        * - count down from 4Gig-1 to 0 and wrap at IOCLK rate
+        */
+       TM45BR = TMTSCBR_MAX;
+
+       TM4MD = TM4MD_SRC_IOCLK;
+       TM4MD |= TM4MD_INIT_COUNTER;
+       TM4MD &= ~TM4MD_INIT_COUNTER;
+       TM4ICR = 0;
+
+       TM5MD = TM5MD_SRC_TM4CASCADE;
+       TM5MD |= TM5MD_INIT_COUNTER;
+       TM5MD &= ~TM5MD_INIT_COUNTER;
+       TM5ICR = 0;
+
+       TM5MD |= TM5MD_COUNT_ENABLE;
+       TM4MD |= TM4MD_COUNT_ENABLE;
+}
+
+static inline void shutdown_timestamp_counter(void)
+{
+       TM4MD = 0;
+       TM5MD = 0;
+}
+
+/*
+ * we use a cascaded pair of 16-bit down-counting timers to count I/O
+ * clock cycles for the purposes of time keeping
+ */
+typedef unsigned long cycles_t;
+
+static inline cycles_t read_timestamp_counter(void)
+{
+       return (cycles_t) TMTSCBC;
+}
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* _ASM_UNIT_TIMEX_H */
index e99dcc9cee1ad072de134f02fe691377b9051df2..d345ff9042d5943853769b581af0301b7ae7936f 100644 (file)
@@ -15,7 +15,7 @@
 #include <asm/processor.h>
 #include <asm/cpu/intctl-regs.h>
 #include <asm/cpu/rtc-regs.h>
-#include <asm/unit/leds.h>
+#include <unit/leds.h>
 
 static const u8 asb2305_led_hex_tbl[16] = {
        0x80, 0xf2, 0x48, 0x60, 0x32, 0x24, 0x04, 0xf0,
index 72812a9439ac0d26ea30f4cf2fc62099efc3735c..1c452cc3f6e99c783dd108df11e80ebabd3af4fc 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/cpu/intctl-regs.h>
 #include <asm/cpu/rtc-regs.h>
 #include <asm/cpu/serial-regs.h>
-#include <asm/unit/serial.h>
+#include <unit/serial.h>
 
 /*
  * initialise some of the unit hardware before gdbstub is set up
index dcb667c4375af26cb873710fde1bd0508ee18b35..2eca5fe0e75b243a71b3f0450ac756d9dea2a1f9 100644 (file)
@@ -82,6 +82,7 @@ config S390
        select USE_GENERIC_SMP_HELPERS if SMP
        select HAVE_SYSCALL_WRAPPERS
        select HAVE_FUNCTION_TRACER
+       select HAVE_DEFAULT_NO_SPIN_MUTEXES
        select HAVE_OPROFILE
        select HAVE_KPROBES
        select HAVE_KRETPROBES
index 81937a5dc77c415a4fc878fd3ed502183677fa6e..2d81af3974a070185ca672eb4bebf246d7eeaaa5 100644 (file)
@@ -151,11 +151,11 @@ extern pte_t *pkmap_page_table;
 
 void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
 void native_set_fixmap(enum fixed_addresses idx,
-                      unsigned long phys, pgprot_t flags);
+                      phys_addr_t phys, pgprot_t flags);
 
 #ifndef CONFIG_PARAVIRT
 static inline void __set_fixmap(enum fixed_addresses idx,
-                               unsigned long phys, pgprot_t flags)
+                               phys_addr_t phys, pgprot_t flags)
 {
        native_set_fixmap(idx, phys, flags);
 }
index 7727aa8b7dda99087ca5ced1046a92046ab7c4d5..378e3691c08c54dd76e060eb468a00e8b61c59f9 100644 (file)
@@ -347,7 +347,7 @@ struct pv_mmu_ops {
        /* Sometimes the physical address is a pfn, and sometimes its
           an mfn.  We can tell which is which from the index. */
        void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
-                          unsigned long phys, pgprot_t flags);
+                          phys_addr_t phys, pgprot_t flags);
 };
 
 struct raw_spinlock;
@@ -1432,7 +1432,7 @@ static inline void arch_leave_lazy_mmu_mode(void)
 void arch_flush_lazy_mmu_mode(void);
 
 static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
-                               unsigned long phys, pgprot_t flags)
+                               phys_addr_t phys, pgprot_t flags)
 {
        pv_mmu_ops.set_fixmap(idx, phys, flags);
 }
index 9d3af380c6bdfc41a847578ae8eb78a0a151bc38..3e3cd3db7a0cb33d583f3214e781396e1aa601e4 100644 (file)
@@ -153,7 +153,8 @@ struct drv_cmd {
        u32 val;
 };
 
-static long do_drv_read(void *_cmd)
+/* Called via smp_call_function_single(), on the target CPU */
+static void do_drv_read(void *_cmd)
 {
        struct drv_cmd *cmd = _cmd;
        u32 h;
@@ -170,10 +171,10 @@ static long do_drv_read(void *_cmd)
        default:
                break;
        }
-       return 0;
 }
 
-static long do_drv_write(void *_cmd)
+/* Called via smp_call_function_many(), on the target CPUs */
+static void do_drv_write(void *_cmd)
 {
        struct drv_cmd *cmd = _cmd;
        u32 lo, hi;
@@ -192,23 +193,18 @@ static long do_drv_write(void *_cmd)
        default:
                break;
        }
-       return 0;
 }
 
 static void drv_read(struct drv_cmd *cmd)
 {
        cmd->val = 0;
 
-       work_on_cpu(cpumask_any(cmd->mask), do_drv_read, cmd);
+       smp_call_function_single(cpumask_any(cmd->mask), do_drv_read, cmd, 1);
 }
 
 static void drv_write(struct drv_cmd *cmd)
 {
-       unsigned int i;
-
-       for_each_cpu(i, cmd->mask) {
-               work_on_cpu(i, do_drv_write, cmd);
-       }
+       smp_call_function_many(cmd->mask, do_drv_write, cmd, 1);
 }
 
 static u32 get_cur_val(const struct cpumask *mask)
@@ -252,15 +248,13 @@ struct perf_pair {
        } aperf, mperf;
 };
 
-
-static long read_measured_perf_ctrs(void *_cur)
+/* Called via smp_call_function_single(), on the target CPU */
+static void read_measured_perf_ctrs(void *_cur)
 {
        struct perf_pair *cur = _cur;
 
        rdmsr(MSR_IA32_APERF, cur->aperf.split.lo, cur->aperf.split.hi);
        rdmsr(MSR_IA32_MPERF, cur->mperf.split.lo, cur->mperf.split.hi);
-
-       return 0;
 }
 
 /*
@@ -283,7 +277,7 @@ static unsigned int get_measured_perf(struct cpufreq_policy *policy,
        unsigned int perf_percent;
        unsigned int retval;
 
-       if (!work_on_cpu(cpu, read_measured_perf_ctrs, &readin))
+       if (smp_call_function_single(cpu, read_measured_perf_ctrs, &cur, 1))
                return 0;
 
        cur.aperf.whole = readin.aperf.whole -
index 5b7c7c8464fe9f9dfeb36310a569b440a2bc5e38..7aa03a5389f53ea635b9d553fac783e879c14535 100644 (file)
@@ -345,7 +345,8 @@ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
        fixmaps_set++;
 }
 
-void native_set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
+void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys,
+                      pgprot_t flags)
 {
        __native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
 }
index db3802fb7b8470082aac4ba2884e6a588bda694d..2a81838a9ab729954b2e575205a576b58a083766 100644 (file)
@@ -1750,7 +1750,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
 }
 #endif /* CONFIG_X86_64 */
 
-static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot)
+static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
 {
        pte_t pte;
 
index 3c7d8942f23b4dd126d1a8e2145adfa0a1ad499b..b0de6312919a82a455f20f8d06dddd8f1b672d80 100644 (file)
@@ -903,7 +903,7 @@ static struct acpi_driver acpi_battery_driver = {
                },
 };
 
-static void acpi_battery_init_async(void *unused, async_cookie_t cookie)
+static void __init acpi_battery_init_async(void *unused, async_cookie_t cookie)
 {
        if (acpi_disabled)
                return;
index 6cccdc3f5220ce58b46bb0a0f2714bb537c5dc6b..4aecf5dc6a93fe546bd80f3a2eba31b84d674567 100644 (file)
@@ -563,7 +563,7 @@ static void ace_fsm_dostate(struct ace_device *ace)
        case ACE_FSM_STATE_IDENTIFY_PREPARE:
                /* Send identify command */
                ace->fsm_task = ACE_TASK_IDENTIFY;
-               ace->data_ptr = &ace->cf_id;
+               ace->data_ptr = ace->cf_id;
                ace->data_count = ACE_BUF_PER_SECTOR;
                ace_out(ace, ACE_SECCNTCMD, ACE_SECCNTCMD_IDENTIFY);
 
@@ -608,8 +608,8 @@ static void ace_fsm_dostate(struct ace_device *ace)
                break;
 
        case ACE_FSM_STATE_IDENTIFY_COMPLETE:
-               ace_fix_driveid(&ace->cf_id[0]);
-               ace_dump_mem(&ace->cf_id, 512); /* Debug: Dump out disk ID */
+               ace_fix_driveid(ace->cf_id);
+               ace_dump_mem(ace->cf_id, 512);  /* Debug: Dump out disk ID */
 
                if (ace->data_result) {
                        /* Error occured, disable the disk */
@@ -622,9 +622,9 @@ static void ace_fsm_dostate(struct ace_device *ace)
 
                        /* Record disk parameters */
                        set_capacity(ace->gd,
-                               ata_id_u32(&ace->cf_id, ATA_ID_LBA_CAPACITY));
+                               ata_id_u32(ace->cf_id, ATA_ID_LBA_CAPACITY));
                        dev_info(ace->dev, "capacity: %i sectors\n",
-                               ata_id_u32(&ace->cf_id, ATA_ID_LBA_CAPACITY));
+                               ata_id_u32(ace->cf_id, ATA_ID_LBA_CAPACITY));
                }
 
                /* We're done, drop to IDLE state and notify waiters */
@@ -923,7 +923,7 @@ static int ace_release(struct gendisk *disk, fmode_t mode)
 static int ace_getgeo(struct block_device *bdev, struct hd_geometry *geo)
 {
        struct ace_device *ace = bdev->bd_disk->private_data;
-       u16 *cf_id = &ace->cf_id[0];
+       u16 *cf_id = ace->cf_id;
 
        dev_dbg(ace->dev, "ace_getgeo()\n");
 
index f68e5f8e23ee9685eebade63ee13f393119570a3..6318f7ddc1d44d95189d6e18fe8b4ee627033349 100644 (file)
@@ -190,7 +190,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
        int completed = 1;
        unsigned long timeout = jiffies + i2c_adap->timeout;
 
-       while (pca_status(adap) != 0xf8) {
+       while ((state = pca_status(adap)) != 0xf8) {
                if (time_before(jiffies, timeout)) {
                        msleep(10);
                } else {
index 94eae5c3cbc7d3417d2273569f89164d45efea5b..a48c8aee0218087691236241c782eac8f918759a 100644 (file)
@@ -604,12 +604,14 @@ comment "Graphics adapter I2C/DDC channel drivers"
        depends on PCI
 
 config I2C_VOODOO3
-       tristate "Voodoo 3"
+       tristate "Voodoo 3 (DEPRECATED)"
        depends on PCI
        select I2C_ALGOBIT
        help
          If you say yes to this option, support will be included for the
-         Voodoo 3 I2C interface.
+         Voodoo 3 I2C interface. This driver is deprecated and you should
+         use the tdfxfb driver instead, which additionally provides
+         framebuffer support.
 
          This driver can also be built as a module.  If so, the module
          will be called i2c-voodoo3.
index b6f3a0de6ca25a869425a84012501cbb44417e4a..85e2e919d1cd86e36e0c07815edf2b098e87ae49 100644 (file)
@@ -716,8 +716,7 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
 
        /* new style driver methods can't mix with legacy ones */
        if (is_newstyle_driver(driver)) {
-               if (driver->attach_adapter || driver->detach_adapter
-                               || driver->detach_client) {
+               if (driver->detach_adapter || driver->detach_client) {
                        printk(KERN_WARNING
                                        "i2c-core: driver [%s] is confused\n",
                                        driver->driver.name);
index 8eda552326e9030db0de6b26eebe46caf39caf48..403d0e4265db1ef9d9163229fae6568a66d032ac 100644 (file)
@@ -20,7 +20,6 @@
  *
  */
 
-#include <linux/version.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/clk.h>
@@ -175,90 +174,6 @@ static void at91_ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
        leave_16bit(chipselect, mode);
 }
 
-static u8 ide_mm_inb(unsigned long port)
-{
-       return readb((void __iomem *) port);
-}
-
-static void ide_mm_outb(u8 value, unsigned long port)
-{
-       writeb(value, (void __iomem *) port);
-}
-
-static void at91_ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-       u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
-
-       if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
-               HIHI = 0xFF;
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
-               ide_mm_outb(tf->hob_feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
-               ide_mm_outb(tf->hob_nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
-               ide_mm_outb(tf->hob_lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
-               ide_mm_outb(tf->hob_lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
-               ide_mm_outb(tf->hob_lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
-               ide_mm_outb(tf->feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
-               ide_mm_outb(tf->nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
-               ide_mm_outb(tf->lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
-               ide_mm_outb(tf->lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
-               ide_mm_outb(tf->lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
-               ide_mm_outb((tf->device & HIHI) | drive->select, io_ports->device_addr);
-}
-
-static void at91_ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-
-       /* be sure we're looking at the low order bits */
-       ide_mm_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
-               tf->error  = ide_mm_inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
-               tf->nsect  = ide_mm_inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
-               tf->lbal   = ide_mm_inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
-               tf->lbam   = ide_mm_inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
-               tf->lbah   = ide_mm_inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
-               tf->device = ide_mm_inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               ide_mm_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = ide_mm_inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = ide_mm_inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = ide_mm_inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = ide_mm_inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = ide_mm_inb(io_ports->lbah_addr);
-       }
-}
-
 static void at91_ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
 {
        struct ide_timing *timing;
@@ -284,8 +199,8 @@ static const struct ide_tp_ops at91_ide_tp_ops = {
        .write_devctl   = ide_write_devctl,
 
        .dev_select     = ide_dev_select,
-       .tf_load        = at91_ide_tf_load,
-       .tf_read        = at91_ide_tf_read,
+       .tf_load        = ide_tf_load,
+       .tf_read        = ide_tf_read,
 
        .input_data     = at91_ide_input_data,
        .output_data    = at91_ide_output_data,
@@ -300,7 +215,7 @@ static const struct ide_port_info at91_ide_port_info __initdata = {
        .tp_ops         = &at91_ide_tp_ops,
        .host_flags     = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE |
                          IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS,
-       .pio_mask       = ATA_PIO5,
+       .pio_mask       = ATA_PIO6,
 };
 
 /*
index afa2af9a362beb9464f69b5d79397481f9b2fbd9..0e2df6755ec9f3b45d540fe85b2ef999efd058ac 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/atarihw.h>
 #include <asm/atariints.h>
 #include <asm/atari_stdma.h>
+#include <asm/ide.h>
 
 #define DRV_NAME "falconide"
 
@@ -67,8 +68,10 @@ static void falconide_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
 {
        unsigned long data_addr = drive->hwif->io_ports.data_addr;
 
-       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS))
-               return insw(data_addr, buf, (len + 1) / 2);
+       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
+               __ide_mm_insw(data_addr, buf, (len + 1) / 2);
+               return;
+       }
 
        raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
 }
@@ -78,8 +81,10 @@ static void falconide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
 {
        unsigned long data_addr = drive->hwif->io_ports.data_addr;
 
-       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS))
-               return outsw(data_addr, buf, (len + 1) / 2);
+       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
+               __ide_mm_outsw(data_addr, buf, (len + 1) / 2);
+               return;
+       }
 
        raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
 }
index 12f436951bffcf9ace9094a727e7bbabe9bd346a..77f79d26b2648acebfd12ae44d396fd6c0481e34 100644 (file)
@@ -318,8 +318,9 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,
 
                /* convert GTF to taskfile */
                memset(&cmd, 0, sizeof(cmd));
-               memcpy(&cmd.tf_array[7], gtf, REGS_PER_GTF);
-               cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+               memcpy(&cmd.tf.feature, gtf, REGS_PER_GTF);
+               cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+               cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
                err = ide_no_data_taskfile(drive, &cmd);
                if (err) {
index 3e43b889dd64ab55422e5b1432831586a21b5cca..7201b176d75b05814665096ab45fe372900fbe99 100644 (file)
@@ -254,16 +254,13 @@ EXPORT_SYMBOL_GPL(ide_cd_get_xferlen);
 
 void ide_read_bcount_and_ireason(ide_drive_t *drive, u16 *bcount, u8 *ireason)
 {
-       struct ide_cmd cmd;
+       struct ide_taskfile tf;
 
-       memset(&cmd, 0, sizeof(cmd));
-       cmd.tf_flags = IDE_TFLAG_IN_LBAH | IDE_TFLAG_IN_LBAM |
-                      IDE_TFLAG_IN_NSECT;
+       drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT |
+                                    IDE_VALID_LBAM | IDE_VALID_LBAH);
 
-       drive->hwif->tp_ops->tf_read(drive, &cmd);
-
-       *bcount = (cmd.tf.lbah << 8) | cmd.tf.lbam;
-       *ireason = cmd.tf.nsect & 3;
+       *bcount = (tf.lbah << 8) | tf.lbam;
+       *ireason = tf.nsect & 3;
 }
 EXPORT_SYMBOL_GPL(ide_read_bcount_and_ireason);
 
@@ -439,12 +436,12 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
        return ide_started;
 }
 
-static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags,
+static void ide_init_packet_cmd(struct ide_cmd *cmd, u8 valid_tf,
                                u16 bcount, u8 dma)
 {
-       cmd->protocol  = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO;
-       cmd->tf_flags |= IDE_TFLAG_OUT_LBAH | IDE_TFLAG_OUT_LBAM |
-                        IDE_TFLAG_OUT_FEATURE | tf_flags;
+       cmd->protocol = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO;
+       cmd->valid.out.tf = IDE_VALID_LBAH | IDE_VALID_LBAM |
+                           IDE_VALID_FEATURE | valid_tf;
        cmd->tf.command = ATA_CMD_PACKET;
        cmd->tf.feature = dma;          /* Use PIO/DMA */
        cmd->tf.lbam    = bcount & 0xff;
@@ -453,14 +450,11 @@ static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags,
 
 static u8 ide_read_ireason(ide_drive_t *drive)
 {
-       struct ide_cmd cmd;
-
-       memset(&cmd, 0, sizeof(cmd));
-       cmd.tf_flags = IDE_TFLAG_IN_NSECT;
+       struct ide_taskfile tf;
 
-       drive->hwif->tp_ops->tf_read(drive, &cmd);
+       drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT);
 
-       return cmd.tf.nsect & 3;
+       return tf.nsect & 3;
 }
 
 static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason)
@@ -588,12 +582,12 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
        ide_expiry_t *expiry = NULL;
        struct request *rq = hwif->rq;
        unsigned int timeout;
-       u32 tf_flags;
        u16 bcount;
+       u8 valid_tf;
        u8 drq_int = !!(drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT);
 
        if (dev_is_idecd(drive)) {
-               tf_flags = IDE_TFLAG_OUT_NSECT | IDE_TFLAG_OUT_LBAL;
+               valid_tf = IDE_VALID_NSECT | IDE_VALID_LBAL;
                bcount = ide_cd_get_xferlen(rq);
                expiry = ide_cd_expiry;
                timeout = ATAPI_WAIT_PC;
@@ -607,7 +601,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
                pc->xferred = 0;
                pc->cur_pos = pc->buf;
 
-               tf_flags = IDE_TFLAG_OUT_DEVICE;
+               valid_tf = IDE_VALID_DEVICE;
                bcount = ((drive->media == ide_tape) ?
                                pc->req_xfer :
                                min(pc->req_xfer, 63 * 1024));
@@ -627,7 +621,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
                                                       : WAIT_TAPE_CMD;
        }
 
-       ide_init_packet_cmd(cmd, tf_flags, bcount, drive->dma);
+       ide_init_packet_cmd(cmd, valid_tf, bcount, drive->dma);
 
        (void)do_rw_taskfile(drive, cmd);
 
index 35729a47f797f3d721b8cb26f0ec820cde9927ae..3aec19d1fdfca2495be987b45437d359d5f09d2c 100644 (file)
@@ -265,35 +265,62 @@ static void ide_cd_complete_failed_rq(ide_drive_t *drive, struct request *rq)
                cdrom_analyze_sense_data(drive, NULL, sense);
 }
 
+
 /*
+ * Allow the drive 5 seconds to recover; some devices will return NOT_READY
+ * while flushing data from cache.
+ *
+ * returns: 0 failed (write timeout expired)
+ *         1 success
+ */
+static int ide_cd_breathe(ide_drive_t *drive, struct request *rq)
+{
+
+       struct cdrom_info *info = drive->driver_data;
+
+       if (!rq->errors)
+               info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
+
+       rq->errors = 1;
+
+       if (time_after(jiffies, info->write_timeout))
+               return 0;
+       else {
+               struct request_queue *q = drive->queue;
+               unsigned long flags;
+
+               /*
+                * take a breather relying on the unplug timer to kick us again
+                */
+
+               spin_lock_irqsave(q->queue_lock, flags);
+               blk_plug_device(q);
+               spin_unlock_irqrestore(q->queue_lock, flags);
+
+               return 1;
+       }
+}
+
+/**
  * Returns:
  * 0: if the request should be continued.
  * 1: if the request will be going through error recovery.
  * 2: if the request should be ended.
  */
-static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
+static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
 {
        ide_hwif_t *hwif = drive->hwif;
        struct request *rq = hwif->rq;
-       int stat, err, sense_key;
-
-       /* check for errors */
-       stat = hwif->tp_ops->read_status(hwif);
-
-       if (stat_ret)
-               *stat_ret = stat;
-
-       if (OK_STAT(stat, good_stat, BAD_R_STAT))
-               return 0;
+       int err, sense_key, do_end_request = 0;
+       u8 quiet = rq->cmd_flags & REQ_QUIET;
 
        /* get the IDE error register */
        err = ide_read_error(drive);
        sense_key = err >> 4;
 
-       ide_debug_log(IDE_DBG_RQ, "stat: 0x%x, good_stat: 0x%x, cmd[0]: 0x%x, "
-                                 "rq->cmd_type: 0x%x, err: 0x%x",
-                                 stat, good_stat, rq->cmd[0], rq->cmd_type,
-                                 err);
+       ide_debug_log(IDE_DBG_RQ, "cmd: 0x%x, rq->cmd_type: 0x%x, err: 0x%x, "
+                                 "stat 0x%x",
+                                 rq->cmd[0], rq->cmd_type, err, stat);
 
        if (blk_sense_request(rq)) {
                /*
@@ -303,151 +330,108 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
                 */
                rq->cmd_flags |= REQ_FAILED;
                return 2;
-       } else if (blk_pc_request(rq) || rq->cmd_type == REQ_TYPE_ATA_PC) {
-               /* All other functions, except for READ. */
+       }
 
-               /*
-                * if we have an error, pass back CHECK_CONDITION as the
-                * scsi status byte
-                */
-               if (blk_pc_request(rq) && !rq->errors)
-                       rq->errors = SAM_STAT_CHECK_CONDITION;
+       /* if we have an error, pass CHECK_CONDITION as the SCSI status byte */
+       if (blk_pc_request(rq) && !rq->errors)
+               rq->errors = SAM_STAT_CHECK_CONDITION;
 
-               /* check for tray open */
-               if (sense_key == NOT_READY) {
-                       cdrom_saw_media_change(drive);
-               } else if (sense_key == UNIT_ATTENTION) {
-                       /* check for media change */
+       if (blk_noretry_request(rq))
+               do_end_request = 1;
+
+       switch (sense_key) {
+       case NOT_READY:
+               if (blk_fs_request(rq) && rq_data_dir(rq) == WRITE) {
+                       if (ide_cd_breathe(drive, rq))
+                               return 1;
+               } else {
                        cdrom_saw_media_change(drive);
-                       return 0;
-               } else if (sense_key == ILLEGAL_REQUEST &&
-                          rq->cmd[0] == GPCMD_START_STOP_UNIT) {
-                       /*
-                        * Don't print error message for this condition--
-                        * SFF8090i indicates that 5/24/00 is the correct
-                        * response to a request to close the tray if the
-                        * drive doesn't have that capability.
-                        * cdrom_log_sense() knows this!
-                        */
-               } else if (!(rq->cmd_flags & REQ_QUIET)) {
-                       /* otherwise, print an error */
-                       ide_dump_status(drive, "packet command error", stat);
+
+                       if (blk_fs_request(rq) && !quiet)
+                               printk(KERN_ERR PFX "%s: tray open\n",
+                                       drive->name);
                }
+               do_end_request = 1;
+               break;
+       case UNIT_ATTENTION:
+               cdrom_saw_media_change(drive);
 
-               rq->cmd_flags |= REQ_FAILED;
+               if (blk_fs_request(rq) == 0)
+                       return 0;
 
                /*
-                * instead of playing games with moving completions around,
-                * remove failed request completely and end it when the
-                * request sense has completed
+                * Arrange to retry the request but be sure to give up if we've
+                * retried too many times.
                 */
-               goto end_request;
-
-       } else if (blk_fs_request(rq)) {
-               int do_end_request = 0;
-
-               /* handle errors from READ and WRITE requests */
-
-               if (blk_noretry_request(rq))
+               if (++rq->errors > ERROR_MAX)
                        do_end_request = 1;
-
-               if (sense_key == NOT_READY) {
-                       /* tray open */
-                       if (rq_data_dir(rq) == READ) {
-                               cdrom_saw_media_change(drive);
-
-                               /* fail the request */
-                               printk(KERN_ERR PFX "%s: tray open\n",
-                                               drive->name);
-                               do_end_request = 1;
-                       } else {
-                               struct cdrom_info *info = drive->driver_data;
-
-                               /*
-                                * Allow the drive 5 seconds to recover, some
-                                * devices will return this error while flushing
-                                * data from cache.
-                                */
-                               if (!rq->errors)
-                                       info->write_timeout = jiffies +
-                                                       ATAPI_WAIT_WRITE_BUSY;
-                               rq->errors = 1;
-                               if (time_after(jiffies, info->write_timeout))
-                                       do_end_request = 1;
-                               else {
-                                       struct request_queue *q = drive->queue;
-                                       unsigned long flags;
-
-                                       /*
-                                        * take a breather relying on the unplug
-                                        * timer to kick us again
-                                        */
-                                       spin_lock_irqsave(q->queue_lock, flags);
-                                       blk_plug_device(q);
-                                       spin_unlock_irqrestore(q->queue_lock, flags);
-
-                                       return 1;
-                               }
-                       }
-               } else if (sense_key == UNIT_ATTENTION) {
-                       /* media change */
-                       cdrom_saw_media_change(drive);
-
-                       /*
-                        * Arrange to retry the request but be sure to give up
-                        * if we've retried too many times.
-                        */
-                       if (++rq->errors > ERROR_MAX)
-                               do_end_request = 1;
-               } else if (sense_key == ILLEGAL_REQUEST ||
-                          sense_key == DATA_PROTECT) {
-                       /*
-                        * No point in retrying after an illegal request or data
-                        * protect error.
-                        */
+               break;
+       case ILLEGAL_REQUEST:
+               /*
+                * Don't print error message for this condition -- SFF8090i
+                * indicates that 5/24/00 is the correct response to a request
+                * to close the tray if the drive doesn't have that capability.
+                *
+                * cdrom_log_sense() knows this!
+                */
+               if (rq->cmd[0] == GPCMD_START_STOP_UNIT)
+                       break;
+               /* fall-through */
+       case DATA_PROTECT:
+               /*
+                * No point in retrying after an illegal request or data
+                * protect error.
+                */
+               if (!quiet)
                        ide_dump_status(drive, "command error", stat);
-                       do_end_request = 1;
-               } else if (sense_key == MEDIUM_ERROR) {
-                       /*
-                        * No point in re-trying a zillion times on a bad
-                        * sector. If we got here the error is not correctable.
-                        */
-                       ide_dump_status(drive, "media error (bad sector)",
+               do_end_request = 1;
+               break;
+       case MEDIUM_ERROR:
+               /*
+                * No point in re-trying a zillion times on a bad sector.
+                * If we got here the error is not correctable.
+                */
+               if (!quiet)
+                       ide_dump_status(drive, "media error "
+                                       "(bad sector)", stat);
+               do_end_request = 1;
+               break;
+       case BLANK_CHECK:
+               /* disk appears blank? */
+               if (!quiet)
+                       ide_dump_status(drive, "media error (blank)",
                                        stat);
-                       do_end_request = 1;
-               } else if (sense_key == BLANK_CHECK) {
-                       /* disk appears blank ?? */
-                       ide_dump_status(drive, "media error (blank)", stat);
-                       do_end_request = 1;
-               } else if ((err & ~ATA_ABORTED) != 0) {
+               do_end_request = 1;
+               break;
+       default:
+               if (blk_fs_request(rq) == 0)
+                       break;
+               if (err & ~ATA_ABORTED) {
                        /* go to the default handler for other errors */
                        ide_error(drive, "cdrom_decode_status", stat);
                        return 1;
-               } else if ((++rq->errors > ERROR_MAX)) {
+               } else if (++rq->errors > ERROR_MAX)
                        /* we've racked up too many retries, abort */
                        do_end_request = 1;
-               }
-
-               /*
-                * End a request through request sense analysis when we have
-                * sense data. We need this in order to perform end of media
-                * processing.
-                */
-               if (do_end_request)
-                       goto end_request;
+       }
 
-               /*
-                * If we got a CHECK_CONDITION status, queue
-                * a request sense command.
-                */
-               if (stat & ATA_ERR)
-                       cdrom_queue_request_sense(drive, NULL, NULL);
-               return 1;
-       } else {
-               blk_dump_rq_flags(rq, PFX "bad rq");
-               return 2;
+       if (blk_fs_request(rq) == 0) {
+               rq->cmd_flags |= REQ_FAILED;
+               do_end_request = 1;
        }
 
+       /*
+        * End a request through request sense analysis when we have sense data.
+        * We need this in order to perform end of media processing.
+        */
+       if (do_end_request)
+               goto end_request;
+
+       /* if we got a CHECK_CONDITION status, queue a request sense command */
+       if (stat & ATA_ERR)
+               cdrom_queue_request_sense(drive, NULL, NULL);
+       return 1;
+
 end_request:
        if (stat & ATA_ERR) {
                struct request_queue *q = drive->queue;
@@ -624,15 +608,14 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
        struct ide_cmd *cmd = &hwif->cmd;
        struct request *rq = hwif->rq;
        ide_expiry_t *expiry = NULL;
-       int dma_error = 0, dma, stat, thislen, uptodate = 0;
+       int dma_error = 0, dma, thislen, uptodate = 0;
        int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc, nsectors;
        int sense = blk_sense_request(rq);
        unsigned int timeout;
        u16 len;
-       u8 ireason;
+       u8 ireason, stat;
 
-       ide_debug_log(IDE_DBG_PC, "cmd[0]: 0x%x, write: 0x%x",
-                                 rq->cmd[0], write);
+       ide_debug_log(IDE_DBG_PC, "cmd: 0x%x, write: 0x%x", rq->cmd[0], write);
 
        /* check for errors */
        dma = drive->dma;
@@ -648,11 +631,16 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
                }
        }
 
-       rc = cdrom_decode_status(drive, 0, &stat);
-       if (rc) {
-               if (rc == 2)
-                       goto out_end;
-               return ide_stopped;
+       /* check status */
+       stat = hwif->tp_ops->read_status(hwif);
+
+       if (!OK_STAT(stat, 0, BAD_R_STAT)) {
+               rc = cdrom_decode_status(drive, stat);
+               if (rc) {
+                       if (rc == 2)
+                               goto out_end;
+                       return ide_stopped;
+               }
        }
 
        /* using dma, transfer is complete now */
index c998cf8e971a3f7bfbf70e7e42f40091349619eb..a9fbe2c31210cc1400dc2ce132c74211dbd40642 100644 (file)
@@ -97,35 +97,38 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
        }
 
        memset(&cmd, 0, sizeof(cmd));
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
        if (drive->dev_flags & IDE_DFLAG_LBA) {
                if (lba48) {
                        pr_debug("%s: LBA=0x%012llx\n", drive->name,
                                        (unsigned long long)block);
 
-                       tf->hob_nsect = (nsectors >> 8) & 0xff;
-                       tf->hob_lbal  = (u8)(block >> 24);
-                       if (sizeof(block) != 4) {
-                               tf->hob_lbam = (u8)((u64)block >> 32);
-                               tf->hob_lbah = (u8)((u64)block >> 40);
-                       }
-
                        tf->nsect  = nsectors & 0xff;
                        tf->lbal   = (u8) block;
                        tf->lbam   = (u8)(block >>  8);
                        tf->lbah   = (u8)(block >> 16);
+                       tf->device = ATA_LBA;
 
-                       cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB);
+                       tf = &cmd.hob;
+                       tf->nsect = (nsectors >> 8) & 0xff;
+                       tf->lbal  = (u8)(block >> 24);
+                       if (sizeof(block) != 4) {
+                               tf->lbam = (u8)((u64)block >> 32);
+                               tf->lbah = (u8)((u64)block >> 40);
+                       }
+
+                       cmd.valid.out.hob = IDE_VALID_OUT_HOB;
+                       cmd.valid.in.hob  = IDE_VALID_IN_HOB;
+                       cmd.tf_flags |= IDE_TFLAG_LBA48;
                } else {
                        tf->nsect  = nsectors & 0xff;
                        tf->lbal   = block;
                        tf->lbam   = block >>= 8;
                        tf->lbah   = block >>= 8;
-                       tf->device = (block >> 8) & 0xf;
+                       tf->device = ((block >> 8) & 0xf) | ATA_LBA;
                }
-
-               tf->device |= ATA_LBA;
        } else {
                unsigned int sect, head, cyl, track;
 
@@ -220,15 +223,19 @@ static u64 idedisk_read_native_max_address(ide_drive_t *drive, int lba48)
                tf->command = ATA_CMD_READ_NATIVE_MAX;
        tf->device  = ATA_LBA;
 
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
-       if (lba48)
-               cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB);
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
+       if (lba48) {
+               cmd.valid.out.hob = IDE_VALID_OUT_HOB;
+               cmd.valid.in.hob  = IDE_VALID_IN_HOB;
+               cmd.tf_flags = IDE_TFLAG_LBA48;
+       }
 
        ide_no_data_taskfile(drive, &cmd);
 
        /* if OK, compute maximum address value */
        if (!(tf->status & ATA_ERR))
-               addr = ide_get_lba_addr(tf, lba48) + 1;
+               addr = ide_get_lba_addr(&cmd, lba48) + 1;
 
        return addr;
 }
@@ -250,9 +257,9 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
        tf->lbam     = (addr_req >>= 8) & 0xff;
        tf->lbah     = (addr_req >>= 8) & 0xff;
        if (lba48) {
-               tf->hob_lbal = (addr_req >>= 8) & 0xff;
-               tf->hob_lbam = (addr_req >>= 8) & 0xff;
-               tf->hob_lbah = (addr_req >>= 8) & 0xff;
+               cmd.hob.lbal = (addr_req >>= 8) & 0xff;
+               cmd.hob.lbam = (addr_req >>= 8) & 0xff;
+               cmd.hob.lbah = (addr_req >>= 8) & 0xff;
                tf->command  = ATA_CMD_SET_MAX_EXT;
        } else {
                tf->device   = (addr_req >>= 8) & 0x0f;
@@ -260,15 +267,19 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
        }
        tf->device |= ATA_LBA;
 
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
-       if (lba48)
-               cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB);
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
+       if (lba48) {
+               cmd.valid.out.hob = IDE_VALID_OUT_HOB;
+               cmd.valid.in.hob  = IDE_VALID_IN_HOB;
+               cmd.tf_flags = IDE_TFLAG_LBA48;
+       }
 
        ide_no_data_taskfile(drive, &cmd);
 
        /* if OK, compute maximum address value */
        if (!(tf->status & ATA_ERR))
-               addr_set = ide_get_lba_addr(tf, lba48) + 1;
+               addr_set = ide_get_lba_addr(&cmd, lba48) + 1;
 
        return addr_set;
 }
@@ -395,8 +406,8 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
                cmd->tf.command = ATA_CMD_FLUSH_EXT;
        else
                cmd->tf.command = ATA_CMD_FLUSH;
-       cmd->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE |
-                       IDE_TFLAG_DYN;
+       cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd->tf_flags = IDE_TFLAG_DYN;
        cmd->protocol = ATA_PROT_NODATA;
 
        rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
@@ -457,7 +468,8 @@ static int ide_do_setfeature(ide_drive_t *drive, u8 feature, u8 nsect)
        cmd.tf.feature = feature;
        cmd.tf.nsect   = nsect;
        cmd.tf.command = ATA_CMD_SET_FEATURES;
-       cmd.tf_flags   = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
        return ide_no_data_taskfile(drive, &cmd);
 }
@@ -533,7 +545,8 @@ static int do_idedisk_flushcache(ide_drive_t *drive)
                cmd.tf.command = ATA_CMD_FLUSH_EXT;
        else
                cmd.tf.command = ATA_CMD_FLUSH;
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
        return ide_no_data_taskfile(drive, &cmd);
 }
@@ -715,7 +728,8 @@ static int ide_disk_set_doorlock(ide_drive_t *drive, struct gendisk *disk,
 
        memset(&cmd, 0, sizeof(cmd));
        cmd.tf.command = on ? ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK;
-       cmd.tf_flags   = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
        ret = ide_no_data_taskfile(drive, &cmd);
 
index eaea3bef2073253977282245eb78d440534fa9bf..19f263bf0a9e22bffe02437a5b167c149792f201 100644 (file)
@@ -13,7 +13,8 @@ static int smart_enable(ide_drive_t *drive)
        tf->lbam    = ATA_SMART_LBAM_PASS;
        tf->lbah    = ATA_SMART_LBAH_PASS;
        tf->command = ATA_CMD_SMART;
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
        return ide_no_data_taskfile(drive, &cmd);
 }
@@ -29,7 +30,8 @@ static int get_smart_data(ide_drive_t *drive, u8 *buf, u8 sub_cmd)
        tf->lbam    = ATA_SMART_LBAM_PASS;
        tf->lbah    = ATA_SMART_LBAH_PASS;
        tf->command = ATA_CMD_SMART;
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
        cmd.protocol = ATA_PROT_PIO;
 
        return ide_raw_taskfile(drive, &cmd, buf, 1);
index 16fc46edc32df6390ef7e52d83a06925a25175df..e4cdf78cc3e96a4f05522ba8038610ad7c80759c 100644 (file)
@@ -277,8 +277,6 @@ void ide_dma_start(ide_drive_t *drive)
                dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD);
                outb(dma_cmd | ATA_DMA_START, hwif->dma_base + ATA_DMA_CMD);
        }
-
-       wmb();
 }
 EXPORT_SYMBOL_GPL(ide_dma_start);
 
@@ -286,7 +284,7 @@ EXPORT_SYMBOL_GPL(ide_dma_start);
 int ide_dma_end(ide_drive_t *drive)
 {
        ide_hwif_t *hwif = drive->hwif;
-       u8 dma_stat = 0, dma_cmd = 0, mask;
+       u8 dma_stat = 0, dma_cmd = 0;
 
        /* stop DMA */
        if (hwif->host_flags & IDE_HFLAG_MMIO) {
@@ -304,11 +302,10 @@ int ide_dma_end(ide_drive_t *drive)
        /* clear INTR & ERROR bits */
        ide_dma_sff_write_status(hwif, dma_stat | ATA_DMA_ERR | ATA_DMA_INTR);
 
-       wmb();
+#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
 
        /* verify good DMA status */
-       mask = ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR;
-       if ((dma_stat & mask) != ATA_DMA_INTR)
+       if ((dma_stat & CHECK_DMA_MASK) != ATA_DMA_INTR)
                return 0x10 | dma_stat;
        return 0;
 }
index dac9a6d44963ecbfe7b5b82cc4619bb8f7681c76..c06ebdc4a130b9c609d2074748fdcf0e0077b651 100644 (file)
        (r);                            \
 })
 
-static void mm_outw(u16 d, unsigned long a)
-{
-       __asm__("mov.b %w0,r2h\n\t"
-               "mov.b %x0,r2l\n\t"
-               "mov.w r2,@%1"
-               :
-               :"r"(d),"r"(a)
-               :"er2");
-}
-
-static u16 mm_inw(unsigned long a)
-{
-       register u16 r __asm__("er0");
-       __asm__("mov.w @%1,r2\n\t"
-               "mov.b r2l,%x0\n\t"
-               "mov.b r2h,%w0"
-               :"=r"(r)
-               :"r"(a)
-               :"er2");
-       return r;
-}
-
-static void h8300_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-       u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
-
-       if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
-               HIHI = 0xFF;
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
-               outb(tf->hob_feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
-               outb(tf->hob_nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
-               outb(tf->hob_lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
-               outb(tf->hob_lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
-               outb(tf->hob_lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
-               outb(tf->feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
-               outb(tf->nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
-               outb(tf->lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
-               outb(tf->lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
-               outb(tf->lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
-               outb((tf->device & HIHI) | drive->select,
-                    io_ports->device_addr);
-}
-
-static void h8300_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-
-       /* be sure we're looking at the low order bits */
-       outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
-               tf->error  = inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
-               tf->nsect  = inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
-               tf->lbal   = inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
-               tf->lbam   = inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
-               tf->lbah   = inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
-               tf->device = inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = inb(io_ports->lbah_addr);
-       }
-}
-
 static void mm_outsw(unsigned long addr, void *buf, u32 len)
 {
        unsigned short *bp = (unsigned short *)buf;
@@ -152,8 +55,8 @@ static const struct ide_tp_ops h8300_tp_ops = {
        .write_devctl           = ide_write_devctl,
 
        .dev_select             = ide_dev_select,
-       .tf_load                = h8300_tf_load,
-       .tf_read                = h8300_tf_read,
+       .tf_load                = ide_tf_load,
+       .tf_read                = ide_tf_read,
 
        .input_data             = h8300_input_data,
        .output_data            = h8300_output_data,
index 9cac281d82c485857a6f62d9d346c0d51de6de1e..46721c4545180ec4b8835c1c9be6caad6086f36d 100644 (file)
@@ -85,98 +85,57 @@ void ide_dev_select(ide_drive_t *drive)
 }
 EXPORT_SYMBOL_GPL(ide_dev_select);
 
-void ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
+void ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
 {
        ide_hwif_t *hwif = drive->hwif;
        struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
        void (*tf_outb)(u8 addr, unsigned long port);
        u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
-       u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
 
        if (mmio)
                tf_outb = ide_mm_outb;
        else
                tf_outb = ide_outb;
 
-       if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
-               HIHI = 0xFF;
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
-               tf_outb(tf->hob_feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
-               tf_outb(tf->hob_nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
-               tf_outb(tf->hob_lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
-               tf_outb(tf->hob_lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
-               tf_outb(tf->hob_lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
+       if (valid & IDE_VALID_FEATURE)
                tf_outb(tf->feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
+       if (valid & IDE_VALID_NSECT)
                tf_outb(tf->nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
+       if (valid & IDE_VALID_LBAL)
                tf_outb(tf->lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
+       if (valid & IDE_VALID_LBAM)
                tf_outb(tf->lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
+       if (valid & IDE_VALID_LBAH)
                tf_outb(tf->lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
-               tf_outb((tf->device & HIHI) | drive->select,
-                        io_ports->device_addr);
+       if (valid & IDE_VALID_DEVICE)
+               tf_outb(tf->device, io_ports->device_addr);
 }
 EXPORT_SYMBOL_GPL(ide_tf_load);
 
-void ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
+void ide_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
 {
        ide_hwif_t *hwif = drive->hwif;
        struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-       void (*tf_outb)(u8 addr, unsigned long port);
        u8 (*tf_inb)(unsigned long port);
        u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
 
-       if (mmio) {
-               tf_outb = ide_mm_outb;
+       if (mmio)
                tf_inb  = ide_mm_inb;
-       } else {
-               tf_outb = ide_outb;
+       else
                tf_inb  = ide_inb;
-       }
-
-       /* be sure we're looking at the low order bits */
-       tf_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
 
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
+       if (valid & IDE_VALID_ERROR)
                tf->error  = tf_inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
+       if (valid & IDE_VALID_NSECT)
                tf->nsect  = tf_inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
+       if (valid & IDE_VALID_LBAL)
                tf->lbal   = tf_inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
+       if (valid & IDE_VALID_LBAM)
                tf->lbam   = tf_inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
+       if (valid & IDE_VALID_LBAH)
                tf->lbah   = tf_inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
+       if (valid & IDE_VALID_DEVICE)
                tf->device = tf_inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               tf_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = tf_inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = tf_inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = tf_inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = tf_inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = tf_inb(io_ports->lbah_addr);
-       }
 }
 EXPORT_SYMBOL_GPL(ide_tf_read);
 
index 1deb6d29b1869f27fcce14cb2501dfded416c46f..2ae02b8d7f8e06e7551f352f0336ea8089db97ad 100644 (file)
@@ -86,18 +86,18 @@ void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err)
 
                tp_ops->input_data(drive, cmd, data, 2);
 
-               tf->data = data[0];
-               tf->hob_data = data[1];
+               cmd->tf.data  = data[0];
+               cmd->hob.data = data[1];
        }
 
-       tp_ops->tf_read(drive, cmd);
+       ide_tf_readback(drive, cmd);
 
        if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) &&
            tf_cmd == ATA_CMD_IDLEIMMEDIATE) {
                if (tf->lbal != 0xc4) {
                        printk(KERN_ERR "%s: head unload failed!\n",
                               drive->name);
-                       ide_tf_dump(drive->name, tf);
+                       ide_tf_dump(drive->name, cmd);
                } else
                        drive->dev_flags |= IDE_DFLAG_PARKED;
        }
@@ -205,8 +205,9 @@ static ide_startstop_t ide_disk_special(ide_drive_t *drive)
                return ide_stopped;
        }
 
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE |
-                      IDE_TFLAG_CUSTOM_HANDLER;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
+       cmd.tf_flags = IDE_TFLAG_CUSTOM_HANDLER;
 
        do_rw_taskfile(drive, &cmd);
 
index 770142767437ba5ea390cc2bf04020b998749d64..c1c25ebbaa1fb3ef6abac4bb720946bfd6af90c6 100644 (file)
@@ -141,11 +141,12 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg)
                tf->lbal  = args[1];
                tf->lbam  = 0x4f;
                tf->lbah  = 0xc2;
-               cmd.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_IN_NSECT;
+               cmd.valid.out.tf = IDE_VALID_OUT_TF;
+               cmd.valid.in.tf  = IDE_VALID_NSECT;
        } else {
                tf->nsect = args[1];
-               cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT |
-                              IDE_TFLAG_IN_NSECT;
+               cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT;
+               cmd.valid.in.tf  = IDE_VALID_NSECT;
        }
        tf->command = args[0];
        cmd.protocol = args[3] ? ATA_PROT_PIO : ATA_PROT_NODATA;
@@ -205,14 +206,15 @@ static int ide_task_ioctl(ide_drive_t *drive, unsigned long arg)
                return -EFAULT;
 
        memset(&cmd, 0, sizeof(cmd));
-       memcpy(&cmd.tf_array[7], &args[1], 6);
+       memcpy(&cmd.tf.feature, &args[1], 6);
        cmd.tf.command = args[0];
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
 
        err = ide_no_data_taskfile(drive, &cmd);
 
        args[0] = cmd.tf.command;
-       memcpy(&args[1], &cmd.tf_array[7], 6);
+       memcpy(&args[1], &cmd.tf.feature, 6);
 
        if (copy_to_user(p, args, 7))
                err = -EFAULT;
index 27bb70ddd45929572086b1028d3d6bdb3b56d518..c19a221b1e183e9f9764d8b9ff70efc0c1499f94 100644 (file)
@@ -37,14 +37,11 @@ void SELECT_MASK(ide_drive_t *drive, int mask)
 
 u8 ide_read_error(ide_drive_t *drive)
 {
-       struct ide_cmd cmd;
+       struct ide_taskfile tf;
 
-       memset(&cmd, 0, sizeof(cmd));
-       cmd.tf_flags = IDE_TFLAG_IN_ERROR;
+       drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_ERROR);
 
-       drive->hwif->tp_ops->tf_read(drive, &cmd);
-
-       return cmd.tf.error;
+       return tf.error;
 }
 EXPORT_SYMBOL_GPL(ide_read_error);
 
@@ -312,10 +309,10 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
 {
        ide_hwif_t *hwif = drive->hwif;
        const struct ide_tp_ops *tp_ops = hwif->tp_ops;
+       struct ide_taskfile tf;
        u16 *id = drive->id, i;
        int error = 0;
        u8 stat;
-       struct ide_cmd cmd;
 
 #ifdef CONFIG_BLK_DEV_IDEDMA
        if (hwif->dma_ops)      /* check if host supports DMA */
@@ -347,12 +344,11 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
        udelay(1);
        tp_ops->write_devctl(hwif, ATA_NIEN | ATA_DEVCTL_OBS);
 
-       memset(&cmd, 0, sizeof(cmd));
-       cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT;
-       cmd.tf.feature = SETFEATURES_XFER;
-       cmd.tf.nsect   = speed;
+       memset(&tf, 0, sizeof(tf));
+       tf.feature = SETFEATURES_XFER;
+       tf.nsect   = speed;
 
-       tp_ops->tf_load(drive, &cmd);
+       tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE | IDE_VALID_NSECT);
 
        tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES);
 
index 217b7fdf2b1779f7ea881a140ba6bc84e998cc57..56ff8c46c7d10a4cf0eefa27bd69769ac52c7953 100644 (file)
@@ -49,16 +49,17 @@ static void ide_dump_opcode(ide_drive_t *drive)
                printk(KERN_CONT "0x%02x\n", cmd->tf.command);
 }
 
-u64 ide_get_lba_addr(struct ide_taskfile *tf, int lba48)
+u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48)
 {
+       struct ide_taskfile *tf = &cmd->tf;
        u32 high, low;
 
-       if (lba48)
-               high = (tf->hob_lbah << 16) | (tf->hob_lbam << 8) |
-                       tf->hob_lbal;
-       else
-               high = tf->device & 0xf;
        low  = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
+       if (lba48) {
+               tf = &cmd->hob;
+               high = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
+       } else
+               high = tf->device & 0xf;
 
        return ((u64)high << 24) | low;
 }
@@ -71,17 +72,18 @@ static void ide_dump_sector(ide_drive_t *drive)
        u8 lba48 = !!(drive->dev_flags & IDE_DFLAG_LBA48);
 
        memset(&cmd, 0, sizeof(cmd));
-       if (lba48)
-               cmd.tf_flags = IDE_TFLAG_IN_LBA | IDE_TFLAG_IN_HOB_LBA |
-                               IDE_TFLAG_LBA48;
-       else
-               cmd.tf_flags = IDE_TFLAG_IN_LBA | IDE_TFLAG_IN_DEVICE;
+       if (lba48) {
+               cmd.valid.in.tf  = IDE_VALID_LBA;
+               cmd.valid.in.hob = IDE_VALID_LBA;
+               cmd.tf_flags = IDE_TFLAG_LBA48;
+       } else
+               cmd.valid.in.tf  = IDE_VALID_LBA | IDE_VALID_DEVICE;
 
-       drive->hwif->tp_ops->tf_read(drive, &cmd);
+       ide_tf_readback(drive, &cmd);
 
        if (lba48 || (tf->device & ATA_LBA))
                printk(KERN_CONT ", LBAsect=%llu",
-                       (unsigned long long)ide_get_lba_addr(tf, lba48));
+                       (unsigned long long)ide_get_lba_addr(&cmd, lba48));
        else
                printk(KERN_CONT ", CHS=%d/%d/%d", (tf->lbah << 8) + tf->lbam,
                        tf->device & 0xf, tf->lbal);
index 9490b446519f44a3082543adf966eb523c3a6397..310d03f2b5b793e456305547ffd3d86e036c66ca 100644 (file)
@@ -74,7 +74,8 @@ ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq)
                tf->lbal = 0x4c;
                tf->lbam = 0x4e;
                tf->lbah = 0x55;
-               cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+               cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+               cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
        } else          /* cmd == REQ_UNPARK_HEADS */
                tf->command = ATA_CMD_CHK_POWER;
 
index bb7858ebb7d19b5499e96d6f13330adb86617009..0d8a151c0a01da799d0c68f96b20dc2dbe1928bc 100644 (file)
@@ -163,7 +163,8 @@ ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)
        return ide_stopped;
 
 out_do_tf:
-       cmd->tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd->valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
        cmd->protocol = ATA_PROT_NODATA;
 
        return do_rw_taskfile(drive, cmd);
index d8c1c3e735bb12ea218527c849d5e6b3d4712cae..7f264ed1141b9ebd2e2dacdc933c5994cfbdf618 100644 (file)
@@ -283,13 +283,11 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
         * identify command to be sure of reply
         */
        if (cmd == ATA_CMD_ID_ATAPI) {
-               struct ide_cmd cmd;
+               struct ide_taskfile tf;
 
-               memset(&cmd, 0, sizeof(cmd));
+               memset(&tf, 0, sizeof(tf));
                /* disable DMA & overlap */
-               cmd.tf_flags = IDE_TFLAG_OUT_FEATURE;
-
-               tp_ops->tf_load(drive, &cmd);
+               tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE);
        }
 
        /* ask drive for ID */
@@ -337,14 +335,11 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
 
 static u8 ide_read_device(ide_drive_t *drive)
 {
-       struct ide_cmd cmd;
-
-       memset(&cmd, 0, sizeof(cmd));
-       cmd.tf_flags = IDE_TFLAG_IN_DEVICE;
+       struct ide_taskfile tf;
 
-       drive->hwif->tp_ops->tf_read(drive, &cmd);
+       drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_DEVICE);
 
-       return cmd.tf.device;
+       return tf.device;
 }
 
 /**
@@ -1314,6 +1309,7 @@ struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws)
                host->get_lock     = d->get_lock;
                host->release_lock = d->release_lock;
                host->host_flags = d->host_flags;
+               host->irq_flags = d->irq_flags;
        }
 
        return host;
index 10a88bf3eefa8cfc3bd25dce6ea0f334150af764..3242698832a40c07d02c2dabbd60b338eeb15d69 100644 (file)
@@ -204,8 +204,8 @@ static int set_xfer_rate (ide_drive_t *drive, int arg)
        cmd.tf.command = ATA_CMD_SET_FEATURES;
        cmd.tf.feature = SETFEATURES_XFER;
        cmd.tf.nsect   = (u8)arg;
-       cmd.tf_flags   = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT |
-                        IDE_TFLAG_IN_NSECT;
+       cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT;
+       cmd.valid.in.tf  = IDE_VALID_NSECT;
 
        err = ide_no_data_taskfile(drive, &cmd);
 
index 243421ce40d02ccee63b211f202017782e4d8262..4aa6223c11bea0ee138fec32dfd29fbf7facd30e 100644 (file)
 #include <asm/uaccess.h>
 #include <asm/io.h>
 
-void ide_tf_dump(const char *s, struct ide_taskfile *tf)
+void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd)
+{
+       ide_hwif_t *hwif = drive->hwif;
+       const struct ide_tp_ops *tp_ops = hwif->tp_ops;
+
+       /* Be sure we're looking at the low order bytes */
+       tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
+
+       tp_ops->tf_read(drive, &cmd->tf, cmd->valid.in.tf);
+
+       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
+               tp_ops->write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS);
+
+               tp_ops->tf_read(drive, &cmd->hob, cmd->valid.in.hob);
+       }
+}
+
+void ide_tf_dump(const char *s, struct ide_cmd *cmd)
 {
 #ifdef DEBUG
        printk("%s: tf: feat 0x%02x nsect 0x%02x lbal 0x%02x "
                "lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n",
-               s, tf->feature, tf->nsect, tf->lbal,
-               tf->lbam, tf->lbah, tf->device, tf->command);
-       printk("%s: hob: nsect 0x%02x lbal 0x%02x "
-               "lbam 0x%02x lbah 0x%02x\n",
-               s, tf->hob_nsect, tf->hob_lbal,
-               tf->hob_lbam, tf->hob_lbah);
+              s, cmd->tf.feature, cmd->tf.nsect,
+              cmd->tf.lbal, cmd->tf.lbam, cmd->tf.lbah,
+              cmd->tf.device, cmd->tf.command);
+       printk("%s: hob: nsect 0x%02x lbal 0x%02x lbam 0x%02x lbah 0x%02x\n",
+              s, cmd->hob.nsect, cmd->hob.lbal, cmd->hob.lbam, cmd->hob.lbah);
 #endif
 }
 
@@ -47,7 +63,8 @@ int taskfile_lib_get_identify (ide_drive_t *drive, u8 *buf)
                cmd.tf.command = ATA_CMD_ID_ATA;
        else
                cmd.tf.command = ATA_CMD_ID_ATAPI;
-       cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
+       cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_IN_TF  | IDE_VALID_DEVICE;
        cmd.protocol = ATA_PROT_PIO;
 
        return ide_raw_taskfile(drive, &cmd, buf, 1);
@@ -79,16 +96,27 @@ ide_startstop_t do_rw_taskfile(ide_drive_t *drive, struct ide_cmd *orig_cmd)
        memcpy(cmd, orig_cmd, sizeof(*cmd));
 
        if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) {
-               ide_tf_dump(drive->name, tf);
+               ide_tf_dump(drive->name, cmd);
                tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
                SELECT_MASK(drive, 0);
 
                if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) {
-                       u8 data[2] = { tf->data, tf->hob_data };
+                       u8 data[2] = { cmd->tf.data, cmd->hob.data };
 
                        tp_ops->output_data(drive, cmd, data, 2);
                }
-               tp_ops->tf_load(drive, cmd);
+
+               if (cmd->valid.out.tf & IDE_VALID_DEVICE) {
+                       u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ?
+                                 0xE0 : 0xEF;
+
+                       if (!(cmd->ftf_flags & IDE_FTFLAG_FLAGGED))
+                               cmd->tf.device &= HIHI;
+                       cmd->tf.device |= drive->select;
+               }
+
+               tp_ops->tf_load(drive, &cmd->hob, cmd->valid.out.hob);
+               tp_ops->tf_load(drive, &cmd->tf,  cmd->valid.out.tf);
        }
 
        switch (cmd->protocol) {
@@ -489,16 +517,17 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
 
        memset(&cmd, 0, sizeof(cmd));
 
-       memcpy(&cmd.tf_array[0], req_task->hob_ports,
-              HDIO_DRIVE_HOB_HDR_SIZE - 2);
-       memcpy(&cmd.tf_array[6], req_task->io_ports,
-              HDIO_DRIVE_TASK_HDR_SIZE);
+       memcpy(&cmd.hob, req_task->hob_ports, HDIO_DRIVE_HOB_HDR_SIZE - 2);
+       memcpy(&cmd.tf,  req_task->io_ports,  HDIO_DRIVE_TASK_HDR_SIZE);
 
-       cmd.tf_flags   = IDE_TFLAG_IO_16BIT | IDE_TFLAG_DEVICE |
-                        IDE_TFLAG_IN_TF;
+       cmd.valid.out.tf = IDE_VALID_DEVICE;
+       cmd.valid.in.tf  = IDE_VALID_DEVICE | IDE_VALID_IN_TF;
+       cmd.tf_flags = IDE_TFLAG_IO_16BIT;
 
-       if (drive->dev_flags & IDE_DFLAG_LBA48)
-               cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_IN_HOB);
+       if (drive->dev_flags & IDE_DFLAG_LBA48) {
+               cmd.tf_flags |= IDE_TFLAG_LBA48;
+               cmd.valid.in.hob = IDE_VALID_IN_HOB;
+       }
 
        if (req_task->out_flags.all) {
                cmd.ftf_flags |= IDE_FTFLAG_FLAGGED;
@@ -507,28 +536,28 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
                        cmd.ftf_flags |= IDE_FTFLAG_OUT_DATA;
 
                if (req_task->out_flags.b.nsector_hob)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_HOB_NSECT;
+                       cmd.valid.out.hob |= IDE_VALID_NSECT;
                if (req_task->out_flags.b.sector_hob)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAL;
+                       cmd.valid.out.hob |= IDE_VALID_LBAL;
                if (req_task->out_flags.b.lcyl_hob)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAM;
+                       cmd.valid.out.hob |= IDE_VALID_LBAM;
                if (req_task->out_flags.b.hcyl_hob)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAH;
+                       cmd.valid.out.hob |= IDE_VALID_LBAH;
 
                if (req_task->out_flags.b.error_feature)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_FEATURE;
+                       cmd.valid.out.tf  |= IDE_VALID_FEATURE;
                if (req_task->out_flags.b.nsector)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_NSECT;
+                       cmd.valid.out.tf  |= IDE_VALID_NSECT;
                if (req_task->out_flags.b.sector)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_LBAL;
+                       cmd.valid.out.tf  |= IDE_VALID_LBAL;
                if (req_task->out_flags.b.lcyl)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_LBAM;
+                       cmd.valid.out.tf  |= IDE_VALID_LBAM;
                if (req_task->out_flags.b.hcyl)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_LBAH;
+                       cmd.valid.out.tf  |= IDE_VALID_LBAH;
        } else {
-               cmd.tf_flags |= IDE_TFLAG_OUT_TF;
+               cmd.valid.out.tf |= IDE_VALID_OUT_TF;
                if (cmd.tf_flags & IDE_TFLAG_LBA48)
-                       cmd.tf_flags |= IDE_TFLAG_OUT_HOB;
+                       cmd.valid.out.hob |= IDE_VALID_OUT_HOB;
        }
 
        if (req_task->in_flags.b.data)
@@ -594,7 +623,7 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
        if (req_task->req_cmd == IDE_DRIVE_TASK_NO_DATA)
                nsect = 0;
        else if (!nsect) {
-               nsect = (cmd.tf.hob_nsect << 8) | cmd.tf.nsect;
+               nsect = (cmd.hob.nsect << 8) | cmd.tf.nsect;
 
                if (!nsect) {
                        printk(KERN_ERR "%s: in/out command without data\n",
@@ -606,10 +635,8 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
 
        err = ide_raw_taskfile(drive, &cmd, data_buf, nsect);
 
-       memcpy(req_task->hob_ports, &cmd.tf_array[0],
-              HDIO_DRIVE_HOB_HDR_SIZE - 2);
-       memcpy(req_task->io_ports, &cmd.tf_array[6],
-              HDIO_DRIVE_TASK_HDR_SIZE);
+       memcpy(req_task->hob_ports, &cmd.hob, HDIO_DRIVE_HOB_HDR_SIZE - 2);
+       memcpy(req_task->io_ports,  &cmd.tf,  HDIO_DRIVE_TASK_HDR_SIZE);
 
        if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) &&
            req_task->in_flags.all == 0) {
index 71a39fb3856fee4a742646e76ffd6a5cc84b18b8..95327a2c2422a5c7e86c3bbe9d93a26d38547de7 100644 (file)
@@ -61,41 +61,23 @@ static u8 superio_dma_sff_read_status(ide_hwif_t *hwif)
        return superio_ide_inb(hwif->dma_base + ATA_DMA_STATUS);
 }
 
-static void superio_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
+static void superio_tf_read(ide_drive_t *drive, struct ide_taskfile *tf,
+                           u8 valid)
 {
        struct ide_io_ports *io_ports = &drive->hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
 
-       /* be sure we're looking at the low order bits */
-       outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
+       if (valid & IDE_VALID_ERROR)
                tf->error  = inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
+       if (valid & IDE_VALID_NSECT)
                tf->nsect  = inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
+       if (valid & IDE_VALID_LBAL)
                tf->lbal   = inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
+       if (valid & IDE_VALID_LBAM)
                tf->lbam   = inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
+       if (valid & IDE_VALID_LBAH)
                tf->lbah   = inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
+       if (valid & IDE_VALID_DEVICE)
                tf->device = superio_ide_inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = inb(io_ports->lbah_addr);
-       }
 }
 
 static void ns87415_dev_select(ide_drive_t *drive);
index d007e7f665980e46b49f8ec7e5285a0caa0ac60b..c79346679244228e5671570bea1d335b02cf78c9 100644 (file)
@@ -16,6 +16,8 @@
 #include <linux/blkdev.h>
 #include <linux/ide.h>
 
+#include <asm/ide.h>
+
     /*
      *  Bases of the IDE interfaces
      */
@@ -77,8 +79,10 @@ static void q40ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
 {
        unsigned long data_addr = drive->hwif->io_ports.data_addr;
 
-       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS))
-               return insw(data_addr, buf, (len + 1) / 2);
+       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
+               __ide_mm_insw(data_addr, buf, (len + 1) / 2);
+               return;
+       }
 
        raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
 }
@@ -88,8 +92,10 @@ static void q40ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
 {
        unsigned long data_addr = drive->hwif->io_ports.data_addr;
 
-       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS))
-               return outsw(data_addr, buf, (len + 1) / 2);
+       if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
+               __ide_mm_outsw(data_addr, buf, (len + 1) / 2);
+               return;
+       }
 
        raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
 }
index 6d8dbd9c10bc11e99b28b486d5c74d220d8a9a14..5be41f25204f627e775aa4a962febf98a1cdb560 100644 (file)
@@ -337,7 +337,6 @@ static void scc_dma_start(ide_drive_t *drive)
 
        /* start DMA */
        scc_ide_outb(dma_cmd | 1, hwif->dma_base);
-       wmb();
 }
 
 static int __scc_dma_end(ide_drive_t *drive)
@@ -354,7 +353,6 @@ static int __scc_dma_end(ide_drive_t *drive)
        /* clear the INTR & ERROR bits */
        scc_ide_outb(dma_stat | 6, hwif->dma_base + 4);
        /* verify good DMA status */
-       wmb();
        return (dma_stat & 7) != 4 ? (0x10 | dma_stat) : 0;
 }
 
@@ -647,77 +645,40 @@ static int __devinit init_setup_scc(struct pci_dev *dev,
        return rc;
 }
 
-static void scc_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
+static void scc_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
 {
        struct ide_io_ports *io_ports = &drive->hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-       u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
-
-       if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
-               HIHI = 0xFF;
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
-               scc_ide_outb(tf->hob_feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
-               scc_ide_outb(tf->hob_nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
-               scc_ide_outb(tf->hob_lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
-               scc_ide_outb(tf->hob_lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
-               scc_ide_outb(tf->hob_lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
+
+       if (valid & IDE_VALID_FEATURE)
                scc_ide_outb(tf->feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
+       if (valid & IDE_VALID_NSECT)
                scc_ide_outb(tf->nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
+       if (valid & IDE_VALID_LBAL)
                scc_ide_outb(tf->lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
+       if (valid & IDE_VALID_LBAM)
                scc_ide_outb(tf->lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
+       if (valid & IDE_VALID_LBAH)
                scc_ide_outb(tf->lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
-               scc_ide_outb((tf->device & HIHI) | drive->select,
-                            io_ports->device_addr);
+       if (valid & IDE_VALID_DEVICE)
+               scc_ide_outb(tf->device, io_ports->device_addr);
 }
 
-static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
+static void scc_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
 {
        struct ide_io_ports *io_ports = &drive->hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-
-       /* be sure we're looking at the low order bits */
-       scc_ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
 
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
+       if (valid & IDE_VALID_ERROR)
                tf->error  = scc_ide_inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
+       if (valid & IDE_VALID_NSECT)
                tf->nsect  = scc_ide_inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
+       if (valid & IDE_VALID_LBAL)
                tf->lbal   = scc_ide_inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
+       if (valid & IDE_VALID_LBAM)
                tf->lbam   = scc_ide_inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
+       if (valid & IDE_VALID_LBAH)
                tf->lbah   = scc_ide_inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
+       if (valid & IDE_VALID_DEVICE)
                tf->device = scc_ide_inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               scc_ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = scc_ide_inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = scc_ide_inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = scc_ide_inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = scc_ide_inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = scc_ide_inb(io_ports->lbah_addr);
-       }
 }
 
 static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
index 4cb79c4c2604e2920c435ff1c97ebe3fb236de0d..e33d764e2945339a89544ec045f2f6769fb73474 100644 (file)
@@ -72,91 +72,6 @@ static void tx4938ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
 #ifdef __BIG_ENDIAN
 
 /* custom iops (independent from SWAP_IO_SPACE) */
-static u8 tx4938ide_inb(unsigned long port)
-{
-       return __raw_readb((void __iomem *)port);
-}
-
-static void tx4938ide_outb(u8 value, unsigned long port)
-{
-       __raw_writeb(value, (void __iomem *)port);
-}
-
-static void tx4938ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-       u8 HIHI = cmd->tf_flags & IDE_TFLAG_LBA48 ? 0xE0 : 0xEF;
-
-       if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
-               HIHI = 0xFF;
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
-               tx4938ide_outb(tf->hob_feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
-               tx4938ide_outb(tf->hob_nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
-               tx4938ide_outb(tf->hob_lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
-               tx4938ide_outb(tf->hob_lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
-               tx4938ide_outb(tf->hob_lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
-               tx4938ide_outb(tf->feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
-               tx4938ide_outb(tf->nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
-               tx4938ide_outb(tf->lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
-               tx4938ide_outb(tf->lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
-               tx4938ide_outb(tf->lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
-               tx4938ide_outb((tf->device & HIHI) | drive->select,
-                              io_ports->device_addr);
-}
-
-static void tx4938ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-
-       /* be sure we're looking at the low order bits */
-       tx4938ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
-               tf->error  = tx4938ide_inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
-               tf->nsect  = tx4938ide_inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
-               tf->lbal   = tx4938ide_inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
-               tf->lbam   = tx4938ide_inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
-               tf->lbah   = tx4938ide_inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
-               tf->device = tx4938ide_inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               tx4938ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = tx4938ide_inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = tx4938ide_inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = tx4938ide_inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = tx4938ide_inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = tx4938ide_inb(io_ports->lbah_addr);
-       }
-}
-
 static void tx4938ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
                                void *buf, unsigned int len)
 {
@@ -190,8 +105,8 @@ static const struct ide_tp_ops tx4938ide_tp_ops = {
        .write_devctl           = ide_write_devctl,
 
        .dev_select             = ide_dev_select,
-       .tf_load                = tx4938ide_tf_load,
-       .tf_read                = tx4938ide_tf_read,
+       .tf_load                = ide_tf_load,
+       .tf_read                = ide_tf_read,
 
        .input_data             = tx4938ide_input_data_swap,
        .output_data            = tx4938ide_output_data_swap,
index 0040a9a3e26e81a1ac0712d8f2eb3434f0f6a7fe..564422d239766a97debc65ff45546d0bbfa9095b 100644 (file)
@@ -327,15 +327,15 @@ static int tx4939ide_dma_end(ide_drive_t *drive)
        /* read and clear the INTR & ERROR bits */
        dma_stat = tx4939ide_clear_dma_status(base);
 
-       wmb();
+#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
 
        /* verify good DMA status */
-       if ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) == 0 &&
+       if ((dma_stat & CHECK_DMA_MASK) == 0 &&
            (ctl & (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) ==
            (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST))
                /* INT_IDE lost... bug? */
                return 0;
-       return ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) !=
+       return ((dma_stat & CHECK_DMA_MASK) !=
                ATA_DMA_INTR) ? 0x10 | dma_stat : 0;
 }
 
@@ -434,97 +434,19 @@ static void tx4939ide_tf_load_fixup(ide_drive_t *drive)
        tx4939ide_writew(sysctl, base, TX4939IDE_Sys_Ctl);
 }
 
-#ifdef __BIG_ENDIAN
-
-/* custom iops (independent from SWAP_IO_SPACE) */
-static u8 tx4939ide_inb(unsigned long port)
+static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf,
+                             u8 valid)
 {
-       return __raw_readb((void __iomem *)port);
-}
+       ide_tf_load(drive, tf, valid);
 
-static void tx4939ide_outb(u8 value, unsigned long port)
-{
-       __raw_writeb(value, (void __iomem *)port);
-}
-
-static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-       u8 HIHI = cmd->tf_flags & IDE_TFLAG_LBA48 ? 0xE0 : 0xEF;
-
-       if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
-               HIHI = 0xFF;
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
-               tx4939ide_outb(tf->hob_feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
-               tx4939ide_outb(tf->hob_nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
-               tx4939ide_outb(tf->hob_lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
-               tx4939ide_outb(tf->hob_lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
-               tx4939ide_outb(tf->hob_lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
-               tx4939ide_outb(tf->feature, io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
-               tx4939ide_outb(tf->nsect, io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
-               tx4939ide_outb(tf->lbal, io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
-               tx4939ide_outb(tf->lbam, io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
-               tx4939ide_outb(tf->lbah, io_ports->lbah_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) {
-               tx4939ide_outb((tf->device & HIHI) | drive->select,
-                              io_ports->device_addr);
+       if (valid & IDE_VALID_DEVICE)
                tx4939ide_tf_load_fixup(drive);
-       }
 }
 
-static void tx4939ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_hwif_t *hwif = drive->hwif;
-       struct ide_io_ports *io_ports = &hwif->io_ports;
-       struct ide_taskfile *tf = &cmd->tf;
-
-       /* be sure we're looking at the low order bits */
-       tx4939ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
-               tf->error  = tx4939ide_inb(io_ports->feature_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
-               tf->nsect  = tx4939ide_inb(io_ports->nsect_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
-               tf->lbal   = tx4939ide_inb(io_ports->lbal_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
-               tf->lbam   = tx4939ide_inb(io_ports->lbam_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
-               tf->lbah   = tx4939ide_inb(io_ports->lbah_addr);
-       if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
-               tf->device = tx4939ide_inb(io_ports->device_addr);
-
-       if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               tx4939ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
-
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
-                       tf->hob_error = tx4939ide_inb(io_ports->feature_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
-                       tf->hob_nsect = tx4939ide_inb(io_ports->nsect_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
-                       tf->hob_lbal  = tx4939ide_inb(io_ports->lbal_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
-                       tf->hob_lbam  = tx4939ide_inb(io_ports->lbam_addr);
-               if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
-                       tf->hob_lbah  = tx4939ide_inb(io_ports->lbah_addr);
-       }
-}
+#ifdef __BIG_ENDIAN
 
-static void tx4939ide_input_data_swap(ide_drive_t *drive, struct request *rq,
+/* custom iops (independent from SWAP_IO_SPACE) */
+static void tx4939ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
                                void *buf, unsigned int len)
 {
        unsigned long port = drive->hwif->io_ports.data_addr;
@@ -536,7 +458,7 @@ static void tx4939ide_input_data_swap(ide_drive_t *drive, struct request *rq,
        __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2));
 }
 
-static void tx4939ide_output_data_swap(ide_drive_t *drive, struct request *rq,
+static void tx4939ide_output_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
                                void *buf, unsigned int len)
 {
        unsigned long port = drive->hwif->io_ports.data_addr;
@@ -558,7 +480,7 @@ static const struct ide_tp_ops tx4939ide_tp_ops = {
 
        .dev_select             = ide_dev_select,
        .tf_load                = tx4939ide_tf_load,
-       .tf_read                = tx4939ide_tf_read,
+       .tf_read                = ide_tf_read,
 
        .input_data             = tx4939ide_input_data_swap,
        .output_data            = tx4939ide_output_data_swap,
@@ -566,14 +488,6 @@ static const struct ide_tp_ops tx4939ide_tp_ops = {
 
 #else  /* __LITTLE_ENDIAN */
 
-static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
-{
-       ide_tf_load(drive, cmd);
-
-       if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
-               tx4939ide_tf_load_fixup(drive);
-}
-
 static const struct ide_tp_ops tx4939ide_tp_ops = {
        .exec_command           = ide_exec_command,
        .read_status            = ide_read_status,
index 2a2e50871b4063beb3c3ab8c4ae73ead5797e060..851de83ff455ed31ad2c4f343474dcd84ddefe43 100644 (file)
@@ -297,21 +297,25 @@ static void cma_detach_from_dev(struct rdma_id_private *id_priv)
        id_priv->cma_dev = NULL;
 }
 
-static int cma_set_qkey(struct ib_device *device, u8 port_num,
-                       enum rdma_port_space ps,
-                       struct rdma_dev_addr *dev_addr, u32 *qkey)
+static int cma_set_qkey(struct rdma_id_private *id_priv)
 {
        struct ib_sa_mcmember_rec rec;
        int ret = 0;
 
-       switch (ps) {
+       if (id_priv->qkey)
+               return 0;
+
+       switch (id_priv->id.ps) {
        case RDMA_PS_UDP:
-               *qkey = RDMA_UDP_QKEY;
+               id_priv->qkey = RDMA_UDP_QKEY;
                break;
        case RDMA_PS_IPOIB:
-               ib_addr_get_mgid(dev_addr, &rec.mgid);
-               ret = ib_sa_get_mcmember_rec(device, port_num, &rec.mgid, &rec);
-               *qkey = be32_to_cpu(rec.qkey);
+               ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid);
+               ret = ib_sa_get_mcmember_rec(id_priv->id.device,
+                                            id_priv->id.port_num, &rec.mgid,
+                                            &rec);
+               if (!ret)
+                       id_priv->qkey = be32_to_cpu(rec.qkey);
                break;
        default:
                break;
@@ -341,12 +345,7 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv)
                ret = ib_find_cached_gid(cma_dev->device, &gid,
                                         &id_priv->id.port_num, NULL);
                if (!ret) {
-                       ret = cma_set_qkey(cma_dev->device,
-                                          id_priv->id.port_num,
-                                          id_priv->id.ps, dev_addr,
-                                          &id_priv->qkey);
-                       if (!ret)
-                               cma_attach_to_dev(id_priv, cma_dev);
+                       cma_attach_to_dev(id_priv, cma_dev);
                        break;
                }
        }
@@ -578,6 +577,10 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
        *qp_attr_mask = IB_QP_STATE | IB_QP_PKEY_INDEX | IB_QP_PORT;
 
        if (cma_is_ud_ps(id_priv->id.ps)) {
+               ret = cma_set_qkey(id_priv);
+               if (ret)
+                       return ret;
+
                qp_attr->qkey = id_priv->qkey;
                *qp_attr_mask |= IB_QP_QKEY;
        } else {
@@ -2201,6 +2204,12 @@ static int cma_sidr_rep_handler(struct ib_cm_id *cm_id,
                        event.status = ib_event->param.sidr_rep_rcvd.status;
                        break;
                }
+               ret = cma_set_qkey(id_priv);
+               if (ret) {
+                       event.event = RDMA_CM_EVENT_ADDR_ERROR;
+                       event.status = -EINVAL;
+                       break;
+               }
                if (id_priv->qkey != rep->qkey) {
                        event.event = RDMA_CM_EVENT_UNREACHABLE;
                        event.status = -EINVAL;
@@ -2480,10 +2489,14 @@ static int cma_send_sidr_rep(struct rdma_id_private *id_priv,
                             const void *private_data, int private_data_len)
 {
        struct ib_cm_sidr_rep_param rep;
+       int ret;
 
        memset(&rep, 0, sizeof rep);
        rep.status = status;
        if (status == IB_SIDR_SUCCESS) {
+               ret = cma_set_qkey(id_priv);
+               if (ret)
+                       return ret;
                rep.qp_num = id_priv->qp_num;
                rep.qkey = id_priv->qkey;
        }
@@ -2713,6 +2726,10 @@ static int cma_join_ib_multicast(struct rdma_id_private *id_priv,
                    IB_SA_MCMEMBER_REC_FLOW_LABEL |
                    IB_SA_MCMEMBER_REC_TRAFFIC_CLASS;
 
+       if (id_priv->id.ps == RDMA_PS_IPOIB)
+               comp_mask |= IB_SA_MCMEMBER_REC_RATE |
+                            IB_SA_MCMEMBER_REC_RATE_SELECTOR;
+
        mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device,
                                                id_priv->id.port_num, &rec,
                                                comp_mask, GFP_KERNEL,
index a4a82bff71004a48ce39ce138bac27e683765d21..8d71086f5a1c2b8c0e55bb6168ee0cdb474de520 100644 (file)
@@ -152,7 +152,7 @@ static int cxio_hal_clear_qp_ctx(struct cxio_rdev *rdev_p, u32 qpid)
        sge_cmd = qpid << 8 | 3;
        wqe->sge_cmd = cpu_to_be64(sge_cmd);
        skb->priority = CPL_PRIORITY_CONTROL;
-       return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb));
+       return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
 }
 
 int cxio_create_cq(struct cxio_rdev *rdev_p, struct t3_cq *cq)
@@ -571,7 +571,7 @@ static int cxio_hal_init_ctrl_qp(struct cxio_rdev *rdev_p)
             (unsigned long long) rdev_p->ctrl_qp.dma_addr,
             rdev_p->ctrl_qp.workq, 1 << T3_CTRL_QP_SIZE_LOG2);
        skb->priority = CPL_PRIORITY_CONTROL;
-       return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb));
+       return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
 err:
        kfree_skb(skb);
        return err;
@@ -701,7 +701,7 @@ static int __cxio_tpt_op(struct cxio_rdev *rdev_p, u32 reset_tpt_entry,
        u32 stag_idx;
        u32 wptr;
 
-       if (rdev_p->flags)
+       if (cxio_fatal_error(rdev_p))
                return -EIO;
 
        stag_state = stag_state > 0;
@@ -858,7 +858,7 @@ int cxio_rdma_init(struct cxio_rdev *rdev_p, struct t3_rdma_init_attr *attr)
        wqe->qp_dma_size = cpu_to_be32(attr->qp_dma_size);
        wqe->irs = cpu_to_be32(attr->irs);
        skb->priority = 0;      /* 0=>ToeQ; 1=>CtrlQ */
-       return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb));
+       return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
 }
 
 void cxio_register_ev_cb(cxio_hal_ev_callback_func_t ev_cb)
@@ -1041,9 +1041,9 @@ void cxio_rdev_close(struct cxio_rdev *rdev_p)
                cxio_hal_pblpool_destroy(rdev_p);
                cxio_hal_rqtpool_destroy(rdev_p);
                list_del(&rdev_p->entry);
-               rdev_p->t3cdev_p->ulp = NULL;
                cxio_hal_destroy_ctrl_qp(rdev_p);
                cxio_hal_destroy_resource(rdev_p->rscp);
+               rdev_p->t3cdev_p->ulp = NULL;
        }
 }
 
index 094a66d1480c1dea4e971178b269f22a8287a85b..bfd03bf8be546d4dd05198687187305c9502df43 100644 (file)
@@ -115,6 +115,11 @@ struct cxio_rdev {
 #define        CXIO_ERROR_FATAL        1
 };
 
+static inline int cxio_fatal_error(struct cxio_rdev *rdev_p)
+{
+       return rdev_p->flags & CXIO_ERROR_FATAL;
+}
+
 static inline int cxio_num_stags(struct cxio_rdev *rdev_p)
 {
        return min((int)T3_MAX_NUM_STAG, (int)((rdev_p->rnic_info.tpt_top - rdev_p->rnic_info.tpt_base) >> 5));
@@ -188,6 +193,7 @@ void cxio_count_scqes(struct t3_cq *cq, struct t3_wq *wq, int *count);
 void cxio_flush_hw_cq(struct t3_cq *cq);
 int cxio_poll_cq(struct t3_wq *wq, struct t3_cq *cq, struct t3_cqe *cqe,
                     u8 *cqe_flushed, u64 *cookie, u32 *credit);
+int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb);
 
 #define MOD "iw_cxgb3: "
 #define PDBG(fmt, args...) pr_debug(MOD fmt, ## args)
index 37a4fc264a07a10bc34ff8e7f92b34869153e640..26fc0a4eaa749f91477a711be17710e98dc36ff1 100644 (file)
@@ -165,12 +165,19 @@ static void close_rnic_dev(struct t3cdev *tdev)
 static void iwch_err_handler(struct t3cdev *tdev, u32 status, u32 error)
 {
        struct cxio_rdev *rdev = tdev->ulp;
+       struct iwch_dev *rnicp = rdev_to_iwch_dev(rdev);
+       struct ib_event event;
 
-       if (status == OFFLOAD_STATUS_DOWN)
+       if (status == OFFLOAD_STATUS_DOWN) {
                rdev->flags = CXIO_ERROR_FATAL;
 
-       return;
+               event.device = &rnicp->ibdev;
+               event.event  = IB_EVENT_DEVICE_FATAL;
+               event.element.port_num = 0;
+               ib_dispatch_event(&event);
+       }
 
+       return;
 }
 
 static int __init iwch_init_module(void)
index 3773453b2cf06e02a2cca70fde7c0f13bce710b3..84735506333f3b7b90b392b2fceabdb49d23cdd8 100644 (file)
@@ -117,6 +117,11 @@ static inline struct iwch_dev *to_iwch_dev(struct ib_device *ibdev)
        return container_of(ibdev, struct iwch_dev, ibdev);
 }
 
+static inline struct iwch_dev *rdev_to_iwch_dev(struct cxio_rdev *rdev)
+{
+       return container_of(rdev, struct iwch_dev, rdev);
+}
+
 static inline int t3b_device(const struct iwch_dev *rhp)
 {
        return rhp->rdev.t3cdev_p->type == T3B;
index 8699947aaf6cdfa036295d0b9dfbb49b54a30625..fef3f1ae7225a408aca9cebb03c5aa5dee36db42 100644 (file)
@@ -139,6 +139,38 @@ static void stop_ep_timer(struct iwch_ep *ep)
        put_ep(&ep->com);
 }
 
+int iwch_l2t_send(struct t3cdev *tdev, struct sk_buff *skb, struct l2t_entry *l2e)
+{
+       int     error = 0;
+       struct cxio_rdev *rdev;
+
+       rdev = (struct cxio_rdev *)tdev->ulp;
+       if (cxio_fatal_error(rdev)) {
+               kfree_skb(skb);
+               return -EIO;
+       }
+       error = l2t_send(tdev, skb, l2e);
+       if (error)
+               kfree_skb(skb);
+       return error;
+}
+
+int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb)
+{
+       int     error = 0;
+       struct cxio_rdev *rdev;
+
+       rdev = (struct cxio_rdev *)tdev->ulp;
+       if (cxio_fatal_error(rdev)) {
+               kfree_skb(skb);
+               return -EIO;
+       }
+       error = cxgb3_ofld_send(tdev, skb);
+       if (error)
+               kfree_skb(skb);
+       return error;
+}
+
 static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
 {
        struct cpl_tid_release *req;
@@ -150,7 +182,7 @@ static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
        req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid));
        skb->priority = CPL_PRIORITY_SETUP;
-       cxgb3_ofld_send(tdev, skb);
+       iwch_cxgb3_ofld_send(tdev, skb);
        return;
 }
 
@@ -172,8 +204,7 @@ int iwch_quiesce_tid(struct iwch_ep *ep)
        req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE);
 
        skb->priority = CPL_PRIORITY_DATA;
-       cxgb3_ofld_send(ep->com.tdev, skb);
-       return 0;
+       return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
 }
 
 int iwch_resume_tid(struct iwch_ep *ep)
@@ -194,8 +225,7 @@ int iwch_resume_tid(struct iwch_ep *ep)
        req->val = 0;
 
        skb->priority = CPL_PRIORITY_DATA;
-       cxgb3_ofld_send(ep->com.tdev, skb);
-       return 0;
+       return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
 }
 
 static void set_emss(struct iwch_ep *ep, u16 opt)
@@ -252,18 +282,22 @@ static void *alloc_ep(int size, gfp_t gfp)
 
 void __free_ep(struct kref *kref)
 {
-       struct iwch_ep_common *epc;
-       epc = container_of(kref, struct iwch_ep_common, kref);
-       PDBG("%s ep %p state %s\n", __func__, epc, states[state_read(epc)]);
-       kfree(epc);
+       struct iwch_ep *ep;
+       ep = container_of(container_of(kref, struct iwch_ep_common, kref),
+                         struct iwch_ep, com);
+       PDBG("%s ep %p state %s\n", __func__, ep, states[state_read(&ep->com)]);
+       if (ep->com.flags & RELEASE_RESOURCES) {
+               cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid);
+               dst_release(ep->dst);
+               l2t_release(L2DATA(ep->com.tdev), ep->l2t);
+       }
+       kfree(ep);
 }
 
 static void release_ep_resources(struct iwch_ep *ep)
 {
        PDBG("%s ep %p tid %d\n", __func__, ep, ep->hwtid);
-       cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid);
-       dst_release(ep->dst);
-       l2t_release(L2DATA(ep->com.tdev), ep->l2t);
+       ep->com.flags |= RELEASE_RESOURCES;
        put_ep(&ep->com);
 }
 
@@ -382,7 +416,7 @@ static void abort_arp_failure(struct t3cdev *dev, struct sk_buff *skb)
 
        PDBG("%s t3cdev %p\n", __func__, dev);
        req->cmd = CPL_ABORT_NO_RST;
-       cxgb3_ofld_send(dev, skb);
+       iwch_cxgb3_ofld_send(dev, skb);
 }
 
 static int send_halfclose(struct iwch_ep *ep, gfp_t gfp)
@@ -402,8 +436,7 @@ static int send_halfclose(struct iwch_ep *ep, gfp_t gfp)
        req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_CLOSE_CON));
        req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, ep->hwtid));
-       l2t_send(ep->com.tdev, skb, ep->l2t);
-       return 0;
+       return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
 }
 
 static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp)
@@ -424,8 +457,7 @@ static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp)
        req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ABORT_REQ, ep->hwtid));
        req->cmd = CPL_ABORT_SEND_RST;
-       l2t_send(ep->com.tdev, skb, ep->l2t);
-       return 0;
+       return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
 }
 
 static int send_connect(struct iwch_ep *ep)
@@ -469,8 +501,7 @@ static int send_connect(struct iwch_ep *ep)
        req->opt0l = htonl(opt0l);
        req->params = 0;
        req->opt2 = htonl(opt2);
-       l2t_send(ep->com.tdev, skb, ep->l2t);
-       return 0;
+       return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
 }
 
 static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb)
@@ -527,7 +558,7 @@ static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb)
        req->sndseq = htonl(ep->snd_seq);
        BUG_ON(ep->mpa_skb);
        ep->mpa_skb = skb;
-       l2t_send(ep->com.tdev, skb, ep->l2t);
+       iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
        start_ep_timer(ep);
        state_set(&ep->com, MPA_REQ_SENT);
        return;
@@ -578,8 +609,7 @@ static int send_mpa_reject(struct iwch_ep *ep, const void *pdata, u8 plen)
        req->sndseq = htonl(ep->snd_seq);
        BUG_ON(ep->mpa_skb);
        ep->mpa_skb = skb;
-       l2t_send(ep->com.tdev, skb, ep->l2t);
-       return 0;
+       return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
 }
 
 static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen)
@@ -630,8 +660,7 @@ static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen)
        req->sndseq = htonl(ep->snd_seq);
        ep->mpa_skb = skb;
        state_set(&ep->com, MPA_REP_SENT);
-       l2t_send(ep->com.tdev, skb, ep->l2t);
-       return 0;
+       return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
 }
 
 static int act_establish(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
@@ -795,7 +824,7 @@ static int update_rx_credits(struct iwch_ep *ep, u32 credits)
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid));
        req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1));
        skb->priority = CPL_PRIORITY_ACK;
-       cxgb3_ofld_send(ep->com.tdev, skb);
+       iwch_cxgb3_ofld_send(ep->com.tdev, skb);
        return credits;
 }
 
@@ -1127,8 +1156,8 @@ static int abort_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
         * We get 2 abort replies from the HW.  The first one must
         * be ignored except for scribbling that we need one more.
         */
-       if (!(ep->flags & ABORT_REQ_IN_PROGRESS)) {
-               ep->flags |= ABORT_REQ_IN_PROGRESS;
+       if (!(ep->com.flags & ABORT_REQ_IN_PROGRESS)) {
+               ep->com.flags |= ABORT_REQ_IN_PROGRESS;
                return CPL_RET_BUF_DONE;
        }
 
@@ -1203,8 +1232,7 @@ static int listen_start(struct iwch_listen_ep *ep)
        req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK));
 
        skb->priority = 1;
-       cxgb3_ofld_send(ep->com.tdev, skb);
-       return 0;
+       return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
 }
 
 static int pass_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
@@ -1237,8 +1265,7 @@ static int listen_stop(struct iwch_listen_ep *ep)
        req->cpu_idx = 0;
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid));
        skb->priority = 1;
-       cxgb3_ofld_send(ep->com.tdev, skb);
-       return 0;
+       return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
 }
 
 static int close_listsrv_rpl(struct t3cdev *tdev, struct sk_buff *skb,
@@ -1286,7 +1313,7 @@ static void accept_cr(struct iwch_ep *ep, __be32 peer_ip, struct sk_buff *skb)
        rpl->opt2 = htonl(opt2);
        rpl->rsvd = rpl->opt2;  /* workaround for HW bug */
        skb->priority = CPL_PRIORITY_SETUP;
-       l2t_send(ep->com.tdev, skb, ep->l2t);
+       iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
 
        return;
 }
@@ -1315,7 +1342,7 @@ static void reject_cr(struct t3cdev *tdev, u32 hwtid, __be32 peer_ip,
                rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT);
                rpl->opt2 = 0;
                rpl->rsvd = rpl->opt2;
-               cxgb3_ofld_send(tdev, skb);
+               iwch_cxgb3_ofld_send(tdev, skb);
        }
 }
 
@@ -1534,8 +1561,8 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
         * We get 2 peer aborts from the HW.  The first one must
         * be ignored except for scribbling that we need one more.
         */
-       if (!(ep->flags & PEER_ABORT_IN_PROGRESS)) {
-               ep->flags |= PEER_ABORT_IN_PROGRESS;
+       if (!(ep->com.flags & PEER_ABORT_IN_PROGRESS)) {
+               ep->com.flags |= PEER_ABORT_IN_PROGRESS;
                return CPL_RET_BUF_DONE;
        }
 
@@ -1613,7 +1640,7 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
        rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
        OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid));
        rpl->cmd = CPL_ABORT_NO_RST;
-       cxgb3_ofld_send(ep->com.tdev, rpl_skb);
+       iwch_cxgb3_ofld_send(ep->com.tdev, rpl_skb);
 out:
        if (release)
                release_ep_resources(ep);
@@ -2017,8 +2044,11 @@ int iwch_destroy_listen(struct iw_cm_id *cm_id)
        ep->com.rpl_done = 0;
        ep->com.rpl_err = 0;
        err = listen_stop(ep);
+       if (err)
+               goto done;
        wait_event(ep->com.waitq, ep->com.rpl_done);
        cxgb3_free_stid(ep->com.tdev, ep->stid);
+done:
        err = ep->com.rpl_err;
        cm_id->rem_ref(cm_id);
        put_ep(&ep->com);
@@ -2030,12 +2060,22 @@ int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp)
        int ret=0;
        unsigned long flags;
        int close = 0;
+       int fatal = 0;
+       struct t3cdev *tdev;
+       struct cxio_rdev *rdev;
 
        spin_lock_irqsave(&ep->com.lock, flags);
 
        PDBG("%s ep %p state %s, abrupt %d\n", __func__, ep,
             states[ep->com.state], abrupt);
 
+       tdev = (struct t3cdev *)ep->com.tdev;
+       rdev = (struct cxio_rdev *)tdev->ulp;
+       if (cxio_fatal_error(rdev)) {
+               fatal = 1;
+               close_complete_upcall(ep);
+               ep->com.state = DEAD;
+       }
        switch (ep->com.state) {
        case MPA_REQ_WAIT:
        case MPA_REQ_SENT:
@@ -2075,7 +2115,11 @@ int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp)
                        ret = send_abort(ep, NULL, gfp);
                else
                        ret = send_halfclose(ep, gfp);
+               if (ret)
+                       fatal = 1;
        }
+       if (fatal)
+               release_ep_resources(ep);
        return ret;
 }
 
index d7c7e09f09963c29fcd593175c92db5cfba582a0..43c0aea7eadc8b0b52ac1b8b3df8965c5a20a059 100644 (file)
@@ -147,6 +147,7 @@ enum iwch_ep_state {
 enum iwch_ep_flags {
        PEER_ABORT_IN_PROGRESS  = (1 << 0),
        ABORT_REQ_IN_PROGRESS   = (1 << 1),
+       RELEASE_RESOURCES       = (1 << 2),
 };
 
 struct iwch_ep_common {
@@ -161,6 +162,7 @@ struct iwch_ep_common {
        wait_queue_head_t waitq;
        int rpl_done;
        int rpl_err;
+       u32 flags;
 };
 
 struct iwch_listen_ep {
@@ -188,7 +190,6 @@ struct iwch_ep {
        u16 plen;
        u32 ird;
        u32 ord;
-       u32 flags;
 };
 
 static inline struct iwch_ep *to_ep(struct iw_cm_id *cm_id)
index c758fbd5847887b6e22e49ade0d0512a0af5592c..2f546a6253300a5d7cc1d505e404272dc86ddc10 100644 (file)
@@ -751,7 +751,7 @@ int iwch_post_zb_read(struct iwch_qp *qhp)
        wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)|
                                                V_FW_RIWR_LEN(flit_cnt));
        skb->priority = CPL_PRIORITY_DATA;
-       return cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
+       return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
 }
 
 /*
@@ -783,7 +783,7 @@ int iwch_post_terminate(struct iwch_qp *qhp, struct respQ_msg_t *rsp_msg)
                         V_FW_RIWR_FLAGS(T3_COMPLETION_FLAG | T3_NOTIFY_FLAG));
        wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid));
        skb->priority = CPL_PRIORITY_DATA;
-       return cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
+       return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
 }
 
 /*
index 2ccb9d31771f9c43fbb4a4fe493174338ef63bd1..ae3d7590346e850c0f5579bea15390c91e8b4764 100644 (file)
@@ -394,8 +394,7 @@ static int mlx4_ib_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
                                       PAGE_SIZE, vma->vm_page_prot))
                        return -EAGAIN;
        } else if (vma->vm_pgoff == 1 && dev->dev->caps.bf_reg_size != 0) {
-               /* FIXME want pgprot_writecombine() for BlueFlame pages */
-               vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+               vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
 
                if (io_remap_pfn_range(vma, vma->vm_start,
                                       to_mucontext(context)->uar.pfn +
index 04b12ad2339013b395933f1b4f0811fed3a90caf..17621de54a9fd91dca0bdccf747a5175e6723985 100644 (file)
@@ -289,8 +289,8 @@ static inline __le32 get_crc_value(struct nes_v4_quad *nes_quad)
 static inline void
 set_wqe_64bit_value(__le32 *wqe_words, u32 index, u64 value)
 {
-       wqe_words[index]     = cpu_to_le32((u32) ((unsigned long)value));
-       wqe_words[index + 1] = cpu_to_le32((u32)(upper_32_bits((unsigned long)value)));
+       wqe_words[index]     = cpu_to_le32((u32) value);
+       wqe_words[index + 1] = cpu_to_le32(upper_32_bits(value));
 }
 
 static inline void
index 52425154acd48f9d4a8e3043d9b10295fe59440a..dbd9a75474e3385052e9c972fb545fe31035583c 100644 (file)
@@ -426,6 +426,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
        if (type == NES_TIMER_TYPE_CLOSE) {
                new_send->timetosend += (HZ/10);
                if (cm_node->recv_entry) {
+                       kfree(new_send);
                        WARN_ON(1);
                        return -EINVAL;
                }
@@ -445,8 +446,8 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
                if (ret != NETDEV_TX_OK) {
                        nes_debug(NES_DBG_CM, "Error sending packet %p "
                                "(jiffies = %lu)\n", new_send, jiffies);
-                       atomic_dec(&new_send->skb->users);
                        new_send->timetosend = jiffies;
+                       ret = NETDEV_TX_OK;
                } else {
                        cm_packets_sent++;
                        if (!send_retrans) {
@@ -630,7 +631,6 @@ static void nes_cm_timer_tick(unsigned long pass)
                                nes_debug(NES_DBG_CM, "rexmit failed for "
                                        "node=%p\n", cm_node);
                                cm_packets_bounced++;
-                               atomic_dec(&send_entry->skb->users);
                                send_entry->retrycount--;
                                nexttimeout = jiffies + NES_SHORT_TIME;
                                settimer = 1;
@@ -666,11 +666,6 @@ static void nes_cm_timer_tick(unsigned long pass)
 
                spin_unlock_irqrestore(&cm_node->retrans_list_lock, flags);
                rem_ref_cm_node(cm_node->cm_core, cm_node);
-               if (ret != NETDEV_TX_OK) {
-                       nes_debug(NES_DBG_CM, "rexmit failed for cm_node=%p\n",
-                               cm_node);
-                       break;
-               }
        }
 
        if (settimer) {
@@ -1262,7 +1257,6 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
                cm_node->nesqp = NULL;
        }
 
-       cm_node->freed = 1;
        kfree(cm_node);
        return 0;
 }
@@ -1999,13 +1993,17 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
                if (loopbackremotelistener == NULL) {
                        create_event(cm_node, NES_CM_EVENT_ABORTED);
                } else {
-                       atomic_inc(&cm_loopbacks);
                        loopback_cm_info = *cm_info;
                        loopback_cm_info.loc_port = cm_info->rem_port;
                        loopback_cm_info.rem_port = cm_info->loc_port;
                        loopback_cm_info.cm_id = loopbackremotelistener->cm_id;
                        loopbackremotenode = make_cm_node(cm_core, nesvnic,
                                &loopback_cm_info, loopbackremotelistener);
+                       if (!loopbackremotenode) {
+                               rem_ref_cm_node(cm_node->cm_core, cm_node);
+                               return NULL;
+                       }
+                       atomic_inc(&cm_loopbacks);
                        loopbackremotenode->loopbackpartner = cm_node;
                        loopbackremotenode->tcp_cntxt.rcv_wscale =
                                NES_CM_DEFAULT_RCV_WND_SCALE;
@@ -2690,6 +2688,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
        struct ib_mr *ibmr = NULL;
        struct ib_phys_buf ibphysbuf;
        struct nes_pd *nespd;
+       u64 tagged_offset;
 
 
 
@@ -2755,10 +2754,11 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
                ibphysbuf.addr = nesqp->ietf_frame_pbase;
                ibphysbuf.size = conn_param->private_data_len +
                                        sizeof(struct ietf_mpa_frame);
+               tagged_offset = (u64)(unsigned long)nesqp->ietf_frame;
                ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd,
                                                &ibphysbuf, 1,
                                                IB_ACCESS_LOCAL_WRITE,
-                                               (u64 *)&nesqp->ietf_frame);
+                                               &tagged_offset);
                if (!ibmr) {
                        nes_debug(NES_DBG_CM, "Unable to register memory region"
                                        "for lSMM for cm_node = %p \n",
@@ -2782,7 +2782,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
                        sizeof(struct ietf_mpa_frame));
                set_wqe_64bit_value(wqe->wqe_words,
                                        NES_IWARP_SQ_WQE_FRAG0_LOW_IDX,
-                                       (u64)nesqp->ietf_frame);
+                                       (u64)(unsigned long)nesqp->ietf_frame);
                wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] =
                        cpu_to_le32(conn_param->private_data_len +
                        sizeof(struct ietf_mpa_frame));
index d5f778202eb7072f6b2edf13d2c0445e20396169..80bba189257176b2814564018ad0db5c664e2108 100644 (file)
@@ -298,7 +298,6 @@ struct nes_cm_node {
        struct nes_vnic           *nesvnic;
        int                       apbvt_set;
        int                       accept_pend;
-       int                     freed;
        struct list_head        timer_entry;
        struct list_head        reset_entry;
        struct nes_qp           *nesqp;
index 52e734042b8e5bd2558be21e724ec54d7348b347..d6fc9ae440624aaae43a8579b1dc275ab50d6143 100644 (file)
@@ -46,6 +46,10 @@ static unsigned int nes_lro_max_aggr = NES_LRO_MAX_AGGR;
 module_param(nes_lro_max_aggr, uint, 0444);
 MODULE_PARM_DESC(nes_lro_max_aggr, "NIC LRO max packet aggregation");
 
+static int wide_ppm_offset;
+module_param(wide_ppm_offset, int, 0644);
+MODULE_PARM_DESC(wide_ppm_offset, "Increase CX4 interface clock ppm offset, 0=100ppm (default), 1=300ppm");
+
 static u32 crit_err_count;
 u32 int_mod_timer_init;
 u32 int_mod_cq_depth_256;
@@ -546,8 +550,11 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
                        msleep(1);
                }
                if (int_cnt > 1) {
+                       u32 sds;
                        spin_lock_irqsave(&nesadapter->phy_lock, flags);
-                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088);
+                       sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
+                       sds |= 0x00000040;
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
                        mh_detected++;
                        reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET);
                        reset_value |= 0x0000003d;
@@ -736,39 +743,49 @@ static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count,
 {
        int i;
        u32 u32temp;
-       u32 serdes_common_control;
+       u32 sds;
 
        if (hw_rev != NE020_REV) {
                /* init serdes 0 */
+               if (wide_ppm_offset && (nesadapter->phy_type[0] == NES_PHY_TYPE_CX4))
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000FFFAA);
+               else
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF);
 
-               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF);
                if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) {
-                       serdes_common_control = nes_read_indexed(nesdev,
-                                       NES_IDX_ETH_SERDES_COMMON_CONTROL0);
-                       serdes_common_control |= 0x000000100;
-                       nes_write_indexed(nesdev,
-                                       NES_IDX_ETH_SERDES_COMMON_CONTROL0,
-                                       serdes_common_control);
-               } else if (!OneG_Mode) {
-                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000);
+                       sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0);
+                       sds |= 0x00000100;
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds);
                }
-               if (((port_count > 1) &&
-                       (nesadapter->phy_type[0] != NES_PHY_TYPE_PUMA_1G)) ||
-                       ((port_count > 2) &&
-                       (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G))) {
-                       /* init serdes 1 */
-                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF);
-                       if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) {
-                               serdes_common_control = nes_read_indexed(nesdev,
-                                       NES_IDX_ETH_SERDES_COMMON_CONTROL1);
-                               serdes_common_control |= 0x000000100;
-                               nes_write_indexed(nesdev,
-                                       NES_IDX_ETH_SERDES_COMMON_CONTROL1,
-                                       serdes_common_control);
-                       } else if (!OneG_Mode) {
-                               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000);
-                       }
+               if (!OneG_Mode)
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000);
+
+               if (port_count < 2)
+                       return 0;
+
+               /* init serdes 1 */
+               switch (nesadapter->phy_type[1]) {
+               case NES_PHY_TYPE_ARGUS:
+               case NES_PHY_TYPE_SFP_D:
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000);
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000);
+                       break;
+               case NES_PHY_TYPE_CX4:
+                       sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
+                       sds &= 0xFFFFFFBF;
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
+                       if (wide_ppm_offset)
+                               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000FFFAA);
+                       else
+                               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF);
+                       break;
+               case NES_PHY_TYPE_PUMA_1G:
+                       sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
+                       sds |= 0x000000100;
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
                }
+               if (!OneG_Mode)
+                       nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000);
        } else {
                /* init serdes 0 */
                nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008);
@@ -1259,203 +1276,162 @@ int nes_init_phy(struct nes_device *nesdev)
 {
        struct nes_adapter *nesadapter = nesdev->nesadapter;
        u32 counter = 0;
-       u32 sds_common_control0;
+       u32 sds;
        u32 mac_index = nesdev->mac_index;
        u32 tx_config = 0;
        u16 phy_data;
        u32 temp_phy_data = 0;
        u32 temp_phy_data2 = 0;
-       u32 i = 0;
+       u8  phy_type = nesadapter->phy_type[mac_index];
+       u8  phy_index = nesadapter->phy_index[mac_index];
 
        if ((nesadapter->OneG_Mode) &&
-           (nesadapter->phy_type[mac_index] != NES_PHY_TYPE_PUMA_1G)) {
+           (phy_type != NES_PHY_TYPE_PUMA_1G)) {
                nes_debug(NES_DBG_PHY, "1G PHY, mac_index = %d.\n", mac_index);
-               if (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_1G) {
-                       printk(PFX "%s: Programming mdc config for 1G\n", __func__);
+               if (phy_type == NES_PHY_TYPE_1G) {
                        tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
                        tx_config &= 0xFFFFFFE3;
                        tx_config |= 0x04;
                        nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
                }
 
-               nes_read_1G_phy_reg(nesdev, 1, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 1 phy address %u = 0x%X.\n",
-                               nesadapter->phy_index[mac_index], phy_data);
-               nes_write_1G_phy_reg(nesdev, 23, nesadapter->phy_index[mac_index], 0xb000);
+               nes_read_1G_phy_reg(nesdev, 1, phy_index, &phy_data);
+               nes_write_1G_phy_reg(nesdev, 23, phy_index, 0xb000);
 
                /* Reset the PHY */
-               nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], 0x8000);
+               nes_write_1G_phy_reg(nesdev, 0, phy_index, 0x8000);
                udelay(100);
                counter = 0;
                do {
-                       nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data);
-                       nes_debug(NES_DBG_PHY, "Phy data from register 0 = 0x%X.\n", phy_data);
-                       if (counter++ > 100) break;
+                       nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
+                       if (counter++ > 100)
+                               break;
                } while (phy_data & 0x8000);
 
                /* Setting no phy loopback */
                phy_data &= 0xbfff;
                phy_data |= 0x1140;
-               nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index],  phy_data);
-               nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0 = 0x%X.\n", phy_data);
-
-               nes_read_1G_phy_reg(nesdev, 0x17, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x17 = 0x%X.\n", phy_data);
-
-               nes_read_1G_phy_reg(nesdev, 0x1e, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x1e = 0x%X.\n", phy_data);
+               nes_write_1G_phy_reg(nesdev, 0, phy_index,  phy_data);
+               nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
+               nes_read_1G_phy_reg(nesdev, 0x17, phy_index, &phy_data);
+               nes_read_1G_phy_reg(nesdev, 0x1e, phy_index, &phy_data);
 
                /* Setting the interrupt mask */
-               nes_read_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x19 = 0x%X.\n", phy_data);
-               nes_write_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], 0xffee);
-
-               nes_read_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x19 = 0x%X.\n", phy_data);
+               nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data);
+               nes_write_1G_phy_reg(nesdev, 0x19, phy_index, 0xffee);
+               nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data);
 
                /* turning on flow control */
-               nes_read_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x4 = 0x%X.\n", phy_data);
-               nes_write_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index],
-                               (phy_data & ~(0x03E0)) | 0xc00);
-               /* nes_write_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index],
-                               phy_data | 0xc00); */
-               nes_read_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x4 = 0x%X.\n", phy_data);
-
-               nes_read_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x9 = 0x%X.\n", phy_data);
-               /* Clear Half duplex */
-               nes_write_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index],
-                               phy_data & ~(0x0100));
-               nes_read_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index], &phy_data);
-               nes_debug(NES_DBG_PHY, "Phy data from register 0x9 = 0x%X.\n", phy_data);
-
-               nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data);
-               nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], phy_data | 0x0300);
-       } else {
-               if ((nesadapter->phy_type[mac_index] == NES_PHY_TYPE_IRIS) ||
-                   (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_ARGUS)) {
-                       /* setup 10G MDIO operation */
-                       tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
-                       tx_config &= 0xFFFFFFE3;
-                       tx_config |= 0x15;
-                       nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
-               }
-               if ((nesadapter->phy_type[mac_index] == NES_PHY_TYPE_ARGUS)) {
-                       nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee);
+               nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data);
+               nes_write_1G_phy_reg(nesdev, 4, phy_index, (phy_data & ~(0x03E0)) | 0xc00);
+               nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data);
 
-                       temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
-                       mdelay(10);
-                       nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee);
-                       temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+               /* Clear Half duplex */
+               nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data);
+               nes_write_1G_phy_reg(nesdev, 9, phy_index, phy_data & ~(0x0100));
+               nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data);
 
-                       /*
-                        * if firmware is already running (like from a
-                        * driver un-load/load, don't do anything.
-                        */
-                       if (temp_phy_data == temp_phy_data2) {
-                               /* configure QT2505 AMCC PHY */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0x0000, 0x8000);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc300, 0x0000);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc302, 0x0044);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc318, 0x0052);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc319, 0x0008);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc31a, 0x0098);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0026, 0x0E00);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0027, 0x0001);
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0028, 0xA528);
+               nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
+               nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data | 0x0300);
 
-                               /*
-                                * remove micro from reset; chip boots from ROM,
-                                * uploads EEPROM f/w image, uC executes f/w
-                                */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc300, 0x0002);
+               return 0;
+       }
 
-                               /*
-                                * wait for heart beat to start to
-                                * know loading is done
-                                */
-                               counter = 0;
-                               do {
-                                       nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee);
-                                       temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
-                                       if (counter++ > 1000) {
-                                               nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from heartbeat check <this is bad!!!> \n");
-                                               break;
-                                       }
-                                       mdelay(100);
-                                       nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee);
-                                       temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
-                               } while ((temp_phy_data2 == temp_phy_data));
+       if ((phy_type == NES_PHY_TYPE_IRIS) ||
+           (phy_type == NES_PHY_TYPE_ARGUS) ||
+           (phy_type == NES_PHY_TYPE_SFP_D)) {
+               /* setup 10G MDIO operation */
+               tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
+               tx_config &= 0xFFFFFFE3;
+               tx_config |= 0x15;
+               nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
+       }
+       if ((phy_type == NES_PHY_TYPE_ARGUS) ||
+           (phy_type == NES_PHY_TYPE_SFP_D)) {
+               /* Check firmware heartbeat */
+               nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
+               temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+               udelay(1500);
+               nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
+               temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+
+               if (temp_phy_data != temp_phy_data2)
+                       return 0;
 
-                               /*
-                                * wait for tracking to start to know
-                                * f/w is good to go
-                                */
-                               counter = 0;
-                               do {
-                                       nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7fd);
-                                       temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
-                                       if (counter++ > 1000) {
-                                               nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from status check <this is bad!!!> \n");
-                                               break;
-                                       }
-                                       mdelay(1000);
-                                       /*
-                                        * nes_debug(NES_DBG_PHY, "AMCC PHY- phy_status not ready yet = 0x%02X\n",
-                                        *                      temp_phy_data);
-                                        */
-                               } while (((temp_phy_data & 0xff) != 0x50) && ((temp_phy_data & 0xff) != 0x70));
-
-                               /* set LOS Control invert RXLOSB_I_PADINV */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd003, 0x0000);
-                               /* set LOS Control to mask of RXLOSB_I */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc314, 0x0042);
-                               /* set LED1 to input mode (LED1 and LED2 share same LED) */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd006, 0x0007);
-                               /* set LED2 to RX link_status and activity */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd007, 0x000A);
-                               /* set LED3 to RX link_status */
-                               nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd008, 0x0009);
+               /* no heartbeat, configure the PHY */
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0x0000, 0x8000);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0000);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052);
+               if (phy_type == NES_PHY_TYPE_ARGUS) {
+                       nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C);
+                       nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0008);
+               } else {
+                       nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x0004);
+                       nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0038);
+               }
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0001);
 
-                               /*
-                                * reset the res-calibration on t2
-                                * serdes; ensures it is stable after
-                                * the amcc phy is stable
-                                */
+               /* setup LEDs */
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009);
 
-                               sds_common_control0  = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0);
-                               sds_common_control0 |= 0x1;
-                               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds_common_control0);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0028, 0xA528);
 
-                               /* release the res-calibration reset */
-                               sds_common_control0 &= 0xfffffffe;
-                               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds_common_control0);
+               /* Bring PHY out of reset */
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0002);
 
-                               i = 0;
-                               while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040)
-                                               && (i++ < 5000)) {
-                                       /* mdelay(1); */
-                               }
+               /* Check for heartbeat */
+               counter = 0;
+               mdelay(690);
+               nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
+               temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+               do {
+                       if (counter++ > 150) {
+                               nes_debug(NES_DBG_PHY, "No PHY heartbeat\n");
+                               break;
+                       }
+                       mdelay(1);
+                       nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
+                       temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+               } while ((temp_phy_data2 == temp_phy_data));
 
-                               /*
-                                * wait for link train done before moving on,
-                                * or will get an interupt storm
-                                */
-                               counter = 0;
-                               do {
-                                       temp_phy_data = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0 +
-                                                               (0x200 * (nesdev->mac_index & 1)));
-                                       if (counter++ > 1000) {
-                                               nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from link train wait <this is bad, link didnt train!!!>\n");
-                                               break;
-                                       }
-                                       mdelay(1);
-                               } while (((temp_phy_data & 0x0f1f0000) != 0x0f0f0000));
+               /* wait for tracking */
+               counter = 0;
+               do {
+                       nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd);
+                       temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+                       if (counter++ > 300) {
+                               nes_debug(NES_DBG_PHY, "PHY did not track\n");
+                               break;
                        }
-               }
+                       mdelay(10);
+               } while (((temp_phy_data & 0xff) != 0x50) && ((temp_phy_data & 0xff) != 0x70));
+
+               /* setup signal integrity */
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd003, 0x0000);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00D, 0x00FE);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00E, 0x0032);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x0002);
+               nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc314, 0x0063);
+
+               /* reset serdes */
+               sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
+                                      mac_index * 0x200);
+               sds |= 0x1;
+               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
+                                 mac_index * 0x200, sds);
+               sds &= 0xfffffffe;
+               nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
+                                 mac_index * 0x200, sds);
+
+               counter = 0;
+               while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040)
+                               && (counter++ < 5000))
+                       ;
        }
        return 0;
 }
@@ -2359,6 +2335,7 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
        u16 temp_phy_data;
        u32 pcs_val  = 0x0f0f0000;
        u32 pcs_mask = 0x0f1f0000;
+       u32 cdr_ctrl;
 
        spin_lock_irqsave(&nesadapter->phy_lock, flags);
        if (nesadapter->mac_sw_state[mac_number] != NES_MAC_SW_IDLE) {
@@ -2473,6 +2450,7 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
                                break;
 
                        case NES_PHY_TYPE_ARGUS:
+                       case NES_PHY_TYPE_SFP_D:
                                /* clear the alarms */
                                nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008);
                                nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001);
@@ -2483,19 +2461,18 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
                                nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004);
                                nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005);
                                /* check link status */
-                               nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 1);
+                               nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003);
                                temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
-                               u32temp = 100;
-                               do {
-                                       nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 1);
 
-                                       phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
-                                       if ((phy_data == temp_phy_data) || (!(--u32temp)))
-                                               break;
-                                       temp_phy_data = phy_data;
-                               } while (1);
+                               nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021);
+                               nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+                               nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021);
+                               phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
+
+                               phy_data = (!temp_phy_data && (phy_data == 0x8000)) ? 0x4 : 0x0;
+
                                nes_debug(NES_DBG_PHY, "%s: Phy data = 0x%04X, link was %s.\n",
-                                       __func__, phy_data, nesadapter->mac_link_down ? "DOWN" : "UP");
+                                       __func__, phy_data, nesadapter->mac_link_down[mac_index] ? "DOWN" : "UP");
                                break;
 
                        case NES_PHY_TYPE_PUMA_1G:
@@ -2511,6 +2488,17 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
                }
 
                if (phy_data & 0x0004) {
+                       if (wide_ppm_offset &&
+                           (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_CX4) &&
+                           (nesadapter->hw_rev != NE020_REV)) {
+                               cdr_ctrl = nes_read_indexed(nesdev,
+                                                           NES_IDX_ETH_SERDES_CDR_CONTROL0 +
+                                                           mac_index * 0x200);
+                               nes_write_indexed(nesdev,
+                                                 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
+                                                 mac_index * 0x200,
+                                                 cdr_ctrl | 0x000F0000);
+                       }
                        nesadapter->mac_link_down[mac_index] = 0;
                        list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) {
                                nes_debug(NES_DBG_PHY, "The Link is UP!!.  linkup was %d\n",
@@ -2525,6 +2513,17 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
                                }
                        }
                } else {
+                       if (wide_ppm_offset &&
+                           (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_CX4) &&
+                           (nesadapter->hw_rev != NE020_REV)) {
+                               cdr_ctrl = nes_read_indexed(nesdev,
+                                                           NES_IDX_ETH_SERDES_CDR_CONTROL0 +
+                                                           mac_index * 0x200);
+                               nes_write_indexed(nesdev,
+                                                 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
+                                                 mac_index * 0x200,
+                                                 cdr_ctrl & 0xFFF0FFFF);
+                       }
                        nesadapter->mac_link_down[mac_index] = 1;
                        list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) {
                                nes_debug(NES_DBG_PHY, "The Link is Down!!. linkup was %d\n",
index f41a8710d2a82f14bf1352b692049a9846920e48..c3654c6383fec427e501bcc3e1b04b574c700d43 100644 (file)
 
 #include <linux/inet_lro.h>
 
+#define NES_PHY_TYPE_CX4       1
 #define NES_PHY_TYPE_1G        2
 #define NES_PHY_TYPE_IRIS      3
 #define NES_PHY_TYPE_ARGUS     4
 #define NES_PHY_TYPE_PUMA_1G   5
 #define NES_PHY_TYPE_PUMA_10G  6
 #define NES_PHY_TYPE_GLADIUS   7
+#define NES_PHY_TYPE_SFP_D     8
 
 #define NES_MULTICAST_PF_MAX 8
 
index ecb1f6fd627693a62f7ef83b7bdcf604ae5866af..c6e6611d3016edd624d8675d1f99c44d4be2ef9f 100644 (file)
@@ -1426,49 +1426,55 @@ static int nes_netdev_get_settings(struct net_device *netdev, struct ethtool_cmd
        struct nes_vnic *nesvnic = netdev_priv(netdev);
        struct nes_device *nesdev = nesvnic->nesdev;
        struct nes_adapter *nesadapter = nesdev->nesadapter;
+       u32 mac_index = nesdev->mac_index;
+       u8 phy_type = nesadapter->phy_type[mac_index];
+       u8 phy_index = nesadapter->phy_index[mac_index];
        u16 phy_data;
 
        et_cmd->duplex = DUPLEX_FULL;
        et_cmd->port   = PORT_MII;
+       et_cmd->maxtxpkt = 511;
+       et_cmd->maxrxpkt = 511;
 
        if (nesadapter->OneG_Mode) {
                et_cmd->speed = SPEED_1000;
-               if (nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_PUMA_1G) {
+               if (phy_type == NES_PHY_TYPE_PUMA_1G) {
                        et_cmd->supported   = SUPPORTED_1000baseT_Full;
                        et_cmd->advertising = ADVERTISED_1000baseT_Full;
                        et_cmd->autoneg     = AUTONEG_DISABLE;
                        et_cmd->transceiver = XCVR_INTERNAL;
-                       et_cmd->phy_address = nesdev->mac_index;
+                       et_cmd->phy_address = mac_index;
                } else {
-                       et_cmd->supported   = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg;
-                       et_cmd->advertising = ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg;
-                       nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[nesdev->mac_index], &phy_data);
+                       et_cmd->supported   = SUPPORTED_1000baseT_Full
+                                           | SUPPORTED_Autoneg;
+                       et_cmd->advertising = ADVERTISED_1000baseT_Full
+                                           | ADVERTISED_Autoneg;
+                       nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
                        if (phy_data & 0x1000)
                                et_cmd->autoneg = AUTONEG_ENABLE;
                        else
                                et_cmd->autoneg = AUTONEG_DISABLE;
                        et_cmd->transceiver = XCVR_EXTERNAL;
-                       et_cmd->phy_address = nesadapter->phy_index[nesdev->mac_index];
+                       et_cmd->phy_address = phy_index;
                }
+               return 0;
+       }
+       if ((phy_type == NES_PHY_TYPE_IRIS) ||
+           (phy_type == NES_PHY_TYPE_ARGUS) ||
+           (phy_type == NES_PHY_TYPE_SFP_D)) {
+               et_cmd->transceiver = XCVR_EXTERNAL;
+               et_cmd->port        = PORT_FIBRE;
+               et_cmd->supported   = SUPPORTED_FIBRE;
+               et_cmd->advertising = ADVERTISED_FIBRE;
+               et_cmd->phy_address = phy_index;
        } else {
-               if ((nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_IRIS) ||
-                   (nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_ARGUS)) {
-                       et_cmd->transceiver = XCVR_EXTERNAL;
-                       et_cmd->port        = PORT_FIBRE;
-                       et_cmd->supported   = SUPPORTED_FIBRE;
-                       et_cmd->advertising = ADVERTISED_FIBRE;
-                       et_cmd->phy_address = nesadapter->phy_index[nesdev->mac_index];
-               } else {
-                       et_cmd->transceiver = XCVR_INTERNAL;
-                       et_cmd->supported   = SUPPORTED_10000baseT_Full;
-                       et_cmd->advertising = ADVERTISED_10000baseT_Full;
-                       et_cmd->phy_address = nesdev->mac_index;
-               }
-               et_cmd->speed = SPEED_10000;
-               et_cmd->autoneg = AUTONEG_DISABLE;
+               et_cmd->transceiver = XCVR_INTERNAL;
+               et_cmd->supported   = SUPPORTED_10000baseT_Full;
+               et_cmd->advertising = ADVERTISED_10000baseT_Full;
+               et_cmd->phy_address = mac_index;
        }
-       et_cmd->maxtxpkt = 511;
-       et_cmd->maxrxpkt = 511;
+       et_cmd->speed = SPEED_10000;
+       et_cmd->autoneg = AUTONEG_DISABLE;
        return 0;
 }
 
index 5a76a5510350b650c8de12c6614c755e45c691e4..4c57f329dd50c630646a15cd7c01e03826d72885 100644 (file)
@@ -70,12 +70,14 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
         */
        if (ppriv->pkey == pkey) {
                result = -ENOTUNIQ;
+               priv = NULL;
                goto err;
        }
 
        list_for_each_entry(priv, &ppriv->child_intfs, list) {
                if (priv->pkey == pkey) {
                        result = -ENOTUNIQ;
+                       priv = NULL;
                        goto err;
                }
        }
@@ -96,7 +98,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
 
        result = ipoib_set_dev_features(priv, ppriv->ca);
        if (result)
-               goto device_init_failed;
+               goto err;
 
        priv->pkey = pkey;
 
@@ -109,7 +111,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
                ipoib_warn(ppriv, "failed to initialize subinterface: "
                           "device %s, port %d",
                           ppriv->ca->name, ppriv->port);
-               goto device_init_failed;
+               goto err;
        }
 
        result = register_netdevice(priv->dev);
@@ -146,19 +148,19 @@ sysfs_failed:
 register_failed:
        ipoib_dev_cleanup(priv->dev);
 
-device_init_failed:
-       free_netdev(priv->dev);
-
 err:
        mutex_unlock(&ppriv->vlan_mutex);
        rtnl_unlock();
+       if (priv)
+               free_netdev(priv->dev);
+
        return result;
 }
 
 int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
 {
        struct ipoib_dev_priv *ppriv, *priv, *tpriv;
-       int ret = -ENOENT;
+       struct net_device *dev = NULL;
 
        if (!capable(CAP_NET_ADMIN))
                return -EPERM;
@@ -172,14 +174,17 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
                        unregister_netdevice(priv->dev);
                        ipoib_dev_cleanup(priv->dev);
                        list_del(&priv->list);
-                       free_netdev(priv->dev);
-
-                       ret = 0;
+                       dev = priv->dev;
                        break;
                }
        }
        mutex_unlock(&ppriv->vlan_mutex);
        rtnl_unlock();
 
-       return ret;
+       if (dev) {
+               free_netdev(dev);
+               return 0;
+       }
+
+       return -ENODEV;
 }
index 102ef4a14c5fea075c40226b3914cffe61f8b2d0..d2109054de858b95402ee7d0489704561d6750a2 100644 (file)
@@ -82,7 +82,7 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
        if (!gpio_is_valid(template->gpio)) {
                printk(KERN_INFO "Skipping unavilable LED gpio %d (%s)\n", 
                                template->gpio, template->name);
-               return;
+               return 0;
        }
 
        ret = gpio_request(template->gpio, template->name);
index 772990415f999d83e57f1214e49ed20b1e3b48d2..68eb4493f991f64d08dc078225dc599380379ccc 100644 (file)
@@ -28,25 +28,12 @@ config DVB_AV7110
          download/extract it, and then copy it to /usr/lib/hotplug/firmware
          or /lib/firmware (depending on configuration of firmware hotplug).
 
-         Say Y if you own such a card and want to use it.
-
-config DVB_AV7110_FIRMWARE
-       bool "Compile AV7110 firmware into the driver"
-       depends on DVB_AV7110 && !STANDALONE
-       default y if DVB_AV7110=y
-       help
-         The AV7110 firmware is normally loaded by the firmware hotplug manager.
-         If you want to compile the firmware into the driver you need to say
-         Y here and provide the correct path of the firmware. You need this
-         option if you want to compile the whole driver statically into the
-         kernel.
+         Alternatively, you can download the file and use the kernel's
+         EXTRA_FIRMWARE configuration option to build it into your
+         kernel image by adding the filename to the EXTRA_FIRMWARE
+         configuration option string.
 
-         All other people say N.
-
-config DVB_AV7110_FIRMWARE_FILE
-       string "Full pathname of av7110 firmware file"
-       depends on DVB_AV7110_FIRMWARE
-       default "/usr/lib/hotplug/firmware/dvb-ttpci-01.fw"
+         Say Y if you own such a card and want to use it.
 
 config DVB_AV7110_OSD
        bool "AV7110 OSD support"
index 71451237294c2c205e396a0c10d23ddb2138f073..8a4d5bb20a5b18d36a5ebaf6697b79f463b62fd1 100644 (file)
@@ -19,12 +19,3 @@ obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
 EXTRA_CFLAGS += -Idrivers/media/common/tuners
-
-hostprogs-y    := fdump
-
-ifeq ($(CONFIG_DVB_AV7110_FIRMWARE),y)
-$(obj)/av7110.o: $(obj)/av7110_firm.h
-
-$(obj)/av7110_firm.h: $(obj)/fdump
-       $(obj)/fdump $(CONFIG_DVB_AV7110_FIRMWARE_FILE) dvb_ttpci_fw $@
-endif
index 4624cee93e749cc6a5c11461ba2a8028f26c281f..d1d959ed37b7947562394af311273e0343aec2c6 100644 (file)
@@ -1518,20 +1518,6 @@ static int check_firmware(struct av7110* av7110)
        return 0;
 }
 
-#ifdef CONFIG_DVB_AV7110_FIRMWARE_FILE
-#include "av7110_firm.h"
-static void put_firmware(struct av7110* av7110)
-{
-       av7110->bin_fw = NULL;
-}
-
-static inline int get_firmware(struct av7110* av7110)
-{
-       av7110->bin_fw = dvb_ttpci_fw;
-       av7110->size_fw = sizeof(dvb_ttpci_fw);
-       return check_firmware(av7110);
-}
-#else
 static void put_firmware(struct av7110* av7110)
 {
        vfree(av7110->bin_fw);
@@ -1580,8 +1566,6 @@ static int get_firmware(struct av7110* av7110)
        release_firmware(fw);
        return ret;
 }
-#endif
-
 
 static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
 {
index 3a3f5279e927287e68e326c1c7d91721ff704335..5e3f88911a1d2503c1a2dfd3e5ea8b2c8275cead 100644 (file)
@@ -198,29 +198,10 @@ static int load_dram(struct av7110 *av7110, u32 *data, int len)
 
 /* we cannot write av7110 DRAM directly, so load a bootloader into
  * the DPRAM which implements a simple boot protocol */
-static u8 bootcode[] = {
-  0xea, 0x00, 0x00, 0x0e, 0xe1, 0xb0, 0xf0, 0x0e, 0xe2, 0x5e, 0xf0, 0x04,
-  0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x08, 0xe2, 0x5e, 0xf0, 0x04,
-  0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, 0x2c, 0x00, 0x00, 0x24,
-  0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x34,
-  0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0x5a, 0x5a, 0x00, 0x1f, 0x15, 0x55,
-  0x00, 0x00, 0x00, 0x09, 0xe5, 0x9f, 0xd0, 0x7c, 0xe5, 0x9f, 0x40, 0x74,
-  0xe3, 0xa0, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x04,
-  0xe5, 0x9f, 0x10, 0x70, 0xe5, 0x9f, 0x20, 0x70, 0xe5, 0x9f, 0x30, 0x64,
-  0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe1, 0x51, 0x00, 0x02,
-  0xda, 0xff, 0xff, 0xfb, 0xe5, 0x9f, 0xf0, 0x50, 0xe1, 0xd4, 0x10, 0xb0,
-  0xe3, 0x51, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xfc, 0xe1, 0xa0, 0x10, 0x0d,
-  0xe5, 0x94, 0x30, 0x04, 0xe1, 0xd4, 0x20, 0xb2, 0xe2, 0x82, 0x20, 0x3f,
-  0xe1, 0xb0, 0x23, 0x22, 0x03, 0xa0, 0x00, 0x02, 0xe1, 0xc4, 0x00, 0xb0,
-  0x0a, 0xff, 0xff, 0xf4, 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0,
-  0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe2, 0x52, 0x20, 0x01,
-  0x1a, 0xff, 0xff, 0xf9, 0xe2, 0x2d, 0xdb, 0x05, 0xea, 0xff, 0xff, 0xec,
-  0x2c, 0x00, 0x03, 0xf8, 0x2c, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x08, 0x00,
-  0x2c, 0x00, 0x00, 0x74, 0x2c, 0x00, 0x00, 0xc0
-};
-
 int av7110_bootarm(struct av7110 *av7110)
 {
+       const struct firmware *fw;
+       const char *fw_name = "av7110/bootcode.bin";
        struct saa7146_dev *dev = av7110->dev;
        u32 ret;
        int i;
@@ -261,7 +242,15 @@ int av7110_bootarm(struct av7110 *av7110)
        //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT);
        //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
 
-       mwdebi(av7110, DEBISWAB, DPRAM_BASE, bootcode, sizeof(bootcode));
+       ret = request_firmware(&fw, fw_name, &dev->pci->dev);
+       if (ret) {
+               printk(KERN_ERR "dvb-ttpci: Failed to load firmware \"%s\"\n",
+                       fw_name);
+               return ret;
+       }
+
+       mwdebi(av7110, DEBISWAB, DPRAM_BASE, fw->data, fw->size);
+       release_firmware(fw);
        iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
 
        if (saa7146_wait_for_debi_done(av7110->dev, 1)) {
@@ -302,7 +291,7 @@ int av7110_bootarm(struct av7110 *av7110)
        av7110->arm_ready = 1;
        return 0;
 }
-
+MODULE_FIRMWARE("av7110/bootcode.bin");
 
 /****************************************************************************
  * DEBI command polling
index ca99e5c1fc8abe142e23a7d93552f26d0a57f1f6..1634aba5cb84693bfde178dba08f5dc32ab3ab91 100644 (file)
@@ -390,7 +390,8 @@ static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val,
 }
 
 /* buffer writes */
-static inline void mwdebi(struct av7110 *av7110, u32 config, int addr, u8 *val, int count)
+static inline void mwdebi(struct av7110 *av7110, u32 config, int addr,
+                         const u8 *val, int count)
 {
        memcpy(av7110->debi_virt, val, count);
        av7110_debiwrite(av7110, config, addr, 0, count);
diff --git a/drivers/media/dvb/ttpci/fdump.c b/drivers/media/dvb/ttpci/fdump.c
deleted file mode 100644 (file)
index c90001d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-int main(int argc, char **argv)
-{
-    unsigned char buf[8];
-    unsigned int i, count, bytes = 0;
-    FILE *fd_in, *fd_out;
-
-    if (argc != 4) {
-       fprintf(stderr, "\n\tusage: %s <ucode.bin> <array_name> <output_name>\n\n", argv[0]);
-       return -1;
-    }
-
-    fd_in = fopen(argv[1], "rb");
-    if (fd_in == NULL) {
-       fprintf(stderr, "firmware file '%s' not found\n", argv[1]);
-       return -1;
-    }
-
-    fd_out = fopen(argv[3], "w+");
-    if (fd_out == NULL) {
-       fprintf(stderr, "cannot create output file '%s'\n", argv[3]);
-       return -1;
-    }
-
-    fprintf(fd_out, "\n#include <asm/types.h>\n\nu8 %s [] = {", argv[2]);
-
-    while ((count = fread(buf, 1, 8, fd_in)) > 0) {
-       fprintf(fd_out, "\n\t");
-       for (i = 0; i < count; i++, bytes++)
-           fprintf(fd_out, "0x%02x, ", buf[i]);
-    }
-
-    fprintf(fd_out, "\n};\n\n");
-
-    fclose(fd_in);
-    fclose(fd_out);
-
-    return 0;
-}
index 7cce3342ef8cd1c6f700dc04747d21364af46065..606aa58afdead9458de5f3de2f19594074936798 100644 (file)
@@ -299,13 +299,14 @@ int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port)
        struct mlx4_cmd_mailbox *mailbox;
        int err;
 
+       if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
+               return 0;
+
        mailbox = mlx4_alloc_cmd_mailbox(dev);
        if (IS_ERR(mailbox))
                return PTR_ERR(mailbox);
 
        memset(mailbox->buf, 0, 256);
-       if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
-               return 0;
 
        ((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port];
        err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_PORT,
index 912308eec8657ed9db7528dff8cb69f37c2f3772..329f890e2903075c23cea798acbb5f79e3f12196 100644 (file)
@@ -369,7 +369,7 @@ static inline void LPD7_SMC_outsw (unsigned char* a, int r,
  * MN10300/AM33 configuration
  */
 
-#include <asm/unit/smc91111.h>
+#include <unit/smc91111.h>
 
 #else
 
index 687dcf2d01542e5aca608399a227aeb9ce4cacc5..5defe5ea5eda64937f605ebd6dceae3d6958c76f 100644 (file)
@@ -1663,7 +1663,7 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha)
 
        /* Load RISC code. */
        risc_address = ha->fwstart;
-       fw_data = (const __le16 *)&fw->data[4];
+       fw_data = (const __le16 *)&fw->data[6];
        risc_code_size = (fw->size - 6) / 2;
 
        for (i = 0; i < risc_code_size; i++) {
@@ -1722,7 +1722,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha)
 
        /* Load RISC code. */
        risc_address = ha->fwstart;
-       fw_data = (const __le16 *)&fw->data[4];
+       fw_data = (const __le16 *)&fw->data[6];
        risc_code_size = (fw->size - 6) / 2;
 
        dprintk(1, "%s: DMA RISC code (%i) words\n",
index 0328fd4006e52436e0fa49fd3e2a2909572b0c10..343e3a35b6a37e0b248ad0195610998b8a3b46e5 100644 (file)
@@ -854,7 +854,7 @@ config SERIAL_IMX_CONSOLE
 
 config SERIAL_UARTLITE
        tristate "Xilinx uartlite serial port support"
-       depends on PPC32
+       depends on PPC32 || MICROBLAZE
        select SERIAL_CORE
        help
          Say Y here if you want to use the Xilinx uartlite serial controller.
@@ -1340,7 +1340,7 @@ config SERIAL_NETX_CONSOLE
 
 config SERIAL_OF_PLATFORM
        tristate "Serial port on Open Firmware platform bus"
-       depends on PPC_OF
+       depends on PPC_OF || MICROBLAZE
        depends on SERIAL_8250 || SERIAL_OF_PLATFORM_NWPSERIAL
        help
          If you have a PowerPC based system that has serial ports
index 63024145215d729703961ee4c27fad4ab1d6226f..5eb8f21da82e28e2efabf46673e185295a3328c1 100644 (file)
@@ -240,8 +240,6 @@ config ORION5X_WATCHDOG
          To compile this driver as a module, choose M here: the
          module will be called orion5x_wdt.
 
-# ARM26 Architecture
-
 # AVR32 Architecture
 
 config AT32AP700X_WDT
index 806b3eb085366a057887c0863936c27b53266d29..7f8c56b14f58e35d33258d3b5ae3ae1217f2e552 100644 (file)
@@ -42,8 +42,6 @@ obj-$(CONFIG_IOP_WATCHDOG) += iop_wdt.o
 obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o
 obj-$(CONFIG_ORION5X_WATCHDOG) += orion5x_wdt.o
 
-# ARM26 Architecture
-
 # AVR32 Architecture
 obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
 
index e35d545892325b15f1b26427bf5475728e8a8504..29e52c237a3b008bfed6d5ca8446ff9c9f50c3d5 100644 (file)
@@ -197,7 +197,7 @@ static struct miscdevice at91wdt_miscdev = {
        .fops           = &at91wdt_fops,
 };
 
-static int __init at91wdt_probe(struct platform_device *pdev)
+static int __devinit at91wdt_probe(struct platform_device *pdev)
 {
        int res;
 
@@ -214,7 +214,7 @@ static int __init at91wdt_probe(struct platform_device *pdev)
        return 0;
 }
 
-static int __exit at91wdt_remove(struct platform_device *pdev)
+static int __devexit at91wdt_remove(struct platform_device *pdev)
 {
        int res;
 
@@ -252,7 +252,7 @@ static int at91wdt_resume(struct platform_device *pdev)
 
 static struct platform_driver at91wdt_driver = {
        .probe          = at91wdt_probe,
-       .remove         = __exit_p(at91wdt_remove),
+       .remove         = __devexit_p(at91wdt_remove),
        .shutdown       = at91wdt_shutdown,
        .suspend        = at91wdt_suspend,
        .resume         = at91wdt_resume,
index 2dbe83570d6513ef1adb906e75f4fc6ab4583163..7ba0b11ec525d2bd84f4ebfe72b4e0e5912ff2b4 100644 (file)
 #define ESB_LOCK_REG    0x68            /* WDT lock register                 */
 
 /* Memory mapped registers */
-#define ESB_TIMER1_REG  BASEADDR + 0x00 /* Timer1 value after each reset     */
-#define ESB_TIMER2_REG  BASEADDR + 0x04 /* Timer2 value after each reset     */
-#define ESB_GINTSR_REG  BASEADDR + 0x08 /* General Interrupt Status Register */
-#define ESB_RELOAD_REG  BASEADDR + 0x0c /* Reload register                   */
+#define ESB_TIMER1_REG (BASEADDR + 0x00)/* Timer1 value after each reset     */
+#define ESB_TIMER2_REG (BASEADDR + 0x04)/* Timer2 value after each reset     */
+#define ESB_GINTSR_REG (BASEADDR + 0x08)/* General Interrupt Status Register */
+#define ESB_RELOAD_REG (BASEADDR + 0x0c)/* Reload register                   */
 
 /* Lock register bits */
 #define ESB_WDT_FUNC    (0x01 << 2)   /* Watchdog functionality            */
@@ -68,6 +68,7 @@
 #define ESB_WDT_INTTYPE (0x11 << 0)   /* Interrupt type on timer1 timeout  */
 
 /* Reload register bits */
+#define ESB_WDT_TIMEOUT (0x01 << 9)    /* Watchdog timed out                */
 #define ESB_WDT_RELOAD  (0x01 << 8)    /* prevent timeout                   */
 
 /* Magic constants */
@@ -87,7 +88,6 @@ static struct platform_device *esb_platform_device;
 /* 30 sec default heartbeat (1 < heartbeat < 2*1023) */
 #define WATCHDOG_HEARTBEAT 30
 static int heartbeat = WATCHDOG_HEARTBEAT;  /* in seconds */
-
 module_param(heartbeat, int, 0);
 MODULE_PARM_DESC(heartbeat,
                "Watchdog heartbeat in seconds. (1<heartbeat<2046, default="
@@ -123,7 +123,7 @@ static int esb_timer_start(void)
        esb_unlock_registers();
        writew(ESB_WDT_RELOAD, ESB_RELOAD_REG);
        /* Enable or Enable + Lock? */
-       val = 0x02 | (nowayout ? 0x01 : 0x00);
+       val = ESB_WDT_ENABLE | (nowayout ? ESB_WDT_LOCK : 0x00);
        pci_write_config_byte(esb_pci, ESB_LOCK_REG, val);
        spin_unlock(&esb_lock);
        return 0;
@@ -143,7 +143,7 @@ static int esb_timer_stop(void)
        spin_unlock(&esb_lock);
 
        /* Returns 0 if the timer was disabled, non-zero otherwise */
-       return (val & 0x01);
+       return val & ESB_WDT_ENABLE;
 }
 
 static void esb_timer_keepalive(void)
@@ -190,18 +190,6 @@ static int esb_timer_set_heartbeat(int time)
        return 0;
 }
 
-static int esb_timer_read(void)
-{
-       u32 count;
-
-       /* This isn't documented, and doesn't take into
-        * acount which stage is running, but it looks
-        * like a 20 bit count down, so we might as well report it.
-        */
-       pci_read_config_dword(esb_pci, 0x64, &count);
-       return (int)count;
-}
-
 /*
  *     /dev/watchdog handling
  */
@@ -282,7 +270,7 @@ static long esb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                                        sizeof(ident)) ? -EFAULT : 0;
 
        case WDIOC_GETSTATUS:
-               return put_user(esb_timer_read(), p);
+               return put_user(0, p);
 
        case WDIOC_GETBOOTSTATUS:
                return put_user(triggered, p);
@@ -362,8 +350,6 @@ MODULE_DEVICE_TABLE(pci, esb_pci_tbl);
 
 static unsigned char __devinit esb_getdevice(void)
 {
-       u8 val1;
-       unsigned short val2;
        /*
         *      Find the PCI device
         */
@@ -371,66 +357,79 @@ static unsigned char __devinit esb_getdevice(void)
        esb_pci = pci_get_device(PCI_VENDOR_ID_INTEL,
                                        PCI_DEVICE_ID_INTEL_ESB_9, NULL);
 
-       if (esb_pci) {
-               if (pci_enable_device(esb_pci)) {
-                       printk(KERN_ERR PFX "failed to enable device\n");
-                       goto err_devput;
-               }
+       if (!esb_pci)
+               return 0;
 
-               if (pci_request_region(esb_pci, 0, ESB_MODULE_NAME)) {
-                       printk(KERN_ERR PFX "failed to request region\n");
-                       goto err_disable;
-               }
+       if (pci_enable_device(esb_pci)) {
+               printk(KERN_ERR PFX "failed to enable device\n");
+               goto err_devput;
+       }
 
-               BASEADDR = pci_ioremap_bar(esb_pci, 0);
-               if (BASEADDR == NULL) {
-                       /* Something's wrong here, BASEADDR has to be set */
-                       printk(KERN_ERR PFX "failed to get BASEADDR\n");
-                       goto err_release;
-               }
+       if (pci_request_region(esb_pci, 0, ESB_MODULE_NAME)) {
+               printk(KERN_ERR PFX "failed to request region\n");
+               goto err_disable;
+       }
 
-               /*
-                * The watchdog has two timers, it can be setup so that the
-                * expiry of timer1 results in an interrupt and the expiry of
-                * timer2 results in a reboot. We set it to not generate
-                * any interrupts as there is not much we can do with it
-                * right now.
-                *
-                * We also enable reboots and set the timer frequency to
-                * the PCI clock divided by 2^15 (approx 1KHz).
-                */
-               pci_write_config_word(esb_pci, ESB_CONFIG_REG, 0x0003);
-
-               /* Check that the WDT isn't already locked */
-               pci_read_config_byte(esb_pci, ESB_LOCK_REG, &val1);
-               if (val1 & ESB_WDT_LOCK)
-                       printk(KERN_WARNING PFX "nowayout already set\n");
-
-               /* Set the timer to watchdog mode and disable it for now */
-               pci_write_config_byte(esb_pci, ESB_LOCK_REG, 0x00);
-
-               /* Check if the watchdog was previously triggered */
-               esb_unlock_registers();
-               val2 = readw(ESB_RELOAD_REG);
-               triggered = (val2 & (0x01 << 9) >> 9);
-
-               /* Reset trigger flag and timers */
-               esb_unlock_registers();
-               writew((0x11 << 8), ESB_RELOAD_REG);
-
-               /* Done */
-               return 1;
+       BASEADDR = pci_ioremap_bar(esb_pci, 0);
+       if (BASEADDR == NULL) {
+               /* Something's wrong here, BASEADDR has to be set */
+               printk(KERN_ERR PFX "failed to get BASEADDR\n");
+               goto err_release;
+       }
+
+       /* Done */
+       return 1;
 
 err_release:
-               pci_release_region(esb_pci, 0);
+       pci_release_region(esb_pci, 0);
 err_disable:
-               pci_disable_device(esb_pci);
+       pci_disable_device(esb_pci);
 err_devput:
-               pci_dev_put(esb_pci);
-       }
+       pci_dev_put(esb_pci);
        return 0;
 }
 
+static void __devinit esb_initdevice(void)
+{
+       u8 val1;
+       u16 val2;
+
+       /*
+        * Config register:
+        * Bit    5 : 0 = Enable WDT_OUTPUT
+        * Bit    2 : 0 = set the timer frequency to the PCI clock
+        * divided by 2^15 (approx 1KHz).
+        * Bits 1:0 : 11 = WDT_INT_TYPE Disabled.
+        * The watchdog has two timers, it can be setup so that the
+        * expiry of timer1 results in an interrupt and the expiry of
+        * timer2 results in a reboot. We set it to not generate
+        * any interrupts as there is not much we can do with it
+        * right now.
+        */
+       pci_write_config_word(esb_pci, ESB_CONFIG_REG, 0x0003);
+
+       /* Check that the WDT isn't already locked */
+       pci_read_config_byte(esb_pci, ESB_LOCK_REG, &val1);
+       if (val1 & ESB_WDT_LOCK)
+               printk(KERN_WARNING PFX "nowayout already set\n");
+
+       /* Set the timer to watchdog mode and disable it for now */
+       pci_write_config_byte(esb_pci, ESB_LOCK_REG, 0x00);
+
+       /* Check if the watchdog was previously triggered */
+       esb_unlock_registers();
+       val2 = readw(ESB_RELOAD_REG);
+       if (val2 & ESB_WDT_TIMEOUT)
+               triggered = WDIOF_CARDRESET;
+
+       /* Reset WDT_TIMEOUT flag and timers */
+       esb_unlock_registers();
+       writew((ESB_WDT_TIMEOUT | ESB_WDT_RELOAD), ESB_RELOAD_REG);
+
+       /* And set the correct timeout value */
+       esb_timer_set_heartbeat(heartbeat);
+}
+
 static int __devinit esb_probe(struct platform_device *dev)
 {
        int ret;
@@ -441,13 +440,17 @@ static int __devinit esb_probe(struct platform_device *dev)
 
        /* Check that the heartbeat value is within it's range;
           if not reset to the default */
-       if (esb_timer_set_heartbeat(heartbeat)) {
-               esb_timer_set_heartbeat(WATCHDOG_HEARTBEAT);
+       if (heartbeat < 0x1 || heartbeat > 2 * 0x03ff) {
+               heartbeat = WATCHDOG_HEARTBEAT;
                printk(KERN_INFO PFX
                        "heartbeat value must be 1<heartbeat<2046, using %d\n",
                                                                heartbeat);
        }
 
+       /* Initialize the watchdog and make sure it does not run */
+       esb_initdevice();
+
+       /* Register the watchdog so that userspace has access to it */
        ret = misc_register(&esb_miscdev);
        if (ret != 0) {
                printk(KERN_ERR PFX
@@ -455,7 +458,6 @@ static int __devinit esb_probe(struct platform_device *dev)
                                                        WATCHDOG_MINOR, ret);
                goto err_unmap;
        }
-       esb_timer_stop();
        printk(KERN_INFO PFX
                "initialized (0x%p). heartbeat=%d sec (nowayout=%d)\n",
                                                BASEADDR, heartbeat, nowayout);
@@ -463,11 +465,8 @@ static int __devinit esb_probe(struct platform_device *dev)
 
 err_unmap:
        iounmap(BASEADDR);
-/* err_release: */
        pci_release_region(esb_pci, 0);
-/* err_disable: */
        pci_disable_device(esb_pci);
-/* err_devput: */
        pci_dev_put(esb_pci);
        return ret;
 }
index 74c92d38411285b1c64c8e87febead6658b9da5e..ae3832110acb5bcc71927567ed0322de9aaba587 100644 (file)
@@ -221,7 +221,7 @@ static struct miscdevice ks8695wdt_miscdev = {
        .fops           = &ks8695wdt_fops,
 };
 
-static int __init ks8695wdt_probe(struct platform_device *pdev)
+static int __devinit ks8695wdt_probe(struct platform_device *pdev)
 {
        int res;
 
@@ -238,7 +238,7 @@ static int __init ks8695wdt_probe(struct platform_device *pdev)
        return 0;
 }
 
-static int __exit ks8695wdt_remove(struct platform_device *pdev)
+static int __devexit ks8695wdt_remove(struct platform_device *pdev)
 {
        int res;
 
@@ -276,7 +276,7 @@ static int ks8695wdt_resume(struct platform_device *pdev)
 
 static struct platform_driver ks8695wdt_driver = {
        .probe          = ks8695wdt_probe,
-       .remove         = __exit_p(ks8695wdt_remove),
+       .remove         = __devexit_p(ks8695wdt_remove),
        .shutdown       = ks8695wdt_shutdown,
        .suspend        = ks8695wdt_suspend,
        .resume         = ks8695wdt_resume,
index aa5ad6e33f023db62e13addcc74d2c69d7d652b8..f2713851aaabeb65cc6d8257ae9d0da3367909fb 100644 (file)
@@ -258,7 +258,7 @@ static const struct file_operations omap_wdt_fops = {
        .release = omap_wdt_release,
 };
 
-static int __init omap_wdt_probe(struct platform_device *pdev)
+static int __devinit omap_wdt_probe(struct platform_device *pdev)
 {
        struct resource *res, *mem;
        struct omap_wdt_dev *wdev;
@@ -367,7 +367,7 @@ static void omap_wdt_shutdown(struct platform_device *pdev)
                omap_wdt_disable(wdev);
 }
 
-static int omap_wdt_remove(struct platform_device *pdev)
+static int __devexit omap_wdt_remove(struct platform_device *pdev)
 {
        struct omap_wdt_dev *wdev = platform_get_drvdata(pdev);
        struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -426,7 +426,7 @@ static int omap_wdt_resume(struct platform_device *pdev)
 
 static struct platform_driver omap_wdt_driver = {
        .probe          = omap_wdt_probe,
-       .remove         = omap_wdt_remove,
+       .remove         = __devexit_p(omap_wdt_remove),
        .shutdown       = omap_wdt_shutdown,
        .suspend        = omap_wdt_suspend,
        .resume         = omap_wdt_resume,
index e81441f103dd8fa11fbd5e8a44f1647656cacae4..7529616739d270cab0143e96b397c25e4aad4a60 100644 (file)
@@ -42,7 +42,17 @@ static unsigned int wdt_tclk;
 static unsigned long wdt_status;
 static spinlock_t wdt_lock;
 
-static void wdt_enable(void)
+static void orion5x_wdt_ping(void)
+{
+       spin_lock(&wdt_lock);
+
+       /* Reload watchdog duration */
+       writel(wdt_tclk * heartbeat, WDT_VAL);
+
+       spin_unlock(&wdt_lock);
+}
+
+static void orion5x_wdt_enable(void)
 {
        u32 reg;
 
@@ -69,7 +79,7 @@ static void wdt_enable(void)
        spin_unlock(&wdt_lock);
 }
 
-static void wdt_disable(void)
+static void orion5x_wdt_disable(void)
 {
        u32 reg;
 
@@ -101,7 +111,7 @@ static int orion5x_wdt_open(struct inode *inode, struct file *file)
        if (test_and_set_bit(WDT_IN_USE, &wdt_status))
                return -EBUSY;
        clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
-       wdt_enable();
+       orion5x_wdt_enable();
        return nonseekable_open(inode, file);
 }
 
@@ -122,18 +132,28 @@ static ssize_t orion5x_wdt_write(struct file *file, const char *data,
                                        set_bit(WDT_OK_TO_CLOSE, &wdt_status);
                        }
                }
-               wdt_enable();
+               orion5x_wdt_ping();
        }
        return len;
 }
 
-static struct watchdog_info ident = {
+static int orion5x_wdt_settimeout(int new_time)
+{
+       if ((new_time <= 0) || (new_time > wdt_max_duration))
+               return -EINVAL;
+
+       /* Set new watchdog time to be used when
+        * orion5x_wdt_enable() or orion5x_wdt_ping() is called. */
+       heartbeat = new_time;
+       return 0;
+}
+
+static const struct watchdog_info ident = {
        .options        = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT |
                          WDIOF_KEEPALIVEPING,
        .identity       = "Orion5x Watchdog",
 };
 
-
 static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
                                unsigned long arg)
 {
@@ -152,7 +172,7 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
                break;
 
        case WDIOC_KEEPALIVE:
-               wdt_enable();
+               orion5x_wdt_ping();
                ret = 0;
                break;
 
@@ -161,12 +181,11 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
                if (ret)
                        break;
 
-               if (time <= 0 || time > wdt_max_duration) {
+               if (orion5x_wdt_settimeout(time)) {
                        ret = -EINVAL;
                        break;
                }
-               heartbeat = time;
-               wdt_enable();
+               orion5x_wdt_ping();
                /* Fall through */
 
        case WDIOC_GETTIMEOUT:
@@ -187,7 +206,7 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
 static int orion5x_wdt_release(struct inode *inode, struct file *file)
 {
        if (test_bit(WDT_OK_TO_CLOSE, &wdt_status))
-               wdt_disable();
+               orion5x_wdt_disable();
        else
                printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - "
                                        "timer will not stop\n");
@@ -230,7 +249,7 @@ static int __devinit orion5x_wdt_probe(struct platform_device *pdev)
        orion5x_wdt_miscdev.parent = &pdev->dev;
 
        wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk;
-       if (heartbeat <= 0 || heartbeat > wdt_max_duration)
+       if (orion5x_wdt_settimeout(heartbeat))
                heartbeat = wdt_max_duration;
 
        ret = misc_register(&orion5x_wdt_miscdev);
@@ -247,7 +266,7 @@ static int __devexit orion5x_wdt_remove(struct platform_device *pdev)
        int ret;
 
        if (test_bit(WDT_IN_USE, &wdt_status)) {
-               wdt_disable();
+               orion5x_wdt_disable();
                clear_bit(WDT_IN_USE, &wdt_status);
        }
 
@@ -258,9 +277,16 @@ static int __devexit orion5x_wdt_remove(struct platform_device *pdev)
        return ret;
 }
 
+static void orion5x_wdt_shutdown(struct platform_device *pdev)
+{
+       if (test_bit(WDT_IN_USE, &wdt_status))
+               orion5x_wdt_disable();
+}
+
 static struct platform_driver orion5x_wdt_driver = {
        .probe          = orion5x_wdt_probe,
        .remove         = __devexit_p(orion5x_wdt_remove),
+       .shutdown       = orion5x_wdt_shutdown,
        .driver         = {
                .owner  = THIS_MODULE,
                .name   = "orion5x_wdt",
@@ -285,10 +311,11 @@ MODULE_AUTHOR("Sylver Bruneau <sylver.bruneau@googlemail.com>");
 MODULE_DESCRIPTION("Orion5x Processor Watchdog");
 
 module_param(heartbeat, int, 0);
-MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds");
+MODULE_PARM_DESC(heartbeat, "Initial watchdog heartbeat in seconds");
 
 module_param(nowayout, int, 0);
-MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started");
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
+                               __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
 
 MODULE_LICENSE("GPL");
 MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
index f89a21fffbf1c268d355fc526c4635a0a015a3cc..d9c69017bc9affb03b2519d1dbb1e5cc88abfcdc 100644 (file)
@@ -3,3 +3,4 @@
 *.bin
 *.csp
 *.dsp
+ihex2fw
index 1e7fd4df16a7cd9cbae72986fe06ae91a6310672..142c17ab9e574688555dd890a0bac36a7ec333f2 100644 (file)
@@ -41,6 +41,7 @@ fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
 fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
                                   cxgb3/t3c_psram-1.1.0.bin \
                                   cxgb3/t3fw-7.1.0.bin
+fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
 fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
 fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
                             e100/d102e_ucode.bin
@@ -59,14 +60,9 @@ fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
                                     sb16/ima_adpcm_init.csp \
                                     sb16/ima_adpcm_playback.csp \
                                     sb16/ima_adpcm_capture.csp
-fw-shipped-$(CONFIG_SLICOSS) += slicoss/gbdownload.sys slicoss/gbrcvucode.sys \
-                               slicoss/oasisdbgdownload.sys \
-                               slicoss/oasisdownload.sys \
-                               slicoss/oasisrcvucode.sys
-fw-shipped-$(CONFIG_SXG) += sxg/saharadownloadB.sys \
-                               sxg/saharadbgdownloadB.sys
 fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
                                   yamaha/ds1e_ctrl.fw
+fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
 fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
 fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
                               tigon/tg3_tso5.bin
@@ -123,10 +119,10 @@ quiet_cmd_ihex  = IHEX    $@
       cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
 
 quiet_cmd_ihex2fw  = IHEX2FW $@
-      cmd_ihex2fw  = $(objtree)/scripts/ihex2fw $< $@
+      cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
 
 quiet_cmd_h16tofw  = H16TOFW $@
-      cmd_h16tofw  = $(objtree)/scripts/ihex2fw -w $< $@
+      cmd_h16tofw  = $(objtree)/$(obj)/ihex2fw -w $< $@
 
 quiet_cmd_fwbin = MK_FW   $@
       cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)";               \
@@ -185,15 +181,27 @@ $(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
 $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
        $(call cmd,ihex)
 
+# Don't depend on ihex2fw if we're installing and it already exists.
+# Putting it after | in the dependencies doesn't seem sufficient when
+# we're installing after a cross-compile, because ihex2fw has dependencies
+# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and 
+# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
+# is exported read-only for someone to run 'make install'.
+ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
+ihex2fw_dep :=
+else
+ihex2fw_dep := $(obj)/ihex2fw
+endif
+
 # .HEX is also Intel HEX, but where the offset and length in each record
 # is actually meaningful, because the firmware has to be loaded in a certain
 # order rather than as a single binary blob. Thus, we convert them into our
 # more compact binary representation of ihex records (<linux/ihex.h>)
-$(obj)/%.fw: $(obj)/%.HEX  | $(objtree)/$(obj)/$$(dir %)
+$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
        $(call cmd,ihex2fw)
 
 # .H16 is our own modified form of Intel HEX, with 16-bit length for records.
-$(obj)/%.fw: $(obj)/%.H16 | $(objtree)/$(obj)/$$(dir %)
+$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
        $(call cmd,h16tofw)
 
 $(firmware-dirs):
@@ -210,3 +218,5 @@ targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
 # Without this, built-in.o won't be created when it's empty, and the
 # final vmlinux link will fail.
 obj-n := dummy
+
+hostprogs-y := ihex2fw
diff --git a/firmware/README.AddingFirmware b/firmware/README.AddingFirmware
new file mode 100644 (file)
index 0000000..e24cd89
--- /dev/null
@@ -0,0 +1,34 @@
+
+       DO NOT ADD FIRMWARE TO THIS DIRECTORY.
+       ======================================
+
+This directory is only here to contain firmware images extracted from old
+device drivers which predate the common use of request_firmware().
+
+As we update those drivers to use request_firmware() and keep a clean
+separation between code and firmware, we put the extracted firmware
+here.
+
+This directory is _NOT_ for adding arbitrary new firmware images. The
+place to add those is the separate linux-firmware repository:
+
+    git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
+
+That repository contains all these firmware images which have been
+extracted from older drivers, as well various new firmware images which
+we were never permitted to include in a GPL'd work, but which we _have_
+been permitted to redistribute under separate cover.
+
+To submit firmware to that repository, please send either a git binary
+diff or preferably a git pull request to:
+      David Woodhouse <dwmw2@infradead.org>
+
+Your commit should include an update to the WHENCE file clearly
+identifying the licence under which the firmware is available, and
+that it is redistributable. If the licence is long and involved, it's
+permitted to include it in a separate file and refer to it from the
+WHENCE file.
+
+Ideally, your commit should contain a Signed-Off-By: from someone
+authoritative on the licensing of the firmware in question (i.e. from
+within the company that owns the code).
index e4deb511cc73766537f5a992845f1cf0d5427239..10f61c9e5a8aa15f98567420ed07e392ebb7f2c1 100644 (file)
@@ -8,6 +8,24 @@ kernel.
 
 --------------------------------------------------------------------------
 
+Driver: ambassador -- Madge Ambassador (Collage PCI 155 Server) ATM NIC.
+
+File: firmware/atmsar11.fw
+
+Licence: Allegedly GPLv2+, but no source visible. Marked:
+
+  Madge Ambassador ATM Adapter microcode.
+  Copyright (C) 1995-1999  Madge Networks Ltd.
+
+  This microcode data is placed under the terms of the GNU General
+  Public License. The GPL is contained in /usr/doc/copyright/GPL on a
+  Debian system and in the file COPYING in the Linux kernel source.
+
+  We would prefer you not to distribute modified versions without
+  consultation and not to ask for assembly/other microcode source.
+
+--------------------------------------------------------------------------
+
 Driver: korg1212 -- Korg 1212 IO audio device
 
 File: korg/k1212.dsp
@@ -390,59 +408,6 @@ Found in hex form in kernel source.
 
 --------------------------------------------------------------------------
 
-Driver: SLICOSS - Alacritech IS-NIC products
-
-File: slicoss/gbdownload.sys.ihex
-File: slicoss/gbrcvucode.sys.ihex
-File: slicoss/oasisdbgdownload.sys.ihex
-File: slicoss/oasisdownload.sys.ihex
-File: slicoss/oasisrcvucode.sys.ihex
-
-Licence:
-               Copyright (C) 1999-2009 Alacritech, Inc.
-
-       as an unpublished work. This notice does not imply unrestricted or
-       public access to the source code from which this firmware image is
-       derived.  Except as noted below this firmware image may not be
-       reproduced, used, sold or transferred to any third party without
-       Alacritech's prior written consent.  All Rights Reserved.
-
-       Permission is hereby granted for the distribution of this firmware
-       image as part of a Linux or other Open Source operating system kernel
-       in text or binary form as required.
-
-       This firmware may not be modified and may only be used with
-       Alacritech hardware.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
-Driver: SXG - Alacritech IS-NIC products
-
-File: sxg/saharadownloadB.sys.ihex
-File: sxg/saharadbgdownloadB.sys.ihex
-
-Licence:
-               Copyright (C) 1999-2009 Alacritech, Inc.
-
-       as an unpublished work. This notice does not imply unrestricted or
-       public access to the source code from which this firmware image is
-       derived.  Except as noted below this firmware image may not be
-       reproduced, used, sold or transferred to any third party without
-       Alacritech's prior written consent.  All Rights Reserved.
-
-       Permission is hereby granted for the distribution of this firmware
-       image as part of a Linux or other Open Source operating system kernel
-       in text or binary form as required.
-
-       This firmware may not be modified and may only be used with
-       Alacritech hardware.
-
-Found in hex form in kernel source.
-
---------------------------------------------------------------------------
-
 Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
 
 File: cxgb3/t3b_psram-1.1.0.bin.ihex
@@ -662,3 +627,24 @@ Licence:
 Found in hex form in kernel source.
 
 --------------------------------------------------------------------------
+
+Driver: DVB AV7110 -- AV7110 cards
+
+File: av7110/bootcode.bin
+
+Licence: GPLv2 or later
+
+ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
+
+--------------------------------------------------------------------------
+
+Driver: wavefront - ISA WaveFront sound card
+
+File: yamaha/yss225_registers.bin
+
+Licence: Allegedly GPLv2+, but no source visible.
+
+Found in hex form in kernel source, with the following comment:
+   Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
+
+--------------------------------------------------------------------------
diff --git a/firmware/av7110/Boot.S b/firmware/av7110/Boot.S
new file mode 100644 (file)
index 0000000..d562fdc
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+   Boot.S: boot loader for Siemens DVB-S card
+
+   Copyright (C) 2001 Convergence integrated media GmbH
+                     Written by Ralph Metzler
+                                <rjkm@convergence.de>
+   Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
+
+   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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
+
+*/
+
+/*
+       check AV711x_3_1.pdf for some hardware infos
+       build it with :
+       $ cc -mbig-endian -c Boot.S
+       $ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
+       $ objcopy -Obinary Boot
+*/
+
+       .text
+       .align
+       .globl _start
+_start:
+       b reset                 // reset vector
+       movs  pc, r14           // undefined
+       subs  pc, r14, #4       // SWI
+       subs  pc, r14, #4       // prefetch abort
+       subs  pc, r14, #8       // data abort
+       subs  pc, r14, #4       // reserved
+       subs  pc, r14, #4       // IRQ
+       subs  pc, r14, #4       // FIQ
+
+       .word tbl               // table needed by firmware ROM
+tbl:   .word (endtbl - tbl)
+       .word 0
+       .word conf
+endtbl:        .word 0
+conf:  .word 0xa5a55a5a
+       .word 0x001f1555
+       .word 0x00000009
+
+reset: ldr     r13, buffer
+       ldr     r4, flag
+       mov     r0, #0
+       str     r0, [r4]
+       str     r0, [r4, #4]
+
+       ldr             r1, wait_address
+       ldr             r2, flag_address
+       ldr             r3, sram
+
+copycode: // copy the code HW Sram
+       ldmia   r1!, {r5-r12}
+       stmia   r3!, {r5-r12}
+       cmp             r1, r2
+       ble     copycode
+       ldr             pc, sram // jump to the copied code
+
+wait:  ldrh    r1, [r4]        // wait for flag!=0
+       cmp     r1, #0
+       beq     wait
+
+       mov     r1, r13         // buffer address
+       ldr     r3, [r4,#4]     // destaddr
+
+       ldrh    r2, [r4,#2]     // get segment length
+       add     r2, r2, #63     // round length to next 64 bytes
+       movs    r2, r2, lsr #6  // and divide by 64
+       moveq   r0, #2          // if 0, set flag to 2, else signal
+       strh    r0, [r4]        // that buffer is accepted by setting to 0
+        beq wait
+       
+copyloop:
+       ldmia   r1!, {r5-r12}
+       stmia   r3!, {r5-r12}
+       ldmia   r1!, {r5-r12}
+       stmia   r3!, {r5-r12}
+       subs    r2, r2, #1
+       bne     copyloop
+
+       eor     r13, r13, #0x1400    // switch to other buffer
+       b       wait
+
+// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
+// destaddr at 0x2c0003fc
+
+flag:  .word   0x2c0003f8
+
+
+// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
+
+buffer:        .word   0x2c000400
+
+sram: .word   0x9e000800
+wait_address: .word   wait
+flag_address: .word   flag
diff --git a/firmware/av7110/bootcode.bin.ihex b/firmware/av7110/bootcode.bin.ihex
new file mode 100644 (file)
index 0000000..26a2993
--- /dev/null
@@ -0,0 +1,15 @@
+:10000000EA00000EE1B0F00EE25EF004E25EF00401
+:10001000E25EF008E25EF004E25EF004E25EF0040C
+:100020002C0000240000000C000000002C00003414
+:1000300000000000A5A55A5A001F15550000000930
+:10004000E59FD07CE59F4074E3A00000E5840000BC
+:10005000E5840004E59F1070E59F2070E59F306403
+:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
+:10007000E59FF050E1D410B0E35100000AFFFFFC0F
+:10008000E1A0100DE5943004E1D420B2E282203FDB
+:10009000E1B0232203A00002E1C400B00AFFFFF494
+:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
+:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
+:1000C0002C0003F82C0004009E0008002C00007493
+:0400D0002C0000C040
+:00000001FF
diff --git a/firmware/ihex2fw.c b/firmware/ihex2fw.c
new file mode 100644 (file)
index 0000000..8f7fdaa
--- /dev/null
@@ -0,0 +1,268 @@
+/*
+ * Parser/loader for IHEX formatted data.
+ *
+ * Copyright Â© 2008 David Woodhouse <dwmw2@infradead.org>
+ * Copyright Â© 2005 Jan Harkes <jaharkes@cs.cmu.edu>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <stdint.h>
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#define _GNU_SOURCE
+#include <getopt.h>
+
+
+struct ihex_binrec {
+       struct ihex_binrec *next; /* not part of the real data structure */
+        uint32_t addr;
+        uint16_t len;
+        uint8_t data[];
+};
+
+/**
+ * nybble/hex are little helpers to parse hexadecimal numbers to a byte value
+ **/
+static uint8_t nybble(const uint8_t n)
+{
+       if      (n >= '0' && n <= '9') return n - '0';
+       else if (n >= 'A' && n <= 'F') return n - ('A' - 10);
+       else if (n >= 'a' && n <= 'f') return n - ('a' - 10);
+       return 0;
+}
+
+static uint8_t hex(const uint8_t *data, uint8_t *crc)
+{
+       uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);
+       *crc += val;
+       return val;
+}
+
+static int process_ihex(uint8_t *data, ssize_t size);
+static void file_record(struct ihex_binrec *record);
+static int output_records(int outfd);
+
+static int sort_records = 0;
+static int wide_records = 0;
+
+int usage(void)
+{
+       fprintf(stderr, "ihex2fw: Convert ihex files into binary "
+               "representation for use by Linux kernel\n");
+       fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
+       fprintf(stderr, "       -w: wide records (16-bit length)\n");
+       fprintf(stderr, "       -s: sort records by address\n");
+       return 1;
+}
+
+int main(int argc, char **argv)
+{
+       int infd, outfd;
+       struct stat st;
+       uint8_t *data;
+       int opt;
+
+       while ((opt = getopt(argc, argv, "ws")) != -1) {
+               switch (opt) {
+               case 'w':
+                       wide_records = 1;
+                       break;
+               case 's':
+                       sort_records = 1;
+                       break;
+               default:
+                       return usage();
+               }
+       }
+
+       if (optind + 2 != argc)
+               return usage();
+
+       if (!strcmp(argv[optind], "-"))
+           infd = 0;
+       else
+               infd = open(argv[optind], O_RDONLY);
+       if (infd == -1) {
+               fprintf(stderr, "Failed to open source file: %s",
+                       strerror(errno));
+               return usage();
+       }
+       if (fstat(infd, &st)) {
+               perror("stat");
+               return 1;
+       }
+       data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
+       if (data == MAP_FAILED) {
+               perror("mmap");
+               return 1;
+       }
+
+       if (!strcmp(argv[optind+1], "-"))
+           outfd = 1;
+       else
+               outfd = open(argv[optind+1], O_TRUNC|O_CREAT|O_WRONLY, 0644);
+       if (outfd == -1) {
+               fprintf(stderr, "Failed to open destination file: %s",
+                       strerror(errno));
+               return usage();
+       }
+       if (process_ihex(data, st.st_size))
+               return 1;
+
+       output_records(outfd);
+       return 0;
+}
+
+static int process_ihex(uint8_t *data, ssize_t size)
+{
+       struct ihex_binrec *record;
+       uint32_t offset = 0;
+       uint8_t type, crc = 0, crcbyte = 0;
+       int i, j;
+       int line = 1;
+       int len;
+
+       i = 0;
+next_record:
+       /* search for the start of record character */
+       while (i < size) {
+               if (data[i] == '\n') line++;
+               if (data[i++] == ':') break;
+       }
+
+       /* Minimum record length would be about 10 characters */
+       if (i + 10 > size) {
+               fprintf(stderr, "Can't find valid record at line %d\n", line);
+               return -EINVAL;
+       }
+
+       len = hex(data + i, &crc); i += 2;
+       if (wide_records) {
+               len <<= 8;
+               len += hex(data + i, &crc); i += 2;
+       }
+       record = malloc((sizeof (*record) + len + 3) & ~3);
+       if (!record) {
+               fprintf(stderr, "out of memory for records\n");
+               return -ENOMEM;
+       }
+       memset(record, 0, (sizeof(*record) + len + 3) & ~3);
+       record->len = len;
+
+       /* now check if we have enough data to read everything */
+       if (i + 8 + (record->len * 2) > size) {
+               fprintf(stderr, "Not enough data to read complete record at line %d\n",
+                       line);
+               return -EINVAL;
+       }
+
+       record->addr  = hex(data + i, &crc) << 8; i += 2;
+       record->addr |= hex(data + i, &crc); i += 2;
+       type = hex(data + i, &crc); i += 2;
+
+       for (j = 0; j < record->len; j++, i += 2)
+               record->data[j] = hex(data + i, &crc);
+
+       /* check CRC */
+       crcbyte = hex(data + i, &crc); i += 2;
+       if (crc != 0) {
+               fprintf(stderr, "CRC failure at line %d: got 0x%X, expected 0x%X\n",
+                       line, crcbyte, (unsigned char)(crcbyte-crc));
+               return -EINVAL;
+       }
+
+       /* Done reading the record */
+       switch (type) {
+       case 0:
+               /* old style EOF record? */
+               if (!record->len)
+                       break;
+
+               record->addr += offset;
+               file_record(record);
+               goto next_record;
+
+       case 1: /* End-Of-File Record */
+               if (record->addr || record->len) {
+                       fprintf(stderr, "Bad EOF record (type 01) format at line %d",
+                               line);
+                       return -EINVAL;
+               }
+               break;
+
+       case 2: /* Extended Segment Address Record (HEX86) */
+       case 4: /* Extended Linear Address Record (HEX386) */
+               if (record->addr || record->len != 2) {
+                       fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
+                               type, line);
+                       return -EINVAL;
+               }
+
+               /* We shouldn't really be using the offset for HEX86 because
+                * the wraparound case is specified quite differently. */
+               offset = record->data[0] << 8 | record->data[1];
+               offset <<= (type == 2 ? 4 : 16);
+               goto next_record;
+
+       case 3: /* Start Segment Address Record */
+       case 5: /* Start Linear Address Record */
+               if (record->addr || record->len != 4) {
+                       fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
+                               type, line);
+                       return -EINVAL;
+               }
+
+               /* These records contain the CS/IP or EIP where execution
+                * starts. Don't really know what to do with them. */
+               goto next_record;
+
+       default:
+               fprintf(stderr, "Unknown record (type %02X)\n", type);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+static struct ihex_binrec *records;
+
+static void file_record(struct ihex_binrec *record)
+{
+       struct ihex_binrec **p = &records;
+
+       while ((*p) && (!sort_records || (*p)->addr < record->addr))
+               p = &((*p)->next);
+
+       record->next = *p;
+       *p = record;
+}
+
+static int output_records(int outfd)
+{
+       unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0};
+       struct ihex_binrec *p = records;
+
+       while (p) {
+               uint16_t writelen = (p->len + 9) & ~3;
+
+               p->addr = htonl(p->addr);
+               p->len = htons(p->len);
+               write(outfd, &p->addr, writelen);
+               p = p->next;
+       }
+       /* EOF record is zero length, since we don't bother to represent
+          the type field in the binary version */
+       write(outfd, zeroes, 6);
+       return 0;
+}
diff --git a/firmware/slicoss/gbdownload.sys.ihex b/firmware/slicoss/gbdownload.sys.ihex
deleted file mode 100644 (file)
index dc17e63..0000000
+++ /dev/null
@@ -1,6148 +0,0 @@
-:10000000020000000080000000000100000000006D
-:10001000008000001200004081B200001800004083
-:1000200081B200001E00004081B2000003000040C9
-:1000300081B20000000000A898B001000480A24036
-:10004000FD7F00000900A249DD7D00000000004C9A
-:1000500080B2010007000040D1B100000000004C58
-:1000600080B201000900A240757D000060000040E0
-:10007000619901000B00A8B17E3100000900004029
-:1000800081B200001100004081B2000000801FE931
-:1000900018310000000041E980B201000F0040E982
-:1000A00080B2000000000040A59901001600294020
-:1000B00081320000160014BC803200000F0093BC97
-:1000C000803200000000504081B2010000800040FA
-:1000D00081B2000010000040A59901001C002940D9
-:1000E000813200001C0014BC80320000110093BC5F
-:1000F000803200000000504081B2010001800040C9
-:1001000081B2000020000040A59901002200294092
-:1001100081320000220014BC803200000E0093BC2B
-:100120008032000000000049DD8101002B01004009
-:10013000813201003C01004081320100270014BCE3
-:1001400080320000140113BC80320000549500403E
-:1001500045990100FFFF0040E599010000002F4094
-:1001600049B1010000000040E1B101000000004B76
-:10017000B7B3010000000040B5B30100D900004052
-:10018000B333010000000040B6D30100320095E80F
-:1001900080320000FFFF00E880880100B8002640A0
-:1001A0008132000000000040FDB30100000000406B
-:1001B000FFB301003C002250836C000000000045AA
-:1001C000FD930100A5A500A6B4A701003C00A25024
-:1001D000B573000000010040813201003C00A245DF
-:1001E0008032000000000046FD9301004100004005
-:1001F00081B200007F000020F5CF01001C0100FA51
-:10020000B3330100A5A500DAB5AB01009900A250F7
-:10021000B563000000000044FD930100D5000044D8
-:10022000B333010000000040D5990100000000DA5E
-:10023000D7B10100FFFF00DAED8B0100D5000046C9
-:10024000B333010008000040D5990100000000DA36
-:10025000D7B10100FF0000DAEF8B0100FF0000DAE8
-:10026000E38F0100D5000048B33301003C0000409B
-:10027000D5990100FF0000DAD78D0100FFFF00DAF9
-:10028000F1DB0100FF0000DAE98B0100000000480B
-:10029000E9E30100D500004BB33301002C0000401E
-:1002A000D5990100000000DAD7B10100D500004C5B
-:1002B000B3330100FFFF00DAEBDB0100D500004E95
-:1002C000B3330100030000DA818801000000005C04
-:1002D00081E00100FFFF00DAB5DB01005C00264091
-:1002E00081320000010000DAB5CF010000F000A764
-:1002F000B4870100000000DA819401000000004092
-:10030000D8B10100D5000050B3330100FFFF00DA7F
-:10031000B58B01006200264CB5630000010000DAD5
-:10032000B5CF0100000000DADFB10100D5000052B6
-:10033000B3330100FF0000DA4B890100080000DA46
-:10034000DFF70100FF0000EFDF8B010069002240B2
-:10035000DF7F000000000047FD9301002000004007
-:10036000B39B0100D500004081320100060000402F
-:10037000D5990100080000DAD7E50100F80000DA9D
-:10038000B38B010034000040D5990100000000D972
-:10039000D7B10100020000D9D5C90100000000DA80
-:1003A000D7B1010022000040B39B0100D5000040FE
-:1003B0008132010000000048B5F30100030000DABB
-:1003C0007B89010000010040DD9B0100D500005D3C
-:1003D000B3330100FFFF00DAE78B01008A002640FB
-:1003E0008132000000000041FD9301000000005038
-:1003F000E7E3010000010040D5990100000000F68C
-:10040000E7970100000000F3D7B10100D500005EBE
-:10041000B3330100FF0000DAE58B01000000004863
-:10042000E5E3010008010040D5990100FF0000DA72
-:10043000B58F0100000000F7B5970100000000DA59
-:10044000D7B101003C010040D5990100000000F83F
-:10045000E5970100000000F2D7B101000002004062
-:10046000DD9B0100960022F5813200000000004271
-:10047000FD930100000000EED5B10100000000F680
-:10048000EB970100000000F5D7B10100080000EA79
-:10049000D4C90100000000F7E3970100000000F15B
-:1004A000D7B101003C0000EEDDCB0100000000EE02
-:1004B000D5B10100000000F8E9970100000000F448
-:1004C000D7B10100D500004AB3330100FFFF00DAC5
-:1004D000DD890100B700004081B20000000000404B
-:1004E000D5990100050000A6D6B101009A1300EBD2
-:1004F000D699010008000040D5990100000200A62D
-:10050000D6B10100010000EBD69901002C0000409B
-:10051000D5990100050000A6D6B101009A1300EBA1
-:10052000D69901003C010040D5990100000200402D
-:10053000D799010000000042FD9301003C000040FB
-:10054000D5990100000000A6D6B10100000100EB22
-:10055000D699010000010040D5990100060000A6CF
-:10056000D6B101009A1300EBD699010008010040B2
-:10057000D5990100000200A6D6B10100010000EBF0
-:10058000D699010000000040D9B1010000000040F0
-:10059000DFB1010006000040D5990100A00000A6CF
-:1005A000D6B10100640000404B99010000000040FA
-:1005B0007B99010002040040DD990100B70013BCE3
-:1005C0008032000002080040DD9901000000004C6C
-:1005D000DD910100B80095E88430000000002FE9AB
-:1005E000FAB3010000000040D1B10100FF00004259
-:1005F000808801003400004080CE0100B800A64091
-:1006000081320000C100004081320100028022409E
-:1006100080320000B800004081B200000000004FAE
-:1006200081B00100CA0009F981320000C80008F950
-:1006300081320000D4001FFDF9330000C7009EFD89
-:10064000813200000000004AF3930100000080485E
-:10065000F3930100000000FDF7B3010000008049A2
-:10066000F3930100000000FC19B10100CF000AF96A
-:1006700081320000000040FB81B20100000041FD1A
-:1006800081B20100000780F9F38F0100000742F9F1
-:10069000F38F0100D300A2FFF76F0000000043407A
-:1006A00081B201000000A2FFFBEF0000000080FC0F
-:1006B000E1B101000000804081B00100D80006FED9
-:1006C0008132000000000041B3E301001C0100FA88
-:1006D000B3C30000DA0000428DB00000000000410A
-:1006E0008DB001000004004083980100EB00004041
-:1006F000813201000000005083B0010000008496A8
-:1007000080B2000026010040813201002501004036
-:100710002D110100000000402D810100000000DAD1
-:10072000B5EB0100E400849680320000E500004053
-:10073000B593000000000040B5830100DE00A24137
-:1007400083500000000000422D810100260100417D
-:100750002D01010000000041B3C30100DA00A241F5
-:100760008D500000000080DAB5BF01000000004B92
-:1007700081B00100000000DB81D00100000000D941
-:10078000B9B3010000000040B8E30100000000DC44
-:10079000B9EB010000000041B8970100150000DC32
-:1007A000B9E70100000000412D810100000000DBDD
-:1007B00081B00100270100422D11010025010040F8
-:1007C0002D110100280100402D0101000000004111
-:1007D0002D910100260100408132010025010040D9
-:1007E0002D110100000000402D8101000000A241F8
-:1007F00081D000000000849680320100FF00A0DC60
-:10080000B96B0000F80000412D910000F800004194
-:100810002D810000D8000040B3330100000090DAC1
-:100820008BB000001100004588F401004000004436
-:1008300080CE01000000A44081B200000000A3446B
-:1008400089EC00000000004289D001000000004255
-:1008500087B00100D9000043B2330100000000500E
-:10086000B5F301000C01A0DA8B400000000000414C
-:100870008BC001000000004187C001000801A241B7
-:1008800089500000FFFF00458888010010000045E6
-:100890008AF40100120190448A40000000000041E7
-:1008A0008BC00100FFFF00458AA8010000008050B6
-:1008B0008BE0010000800040F99B010000C0004077
-:1008C000B3CF01001C0100FC193101001C0140DA0A
-:1008D00081320100000041DA81B2010000000041D4
-:1008E000F9C3010016019FDA813200000280004046
-:1008F00081B200000000004491B00100000000D966
-:100900002BB101001E019F9480320000180000945A
-:1009100092E4010000000048B5F301000000004926
-:10092000B497010000000041B3C301001D01A241C2
-:1009300091500000000080402BB1010029010051BE
-:1009400093B000002901004D93B000002901004937
-:1009500093B000000000004293B001002901A241C1
-:10096000935000000000804081B201000000104060
-:1009700081B201000000114081B20100000012406C
-:1009800081B201000000134081B201000000144058
-:1009900081B201000000154081B201000000164044
-:1009A00081B201000000174081B201000000184030
-:1009B00081B201000000194081B2010000001A401C
-:1009C00081B2010000001B4081B2010000001C4008
-:1009D00081B2010000001D4081B2010000001E40F4
-:1009E00081B2010000001F4081B201000000804080
-:1009F00081B2010000040040A199010000000050F4
-:100A0000A1D10100000000401BB001000000004027
-:100A100019B001000000004017B0010000000040C4
-:100A200015B001000000004013B0010000000040BC
-:100A300011B00100000000400FB0010000000040B4
-:100A40000DB00100000000400BB0010000000040AC
-:100A500009B001000000004007B0010000000040A4
-:100A600005B001000000004003B00100000000409C
-:100A700001B0010044012048A15100000000804065
-:100A800081B201005001224B747D000000008040C3
-:100A900081B201006000004B60990100000000B1CC
-:100AA0007EB101005101A840813200004E0100409A
-:100AB00081B20000040080409798010000000058B7
-:100AC00007900100F39F004081B200000000004445
-:100AD000A5B30100AF02004081320100C502004011
-:100AE000813201000000005C07900100F39F00408C
-:100AF000BFB300005F0122CC857F000000000051E1
-:100B000007900100F39F004081B200000000004008
-:100B100049B10100AE0300CBA3C90100D0140040CD
-:100B2000A19B01000000002046B101000000004828
-:100B3000F1B10100000000D0F1B10100000000CAD5
-:100B4000F1B10100000000D5E1B101000700004053
-:100B5000619901002000002062DD01006801A840C9
-:100B600081320000000000CC85930100C5020040E6
-:100B700081320100D014004043990100000000FAC6
-:100B8000BAB30100000000FAA4B30100000000F8AD
-:100B9000BCB3010000142F4081B00100000000E749
-:100BA000A7B30100000000D8A9B30100FF0000DDD9
-:100BB000818801000200004080F4010078010040BB
-:100BC00080C80100880100DD813200000000004083
-:100BD00010B100008901004081B200008A0100408C
-:100BE00081B200008B01004081B200008C01004006
-:100BF00081B200008D01004081B200008F010040F1
-:100C000081B200009101004081B200005501004016
-:100C100081B20000D201004081B2000055010040C5
-:100C200081B20000E001004081B20000E10100401B
-:100C300081B200007F02004081B2000080020040CB
-:100C400081B20000F19F004081B20000F29F00409D
-:100C500081B200007701004181C01A005A01514061
-:100C600081B21A005A01524081B21A005A0155400D
-:100C700081B21A005A01564081B21A005501918181
-:100C800080301A005A01454081B21A005501918204
-:100C900080301A005A01464081B200000000004036
-:100CA00089B0010000002F4081B001000014004015
-:100CB00049990100B50122DEE16D00000000004C01
-:100CC00049C101000000004181C001009401A2441B
-:100CD000816C00000000004C49D101009C012240C1
-:100CE000E16D00009801A2418150000055010041D2
-:100CF000BFB3000000000042BFB301005501A00FC8
-:100D0000BD6F0000000000DEE1B101000000004402
-:100D100049C10100B701004019990100000042409B
-:100D200081B20100000043FF85B00100000000DE39
-:100D300019B10100000042FF87B00100000043FF2D
-:100D4000E1B101000000004449C1010000002FFF93
-:100D5000E1B10100081400A480CC0100AC012640E0
-:100D6000813200000000004185C00100AA01A24CB0
-:100D700081500000B60122D281320000B10122412F
-:100D8000A56F00005501A2E081320000000000D2F2
-:100D9000C1B301000000005C8990010000004042E6
-:100DA00080B201000000414380B20100000000F069
-:100DB000889401005A010044E0B10000B3010048EA
-:100DC00049C10000B101005B89900000B09F00A004
-:100DD0009EB000000000004D81B001000000004303
-:100DE000CB8301000000454081B20100BA01A2415D
-:100DF000815000000000454081B2010000004540E4
-:100E000081B20100C4019182823000000000008A9A
-:100E100080B00100B69F004080CE0100C301A64013
-:100E200081320000C401564081B20000000000532E
-:100E30006F930100F39F00526F9300000000004D7C
-:100E400081B0010000000042CD8301000000464057
-:100E500081B20100C701A24181500000000046405C
-:100E600081B201000000464081B20100D1019181B0
-:100E7000823000000000008980B00100B69F004071
-:100E800080CE0100D001A64081320000D101554042
-:100E900081B20000000000526F930100F39F0053E5
-:100EA0006F9300000000004083B001000014004078
-:100EB000499901000000234081B00100DA0122DEDF
-:100EC000E16D00000000004C49C10100000000413C
-:100ED00081C00100D501A244816C0000550100438E
-:100EE000BFB30000000000F818B10100000040F896
-:100EF00080B20100000041F080B20100000000401B
-:100F0000F1B1010000000040F1B101005A010040C0
-:100F1000E1B10000E201004091B00000000000419A
-:100F200091B00100D0142E4049B1010005000040ED
-:100F3000A39B0100080000DD81F40100E7010040EF
-:100F400080C801000000004010B10000ED01004029
-:100F500081B00000580100DEA1B30000FF01004095
-:100F600081B200000102004081B000000702004091
-:100F700081B20000570100DFE1B10000000000D0A5
-:100F8000BAB30100000000DEA1B10100020000D2EE
-:100F9000A5E70100000000D2C1B30100000000007D
-:100FA000F0B10100F7012244C1530000F601844171
-:100FB00081400000FA01004081320100000000D0B1
-:100FC00045B10100F1010041A1C10000B1020040A2
-:100FD00081320100C5020040813201005A0100DD6A
-:100FE000A1B100000000004081B0010040000040BD
-:100FF000A59B0100B102004081320100400000D3F6
-:10100000A7CB0100C50200E0A5B30000030000402B
-:10101000A39B0100580100DEA1B3000000000044C2
-:10102000BFB30100000000DE819001005501A2BAAB
-:1010300080040000600000DE619901000402A8B194
-:101040008030000057010040E0B10000000000D0F7
-:10105000BAB3010068020040819801005D02004DB2
-:101060008330010000000044E1B3010000000044AF
-:10107000E3B3010000000044E5B3010000000044B8
-:10108000E9B3010000000044EBB30100000000449C
-:10109000F5B3010000000044F7B301000000004474
-:1010A000F9B30100150222408F6F00007502004065
-:1010B000819801005D0200C7833001007D0200407D
-:1010C000819801005D02004283300100000000E8C9
-:1010D000F1B10100000000E9F1B10100000000EAF7
-:1010E000F1B10100000000EBF1B10100000000854A
-:1010F000F0B10100000000ECF1B10100000000EDD2
-:10110000F1B10100000000B2F0B10100E09F004029
-:101110008132010000000040F0B1010000000040F9
-:10112000F1B10100000000ABF0B10100000000B817
-:10113000F0B10100000000B9F0B10100000000BAF8
-:10114000F0B10100000000BBF0B101002902B8407D
-:101150008130000000000040819001002B02B94066
-:101160008132000000000041819001002D02BA4050
-:101170008132000000000042819001002F02BB403C
-:101180008132000000000043819001003102BC4028
-:101190008132000000000044819001003302BD4014
-:1011A0008132000000000045819001003502BE4000
-:1011B0008132000000000046819001003702BF40EC
-:1011C0008132000000000047819001003902C840D0
-:1011D0008132000000000048819001003B02C940BC
-:1011E0008132000000000049819001003D02CA40A8
-:1011F000813200000000004A819001003F02CB4094
-:10120000813200000000004B819001004102CC407F
-:10121000813200000000004C819001004302CD406B
-:10122000813200000000004D819001004502CE4057
-:10123000813200000000004E819001004702CF4043
-:10124000813200000000004F81900100000000404A
-:10125000F0B1010040000040A59B0100AF0200403A
-:1012600081320100C502004081320100D0142E06F7
-:10127000A5B30100400000D3A7CB0100000000F09F
-:10128000F1B10100000000F1F1B10100000000F235
-:10129000F1B10100000000F4F1B10100000000F51F
-:1012A000F1B10100000000FAF1B10100000000FB03
-:1012B000F1B10100000000FCF1B10100000000EB01
-:1012C000F1B10100000000EEF1B10100000000EFFB
-:1012D000F1B10100000000F3F1B10100000000F6DF
-:1012E000F1B10100000000FDF1B10100F70100C7FC
-:1012F000E1B100000000804081B2010063020048BB
-:1013000080320000000051401AB1010000004D4041
-:1013100081B201000000454081B201006002A2419B
-:10132000835000005C02494081B20000000052403E
-:101330001CB1010000004E4081B201000000464097
-:1013400081B201006502A241835000005C024A4064
-:1013500081B20000000000A09EB0010000000080EB
-:10136000D8B30100000000A1D0B30100000000A22A
-:10137000D2B30100000000A4D4B30100000000D0EB
-:10138000D6B30100000000D1DCB30100000000D2A0
-:10139000DEB3010000000088DAB30100000000D4D1
-:1013A0008EB30100000000D3E6B30100000000ACE2
-:1013B000ECB3010000000099FAB30100000000D571
-:1013C000E0B30100000000D5E2B30100000000D549
-:1013D000E4B30100000000D5E8B30100000000D52F
-:1013E000EAB30100000000D5F4B30100000000D50D
-:1013F000F6B30100000000D5F8B30100000000C7FB
-:10140000A9B101000000004F40B10100810200407D
-:1014100091B000000000004191B0010007000040C1
-:10142000A39B0100080000DD81F40100850200405B
-:1014300080C801000000004010B100008A02004096
-:1014400081B200009502004081B200009502004682
-:10145000A3B300009802004081B200009E02004049
-:1014600081B200008C022350A56F000000000050E4
-:10147000A5B30100BC020042A5630100C502004003
-:1014800081320100D0142D4049B10100000000D08C
-:10149000BAB30100000000DEA1B10100000000F8B5
-:1014A00000B0010094022244A553000091020041C3
-:1014B000A1C100005A0100DDA1B10000BC0200DEA4
-:1014C000A1330100C5020040813201005A010040F1
-:1014D00081B2000000000045BFB301005501A2D257
-:1014E000777D0000000000D261B10100000000DE45
-:1014F00063B101009B02A840813200005A01004004
-:1015000081B20000BC020054A5330100C5020040B6
-:1015100081320100D0142D4049B10100000000F8D3
-:10152000D0B30100000000F8D2B30100000000F8C1
-:10153000D4B30100000000F8D6B30100000000F8A9
-:1015400008B10100A9020040819801005D02004637
-:10155000833001005A01004081B20000000000A069
-:101560009EB00100000000E843B10100000000E966
-:1015700045B10100000000EA49B10100000000EBA4
-:10158000A1B101000000004F40B10100000000E7E0
-:10159000A7B30100000000D8A9B30100000000407B
-:1015A00049B10100AE0300CBA3C901000000002037
-:1015B00046B10100000000D2F1B10100000000D3EB
-:1015C000F1B10100000000D4F1B10100000000D031
-:1015D000E1B10100000000D161B101002000002054
-:1015E00062DD0100B902A84081320000000080CC19
-:1015F00085930100000000E7A7B30100000000D8B8
-:10160000A9B301000000004049B10100AE0300CBC6
-:10161000A3C901000000002046B10100000000D273
-:10162000F1B10100000000D0F1B10100000000D3D1
-:10163000F1B10100B80200D4E1B100000000A2CC79
-:1016400085FF00000000005081B00100C702A241E8
-:1016500081500000C602A2F280300000000080CC61
-:10166000858301000000004081B00100CB0280A50D
-:1016700080320000CC0200A5803200000000004152
-:1016800081C00100CD0280A58032000080010040B1
-:1016900083980100D602204F816C000000010040B9
-:1016A00083980100D602204B816C0000800000402E
-:1016B00083980100D6022047816C000000000040A2
-:1016C000839801000000004182DC0100039000418A
-:1016D000209901000000004049B1010000142F4C86
-:1016E00083B0010000000040F1B10100DA02A24124
-:1016F00083500000020000A580C80100DD02A2A501
-:10170000806C000020000090209901000000005F24
-:1017100023910100E0021F91803200003000009010
-:10172000209901000000005F23910100E3021F9156
-:10173000803200007000009020A901000000005FCE
-:1017400023910100E6021F91803200000000005F3B
-:1017500023910100E8021F91803200004068009050
-:1017600020A90100E0000040619901002100004033
-:1017700061990100220000406199010023000040AE
-:10178000619901002400004061990100250000409A
-:101790006199010026000040619901002700004086
-:1017A00061990100C000004061990100D01400401F
-:1017B00045990100020100A680B001000403004029
-:1017C00080980100060500A682B0010008070041CC
-:1017D0008298010000000040F0B1010000000041CB
-:1017E000E0B10100300300408530010039030040C2
-:1017F00081320100D814004043990100FF02A2F891
-:10180000806C0000000322F0826C000000000042A7
-:1018100021910100D0142040E1B101003003000CFF
-:10182000853001003003004D851001003003004E6B
-:1018300085100100D014204FE1B101003003004FAA
-:10184000851001003903000C85300100D8142043B5
-:1018500081B001000F0322F09E6E00003903004D9D
-:1018600085100100D814204281B001000F0322F03E
-:101870009E6E00003903004E85100100D8142041EF
-:1018800081B001001103A2F09E6E0000000000492B
-:1018900081E001000000004020950100030000905D
-:1018A000208D010000000043219501000000001B75
-:1018B00089B00100D0142040E1B1010030030017CD
-:1018C00085300100300300588510010030030059B5
-:1018D00085100100D014204FE1B101003003005AFF
-:1018E000851001003903001785300100D81420400D
-:1018F00081B00100230322F09E6E000039030058DE
-:1019000085100100D814204181B00100230322F08A
-:101910009E6E00003903005985100100D814204242
-:1019200081B001002703A2F09E6E0000030000902A
-:10193000208D0100000000402095010000000018EB
-:1019400089B001000000004088E001002F03A2429E
-:10195000217D0000A5A5004081980100D014204001
-:10196000E0B101003003004484300100390300403D
-:1019700081320100D814204081B201002F03A2F06F
-:10198000806C00000000004189E00100E000804020
-:10199000619901007015004047990100000000485E
-:1019A000F1B1010000000042F0B10100D01400408C
-:1019B000F19901000000005587B4010004000040C7
-:1019C0006199010070150043629901003603A84037
-:1019D000813200004103004081B2000070150040D8
-:1019E0004799010000000048F1B10100D8140040FF
-:1019F000F199010000000042F0B101000000005523
-:101A000087B4010002000040619901007015004395
-:101A1000629901003F03A8408132000000000048A5
-:101A200087B001004203A241875000000000A2F2EB
-:101A300086B00000100000F186F40100410326404A
-:101A4000813200000400004081B200000000004725
-:101A500084B001000000A248848400000000005F00
-:101A600061B101000000005C8F90010000000047A0
-:101A700062B101004903A84081320000F59F004790
-:101A800098300100000800478EC801004703005C41
-:101A90008F800000E00000406199010058152D4042
-:101AA0008DB00100D0142DF088B00100000000FAC4
-:101AB0008AB001000000004581B001000700004528
-:101AC00082880100000000438BF001000000004804
-:101AD00083E00100000000468294010020000041E4
-:101AE00060990100000000418DC001006403225F85
-:101AF0008D6C00005503A24181500000530300404B
-:101B000081B20000080000408598010000000044F8
-:101B100082B001000000004186B00100001C0043BB
-:101B200086D801000000A6418550010060030041F5
-:101B300083E000005E0300408132010000000048A5
-:101B400085E00100D0142F4684940100200000425B
-:101B500060990100C00000406199010000008040D0
-:101B600081B20100070000458088010000000043A9
-:101B70008BF0010000040040839801006F03A04136
-:101B8000815000006D03004182E8000000008041A8
-:101B90008EC00100AE030040A39901000000005474
-:101BA00081B00100601500408598010008000040E8
-:101BB00040E401000000005A419401000000005080
-:101BC00041E001000000004240940100000000419B
-:101BD00081C001000000A355816C0100000000419C
-:101BE000A3C101007303005085C000000000004045
-:101BF00049B1010000020040839801000016004036
-:101C00004599010000000040F1B101007E03A241AE
-:101C1000835000000000004085B001000B0000442C
-:101C200082F401001A1500A686B00100701500406C
-:101C30004599010000080040F199010000000042B0
-:101C4000F0B1010000160040E199010004000040DD
-:101C50006199010070150043629901008803A84052
-:101C6000813200008A03225A737D00007A0000400E
-:101C7000619901008B03A8B17E3100000008004289
-:101C800084C801008303A24183500000000080400B
-:101C900081B201000400004081B200000400004055
-:101CA00081B200000400004081B200000400004046
-:101CB00081B200000400004081B200000400004036
-:101CC00081B200000400004081B200000400004026
-:101CD00081B200000400004081B200000400004016
-:101CE00081B200000400004081B200000400004006
-:101CF00081B200000400004081B2000004000040F6
-:101D000081B200000400004081B2000004000040E5
-:101D100081B200000400004081B2000004000040D5
-:101D200081B200000400004081B2000004000040C5
-:101D300081B200000400004081B2000004000040B5
-:101D400081B200000400004081B2000004000040A5
-:101D500081B200000400004081B200000400004095
-:101D600081B200000400004081B200000400004085
-:101D700081B200000400004081B200000400004075
-:101D800081B200000400004081B200000400004065
-:101D900081B200000400004081B200000400004055
-:101DA00081B200000400004081B200000400004045
-:101DB00081B200000400004081B200000400004035
-:101DC00081B200000400004081B200000400004025
-:101DD00081B200000400004081B200000400004015
-:101DE00081B200000400004081B200000400004005
-:101DF00081B200000400004081B2000004000040F5
-:101E000081B200000400004081B2000004000040E4
-:101E100081B200000400004081B2000004000040D4
-:101E200081B200000400004081B2000004000040C4
-:101E300081B200000400004081B2000004000040B4
-:101E400081B200000400004081B2000004000040A4
-:101E500081B200000400004081B200000400004094
-:101E600081B200000400004081B200000400004084
-:101E700081B200000400004081B200000400004074
-:101E800081B200000400004081B200000400004064
-:101E900081B200000400004081B200000400004054
-:101EA00081B200000400004081B200000400004044
-:101EB00081B200000400004081B200000400004034
-:101EC00081B200000400004081B200000400004024
-:101ED00081B200000400004081B200000400004014
-:101EE00081B200000400004081B200000400004004
-:101EF00081B200000400004081B2000004000040F4
-:101F000081B200000400004081B2000004000040E3
-:101F100081B200000400004081B2000004000040D3
-:101F200081B200000400004081B2000004000040C3
-:101F300081B200000400004081B2000004000040B3
-:101F400081B200000400004081B2000004000040A3
-:101F500081B200000400004081B200000400004093
-:101F600081B200000400004081B200000400004083
-:101F700081B200000400004081B200000400004073
-:101F800081B200000400004081B200000400004063
-:101F900081B200000400004081B200000400004053
-:101FA00081B200000400004081B200000400004043
-:101FB00081B200000400004081B200000400004033
-:101FC00081B200000400004081B200000400004023
-:101FD00081B200000400004081B200000400004013
-:101FE00081B200000400004081B200000400004003
-:101FF00081B200000400004081B2000004000040F3
-:1020000081B200000400004081B2000004000040E2
-:1020100081B200000400004081B2000004000040D2
-:1020200081B200000400004081B2000004000040C2
-:1020300081B200000400004081B2000004000040B2
-:1020400081B200000400004081B2000004000040A2
-:1020500081B200000400004081B200000400004092
-:1020600081B200000400004081B200000400004082
-:1020700081B200000400004081B200000400004072
-:1020800081B200000400004081B200000400004062
-:1020900081B200000400004081B200000400004052
-:1020A00081B200000400004081B200000400004042
-:1020B00081B200000400004081B200000400004032
-:1020C00081B200000400004081B200000400004022
-:1020D00081B200000400004081B200000400004012
-:1020E00081B200000400004081B200000400004002
-:1020F00081B200000400004081B2000004000040F2
-:1021000081B200000400004081B2000004000040E1
-:1021100081B200000400004081B2000004000040D1
-:1021200081B200000400004081B2000004000040C1
-:1021300081B200000400004081B2000004000040B1
-:1021400081B200000400004081B2000004000040A1
-:1021500081B200000400004081B200000400004091
-:1021600081B200000400004081B200000400004081
-:1021700081B200000400004081B200000400004071
-:1021800081B200000400004081B200000400004061
-:1021900081B200000400004081B200000400004051
-:1021A00081B200000400004081B200000400004041
-:1021B00081B200000400004081B200000400004031
-:1021C00081B200000400004081B200000400004021
-:1021D00081B200000400004081B200000400004011
-:1021E00081B200000400004081B200000400004001
-:1021F00081B200000400004081B2000004000040F1
-:1022000081B200000400004081B2000004000040E0
-:1022100081B200000400004081B2000004000040D0
-:1022200081B200000400004081B2000004000040C0
-:1022300081B200000400004081B2000004000040B0
-:1022400081B200000400004081B2000004000040A0
-:1022500081B200000400004081B200000400004090
-:1022600081B200000400004081B200000400004080
-:1022700081B200000400004081B200000400004070
-:1022800081B200000400004081B200000400004060
-:1022900081B200000400004081B200000400004050
-:1022A00081B200000400004081B200000400004040
-:1022B00081B200000400004081B200000400004030
-:1022C00081B200000400004081B200000400004020
-:1022D00081B200000400004081B200000400004010
-:1022E00081B200000400004081B200000400004000
-:1022F00081B200000400004081B2000004000040F0
-:1023000081B200000400004081B2000004000040DF
-:1023100081B200000400004081B2000004000040CF
-:1023200081B200000400004081B2000004000040BF
-:1023300081B200000400004081B2000004000040AF
-:1023400081B200000400004081B20000040000409F
-:1023500081B200000400004081B20000040000408F
-:1023600081B200000400004081B20000040000407F
-:1023700081B200000400004081B20000040000406F
-:1023800081B200000400004081B20000040000405F
-:1023900081B200000400004081B20000040000404F
-:1023A00081B200000400004081B20000040000403F
-:1023B00081B200000400004081B20000040000402F
-:1023C00081B200000400004081B20000040000401F
-:1023D00081B200000400004081B20000040000400F
-:1023E00081B200000400004081B2000004000040FF
-:1023F00081B200000400004081B2000004000040EF
-:1024000081B200000400004081B2000004000040DE
-:1024100081B200000400004081B2000004000040CE
-:1024200081B200000400004081B2000004000040BE
-:1024300081B200000400004081B2000004000040AE
-:1024400081B200000400004081B20000040000409E
-:1024500081B200000400004081B20000040000408E
-:1024600081B200000400004081B20000040000407E
-:1024700081B200000400004081B20000040000406E
-:1024800081B200000400004081B20000040000405E
-:1024900081B200000400004081B20000040000404E
-:1024A00081B200000400004081B20000040000403E
-:1024B00081B200000400004081B20000040000402E
-:1024C00081B200000400004081B20000040000401E
-:1024D00081B200000400004081B20000040000400E
-:1024E00081B200000400004081B2000004000040FE
-:1024F00081B200000400004081B2000004000040EE
-:1025000081B200000400004081B2000004000040DD
-:1025100081B200000400004081B2000004000040CD
-:1025200081B200000400004081B2000004000040BD
-:1025300081B200000400004081B2000004000040AD
-:1025400081B200000400004081B20000040000409D
-:1025500081B200000400004081B20000040000408D
-:1025600081B200000400004081B20000040000407D
-:1025700081B200000400004081B20000040000406D
-:1025800081B200000400004081B20000040000405D
-:1025900081B200000400004081B20000040000404D
-:1025A00081B200000400004081B20000040000403D
-:1025B00081B200000400004081B20000040000402D
-:1025C00081B200000400004081B20000040000401D
-:1025D00081B200000400004081B20000040000400D
-:1025E00081B200000400004081B2000004000040FD
-:1025F00081B200000400004081B2000004000040ED
-:1026000081B200000400004081B2000004000040DC
-:1026100081B200000400004081B2000004000040CC
-:1026200081B200000400004081B2000004000040BC
-:1026300081B200000400004081B2000004000040AC
-:1026400081B200000400004081B20000040000409C
-:1026500081B200000400004081B20000040000408C
-:1026600081B200000400004081B20000040000407C
-:1026700081B200000400004081B20000040000406C
-:1026800081B200000400004081B20000040000405C
-:1026900081B200000400004081B20000040000404C
-:1026A00081B200000400004081B20000040000403C
-:1026B00081B200000400004081B20000040000402C
-:1026C00081B200000400004081B20000040000401C
-:1026D00081B200000400004081B20000040000400C
-:1026E00081B200000400004081B2000004000040FC
-:1026F00081B200000400004081B2000004000040EC
-:1027000081B200000400004081B2000004000040DB
-:1027100081B200000400004081B2000004000040CB
-:1027200081B200000400004081B2000004000040BB
-:1027300081B200000400004081B2000004000040AB
-:1027400081B200000400004081B20000040000409B
-:1027500081B200000400004081B20000040000408B
-:1027600081B200000400004081B20000040000407B
-:1027700081B200000400004081B20000040000406B
-:1027800081B200000400004081B20000040000405B
-:1027900081B200000400004081B20000040000404B
-:1027A00081B200000400004081B20000040000403B
-:1027B00081B200000400004081B20000040000402B
-:1027C00081B200000400004081B20000040000401B
-:1027D00081B200000400004081B20000040000400B
-:1027E00081B200000400004081B2000004000040FB
-:1027F00081B200000400004081B2000004000040EB
-:1028000081B200000400004081B2000004000040DA
-:1028100081B200000400004081B2000004000040CA
-:1028200081B200000400004081B2000004000040BA
-:1028300081B200000400004081B2000004000040AA
-:1028400081B200000400004081B20000040000409A
-:1028500081B200000400004081B20000040000408A
-:1028600081B200000400004081B20000040000407A
-:1028700081B200000400004081B20000040000406A
-:1028800081B200000400004081B20000040000405A
-:1028900081B200000400004081B20000040000404A
-:1028A00081B200000400004081B20000040000403A
-:1028B00081B200000400004081B20000040000402A
-:1028C00081B200000400004081B20000040000401A
-:1028D00081B200000400004081B20000040000400A
-:1028E00081B200000400004081B2000004000040FA
-:1028F00081B200000400004081B2000004000040EA
-:1029000081B200000400004081B2000004000040D9
-:1029100081B200000400004081B2000004000040C9
-:1029200081B200000400004081B2000004000040B9
-:1029300081B200000400004081B2000004000040A9
-:1029400081B200000400004081B200000400004099
-:1029500081B200000400004081B200000400004089
-:1029600081B200000400004081B200000400004079
-:1029700081B200000400004081B200000400004069
-:1029800081B200000400004081B200000400004059
-:1029900081B200000400004081B200000400004049
-:1029A00081B200000400004081B200000400004039
-:1029B00081B200000400004081B200000400004029
-:1029C00081B200000400004081B200000400004019
-:1029D00081B200000400004081B200000400004009
-:1029E00081B200000400004081B2000004000040F9
-:1029F00081B200000400004081B2000004000040E9
-:102A000081B200000400004081B2000004000040D8
-:102A100081B200000400004081B2000004000040C8
-:102A200081B200000400004081B2000004000040B8
-:102A300081B200000400004081B2000004000040A8
-:102A400081B200000400004081B200000400004098
-:102A500081B200000400004081B200000400004088
-:102A600081B200000400004081B200000400004078
-:102A700081B200000400004081B200000400004068
-:102A800081B200000400004081B200000400004058
-:102A900081B200000400004081B200000400004048
-:102AA00081B200000400004081B200000400004038
-:102AB00081B200000400004081B200000400004028
-:102AC00081B200000400004081B200000400004018
-:102AD00081B200000400004081B200000400004008
-:102AE00081B200000400004081B2000004000040F8
-:102AF00081B200000400004081B2000004000040E8
-:102B000081B200000400004081B2000004000040D7
-:102B100081B200000400004081B2000004000040C7
-:102B200081B200000400004081B2000004000040B7
-:102B300081B200000400004081B2000004000040A7
-:102B400081B200000400004081B200000400004097
-:102B500081B200000400004081B200000400004087
-:102B600081B200000400004081B200000400004077
-:102B700081B200000400004081B200000400004067
-:102B800081B200000400004081B200000400004057
-:102B900081B200000400004081B200000400004047
-:102BA00081B200000400004081B200000400004037
-:102BB00081B200000400004081B200000400004027
-:102BC00081B200000400004081B200000400004017
-:102BD00081B200000400004081B200000400004007
-:102BE00081B200000400004081B2000004000040F7
-:102BF00081B200000400004081B2000004000040E7
-:102C000081B200000400004081B2000004000040D6
-:102C100081B200000400004081B2000004000040C6
-:102C200081B200000400004081B2000004000040B6
-:102C300081B200000400004081B2000004000040A6
-:102C400081B200000400004081B200000400004096
-:102C500081B200000400004081B200000400004086
-:102C600081B200000400004081B200000400004076
-:102C700081B200000400004081B200000400004066
-:102C800081B200000400004081B200000400004056
-:102C900081B200000400004081B200000400004046
-:102CA00081B200000400004081B200000400004036
-:102CB00081B200000400004081B200000400004026
-:102CC00081B200000400004081B200000400004016
-:102CD00081B200000400004081B200000400004006
-:102CE00081B200000400004081B2000004000040F6
-:102CF00081B200000400004081B2000004000040E6
-:102D000081B200000400004081B2000004000040D5
-:102D100081B200000400004081B2000004000040C5
-:102D200081B200000400004081B2000004000040B5
-:102D300081B200000400004081B2000004000040A5
-:102D400081B200000400004081B200000400004095
-:102D500081B200000400004081B200000400004085
-:102D600081B200000400004081B200000400004075
-:102D700081B200000400004081B200000400004065
-:102D800081B200000400004081B200000400004055
-:102D900081B200000400004081B200000400004045
-:102DA00081B200000400004081B200000400004035
-:102DB00081B200000400004081B200000400004025
-:102DC00081B200000400004081B200000400004015
-:102DD00081B200000400004081B200000400004005
-:102DE00081B200000400004081B2000004000040F5
-:102DF00081B200000400004081B2000004000040E5
-:102E000081B200000400004081B2000004000040D4
-:102E100081B200000400004081B2000004000040C4
-:102E200081B200000400004081B2000004000040B4
-:102E300081B200000400004081B2000004000040A4
-:102E400081B200000400004081B200000400004094
-:102E500081B200000400004081B200000400004084
-:102E600081B200000400004081B200000400004074
-:102E700081B200000400004081B200000400004064
-:102E800081B200000400004081B200000400004054
-:102E900081B200000400004081B200000400004044
-:102EA00081B200000400004081B200000400004034
-:102EB00081B200000400004081B200000400004024
-:102EC00081B200000400004081B200000400004014
-:102ED00081B200000400004081B200000400004004
-:102EE00081B200000400004081B2000004000040F4
-:102EF00081B200000400004081B2000004000040E4
-:102F000081B200000400004081B2000004000040D3
-:102F100081B200000400004081B2000004000040C3
-:102F200081B200000400004081B2000004000040B3
-:102F300081B200000400004081B2000004000040A3
-:102F400081B200000400004081B200000400004093
-:102F500081B200000400004081B200000400004083
-:102F600081B200000400004081B200000400004073
-:102F700081B200000400004081B200000400004063
-:102F800081B200000400004081B200000400004053
-:102F900081B200000400004081B200000400004043
-:102FA00081B200000400004081B200000400004033
-:102FB00081B200000400004081B200000400004023
-:102FC00081B200000400004081B200000400004013
-:102FD00081B200000400004081B200000400004003
-:102FE00081B200000400004081B2000004000040F3
-:102FF00081B200000400004081B2000004000040E3
-:1030000081B200000400004081B2000004000040D2
-:1030100081B200000400004081B2000004000040C2
-:1030200081B200000400004081B2000004000040B2
-:1030300081B200000400004081B2000004000040A2
-:1030400081B200000400004081B200000400004092
-:1030500081B200000400004081B200000400004082
-:1030600081B200000400004081B200000400004072
-:1030700081B200000400004081B200000400004062
-:1030800081B200000400004081B200000400004052
-:1030900081B200000400004081B200000400004042
-:1030A00081B200000400004081B200000400004032
-:1030B00081B200000400004081B200000400004022
-:1030C00081B200000400004081B200000400004012
-:1030D00081B200000400004081B200000400004002
-:1030E00081B200000400004081B2000004000040F2
-:1030F00081B200000400004081B2000004000040E2
-:1031000081B200000400004081B2000004000040D1
-:1031100081B200000400004081B2000004000040C1
-:1031200081B200000400004081B2000004000040B1
-:1031300081B200000400004081B2000004000040A1
-:1031400081B200000400004081B200000400004091
-:1031500081B200000400004081B200000400004081
-:1031600081B200000400004081B200000400004071
-:1031700081B200000400004081B200000400004061
-:1031800081B200000400004081B200000400004051
-:1031900081B200000400004081B200000400004041
-:1031A00081B200000400004081B200000400004031
-:1031B00081B200000400004081B200000400004021
-:1031C00081B200000400004081B200000400004011
-:1031D00081B200000400004081B200000400004001
-:1031E00081B200000400004081B2000004000040F1
-:1031F00081B200000400004081B2000004000040E1
-:1032000081B200000400004081B2000004000040D0
-:1032100081B200000400004081B2000004000040C0
-:1032200081B200000400004081B2000004000040B0
-:1032300081B200000400004081B2000004000040A0
-:1032400081B200000400004081B200000400004090
-:1032500081B200000400004081B200000400004080
-:1032600081B200000400004081B200000400004070
-:1032700081B200000400004081B200000400004060
-:1032800081B200000400004081B200000400004050
-:1032900081B200000400004081B200000400004040
-:1032A00081B200000400004081B200000400004030
-:1032B00081B200000400004081B200000400004020
-:1032C00081B200000400004081B200000400004010
-:1032D00081B200000400004081B200000400004000
-:1032E00081B200000400004081B2000004000040F0
-:1032F00081B200000400004081B2000004000040E0
-:1033000081B200000400004081B2000004000040CF
-:1033100081B200000400004081B2000004000040BF
-:1033200081B200000400004081B2000004000040AF
-:1033300081B200000400004081B20000040000409F
-:1033400081B200000400004081B20000040000408F
-:1033500081B200000400004081B20000040000407F
-:1033600081B200000400004081B20000040000406F
-:1033700081B200000400004081B20000040000405F
-:1033800081B200000400004081B20000040000404F
-:1033900081B200000400004081B20000040000403F
-:1033A00081B200000400004081B20000040000402F
-:1033B00081B200000400004081B20000040000401F
-:1033C00081B200000400004081B20000040000400F
-:1033D00081B200000400004081B2000004000040FF
-:1033E00081B200000400004081B2000004000040EF
-:1033F00081B200000400004081B2000004000040DF
-:1034000081B200000400004081B2000004000040CE
-:1034100081B200000400004081B2000004000040BE
-:1034200081B200000400004081B2000004000040AE
-:1034300081B200000400004081B20000040000409E
-:1034400081B200000400004081B20000040000408E
-:1034500081B200000400004081B20000040000407E
-:1034600081B200000400004081B20000040000406E
-:1034700081B200000400004081B20000040000405E
-:1034800081B200000400004081B20000040000404E
-:1034900081B200000400004081B20000040000403E
-:1034A00081B200000400004081B20000040000402E
-:1034B00081B200000400004081B20000040000401E
-:1034C00081B200000400004081B20000040000400E
-:1034D00081B200000400004081B2000004000040FE
-:1034E00081B200000400004081B2000004000040EE
-:1034F00081B200000400004081B2000004000040DE
-:1035000081B200000400004081B2000004000040CD
-:1035100081B200000400004081B2000004000040BD
-:1035200081B200000400004081B2000004000040AD
-:1035300081B200000400004081B20000040000409D
-:1035400081B200000400004081B20000040000408D
-:1035500081B200000400004081B20000040000407D
-:1035600081B200000400004081B20000040000406D
-:1035700081B200000400004081B20000040000405D
-:1035800081B200000400004081B20000040000404D
-:1035900081B200000400004081B20000040000403D
-:1035A00081B200000400004081B20000040000402D
-:1035B00081B200000400004081B20000040000401D
-:1035C00081B200000400004081B20000040000400D
-:1035D00081B200000400004081B2000004000040FD
-:1035E00081B200000400004081B2000004000040ED
-:1035F00081B200000400004081B2000004000040DD
-:1036000081B200000400004081B2000004000040CC
-:1036100081B200000400004081B2000004000040BC
-:1036200081B200000400004081B2000004000040AC
-:1036300081B200000400004081B20000040000409C
-:1036400081B200000400004081B20000040000408C
-:1036500081B200000400004081B20000040000407C
-:1036600081B200000400004081B20000040000406C
-:1036700081B200000400004081B20000040000405C
-:1036800081B200000400004081B20000040000404C
-:1036900081B200000400004081B20000040000403C
-:1036A00081B200000400004081B20000040000402C
-:1036B00081B200000400004081B20000040000401C
-:1036C00081B200000400004081B20000040000400C
-:1036D00081B200000400004081B2000004000040FC
-:1036E00081B200000400004081B2000004000040EC
-:1036F00081B200000400004081B2000004000040DC
-:1037000081B200000400004081B2000004000040CB
-:1037100081B200000400004081B2000004000040BB
-:1037200081B200000400004081B2000004000040AB
-:1037300081B200000400004081B20000040000409B
-:1037400081B200000400004081B20000040000408B
-:1037500081B200000400004081B20000040000407B
-:1037600081B200000400004081B20000040000406B
-:1037700081B200000400004081B20000040000405B
-:1037800081B200000400004081B20000040000404B
-:1037900081B200000400004081B20000040000403B
-:1037A00081B200000400004081B20000040000402B
-:1037B00081B200000400004081B20000040000401B
-:1037C00081B200000400004081B20000040000400B
-:1037D00081B200000400004081B2000004000040FB
-:1037E00081B200000400004081B2000004000040EB
-:1037F00081B200000400004081B2000004000040DB
-:1038000081B200000400004081B2000004000040CA
-:1038100081B200000400004081B2000004000040BA
-:1038200081B200000400004081B2000004000040AA
-:1038300081B200000400004081B20000040000409A
-:1038400081B200000400004081B20000040000408A
-:1038500081B200000400004081B20000040000407A
-:1038600081B200000400004081B20000040000406A
-:1038700081B200000400004081B20000040000405A
-:1038800081B200000400004081B20000040000404A
-:1038900081B200000400004081B20000040000403A
-:1038A00081B200000400004081B20000040000402A
-:1038B00081B200000400004081B20000040000401A
-:1038C00081B200000400004081B20000040000400A
-:1038D00081B200000400004081B2000004000040FA
-:1038E00081B200000400004081B2000004000040EA
-:1038F00081B200000400004081B2000004000040DA
-:1039000081B200000400004081B2000004000040C9
-:1039100081B200000400004081B2000004000040B9
-:1039200081B200000400004081B2000004000040A9
-:1039300081B200000400004081B200000400004099
-:1039400081B200000400004081B200000400004089
-:1039500081B200000400004081B200000400004079
-:1039600081B200000400004081B200000400004069
-:1039700081B200000400004081B200000400004059
-:1039800081B200000400004081B200000400004049
-:1039900081B200000400004081B200000400004039
-:1039A00081B200000400004081B200000400004029
-:1039B00081B200000400004081B200000400004019
-:1039C00081B200000400004081B200000400004009
-:1039D00081B200000400004081B2000004000040F9
-:1039E00081B200000400004081B2000004000040E9
-:1039F00081B200000400004081B2000004000040D9
-:103A000081B200000400004081B2000004000040C8
-:103A100081B200000400004081B2000004000040B8
-:103A200081B200000400004081B2000004000040A8
-:103A300081B200000400004081B200000400004098
-:103A400081B200000400004081B200000400004088
-:103A500081B200000400004081B200000400004078
-:103A600081B200000400004081B200000400004068
-:103A700081B200000400004081B200000400004058
-:103A800081B200000400004081B200000400004048
-:103A900081B200000400004081B200000400004038
-:103AA00081B200000400004081B200000400004028
-:103AB00081B200000400004081B200000400004018
-:103AC00081B200000400004081B200000400004008
-:103AD00081B200000400004081B2000004000040F8
-:103AE00081B200000400004081B2000004000040E8
-:103AF00081B200000400004081B2000004000040D8
-:103B000081B200000400004081B2000004000040C7
-:103B100081B200000400004081B2000004000040B7
-:103B200081B200000400004081B2000004000040A7
-:103B300081B200000400004081B200000400004097
-:103B400081B200000400004081B200000400004087
-:103B500081B200000400004081B200000400004077
-:103B600081B200000400004081B200000400004067
-:103B700081B200000400004081B200000400004057
-:103B800081B200000400004081B200000400004047
-:103B900081B200000400004081B200000400004037
-:103BA00081B200000400004081B200000400004027
-:103BB00081B200000400004081B200000400004017
-:103BC00081B200000400004081B200000400004007
-:103BD00081B200000400004081B2000004000040F7
-:103BE00081B200000400004081B2000004000040E7
-:103BF00081B200000400004081B2000004000040D7
-:103C000081B200000400004081B2000004000040C6
-:103C100081B200000400004081B2000004000040B6
-:103C200081B200000400004081B2000004000040A6
-:103C300081B200000400004081B200000400004096
-:103C400081B200000400004081B200000400004086
-:103C500081B200000400004081B200000400004076
-:103C600081B200000400004081B200000400004066
-:103C700081B200000400004081B200000400004056
-:103C800081B200000400004081B200000400004046
-:103C900081B200000400004081B200000400004036
-:103CA00081B200000400004081B200000400004026
-:103CB00081B200000400004081B200000400004016
-:103CC00081B200000400004081B200000400004006
-:103CD00081B200000400004081B2000004000040F6
-:103CE00081B200000400004081B2000004000040E6
-:103CF00081B200000400004081B2000004000040D6
-:103D000081B200000400004081B2000004000040C5
-:103D100081B200000400004081B2000004000040B5
-:103D200081B200000400004081B2000004000040A5
-:103D300081B200000400004081B200000400004095
-:103D400081B200000400004081B200000400004085
-:103D500081B200000400004081B200000400004075
-:103D600081B200000400004081B200000400004065
-:103D700081B200000400004081B200000400004055
-:103D800081B200000400004081B200000400004045
-:103D900081B200000400004081B200000400004035
-:103DA00081B200000400004081B200000400004025
-:103DB00081B200000400004081B200000400004015
-:103DC00081B200000400004081B200000400004005
-:103DD00081B200000400004081B2000004000040F5
-:103DE00081B200000400004081B2000004000040E5
-:103DF00081B200000400004081B2000004000040D5
-:103E000081B200000400004081B2000004000040C4
-:103E100081B200000400004081B2000004000040B4
-:103E200081B200000400004081B2000004000040A4
-:103E300081B200000400004081B200000400004094
-:103E400081B200000400004081B200000400004084
-:103E500081B200000400004081B200000400004074
-:103E600081B200000400004081B200000400004064
-:103E700081B200000400004081B200000400004054
-:103E800081B200000400004081B200000400004044
-:103E900081B200000400004081B200000400004034
-:103EA00081B200000400004081B200000400004024
-:103EB00081B200000400004081B200000400004014
-:103EC00081B200000400004081B200000400004004
-:103ED00081B200000400004081B2000004000040F4
-:103EE00081B200000400004081B2000004000040E4
-:103EF00081B200000400004081B2000004000040D4
-:103F000081B200000400004081B2000004000040C3
-:103F100081B200000400004081B2000004000040B3
-:103F200081B200000400004081B2000004000040A3
-:103F300081B200000400004081B200000400004093
-:103F400081B200000400004081B200000400004083
-:103F500081B200000400004081B200000400004073
-:103F600081B200000400004081B200000400004063
-:103F700081B200000400004081B200000400004053
-:103F800081B200000400004081B200000400004043
-:103F900081B200000400004081B200000400004033
-:103FA00081B200000400004081B200000400004023
-:103FB00081B200000400004081B200000400004013
-:103FC00081B200000400004081B200000400004003
-:103FD00081B200000400004081B2000004000040F3
-:103FE00081B200000400004081B2000004000040E3
-:103FF00081B200000400004081B2000004000040D3
-:1040000081B200000400004081B2000004000040C2
-:1040100081B200000400004081B2000004000040B2
-:1040200081B200000400004081B2000004000040A2
-:1040300081B200000400004081B200000400004092
-:1040400081B200000400004081B200000400004082
-:1040500081B200000400004081B200000400004072
-:1040600081B200000400004081B200000400004062
-:1040700081B200000400004081B200000400004052
-:1040800081B200000400004081B200000400004042
-:1040900081B200000400004081B200000400004032
-:1040A00081B200000400004081B200000400004022
-:1040B00081B200000400004081B200000400004012
-:1040C00081B200000400004081B200000400004002
-:1040D00081B200000400004081B2000004000040F2
-:1040E00081B200000400004081B2000004000040E2
-:1040F00081B200000400004081B2000004000040D2
-:1041000081B200000400004081B2000004000040C1
-:1041100081B200000400004081B2000004000040B1
-:1041200081B200000400004081B2000004000040A1
-:1041300081B200000400004081B200000400004091
-:1041400081B200000400004081B200000400004081
-:1041500081B200000400004081B200000400004071
-:1041600081B200000400004081B200000400004061
-:1041700081B200000400004081B200000400004051
-:1041800081B200000400004081B200000400004041
-:1041900081B200000400004081B200000400004031
-:1041A00081B200000400004081B200000400004021
-:1041B00081B200000400004081B200000400004011
-:1041C00081B200000400004081B200000400004001
-:1041D00081B200000400004081B2000004000040F1
-:1041E00081B200000400004081B2000004000040E1
-:1041F00081B200000400004081B2000004000040D1
-:1042000081B200000400004081B2000004000040C0
-:1042100081B200000400004081B2000004000040B0
-:1042200081B200000400004081B2000004000040A0
-:1042300081B200000400004081B200000400004090
-:1042400081B200000400004081B200000400004080
-:1042500081B200000400004081B200000400004070
-:1042600081B200000400004081B200000400004060
-:1042700081B200000400004081B200000400004050
-:1042800081B200000400004081B200000400004040
-:1042900081B200000400004081B200000400004030
-:1042A00081B200000400004081B200000400004020
-:1042B00081B200000400004081B200000400004010
-:1042C00081B200000400004081B200000400004000
-:1042D00081B200000400004081B2000004000040F0
-:1042E00081B200000400004081B2000004000040E0
-:1042F00081B200000400004081B2000004000040D0
-:1043000081B200000400004081B2000004000040BF
-:1043100081B200000400004081B2000004000040AF
-:1043200081B200000400004081B20000040000409F
-:1043300081B200000400004081B20000040000408F
-:1043400081B200000400004081B20000040000407F
-:1043500081B200000400004081B20000040000406F
-:1043600081B200000400004081B20000040000405F
-:1043700081B200000400004081B20000040000404F
-:1043800081B200000400004081B20000040000403F
-:1043900081B200000400004081B20000040000402F
-:1043A00081B200000400004081B20000040000401F
-:1043B00081B200000400004081B20000040000400F
-:1043C00081B200000400004081B2000004000040FF
-:1043D00081B200000400004081B2000004000040EF
-:1043E00081B200000400004081B2000004000040DF
-:1043F00081B200000400004081B2000004000040CF
-:1044000081B200000400004081B2000004000040BE
-:1044100081B200000400004081B2000004000040AE
-:1044200081B200000400004081B20000040000409E
-:1044300081B200000400004081B20000040000408E
-:1044400081B200000400004081B20000040000407E
-:1044500081B200000400004081B20000040000406E
-:1044600081B200000400004081B20000040000405E
-:1044700081B200000400004081B20000040000404E
-:1044800081B200000400004081B20000040000403E
-:1044900081B200000400004081B20000040000402E
-:1044A00081B200000400004081B20000040000401E
-:1044B00081B200000400004081B20000040000400E
-:1044C00081B200000400004081B2000004000040FE
-:1044D00081B200000400004081B2000004000040EE
-:1044E00081B200000400004081B2000004000040DE
-:1044F00081B200000400004081B2000004000040CE
-:1045000081B200000400004081B2000004000040BD
-:1045100081B200000400004081B2000004000040AD
-:1045200081B200000400004081B20000040000409D
-:1045300081B200000400004081B20000040000408D
-:1045400081B200000400004081B20000040000407D
-:1045500081B200000400004081B20000040000406D
-:1045600081B200000400004081B20000040000405D
-:1045700081B200000400004081B20000040000404D
-:1045800081B200000400004081B20000040000403D
-:1045900081B200000400004081B20000040000402D
-:1045A00081B200000400004081B20000040000401D
-:1045B00081B200000400004081B20000040000400D
-:1045C00081B200000400004081B2000004000040FD
-:1045D00081B200000400004081B2000004000040ED
-:1045E00081B200000400004081B2000004000040DD
-:1045F00081B200000400004081B2000004000040CD
-:1046000081B200000400004081B2000004000040BC
-:1046100081B200000400004081B2000004000040AC
-:1046200081B200000400004081B20000040000409C
-:1046300081B200000400004081B20000040000408C
-:1046400081B200000400004081B20000040000407C
-:1046500081B200000400004081B20000040000406C
-:1046600081B200000400004081B20000040000405C
-:1046700081B200000400004081B20000040000404C
-:1046800081B200000400004081B20000040000403C
-:1046900081B200000400004081B20000040000402C
-:1046A00081B200000400004081B20000040000401C
-:1046B00081B200000400004081B20000040000400C
-:1046C00081B200000400004081B2000004000040FC
-:1046D00081B200000400004081B2000004000040EC
-:1046E00081B200000400004081B2000004000040DC
-:1046F00081B200000400004081B2000004000040CC
-:1047000081B200000400004081B2000004000040BB
-:1047100081B200000400004081B2000004000040AB
-:1047200081B200000400004081B20000040000409B
-:1047300081B200000400004081B20000040000408B
-:1047400081B200000400004081B20000040000407B
-:1047500081B200000400004081B20000040000406B
-:1047600081B200000400004081B20000040000405B
-:1047700081B200000400004081B20000040000404B
-:1047800081B200000400004081B20000040000403B
-:1047900081B200000400004081B20000040000402B
-:1047A00081B200000400004081B20000040000401B
-:1047B00081B200000400004081B20000040000400B
-:1047C00081B200000400004081B2000004000040FB
-:1047D00081B200000400004081B2000004000040EB
-:1047E00081B200000400004081B2000004000040DB
-:1047F00081B200000400004081B2000004000040CB
-:1048000081B200000400004081B2000004000040BA
-:1048100081B200000400004081B2000004000040AA
-:1048200081B200000400004081B20000040000409A
-:1048300081B200000400004081B20000040000408A
-:1048400081B200000400004081B20000040000407A
-:1048500081B200000400004081B20000040000406A
-:1048600081B200000400004081B20000040000405A
-:1048700081B200000400004081B20000040000404A
-:1048800081B200000400004081B20000040000403A
-:1048900081B200000400004081B20000040000402A
-:1048A00081B200000400004081B20000040000401A
-:1048B00081B200000400004081B20000040000400A
-:1048C00081B200000400004081B2000004000040FA
-:1048D00081B200000400004081B2000004000040EA
-:1048E00081B200000400004081B2000004000040DA
-:1048F00081B200000400004081B2000004000040CA
-:1049000081B200000400004081B2000004000040B9
-:1049100081B200000400004081B2000004000040A9
-:1049200081B200000400004081B200000400004099
-:1049300081B200000400004081B200000400004089
-:1049400081B200000400004081B200000400004079
-:1049500081B200000400004081B200000400004069
-:1049600081B200000400004081B200000400004059
-:1049700081B200000400004081B200000400004049
-:1049800081B200000400004081B200000400004039
-:1049900081B200000400004081B200000400004029
-:1049A00081B200000400004081B200000400004019
-:1049B00081B200000400004081B200000400004009
-:1049C00081B200000400004081B2000004000040F9
-:1049D00081B200000400004081B2000004000040E9
-:1049E00081B200000400004081B2000004000040D9
-:1049F00081B200000400004081B2000004000040C9
-:104A000081B200000400004081B2000004000040B8
-:104A100081B200000400004081B2000004000040A8
-:104A200081B200000400004081B200000400004098
-:104A300081B200000400004081B200000400004088
-:104A400081B200000400004081B200000400004078
-:104A500081B200000400004081B200000400004068
-:104A600081B200000400004081B200000400004058
-:104A700081B200000400004081B200000400004048
-:104A800081B200000400004081B200000400004038
-:104A900081B200000400004081B200000400004028
-:104AA00081B200000400004081B200000400004018
-:104AB00081B200000400004081B200000400004008
-:104AC00081B200000400004081B2000004000040F8
-:104AD00081B200000400004081B2000004000040E8
-:104AE00081B200000400004081B2000004000040D8
-:104AF00081B200000400004081B2000004000040C8
-:104B000081B200000400004081B2000004000040B7
-:104B100081B200000400004081B2000004000040A7
-:104B200081B200000400004081B200000400004097
-:104B300081B200000400004081B200000400004087
-:104B400081B200000400004081B200000400004077
-:104B500081B200000400004081B200000400004067
-:104B600081B200000400004081B200000400004057
-:104B700081B200000400004081B200000400004047
-:104B800081B200000400004081B200000400004037
-:104B900081B200000400004081B200000400004027
-:104BA00081B200000400004081B200000400004017
-:104BB00081B200000400004081B200000400004007
-:104BC00081B200000400004081B2000004000040F7
-:104BD00081B200000400004081B2000004000040E7
-:104BE00081B200000400004081B2000004000040D7
-:104BF00081B200000400004081B2000004000040C7
-:104C000081B200000400004081B2000004000040B6
-:104C100081B200000400004081B2000004000040A6
-:104C200081B200000400004081B200000400004096
-:104C300081B200000400004081B200000400004086
-:104C400081B200000400004081B200000400004076
-:104C500081B200000400004081B200000400004066
-:104C600081B200000400004081B200000400004056
-:104C700081B200000400004081B200000400004046
-:104C800081B200000400004081B200000400004036
-:104C900081B200000400004081B200000400004026
-:104CA00081B200000400004081B200000400004016
-:104CB00081B200000400004081B200000400004006
-:104CC00081B200000400004081B2000004000040F6
-:104CD00081B200000400004081B2000004000040E6
-:104CE00081B200000400004081B2000004000040D6
-:104CF00081B200000400004081B2000004000040C6
-:104D000081B200000400004081B2000004000040B5
-:104D100081B200000400004081B2000004000040A5
-:104D200081B200000400004081B200000400004095
-:104D300081B200000400004081B200000400004085
-:104D400081B200000400004081B200000400004075
-:104D500081B200000400004081B200000400004065
-:104D600081B200000400004081B200000400004055
-:104D700081B200000400004081B200000400004045
-:104D800081B200000400004081B200000400004035
-:104D900081B200000400004081B200000400004025
-:104DA00081B200000400004081B200000400004015
-:104DB00081B200000400004081B200000400004005
-:104DC00081B200000400004081B2000004000040F5
-:104DD00081B200000400004081B2000004000040E5
-:104DE00081B200000400004081B2000004000040D5
-:104DF00081B200000400004081B2000004000040C5
-:104E000081B200000400004081B2000004000040B4
-:104E100081B200000400004081B2000004000040A4
-:104E200081B200000400004081B200000400004094
-:104E300081B200000400004081B200000400004084
-:104E400081B200000400004081B200000400004074
-:104E500081B200000400004081B200000400004064
-:104E600081B200000400004081B200000400004054
-:104E700081B200000400004081B200000400004044
-:104E800081B200000400004081B200000400004034
-:104E900081B200000400004081B200000400004024
-:104EA00081B200000400004081B200000400004014
-:104EB00081B200000400004081B200000400004004
-:104EC00081B200000400004081B2000004000040F4
-:104ED00081B200000400004081B2000004000040E4
-:104EE00081B200000400004081B2000004000040D4
-:104EF00081B200000400004081B2000004000040C4
-:104F000081B200000400004081B2000004000040B3
-:104F100081B200000400004081B2000004000040A3
-:104F200081B200000400004081B200000400004093
-:104F300081B200000400004081B200000400004083
-:104F400081B200000400004081B200000400004073
-:104F500081B200000400004081B200000400004063
-:104F600081B200000400004081B200000400004053
-:104F700081B200000400004081B200000400004043
-:104F800081B200000400004081B200000400004033
-:104F900081B200000400004081B200000400004023
-:104FA00081B200000400004081B200000400004013
-:104FB00081B200000400004081B200000400004003
-:104FC00081B200000400004081B2000004000040F3
-:104FD00081B200000400004081B2000004000040E3
-:104FE00081B200000400004081B2000004000040D3
-:104FF00081B200000400004081B2000004000040C3
-:1050000081B200000400004081B2000004000040B2
-:1050100081B200000400004081B2000004000040A2
-:1050200081B200000400004081B200000400004092
-:1050300081B200000400004081B200000400004082
-:1050400081B200000400004081B200000400004072
-:1050500081B200000400004081B200000400004062
-:1050600081B200000400004081B200000400004052
-:1050700081B200000400004081B200000400004042
-:1050800081B200000400004081B200000400004032
-:1050900081B200000400004081B200000400004022
-:1050A00081B200000400004081B200000400004012
-:1050B00081B200000400004081B200000400004002
-:1050C00081B200000400004081B2000004000040F2
-:1050D00081B200000400004081B2000004000040E2
-:1050E00081B200000400004081B2000004000040D2
-:1050F00081B200000400004081B2000004000040C2
-:1051000081B200000400004081B2000004000040B1
-:1051100081B200000400004081B2000004000040A1
-:1051200081B200000400004081B200000400004091
-:1051300081B200000400004081B200000400004081
-:1051400081B200000400004081B200000400004071
-:1051500081B200000400004081B200000400004061
-:1051600081B200000400004081B200000400004051
-:1051700081B200000400004081B200000400004041
-:1051800081B200000400004081B200000400004031
-:1051900081B200000400004081B200000400004021
-:1051A00081B200000400004081B200000400004011
-:1051B00081B200000400004081B200000400004001
-:1051C00081B200000400004081B2000004000040F1
-:1051D00081B200000400004081B2000004000040E1
-:1051E00081B200000400004081B2000004000040D1
-:1051F00081B200000400004081B2000004000040C1
-:1052000081B200000400004081B2000004000040B0
-:1052100081B200000400004081B2000004000040A0
-:1052200081B200000400004081B200000400004090
-:1052300081B200000400004081B200000400004080
-:1052400081B200000400004081B200000400004070
-:1052500081B200000400004081B200000400004060
-:1052600081B200000400004081B200000400004050
-:1052700081B200000400004081B200000400004040
-:1052800081B200000400004081B200000400004030
-:1052900081B200000400004081B200000400004020
-:1052A00081B200000400004081B200000400004010
-:1052B00081B200000400004081B200000400004000
-:1052C00081B200000400004081B2000004000040F0
-:1052D00081B200000400004081B2000004000040E0
-:1052E00081B200000400004081B2000004000040D0
-:1052F00081B200000400004081B2000004000040C0
-:1053000081B200000400004081B2000004000040AF
-:1053100081B200000400004081B20000040000409F
-:1053200081B200000400004081B20000040000408F
-:1053300081B200000400004081B20000040000407F
-:1053400081B200000400004081B20000040000406F
-:1053500081B200000400004081B20000040000405F
-:1053600081B200000400004081B20000040000404F
-:1053700081B200000400004081B20000040000403F
-:1053800081B200000400004081B20000040000402F
-:1053900081B200000400004081B20000040000401F
-:1053A00081B200000400004081B20000040000400F
-:1053B00081B200000400004081B2000004000040FF
-:1053C00081B200000400004081B2000004000040EF
-:1053D00081B200000400004081B2000004000040DF
-:1053E00081B200000400004081B2000004000040CF
-:1053F00081B200000400004081B2000004000040BF
-:1054000081B200000400004081B2000004000040AE
-:1054100081B200000400004081B20000040000409E
-:1054200081B200000400004081B20000040000408E
-:1054300081B200000400004081B20000040000407E
-:1054400081B200000400004081B20000040000406E
-:1054500081B200000400004081B20000040000405E
-:1054600081B200000400004081B20000040000404E
-:1054700081B200000400004081B20000040000403E
-:1054800081B200000400004081B20000040000402E
-:1054900081B200000400004081B20000040000401E
-:1054A00081B200000400004081B20000040000400E
-:1054B00081B200000400004081B2000004000040FE
-:1054C00081B200000400004081B2000004000040EE
-:1054D00081B200000400004081B2000004000040DE
-:1054E00081B200000400004081B2000004000040CE
-:1054F00081B200000400004081B2000004000040BE
-:1055000081B200000400004081B2000004000040AD
-:1055100081B200000400004081B20000040000409D
-:1055200081B200000400004081B20000040000408D
-:1055300081B200000400004081B20000040000407D
-:1055400081B200000400004081B20000040000406D
-:1055500081B200000400004081B20000040000405D
-:1055600081B200000400004081B20000040000404D
-:1055700081B200000400004081B20000040000403D
-:1055800081B200000400004081B20000040000402D
-:1055900081B200000400004081B20000040000401D
-:1055A00081B200000400004081B20000040000400D
-:1055B00081B200000400004081B2000004000040FD
-:1055C00081B200000400004081B2000004000040ED
-:1055D00081B200000400004081B2000004000040DD
-:1055E00081B200000400004081B2000004000040CD
-:1055F00081B200000400004081B2000004000040BD
-:1056000081B200000400004081B2000004000040AC
-:1056100081B200000400004081B20000040000409C
-:1056200081B200000400004081B20000040000408C
-:1056300081B200000400004081B20000040000407C
-:1056400081B200000400004081B20000040000406C
-:1056500081B200000400004081B20000040000405C
-:1056600081B200000400004081B20000040000404C
-:1056700081B200000400004081B20000040000403C
-:1056800081B200000400004081B20000040000402C
-:1056900081B200000400004081B20000040000401C
-:1056A00081B200000400004081B20000040000400C
-:1056B00081B200000400004081B2000004000040FC
-:1056C00081B200000400004081B2000004000040EC
-:1056D00081B200000400004081B2000004000040DC
-:1056E00081B200000400004081B2000004000040CC
-:1056F00081B200000400004081B2000004000040BC
-:1057000081B200000400004081B2000004000040AB
-:1057100081B200000400004081B20000040000409B
-:1057200081B200000400004081B20000040000408B
-:1057300081B200000400004081B20000040000407B
-:1057400081B200000400004081B20000040000406B
-:1057500081B200000400004081B20000040000405B
-:1057600081B200000400004081B20000040000404B
-:1057700081B200000400004081B20000040000403B
-:1057800081B200000400004081B20000040000402B
-:1057900081B200000400004081B20000040000401B
-:1057A00081B200000400004081B20000040000400B
-:1057B00081B200000400004081B2000004000040FB
-:1057C00081B200000400004081B2000004000040EB
-:1057D00081B200000400004081B2000004000040DB
-:1057E00081B200000400004081B2000004000040CB
-:1057F00081B200000400004081B2000004000040BB
-:1058000081B200000400004081B2000004000040AA
-:1058100081B200000400004081B20000040000409A
-:1058200081B200000400004081B20000040000408A
-:1058300081B200000400004081B20000040000407A
-:1058400081B200000400004081B20000040000406A
-:1058500081B200000400004081B20000040000405A
-:1058600081B200000400004081B20000040000404A
-:1058700081B200000400004081B20000040000403A
-:1058800081B200000400004081B20000040000402A
-:1058900081B200000400004081B20000040000401A
-:1058A00081B200000400004081B20000040000400A
-:1058B00081B200000400004081B2000004000040FA
-:1058C00081B200000400004081B2000004000040EA
-:1058D00081B200000400004081B2000004000040DA
-:1058E00081B200000400004081B2000004000040CA
-:1058F00081B200000400004081B2000004000040BA
-:1059000081B200000400004081B2000004000040A9
-:1059100081B200000400004081B200000400004099
-:1059200081B200000400004081B200000400004089
-:1059300081B200000400004081B200000400004079
-:1059400081B200000400004081B200000400004069
-:1059500081B200000400004081B200000400004059
-:1059600081B200000400004081B200000400004049
-:1059700081B200000400004081B200000400004039
-:1059800081B200000400004081B200000400004029
-:1059900081B200000400004081B200000400004019
-:1059A00081B200000400004081B200000400004009
-:1059B00081B200000400004081B2000004000040F9
-:1059C00081B200000400004081B2000004000040E9
-:1059D00081B200000400004081B2000004000040D9
-:1059E00081B200000400004081B2000004000040C9
-:1059F00081B200000400004081B2000004000040B9
-:105A000081B200000400004081B2000004000040A8
-:105A100081B200000400004081B200000400004098
-:105A200081B200000400004081B200000400004088
-:105A300081B200000400004081B200000400004078
-:105A400081B200000400004081B200000400004068
-:105A500081B200000400004081B200000400004058
-:105A600081B200000400004081B200000400004048
-:105A700081B200000400004081B200000400004038
-:105A800081B200000400004081B200000400004028
-:105A900081B200000400004081B200000400004018
-:105AA00081B200000400004081B200000400004008
-:105AB00081B200000400004081B2000004000040F8
-:105AC00081B200000400004081B2000004000040E8
-:105AD00081B200000400004081B2000004000040D8
-:105AE00081B200000400004081B2000004000040C8
-:105AF00081B200000400004081B2000004000040B8
-:105B000081B200000400004081B2000004000040A7
-:105B100081B200000400004081B200000400004097
-:105B200081B200000400004081B200000400004087
-:105B300081B200000400004081B200000400004077
-:105B400081B200000400004081B200000400004067
-:105B500081B200000400004081B200000400004057
-:105B600081B200000400004081B200000400004047
-:105B700081B200000400004081B200000400004037
-:105B800081B200000400004081B200000400004027
-:105B900081B200000400004081B200000400004017
-:105BA00081B200000400004081B200000400004007
-:105BB00081B200000400004081B2000004000040F7
-:105BC00081B200000400004081B2000004000040E7
-:105BD00081B200000400004081B2000004000040D7
-:105BE00081B200000400004081B2000004000040C7
-:105BF00081B200000400004081B2000004000040B7
-:105C000081B200000400004081B2000004000040A6
-:105C100081B200000400004081B200000400004096
-:105C200081B200000400004081B200000400004086
-:105C300081B200000400004081B200000400004076
-:105C400081B200000400004081B200000400004066
-:105C500081B200000400004081B200000400004056
-:105C600081B200000400004081B200000400004046
-:105C700081B200000400004081B200000400004036
-:105C800081B200000400004081B200000400004026
-:105C900081B200000400004081B200000400004016
-:105CA00081B200000400004081B200000400004006
-:105CB00081B200000400004081B2000004000040F6
-:105CC00081B200000400004081B2000004000040E6
-:105CD00081B200000400004081B2000004000040D6
-:105CE00081B200000400004081B2000004000040C6
-:105CF00081B200000400004081B2000004000040B6
-:105D000081B200000400004081B2000004000040A5
-:105D100081B200000400004081B200000400004095
-:105D200081B200000400004081B200000400004085
-:105D300081B200000400004081B200000400004075
-:105D400081B200000400004081B200000400004065
-:105D500081B200000400004081B200000400004055
-:105D600081B200000400004081B200000400004045
-:105D700081B200000400004081B200000400004035
-:105D800081B200000400004081B200000400004025
-:105D900081B200000400004081B200000400004015
-:105DA00081B200000400004081B200000400004005
-:105DB00081B200000400004081B2000004000040F5
-:105DC00081B200000400004081B2000004000040E5
-:105DD00081B200000400004081B2000004000040D5
-:105DE00081B200000400004081B2000004000040C5
-:105DF00081B200000400004081B2000004000040B5
-:105E000081B200000400004081B2000004000040A4
-:105E100081B200000400004081B200000400004094
-:105E200081B200000400004081B200000400004084
-:105E300081B200000400004081B200000400004074
-:105E400081B200000400004081B200000400004064
-:105E500081B200000400004081B200000400004054
-:105E600081B200000400004081B200000400004044
-:105E700081B200000400004081B200000400004034
-:105E800081B200000400004081B200000400004024
-:105E900081B200000400004081B200000400004014
-:105EA00081B200000400004081B200000400004004
-:105EB00081B200000400004081B2000004000040F4
-:105EC00081B200000400004081B2000004000040E4
-:105ED00081B200000400004081B2000004000040D4
-:105EE00081B200000400004081B2000004000040C4
-:105EF00081B200000400004081B2000004000040B4
-:105F000081B200000400004081B2000004000040A3
-:105F100081B200000400004081B200000400004093
-:105F200081B200000400004081B200000400004083
-:105F300081B200000400004081B200000400004073
-:105F400081B200000400004081B200000400004063
-:105F500081B200000400004081B200000400004053
-:105F600081B200000400004081B200000400004043
-:105F700081B200000400004081B200000400004033
-:105F800081B200000400004081B200000400004023
-:105F900081B200000400004081B200000400004013
-:105FA00081B200000400004081B200000400004003
-:105FB00081B200000400004081B2000004000040F3
-:105FC00081B200000400004081B2000004000040E3
-:105FD00081B200000400004081B2000004000040D3
-:105FE00081B200000400004081B2000004000040C3
-:105FF00081B200000400004081B2000004000040B3
-:1060000081B200000400004081B2000004000040A2
-:1060100081B200000400004081B200000400004092
-:1060200081B200000400004081B200000400004082
-:1060300081B200000400004081B200000400004072
-:1060400081B200000400004081B200000400004062
-:1060500081B200000400004081B200000400004052
-:1060600081B200000400004081B200000400004042
-:1060700081B200000400004081B200000400004032
-:1060800081B200000400004081B200000400004022
-:1060900081B200000400004081B200000400004012
-:1060A00081B200000400004081B200000400004002
-:1060B00081B200000400004081B2000004000040F2
-:1060C00081B200000400004081B2000004000040E2
-:1060D00081B200000400004081B2000004000040D2
-:1060E00081B200000400004081B2000004000040C2
-:1060F00081B200000400004081B2000004000040B2
-:1061000081B200000400004081B2000004000040A1
-:1061100081B200000400004081B200000400004091
-:1061200081B200000400004081B200000400004081
-:1061300081B200000400004081B200000400004071
-:1061400081B200000400004081B200000400004061
-:1061500081B200000400004081B200000400004051
-:1061600081B200000400004081B200000400004041
-:1061700081B200000400004081B200000400004031
-:1061800081B200000400004081B200000400004021
-:1061900081B200000400004081B200000400004011
-:1061A00081B200000400004081B200000400004001
-:1061B00081B200000400004081B2000004000040F1
-:1061C00081B200000400004081B2000004000040E1
-:1061D00081B200000400004081B2000004000040D1
-:1061E00081B200000400004081B2000004000040C1
-:1061F00081B200000400004081B2000004000040B1
-:1062000081B200000400004081B2000004000040A0
-:1062100081B200000400004081B200000400004090
-:1062200081B200000400004081B200000400004080
-:1062300081B200000400004081B200000400004070
-:1062400081B200000400004081B200000400004060
-:1062500081B200000400004081B200000400004050
-:1062600081B200000400004081B200000400004040
-:1062700081B200000400004081B200000400004030
-:1062800081B200000400004081B200000400004020
-:1062900081B200000400004081B200000400004010
-:1062A00081B200000400004081B200000400004000
-:1062B00081B200000400004081B2000004000040F0
-:1062C00081B200000400004081B2000004000040E0
-:1062D00081B200000400004081B2000004000040D0
-:1062E00081B200000400004081B2000004000040C0
-:1062F00081B200000400004081B2000004000040B0
-:1063000081B200000400004081B20000040000409F
-:1063100081B200000400004081B20000040000408F
-:1063200081B200000400004081B20000040000407F
-:1063300081B200000400004081B20000040000406F
-:1063400081B200000400004081B20000040000405F
-:1063500081B200000400004081B20000040000404F
-:1063600081B200000400004081B20000040000403F
-:1063700081B200000400004081B20000040000402F
-:1063800081B200000400004081B20000040000401F
-:1063900081B200000400004081B20000040000400F
-:1063A00081B200000400004081B2000004000040FF
-:1063B00081B200000400004081B2000004000040EF
-:1063C00081B200000400004081B2000004000040DF
-:1063D00081B200000400004081B2000004000040CF
-:1063E00081B200000400004081B2000004000040BF
-:1063F00081B200000400004081B2000004000040AF
-:1064000081B200000400004081B20000040000409E
-:1064100081B200000400004081B20000040000408E
-:1064200081B200000400004081B20000040000407E
-:1064300081B200000400004081B20000040000406E
-:1064400081B200000400004081B20000040000405E
-:1064500081B200000400004081B20000040000404E
-:1064600081B200000400004081B20000040000403E
-:1064700081B200000400004081B20000040000402E
-:1064800081B200000400004081B20000040000401E
-:1064900081B200000400004081B20000040000400E
-:1064A00081B200000400004081B2000004000040FE
-:1064B00081B200000400004081B2000004000040EE
-:1064C00081B200000400004081B2000004000040DE
-:1064D00081B200000400004081B2000004000040CE
-:1064E00081B200000400004081B2000004000040BE
-:1064F00081B200000400004081B2000004000040AE
-:1065000081B200000400004081B20000040000409D
-:1065100081B200000400004081B20000040000408D
-:1065200081B200000400004081B20000040000407D
-:1065300081B200000400004081B20000040000406D
-:1065400081B200000400004081B20000040000405D
-:1065500081B200000400004081B20000040000404D
-:1065600081B200000400004081B20000040000403D
-:1065700081B200000400004081B20000040000402D
-:1065800081B200000400004081B20000040000401D
-:1065900081B200000400004081B20000040000400D
-:1065A00081B200000400004081B2000004000040FD
-:1065B00081B200000400004081B2000004000040ED
-:1065C00081B200000400004081B2000004000040DD
-:1065D00081B200000400004081B2000004000040CD
-:1065E00081B200000400004081B2000004000040BD
-:1065F00081B200000400004081B2000004000040AD
-:1066000081B200000400004081B20000040000409C
-:1066100081B200000400004081B20000040000408C
-:1066200081B200000400004081B20000040000407C
-:1066300081B200000400004081B20000040000406C
-:1066400081B200000400004081B20000040000405C
-:1066500081B200000400004081B20000040000404C
-:1066600081B200000400004081B20000040000403C
-:1066700081B200000400004081B20000040000402C
-:1066800081B200000400004081B20000040000401C
-:1066900081B200000400004081B20000040000400C
-:1066A00081B200000400004081B2000004000040FC
-:1066B00081B200000400004081B2000004000040EC
-:1066C00081B200000400004081B2000004000040DC
-:1066D00081B200000400004081B2000004000040CC
-:1066E00081B200000400004081B2000004000040BC
-:1066F00081B200000400004081B2000004000040AC
-:1067000081B200000400004081B20000040000409B
-:1067100081B200000400004081B20000040000408B
-:1067200081B200000400004081B20000040000407B
-:1067300081B200000400004081B20000040000406B
-:1067400081B200000400004081B20000040000405B
-:1067500081B200000400004081B20000040000404B
-:1067600081B200000400004081B20000040000403B
-:1067700081B200000400004081B20000040000402B
-:1067800081B200000400004081B20000040000401B
-:1067900081B200000400004081B20000040000400B
-:1067A00081B200000400004081B2000004000040FB
-:1067B00081B200000400004081B2000004000040EB
-:1067C00081B200000400004081B2000004000040DB
-:1067D00081B200000400004081B2000004000040CB
-:1067E00081B200000400004081B2000004000040BB
-:1067F00081B200000400004081B2000004000040AB
-:1068000081B200000400004081B20000040000409A
-:1068100081B200000400004081B20000040000408A
-:1068200081B200000400004081B20000040000407A
-:1068300081B200000400004081B20000040000406A
-:1068400081B200000400004081B20000040000405A
-:1068500081B200000400004081B20000040000404A
-:1068600081B200000400004081B20000040000403A
-:1068700081B200000400004081B20000040000402A
-:1068800081B200000400004081B20000040000401A
-:1068900081B200000400004081B20000040000400A
-:1068A00081B200000400004081B2000004000040FA
-:1068B00081B200000400004081B2000004000040EA
-:1068C00081B200000400004081B2000004000040DA
-:1068D00081B200000400004081B2000004000040CA
-:1068E00081B200000400004081B2000004000040BA
-:1068F00081B200000400004081B2000004000040AA
-:1069000081B200000400004081B200000400004099
-:1069100081B200000400004081B200000400004089
-:1069200081B200000400004081B200000400004079
-:1069300081B200000400004081B200000400004069
-:1069400081B200000400004081B200000400004059
-:1069500081B200000400004081B200000400004049
-:1069600081B200000400004081B200000400004039
-:1069700081B200000400004081B200000400004029
-:1069800081B200000400004081B200000400004019
-:1069900081B200000400004081B200000400004009
-:1069A00081B200000400004081B2000004000040F9
-:1069B00081B200000400004081B2000004000040E9
-:1069C00081B200000400004081B2000004000040D9
-:1069D00081B200000400004081B2000004000040C9
-:1069E00081B200000400004081B2000004000040B9
-:1069F00081B200000400004081B2000004000040A9
-:106A000081B200000400004081B200000400004098
-:106A100081B200000400004081B200000400004088
-:106A200081B200000400004081B200000400004078
-:106A300081B200000400004081B200000400004068
-:106A400081B200000400004081B200000400004058
-:106A500081B200000400004081B200000400004048
-:106A600081B200000400004081B200000400004038
-:106A700081B200000400004081B200000400004028
-:106A800081B200000400004081B200000400004018
-:106A900081B200000400004081B200000400004008
-:106AA00081B200000400004081B2000004000040F8
-:106AB00081B200000400004081B2000004000040E8
-:106AC00081B200000400004081B2000004000040D8
-:106AD00081B200000400004081B2000004000040C8
-:106AE00081B200000400004081B2000004000040B8
-:106AF00081B200000400004081B2000004000040A8
-:106B000081B200000400004081B200000400004097
-:106B100081B200000400004081B200000400004087
-:106B200081B200000400004081B200000400004077
-:106B300081B200000400004081B200000400004067
-:106B400081B200000400004081B200000400004057
-:106B500081B200000400004081B200000400004047
-:106B600081B200000400004081B200000400004037
-:106B700081B200000400004081B200000400004027
-:106B800081B200000400004081B200000400004017
-:106B900081B200000400004081B200000400004007
-:106BA00081B200000400004081B2000004000040F7
-:106BB00081B200000400004081B2000004000040E7
-:106BC00081B200000400004081B2000004000040D7
-:106BD00081B200000400004081B2000004000040C7
-:106BE00081B200000400004081B2000004000040B7
-:106BF00081B200000400004081B2000004000040A7
-:106C000081B200000400004081B200000400004096
-:106C100081B200000400004081B200000400004086
-:106C200081B200000400004081B200000400004076
-:106C300081B200000400004081B200000400004066
-:106C400081B200000400004081B200000400004056
-:106C500081B200000400004081B200000400004046
-:106C600081B200000400004081B200000400004036
-:106C700081B200000400004081B200000400004026
-:106C800081B200000400004081B200000400004016
-:106C900081B200000400004081B200000400004006
-:106CA00081B200000400004081B2000004000040F6
-:106CB00081B200000400004081B2000004000040E6
-:106CC00081B200000400004081B2000004000040D6
-:106CD00081B200000400004081B2000004000040C6
-:106CE00081B200000400004081B2000004000040B6
-:106CF00081B200000400004081B2000004000040A6
-:106D000081B200000400004081B200000400004095
-:106D100081B200000400004081B200000400004085
-:106D200081B200000400004081B200000400004075
-:106D300081B200000400004081B200000400004065
-:106D400081B200000400004081B200000400004055
-:106D500081B200000400004081B200000400004045
-:106D600081B200000400004081B200000400004035
-:106D700081B200000400004081B200000400004025
-:106D800081B200000400004081B200000400004015
-:106D900081B200000400004081B200000400004005
-:106DA00081B200000400004081B2000004000040F5
-:106DB00081B200000400004081B2000004000040E5
-:106DC00081B200000400004081B2000004000040D5
-:106DD00081B200000400004081B2000004000040C5
-:106DE00081B200000400004081B2000004000040B5
-:106DF00081B200000400004081B2000004000040A5
-:106E000081B200000400004081B200000400004094
-:106E100081B200000400004081B200000400004084
-:106E200081B200000400004081B200000400004074
-:106E300081B200000400004081B200000400004064
-:106E400081B200000400004081B200000400004054
-:106E500081B200000400004081B200000400004044
-:106E600081B200000400004081B200000400004034
-:106E700081B200000400004081B200000400004024
-:106E800081B200000400004081B200000400004014
-:106E900081B200000400004081B200000400004004
-:106EA00081B200000400004081B2000004000040F4
-:106EB00081B200000400004081B2000004000040E4
-:106EC00081B200000400004081B2000004000040D4
-:106ED00081B200000400004081B2000004000040C4
-:106EE00081B200000400004081B2000004000040B4
-:106EF00081B200000400004081B2000004000040A4
-:106F000081B200000400004081B200000400004093
-:106F100081B200000400004081B200000400004083
-:106F200081B200000400004081B200000400004073
-:106F300081B200000400004081B200000400004063
-:106F400081B200000400004081B200000400004053
-:106F500081B200000400004081B200000400004043
-:106F600081B200000400004081B200000400004033
-:106F700081B200000400004081B200000400004023
-:106F800081B200000400004081B200000400004013
-:106F900081B200000400004081B200000400004003
-:106FA00081B200000400004081B2000004000040F3
-:106FB00081B200000400004081B2000004000040E3
-:106FC00081B200000400004081B2000004000040D3
-:106FD00081B200000400004081B2000004000040C3
-:106FE00081B200000400004081B2000004000040B3
-:106FF00081B200000400004081B2000004000040A3
-:1070000081B200000400004081B200000400004092
-:1070100081B200000400004081B200000400004082
-:1070200081B200000400004081B200000400004072
-:1070300081B200000400004081B200000400004062
-:1070400081B200000400004081B200000400004052
-:1070500081B200000400004081B200000400004042
-:1070600081B200000400004081B200000400004032
-:1070700081B200000400004081B200000400004022
-:1070800081B200000400004081B200000400004012
-:1070900081B200000400004081B200000400004002
-:1070A00081B200000400004081B2000004000040F2
-:1070B00081B200000400004081B2000004000040E2
-:1070C00081B200000400004081B2000004000040D2
-:1070D00081B200000400004081B2000004000040C2
-:1070E00081B200000400004081B2000004000040B2
-:1070F00081B200000400004081B2000004000040A2
-:1071000081B200000400004081B200000400004091
-:1071100081B200000400004081B200000400004081
-:1071200081B200000400004081B200000400004071
-:1071300081B200000400004081B200000400004061
-:1071400081B200000400004081B200000400004051
-:1071500081B200000400004081B200000400004041
-:1071600081B200000400004081B200000400004031
-:1071700081B200000400004081B200000400004021
-:1071800081B200000400004081B200000400004011
-:1071900081B200000400004081B200000400004001
-:1071A00081B200000400004081B2000004000040F1
-:1071B00081B200000400004081B2000004000040E1
-:1071C00081B200000400004081B2000004000040D1
-:1071D00081B200000400004081B2000004000040C1
-:1071E00081B200000400004081B2000004000040B1
-:1071F00081B200000400004081B2000004000040A1
-:1072000081B200000400004081B200000400004090
-:1072100081B200000400004081B200000400004080
-:1072200081B200000400004081B200000400004070
-:1072300081B200000400004081B200000400004060
-:1072400081B200000400004081B200000400004050
-:1072500081B200000400004081B200000400004040
-:1072600081B200000400004081B200000400004030
-:1072700081B200000400004081B200000400004020
-:1072800081B200000400004081B200000400004010
-:1072900081B200000400004081B200000400004000
-:1072A00081B200000400004081B2000004000040F0
-:1072B00081B200000400004081B2000004000040E0
-:1072C00081B200000400004081B2000004000040D0
-:1072D00081B200000400004081B2000004000040C0
-:1072E00081B200000400004081B2000004000040B0
-:1072F00081B200000400004081B2000004000040A0
-:1073000081B200000400004081B20000040000408F
-:1073100081B200000400004081B20000040000407F
-:1073200081B200000400004081B20000040000406F
-:1073300081B200000400004081B20000040000405F
-:1073400081B200000400004081B20000040000404F
-:1073500081B200000400004081B20000040000403F
-:1073600081B200000400004081B20000040000402F
-:1073700081B200000400004081B20000040000401F
-:1073800081B200000400004081B20000040000400F
-:1073900081B200000400004081B2000004000040FF
-:1073A00081B200000400004081B2000004000040EF
-:1073B00081B200000400004081B2000004000040DF
-:1073C00081B200000400004081B2000004000040CF
-:1073D00081B200000400004081B2000004000040BF
-:1073E00081B200000400004081B2000004000040AF
-:1073F00081B200000400004081B20000040000409F
-:1074000081B200000400004081B20000040000408E
-:1074100081B200000400004081B20000040000407E
-:1074200081B200000400004081B20000040000406E
-:1074300081B200000400004081B20000040000405E
-:1074400081B200000400004081B20000040000404E
-:1074500081B200000400004081B20000040000403E
-:1074600081B200000400004081B20000040000402E
-:1074700081B200000400004081B20000040000401E
-:1074800081B200000400004081B20000040000400E
-:1074900081B200000400004081B2000004000040FE
-:1074A00081B200000400004081B2000004000040EE
-:1074B00081B200000400004081B2000004000040DE
-:1074C00081B200000400004081B2000004000040CE
-:1074D00081B200000400004081B2000004000040BE
-:1074E00081B200000400004081B2000004000040AE
-:1074F00081B200000400004081B20000040000409E
-:1075000081B200000400004081B20000040000408D
-:1075100081B200000400004081B20000040000407D
-:1075200081B200000400004081B20000040000406D
-:1075300081B200000400004081B20000040000405D
-:1075400081B200000400004081B20000040000404D
-:1075500081B200000400004081B20000040000403D
-:1075600081B200000400004081B20000040000402D
-:1075700081B200000400004081B20000040000401D
-:1075800081B200000400004081B20000040000400D
-:1075900081B200000400004081B2000004000040FD
-:1075A00081B200000400004081B2000004000040ED
-:1075B00081B200000400004081B2000004000040DD
-:1075C00081B200000400004081B2000004000040CD
-:1075D00081B200000400004081B2000004000040BD
-:1075E00081B200000400004081B2000004000040AD
-:1075F00081B200000400004081B20000040000409D
-:1076000081B200000400004081B20000040000408C
-:1076100081B200000400004081B20000040000407C
-:1076200081B200000400004081B20000040000406C
-:1076300081B200000400004081B20000040000405C
-:1076400081B200000400004081B20000040000404C
-:1076500081B200000400004081B20000040000403C
-:1076600081B200000400004081B20000040000402C
-:1076700081B200000400004081B20000040000401C
-:1076800081B200000400004081B20000040000400C
-:1076900081B200000400004081B2000004000040FC
-:1076A00081B200000400004081B2000004000040EC
-:1076B00081B200000400004081B2000004000040DC
-:1076C00081B200000400004081B2000004000040CC
-:1076D00081B200000400004081B2000004000040BC
-:1076E00081B200000400004081B2000004000040AC
-:1076F00081B200000400004081B20000040000409C
-:1077000081B200000400004081B20000040000408B
-:1077100081B200000400004081B20000040000407B
-:1077200081B200000400004081B20000040000406B
-:1077300081B200000400004081B20000040000405B
-:1077400081B200000400004081B20000040000404B
-:1077500081B200000400004081B20000040000403B
-:1077600081B200000400004081B20000040000402B
-:1077700081B200000400004081B20000040000401B
-:1077800081B200000400004081B20000040000400B
-:1077900081B200000400004081B2000004000040FB
-:1077A00081B200000400004081B2000004000040EB
-:1077B00081B200000400004081B2000004000040DB
-:1077C00081B200000400004081B2000004000040CB
-:1077D00081B200000400004081B2000004000040BB
-:1077E00081B200000400004081B2000004000040AB
-:1077F00081B200000400004081B20000040000409B
-:1078000081B200000400004081B20000040000408A
-:1078100081B200000400004081B20000040000407A
-:1078200081B200000400004081B20000040000406A
-:1078300081B200000400004081B20000040000405A
-:1078400081B200000400004081B20000040000404A
-:1078500081B200000400004081B20000040000403A
-:1078600081B200000400004081B20000040000402A
-:1078700081B200000400004081B20000040000401A
-:1078800081B200000400004081B20000040000400A
-:1078900081B200000400004081B2000004000040FA
-:1078A00081B200000400004081B2000004000040EA
-:1078B00081B200000400004081B2000004000040DA
-:1078C00081B200000400004081B2000004000040CA
-:1078D00081B200000400004081B2000004000040BA
-:1078E00081B200000400004081B2000004000040AA
-:1078F00081B200000400004081B20000040000409A
-:1079000081B200000400004081B200000400004089
-:1079100081B200000400004081B200000400004079
-:1079200081B200000400004081B200000400004069
-:1079300081B200000400004081B200000400004059
-:1079400081B200000400004081B200000400004049
-:1079500081B200000400004081B200000400004039
-:1079600081B200000400004081B200000400004029
-:1079700081B200000400004081B200000400004019
-:1079800081B200000400004081B200000400004009
-:1079900081B200000400004081B2000004000040F9
-:1079A00081B200000400004081B2000004000040E9
-:1079B00081B200000400004081B2000004000040D9
-:1079C00081B200000400004081B2000004000040C9
-:1079D00081B200000400004081B2000004000040B9
-:1079E00081B200000400004081B2000004000040A9
-:1079F00081B200000400004081B200000400004099
-:107A000081B200000400004081B200000400004088
-:107A100081B200000400004081B200000400004078
-:107A200081B200000400004081B200000400004068
-:107A300081B200000400004081B200000400004058
-:107A400081B200000400004081B200000400004048
-:107A500081B200000400004081B200000400004038
-:107A600081B200000400004081B200000400004028
-:107A700081B200000400004081B200000400004018
-:107A800081B200000400004081B200000400004008
-:107A900081B200000400004081B2000004000040F8
-:107AA00081B200000400004081B2000004000040E8
-:107AB00081B200000400004081B2000004000040D8
-:107AC00081B200000400004081B2000004000040C8
-:107AD00081B200000400004081B2000004000040B8
-:107AE00081B200000400004081B2000004000040A8
-:107AF00081B200000400004081B200000400004098
-:107B000081B200000400004081B200000400004087
-:107B100081B200000400004081B200000400004077
-:107B200081B200000400004081B200000400004067
-:107B300081B200000400004081B200000400004057
-:107B400081B200000400004081B200000400004047
-:107B500081B200000400004081B200000400004037
-:107B600081B200000400004081B200000400004027
-:107B700081B200000400004081B200000400004017
-:107B800081B200000400004081B200000400004007
-:107B900081B200000400004081B2000004000040F7
-:107BA00081B200000400004081B2000004000040E7
-:107BB00081B200000400004081B2000004000040D7
-:107BC00081B200000400004081B2000004000040C7
-:107BD00081B200000400004081B2000004000040B7
-:107BE00081B200000400004081B2000004000040A7
-:107BF00081B200000400004081B200000400004097
-:107C000081B200000400004081B200000400004086
-:107C100081B200000400004081B200000400004076
-:107C200081B200000400004081B200000400004066
-:107C300081B200000400004081B200000400004056
-:107C400081B200000400004081B200000400004046
-:107C500081B200000400004081B200000400004036
-:107C600081B200000400004081B200000400004026
-:107C700081B200000400004081B200000400004016
-:107C800081B200000400004081B200000400004006
-:107C900081B200000400004081B2000004000040F6
-:107CA00081B200000400004081B2000004000040E6
-:107CB00081B200000400004081B2000004000040D6
-:107CC00081B200000400004081B2000004000040C6
-:107CD00081B200000400004081B2000004000040B6
-:107CE00081B200000400004081B2000004000040A6
-:107CF00081B200000400004081B200000400004096
-:107D000081B200000400004081B200000400004085
-:107D100081B200000400004081B200000400004075
-:107D200081B200000400004081B200000400004065
-:107D300081B200000400004081B200000400004055
-:107D400081B200000400004081B200000400004045
-:107D500081B200000400004081B200000400004035
-:107D600081B200000400004081B200000400004025
-:107D700081B200000400004081B200000400004015
-:107D800081B200000400004081B200000400004005
-:107D900081B200000400004081B2000004000040F5
-:107DA00081B200000400004081B2000004000040E5
-:107DB00081B200000400004081B2000004000040D5
-:107DC00081B200000400004081B2000004000040C5
-:107DD00081B200000400004081B2000004000040B5
-:107DE00081B200000400004081B2000004000040A5
-:107DF00081B200000400004081B200000400004095
-:107E000081B200000400004081B200000400004084
-:107E100081B200000400004081B200000400004074
-:107E200081B200000400004081B200000400004064
-:107E300081B200000400004081B200000400004054
-:107E400081B200000400004081B200000400004044
-:107E500081B200000400004081B200000400004034
-:107E600081B200000400004081B200000400004024
-:107E700081B200000400004081B200000400004014
-:107E800081B200000400004081B200000400004004
-:107E900081B200000400004081B2000004000040F4
-:107EA00081B200000400004081B2000004000040E4
-:107EB00081B200000400004081B2000004000040D4
-:107EC00081B200000400004081B2000004000040C4
-:107ED00081B200000400004081B2000004000040B4
-:107EE00081B200000400004081B2000004000040A4
-:107EF00081B200000400004081B200000400004094
-:107F000081B200000400004081B200000400004083
-:107F100081B200000400004081B200000400004073
-:107F200081B200000400004081B200000400004063
-:107F300081B200000400004081B200000400004053
-:107F400081B200000400004081B200000400004043
-:107F500081B200000400004081B200000400004033
-:107F600081B200000400004081B200000400004023
-:107F700081B200000400004081B200000400004013
-:107F800081B200000400004081B200000400004003
-:107F900081B200000400004081B2000004000040F3
-:107FA00081B200000400004081B2000004000040E3
-:107FB00081B200000400004081B2000004000040D3
-:107FC00081B200000400004081B20000F70F00BC45
-:107FD00080B200000380004081B2000003800040B6
-:107FE00081B200000380004081B2000003800040A5
-:107FF00081B200000380004081B200000380004095
-:1080000081B200000380004081B200000380004084
-:1080100081B200003180004081B200003480004015
-:1080200081B200003580004081B2000004000040B1
-:1080300081B200001B80818080320000EC89A24068
-:10804000916F00000000004C90B301005C952EA2DF
-:1080500080B00100FF000080F489010090952AC8DB
-:10806000E5B10100000000A1F0B1010000000040F6
-:10807000F0B10100000000A4F0B10100000000D048
-:10808000F0B10100000000D1F0B10100000000D209
-:10809000F0B101000000004CF0B10100000000D47C
-:1080A000F0B10100000000D3F0B10100000000EECB
-:1080B000F0B101000000004EF0B1010000000040EE
-:1080C00044B1010018801181983000000000514037
-:1080D00081B201001A8011829830000000005240E5
-:1080E00081B20100EC890048FD930000B603004016
-:1080F000A19901002380A242FD7F00002080008022
-:1081000080320000228011818230000022805140A4
-:1081100081B2000022801182823000002280524011
-:1081200081B200002C800048FD9300002780008071
-:10813000803200002680A253077C000000005153CB
-:10814000079001002A800052079000002980A25267
-:10815000077C00000000525207900100000000530D
-:108160000790010000000048FD9301000000004559
-:10817000F39301005C952EA252B30100FF00008032
-:10818000F48901000000004CE4B10100000000A9E6
-:1081900045B101003080004C80B200000000454035
-:1081A00081B201000000554081B201001B840540EE
-:1081B00049B100001B84054049B1000000000540A2
-:1081C00049B10100E1800040813201000000004B14
-:1081D000DEB20100770000404B9901000000004032
-:1081E000FD93010000000048FD83010002000040F3
-:1081F0009B9B0100000000A59CB30100F699004084
-:108200008132010058952044E0B1010000C000A671
-:1082100036B10100D014004047990100050000402C
-:10822000F599010000380040F59901000006004072
-:10823000F599010000000040F59901000518004083
-:10824000F599010002090040F59901000400004081
-:10825000F599010050030040813201007B0300408A
-:1082600081320100E083004081320100108400402F
-:108270008132010008840040813201006095204075
-:10828000E1B1010070952040E1B10100000000491A
-:10829000DD9101000000004091B3010000000040AA
-:1082A00085B301005C952040E1B101001A820040D5
-:1082B0008132010071830040813201000200009789
-:1082C00080980100000000402EB101000200004033
-:1082D0002EDD01009001004093980100290100402B
-:1082E000813201005C810040AF3301007999004088
-:1082F000813201000000454081B20100000055407C
-:1083000081B201004984004081B2000004000040B5
-:1083100081B200000400004081B20000040000406F
-:1083200081B200000400004081B20000040000405F
-:1083300081B200000400004081B20000040000404F
-:1083400081B200000400004081B20000040000403F
-:1083500081B200007701004181C00000718051406E
-:1083600081B200007280524081B20000738055409B
-:1083700081B200007480564081B2000055019181A5
-:10838000803000005A01454081B2000055019182C1
-:10839000803000005A01464081B200005A01004876
-:1083A000FD9300005A010048FD9300005A01004966
-:1083B000FD8300005A01004AFD83000000000040D8
-:1083C00049B10100AE0300CBA3C9010000000020A9
-:1083D00046B10100000000D2F1B10100000000D35D
-:1083E000F1B1010000000042F0B1010000000045C1
-:1083F00061B101002000002062DD01000000A8D072
-:10840000E1B100007C80004081B20000000000A8C3
-:1084100098B00100048000408BB30000B10300401D
-:10842000A19901008480A241976F000000000045DF
-:10843000A1C101000000000080B001000000A20402
-:108440008094000080153F4297E301000000004047
-:1084500049B10100000060030294010000000040E7
-:1084600007B00100040000CB99CB0100000000CC54
-:10847000F38301008E80A241976F0000000000CBC3
-:10848000F3930100AE0300CBA3C90100000000205C
-:1084900044B1010000000044F1B1010000000000FF
-:1084A000F0B1010000000004F0B10100000000A1E3
-:1084B000E0B10100050000406199010020000020AA
-:1084C00062DD01009580A84081320000C6020020D4
-:1084D000423101000000A241056C0100000080CB88
-:1084E000DB910100000019418BB3010060000040E6
-:1084F000619901009B80A8B18C33000060000040AE
-:10850000619901009D80A8B194330000A38014C636
-:1085100081320000180000C683F401006A84224FF3
-:10852000830400007F80004081B20000FF0100C68C
-:1085300081880100000000C697A301007F801F5CB6
-:10854000975300009E831DC68132000000002F4318
-:1085500081F00100A980004010C9000005810040A1
-:1085600081B200003681004081B20000DA8100CA89
-:1085700063B300002D81004081B200001481004DE2
-:1085800083B000001E81004E61B100000D810040EB
-:1085900085B000001481004C83B00000F0800040E2
-:1085A00085B000009181004049B100003D8100404C
-:1085B000C1B100008D81004081B200000D810040FA
-:1085C00085B00000DD81004049B100006A8400CA26
-:1085D0009BB3000046810040C1B100004E810040C5
-:1085E000C1B1000055810040C1B10000568100407A
-:1085F000C1B1000057810040C1B100005881004066
-:10860000C1B100005981004081B000005981004192
-:1086100081B00000CE81004081B20000DD8300BB4C
-:10862000ABB30000DB8100CACFB30000D3800040B1
-:1086300049B10000DF80004081B20000DC810040D1
-:1086400081B200006A84004081B20000DA800040FC
-:1086500081B200006A8400CA77B300001581004D22
-:1086600083B000001C81004E61B100000D8100BB91
-:1086700085B000001581004C83B000000D8100BB67
-:1086800085B00000F08000BB85B00000E2800040B3
-:1086900081B200006A8400CA4DB3000064820040C9
-:1086A00049B100008F82004049B10000C8142EBBC0
-:1086B00085B00100000000EE82B001000000004122
-:1086C000E0B10100FF7F00A2A08B01000000004488
-:1086D000A5B30100758000CAA733010002810040E4
-:1086E00081B200004E01004D933001004E01004E5A
-:1086F000933001004E01004C93300100088400408B
-:10870000813201006A84004081B20000549500402B
-:10871000459901006A8400CAE5B10000000080406C
-:1087200097B00100E88022428F6F0000EA8022416A
-:108730008F6F0000EC801ECA81320000EE801FCADD
-:1087400081320000000000CAC9B101006A84004201
-:108750008FB30000000000CACDB101006A8400415F
-:108760008FB30000000000CACFB101006A8400404E
-:108770008FB30000008100A6C6B101006A840040EA
-:1087800081B20000008000A6C6B101006A840040EA
-:108790008FB30000781800404999010010002F9C09
-:1087A00089B00100078100403933010018002F9B78
-:1087B00089B00100078100403733010000002F9A83
-:1087C00089B00100078100403533010008002F996E
-:1087D00089B001000781004033330100008000AE02
-:1087E00047C9010080000040F1990100000000CA63
-:1087F000F1B1010000000042F0B10100401800405A
-:10880000E19901000000004561B10100200000AEC7
-:1088100063DD01000281284081320000FF800040BA
-:1088200081B2000002814240813200000000005C01
-:10883000699301006A841A449393000005814240C1
-:108840008132000004810058699300000000004458
-:10885000F0D101000000A44081B200000C81A240D0
-:10886000E16D00000000004445D10100000080409F
-:10887000E1B1010000008041E1D101000D81375CD0
-:10888000613100000000004262B101001181284006
-:10889000813200000E81004081B20000000000CA59
-:1088A00063B101001181A840813200006A84174041
-:1088B00081B200001681004081B00000168100BB2B
-:1088C00081B000000000004160B1010000000040E4
-:1088D00062B101001781A84081320000000000CA87
-:1088E00063B101006A842840813200001981004090
-:1088F00081B2000050950040479901001F8100BBE4
-:1089000087B0000050952F4087B0010021812240A0
-:10891000957F00006A8460409583000002002DF07E
-:1089200084B0010022813640813200000000004204
-:1089300062B101002381A8408132000000000043A1
-:1089400062B101002581A84081320000000000CA08
-:1089500063B101002781A840813200000000164069
-:1089600081B201006A84224143510000000800CA1C
-:1089700095CB01002281004185C000002F81A242D9
-:10898000676F00000000004167B301002F81424083
-:10899000813200000000004065B30100000000408B
-:1089A0009383010000001ACA699701006A84264077
-:1089B0008132000034814240813200006A841A44CE
-:1089C000939300006A842043956F00006A8480CAF4
-:1089D000673300006A842240656F00006A84006F7C
-:1089E000DB910000C100004081320100358022404F
-:1089F000803200006A84004081B200000000005F05
-:108A0000959301004281A244216F00000000005FA5
-:108A1000958301000000005E95930100000000575F
-:108A200095930100000000CAC3B101004581225B9B
-:108A3000957F00000000004BFD9301006A84004018
-:108A400081B2000049812240AF6F00001BF500CACF
-:108A5000959B01004A81004081B200001BFD00CAC5
-:108A6000959B0100000000CA7FB30100260100CAE7
-:108A7000C53101000000005F958301006A8400CACF
-:108A8000C5B10000DF6F00CA959B010000000055D2
-:108A900095930100000000CAC7B101006A84225FFB
-:108AA000957F000026010040813201000000005F38
-:108AB000958301006A8400CAC7B100006A8400CAB5
-:108AC000C9B100006A8400CACBB100006A8400CA40
-:108AD000CDB100006A8400CACFB1000000002E4270
-:108AE00081E001009814004048C901006A8400CA6E
-:108AF000E1B100000000004009B10100200000A623
-:108B000082B001005E81A25E0B7D0000008000410A
-:108B1000089901006081A25E0B7D0000208000A604
-:108B200008B1010062819F85823000006181A24FFF
-:108B30000B7D00000000004121B30100028000A66F
-:108B400082B00100C9810040813201001000004163
-:108B500084E40100038000A682B00100C9810040C6
-:108B600081320100F0FF00418688010000000043CF
-:108B7000849401000F0000A686B0010010C40043D9
-:108B8000869801007581A243846C000000000043B8
-:108B900021B30100200000A682B001001C000041AA
-:108BA00082DC01007281A25E0B7D000004000041A6
-:108BB000089901007E81004081B20000410100A6B9
-:108BC00086B00100500C0043869801007A81A243D0
-:108BD000846C00000000004121B301007E81004050
-:108BE00081B20000410100A686B00100600C004384
-:108BF000869801007E81A243846C00000000004240
-:108C000021B30100200000A682B001007F81A25E96
-:108C10000B7D000040130041089901008781224329
-:108C2000216F0000200000A682B001001200004168
-:108C300082DC01008481A25E0B7D00000004004103
-:108C4000089901008C81004081B20000200000A63C
-:108C500082B001001900004182DC01008981A25E1E
-:108C60000B7D000000A00041089901008C810040AC
-:108C700081B200000000804081B20100200000A607
-:108C800080B00100000000CA819401008F81A25EC3
-:108C90000B7D00006A84004008B10000C8142EBBA0
-:108CA00085B001009281A25E0B7D000000000040B3
-:108CB00087B00100A1812243216F0000B0812244CE
-:108CC000216F0000118000A682B00100C981004020
-:108CD00081320100B881224A837C000000000040FC
-:108CE000879001009C81224D837C000000000041A0
-:108CF000879001009E81224F837C0000000000438A
-:108D000087900100A081224E837C00000000004279
-:108D100087900100B881004081B20000018000A668
-:108D200082B00100C981004081320100018000A6AB
-:108D300082B00100C981004081320100B881224225
-:108D4000837C000000000040879001001C8000A68A
-:108D500082B00100C981004081320100AB8122450F
-:108D6000837C00000000004187900100AD81224417
-:108D7000837C00000000004387900100AF81224304
-:108D8000837C00000000004287900100B881004011
-:108D900081B20000018000A682B00100C9810040BC
-:108DA00081320100018000A682B00100C98100402B
-:108DB00081320100B8812242837C00000000004023
-:108DC00087900100000000438790010000000041EF
-:108DD00087900100008000A682B00100C981004098
-:108DE00081320100BC81224B837C000000000040E6
-:108DF0008780010000000043E0B101000000004056
-:108E0000AFB30100C5812240877C0000C581A2412B
-:108E1000877C000000000041AEB30100000000406C
-:108E200081B30100C4812242877C0000C581000B10
-:108E30007DB300000000000F7DB30100FF7F00A2A2
-:108E4000A08B010000000044A5B30100758000CA9A
-:108E5000A73301000281004081B2000020000041E0
-:108E600082DC0100CA81A25E0B7D0000000000418F
-:108E700008B10100CC819F85823000000000804055
-:108E800081B20100D18114F781300000D181A24963
-:108E9000FD7F000000000048FD930100D48115F81B
-:108EA00081140000D481A24AFD7F00000000004828
-:108EB000FD930100D681A2C881320000400000402D
-:108EC00080DC01000010004080DC01000000004058
-:108ED000EFB30100D8814240F1330000048100402B
-:108EE000689700006A8400BB6BB300006A8400BB13
-:108EF000B1B300006A84004081B20000CC142E405F
-:108F000087B00100FF7F00A2A08B0100D8000043C2
-:108F1000B2330100000068DA89B001007C00004033
-:108F20008B9801000000005089F001000000004112
-:108F300089D0010003000044888C01000000004239
-:108F400087C0010000000041A5B30100D800004324
-:108F5000B2330100000000DAF1B10100000000426C
-:108F600087C0010000000041A5C30100F881224430
-:108F700089500000F88122448B500000E781A25004
-:108F8000A56F000000000042A5E30100000000CA38
-:108F9000A7B30100758000BB85300100CC142ED230
-:108FA00095C30100AE0300CBA3C90100000000205F
-:108FB00042B101000000005081B00100F581A241E2
-:108FC00081500000F481A2F280300000E78100406F
-:108FD000A5B3000000000042A5E30100000000CAA4
-:108FE000A7B30100758000BB8530010002810040FD
-:108FF00081B20000D9000041B3730100000080502D
-:10900000B5F30100D8000041B3F30000000000D91F
-:10901000B3FB0100003000A6B8B30100F20000402D
-:1090200081320100250100422D01010000020040B3
-:1090300083980100EB0000408132010000000050E5
-:1090400081B001002601004081320100098210DA5E
-:10905000B56B00000A8200412D8100000000004134
-:109060002D910100280100408132010025010040BE
-:109070002D110100000000402D8101000682A24157
-:1090800081500000260100422D0101002501004011
-:1090900081320100260100422D110100250100400E
-:1090A0002D110100158204402D0100002501004012
-:1090B000813201001182004081B20000280100408D
-:1090C00081320100250100422D010100F200004023
-:1090D000B9330100000000422D81010000008041F1
-:1090E0002D8101000000804081B20100000300409A
-:1090F000819801000000004018B10100800000408C
-:109100008398010000190040459901000000424089
-:1091100081B20100000043FFF1B10100000000FF37
-:10912000F1B101000000004181C0010000000040D9
-:1091300018B101001F82A2418350000000160040B8
-:1091400045990100001900404399010000000047C3
-:1091500043C101000000004083B00100000000F3A3
-:1091600080B001000000005B81D0010000000041E0
-:1091700080D0010000000040F6B101000000005B5B
-:1091800043C101000000004183C001002982A254B4
-:10919000836C000000000040F7B1010000000041B6
-:1091A00083C001003082A206836C00000000804072
-:1091B00081B201000000800791B00100E180004011
-:1091C000813201003982A240976C000028000040E3
-:1091D000B39B01003A82004081B2000028000040A9
-:1091E000B39B0100FC81004081320100000000DAE5
-:1091F000F5B10100FC810042B3430100000000DA38
-:10920000F5B10100FC810042B3430100000000DA27
-:10921000F5B101004E000040B39B0100FC8100400D
-:1092200081320100080000DAF7F50100500000402B
-:1092300091980100000000478FB00100FC810048B8
-:10924000B2330100000000DAF7B10100080000DAD3
-:10925000F7F501000000004291C001004582A241E3
-:109260008F5000000000004145D10100080000407F
-:10927000B39B0100FC81004081320100000000DA54
-:10928000FDB101000A000040B39B0100FC810040D9
-:1092900081320100000000DAFDB101001800004039
-:1092A000B39B0100FC81004081320100000000DA24
-:1092B000FDB1010016000040B39B0100FC8100409D
-:1092C00081320100000000DAFDB10100348200406B
-:1092D000813201001E000048B2CB0100FC81004039
-:1092E00081320100000000DA91C001000000004856
-:1092F000B2CB0100FC8100408132010000006EDA37
-:109300008FB0010002000048B2CB0100FC81004098
-:1093100081320100000000DAFDB1010004000048C4
-:10932000B2CB0100FC81004081320100000080DAF4
-:10933000FDB101006F822250FD7F00006F82224547
-:10934000FD7F000040160040459901003582004035
-:109350004931010008000048B2CB0100FE81004005
-:10936000813201006D82A2408F6C00007282222047
-:10937000B56F00006F82004081B20000DB820040C8
-:109380008132010072822240976C00006F8242405D
-:10939000813200000000004F6993010004810058F1
-:1093A000699300005416004047990100000000FE38
-:1093B000F4B101000000004081B20100000000FE95
-:1093C000F4B101000000004081B20100000000FE85
-:1093D000F4B101000000004081B20100000000FE75
-:1093E000F4B101000000004081B20100000000FE65
-:1093F000F4B101000000004081B20100000000FE55
-:10940000F4B101000000004081B20100000000FE44
-:10941000F4B1010046000040B39B0100FC81004014
-:1094200081320100080000DAF7F501004800004031
-:10943000959801000000004497B00100FC81004AAB
-:10944000B2330100000000DAF7B10100080000DAD1
-:10945000F7F501000000004295C001008582A2419D
-:10946000975000002A000040A59B010040160040D4
-:10947000A19B0100000000CAA7B30100758000BBDA
-:10948000853001000281004081B20000A7822245A0
-:10949000FD7F0000E0150040479901001A0000A27E
-:1094A00080DC010000000050F1B10100F015004027
-:1094B000F1990100000000CAF1B10100070000406D
-:1094C00061990100A000004062DD01009682A8BB06
-:1094D000E13100000000005083B001009982A241F8
-:1094E000835000009882A2F282300000E1800040A8
-:1094F000813201009F82A240976C0000280000404A
-:10950000B39B0100A082004081B20000280000400F
-:10951000B39B0100F015004043990100FC8100401D
-:1095200081320100A782A2FAB46F0000FC810042E0
-:10953000B3430100A782A2FAB46F0000FC8100428D
-:10954000B3430100AA8222FAB46F0000A78242400E
-:10955000813200000000004E699301000481005830
-:109560006993000040160040459901003582004093
-:1095700049310100F6150040439901005C16004096
-:109580004599010000006EFA8EB001000000004015
-:1095900081B20100000000FEF4B1010000000040B3
-:1095A00081B20100000000FEF4B1010000000040A3
-:1095B00081B20100000000F0B4B30100B882A24003
-:1095C0008F6C0000FC152020E1B10100BD8200403D
-:1095D00081B20000DB82004081320100BD82224066
-:1095E000976C0000BA824240813200000000004FB8
-:1095F000699301000481005869930000348200409F
-:10960000813201001E000048B2CB0100FC81004005
-:1096100081320100C2822250B56F0000000000506C
-:1096200091C0010000000048B2CB0100F6150040D7
-:1096300043990100FF8100F2B433010002000048A9
-:10964000B2CB0100F815004043990100FF8100F200
-:10965000B433010004000048B2CB0100FA15004009
-:1096600043990100FF8100F2B43301000800004873
-:10967000B2CB0100FC15004043990100000000F04E
-:1096800094B00100FFFF004AB48B0100FF8100404D
-:10969000813201000A000048B2CB01001000004AEC
-:1096A000B4F70100FF8100408132010034820040A4
-:1096B000813201001E000048B2CB0100FC81004055
-:1096C00081320100D8822250B56F0000D98200504B
-:1096D000B5B3000000000040B5B30100FF810040B9
-:1096E000813201000281004081B20000001600407A
-:1096F0004799010030310040F599010032330040B4
-:10970000F599010034350040F599010036370040E5
-:10971000F599010038390040F599010041420040B7
-:10972000F599010043440040F59901004546004089
-:10973000F599010047480040F5990100494A004069
-:10974000F59901002C0000408398010000000040C2
-:10975000F7B10100E782A2418350000080162E0677
-:1097600083B00100360000FBF6A90100EA82A241A5
-:10977000835000002200004083980100000000FB9D
-:10978000F6B10100ED82A24183500000620000406A
-:1097900095980100008300408132010000162D06DB
-:1097A00083B0010080160040459901005C0000FB79
-:1097B000F6A90100F382A24183500000000000706E
-:1097C000F9B1010000000071F9B101000000007260
-:1097D000F9B1010000000073F9B10100000000744C
-:1097E000F9B1010054000040959801000083004049
-:1097F000813201000000007095B00100FF822270EC
-:10980000B56F00000000804197B00100000080406B
-:1098100097B00100456700A6E0B201000123007087
-:10982000E19A0100CDEF00A6E2B2010089AB007120
-:10983000E39A0100BA9800A6E4B20100FEDC0072CF
-:10984000E59A0100321000A6E6B2010076540073DA
-:10985000E79A0100D2C300A6E8B20100F0E100746B
-:10986000E99A01008016004A44C90100000000077F
-:1098700081B001000000004A80D0010000000040DB
-:10988000F7B101000D83A241815000008016004A0B
-:1098900044C90100FC162A47E7B501000300004A4D
-:1098A000E8E50100000000408DB0010050030040D9
-:1098B000A399010080163D468DE001000000005094
-:1098C00089B00100000000FC40B001000000004130
-:1098D000A3C101001683A24189500000000000705E
-:1098E000EBB2010000000071EDB201000000007257
-:1098F000EFB2010000000073F1B20100000000743B
-:10990000F3B201000000004083B001000F000041ED
-:109910008088010050030040A2C901003383A05099
-:10992000836C00000D00004098C801000000004F4B
-:10993000998401005003004CA2C9010000000020DE
-:1099400086B001000800004098C801000000004FE8
-:10995000998401005003004CA2C9010000000020BE
-:1099600086A401000200004098C801000000004FDA
-:10997000998401005003004CA2C90100000000209E
-:1099800086A4010050030040A2C90100000000436A
-:1099900040A401000100002088E401000000005FF5
-:1099A00041F00100000000444094010005000075F2
-:1099B00089E401001B00007585F4010000000044EB
-:1099C000849401003D83A353836C00000000007663
-:1099D00089B0010000000077898401000000007652
-:1099E0008BB00100000000208BA401000000007873
-:1099F0008B8401004C8300458894000027000041BF
-:109A000080CE01004283AA4081320000000000762F
-:109A100089B001000000007789A401004C83007820
-:109A200089A400003B00004180CE01003F83AA4092
-:109A3000813200000000007689B00100000000774C
-:109A400089840100000000768BB0010000000078DE
-:109A50008B8401000000004588940100000000771D
-:109A60008BB00100000000788B8401004C8300451E
-:109A7000889400000000004484C0010000000079C8
-:109A800085C001000000002084C001005383A3535F
-:109A9000836C0000825A00A684C0010099790042BC
-:109AA00084C801006083004081B2000027000041AB
-:109AB00080CE01005883AA4081320000D96E00A6F2
-:109AC00084C00100A1EB004284C801006083004013
-:109AD00081B200003B00004180CE01005D83AA40BE
-:109AE000813200001B8F00A684C00100DCBC004254
-:109AF00084C801006083004081B2000062CA00A6F1
-:109B000084C00100D6C1004284C8010060830040C7
-:109B100081B2000000000078F3B20100000000777D
-:109B2000F1B201001E00007689E401000200007617
-:109B3000EFF6010000000044EE9601000000007501
-:109B4000EDB2010000000042EAB201000000004155
-:109B500083C001004F00004180CE01001F832A40D6
-:109B60008132000000000075E1C2010000000076B3
-:109B7000E3C2010000000077E5C2010000000078A8
-:109B8000E7C2010000000079E9C2010013838141AE
-:109B90008D4000000000804081B201009D83A24BF7
-:109BA000B76F00009D83A2412F7D00000000005090
-:109BB000FD930100401600404599010035820040A8
-:109BC000493101009C8322408F6C0000080000484E
-:109BD000B2CB0100FE81004081320100DB820040F7
-:109BE000813201009C83A240976C00005E16004009
-:109BF000439901007C1620F6E0B10100000000400E
-:109C000031B301008083224F8F7C0000000000519F
-:109C1000FD930100828322408F7C000086830054E4
-:109C2000FD930000848322428F7C000000000052DC
-:109C3000FD930100868322418F7C000000000053C9
-:109C4000FD9301009A832251FD7F00003482004081
-:109C5000813201000C000048B2CB0100FC810040C1
-:109C6000813201009583A240B56F00001E000048BC
-:109C7000B2CB0100FC81004896300100000000DA00
-:109C800097C001000400004BB2CB0100FC810040F2
-:109C9000813201000E000048B2CB0100FF8100407C
-:109CA000813201000C000048B2CB010000000030FE
-:109CB000B5B30100FF810040813201000E00004871
-:109CC000B2CB0100FC810040813201009983224027
-:109CD000B56F00009D830054FD930000000000510B
-:109CE000FD8301001C0000FE7FD901009D83A6407A
-:109CF0008132000000000055FD930100000080400B
-:109D000081B20100B6030040A199010000002F417B
-:109D100099B30100A8832244816C0000B0832248DB
-:109D2000816C0000AA83224C816C0000B483225015
-:109D3000816C0000B5832254816C0000B7832258E7
-:109D4000816C0000BC83225C816C000055010040E6
-:109D500081B20000000000BC09B001006A8400CAA2
-:109D600001B000000000004003B00100000000410D
-:109D7000F3830100AE83A242056C000000000041A5
-:109D800005B001006A8422CA071400006A840045F5
-:109D9000F39300006A842043956F00006A8480CAB0
-:109DA000053000006A842201803000006A8400CB04
-:109DB000DB9100005C0100BCABB30000000000BC04
-:109DC000B1B301006A8400CACFB30000FF0000CA2B
-:109DD000818801006A84A240747D000060002040F8
-:109DE00060990100B983A8B182300000B8830040B7
-:109DF00081B200006A8400CA79B300000000004EFE
-:109E000081B0010000000043CB8301000000454009
-:109E100081B20100BF83A241815000000000454093
-:109E200081B201000000454081B20100CA839182E5
-:109E3000823000000000008A80B00100B69F004020
-:109E400080CE0100C883A64081320000CA835640FC
-:109E500081B20000B6030040A19901000000005348
-:109E600007900100B6030040A199010000000052D4
-:109E700007900100F39F00418BB300000000004EEB
-:109E800081B0010000000042CD8301000000464087
-:109E900081B20100CF83A241815000000000464002
-:109EA00081B201000000464081B20100DA83918155
-:109EB000823000000000008980B00100B69F0040A1
-:109EC00080CE0100D883A64081320000DA8355405D
-:109ED00081B20000B6030040A199010000000052C9
-:109EE00007900100B6030040A19901000000005353
-:109EF00007900100F39F00418BB30000B1030040C5
-:109F0000A1990100C4142F4099B301005C010040E5
-:109F100049B1000058152D408DB00100D0142DF02E
-:109F200088B00100000000408FB00100010000A6D1
-:109F300090B0010000F80048909801000000004532
-:109F400093B00100000000FA8AB001006A030040EB
-:109F500081320100020000A680B00100EC832240A3
-:109F6000826C0000F0830040813201004703004012
-:109F700081320100000000418DC00100F583225FA5
-:109F80008D6C0000E783A24193500000E583004000
-:109F900081B20000FF070047848801000000A6404E
-:109FA00081B20000F59F00478030010000020047A9
-:109FB0008EC80100F083004081B200000000004420
-:109FC00050B30100FB832018896C0000040000A638
-:109FD00084B00100200000A686B0010000100040FF
-:109FE000559B0100FE83004081B20000040000A6E2
-:109FF00084B00100200000A686B0010000100040DF
-:10A00000559B01000000004250D30100000000A851
-:10A010004FB30100000000434ED301005E03004037
-:10A02000813201006C03004280300100F083004067
-:10A0300081320100078422A78F6C00004903004091
-:10A04000813201000484004081B2000000008040A1
-:10A0500081B20100A0942E4397B00100000000409F
-:10A06000F1B101000984A2419750000050952040B1
-:10A07000E1B10100AC942E4397B001000000004014
-:10A08000F1B101000D84A241975000000000804012
-:10A0900081B20100AE030040A3990100000000401E
-:10A0A00081B0010060150040859801000800004063
-:10A0B00040E40100000000594194010000000050FC
-:10A0C00041E0010000000042409401000000004116
-:10A0D00081C001000000A341816C0100000000412B
-:10A0E000A3C101001384005085C000004984A2412F
-:10A0F000017D000021842258737D0000780000401B
-:10A10000619901001C84A8B19C30000030003845E2
-:10A110009DE001000100000E10C90000218433C43D
-:10A12000813000002484A1AD9D2000001B841340D9
-:10A1300081B200000000134E5A8301003000384500
-:10A140009DE001002C8422AB800400002A84A24000
-:10A15000017D00002C84225F577D0000278A00408B
-:10A1600081B200002C84225E577D00008A8A004064
-:10A1700081B2000031842254737D000074000040DD
-:10A18000619901002C84A8B1003000000086A25F14
-:10A19000017C00006289004081B200003384A25F2C
-:10A1A000592700003584A25C737D00003C84A25EC8
-:10A1B000737D00004684225C737D00004784374035
-:10A1C000813200007C000040619901003684A8B112
-:10A1D000363000007C000040619901003884A8B14D
-:10A1E000003000001F000000028801002F86174089
-:10A1F00081B2000047843440813200007E0000407C
-:10A20000619901003D84A8B11230000044845221BC
-:10A2100013040000000014412FC30100FF3F000998
-:10A22000008C01000000004301F00100878400342D
-:10A2300013840000FF3F1409008C0100E7840043F1
-:10A2400001F000000000004081B20100478433406B
-:10A25000813200001B84134E5A930000EC89A248FF
-:10A26000FD7F00004E842259737D0000790000407C
-:10A27000619901004A8428B17E3100004B8400407E
-:10A2800081B20000528421AC9C20000000000041FB
-:10A290001FC301000400A05F9D6C00000000004E81
-:10A2A000589101005684225A737D00007A000040C4
-:10A2B000619901005384A8B17E310000010000CFF4
-:10A2C00011C900005C84A240937F00005C8422449A
-:10A2D000937F0000588442A5803000005B84A24038
-:10A2E000937F000071841A409393000000001A408D
-:10A2F00081B201009A80A240737D0000A1892244AE
-:10A30000216F000098892240657D0000A689A25B2C
-:10A31000737D00000400A249337D0000668422485A
-:10A32000337D0000FF01009980D80100000000503B
-:10A3300081E00100A8982F4033B1010000000040E7
-:10A34000E0C1010069842240AF6F000069842240AF
-:10A35000816F0000F5891FA5826F000049840040CD
-:10A3600081B200001B8400408BB300000000005845
-:10A3700061B101000000004E62B101001B84284061
-:10A38000813200006C84004081B200006F84334051
-:10A390001F3000001B84134E5A9300007384A0CE1C
-:10A3A000815000008584A0CD816C0000000000A5D4
-:10A3B0009CB30100000000B181B00100858422B58A
-:10A3C0008114000080152F4049B10100778442407C
-:10A3D00081320000000060B465970100D0152E4066
-:10A3E00069B3010000001A44938301001A0000A21F
-:10A3F00080DC010000000044F1B10100000000B168
-:10A40000F1B10100000000B5F1B10100050000400C
-:10A41000619901000000004062B101008084A8A1A0
-:10A42000E03100005C8400889EB300005C84A2419F
-:10A43000676F00005C84006FDB9100008584424000
-:10A44000813200005C841A40938300000099000967
-:10A4500046C901003F0000F30C8801009084A64229
-:10A460001360000055970095033001008B84454030
-:10A470008132000075000040619901008C84A8B110
-:10A480000C3000005C971D1094300100918400583E
-:10A490001F9000004E970095033001001B84008838
-:10A4A0001CB0000000002D0348B1010004002DF095
-:10A4B0002EB00100EE070040979801009884234BCE
-:10A4C000E46D00009884224BFD7F000000000040F6
-:10A4D0001F90010022002F4081B201009B8483174E
-:10A4E0008032000026000040479901009D848517B6
-:10A4F000803200000000004847C10100A3842255BB
-:10A500002F7C00000000004243D101000F0000FA40
-:10A51000968801000000004297E001000000004220
-:10A5200097D00100A484004B44C10000120000A297
-:10A5300044C90100280000F602CC01000A0000A175
-:10A5400042C90100000000F816B00100000028F028
-:10A5500010B00100000000F01AB00100000000A2DD
-:10A560002AB00100C0283C460DE0010000002D4447
-:10A5700095B00100B084A2F80E300000C0842241E2
-:10A580009550000000002D5049C10100AC840040EE
-:10A5900081B20000AD84A2F8166C0000AD84A2F870
-:10A5A000106C0000AD84A2F01A6C0000BE8422582A
-:10A5B0001F7C000000993F4213F00100B584474022
-:10A5C00081320000B984A2F3740600000000000686
-:10A5D000E6950100BE841F4081B200000000000625
-:10A5E00096B001003F001FF30C88010000000055E9
-:10A5F00061B101000000004B62B10100BC84A840C1
-:10A6000081320000BE84474081320000C6841F4171
-:10A610002DC30000C48422581F7C00000000005598
-:10A6200061B101000000000662B10100C284A840CF
-:10A6300081320000C484474081320000EE841F4113
-:10A640002DC30000030000071AF401002196000743
-:10A6500016300100D5842241816C0000CC84224256
-:10A66000816C00001B8400881CB00000D484225F31
-:10A670000F7C00001597005F01100100D28422407A
-:10A68000956C00000480000342C90100000000F244
-:10A6900002B001008A960052953001009196004B5D
-:10A6A00002B000006797000996300100058A00405B
-:10A6B0000FB00000DD84A25A1F7C00009B95004073
-:10A6C00081320100DD842220856C0000DA849C0F39
-:10A6D000803200001B8400881CB000007C96005C67
-:10A6E0001F0001009B980042613101001B8400881B
-:10A6F0001CB00000E69900079630010000002D050F
-:10A7000048B10100E08482F0183000006C8B0045F5
-:10A710008FB00000282000A696B00100E484221724
-:10A72000960400000B98004B953001006C8B004B99
-:10A730008FB000002197000348310100FC940040D5
-:10A74000813001006C8B004081B2000000002E10AF
-:10A7500048B101000000685003B001000000000390
-:10A76000F0B101000000004261B1010000000010E2
-:10A7700062B10100EB84A800E03100001B84008876
-:10A780001CB0000000002D0348B101000000004093
-:10A790000FB00100000000F82EB00100000000F230
-:10A7A00002B001000000004017B00100004100A607
-:10A7B00096B00100EE072E47979001000185221701
-:10A7C00096040000FF84224BFD7F0000FF8423A23B
-:10A7D000026C00008A96005295300100040022416C
-:10A7E000975000000C002D0012B00100000000F096
-:10A7F00000B001000000005C018001009196004B58
-:10A8000002B000000000000900B00100000000508C
-:10A8100003B001001E85005C1790000013852243E1
-:10A820002F7C0000000000451F9001000C85225F76
-:10A830002F7C000000002E1048B1010000000058DD
-:10A84000F1B1010010000003F0C901001000000088
-:10A85000E0C9010008854542613100000000001098
-:10A8600062B101000985A840813200001B841D8867
-:10A870001CB0000020002D0348B10100FF0F00F6BE
-:10A88000808801001085A2A6816C0000138500F26B
-:10A890003AB00000FD85A24BFD7F0000E29500402C
-:10A8A000813201001B8A004081B200001E85224ACD
-:10A8B0002F7C00001E8522482F7C00000A002D03FB
-:10A8C00048B101003F0000F2868801001F000043EC
-:10A8D000848801000500004380F4010098943D4203
-:10A8E00081E001001E85A242E07D0000FD85A24BB3
-:10A8F000FD7F0000E2950040813201001B8A00408C
-:10A9000081B200001E85474081320000000000A394
-:10A9100009B0010000001F4147C30100248522A1A6
-:10A92000096C00006B8400881CB0000021850003C6
-:10A9300048B100005E85A392036C00000A990040B4
-:10A94000953001000000004143C3010000000016E3
-:10A9500080B201001B8A2708803200002B85225C10
-:10A96000177C00002C8500002AB0000012000000B7
-:10A970002AC801000200000880C801003085A243F7
-:10A980002F7C00000E980040813201004C85005E53
-:10A9900017900000040000018CCC01000E98004CC0
-:10A9A0000330010000002E4602B00100100000102C
-:10A9B00048C901000C000001F0CD01002C0000404E
-:10A9C000F0C9010000000016F0B1010010000015F0
-:10A9D000E0C901000000004361B10100A00000A433
-:10A9E00062DD01003985A854171000004C85005E17
-:10A9F00017900000120000002AC801004B85224376
-:10AA00002F7C0000040000018CCC01000000004CF1
-:10AA100003B001002F9800436131010000002E4671
-:10AA200002B001001000001048C901000C00000134
-:10AA3000F0CD01000C000009F0C901000000001871
-:10AA4000F0B1010010000015E0C901000000004352
-:10AA500061B10100A00000A462DD01004C85285412
-:10AA6000171000004885004081B200002F98004375
-:10AA7000613101004E8522502F7C000000000056FD
-:10AA80001790010007000017988801005185A24126
-:10AA9000996C000000000055179001000000004371
-:10AAA00061B101004000001062DD01005285A84044
-:10AAB000813200001B8400881CB000001698004002
-:10AAC00081320100598522432F7C0000168000034B
-:10AAD00044C901000000001DE4B10100B797005E09
-:10AAE000051001005C85A25F2F7C0000CE94000160
-:10AAF00038430100E2950040813201001B8A00408A
-:10AB000081B200006085A24BFD7F0000FA85004104
-:10AB100043C300000000004027B0010000000040D7
-:10AB20002DB001000000004011B001006385350127
-:10AB3000863000006D000040619901006B8528B1EE
-:10AB4000303000006485224D757D00000000001645
-:10AB500080B20100EA85A740116C000000000041AE
-:10AB600043C30100F985004081B200006D00004040
-:10AB7000619901006B85A8B1123000000000001639
-:10AB800080B201007585A740116C000000000041F3
-:10AB900043C301000000000910B0010000000018CC
-:10ABA0002CB00100DE07004380CE01006485AA407E
-:10ABB000813200007A85004081B2000040003E43AF
-:10ABC00027E0010000000009F0B1010000000018BA
-:10ABD000E0B101000000004127C001006485A30B23
-:10ABE00087500000000015401BB00100000000402D
-:10ABF00023B00100120000002AC8010040002D40CF
-:10AC000039B001008285A240276C000022000008B4
-:10AC100012C80100DE07004025980100858500402C
-:10AC200081B20000000000F812B00100000000F046
-:10AC300030B001000000000B25B001000000001042
-:10AC400032B0010014002001E0B10100EE07004025
-:10AC5000379801008A852301366C0000000000014E
-:10AC600036B001009585824123400000208000100D
-:10AC700042C9010091852240E36D000000000043BD
-:10AC800061B101004000001062DD01008E85A84026
-:10AC9000813200001B8400881CB000000196004334
-:10ACA000233001000000001032B00100000000411C
-:10ACB00023B001000000000348B10100008000192A
-:10ACC00044C90100A48522451F7C00000000004CFF
-:10ACD000F1B1010000000009F0B10100000000180E
-:10ACE000F0B101000000004361B101002000001933
-:10ACF00062DD01009B85A815E031000000000050D6
-:10AD000003D001000000005033C001000000004CDF
-:10AD100025D001000C002D4C13C001000000005094
-:10AD200037D00100000000502BC001008A8500458B
-:10AD30001F800000A685A312366C0000A785681B43
-:10AD400028B000000000681228B0010000000009CF
-:10AD5000F0B1010000000018F0B101000000004354
-:10AD600061B101002000001962DD0100AA85A8156B
-:10AD7000E0310000D0852214025000000000005095
-:10AD800033C001000000001424D001000C002D1479
-:10AD900012C00100C985A21436500000BA85225C99
-:10ADA0001F7C00003080001042C90100B88522409D
-:10ADB000E36D00000000004261B10100400000109E
-:10ADC00062DD0100B585A840813200001B84008847
-:10ADD0001CB000000000000348B101000C002D5C15
-:10ADE0001F800100100000F02AC801000000005C74
-:10ADF0002B800100F007004037980100BF85230138
-:10AE0000366C00000000000136B00100CA85221B2C
-:10AE1000026C00003000001048C9010000002E5CE8
-:10AE20001F90010000000050F1B10100000000037C
-:10AE3000F0B10100FF070015E08D010000000042A5
-:10AE400061B10100A00000A462DD0100C685A84038
-:10AE500081320000CA85000348B1000000000014E0
-:10AE60002AC001008A85A240256C00000000004134
-:10AE700039C0010040003D4339E001000000000BF3
-:10AE800025B00100000000F812B001008A8500F032
-:10AE900030B000000080001942C90100D685224070
-:10AEA000E36D00000000004361B1010040000019A3
-:10AEB00062DD0100D385A840813200001B84008838
-:10AEC0001CB00000019600402B30010018002E033A
-:10AED00048B10100DA8522502F7C000000000056A6
-:10AEE000179001000700001798880100DD85A24136
-:10AEF000996C00000000005517900100E085224386
-:10AF00002F7C000000000054179001001600201D47
-:10AF1000E4B10100E285A340276C0000E485605F96
-:10AF2000179000000084000B16DC01000000601385
-:10AF300016940100B797005E051001001B8AA25FFE
-:10AF40002F7C00001480000342C90100000000F2C1
-:10AF500002B00100CE940001384301001B8A00407A
-:10AF600081B200000000004083B001000000004DED
-:10AF700061B101000000001662B10100EC85A8403B
-:10AF8000813200000000000862B10100EE85A84097
-:10AF900081320000F9852213826C000040003D439D
-:10AFA00083E00100000000F810B00100000000F094
-:10AFB0002CB001000000001662B10100F485A84029
-:10AFC000813200000000000862B10100F685A8404F
-:10AFD00081320000F085004183C000000000154070
-:10AFE00081B20100008200A604B00100A0980040D8
-:10AFF00047990100E9890041893001008A96005291
-:10B00000953001009196004B02B000001B8A004071
-:10B010000FB000000000005F018001001000000080
-:10B020000EF401003F00000000880100030000074B
-:10B030001AF4010021960007163001000B86224108
-:10B04000816C000009862242816C00001B8400880C
-:10B050001CB000000A86225F0F7C0000058A0040B9
-:10B060000FB000001386A25A1F7C00009B95004081
-:10B070008132010013862220856C000010869C0F0F
-:10B08000803200001B8400881CB000007C96005CAD
-:10B090001F0001009B980042613101001B84008861
-:10B0A0001CB00000E69900079630010000002D0555
-:10B0B00048B10100000000F018B001001986223AE2
-:10B0C000016C0000000000008EB001006C8B00409D
-:10B0D00001B000000000004081B201002E002D05EB
-:10B0E00048B101001D86A240E76D00000A00004043
-:10B0F0008F9801006C8B004001B000006695004005
-:10B10000813201004E970095033001001B840088B6
-:10B110001CB0000000002D0348B1010022002DF0FA
-:10B120002EB00100282000A696B001002686221726
-:10B13000960400000B98004B953001006C8B004C7E
-:10B140008FB0000028868317803200000000004482
-:10B1500043C101002A8685178032000000000048A4
-:10B1600043C10100280000F602CC0100120000A13A
-:10B170002AC801002197004081320100FC9400415F
-:10B18000813001006C8B004081B2000000000001A2
-:10B1900000D0010000002E1048B10100280000403E
-:10B1A000F199010000000003F0B10100000000006F
-:10B1B000F0B1010034864647613100000000001004
-:10B1C00062B101003586A81BE03100001B841E8897
-:10B1D0001CB000000000004503E0010008002D0342
-:10B1E00048B101005A8601FB08300000AD8687FB9C
-:10B1F00022300000000000FA0EB00100000000F84C
-:10B2000014B00100030000071AF4010021960007A2
-:10B210001630010050862241816C00004486224293
-:10B22000816C00001B8400881CB000004F86225FE8
-:10B230000F7C0000380000047E8901004886A65F6C
-:10B240000F00000074950040053001004D8600405D
-:10B2500081B20000130000408798010000002D0318
-:10B2600048B101000C002DF082B00100000000F098
-:10B2700084B0010000970040053001000000005C30
-:10B280001F900100058A00400FB000005886A25AA6
-:10B290001F7C00009B9500408132010058862220CF
-:10B2A000856C000055869C0F803200001B8400884E
-:10B2B0001CB000007C96005C1F0001009B980042BF
-:10B2C000613101001B8400881CB00000E699000772
-:10B2D0009630010000002D0548B10100000000F08B
-:10B2E00018B001005C862104802000005D860040CB
-:10B2F00010C90000AE8A004B81B000007C8600437C
-:10B3000081B00000808600FB22B00000AE8A0041C0
-:10B3100081B000006C8B004E8FB000007886005A20
-:10B320008FB00000658600478FB00000AE8A0053E2
-:10B3300081B00000AE8A005681B0000032002D05B9
-:10B3400048B101006C8BA00AE46D00006B86A2413D
-:10B35000197C00006A86220A803200006C8B005340
-:10B360008FB000006C8B00548FB000007486220AEE
-:10B37000803200006E86A20AE46D00006C8B005DD6
-:10B380008FB00000000000F280B001000000000A51
-:10B3900080D001007286A091816C00006C8B005EF1
-:10B3A0008FB00000250000408F9801006C8B00409A
-:10B3B00081B2000076862091E56D00006C8B005410
-:10B3C0008FB00000210000408F9801006C8B00407E
-:10B3D00081B2000032002D0548B101006C8BA00A3B
-:10B3E000E46D0000240000408F9801006C8B004049
-:10B3F00081B2000037002D0548B10100040000F3C0
-:10B4000082F40100AE8AA042836C0000AE8A005430
-:10B4100081B00000000000F20EB001000300000740
-:10B420001AF4010000B5000D42C901000700000731
-:10B43000168801008986220BE67D00000A00004084
-:10B4400087980100559900408132010000000040BA
-:10B450000FB00100058A005C1F9000009B862250FF
-:10B46000FD7F00009686A254FD7F00008E86225547
-:10B47000FD7F000082000040879801008686004022
-:10B4800081B2000086862253FD7F000014800003F5
-:10B4900042C90100000000F096B001001000004B0E
-:10B4A00080F401000CBC004087980100968622437E
-:10B4B000806C0000FFFF004B808801008686A2435D
-:10B4C000806C00007C9600404799010097864340BD
-:10B4D000813200009A86A0F0306F00008C861B40FD
-:10B4E00081B2000000001B4131C30100A59500405E
-:10B4F000253001009F869C0F803200001B8400884D
-:10B500001CB000007C96005C1F000100148000034A
-:10B5100042C90100000000F096B0010000002F05B4
-:10B5200048B101001000000718E401000008000CF9
-:10B53000E0990100E69900079630010000B5000D82
-:10B5400046C90100A6863040813200000000000B91
-:10B55000E6910100000200A146C901000000000BB5
-:10B56000E691010004002E0548B1010000001040E2
-:10B57000E1B10100AE8A004081B00000000000FB94
-:10B5800028B00100000000FB86B00100000000F8B8
-:10B5900014B00100B7862246237C0000B386224007
-:10B5A000877C0000000000481F900100B586224102
-:10B5B000877C0000000000471F900100B7862242F0
-:10B5C000877C0000000000451F900100B786471BE4
-:10B5D0002C300000000000A013B0010000001F414B
-:10B5E00041C30100E6862392156C0000E686A24561
-:10B5F0001F7C0000EA86224BFD7F0000170000D070
-:10B60000A2C901000000004027B001000200000AAA
-:10B6100024C80100DD9500400F300100E4862208B7
-:10B620004030000000000041A3C10100F0070012FB
-:10B6300024CC0100C086AA4127400000010000136D
-:10B6400080CC0100E086264023300000000000404E
-:10B6500083B001006000000384C8010010000010E6
-:10B6600048CD0100170000D0A2C90100CD86A2403C
-:10B67000836C0000D986004183B000000080004246
-:10B6800044990100000068213896010000002E5006
-:10B6900049C10100D286A244236C0000300000039F
-:10B6A00048C9010000000044F1B101000C00002075
-:10B6B000F0C901000000004461B10100A00000A435
-:10B6C00062DD0100D586A842E031000000000044A0
-:10B6D00085C001000000004123C0010000000041BE
-:10B6E000A3C10100CB86A24181500000E086224028
-:10B6F000236C00000000004461B101004000001014
-:10B7000062DD0100DD86A840813200001B840088D4
-:10B710001CB000000000000348B10100EE0700402B
-:10B7200025980100170000D02AC80100F3860017F1
-:10B7300010B00000C097004081320100EA8600404E
-:10B7400081B20000DD95009225300100000000402C
-:10B7500031B00100EA8622082E300000F386004155
-:10B7600027B00000808000A604B001000600004061
-:10B77000879801005599000A8C30010000000040B4
-:10B780000FB001000000005C1F900100F286229FB4
-:10B79000136C0000020000881CCC01006B84004088
-:10B7A00081B20000058A00413FC300000000004054
-:10B7B0000FB001002800000180CE010007872A4059
-:10B7C000813000000080001044C9010040000040AA
-:10B7D00081980100FC86A2481F7C0000FC86A247DD
-:10B7E0001F7C0000FC86A307036C00008000004063
-:10B7F00081980100FF86A340026C00002800000130
-:10B80000F0CD0100018700400FB00000280000408B
-:10B81000F0CD0100040000400ECC01002800000320
-:10B82000F0C9010028000000F0C901000000001666
-:10B83000E0B101000000004761B1010020000010EC
-:10B8400062DD01000587A85C1F10000000000040B9
-:10B8500043990100000000F008B00100A0012D4054
-:10B8600000C00100ED88220F4205000018879C0FE0
-:10B87000803200000000005C1F800100008000108A
-:10B8800042C9010013872240E36D00000000004719
-:10B8900061B101004000001062DD01001087A84086
-:10B8A000813200001B8400881CB00000188722072A
-:10B8B000803200000000000342B1010000000007D8
-:10B8C00042C10100008000A1469901000000005F14
-:10B8D000E1910100D787A2451F7C00001000000302
-:10B8E00048C9010000002D5429C00100000000F8E3
-:10B8F00018B00100000000F804B00100000000F8DA
-:10B900000EB00100420000030AC801000C0000A4B0
-:10B910000CC801000000004017B001000000001436
-:10B9200002B001000000001424D001000000001447
-:10B9300010C001001200000810C801000000004003
-:10B9400023B00100FE7F000544C90100298720942F
-:10B95000156C00002A870094E5B100000000000A81
-:10B96000E4B10100438722018032000000003C4422
-:10B9700023E0010000002EA480B0010000000010B0
-:10B9800048C101003087A307026C000031876801BD
-:10B990001AB00000000068071AB001000000000D96
-:10B9A00002D0010000000005F0B101000000000C11
-:10B9B000F0B1010000000002E0B101000000000D44
-:10B9C0000AC001003D872240036C00003D872242EF
-:10B9D000236C00000000004123C00100000000476C
-:10B9E00061B10100A00000A462DD0100658728406C
-:10B9F000813200003A87004081B200000000001050
-:10BA000080C001000000004761B10100000000405B
-:10BA100062B101003F87A840233000001B840088EA
-:10BA20001CB000006587004081B2000000003C446B
-:10BA300023E00100000000A486B0010000002E10E9
-:10BA400048C101004887A3120E6C000049876807AF
-:10BA50001AB00000000068121AB001004C8780087C
-:10BA6000F03100000100001198C801000000004CF6
-:10BA70001E9001000000000CF0B101000000000267
-:10BA8000E0B101000000001086C001000000004687
-:10BA900061B10100011F004362DD01005087A85C15
-:10BAA0001F1000008387220D146C00005687220DA2
-:10BAB000246C00000000000D10C001005A87000D2A
-:10BAC00024D00000000000412BC001000000001540
-:10BAD000A2B101001000002010C80100F0070040D2
-:10BAE000259801005C872242236C00006587004195
-:10BAF00023C000000000004661B1010040000010BA
-:10BB000062DD01005D87A85C1F0000001B840088C7
-:10BB10001CB000000000001048B1010063872247FC
-:10BB20001F7C000011960043233001000E00000F1F
-:10BB30001E8C01000000004023B001008387220D0D
-:10BB4000145000008287A20D0E500000718722461B
-:10BB50001F7C0000000000461F80010030800010A4
-:10BB600042C901006F872240E36D000000000047DA
-:10BB700061B101004000001062DD01006C87A84047
-:10BB8000813200001B8400881CB00000208000036C
-:10BB9000469901000000005FE191010000002D06C0
-:10BBA00048B10100000000F818B00100000000F8E2
-:10BBB00004B0010076871FF00E3000002A87004C89
-:10BBC0000DC0000000002E5F0F8001002A872307B0
-:10BBD000146C00003000001048C90100240000402F
-:10BBE000F199010000000003F0B101000000000025
-:10BBF000F0B1010000000016F0B1010024000000C7
-:10BC000000C801000000004761B10100A00000A4CD
-:10BC100062DD01007F87A8461F1000002A8700030D
-:10BC20000CB000002A87000D18C0000004002E147C
-:10BC30000AD001001200000548CD0100FE7F00057A
-:10BC400042C901000C002AF2E0B1010089872240BC
-:10BC5000316C000000006018389601001E000040A2
-:10BC600043990100008100F680CE01008D87A64037
-:10BC7000813200000000004443C101008F87220B85
-:10BC8000ED6D0000080000A142C90100020000A102
-:10BC900046C901000F0000FA948801000200004A22
-:10BCA00086E40100000000F60EB0010097872247ED
-:10BCB0001F7C000004001F430E5000009787A04621
-:10BCC0000F400000000000410FC001009B87224888
-:10BCD0001F7C00000000004091B0010004000FA292
-:10BCE000423100009E87004089B000000C0000A295
-:10BCF00042C901000000004389B001000000004378
-:10BD000095D00100000000FC82B00100A187A04195
-:10BD1000904000000000004191C00100A68722472A
-:10BD20001F7C0000A687A043896C0000A6872045E1
-:10BD3000896C0000A687A0410E4000000000004171
-:10BD40000FC001000000004189C001009E87A24190
-:10BD500095500000AF8722481F7C0000100000486B
-:10BD600092F40100FFFF004890880100AD879048E1
-:10BD7000924000000000004193C001000A0000A2B0
-:10BD800044C901000000662093A401003080001027
-:10BD900044C9010012000014F0C90100000000179E
-:10BDA000F0B1010012000005E0CD010030000010EC
-:10BDB00080C801000000004461B101002000004083
-:10BDC00062DD0100B587A84081320000C287225C95
-:10BDD0001F7C000000003C4423E0010000002D1007
-:10BDE00048C10100BF872240E36D0000000000460B
-:10BDF00061B101004000001062DD0100BC87A84075
-:10BE0000813200001B8400881CB00000C287875C60
-:10BE10001F0000000000001048B101001196004111
-:10BE200023400100C487A2471F7C000058890017E7
-:10BE300010B0000000002F0348B10100C787A00721
-:10BE4000164000000000004117C001000000000B78
-:10BE5000E4B101000000005017F00100CB8790F220
-:10BE6000164000000000004117C0010000006620DD
-:10BE700017A40100100000142AC80100000000509F
-:10BE80002BE00100000000F22A9401003080001035
-:10BE900042C90100D5872240E36D00000000004444
-:10BEA00061B101004000001062DD0100D287A840AE
-:10BEB000813200001B8400881CB000000080001745
-:10BEC00010DC01005889004081B20000A5950040B7
-:10BED00081320100DB87225C1F7C00001B8400880C
-:10BEE0001CB000007C96005C1F0001000080000573
-:10BEF00044C9010000000040E1B1010004002D032D
-:10BF000048B10100000000F03CB00100280000141E
-:10BF100002C801000000000134B0010000002D053E
-:10BF200032B00100220000050AC801001000000321
-:10BF300048C90100000000F818B00100000000F836
-:10BF400004B00100000000F80EB001000C0000A4D5
-:10BF50000CC801000000004017B0010000000040C4
-:10BF600023B00100218822018032000000003C44FF
-:10BF700023E0010000002EA480B0010000000010AA
-:10BF800048C10100F087A307026C0000F187680137
-:10BF90001AB00000000068071AB001000000000D90
-:10BFA00002D0010000000005F0B101000000000C0B
-:10BFB000F0B1010000000002E0B101000000000D3E
-:10BFC0000AC0010003882240036C0000FD87224262
-:10BFD000236C00000000004123C001000000004766
-:10BFE00061B10100A00000A462DD01003D8828408D
-:10BFF00081320000FA87004081B20000000000108A
-:10C0000080C001000000004761B101000000004055
-:10C0100062B10100FF87A840233000001B84008824
-:10C020001CB000003D88004081B2000000000010FC
-:10C0300080C001000000004761B101000000004025
-:10C0400062B101000588A840233000001B840088ED
-:10C050001CB000002200001948C9010000002D1486
-:10C0600048C101000F0000F23A88010000000042C0
-:10C070003BE001000E00001402C801000000001D9A
-:10C0800002C001001188231A02500000000000467F
-:10C0900003C001003D88000134C000000C002D1DCC
-:10C0A00048C10100F00000F23088010000000042A9
-:10C0B00031F001000000001402B001000000001D7A
-:10C0C00002C001000000001802C001001988221AF5
-:10C0D000025000003D88000134C000002200001919
-:10C0E00048C9010002002D1448C10100000000F6FB
-:10C0F00014B001000000001D14D001000000001861
-:10C1000014D001000000001E24B00100120000172E
-:10C1100010C801003D88001A10C0000000003C4417
-:10C1200023E00100000000A486B0010000002E10F2
-:10C1300048C101002688A3120E6C000027886807FA
-:10C140001AB00000000068121AB001002A888008A6
-:10C15000F03100000100001198C801000000004CFF
-:10C160001E9001000000000CF0B101000000000270
-:10C17000E0B101000000001086C001000000004690
-:10C1800061B10100011F004362DD01002E88A85C3F
-:10C190001F1000005A88220D145000005A88220DEA
-:10C1A000245000000000000D10C00100358822421C
-:10C1B000236C00003D88004123C0000000000046C1
-:10C1C00061B101004000001062DD01003688A85C0A
-:10C1D0001F0000001B8400881CB00000000000103D
-:10C1E00048B1010011960043233001000E00000FFA
-:10C1F0001E8C01000000004023B001005988A20DF0
-:10C200000E500000488822461F7C000000000046B7
-:10C210001F8001003080001042C901004688224082
-:10C22000E36D00000000004761B101004000001014
-:10C2300062DD01004388A840813200001B84008831
-:10C240001CB0000020800003469901000000005F40
-:10C25000E191010000002D0648B10100000000F846
-:10C2600018B00100000000F804B001004D881FF074
-:10C270000E300000EA87004C0DC0000000002E5F69
-:10C280000F800100EA872307146C000030000010C3
-:10C2900048C9010024000040F1990100000000039A
-:10C2A000F0B1010000000000F0B101000000001634
-:10C2B000F0B101002400000000C8010000000047A8
-:10C2C00061B10100A00000A462DD01005688A8460B
-:10C2D0001F100000EA8700030CB00000EA87000D81
-:10C2E00018C000007788A2441F7C000000000019DD
-:10C2F0000AB001002200000548C901000A002D14FF
-:10C3000048C1010002002040E5B1010004002040C6
-:10C31000E5B101000D002D1D48C10100090000F329
-:10C32000388801000D002050E7B1010004002D40C5
-:10C330003FB00100000000F432B0010004002040D2
-:10C34000E1B101002200000548C9010000002D14E0
-:10C3500048C101000200001D94F4010000000040EB
-:10C3600091B001006C88A0FC9040000000000041EA
-:10C3700091C001006A88A241955000000480000528
-:10C3800044C9010000000048F0B10100000000189D
-:10C3900048C101000200001894F4010000002D18AB
-:10C3A00090B001007488A0FC9040000000000041A3
-:10C3B00091C001007288A241955000000000004821
-:10C3C000E0B1010010002040E5B1010022000005AD
-:10C3D00048C901000000001448C1010004800005A4
-:10C3E00042C90100000000F880B00100000000F028
-:10C3F00016C001007C8842303D0700000000009E0E
-:10C4000085B0010000001A413DC301000400204234
-:10C41000ECB101000000001E82B0010002002E1DE0
-:10C4200082C001000000661882C0010000000042C6
-:10C4300080C001008688A0418044000000000041C7
-:10C4400081C001001000004092F401000A002E306B
-:10C45000818401008A8890409240000000000041E1
-:10C4600093C001000000662093A401000000001D9D
-:10C4700048C1010004002019E8B101000000001EBD
-:10C4800016C001009088A019164400000000004169
-:10C4900017C001000D002F1E32C001009588A24078
-:10C4A000156C00009488A01C16400000000000419C
-:10C4B00017C00100000063F338940100100000056C
-:10C4C00048C9010004002E1E98B001000000601A47
-:10C4D00098C001000C002040E1B10100A388224671
-:10C4E0001F7C0000000000461F800100308000100B
-:10C4F00042C90100A1882240E36D0000000000470E
-:10C5000061B101004000001062DD01009E88A8407A
-:10C51000813200001B8400881CB0000020800003D2
-:10C52000469901000000005FE19101003080001099
-:10C5300044C901001200001AF0C9010000000017F0
-:10C54000F0B1010010000005E0C90100300000104A
-:10C5500080C801000000004461B1010020000040DB
-:10C5600062DD0100A988A84081320000B788225C02
-:10C570001F7C000000003C4423E0010000002D105F
-:10C5800048C10100B3882240E36D0000000000466E
-:10C5900061B101004000001062DD0100B088A840D8
-:10C5A000813200001B8400881CB000000000005C89
-:10C5B0001F8001000000001048B1010011960041E9
-:10C5C000234001000E00000F1E8C010020002F05EB
-:10C5D00048B101000000000BE4B101000000005070
-:10C5E00017F00100BC8890F21640000000000041E6
-:10C5F00017C001000000662017A4010010000014FD
-:10C600002AC801000000001D2AC0010000000050DF
-:10C610002BE00100000000F22A940100308000109D
-:10C6200042C90100C7882240E36D000000000044B9
-:10C6300061B101004000001062DD0100C488A84023
-:10C64000813200001B8400881CB0000000800017AD
-:10C6500010DC0100E4882240156C0000CF88A24461
-:10C660001F7C0000000000441F900100CE88229F24
-:10C67000136C0000020000881CCC01006B84004099
-:10C6800081B20000000000413FC3010066990040F4
-:10C6900081320100D288A241877C00000000001E88
-:10C6A0003EC00100E4882240156C0000D588201EA1
-:10C6B000146C00000000000A3CB00100DD95001E73
-:10C6C00024300100DA8822082E30000000000052D9
-:10C6D00011C001000000001A10C001003D88004098
-:10C6E00017B000006B8400881CB00000DD9500408E
-:10C6F00081320100D788A2082E300000808000A679
-:10C7000004B001000600004087980100008000038B
-:10C710004499010004002204E03100005599001FF3
-:10C720008C300100000000400FB00100058A005C61
-:10C730001F900000008000034499010004002204BF
-:10C74000E03100006699004081320100E988A24191
-:10C75000877C0000EA88001E3EC000000000001F29
-:10C760008CB001000000004005B001005599004068
-:10C770000F300100058A005C1F900000F5889C0FB7
-:10C78000803200000000005C1F800100008000106B
-:10C7900042C90100F5882240E36D00000000004717
-:10C7A00061B101004000001062DD0100F288A84084
-:10C7B000813200001B8400881CB00000FA88220728
-:10C7C000803200000000000342B1010000000007B9
-:10C7D00042C10100008000A1469901000000005FF5
-:10C7E000E191010004002E0348B10100FD8820946E
-:10C7F000156C0000FE880094E1B100000000000A02
-:10C80000E0B1010001892240316C00000C000040C1
-:10C8100045990100000060183896010000002E10B4
-:10C8200048B1010000000050F1B101000000000813
-:10C83000F0B1010000000003E0B10100000000447D
-:10C8400061B101000000001062B101000689A8403A
-:10C85000233000001B8400881CB0000000002D5213
-:10C8600011C001001000000348C90100000000F8D9
-:10C8700018B00100000000F804B00100000000F84A
-:10C880000EB001000C0000A40CC8010000003C44E4
-:10C8900023E00100000000A486B0010000002E107B
-:10C8A00048C101001489A3120E6C000015896807A5
-:10C8B0001AB00000000068121AB001000000001059
-:10C8C00086C0010000000008F0B101000000000C6B
-:10C8D000F0B1010000000002E0B1010000000046DC
-:10C8E00061B10100011F004362DD01001A89A85CEB
-:10C8F0001F1000004B89220D146C00002089220DAE
-:10C90000246C00000000000D10C001002489000DFF
-:10C9100024D00000000000412BC0010000000015E1
-:10C92000A2B101001000002010C80100F007004073
-:10C930002598010026892242236C00002D890041A0
-:10C9400023C000000000004661B10100400000105B
-:10C9500062DD01002789A85C1F0000001B8400889D
-:10C960001CB000000000001048B10100D794004343
-:10C97000233001000000004023B001000400220D1C
-:10C98000145000004A89A20D0E5000003989224639
-:10C990001F7C0000000000461F8001003080001056
-:10C9A00042C9010037892240E36D000000000047C2
-:10C9B00061B101004000001062DD01003489A8402F
-:10C9C000813200001B8400881CB00000208000031E
-:10C9D000469901000000005FE191010000002D0672
-:10C9E00048B10100000000F818B00100000000F894
-:10C9F00004B001003E891FF00E3000000F89004C8A
-:10CA00000DC0000000002E5F0F8001000F8923077A
-:10CA1000146C00003000001048C9010024000040E0
-:10CA2000F199010000000003F0B1010000000000D6
-:10CA3000F0B1010000000016F0B101002400000078
-:10CA400000C801000000004761B10100A00000A47F
-:10CA500062DD01004789A8461F1000000F8900030E
-:10CA60000CB000000F89000D18C000005489225C32
-:10CA70001F7C00000000005C1F80010000003C449F
-:10CA800023E0010000002D1048C10100548922401C
-:10CA9000E36D00000000004661B10100400000109D
-:10CAA00062DD01005189A840813200001B840088AA
-:10CAB0001CB000000000001048B10100D7940041F4
-:10CAC000234001000000001710B001005889004009
-:10CAD0002BB0000000800003449901000000000416
-:10CAE000E0B101005D89229F136C00000200008804
-:10CAF0001CCC01006B84004081B2000066990041AB
-:10CB00003F430100000000408DB0010000000040E4
-:10CB100005B00100559900400F3001001B8A005CF0
-:10CB20001F900000100000000EF401000000003A09
-:10CB300001840100030000071AF401002196000798
-:10CB4000163001006C892241816C00006A89224202
-:10CB5000816C00001B8400881CB000006B89225F80
-:10CB60000F7C0000058A00400FB000007489A25AB3
-:10CB70001F7C00009B9500408132010074892220B7
-:10CB8000856C000071899C0F803200001B84008836
-:10CB90001CB000007C96005C1F0001009B980042C6
-:10CBA000613101001B8400881CB00000E699000779
-:10CBB0009630010000002D0548B10100000000F092
-:10CBC00018B001000000000080B00100AE8AA25F32
-:10CBD000816C0000A8002D431980010037002DF062
-:10CBE00024B00100040000F38EF401000F0000F3F4
-:10CBF00090880100838922488E6C00003600004036
-:10CC00004399010058003D43E7E1010083891FF08B
-:10CC1000246C0000828923418F6C0000AE8A00479B
-:10CC200081B00000AE8A004881B0000040000040A2
-:10CC300043990100B0002DF014B001008889220A48
-:10CC4000904000003999004091300100AE8AA24026
-:10CC500080320000B0002D4581B00100948922F09F
-:10CC60002C300000A3002D3083B00100AC002DF368
-:10CC700082E001008E89A3412C6C000000000016A8
-:10CC800082B0010098002DF082C0010088002DF0D4
-:10CC900082D00100000000F298E80100AE8A204C2A
-:10CCA000826C00007C002D4198E80100AE8A20F0E3
-:10CCB000986C0000058A220A803200004002000CB5
-:10CCC0007E890100058AA64081320000AE8A0049B3
-:10CCD00081B00000200000A680B001009C892243A2
-:10CCE000216F00001380004080DC01009D8900401E
-:10CCF00081B200001A80004080DC01009D89A25EA4
-:10CD00000B7D00000000004008B101009F899F8555
-:10CD100080320000A389004081B200005F8422407D
-:10CD2000577D00000100004057990100A38942404F
-:10CD300081320000000000449393010049841A5B93
-:10CD4000699300007B00004061990100A689A8B1A9
-:10CD500080300000CF891D4080320000C089224011
-:10CD6000AF6F0000C089225B817C00000400225D5F
-:10CD7000737D00007D00004061990100AC89A8B17D
-:10CD8000943000000000005F61B101000000004A23
-:10CD900062B10100AF89A84081320000B1894340EF
-:10CDA00081320000BF892257737D00007700004068
-:10CDB00061990100B389A8B1943000007700004068
-:10CDC00061990100B589A8B19630000000000048C3
-:10CDD00061B101000000004A62B10100B889A84AAF
-:10CDE00080330000BD89225F957C00000000004B6D
-:10CDF00062B10100BB89A84BAC33000000001BA549
-:10CE000082B30100C08900BE83C3000000001B4044
-:10CE100081B301004018004049990100040000A6B8
-:10CE200086B00100CD89A240860400001B849C408E
-:10CE300080320000FFFF004088880100E98900502F
-:10CE4000473101003600004488CC0100C9895240B6
-:10CE500081320000E98900404731010000000041B3
-:10CE600089B00100E989004847310100E9890005DE
-:10CE7000473101001B84004081B2000028000040BF
-:10CE8000479901001B840041E1C10000781800406F
-:10CE900049990100D6892254817C0000D189424001
-:10CEA00081320000008200B469DF010000001A44F2
-:10CEB000939301002800004047990100E98900414F
-:10CEC00089300100E4890F4080320000FF7F00407C
-:10CED00088880100E989005047310100360000448C
-:10CEE00088CC0100DC8999408032000000000048B5
-:10CEF00089D00100DE899B40803200000000004C98
-:10CF000089D00100E0891F4480320000E989004097
-:10CF1000473101000000004189B00100E989004863
-:10CF200047310100E9890058473101001B84004066
-:10CF300081B200001000004086F401006F00004341
-:10CF4000868801001B84260547310000E9890041DD
-:10CF5000893001001B84004081B200000000A04421
-:10CF6000F04101000000004081B20100000080415A
-:10CF7000E1C10100040000CB81C80100EF8922401B
-:10CF8000F27F00008180006F97330100F189224019
-:10CF9000737D00009B8000418BB30000EC89225917
-:10CFA000737D00007900004061990100EC8928B18F
-:10CFB0007E310000F289004081B20000040022C0EE
-:10CFC00095300000000000D697B00100FA89225D7C
-:10CFD000737D00007D00004061990100F889A8B1CF
-:10CFE000803000000000005E7F830100000000BF71
-:10CFF000C5B10100040000408198010025010040F6
-:10D0000081320100FD89A24181500000FF89435F08
-:10D010007F130000260100BFC53101000000005F42
-:10D020007F8301000000005E7F9301008B9800BFAA
-:10D03000C53101001B84004081B200000C8A9C0FA6
-:10D04000803200000080001042C901000C8A22409A
-:10D05000E36D00000000004561B1010040000010D8
-:10D0600062DD0100098AA840813200001B8400882B
-:10D070001CB0000077952202803200000D8A4240E9
-:10D0800081320000000000449393010077951A025A
-:10D0900068970000178A9C0F803200000080001003
-:10D0A00042C90100178A2240E36D000000000045DC
-:10D0B00061B101004000001062DD0100148AA84047
-:10D0C000813200001B8400881CB000008195220280
-:10D0D00080320000188A4240813200000000004483
-:10D0E0009393010081951A0268970000228A9C0F91
-:10D0F000803200000080001042C90100228A2240D4
-:10D10000E36D00000000004561B101004000001027
-:10D1100062DD01001F8AA840813200001B84008864
-:10D120001CB000006F84220280320000238A42403B
-:10D1300081320000000000449393010000001A02B5
-:10D14000689701006F84004005B00000008000A6D1
-:10D1500056B1010056952F4005B00100738AA240D8
-:10D16000E76D0000B8942941E7B1010000000054C8
-:10D17000EF930100000000F20EB001002900004012
-:10D180000D9801000900000712E40100000000A74B
-:10D1900013C00100030000071AF401000700000794
-:10D1A00016880100FFFF001034D8010000000003C2
-:10D1B000349401000000004023B00100201800401A
-:10D1C0001198010000B5000D42C90100578A220BD9
-:10D1D000E67D0000388A444081320000FFFF0007EE
-:10D1E000848901003F8A05C224300000679800400E
-:10D1F0008132010000002D0548B10100748A1CF045
-:10D2000018300100578A004081B2000000001C4025
-:10D2100081B201004E8AA048236C0000000000503B
-:10D2200035D001000080001A42C90100488A22401E
-:10D23000E36D00000000004261B101004000001AEF
-:10D2400062DD0100458AA840813200001B8400880D
-:10D250001CB000002098004043990100748A00F837
-:10D2600018300100498AA24123500000FFFF00103E
-:10D2700034D801000000000334940100201800405D
-:10D280001198010000002E1A48B10100000000446E
-:10D29000F1B1010000000008F0B1010000000042FF
-:10D2A00061B101002000001A62DD0100528AA80964
-:10D2B000E03100000000004123C0010000000050E8
-:10D2C00035C001000000004411C00100638A224102
-:10D2D0000D500000000000410FC001005F8AA0AAAD
-:10D2E0000F6C0000000000410FB0010009000007B2
-:10D2F00012E40100000000A713C00100000000407C
-:10D300001BB00100368A004117B00000000200097E
-:10D3100012C80100368A8341174000000000004017
-:10D3200017B00100368A00411BC000006E8A2340FE
-:10D33000236C00000000005035D001000080001A6E
-:10D3400042C901006B8A2240E36D000000000042E8
-:10D3500061B101004000001A62DD0100688AA84046
-:10D36000813200001B8400881CB00000209800401F
-:10D3700043990100748A00F8183001006C8AA241B8
-:10D3800023500000000000410FC00100718AA0AAD4
-:10D390000F6C0000000000410FB00100B89420079E
-:10D3A000E4B1010056952040E7B10100058A004034
-:10D3B0000FB00000FFFF000C80D80100C002000C7D
-:10D3C0007E890100868A2654613100007C8A870CA0
-:10D3D000803200000F000040629901007C8A2840E2
-:10D3E000813200007C8AA254777D0000788A004058
-:10D3F00081B20000818A2246197C00000D000040A5
-:10D40000629901000000A84081B200000000A2540F
-:10D41000777D01007D8A004081B20000868A224922
-:10D42000197C00000E000040629901000000A84035
-:10D4300081B200000000A254777D0100818A004083
-:10D4400081B2000010000040629901000000A84075
-:10D4500081B200000000A254777D0100868A00405E
-:10D4600081B2000030942F55F1930100004000A6D6
-:10D4700056B101006F84A241E551000064000040F4
-:10D48000E59901008E8A424081320000918AA29380
-:10D49000576F00000000004157C3010000001AABA5
-:10D4A00027B301006F842250FD7F00006F8422515A
-:10D4B000FD7F00006F84A2411D53000050460040D4
-:10D4C0001D9B010034820040813201000E000048A3
-:10D4D000B2CB0100FC810040493101009D8A22400D
-:10D4E000B56F00000E000048B2CB0100FF81004183
-:10D4F000B55301006F84004081B20000000000516C
-:10D50000FD8301004016004045990100358200402E
-:10D51000493101001E000048B2CB0100FC810040EF
-:10D5200081320100000000DA91C0010004000048CF
-:10D53000B2CB0100FF810040B533010060162040EE
-:10D54000E5B10100DB820040B5330100080000486E
-:10D55000B2CB0100FFFF004AB48B0100FF81004005
-:10D56000813201000A000048B2CB01001000004ADD
-:10D57000B4F70100FF810040813201006F84004058
-:10D5800081B200000500004043990100000000F353
-:10D5900008B0010004002040E6B101000300004093
-:10D5A00096E401000000000496C00100B48A004B1C
-:10D5B00010C90000D78D004109B000000400002010
-:10D5C0008FB00000040000208FB000000400002095
-:10D5D0008FB00000040000208FB000000400002085
-:10D5E0008FB00000040000208FB000000400002075
-:10D5F0008FB00000040000208FB000000B8E0041AF
-:10D6000009B00000040000208FB0000004000020DA
-:10D610008FB00000040000208FB000000400002044
-:10D620008FB00000040000208FB000000400002034
-:10D630008FB00000040000208FB000000400002024
-:10D640008FB000003D8E004509B000003D8E0045C2
-:10D6500009B000003D8E004509B000003D8E004538
-:10D6600009B00000040000208FB00000040000207A
-:10D670008FB00000040000208FB0000004000020E4
-:10D680008FB000007C8E004309B00000A58E0043DF
-:10D6900009B00000A98E004409B0000011900045B7
-:10D6A00009B00000040000208FB00000040000203A
-:10D6B0008FB00000040000208FB0000004000020A4
-:10D6C0008FB00000040000208FB00000B58E004332
-:10D6D00009B00000B48E004309B00000D58D0045AC
-:10D6E00009B00000040000208FB0000004000020FA
-:10D6F0008FB00000040000208FB000000400002064
-:10D700008FB00000758F004209B00000758F004394
-:10D7100009B00000758F004409B00000D58D0045A8
-:10D7200009B00000040000208FB0000004000020B9
-:10D730008FB00000040000208FB000000400002023
-:10D740008FB00000040000208FB00000A18F0043C4
-:10D7500009B00000040000208FB00000D58D004506
-:10D7600009B00000040000208FB000000400002079
-:10D770008FB00000040000208FB0000004000020E3
-:10D780008FB00000040000208FB00000BF8F004366
-:10D7900009B00000BF8F004409B00000D58D0045DE
-:10D7A00009B00000040000208FB000000400002039
-:10D7B0008FB00000040000208FB0000004000020A3
-:10D7C0008FB00000040000208FB00000BF8F004227
-:10D7D00009B00000040000208FB00000D58D004586
-:10D7E00009B00000040000208FB0000004000020F9
-:10D7F0008FB00000040000208FB000000400002063
-:10D800008FB00000040000208FB00000E78F0044BC
-:10D8100009B00000040000208FB00000D58D004545
-:10D8200009B00000040000208FB0000004000020B8
-:10D830008FB00000040000208FB000000400002022
-:10D840008FB00000D58D004209B00000F88F004570
-:10D8500009B00000F88F004509B00000D58D0045E3
-:10D8600009B00000040000208FB000000400002078
-:10D870008FB00000040000208FB0000004000020E2
-:10D880008FB00000FA8F004209B00000FA8F004309
-:10D8900009B00000FA8F004409B00000FA8F00457B
-:10D8A00009B00000040000208FB000000400002038
-:10D8B0008FB00000040000208FB0000004000020A2
-:10D8C0008FB00000040000208FB000000400002092
-:10D8D0008FB000000290004409B00000D58D0045D3
-:10D8E00009B00000040000208FB0000004000020F8
-:10D8F0008FB00000040000208FB000000400002062
-:10D900008FB000001390004209B000000390004364
-:10D9100009B000001390004409B00000D58D004507
-:10D9200009B00000040000208FB0000004000020B7
-:10D930008FB00000040000208FB000000400002021
-:10D940008FB00000040000208FB00000149000434E
-:10D9500009B000000A90004409B00000D58D0045D0
-:10D9600009B00000040000208FB000000400002077
-:10D970008FB00000040000208FB00000D58D004162
-:10D9800009B00000738F004209B00000738F00439C
-:10D9900009B00000738F004409B00000D58D004528
-:10D9A00009B00000040000208FB000000400002037
-:10D9B0008FB00000040000208FB00000D58D004122
-:10D9C00009B000001590004209B000001590004316
-:10D9D00009B000001590004409B00000D58D004545
-:10D9E00009B00000040000208FB0000004000020F7
-:10D9F0008FB00000040000208FB000000400002061
-:10DA00008FB00000040000208FB000000400002050
-:10DA10008FB00000040000208FB000001C90004573
-:10DA200009B00000040000208FB0000004000020B6
-:10DA30008FB00000040000208FB000001E90004254
-:10DA400009B00000040000208FB000000400002096
-:10DA50008FB00000040000208FB000000400002000
-:10DA60008FB00000040000208FB0000004000020F0
-:10DA70008FB00000040000208FB0000004000020E0
-:10DA80008FB000002A90004309B00000939000433B
-:10DA900009B00000A98E004409B0000011900045B3
-:10DAA00009B00000040000208FB000000400002036
-:10DAB0008FB00000040000208FB0000004000020A0
-:10DAC0008FB00000040000208FB000009B90004346
-:10DAD00009B00000A98E004409B000001190004573
-:10DAE00009B00000040000208FB0000004000020F6
-:10DAF0008FB00000040000208FB000000400002060
-:10DB00008FB00000040000208FB00000AC900043F4
-:10DB100009B00000040000208FB00000D58D004542
-:10DB200009B00000040000208FB0000004000020B5
-:10DB30008FB00000040000208FB00000040000201F
-:10DB40008FB00000798E004309B000009790004329
-:10DB500009B00000A98E004409B0000011900045F2
-:10DB600009B00000040000208FB000000400002075
-:10DB70008FB0000007002D0548B10100000000F340
-:10DB800008B0010006002047E6B10100040000478C
-:10DB900096E401000000004796D001000000004715
-:10DBA00096D001000000000496C00100748B004B69
-:10DBB00010C90000C490004909B000000400002012
-:10DBC00085B000000400002085B0000004000020A3
-:10DBD00085B000000400002085B000000400002093
-:10DBE00085B000000400002085B000000400002083
-:10DBF00085B000000400002085B000000400002073
-:10DC000085B000000400002085B000000400002062
-:10DC100085B000000400002085B000000400002052
-:10DC200085B000000400002085B00000FD90004297
-:10DC300009B000000400002085B0000004000020AE
-:10DC400085B000000400002085B000000400002022
-:10DC500085B000000400002085B000000400002012
-:10DC600085B000000400002085B000000400002002
-:10DC700085B000000400002085B0000004000020F2
-:10DC800085B000000400002085B0000004000020E2
-:10DC900085B000000400002085B00000039100461C
-:10DCA00009B000000400002085B00000040000203E
-:10DCB00085B000000400002085B0000004000020B2
-:10DCC00085B000000400002085B0000004000020A2
-:10DCD00085B000000400002085B000000400002092
-:10DCE00085B000000400002085B000000400002082
-:10DCF00085B000000400002085B000000400002072
-:10DD000085B000000400002085B000000400002061
-:10DD100085B000001191004209B00000040000200D
-:10DD200085B000003391004209B0000004000020DB
-:10DD300085B000000400002085B000000400002031
-:10DD400085B000000400002085B000000400002021
-:10DD500085B000000400002085B000002E91004A2C
-:10DD600009B000000400002085B00000040000207D
-:10DD700085B000000400002085B0000004000020F1
-:10DD800085B000003691004309B000000400002077
-:10DD900085B000008F91004409B00000040000200D
-:10DDA00085B000000400002085B0000004000020C1
-:10DDB00085B000000400002085B0000004000020B1
-:10DDC00085B000000400002085B000008E91004B5B
-:10DDD00009B000000400002085B00000040000200D
-:10DDE00085B000000400002085B0000006910041CD
-:10DDF00009B000000400002085B000000691004337
-:10DE000009B000000691004409B0000006910045E9
-:10DE100009B000000691004609B0000006910047D5
-:10DE200009B000000691004809B0000006910049C1
-:10DE300009B000000691004A09B000000691004BAD
-:10DE400009B000000691004C09B000000691004D99
-:10DE500009B000000400002085B00000040000208C
-:10DE600085B00000EE91004209B0000004000020DF
-:10DE700085B00000EE91004409B0000004000020CD
-:10DE800085B000000400002085B0000004000020E0
-:10DE900085B000000400002085B0000004000020D0
-:10DEA00085B000000400002085B00000EE91004B1A
-:10DEB00009B000000400002085B00000040000202C
-:10DEC00085B000000400002085B0000004000020A0
-:10DED00085B000000400002085B0000006920045D7
-:10DEE00009B000000400002085B0000004000020FC
-:10DEF00085B000000400002085B000000400002070
-:10DF000085B000001D92004709B000000400002009
-:10DF100085B00000FA91004509B00000040000201F
-:10DF200085B000000400002085B000007C9400460D
-:10DF300009B000000400002085B0000004000020AB
-:10DF400085B000000400002085B00000040000201F
-:10DF500085B000000400002085B000003391004629
-:10DF600009B000001191004609B000002C91004753
-:10DF700009B000002C91004809B000000400002006
-:10DF800085B000000400002085B0000004000020DF
-:10DF900085B000002E91004A09B000000400002066
-:10DFA00085B000000400002085B0000004000020BF
-:10DFB00085B000000400002085B0000004000020AF
-:10DFC00085B000000400002085B000008F9100455E
-:10DFD00009B000003691004309B000002C910047C1
-:10DFE00009B000002C91004809B000000400002096
-:10DFF00085B000000400002085B00000040000206F
-:10E0000085B000008E91004C09B000000400002093
-:10E0100085B000000400002085B00000040000204E
-:10E0200085B000000400002085B00000040000203E
-:10E0300085B000000400002085B000002392004459
-:10E0400009B000002392004209B00000C08D0047D3
-:10E0500009B00000C08D004809B000000400002095
-:10E0600085B000000400002085B0000004000020FE
-:10E0700085B000002392004B09B00000040000208E
-:10E0800085B000000400002085B00000069100412A
-:10E0900009B000004692004709B0000004000020CB
-:10E0A00085B000002E92004709B000000400002057
-:10E0B00085B000000400002085B0000004000020AE
-:10E0C00085B000000400002085B00000040000209E
-:10E0D00085B000000400002085B000002E920047AB
-:10E0E00009B000000400002085B0000004000020FA
-:10E0F00085B000000400002085B00000040000206E
-:10E1000085B000000400002085B00000040000205D
-:10E1100085B000000400002085B000002E9200476A
-:10E1200009B000004692004709B000002C9100475A
-:10E1300009B000002C91004809B000000400002044
-:10E1400085B000000400002085B00000040000201D
-:10E1500085B000002E92004709B0000004000020A6
-:10E1600085B000000400002085B0000004000020FD
-:10E1700085B000000400002085B0000004000020ED
-:10E1800085B000000400002085B0000004000020DD
-:10E1900085B000000400002085B0000055920047C3
-:10E1A00009B000005592004809B0000004000020AA
-:10E1B00085B000000400002085B0000004000020AD
-:10E1C00085B000000400002085B00000040000209D
-:10E1D00085B000000400002085B00000B892004027
-:10E1E00009B00000D692004709B00000CA9200486A
-:10E1F00009B000002692004709B0000026920047AF
-:10E2000009B00000D692004709B00000DD92004737
-:10E2100009B00000DD92004809B0000004000020B1
-:10E2200085B00000CA92004809B00000269200475D
-:10E2300009B000002692004709B00000CA920048C9
-:10E2400009B000000400002085B000000400002098
-:10E2500085B000000400002085B00000EE9100436E
-:10E2600009B000000400002085B00000EE910045D8
-:10E2700009B00000EE91004609B000002C91004763
-:10E2800009B000002C91004809B0000004000020F3
-:10E2900085B00000EE91004A09B0000004000020A3
-:10E2A00085B00000EE91004C09B000000400002091
-:10E2B00085B000000400002085B0000004000020AC
-:10E2C00085B000004592004709B00000399200482F
-:10E2D00009B000002D92004709B000002D920047C0
-:10E2E00009B000004592004709B00000C08D00470A
-:10E2F00009B00000C08D004809B0000004000020F3
-:10E3000085B000003992004809B000002D92004706
-:10E3100009B000002D92004709B000003992004872
-:10E3200009B000000400002085B0000004000020B7
-:10E3300085B00000DF92004209B000000400002018
-:10E3400085B00000DF92004409B000000400002006
-:10E3500085B000000400002085B00000040000200B
-:10E3600085B000000400002085B0000004000020FB
-:10E3700085B000000400002085B00000DF92004B53
-:10E3800009B000000400002085B000000400002057
-:10E3900085B000000400002085B0000004000020CB
-:10E3A00085B000000400002085B00000DF9200432B
-:10E3B00009B000000400002085B00000DF92004595
-:10E3C00009B00000DF92004609B00000DF9200476C
-:10E3D00009B00000DF92004809B0000004000020EE
-:10E3E00085B00000DF92004A09B000000400002060
-:10E3F00085B00000DF92004C09B00000DF92004CB5
-:10E4000009B000000400002085B0000004000020D6
-:10E4100085B000000400002085B00000FA9200469C
-:10E4200009B000000400002085B0000004000020B6
-:10E4300085B000000400002085B00000040000202A
-:10E4400085B000001D92004709B0000004000020C4
-:10E4500085B00000FA92004609B0000004000020D8
-:10E4600085B000000400002085B0000004000020FA
-:10E4700085B000000400002085B0000004000020EA
-:10E4800085B000000400002085B00000069400461E
-:10E4900009B000000400002085B000000400002046
-:10E4A00085B000000400002085B0000004000020BA
-:10E4B00085B000001D92004709B000000400002054
-:10E4C00085B000000694004609B00000040000205A
-:10E4D00085B000000400002085B0000006940046CE
-:10E4E00009B000000400002085B0000004000020F6
-:10E4F00085B000000400002085B00000040000206A
-:10E5000085B000002B94004209B0000004000020F8
-:10E5100085B000000400002085B000000400002049
-:10E5200085B000000400002085B000000400002039
-:10E5300085B000000400002085B000002A94004A45
-:10E5400009B000000400002085B000000400002095
-:10E5500085B000000400002085B000000400002009
-:10E5600085B000000400002085B0000004000020F9
-:10E5700085B000000400002085B000002B94004608
-:10E5800009B000000400002085B000002C91004775
-:10E5900009B000002C91004809B0000004000020E0
-:10E5A00085B000000400002085B0000004000020B9
-:10E5B00085B000002A94004A09B000000400002041
-:10E5C00085B000000400002085B000000400002099
-:10E5D00085B000000400002085B000000400002089
-:10E5E00085B000000400002085B000000400002079
-:10E5F00085B000000400002085B000000400002069
-:10E6000085B000000400002085B00000EA920041BF
-:10E6100009B000000400002085B0000004000020C4
-:10E6200085B000000400002085B000000400002038
-:10E6300085B000000400002085B000000400002028
-:10E6400085B00000F792004209B0000004000020ED
-:10E6500085B00000F792004409B0000004000020DB
-:10E6600085B000000400002085B0000004000020F8
-:10E6700085B000000400002085B0000004000020E8
-:10E6800085B000000400002085B00000F792004B28
-:10E6900009B000000400002085B000000400002044
-:10E6A00085B000000400002085B0000004000020B8
-:10E6B00085B000000400002085B00000F792004300
-:10E6C00009B000000400002085B00000F79200456A
-:10E6D00009B00000F792004609B00000F792004729
-:10E6E00009B00000F792004809B0000004000020C3
-:10E6F00085B000000400002085B000000400002068
-:10E7000085B00000F792004C09B000000400002022
-:10E7100085B000000400002085B000000400002047
-:10E7200085B000000400002085B000000692004C77
-:10E7300009B000000400002085B0000004000020A3
-:10E7400085B000000400002085B000000400002017
-:10E7500085B000001D92004709B0000004000020B1
-:10E7600085B00000FA91004C09B0000004000020C0
-:10E7700085B000000400002085B00000CD94004664
-:10E7800009B000000400002085B000000400002053
-:10E7900085B000007194004209B000000400002020
-:10E7A00085B000007194004409B00000040000200E
-:10E7B00085B000000400002085B0000004000020A7
-:10E7C00085B000000400002085B000000400002097
-:10E7D00085B000000400002085B000007194004B5B
-:10E7E00009B000000400002085B0000004000020F3
-:10E7F00085B000000400002085B000000400002067
-:10E8000085B000000400002085B000000400002056
-:10E8100085B000000400002085B000007194004520
-:10E8200009B000007194004609B000002C91004727
-:10E8300009B000002C91004809B00000040000203D
-:10E8400085B000000400002085B000000400002016
-:10E8500085B000007194004C09B000000400002055
-:10E8600085B000000400002085B0000004000020F6
-:10E8700085B00000FA91004209B000007C94004687
-:10E8800009B000000400002085B000000400002052
-:10E8900085B00000FA91004609B000000400002095
-:10E8A00085B000001D92004709B000000400002060
-:10E8B00085B000007C94004609B0000004000020F0
-:10E8C00085B000000400002085B000007C94004664
-:10E8D00009B000000400002085B000000400002002
-:10E8E00085B000000400002085B000008094004343
-:10E8F00009B000000400002085B0000004000020E2
-:10E9000085B000000400002085B000000400002055
-:10E9100085B000001D92004709B0000004000020EF
-:10E9200085B000008094004309B00000040000207E
-:10E9300085B000000400002085B000008094004DE8
-:10E9400009B000000400002085B000000400002091
-:10E9500085B000000400002085B000000400002005
-:10E9600085B000009294004309B00000040000202C
-:10E9700085B000000400002085B0000004000020E5
-:10E9800085B000000400002085B0000004000020D5
-:10E9900085B000000400002085B000006F94004A9C
-:10E9A00009B000000400002085B000000400002031
-:10E9B00085B000000400002085B0000004000020A5
-:10E9C00085B000000400002085B000000400002095
-:10E9D00085B000000400002085B000009294004340
-:10E9E00009B000000400002085B000002C91004711
-:10E9F00009B000002C91004809B00000040000207C
-:10EA000085B000000400002085B000000400002054
-:10EA100085B000006F94004A09B000000400002097
-:10EA200085B000000400002085B000000400002034
-:10EA300085B000000400002085B00000A4940043CD
-:10EA400009B000000400002085B000000400002090
-:10EA500085B000000400002085B000000400002004
-:10EA600085B000001D92004709B00000040000209E
-:10EA700085B00000A494004309B000000400002009
-:10EA800085B000000400002085B00000A494004D73
-:10EA900009B000000400002085B000000400002040
-:10EAA00085B000001191004209B000000400002070
-:10EAB00085B000003391004209B00000040000203E
-:10EAC00085B000000400002085B000000400002094
-:10EAD00085B000000400002085B000000400002084
-:10EAE00085B000000400002085B00000C3940042FF
-:10EAF00009B000000400002085B0000004000020E0
-:10EB000085B000000400002085B000000400002053
-:10EB100085B000000400002085B000000400002043
-:10EB200085B000000400002085B00000339100464D
-:10EB300009B000001191004609B000002C91004777
-:10EB400009B000002C91004809B00000040000202A
-:10EB500085B000000400002085B000000400002003
-:10EB600085B00000C394004609B0000004000020F6
-:10EB700085B000000400002085B0000004000020E3
-:10EB800085B000000400002085B00000C594004A54
-:10EB900009B000000400002085B00000040000203F
-:10EBA00085B000000400002085B0000004000020B3
-:10EBB00085B000001D92004709B00000040000204D
-:10EBC00085B00000C594004A09B000000400002090
-:10EBD00085B000000400002085B000007D94004650
-:10EBE00009B000000400002085B0000004000020EF
-:10EBF00085B000000400002085B000007D94004630
-:10EC000009B000000400002085B0000004000020CE
-:10EC100085B000000400002085B000000400002042
-:10EC200085B000001D92004709B0000004000020DC
-:10EC300085B000007D94004609B00000040000206B
-:10EC400085B000000400002085B000007D940046DF
-:10EC500009B000000400002085B00000040000207E
-:10EC600085B000000400002085B0000004000020F2
-:10EC700085B00000CB94004209B0000004000020E1
-:10EC800085B000000400002085B0000004000020D2
-:10EC900085B000000400002085B0000004000020C2
-:10ECA00085B000000400002085B000006F94004A89
-:10ECB00009B000000400002085B00000040000201E
-:10ECC00085B000000400002085B000000400002092
-:10ECD00085B000000400002085B000000400002082
-:10ECE00085B000000400002085B00000CB940046F1
-:10ECF00009B000000400002085B000002C910047FE
-:10ED000009B000002C91004809B000000400002068
-:10ED100085B000000400002085B000000400002041
-:10ED200085B000006F94004A09B000000400002084
-:10ED300085B000000400002085B000000400002021
-:10ED400085B000003691004D09B00000040000209D
-:10ED500085B000000400002085B000000400002001
-:10ED600085B000000400002085B0000004000020F1
-:10ED700085B000000400002085B0000004000020E1
-:10ED800085B000000400002085B0000004000020D1
-:10ED900085B000000400002085B0000004000020C1
-:10EDA00085B000000400002085B0000004000020B1
-:10EDB00085B000000400002085B0000004000020A1
-:10EDC00085B000000400002085B000000400002091
-:10EDD00085B000003691004D09B000002C9100472D
-:10EDE00009B000002C91004809B000000400002088
-:10EDF00085B000000400002085B000000400002061
-:10EE000085B000000400002085B000000400002050
-:10EE100085B0000007002E4B19900100108A0004F5
-:10EE2000E6B10000C08D2242197C0000C597003A6F
-:10EE300081300100C08D004081B20000C08D2242AF
-:10EE4000197C0000FF1F000F1E8C01003797004047
-:10EE500081320100D08D9C0F803200000000005CE8
-:10EE60001F8001000080001042C90100D08D2240A7
-:10EE7000E36D00000000004561B10100400000109A
-:10EE800062DD0100CD8DA840813200001B84008826
-:10EE90001CB000001986220280320000D18D424051
-:10EEA00081320000000000449393010000001A0228
-:10EEB000689701001986004005B0000005002E4B40
-:10EEC00019900100108A0004E6B100000000004023
-:10EED00087B00100000000408DB0010000800003F9
-:10EEE00042C90100400000A144C90100000000F037
-:10EEF000E0B101005599000607400100000000063E
-:10EF000007D00100D4002E5C1F9001000000000714
-:10EF1000F0B101000C80000342C90100000000F0C4
-:10EF2000F0B101000000004081B20100000000FECD
-:10EF300096B00100000000FE96C00100000000F045
-:10EF4000F0B101000000004081B20100000000FEAD
-:10EF500096C00100000000FE96C00100000000F015
-:10EF6000F0B101000000004081B20100000000FA91
-:10EF700096C00100000000FE96C001000030004B6A
-:10EF8000948801000000004695F001000000004A4E
-:10EF900096C001005E012E34978401000200004BF0
-:10EFA000E4E5010064012040E1B10100090000072F
-:10EFB00086E4010000002EA787C0010010000010A9
-:10EFC00048C9010010000040F199010058010043B8
-:10EFD000F0C9010058010005E0C90100000000442B
-:10EFE00061B10100A00000A462DD0100FA8DA8401B
-:10EFF000813200000000000548B101001A00004005
-:10F000009798010008002E4095B00100028E204B19
-:10F01000946C000000000040F1B10100FF8D004140
-:10F0200095C000001080001042C90100098E2240E6
-:10F03000E36D00000000004461B1010040000010D9
-:10F0400062DD0100058EA840813200001B8400882B
-:10F050001CB000000000000548B10100C597004049
-:10F0600081300100D58D004081B200000C8000038A
-:10F0700042C90100000000F886B00100000000F85D
-:10F0800088B001000E8E424081320000118EA24CE9
-:10F09000FD7F0000128E004CFD930000138E20F0C7
-:10F0A000566F0000000000F056B3010000001A4047
-:10F0B00081B201000080001044C9010064000040DA
-:10F0C000F199010070000005F0C901000000004343
-:10F0D000F0B101000000004761B101002000001004
-:10F0E00062DD0100198EA844E0310000100000101C
-:10F0F0008CC801000080004644C901004000004067
-:10F10000F199010068010005F0C9010064000043A5
-:10F11000F0C901000000004761B101000000004695
-:10F1200062B10100218EA844E03100001B840088F8
-:10F130001CB000000900000786E4010038002EA77B
-:10F1400087C001008B002D0548B10100298E2243A4
-:10F15000E77D00000000004445C101002C8E2244E0
-:10F16000E77D00000000004C45C101000000004A9E
-:10F1700019900100680120A2E4B10100880000405C
-:10F1800043990100308E230BE56D00000000004123
-:10F19000199001000080001044C901005000004097
-:10F1A000F199010058010043F0C901005801000520
-:10F1B000E0C901000000004461B10100000000103E
-:10F1C00062B10100358EA840813200001B840088A6
-:10F1D0001CB000005C002E0548B101000080000357
-:10F1E00042C90100000060F096B00100C5970041DF
-:10F1F00081300100D58D004081B20000408EA249CF
-:10F20000197C00008600004047990100448E0040B0
-:10F21000E5B1000086002F4919800100448EA2F25A
-:10F22000803200008B00004047990100000000423E
-:10F23000E7910100478EA246197C0000A000004023
-:10F24000479901004B8E0040E5B10000A0002F4619
-:10F25000198001004B8EA2F2803200008B0000402A
-:10F260004799010000000041E7910100A80000401B
-:10F270004399010034002DF024B00100000000FB90
-:10F280000CB00100000000FB10B00100000000FB0A
-:10F2900012B001000F0000F316880100040000F313
-:10F2A00014F40100768E2640813200005E8E220A20
-:10F2B000166C000058003D4313E00100000000F808
-:10F2C00082B00100040022F084300000FD9800406C
-:10F2D000813201001B8400881CB000000000000582
-:10F2E00048B101000000004113C001005D8EA04341
-:10F2F000136C00000000004013B00100538E004169
-:10F3000015D00000768E220A8032000058003D435E
-:10F3100013E00100000000F882B00100040022F0B8
-:10F3200084300000FD980040813201004000204000
-:10F33000E1B101001B8400881CB000000000000542
-:10F3400048B10100768E22411550000000000041B6
-:10F3500011C001006A8EA043116C00000000004043
-:10F3600011B0010058003D4311E00100000000F819
-:10F3700036B00100040022F0003000000000005010
-:10F3800083B0010004980047613101001B840088AC
-:10F390001CB00000749500054831010000000045D4
-:10F3A00061B101004000001062DD0100728EA840D2
-:10F3B000813200001B8400881CB00000668E0005AE
-:10F3C00048B1000037002040E7B1010036980051F5
-:10F3D00081300100D58D004081B2000034002E4103
-:10F3E000F5B1010000110040E59901007E8E004852
-:10F3F0001990000034002E41F5B1010000110040C9
-:10F40000E59901000080000342C90100000000F8F6
-:10F4100094B00100838E2245237C0000B0002FF0C1
-:10F420008CB00100000060F08CC001009000004032
-:10F430004399010035002DF08CB0010058003E4387
-:10F44000E7E10100888E2248197C0000000000419D
-:10F450008DC001000000680A8CC0010038002A4AF3
-:10F46000E0B1010028000000E0C901003C00201BC1
-:10F47000E0B101001080000342C90100000000F863
-:10F4800038B00100000000F826B00100040022F8A6
-:10F4900002300000968E2301146C0000000000F87A
-:10F4A00080B00100000000F882B001004C0020F0A4
-:10F4B000E4B1010044002040E0B1010048002041D7
-:10F4C000E0B10100A8002D1032B00100399900F020
-:10F4D000243001009F8EA244816C00009D8E224149
-:10F4E000197C0000A09600403B300100C38EA208AA
-:10F4F0003C3000009F8E004081B20000DD9500404E
-:10F5000081320100C38EA2083C3000005000201C54
-:10F51000E0B1010054002013E0B101004E002001D1
-:10F52000E4B101004000200AE0B101003698005F1C
-:10F5300081300100D58D004081B2000037000040CD
-:10F54000479901007F9600F3943001007E8E224A95
-:10F5500080320000AB8E004081B2000037000040D6
-:10F56000479901007F9600F39430010058003E4314
-:10F5700097E001000000001BF0B101001F006000D7
-:10F58000008C0100D58D85118032000004800003BD
-:10F5900042C90100B0002FF08CB00100000060F003
-:10F5A0008CC001003698005F81300100D58D00408D
-:10F5B00081B20000B58E004919800000BA8E224148
-:10F5C000197C0000A09600403B300100BE8EA208CE
-:10F5D0003C3000003698005F81300100D58D00403E
-:10F5E00081B20000DD95004081320100BE8EA2088C
-:10F5F0003C3000003698005F81300100D58D00401E
-:10F6000081B2000050002D1032B0010054002DF0E6
-:10F6100038B001004E002DF026B0010040002DF260
-:10F6200002B00100000000F014B001003000001032
-:10F630008CC801000080004644C9010068012D44C7
-:10F6400061B10100100068F280C8010000000008EC
-:10F65000F0B1010058010005E0C901000000000BF5
-:10F6600037B001000000004036D001005C012E40A0
-:10F6700010C001000000000680C001000000005220
-:10F6800081D00100D18E2094816C0000CB97009432
-:10F69000E5310100D28E004081B20000CB970040DE
-:10F6A000E43101002000004662DD0100D28EA84056
-:10F6B000233000000E00000F1E8C0100E28E8241FC
-:10F6C000234000002080001042C90100DC8E22404F
-:10F6D000E36D00000000004661B101004000001031
-:10F6E00062DD0100D98EA840813200001B840088B1
-:10F6F0001CB000000000001048B10100119600434A
-:10F70000233001000000000548B101000000001096
-:10F7100032B001000000004123B001000E00000FD4
-:10F720001E8C01000080001944C90100EA8E2241AC
-:10F73000197C0000E68EA3010C6C0000E78E000629
-:10F7400004B000000000000104B00100E98E2002B6
-:10F75000366C00000000001B04B00100ED8E0002BA
-:10F76000F0B10000EC8EA3010C6C0000ED8E680679
-:10F7700004B000000000680104B00100EF8E8008B2
-:10F78000F0310000000000111E9001000000001C7C
-:10F79000F0B101000000004661B10100011F001935
-:10F7A00062DD0100F18EA813E0310000288F2202F3
-:10F7B0001450000044002D020CD00100188FA2024A
-:10F7C00002500000FF8E225C1F7C0000208000039E
-:10F7D00042C90100FE8E2240E36D00000000004798
-:10F7E00061B101004000001062DD0100FA8EA84006
-:10F7F000813200001B8400881CB00000000000055E
-:10F8000048B1010044002D5C1F80010048002DF02C
-:10F8100038B001004C002DF026B0010038002FF266
-:10F8200002B00100198F2201146C00000C8F2246D7
-:10F830001F7C0000000000461F80010020002D03F7
-:10F8400048B101000B8F2240E36D0000000000442E
-:10F8500061B101004000001062DD0100088FA84086
-:10F86000813200001B8400881CB0000038002F0586
-:10F8700048B10100000000F894B0010038002DF0FC
-:10F8800096B001000000004CE1C10100200000031F
-:10F8900048C901000000224AF1B1010044000005FE
-:10F8A000F0C901000000004AF0B101000000004B67
-:10F8B000E0B101000000004761B10100A00000A418
-:10F8C00062DD0100158FA85C1F100000198F000574
-:10F8D00048B100000000000238C00100238F22065A
-:10F8E000803200000000005033C00100218FA202CE
-:10F8F000366C000004008F0D42310000100000F84B
-:10F9000010C801000000005C11800100F0070040F9
-:10F9100037980100D58E00A11AB000000000000247
-:10F9200010C00100D58E000236D000005000201C0F
-:10F93000E0B1010054002013E0B101004E002001AD
-:10F94000E4B101004000200AE0B101002D8F005F0A
-:10F9500001B0000037002D4601B00100040000F3A3
-:10F9600080F401002C8FA043816C00000000005542
-:10F9700001B0010040002040E1B101000080001909
-:10F9800042C90100338F2240E36D000000000046B1
-:10F9900061B101004000001962DD0100308FA84014
-:10F9A000813200001B8400881CB0000011960010FA
-:10F9B000483101003080001042C901003A8F2240D6
-:10F9C000E36D00000000004461B101004000001040
-:10F9D00062DD0100378FA840813200001B8400885F
-:10F9E0001CB0000060012F0548B101000000000BB1
-:10F9F000E4B101000000005017F001003F8F90F2C9
-:10FA0000164000000000004117C001000000662001
-:10FA100017A40100320000A62AC00100000000F275
-:10FA20002A940100488F22491F7C000000000049F1
-:10FA30001F8001000000004005B0010000F0000C34
-:10FA4000188C01000B98004C95300100588F000075
-:10FA500092B000004F8F2240AF6F000000C0001E28
-:10FA600094DC01000000001596B001008898004069
-:10FA7000053001004E8FA240976C0000618F004757
-:10FA800019800000588F000092B000004F8F43484B
-:10FA90006131000000D0001E62DD0100548F28405B
-:10FAA00005300000508F2248777D0000578F0040BE
-:10FAB00081B200000000001562B10100608F284093
-:10FAC00081320000548F004081B2000000001B0012
-:10FAD00092B001005D8F2241197C0000008000037C
-:10FAE00042C90100E29500F8003001005A8FA2419E
-:10FAF0003B500000618F004900B00000FF07001E6E
-:10FB0000008C0100E295004081320100618F0049C4
-:10FB100000B0000000001B4719800100648F225FC5
-:10FB2000016C00006399004081320100B08A00003E
-:10FB300080B000006B8F225C1F7C000020800003DF
-:10FB400042C901006B8F2240E36D000000000047B6
-:10FB500061B101004000001062DD0100688FA84023
-:10FB6000813200001B8400881CB000006B8F4005B0
-:10FB700048310000FFFF000794890100718F85CA9A
-:10FB8000943000006399185C1F0001000E00000F04
-:10FB90001E8C01007889004081B200003698180060
-:10FBA00080300100D58D0047198000000000004022
-:10FBB00019800100D58D2247197C0000DD95004099
-:10FBC00081320100788FA20880320000D58D00407C
-:10FBD00081B20000CB9700400D3001009C01004035
-:10FBE00045990100FFFF000B988801008B002D5004
-:10FBF00017F001007E8F904C16400000000000417D
-:10FC000017C00100808F2243E77D00000000004400
-:10FC100045C101000000662017A4010068010040F2
-:10FC2000439901005C012EF280B001003E000040CB
-:10FC300080CE0100878F2440813200000000004602
-:10FC400081C00100888F0094E5B10000020062408D
-:10FC50007ECD01000000005781C0010000002E1081
-:10FC600048B1010003000040F08D010000000008D1
-:10FC7000F0B1010058010005E0C901000000004496
-:10FC800061B101000000001062B101008E8FA84038
-:10FC9000813200001B8400881CB0000000000005B9
-:10FCA00048B101009A8F2240AF6F00000040000869
-:10FCB00094DC01008898004081320100988F224036
-:10FCC000976C0000E295000800300100D58D0040DF
-:10FCD00081B200000000004005B00100D58D004752
-:10FCE000198000009A8F43486131000000500008DD
-:10FCF00062DD0100A08F2840053000009B8F224864
-:10FD0000777D0000E2951B0800300100D58D004092
-:10FD100081B20000D58D1B471980000035000040DE
-:10FD200047990100010063F384C80100A58FA04337
-:10FD3000856C00000000634085B00100A800004011
-:10FD40004399010037002FF024B00100010063F354
-:10FD500082CC0100B08FA2419E060000D58D2244C6
-:10FD600083700000360000404399010058003D4375
-:10FD7000E7E10100D58D1FF0246C00006399004875
-:10FD800081300100B08A2341836C0000B08A0047B3
-:10FD900081B0000058003D4385E00100000000F8FC
-:10FDA00036B00100000000F000B001002800004063
-:10FDB0008398010004980047613101001B8400888A
-:10FDC0001CB0000000002D0348B1010008002DF018
-:10FDD00094B00100000000F88EB0010090002DF0FA
-:10FDE00014B001000000000548B10100848EA2405B
-:10FDF0008F7C0000BE8F22478F7C0000848E0048DD
-:10FE0000199000002D90004081B2000036002D5D59
-:10FE100005B4010037002DF380B00100000000F3AD
-:10FE20008EB001005C003D4381E00100A8002DF090
-:10FE300094B00100000000F024B001002000001088
-:10FE400086DC01004080000344C90100E394004ABD
-:10FE5000F031010036002F5C1F900100CC8FA250C2
-:10FE60008F50000034002040E1B10100D58D0040EA
-:10FE700081B200000000634181C00100CF8FA04328
-:10FE8000816C00000000634081B001003700204712
-:10FE9000E6B10100D58D2247803200000400004702
-:10FEA0000CF401000000004F8F840100E48F224712
-:10FEB0000C6C000058003D4381E00100E48F1FF00E
-:10FEC000246C00000000005C1F8001000080001016
-:10FED00042C90100DD8F2240E36D000000000045B3
-:10FEE00061B101004000001062DD0100DA8FA8401E
-:10FEF000813200001B8400881CB00000DD8F42406E
-:10FF000005300000000000449393010000001A5DDA
-:10FF100069930100E28F23410D6C0000BF8F000543
-:10FF200048B100006399000548310100B08A0048DB
-:10FF300081B00000D58D22408F6C00003698005FA4
-:10FF400081300100D58D004081B20000A200004048
-:10FF500043990100000000F384B00100A6002D4980
-:10FF600019900100020000F280F40100B8002D4059
-:10FF700081B20100000000F280C0010000000040DA
-:10FF800082F801001900004081980100F38FA04021
-:10FF9000826C00002C01004081980100F38FA34087
-:10FFA000826C00000000004180B00100F58F204C01
-:10FFB000856C00000000004185C0010086002040E3
-:10FFC000E4B10100A2002042E6B10100D58D00405D
-:10FFD00081B20000C597005081300100D58D0040EE
-:10FFE00081B200000480000342C90100040022F035
-:10FFF00080300000000000408DB0010055990040A5
-:020000021000EC
-:1000000087300100B0002F5C1F900100000060F0FD
-:1000100080C001003698005F81300100D58D00401E
-:1000200081B200000400004081B20000D58D22465C
-:10003000197C0000A000004047990100010062F215
-:1000400096CC0100D58DA640813200003698004A3A
-:10005000813001000B98004695300100D58D00409D
-:1000600081B20000D58D2249197C00008600004035
-:1000700047990100010062F280CC0100D58DA640B5
-:10008000813200003698004A813001000B98004709
-:1000900095300100D58D004081B20000749500407C
-:1000A00081320100D58D005C1F900000D58D00408D
-:1000B00081B20000D58D004081B20000BA0000403E
-:1000C00047990100010062F280C801001990904038
-:1000D00080320000FFFF624081980100A4000040D0
-:1000E00047990100D58D2240E56D0000D58D004176
-:1000F000E5C10000C597004D81300100D58D00405D
-:1001000081B200005C00004047990100040022F029
-:100110009630000000000040E1B1010000800003C3
-:1001200044C901000000004BE0B1010000000040A4
-:100130008DB0010055990040873001008B000040D0
-:1001400047990100299080F396300000000000409C
-:10015000E78101000000004719900100D58D005C87
-:100160001F9000003400004045990100010000404C
-:10017000F599010000110040E5990100DD9500406E
-:10018000813201003E90A20880320000370000401A
-:1001900047990100000000F382B0010000006351A4
-:1001A00083D001003400004047990100010063F34F
-:1001B00084CC010036909F428032000000006342F0
-:1001C00085B001000000004503F0010000000001BF
-:1001D00000C001003890375C613100000000001B56
-:1001E00062B101003990A84B191000000000000016
-:1001F00062B101003B90A84081320000058A17409F
-:1002000081B200000080000342C9010090002DF07F
-:1002100094B00100AC002DF030B0010035002DF09D
-:1002200028B0010058003E43E7E10100010000183A
-:10023000F0C901000000004AE0B1010038002000D0
-:10024000E0B101003C00201BE0B101004000204073
-:10025000E1B10100000000402BB001001A980040FD
-:100260000D3001000000001816C001004D90A014D0
-:10027000164400000000004117C001000E0000A25B
-:1002800044C9010000000018F8B10100B0002D14AD
-:10029000F8B1010010500040879801005690224AA2
-:1002A000197C00000030004386C801000030000BBC
-:1002B00016C801005690A4408132000000000041A1
-:1002C00017C0010001006E4386980100519800306C
-:1002D000813001005A90A041174000000000004109
-:1002E00017C001006190224A197C0000080000A29A
-:1002F00044C90100CC002DABF9B10100000000ABF6
-:1003000017C001006090A0F01644000000000041FA
-:1003100017C00100000064F082B0010090000040AE
-:10032000459901000000604131C00100BC0000405F
-:10033000439901006790060C80320000A00020F273
-:10034000E4B1010004000946191000009C010040BE
-:1003500045990100FFFF000B988801008B002D508C
-:1003600017F001006C90904C164000000000004116
-:1003700017C001006E902243E77D0000000000449A
-:1003800045C101000000662017A40100680100407B
-:10039000439901005C012EF280B001003E00004054
-:1003A00080CE01007590244081320000000000469C
-:1003B00081C0010076900094E5B100000200624027
-:1003C0007ECD01000000005781C0010000002E100A
-:1003D00048B1010003000040F08D0100000000085A
-:1003E000F0B1010058010005E0C90100000000441F
-:1003F00061B101000000001062B101007C90A840D2
-:10040000813200001B8400881CB000000000000541
-:1004100048B1010086902240AF6F00000040000804
-:1004200094DC010088980040813201008190A24054
-:10043000976C000035000040479901008A90004009
-:1004400005B000008690434861310000005000086C
-:1004500062DD01008790A8400530000035001B4098
-:1004600047990100010063F384C801008D90A04307
-:10047000856C00000000634085B00100370000403B
-:1004800047990100010063F382CC01008B0000401A
-:100490004799010000000045E79101003698005F90
-:1004A00081300100D58D004081B20000370000404E
-:1004B000479901007F9600F3943001002D90224A65
-:1004C00080320000AB8E004081B200003700004057
-:1004D000479901007F9600F3943001007B8E224AF9
-:1004E00080320000AB8E004081B200003600004038
-:1004F00043990100000000FB12B001000F0000F35F
-:1005000090880100040000F30CF40100A58E22067F
-:10051000906C00005C003D4313E00100A8002DF04A
-:1005200094B0010037002FF024B0010036002A50AB
-:10053000E7D101000000634113C00100A790A04370
-:10054000136C000000000040E7B10100E1940010CE
-:10055000863001001B8400881CB00000A990420571
-:10056000483100000000004493930100A58E1A5DFD
-:100570006993000036002D1086B001005C003D43F9
-:10058000E7E10100A8002DF094B0010035002FF044
-:1005900024B0010001006BFB84C80100B490A043AB
-:1005A000856C000035002040E7B1010000000040EC
-:1005B00081B20100010063F312C80100B790A043AB
-:1005C000136C000000000040E7B101004080000310
-:1005D00044C90100E394004AF03101001B84008803
-:1005E0001CB00000BA9042054831000000000044F1
-:1005F0009393010000001A5D6993010037000040E9
-:1006000047990100110063F382CC0100A98F2241B8
-:100610009E060000350000404399010058003D430C
-:10062000E7E10100000000F836B00100B38F00F0F0
-:1006300000B000005E012D0548B10100C59047F2F1
-:100640001230000000993F4213F00100CA90224787
-:10065000E77D00006B841F881CB00000C490004040
-:1006600081B2000000000047E791010000001F4236
-:10067000199001007500004061990100CC90A8B16B
-:100680000C3000005C970010943001001B8400883F
-:100690001CB000005E012E0548B10100C0A83D4617
-:1006A0000DE001000000004097B00100D69022400C
-:1006B000E16D00000400024197400000D39000501B
-:1006C00043C10000E290224B803200000000624BE8
-:1006D000129401000900000796E40100000000A741
-:1006E00097C001003000001094C801000080004A4B
-:1006F0004499010000000042F1B101005E01004B8D
-:10070000F0C901005E010005E0C9010000000044DD
-:1007100061B101002000004A62DD0100E090A840C4
-:10072000813200000080001044C901000000005028
-:10073000F1B101000400000996E40100000068A87E
-:1007400097C00100D4000005E0C90100000000448A
-:1007500061B101000000001062B10100E890A84002
-:10076000813200001B8400881CB0000000993F42C9
-:1007700013F00100EC904740813200003F0000F38D
-:100780009688010000000040E7B1010000001F55FD
-:1007900061B101000000000662B10100F090A840C4
-:1007A00081320000F590224B803200000000004BA7
-:1007B00062B10100F390A840813200000000009770
-:1007C00013B001000000009697B00100FB902009D3
-:1007D000966C0000FB901F09962400006B84008833
-:1007E0001CB00000F690004081B20000C597005791
-:1007F00081300100C08D000548B100002E0000408E
-:1008000043990100019122F380320000C597004214
-:1008100081300100058A004081B200003698005204
-:1008200081300100C08D004219800000C597003A58
-:10083000813001003698005281300100C08D0040A7
-:1008400081B200000000004005B00100DF960040CA
-:1008500095300100C08D2240956C00000C91A240A3
-:100860001F7C0000E295004081320100058A0040B3
-:1008700081B200000480000342C90100000000F2C0
-:1008800002B001008A960052953001009196004B0B
-:1008900002B00000058A004081B200000A990040C1
-:1008A000953001001891A208803200001891A2161C
-:1008B00080320000058A2242197C00000000004BB3
-:1008C00019900100C597003A81300100058A004067
-:1008D00081B20000002300A616B001001B91831E08
-:1008E000803200000008000B16DC01000000000050
-:1008F0002AC001000E980008803001001F91005EA0
-:10090000179000002F98004361310100EF940040E0
-:100910008D300100169800071614010000800010A9
-:1009200042C9010027912240E36D0000000000430E
-:1009300061B101004000001062DD01002491A84077
-:10094000813200001B8400881CB00000B797005E55
-:1009500005100100E2950040813201002B9122092F
-:10096000803000003698004013300100C58D00052E
-:1009700048B100000F97004081320100C08D004057
-:1009800081B200000000004A1F9001003291224312
-:100990003D7C00000000004419900100000000436D
-:1009A0003D800100339100421990000014002D4554
-:1009B0001F9001008F91831E803200008F910044B0
-:1009C00019900000D4950040813201004791A2089F
-:1009D000803200004791A216803200004391A2426B
-:1009E000197C00000082000204DC0100A098004095
-:1009F00047990100E9890041893001004091A241F5
-:100A0000197C0000E295004081320100058A004017
-:100A100081B200008A960015943001009196004B37
-:100A200002B00000058A004081B200000F9700402C
-:100A3000813201000000004B19900100C597003A77
-:100A400081300100058A004081B200004A912242B3
-:100A5000197C00000F970040813201004B9100404B
-:100A600081B20000DF96004081320100779122417F
-:100A7000197C0000C000001598C801007791A00BF8
-:100A8000996C00003000001080C801000080004018
-:100A90004499010000000050F1B101000000000382
-:100AA000F0B101000000004261B10100000000400F
-:100AB00062B101005391A800E03100001B8400885E
-:100AC0001CB000000000000548B10100C000001586
-:100AD00098C8010030002E0B99D0010000006A5028
-:100AE00099C00100C000620180CC01000C800003AD
-:100AF00042C901002D002DF022B001000000004C81
-:100B000080C001000000005C23800100D4003F4150
-:100B1000E7E101000B000011E4F501002F00204780
-:100B2000E7B501006491230B816C00000000004FC9
-:100B3000E59101000000000880B001000000000BFA
-:100B400003B001000000001502D001000E98000063
-:100B50002A4001000000004361B101004000001084
-:100B600062DD01006991A840813200001B84008889
-:100B70001CB00000E295000548310100C0000001F2
-:100B800080CE010075912611003000001000000099
-:100B90002AC801000000000880B001000000000128
-:100BA00080C00100C00000409998010000000001D1
-:100BB00098D001000E98004C02300100C0000040A7
-:100BC000039801007C91004081B2000030002F08A2
-:100BD00080B00100C0000015F4C90100C000000190
-:100BE000E4CD0100C0000040039801000E98000011
-:100BF0002A400100819122441F7C0000AC002F405C
-:100C000013B0010000000001E0C10100B00000408D
-:100C10004799010082910001E0D10000EF9400406B
-:100C20008D300100806300A616B001001698000701
-:100C3000161401000080001042C901008A91224070
-:100C4000E36D00000000004361B1010040000010AE
-:100C500062DD01008791A840813200001B8400887A
-:100C60001CB00000B797005E051001008D912209AD
-:100C7000803000003698004081320100C08D0005B0
-:100C800048B100008F91004A1F9000000000000052
-:100C900010B0010024002D1510C0010028002DF017
-:100CA00016B0010022002DF026B0010014002FF232
-:100CB0000CB0010000000001E0D1010000000010B4
-:100CC00032B001000000000B1BB0010004001F1532
-:100CD0001A5000000000004023B001000000000195
-:100CE0002AB001007197004035B000002F0020406D
-:100CF000E7B10100D391A2451F7C00002400200B26
-:100D0000E0B1010028002013E0B10100220020061C
-:100D1000E4B10100A991225C1F7C00000000005C8E
-:100D20001F8001003080001042C90100A9912240BB
-:100D3000E36D00000000004761B1010040000010B9
-:100D400062DD0100A591A840813200001B8400886B
-:100D50001CB000000000000548B10100008000192F
-:100D600042C90100CC912240E36D0000BA912242B9
-:100D7000197C0000379700408132010089950040BE
-:100D800081320100C791224B8032000000000043F5
-:100D900061B101004000001062DD0100B091A84087
-:100DA000813200001B8400881CB00000B6912241F3
-:100DB000197C0000F895004011300100B791000542
-:100DC00048B10000E295004081320100B99122094A
-:100DD0008030000036980040813201006F8400406E
-:100DE00005B0000037970040813201008595004032
-:100DF000813201000000004361B101004000001099
-:100E000062DD0100BD91A840813200001B84008892
-:100E10001CB00000C3912241197C0000F8950040ED
-:100E200011300100C491000548B10000E295004076
-:100E300081320100C69122098030000036980040BE
-:100E4000813201006F84004005B0000000000043C3
-:100E500061B101004000001062DD0100C891A840AE
-:100E6000813200001B8400881CB0000000000005D7
-:100E700048B10100CF912241197C0000F895004053
-:100E800011300100D091000548B10000E29500400A
-:100E900081320100D2912209803000003698004052
-:100EA00013300100C58D004005B00000008000191E
-:100EB00042C90100DA912240E36D000000000043C6
-:100EC00061B101004000001062DD0100D691A84030
-:100ED000813200001B8400881CB000000000000567
-:100EE00048B101000000004005B00100DE91224140
-:100EF000197C0000F895004011300100DF910005D9
-:100F000048B10000E29500408132010008002D0A3E
-:100F100084B00100000000F082B001001400204005
-:100F2000E1B10100E491031E80320000E59100412F
-:100F300087B0000021000040879801000097004022
-:100F4000813201000000005C1F900100E99122093C
-:100F5000803000003698004013300100EC912244AC
-:100F6000197C00003698004F8130010000000044D9
-:100F700019800100C08DA24A1F7C0000C58D004071
-:100F800081B20000BA002040E5B10100F2919C1747
-:100F900080320000CC0000404399010013990040CA
-:100FA00081320100A398004013300100C0000040CE
-:100FB00043990100C4002DF082B00100EE9800F0CA
-:100FC00084300100E295004081320100C58D220984
-:100FD000803000003698004013300100C58D00407D
-:100FE00081B200002E00004043990100FE91224092
-:100FF000E76D000032000040439901000692A240D4
-:10100000E56D0000CC960040813201002400200BE9
-:10101000E0B1010028002013E0B101002200200609
-:10102000E4B101001400200AE0B10100C58D2209DD
-:10103000803000003698004013300100C58D00401C
-:1010400081B20000CC9600408132010085960040BC
-:101050008132010014922241197C00000000000B33
-:1010600099B0010004001F1598500000149220014F
-:10107000986C00007000000348C9010000002E4673
-:101080001F90010000000050F1B1010000000003BA
-:10109000F0B101000000004261B10100A00000A415
-:1010A00062DD01001192A800E0310000000000059F
-:1010B00048B10100AC002F0010B001000000000199
-:1010C000E0C1010014002F1510C001000000000A4B
-:1010D00080B001000000600180D0010000000047E6
-:1010E000199001009691220980320000369800097B
-:1010F000803001009691004013B000000080000392
-:1011000042C90100000000F082B00100130000405D
-:10111000879801000000004C43C10100009700F0D7
-:1011200084300100C08D005C1F9000002C00204026
-:10113000E7B101002D002040E7B10100C08D004261
-:1011400019800000F2960040813201000B9800489F
-:10115000953001000000004561B101004000001021
-:1011600062DD01002992A840133000001B84008832
-:101170001CB000002F92000548B100002E920040E4
-:1011800013B000000000000012B001000800004091
-:101190004399010014002DF082B00100040022F0F8
-:1011A0008430000013000040879801000097004041
-:1011B000813201000000005C1F900100479200098D
-:1011C00000B00000C08D8742191000008B002F472F
-:1011D00019800100C08D0040E79100002F00004001
-:1011E0004799010045922247E77D0000669500403F
-:1011F000E731010045922200803200004092A24077
-:101200001F7C0000E29500408132010045920040C1
-:1012100081B20000300000404399010032002DF2FD
-:1012200094B001008A9600F2023001009196004BC2
-:1012300002B000000000000548B1010046920040E5
-:1012400001B000000000004005B001004C922200F7
-:10125000803200004B92A242197C0000DF960040D1
-:10126000813201004C92004081B200000F97004093
-:1012700081320100D892225C1F7C00000000005CDB
-:101280001F8001000080001042C9010054922240DA
-:10129000E36D00000000004561B101004000001056
-:1012A00062DD01005192A840813200001B84008859
-:1012B0001CB00000D892000548B10000D495004051
-:1012C000813201005B92A208803200005B92A2167C
-:1012D00080320000C597004D81300100008200027D
-:1012E00004DC0100058A004081B200007400004067
-:1012F00043990100000000F882B00100000000F0F6
-:1013000084B001000000004196B0010069922242C1
-:10131000961400000080001044C901006400684079
-:101320009798010000000041F0B101000000004268
-:10133000F0B1010070000005E0C9010000000045A7
-:1013400061B101002000001062DD01006692A8403A
-:10135000813200000000005C1F9001000000004589
-:1013600061B101004000001062DD01006A92A85CDA
-:101370001F0000001B8400881CB000005E012D05CA
-:1013800048B101006E9247F21230000000993F42CE
-:1013900013F0010073922247E77D00006B841F88E1
-:1013A0001CB000006D92004081B2000000000047B8
-:1013B000E791010004001F0996E40100008000107D
-:1013C00044C9010000000044F1B10100000068A818
-:1013D00097C0010000000003E0B10100008000039D
-:1013E000449901000000004461B1010000000010B8
-:1013F00062B101007B92A840E13100001B840088AB
-:101400001CB0000000993F4213F001007F92470595
-:10141000483100003F0000F39688010000000040C2
-:10142000E7B1010000001F4081B201008792224B0A
-:10143000803200000000005561B101000000004B47
-:1014400062B101008592A8408132000000000007CF
-:1014500016B001000062000B16DC0100669500402A
-:10146000813201009F922200803200001597005FB8
-:101470000110010089922240956C0000008000104C
-:1014800044C9010000000050F1B101000000000358
-:10149000F0B101000000004261B101000000001045
-:1014A00062B101009192A800E03100001B84008825
-:1014B0001CB000000000000548B1010004800003DA
-:1014C00042C90100000000F202B001008A960052F9
-:1014D00095300100E295004081320100899222415D
-:1014E000975000000C80000342C90100000000F08A
-:1014F00000B001000000005C018001009196004BEB
-:1015000002B000008992000548B100001698004022
-:10151000033001001780000344C9010000F0000CF3
-:10152000968801000000634C97F0010010800003D2
-:1015300044C90100000000ABE1B10100B797005EB3
-:1015400005100100030000071AF40100070000075E
-:101550001688010000B5000D46C90100A99230406F
-:10156000813200000000000BE681010000B7000D91
-:1015700046C901000000000BE68101001000100FB9
-:1015800094F40100E999005F950401006B96004016
-:1015900081320100B3922250FD7F0000B19243409E
-:1015A0008132000000001B4131D3010000002E05F4
-:1015B00048B1010000000040E1B10100000000401E
-:1015C0000FB00100CD95004181300100058A004037
-:1015D00081B20000D495004081320100C592A2087A
-:1015E00080320000C592A216803200000082000204
-:1015F00004DC01000000004503F0010000000001D0
-:1016000000C00100BE92375C613100000000001B89
-:1016100062B10100C292284081320000BF920040B6
-:1016200081B200000000000062B10100C292A84037
-:1016300081320000058A174081B200007400224008
-:10164000F1B1010000000040E1B101000B98004A37
-:1016500095300100F296005C1F1001005B92004083
-:1016600081B200002F00004047990100D692224726
-:10167000E77D000066950040E7310100D692220028
-:1016800080320000D192A2401F7C0000E295004011
-:1016900081320100D692004081B20000300000404B
-:1016A0004399010032002DF294B001008A9600F2B5
-:1016B000023001009196004B02B0000000000005CE
-:1016C00048B101000B98004895300100F296005C8B
-:1016D0001F100100DB928742191000008B002F477A
-:1016E0001980010000000040E79101003698004297
-:1016F00081300100C08D004081B20000F2960040B0
-:1017000081320100C08D005C1F900000BA002040B3
-:10171000E5B10100A398004081320100C000004003
-:1017200043990100C4002DF082B00100EE9800F052
-:1017300084300100E2950040813201003698004576
-:1017400081300100C08D2242197C0000C597003A0B
-:1017500081300100C08D004081B2000004000040D3
-:1017600081B20000D495004081320100F092A208BD
-:1017700080320000F092A21680320000C597004728
-:10178000803001000082000204DC0100058A004074
-:1017900081B200001080000344C9010000E100A6EE
-:1017A00084B0010000000040F1B1010000000040E1
-:1017B000F1B101000000600784940100B797005E5A
-:1017C00005100100C08D004081B200008A00004079
-:1017D00047990100E2950041E7410100C58D0040B5
-:1017E00081B20000CC960040813201008596004015
-:1017F00081320100000000012CB001000000001542
-:1018000010B001000000000010C0010004001F0A19
-:101810002C5000000000001032B001000700000B47
-:10182000968801000C932647972400000000004191
-:1018300097C001000C93234B0C6C00004998004B9F
-:10184000043001000000005033C00100000000021D
-:1018500010C001000000000216C0010000000006D8
-:1018600004B001004998004B045001000D93004062
-:1018700081B2000049980006043001001393A24889
-:101880001F7C0000119384481F100000AC00004032
-:10189000479901001393000AE0C100000000000A0C
-:1018A00002B00100EF9400018C3001000000004301
-:1018B00061B101004000001062DD01001493A840F6
-:1018C000813200001B8400881CB00000000000056D
-:1018D00048B101000000000210C00100219322065F
-:1018E000145000003A9700451F0001000093225C4D
-:1018F0001F7C00000000004761B1010040000010A3
-:1019000062DD01001D93A85C1F0000001B8400889D
-:101910001CB000000093000548B100000000000B5F
-:101920001BB0010008002D4085B00100000000F050
-:1019300082B001000000004005B0010000970041A6
-:10194000873001000000004561B101004000001037
-:1019500062DD01002793A840813200001B840088CB
-:101960001CB000000000000548B101002D932209C1
-:10197000803000003698004013300100319322443B
-:10198000197C00003698004F813001003193A24746
-:101990001F7C00000000004419800100FF070008C0
-:1019A000008C01003F93224A1F7C00003793A2164F
-:1019B00002300000E2950040813201002F002040FB
-:1019C000E7B10100C08D004081B200002D002D085C
-:1019D0002AB001003B932242197C00000F9700407F
-:1019E000813201003C93004081B20000DF9600404C
-:1019F0008132010030002E002AD0010032002A1569
-:101A0000E4B10100C08D0016E4B10000529322162B
-:101A100002300000000000082AB001000A990040CE
-:101A2000953001004493A240116C00005393224072
-:101A30002D6C0000AC00004047990100B0002B0164
-:101A4000E0C10100002B00A616B00100000000015B
-:101A5000E0D101000E980008803001004B93005E39
-:101A6000179000002F9800436131010000000043EF
-:101A700061B101004000001062DD01004C93A840FC
-:101A8000813200001B8400881CB0000000000005AB
-:101A900048B101001698000716140100B797005EC0
-:101AA00005100100E2950040813201002F00204026
-:101AB000E7B10100C58D004081B200000000000BBD
-:101AC0001BB0010004001F151A500000609320167F
-:101AD0001A6C00007000000348C901000000225089
-:101AE000F1B1010000000003F0B1010000000000AE
-:101AF000E0B101000000004261B10100A00000A4BB
-:101B000062DD01005D93A8461F1000000000000583
-:101B100048B101000000000010B0010000000015F5
-:101B200010C001000000000A2AB001000000000AF5
-:101B30002CD00100AC002F4023B0010067938445F6
-:101B40001F1000006893000AE0C100000000000AB6
-:101B500002B001007197004035B00000008000190C
-:101B600042C9010070932240E36D00000000004371
-:101B700061B101004000001062DD01006C93A840DB
-:101B8000813200001B8400881CB0000000000005AA
-:101B900048B101008093A2021A50000081932240B4
-:101BA0002D6C00000080001044C9010000000050AE
-:101BB000F1B1010000000003F0B10100FF070008CF
-:101BC000E08D01000000004261B101000000001042
-:101BD00062B101007793A840813200001B84008825
-:101BE0001CB000000000000548B101002F00204794
-:101BF000E7B501000C80000342C90100100000F0AD
-:101C000010C80100F00700401B9801008193005CA0
-:101C1000118000000000000210C00100F895004093
-:101C20001F0001000000000548B101008593230D4D
-:101C30002C6C0000000000401F9001008E93224693
-:101C40001F7C0000000000461F8001007080000320
-:101C500042C901008E932240E36D00000000004263
-:101C600061B101004000001062DD01008A93A840CC
-:101C7000813200001B8400881CB0000000000005B9
-:101C800048B1010008002D4085B00100000000F0BF
-:101C900082B001000000004005B001000097004143
-:101CA000873001000000004561B1010040000010D4
-:101CB00062DD01009393A840813200001B840088FC
-:101CC0001CB000000000000548B1010099932209F2
-:101CD0008030000036980040133001009D9322446C
-:101CE000197C00003698004F813001009D93A24777
-:101CF0001F7C00000000004419800100FF0700085D
-:101D0000008C0100B293224A1F7C0000A393A2160C
-:101D100002300000E2950040813201002F00204097
-:101D2000E7B10100C08D004081B200002D002D08F8
-:101D30002AB00100AE932242197C0000A793A2F3BF
-:101D400084300000000000A585B0010000000041C3
-:101D500085D00100D4003E4185E00100AB932240D4
-:101D60001F7C00000000005A119001000B000008C9
-:101D7000E4F501000F97004081320100AF9300406D
-:101D800081B20000DF9600408132010030002E0059
-:101D90002AD0010032002A15E4B10100C08D0016DE
-:101DA000E4B10000B593A21602300000E2950040B5
-:101DB000813201000494004081B200002D002D0802
-:101DC0002AB00100C39322471F7C0000BF93224228
-:101DD000197C0000BA93A2F384300000000000A533
-:101DE00085B001000000004185D00100D4003E41D3
-:101DF00085E00100BE9322401F7C00000000005AD5
-:101E0000119001000B000008E4F5010058012D00BD
-:101E10002AD0010060012DF010B00100000000F098
-:101E20002CB001004791004081B200000A990041A6
-:101E300095300100CB93A20880320000CB93A2160C
-:101E4000803200000000004197B00100C993230DCB
-:101E5000026C00000000004197C001009196004B09
-:101E600002B000000494000548B10000AC002F014E
-:101E700014B00100B0002B01E0C10100002B00A64E
-:101E800016B0010000000001E0D10100DB93230D3A
-:101E9000026C00000080001044C9010000000050E6
-:101EA000F1B1010000000003F0B1010000000042A8
-:101EB00061B101000000001062B10100D493A800DC
-:101EC000E03100001B8400881CB000000000000509
-:101ED00048B101000C80000342C90100100000F06D
-:101EE00022C801000000005C238001000000000106
-:101EF00084B00100DE93230D026C00000000000D91
-:101F000002B001000000000880B00100E39322400D
-:101F10001B6C00000E98000184500100EB932240DE
-:101F2000856C00000000000180C0010010800010DE
-:101F300046C901000000004F43810100000000423B
-:101F4000F0B1010020000040F0C9010000000016BF
-:101F5000F0B101000000004361B10100A00000A148
-:101F600062DD0100E993A811E0310000FA93005E00
-:101F700017900000EE93230D026C00000000000D8E
-:101F800002B001000000000184D00100F393224060
-:101F90001B6C00002F98004361310100FA9322402E
-:101FA000856C00000000000112C0010010800010CC
-:101FB00046C901000000004F4381010000000042BB
-:101FC000F0B1010000000009F0B1010000000018AC
-:101FD000F0B10100A00000A162DD0100F893A8119A
-:101FE000E03100000000004361B10100400000103A
-:101FF00062DD0100FB93A80A023000001B84008808
-:102000001CB00000E2950005483101000294230D48
-:10201000026C0000FF070011008C0100E2950040F7
-:10202000813201001698000716140100B797005E70
-:10203000051001002F002040E7B10100C58D0040D0
-:1020400081B200000080000342C90100000000F8D6
-:1020500082B00100000000F88CB00100000000F028
-:102060008EB00100C996004013300100000000400E
-:1020700085B001000097004187300100859600403F
-:10208000813201000080001042C9010015942240F5
-:10209000E36D00000000004561B101004000001048
-:1020A00062DD01001194A840813200001B84008889
-:1020B0001CB000000000000548B10100179422097F
-:1020C0008030000036980040133001000000000B03
-:1020D0001BB00100000000151AD001001E94A2419F
-:1020E000197C00000A99004095300100000000169C
-:1020F00080B201002794270880320000449300003A
-:102100002AC000000A990041953001000000001625
-:1021100080B201002294270880320000CB93000097
-:102120002AC000000000004197B001002594230D53
-:10213000026C00000000004197C001009196004B26
-:1021400002B000000000000548B10100C08D22422D
-:10215000197C0000C597003A81300100C08D004015
-:1021600081B200002B94004A1F9000000A960000E4
-:10217000103001000000001510C001000000001028
-:1021800032B001000700000B968801003994264701
-:10219000972400000000004197C001003994234BB0
-:1021A0000C6C00004998004B043001000000005006
-:1021B00033C001000000000210C001000000000256
-:1021C00016C001000000000604B001004998004B51
-:1021D000045001003A94004081B200004998000682
-:1021E000043001003F94A2441F7C00000000000B5B
-:1021F0001BB001000000000A2CD001000000000A02
-:1022000002B00100EF9400018C3001000080001941
-:1022100042C9010046942240E36D000000000043E3
-:1022200061B101004000001062DD01004294A8404D
-:10223000813200001B8400881CB0000000000005F3
-:1022400048B101000000000210C001004F942206B6
-:10225000145000003A9700451F0001002D94225CA5
-:102260001F7C00000000004761B101004000001029
-:1022700062DD01004B94A85C1F0000001B840088F5
-:102280001CB000002D94000548B1000008002D404E
-:1022900085B00100000000F082B0010000000040A5
-:1022A00005B00100009700418730010000000045A3
-:1022B00061B101004000001062DD01005494A840AB
-:1022C000813200001B8400881CB000000000000563
-:1022D00048B101005A94220980300000369800402D
-:1022E000133001005D942244197C00003698004FA1
-:1022F000813001000000004419800100FF07000840
-:10230000008C01006B94224A1F7C00006394A2168B
-:1023100002300000E2950040813201002F00204091
-:10232000E7B10100C08D004081B200002D002D08F2
-:102330002AB0010067942242197C00000F970040E8
-:10234000813201006894004081B20000DF960040B5
-:102350008132010030002E002AD0010032002A15FF
-:10236000E4B10100C08D0016E4B100004093A21654
-:1023700002300000E2950040813201002F00204031
-:10238000E7B10100C58D004081B200000A96004A05
-:102390001F1001005593001032B000008A00204049
-:1023A000E7B101007594A241197C0000E29500405C
-:1023B000813201007894004081B200008A960015B5
-:1023C000943001009196004B02B00000000000051F
-:1023D00048B101007A942242197C0000C597003A66
-:1023E000813001003698004581300100C08D0040E9
-:1023F00081B20000069200451F900000CC9600407C
-:102400008132010085960040813201005593000120
-:102410002CB00000D4950040813201008D94A208B8
-:10242000803200008D94A2168032000000820002EB
-:1024300004DC01000000004503F001000000000181
-:1024400000C001008694375C613100000000001B71
-:1024500062B101008A9428408132000087940040D4
-:1024600081B200000000000062B101008A94A8401F
-:1024700081320000058A174081B20000580120080F
-:10248000E0B1010060012016E0B10100CC960047E8
-:102490001F10010085960040813201005593000114
-:1024A0002CB00000D49500471F100100A094A20892
-:1024B00080320000A094A216803200009C94A242B8
-:1024C000197C00000082000204DC0100A09800409A
-:1024D00047990100E9890041893001008A96001579
-:1024E000943001009196004B02B00000058A004034
-:1024F00081B200000F970040813201000000004BC4
-:1025000019900100C597003A81300100058A00400A
-:1025100081B2000058012008E0B1010060012016DE
-:10252000E0B101000A9600103230010055930040DE
-:1025300013B00000D495004081320100B194A2088C
-:1025400080320000B194A2168032000000820002A6
-:1025500004DC01000000004503F001000000000160
-:1025600000C00100AA94375C613100000000001B2C
-:1025700062B10100AE94284081320000AB9400406B
-:1025800081B200000000000062B10100AE94A840DA
-:1025900081320000058A174081B2000000800003EC
-:1025A00042C90100000000F882B00100000000F8FC
-:1025B0008CB00100000000F08EB00100C996004010
-:1025C000133001000000004085B001000097004179
-:1025D00087300100859600408132010000800010A4
-:1025E00042C90100C0942240E36D00000000004594
-:1025F00061B101004000001062DD0100BC94A84000
-:10260000813200001B8400881CB00000000000051F
-:1026100048B10100479122098030000036980040FF
-:10262000133001004791004081B2000014002D4595
-:102630001F9001008F91004419900000C894A2419E
-:10264000197C00000000004A1F900100FA9200402F
-:1026500081B20000CC96004A1F1001008596004010
-:1026600081320100559300012CB000000A96004011
-:10267000813201005593001032B0000006920045EF
-:102680001F9000000000004137C30100000000411E
-:1026900033C301003600000102CC01000000D2402B
-:1026A00081B20000D49485178032000000009F485A
-:1026B00003D00000D6949C178032000000009F4C8D
-:1026C00003D000000000800134C3010002002D117E
-:1026D00010C10000DB94004043C10000DB940050B7
-:1026E00043C10000200000A142C90100DF94224044
-:1026F000E56D00000400A240E57D00000000004000
-:1027000023B00100000080491F9001000000A24199
-:1027100023D00000DB94005043D100004080000330
-:1027200044C901000000004AF0B10100000000406F
-:10273000F1B1010000000012F0B10100E695004186
-:10274000E13101000080004344C901001000004055
-:10275000F199010000000048F0B1010000000049BB
-:10276000F0B1010040000003E0C901000000004595
-:1027700061B101000000004362B101000000A84007
-:1027800081B20000EC94004081B20000BA00204009
-:10279000E5B10100B0002F018CD00100000000461F
-:1027A000E0C10100AC002F4013B00100CC002D01AE
-:1027B000E0C10100F6949C1780320000139900409C
-:1027C00081320100F8942247197C00000000005F6C
-:1027D00013900100A398004719100100C0002D4478
-:1027E0001F900100C4002DF082B00100EE9800F0AF
-:1027F00084B0000090002D0548B101000D95A24B5A
-:102800001F7C00006095A24C1F7C00000D951F1CD2
-:10281000E06D00001095A20180320000A8002D4656
-:102820008FB0010006951F1CE06D0000B400004051
-:1028300043990100089522F03A6C00005D951FF065
-:102840003A6C00000000A24080B200000000804FFF
-:102850008FB001008A000040439901005E9520423C
-:10286000E76D00000C952240803200000000805986
-:102870008FB00100000080588FB001000F952240FA
-:10288000803200000000805C8FB001000000805B9F
-:102890008FB00100AC00004043990100B0002DF062
-:1028A00084B001001495A242246C00001D9523F011
-:1028B000026C00001A95A2F0803200005F95A242DF
-:1028C000246C00005F95A241036C00001995A240A2
-:1028D00080320000000080518FB001000000805263
-:1028E0008FB001005F951F12845000005F95A0011A
-:1028F000846C00000D95004081B200008B00004008
-:10290000439901004895A246E77D0000140000406D
-:10291000439901003A9522F0143000002695200AD0
-:10292000026C00003795031E803200002595A240FE
-:1029300080320000000080448FB001000000804918
-:102940008FB001002B95220A026C00002E95A24147
-:10295000197C00002A95A2408032000000008055BA
-:102960008FB00100000080568FB001002D95A2406D
-:1029700080320000000080438FB0010000008048DA
-:102980008FB001000000000182B001000000000AC9
-:1029900082D0010034952091836C00003395A240D1
-:1029A00080320000260080408F9801002700804080
-:1029B0008F9801003695A240803200001F008040B1
-:1029C0008F980100200080408F9801003995A24027
-:1029D00080320000220080408F9801002300804058
-:1029E0008F98010088002D448FB001004395A241CB
-:1029F000197C00004095A2433D7C00004095A2F266
-:102A0000026C00000000A24080B20000000080497B
-:102A10008FB001004295A240803200000000804348
-:102A20008FB00100000080488FB001004095A09158
-:102A3000036C00003E9522433D7C00004795A24078
-:102A400080320000280080408F98010029008040DB
-:102A50008F98010014000040439901005195A2F0A5
-:102A60001430000088002D448FB001004E95A2F272
-:102A7000026C00000000A24080B20000000080490B
-:102A80008FB0010040952241197C00003E952091B5
-:102A9000036C00004095004081B200005595200A6B
-:102AA000026C00005495A240803200000000804477
-:102AB0008FB00100000080498FB001005A95220AB2
-:102AC000026C00002E95A241197C00005995A2408D
-:102AD00080320000000080558FB001000000805659
-:102AE0008FB001005C95A24080320000000080435E
-:102AF0008FB00100000080488FB001006295004354
-:102B000095B000006295004195B0000062950042CA
-:102B100095B000006295004495B000006295004CAD
-:102B200095B000000B980040813201006595A240ED
-:102B3000803200000000804B8FB001000000804C0C
-:102B40008FB001002D000040439901002E002FF3AB
-:102B500084B001006A95A2F3963000000000804026
-:102B600001B001002D002A41E7D10100D4003D4110
-:102B700085E001000B0000F200E401007095225A8C
-:102B8000017C0000000000401F9001007195005A78
-:102B900001800000000000401F8001000000634130
-:102BA00085C001000000A0A5856C01000000E34085
-:102BB00085B001000C80000342C9010012000040F2
-:102BC00087980100559900F08CB000007E95224056
-:102BD0000F6C000000002F0548B101007B95A24B4F
-:102BE000197C00007C9522F0186C00000000604BFE
-:102BF0001990010048960007103001006F840040D2
-:102C000005B000008095225A1F7C0000CD95004041
-:102C1000813001006F84004005B0000000002F05E6
-:102C200048B101000000604B199001004896000770
-:102C3000103001006F84004005B0000000002F0537
-:102C400048B101000000604B199001004896000750
-:102C5000103001000000804005B00100899533402C
-:102C6000813200008C95A1AD952000009A9513400B
-:102C700081B200000000134A5A8301003000394538
-:102C800095E001001F00000F5ED801000000005A0F
-:102C90005F9001000000004045B00100000000040A
-:102CA00048B00100000000054AB001000000000C1F
-:102CB00058B00100000000074EB001001886004027
-:102CC0005D9801000000005861B101000000004A59
-:102CD00062B101000000A84197B000009795004044
-:102CE00081B200000000804097B001009B9544072E
-:102CF00096300000FFFF004B8489010000001CC2D9
-:102D000024B00100A595A245257C00009F953120A7
-:102D100085300000A6952212487F000067981112A6
-:102D2000480301001000001296E401000000004B6F
-:102D30001E9401000000805A1F900100A5953140AB
-:102D400081320000000000B424B00100A6952212D8
-:102D5000487F0000679800408132010000002F0585
-:102D600048B10100B3950BF084300000000011124F
-:102D700048830100B0952250857000005E0100403C
-:102D800043990100679700F296300100E99900121B
-:102D9000943001000000005A1F9001001000001242
-:102DA00096E401000000804B1E94010010000042D8
-:102DB00010F4010000B73F4311F0010007000008C4
-:102DC0008A880100B69530A10C300000B9952245E3
-:102DD000E67D0000A695104081B2000000002A4563
-:102DE000E69101000000101248830100000011402C
-:102DF00081B201000000604B858001005E0100404F
-:102E000043990100679700F296300100008000109E
-:102E100044C90100D8000040819801002E002D0512
-:102E200048B10100C4952240E76D000080000040D9
-:102E300080C8010000000040F0B101000900000856
-:102E400086E40100000068A787C00100000000447C
-:102E500061B101000000001062B10100C895A80531
-:102E6000E03100001000001296E401000014004B55
-:102E700096DC01000000804B1E9401001000000F42
-:102E800084F401001F00004284880100D195224093
-:102E900080320000D295004268B10000000000427C
-:102EA0006AB10100D295315A1F0000000000914222
-:102EB00048930100D4953540813200006D000040F8
-:102EC00061990100DA9528B12C300000D595224D8A
-:102ED000757D0000000000402DB00100000095400D
-:102EE00011B001006D00004061990100DA95A8B1B0
-:102EF000103000000000954081B201007F000040CA
-:102F000061990100E19528B110300000DD959FBA6C
-:102F1000803200000000804011B0010000008024D9
-:102F2000118401000000005F61B101000010000089
-:102F300062DD01000000A84081B20000E39500407E
-:102F400081B20000AC94004047990100E7953240FF
-:102F500081320000ED9522F896300000000000F864
-:102F600090B00100000000F092B001000100004BA1
-:102F7000F0CD010020009248E0C901006C00004043
-:102F800061990100F19528B192300000ED95224C35
-:102F9000757D00000400124091B000006C000040FC
-:102FA00061990100F195A8B190300000FF00004840
-:102FB000968801000000004B90D001000100004BFA
-:102FC000F0CD010020000048F0C901000000924946
-:102FD000E0B101000C002D1048B10100FF0700080E
-:102FE000828C0100FF0700F0008C01000000A2416C
-:102FF00000EC0000FE95221A006C0000E295000033
-:10300000343001000000005049C10100FA95A2418E
-:10301000235000000000804081B201000C002D1000
-:1030200048B10100FF070015828C0100FF0700F086
-:10303000008C01000000A24100EC00000796220D68
-:10304000006C0000E29500001A3001000000005002
-:1030500049C101000396A2412350000000008040B6
-:1030600081B201000C96831E8032000000000044F3
-:103070001990010024002D012CB0010028002DF032
-:1030800016B0010022002DF026B0010014002FF22E
-:103090000CB0010000008040E1B1010002002D11E0
-:1030A00010C100001596004043C100001596005065
-:1030B00043C10000200000A142C901001A9622402D
-:1030C000F56D00000000004243D101000400A24061
-:1030D000E57D00000000004023B0010000008049B1
-:1030E0001F9001001D9622111E7C00001F96A0F06B
-:1030F000164000001F96004117C000001F96A0F464
-:10310000164000000000004117C001000000A2416D
-:1031100023D000001596005243D1000000B5000DE9
-:1031200042C9010022963047170400002596A20BE1
-:10313000E67D00000000904281B0010000B7000D64
-:1031400046C901002996A20BE67D00000000000B95
-:10315000E69101000000904181B0010000001040A4
-:1031600081B201002A96400796300000F399004092
-:10317000813201003496A245957C000001973F41C1
-:1031800095E00100000000F396B001000000004E41
-:10319000E6B1010040973E4097E001000000004E7C
-:1031A000E6B1010040973E409DE001004796003B9C
-:1031B000E7B1000034963040813200003E96A20B09
-:1031C000E67D000000B5000D46C901003A96A20B4D
-:1031D000E67D00000000104081B20100000098422E
-:1031E00081B0010000B7000D46C901000000000BCE
-:1031F000E69101000000104081B2010000009841FA
-:1032000081B00100040021A2952000000000104AB6
-:103210004483010000973E4195E001000000004E0C
-:10322000F6B101000000004EE6B1010040973E40BB
-:103230009DE001000000003BE7B101000000004AF2
-:1032400090B10100FFFF0007928901000000984043
-:1032500081B001000300000886F4010000B70043BC
-:1032600046C9010007000008828801004B9640080B
-:1032700096300000F39900408132010057962245B4
-:10328000957C00005396225A1F7C00001000000F0E
-:1032900096F401005096315F970400000000114B36
-:1032A000489301000000004B6AB101005396304082
-:1032B0008132000000000041E68101000000104062
-:1032C00081B201000000984081B2010000973F41A7
-:1032D00095E00100000000F396B0010040973D40EA
-:1032E00097E00100000063F388B001005F96A23B05
-:1032F000896C00000000004A90B10100010000A6A6
-:1033000092B101006096184A4493000000001840F2
-:1033100081B201003000394597E001006596225ADC
-:103320001F7C00001F04000F98D801000000004C13
-:103330005E940100679600054AB000001F0400A7D4
-:103340005E840100000000404BB001000000005806
-:1033500061B101000000004B62B101000000A84013
-:1033600081B200006896004081B200006B96400771
-:1033700096300000F3990040813201006F9622459B
-:10338000957C00000000984081B20100F199004A4C
-:103390004413010000973F4195E00100000000F355
-:1033A00096B0010040973D4097E00100000063F3B4
-:1033B00088B001003000384597E001000000005F50
-:1033C0000F9001000000005861B101000000004BA7
-:1033D00062B101007796A840813200007096A23B4E
-:1033E000896C0000300038459DE0010000009840E5
-:1033F00081B20100E9990012943001004896005A08
-:103400001F0001000000805A1F9001001100004AB7
-:10341000E6C9010034002F4F95840100000000F33D
-:1034200096B001000100634B84C801000000A04376
-:10343000856C01000000E34085B0010030002D44A0
-:103440001F90010032002DF22AB00100040022F288
-:103450000230000066950010323001003200A040BA
-:10346000E5B101000000004097B00100F007004006
-:10347000999801000000004A02C0010000000050BD
-:1034800003D001000000004197C001000000A34CE0
-:1034900002D000008E96004081B20000000000A81B
-:1034A00036B001009E9622410350000000800010BB
-:1034B00044C9010000000050F1B101007000000398
-:1034C000F0C901000000004261B1010000000010DD
-:1034D00062B101009796A800E03100001B840088CB
-:1034E0001CB00000E2950040813201007C800003A6
-:1034F00042C90100000000F000B001009296005C9B
-:1035000001800000E2950040813201000000001BB4
-:1035100010B1000068012D0682B00100000000F229
-:1035200082C001000080000346C90100DD95004013
-:1035300081320100C5962240116C0000000068082D
-:1035400038960100F007004182CC0100A396AA4101
-:103550003B400000000000F810B001000000005CDB
-:10356000118001000100001D04CC0100C496264614
-:10357000233000000800000312C80100640120F09D
-:10358000E0B10100C3962241055000002000000375
-:1035900048C901000C0000F886C801000000224460
-:1035A000F1B1010000000043F0B10100000000098A
-:1035B000E0B101000000004461B10100A00000A4DE
-:1035C00062DD0100B596A8461F100000C296224198
-:1035D00005500000C096A24123500000000000A149
-:1035E0001AB001000000004461B101004000001069
-:1035F00062DD0100BB96A846233000001B840088D2
-:103600001CB000001000000348C901000000000DBC
-:1036100042B101000000004413C00100B096005008
-:1036200049C100000000000548B10100048000030A
-:103630001AC801000000804081B20100C4962240F7
-:103640003B6C0000000000F800B00100E295005C57
-:1036500001000100C59600413BD0000000008D47ED
-:1036600080320100B0002F5F13B001000000E0F0D5
-:103670008CC001000080000342C90100000000F876
-:1036800094B00100000000F88CB00100D1968CF8D5
-:103690008E3000000000004419900100040022F860
-:1036A00014300000000000F816B00100000000F81F
-:1036B00026B0010008002EF80CB001000C002A4AC8
-:1036C000E0B1010028000000E0C901001000201B4B
-:1036D000E0B10100DE96200A0C6C0000000000F84A
-:1036E00094B00100000000F896B00100200020F026
-:1036F000E4B101001800204AE0B101001C00204B99
-:10370000E0B10100C996004013B000002C002D422A
-:10371000199001002E002FF382B00100000000F389
-:1037200096B00100E496A2A5976C000000008041CD
-:1037300095B00100E796A240976C000000000040A1
-:1037400083B001002D002040E7B10100000063417B
-:1037500097C00100D4003E4183E001000000004119
-:1037600083C00100EC96A0A5836C0000000000401F
-:1037700083B001002C002041E6B10100F196224007
-:103780001F7C00000004000098DC01000B00004CCE
-:10379000E4F50100000080401F8001000B00800064
-:1037A000E4F50100E6950040813201000480000349
-:1037B00044C9010000000040F1B1010000000040D8
-:1037C000F1B101000000604187B0010000800010ED
-:1037D00044C9010000000050F1B1010000000048A0
-:1037E000F0B1010000000049F0B101000000000349
-:1037F000E0B101000000004561B1010020000010AF
-:1038000062DD01000000A85D05900000FD9600400B
-:1038100081B20000E6950040813201000080000383
-:1038200044C9010000000041F0B101000000004265
-:10383000F0B1010000000040F1B1010000000043C0
-:10384000F0B101000080001044C9010000000050E8
-:10385000F1B1010000000048F0B101000000004992
-:10386000F0B1010000000003E0B1010000000045DC
-:1038700061B101002000001062DD01000000A85DC0
-:10388000059000000C97004081B200002D00004020
-:10389000439901002E002FF384B00100010063F36F
-:1038A00096C8010014979F4185500000010000A5B3
-:1038B00085CC01002D00A042E6B101005E012D0083
-:1038C00080B001001997524381600000020000F2AD
-:1038D00082F401001A970041809400000000005F0C
-:1038E000819001000000005E61B101000000004015
-:1038F00062B101000000A84095B000001B979EBB7C
-:10390000803200002097A2401F7C0000E29500401A
-:1039100081B200000000804195B001000400001554
-:1039200042C90100000000542BC00100000000FC4F
-:1039300024B00100000000FC38B00100000000FECF
-:103940003CB00100000000FE3AB0010035979C1722
-:10395000803200002A97A24A197C00000000804CA7
-:103960001F9001000C00001E98F401002997A24846
-:10397000996C00000000001542B101002997A28A4D
-:10398000F16D00000C00000102CC0100000000FC01
-:103990003EB00100010000F428CC0100CC002D0550
-:1039A00048B10100349720F03E6C00000000004B4D
-:1039B0001F9001000000004C2BC00100BF002D052E
-:1039C00048B10100000080F33AE0010000002E4BF6
-:1039D0001990010007002A0CE4B1010000008004E6
-:1039E000E6B1010018000040439901001C002DF0D1
-:1039F00016B0010020002DF026B001000C002FF2BF
-:103A00000CB001000000A20614EC00004197224512
-:103A10001F7C00000000A3062AEC0000000000F854
-:103A200094B00100000000F096B001000C002D40A1
-:103A300081B2010000002A4CE1C1010030000010F9
-:103A400048C901000A000040F19901001800000572
-:103A5000F0C901000000004AF0B101000000004B75
-:103A6000E0B101000000004761B10100A00000A426
-:103A700062DD01004B97A85C1F100000000080056C
-:103A800048B1010000002E1048B10100000068019B
-:103A900096B0010000000003F0B1010051974542CB
-:103AA000613100000000001062B101005297A800CF
-:103AB000E031000000009D4081B2010000002E10A6
-:103AC00048B101000000680196B001000000000349
-:103AD000F0B101005897454261310000200000100C
-:103AE00062DD01005997A800E031000000009D4010
-:103AF00081B201003080004A44C901000000000684
-:103B0000F1B10100C0A83D460DE00100FF7F00A11A
-:103B1000F08901000200000996F40100000000464F
-:103B200097E00100000060A897C00100639746423B
-:103B3000613100003000004A62C901006497A8406A
-:103B40008132000000009E4081B2010000993F4296
-:103B500097F001006897474081320000709722F388
-:103B6000740600003F0000F3948801000000000785
-:103B7000E785010000001F5561B101000000004A07
-:103B800062B101000000A84081B200006D970040C2
-:103B900081B2000000009F4081B20100000000A837
-:103BA00036B0010080978241234000007597A244FF
-:103BB0001F7C0000EF9400018C3001002080001079
-:103BC00042C901007B972240E36D000000000043E2
-:103BD00061B101004000001062DD01007897A8404B
-:103BE000813200001B8400881CB0000000000041EE
-:103BF00023B001000000001032B001008097224184
-:103C0000197C0000F89500432330010000000041BA
-:103C100023B001008297A3150C6C00008397000667
-:103C200004B000000000001504B0010085972002D8
-:103C30001A6C00000000000D04B001000700000B2A
-:103C4000968801008A9726479724000000000041CB
-:103C500097C001008A97234B046C00000000004BC2
-:103C600004B001004998000548310100B4972202D0
-:103C7000145000008E97A2022A500000B497A2456B
-:103C80001F7C0000909722020C50000099970002C0
-:103C900016C000009897225C1F7C00003080001046
-:103CA00042C9010098972240E36D000000000047E0
-:103CB00061B101004000001062DD01009497A8404E
-:103CC000813200001B8400881CB000000000000549
-:103CD00048B101003A97005C1F000100B49722151B
-:103CE000803200000000005033C00100B397A202F0
-:103CF0001A500000A59722461F7C00007080000328
-:103D000042C90100000000461F800100A597224023
-:103D1000E36D00000000004261B1010040000010AE
-:103D200062DD0100A197A840813200001B84008859
-:103D30001CB000000000000548B101000C80000329
-:103D400042C90100100000F010C801002F002F5CD4
-:103D50001180010000000047E7910100F0070040DA
-:103D60001B980100729720151A6C00007000000368
-:103D700048C9010000002250F1B101000000000319
-:103D8000F0B10100FF070008E08D010000000042D3
-:103D900061B10100A00000A462DD0100B097A84657
-:103DA0001F1000007297000548B1000072970002D2
-:103DB00010C00000B697A2441F7C0000EF940001E1
-:103DC0008C3001000000001B10B1000000800010CA
-:103DD00044C901000C000040F199010010000008E6
-:103DE000F0C9010000000016F0B10100100000034E
-:103DF000E0C901000000004561B101002000001091
-:103E000062DD01000000A85C1F900000BD9700402B
-:103E100081B20000170000D0A2C901000000A2403A
-:103E200027EC00000000002000B00100E2950041F6
-:103E3000A3410100C197004127D0000010000007F6
-:103E400096E401000000004B809401000000005443
-:103E500061B101000080004062DD01000000A84067
-:103E600081B20000C897004081B200001A9800405B
-:103E70002B300100AC002D0616C0010090002DF083
-:103E800016C40100D097A0F01644000000000041C5
-:103E900017C001000E0000A244C9010000006CF030
-:103EA00030B00100AC002D4087B0010000006CF084
-:103EB00028B00100D997224A197C00000030004345
-:103EC00086C801000030000B16C80100D997A44035
-:103ED000813200000000004117C00100FA9722065D
-:103EE00080320000E697A206146C0000E397224897
-:103EF000197C0000DE97A04117400000000000413F
-:103F000017C001000000004131C0010090002018DE
-:103F1000E0B101008B002D48198001008B00204585
-:103F2000E7910100E69700408790000008000043F9
-:103F300086980100E697A048174000000000004165
-:103F400017C00100B0000040439901001050004329
-:103F5000FCC9010051980030813001000000004090
-:103F6000E5B10100F197224A197C0000080000A287
-:103F700044C90100CC002DABF9B10100000000AB39
-:103F800017C00100F097A0F01644000000000041A7
-:103F900017C00100F59764F082B00000A400004053
-:103FA00047990100F597A2F280320000000000411D
-:103FB000E5B101008C002018E0B101009000004044
-:103FC000459901000000600630C001000000860C29
-:103FD00080B20000BC002D4619900100A000A0F2A4
-:103FE000E4B10100B00000404399010010500043CB
-:103FF000FCC9010051980030813001000000A24A44
-:1040000019FC0000080000A244C90100CC002DAB3F
-:10401000F9B10100000000AB17C001000398A0F047
-:10402000164400000000004117C001000000E4F049
-:1040300082B001000080001044C90100000000416E
-:10404000F0B1010000000003F0B101000000000029
-:10405000F0B101000000001062B101000000A81BD7
-:10406000E0B100000898004081B2000000F0000CB0
-:104070007E8901000000A64C956001000000804A86
-:10408000189401000080001044C9010004002201BE
-:10409000F031000020000040F0C9010000000016CF
-:1040A000F0B101000000004361B1010020000010E8
-:1040B00062DD01000000A815E0B100001398004087
-:1040C00081B200001080000344C901000000000616
-:1040D000F0B1010000000001F0B101000000E85F54
-:1040E0001790010070000040439901007A012EFEF4
-:1040F00092B001008B002DF616B0010020982243EB
-:10410000E77D00000000004445C10100040000A656
-:104110002AB0010028006E0682C801002498224AB5
-:10412000197C00000000004245D1010000006E4CE7
-:1041300083C001000000004192C001002598423078
-:104140003D0700000000669E83B0010000001A4198
-:104150003DC301000000004192C00100060000A222
-:1041600044C901001000004998F401002E9826303F
-:10417000930400002E98904C9240000000000041F3
-:1041800093C00100FFFF8049ECA9010000800010EE
-:1041900044C9010004002201F031000000000009C0
-:1041A000F0B1010000000018F0B101002000001083
-:1041B00062DD01000000A815E0B100003398004066
-:1041C00081B200004098225F817C00003F98A240AD
-:1041D000197C00000000004019900100000000540C
-:1041E00061B101001000000796E401000000004FDB
-:1041F000979401000000004B62B101003F982840F5
-:10420000813200003C98004081B200000000A221F1
-:10421000818400004398A25F816C00000000A243EB
-:10422000197C0100000000431990010000000054B7
-:1042300061B101001000000796E401000000004099
-:10424000969401000000004B62B101000000A840FC
-:1042500081B200004698004081B200000080001941
-:1042600044C9010004002202F03100000000000BEC
-:10427000F0B1010000000013F0B1010000000043A4
-:1042800061B101002000001962DD01000000A808F2
-:10429000E0B100004E98004081B200007C002DF09B
-:1042A00084B00100020000F098F401005798204CFF
-:1042B000846C00008800004043990100579820F268
-:1042C000846C00000000004085B0010098002D14AF
-:1042D00082B00100000000F098B00100A3002D148E
-:1042E00098D001005C98204C846C00000000004CC9
-:1042F00084B00100000000F380E001005F982340DB
-:10430000846C00000000004084B00100D000201444
-:10431000E0B101009800254280B0010000006EF37A
-:1043200080F001000000A64282C000006598A04015
-:10433000164000000000004117C0010000009FF07F
-:1043400082EC00009800A041E0B1010068980012E2
-:1043500010C90000004880400B980100C04980400F
-:104360000B980100804B80400B980100404D80402D
-:104370000B980100004F80400B980100C050804016
-:104380000B980100805280400B98010040548040FF
-:104390000B980100005680400B980100C0578040E8
-:1043A0000B980100805980400B980100405B8040D1
-:1043B0000B980100005D80400B980100C05E8040BA
-:1043C0000B980100806080400B98010040628040A3
-:1043D0000B980100006480400B980100C06580408C
-:1043E0000B980100806780400B9801004069804075
-:1043F0000B980100006B80400B980100C06C80405E
-:104400000B980100806E80400B9801004070804046
-:104410000B980100007280400B980100C07380402F
-:104420000B980100807580400B9801004077804018
-:104430000B980100007980400B980100C07A804001
-:104440000B980100807C80400B980100407E8040EA
-:104450000B98010088984357613100009498A25747
-:10446000737D00009498A240816F00000000004816
-:1044700061B101000010004A62DD01008C98A84A79
-:10448000803300009198225F957C00000000004B73
-:1044900062B101008F98A84BAC33000000001BA54F
-:1044A00082B30100000000BE83C301000000804011
-:1044B00097B001000010004A62DD01009898284082
-:1044C0008132000094982257777D000000009B20E5
-:1044D00097B001000000004B62B101009898A8401D
-:1044E0008132000000009B4097B0010000002E10B8
-:1044F00048B10100A8010040F19901000000000549
-:10450000F0B101000900000796E40100000060A777
-:1045100097C001000000001062B101000000A84037
-:1045200081B20000A098004081B20000A8002D1CBC
-:104530008AB0010000009FF08AD000000000A24075
-:104540008BEC00008A002040E7B10100B40000407D
-:1045500047990100A4002D45E0D10100AD989C17BA
-:1045600080320000BE002FAB83B001001799001409
-:1045700082500100B298004081B20000B29822F24D
-:10458000823000008C00004043990100B2989F1CCB
-:10459000E06D0000BE0000404799010017990040FF
-:1045A00081320100A800201CE0B101009C002D30E8
-:1045B00081B0010088002DF084B0010094002DF23C
-:1045C00086B00100DC9823F0846C00000C000042EF
-:1045D00088F40100DC982050896C0000CB98A392ED
-:1045E000876C0000BB98004410C90000DC98000AEA
-:1045F00087B00000DC98000987B00000DC98000854
-:1046000087B00000DC98000787B00000DC98000746
-:1046100087B00000DC98000787B00000DC98000637
-:1046200087B00000DC98000687B00000DC98000628
-:1046300087B00000DC98000687B00000DC98000618
-:1046400087B00000DC98000587B00000DC9800050A
-:1046500087B00000DC98000587B00000DC980005FA
-:1046600087B00000DC98000587B00000CC980044BB
-:1046700010C90000DC98000F87B00000DC98000E25
-:1046800087B00000DC98000D87B00000DC98000CBB
-:1046900087B00000DC98000C87B00000DC98000CAC
-:1046A00087B00000DC98000C87B00000DC98000C9C
-:1046B00087B00000DC98000C87B00000DC98000B8D
-:1046C00087B00000DC98000B87B00000DC98000B7E
-:1046D00087B00000DC98000B87B00000DC98000B6E
-:1046E00087B00000DC98000B87B00000DC98000B5E
-:1046F00087B00000BF002D4384C0010090002DF35F
-:1047000080E00100E1982340846C00009400209D2B
-:10471000E1B101000000004084B00100E598A2F082
-:10472000386C00009C002042E0B101000000005FF6
-:104730001394010000008046198001009C00204273
-:10474000E0B101003700004043990100040000F38C
-:1047500080F401000F0000F382880100EB982341F0
-:10476000806C00000000005F139401000000890CC1
-:1047700080B20000BC00004043990100A000A0F2FC
-:10478000E4B1010000009F4124EC0000F598A64030
-:104790008132000000009F4238EC0000F598A640EE
-:1047A00081320000B400004043990100F798A3F063
-:1047B0003A6C00000000804081B20100B40000406B
-:1047C00043990100FB9822F03A6C0000B400201DD0
-:1047D000E0B1010080002D5F13940100FB9823F0ED
-:1047E0003A6C00008000201DE0B10100C0002012E2
-:1047F000E0B10100C400A01CE0B101000080000392
-:1048000044C9010000000042E0B101001200004074
-:104810008798010004999F41246C0000000000412A
-:104820008CB00100000000128CD0010005990041FD
-:1048300024B00000000000408DB0010055990040F8
-:10484000813201000000004561B10100400000100C
-:1048500062DD01000000A84081B20000079900401D
-:1048600081B20000D49500408132010000000016A2
-:1048700080B201000000A708803201000F99A24019
-:10488000956C0000E295004081320100008200A694
-:1048900004B00100000000402DB00100A0982F409E
-:1048A00011B00100E989004189B0000000009FF8C3
-:1048B0003EEC000000009F12E0ED0000C80020ABBD
-:1048C000E1B10100CC00A01FE0B101001999A35F84
-:1048D000E76D000000000041E7C10100A6000040B4
-:1048E000479901002D9922F2863000000300004311
-:1048F00084F401000100004180CC0100B8002D4289
-:1049000080D001000000624086C0010021991F4351
-:10491000803200002299A240876C000000006241B2
-:1049200087B0010026999F408032000000000040BF
-:1049300085B001000000004084D00100000000426A
-:1049400080B00100000000F288B0010002000044C5
-:1049500084F40100B8002E4280D0010000006240C3
-:1049600088C001002C991F44803200003099A24079
-:10497000896C00003099624189B0000003006241F7
-:1049800086E40100B8000040459901000100624141
-:1049900088E40100A4002040E5B10100A20020400D
-:1049A000E7B10100BC002E4387F001000000004485
-:1049B00086C0010036992043876C000000008043C8
-:1049C000E5B101004001004380CE01000000A44396
-:1049D000E43101004001E2408798010088002D4445
-:1049E00081B0010090002DF22EB001009C002DF04E
-:1049F00086B0010090002DF082B00100BA002DF0C9
-:104A000098B001004399A212986C0000BC002DF2EE
-:104A100098B001004399A0F2986C000000000017C4
-:104A200082B001009C002041E0B10100B4002D12D1
-:104A300086D001004699A341E06D0000479900F03F
-:104A400084B000000000004184B0010080002D43CC
-:104A500084D001004A999F4280320000000000404B
-:104A600085B001004C99A342146C00004D99000AD6
-:104A70000CB00000000000420CB001004F99A017DC
-:104A80000C6C0000000080170CB00100549922400B
-:104A90000D6C00000000A00A0CEC0000010000F00A
-:104AA00082F401005499A0410C6C00000000A2F0B7
-:104AB000803201000000804081B00100E695004096
-:104AC000813201000480000344C901000000004657
-:104AD000F0B1010000000040F1B1010000006041B0
-:104AE000879401000080001044C9010000000050BC
-:104AF000F1B1010000000048F0B1010000000049E0
-:104B0000F0B1010000000003E0B101000000004529
-:104B100061B101002000001062DD01000000A85D0D
-:104B2000059000006099004081B2000000002E4B0B
-:104B30001990010005002A0CE4B101000000800476
-:104B4000E6B101006A9922491F7C00004200004042
-:104B500087980100000000491F800100C0970040B5
-:104B60008DB0000070992240AF6F0000000000156A
-:104B700096B0010088980008943001006F99224097
-:104B8000976C0000C097004687B00000000080408E
-:104B900087B001007099434861310000001000089F
-:104BA00062DD010075992840873000007199224824
-:104BB000777D0000C0971B4687B000007899225F80
-:104BC000117C000004002215623100007699A84093
-:104BD0008132000000009B4081B2010000000040D3
-:104BE00049B1010030000040A199010000000040DF
-:104BF00093B00100000000401FB00100C9990049B6
-:104C0000963001000700004906E401000039000366
-:104C100006C801000000004005B00100200000D0DF
-:104C2000A0C901000000004193C001007D99A0547B
-:104C3000936C000000002E0597B001000048004072
-:104C40004999010000000040E1B10100C00100A24B
-:104C500044C901008699A24197500000000000203D
-:104C600049B30100CE9900404931010000B52E083A
-:104C700097B0010000000040F1B101008C99A24101
-:104C800097500000180000409798010000972E40B0
-:104C900081B2010000000040F1B101009099A241F1
-:104CA000975000000000004049B1010040182E0557
-:104CB00097B0010000000040F1B101009499A241B9
-:104CC0009750000057952040E7B101003094004014
-:104CD0004599010064000040E59901005695204087
-:104CE000E7B10100B8942041E5B10100BA94204138
-:104CF000E5B1010098940040459901000200004090
-:104D00009798010000000040F1B101009E99A24176
-:104D1000975000000000004097B0010000000040E4
-:104D20006FB101000000004B68B10100A2998541FC
-:104D300097400000DB9900408132010000000040F4
-:104D400039B301000000004037B30100000000400B
-:104D500035B301000000004033B301000000004003
-:104D600041B30100000000403FB301003C0000409F
-:104D7000299B0100EE050040259B010042000040F8
-:104D80004B9B0100000000402FB3010000000040D9
-:104D90002DB301000000004047B3010000000040B7
-:104DA00043B30100600000402B9B01000000005451
-:104DB000EF93010000000055F1930100FFFF00A5F3
-:104DC0003C8B01000000002C5BB301000000002CB4
-:104DD00045B301000000004059B30100000000404D
-:104DE00057B301000000004027B30100000000405D
-:104DF00053B30100BF99A250FD7F0000BF99A2519B
-:104E0000FD7F0000C09900401DB3000050460040E7
-:104E10001D9B010000C000A688B30100FF3F00A653
-:104E20003AB3010000C0009D3B9B0100B405004067
-:104E3000239B0100000000404DB30100080A00A6BA
-:104E400014B301000101008A159B0100008000A637
-:104E500056B101000000805E57B501001800004BFC
-:104E600020E401000600004B96E401000043004BE3
-:104E700096C801001800001020DC01000000804BE3
-:104E80002094010000992E0A97B001000000004014
-:104E9000F1B10100CF99A2419750000000030040FA
-:104EA0009798010000A900404599010000000040CA
-:104EB000F1B10100D399A2419750000030000040A9
-:104EC000979801000000005561B101000000004BFF
-:104ED00062B10100D799A84081320000D799A24160
-:104EE000975000000000804081B2010000000040A7
-:104EF00087B101000000004097B001000000004BA6
-:104F000080B10100010000A682B10100DD99854158
-:104F1000974000000000004097B1010000000040F1
-:104F200097B001000000004B90B10100010000A605
-:104F300092B10100E2998541974000000000804055
-:104F400081B20100E6994440813200000000001265
-:104F500080B10100FFFF9C4B82890100E999444028
-:104F6000813200000000004A80B1010001009CA6CF
-:104F700082B10100EC99444081320000FFFF004BF8
-:104F80008489010000009CC224B001000000004A96
-:104F900090B10100FFFF804B928901000000004AA0
-:104FA00090B10100010080A692B10100FFFF004B0B
-:104FB00094890100000080CA94B001000000804084
-:104FC00081B201000000004081B00100F79980A586
-:104FD00080320000F89900A58032000000000041F6
-:104FE00081C00100F99980A5803200008001004055
-:104FF00083980100029A204F816C0000000100405C
-:1050000083980100029A204B816C000080000040D0
-:1050100083980100029A2047816C00000000004044
-:10502000839801000000004182DC010003900041F0
-:10503000209901000000004049B1010000142F4CEC
-:1050400083B0010000000040F1B10100069AA241C6
-:1050500083500000640000A580C80100099AA2A541
-:10506000806C000020000090209901000000005F8B
-:10507000239101000C9A1F918032000030000090B3
-:10508000209901000000005F239101000F9A1F91F9
-:10509000803200007000009020A901000000005F35
-:1050A00023910100129A1F91803200000000005FDE
-:1050B00023910100149A1F918032000040680090F3
-:1050C00020A90100E000004061990100210000409A
-:1050D0006199010022000040619901002300004015
-:1050E0006199010024000040619901002500004001
-:1050F00061990100260000406199010027000040ED
-:1051000061990100C000004061990100D014004085
-:105110004599010000000040F1B10100000000408D
-:10512000E1B101003003004085300100D01400409F
-:1051300045990100020100A680B00100040300406F
-:1051400080980100060500A682B001000807004112
-:105150008298010000000040F0B101000000004111
-:10516000E0B10100080000408598010030030040D4
-:10517000813201003903004081320100D81400401F
-:1051800043990100FF02A2F8806C0000000322F0A6
-:10519000826C0000FF02004081B20000D0142E405B
-:1051A00049B1010005000040A39B01000000004040
-:1051B000C1B30100080000DD81F40100369A00400F
-:1051C00010C900003C9A000581B000005501004064
-:1051D00081B20000449A000581B0000055010040F2
-:1051E00081B20000499A0044A5B300004B9A0044E4
-:1051F000A5B3000002000040A4E70100000000E0A9
-:1052000081B10100FFFF00C1F0890100419A2241F4
-:10521000815000003D9A0041C1C30000B10200402E
-:1052200081320100C5020040813201005A01004074
-:1052300081B2000002000040A4E70100000000E08D
-:1052400091B10100FFFF00C9F0890100419A22419C
-:1052500081500000459A0041C1C30000FFFF00DEFD
-:1052600085890100419A00C2E0B10000FFFF00DE25
-:1052700095890100419A00CAE0B10000040000CB0A
-:1052800081C801006A840040F293000004000040DD
-:1052900081B200000400004081B200000400004020
-:1052A00081B200000400004081B200000400004010
-:1052B00081B200000400004081B200000400004000
-:1052C00081B200000400004081B2000004000040F0
-:1052D00081B200000400004081B2000004000040E0
-:1052E00081B200000400004081B2000004000040D0
-:1052F00081B200000400004081B2000004000040C0
-:1053000081B200000400004081B2000004000040AF
-:1053100081B200000400004081B20000040000409F
-:1053200081B200000400004081B20000040000408F
-:1053300081B200000400004081B20000040000407F
-:1053400081B200000400004081B20000040000406F
-:1053500081B200000400004081B20000040000405F
-:1053600081B200000400004081B20000040000404F
-:1053700081B200000400004081B20000040000403F
-:1053800081B200000400004081B20000040000402F
-:1053900081B200000400004081B20000040000401F
-:1053A00081B200000400004081B20000040000400F
-:1053B00081B200000400004081B2000004000040FF
-:1053C00081B200000400004081B2000004000040EF
-:1053D00081B200000400004081B2000004000040DF
-:1053E00081B200000400004081B2000004000040CF
-:1053F00081B200000400004081B2000004000040BF
-:1054000081B200000400004081B2000004000040AE
-:1054100081B200000400004081B20000040000409E
-:1054200081B200000400004081B20000040000408E
-:1054300081B200000400004081B20000040000407E
-:1054400081B200000400004081B20000040000406E
-:1054500081B200000400004081B20000040000405E
-:1054600081B200000400004081B20000040000404E
-:1054700081B200000400004081B20000040000403E
-:1054800081B200000400004081B20000040000402E
-:1054900081B200000400004081B20000040000401E
-:1054A00081B200000400004081B20000040000400E
-:1054B00081B200000400004081B2000004000040FE
-:1054C00081B200000400004081B2000004000040EE
-:1054D00081B200000400004081B2000004000040DE
-:1054E00081B200000400004081B2000004000040CE
-:1054F00081B200000400004081B2000004000040BE
-:1055000081B200000400004081B2000004000040AD
-:1055100081B200000400004081B20000040000409D
-:1055200081B200000400004081B20000040000408D
-:1055300081B200000400004081B20000040000407D
-:1055400081B200000400004081B20000040000406D
-:1055500081B200000400004081B20000040000405D
-:1055600081B200000400004081B20000040000404D
-:1055700081B200000400004081B20000040000403D
-:1055800081B200000400004081B20000040000402D
-:1055900081B200000400004081B20000040000401D
-:1055A00081B200000400004081B20000040000400D
-:1055B00081B200000400004081B2000004000040FD
-:1055C00081B200000400004081B2000004000040ED
-:1055D00081B200000400004081B2000004000040DD
-:1055E00081B200000400004081B2000004000040CD
-:1055F00081B200000400004081B2000004000040BD
-:1056000081B200000400004081B2000004000040AC
-:1056100081B200000400004081B20000040000409C
-:1056200081B200000400004081B20000040000408C
-:1056300081B200000400004081B20000040000407C
-:1056400081B200000400004081B20000040000406C
-:1056500081B200000400004081B20000040000405C
-:1056600081B200000400004081B20000040000404C
-:1056700081B200000400004081B20000040000403C
-:1056800081B200000400004081B20000040000402C
-:1056900081B200000400004081B20000040000401C
-:1056A00081B200000400004081B20000040000400C
-:1056B00081B200000400004081B2000004000040FC
-:1056C00081B200000400004081B2000004000040EC
-:1056D00081B200000400004081B2000004000040DC
-:1056E00081B200000400004081B2000004000040CC
-:1056F00081B200000400004081B2000004000040BC
-:1057000081B200000400004081B2000004000040AB
-:1057100081B200000400004081B20000040000409B
-:1057200081B200000400004081B20000040000408B
-:1057300081B200000400004081B20000040000407B
-:1057400081B200000400004081B20000040000406B
-:1057500081B200000400004081B20000040000405B
-:1057600081B200000400004081B20000040000404B
-:1057700081B200000400004081B20000040000403B
-:1057800081B200000400004081B20000040000402B
-:1057900081B200000400004081B20000040000401B
-:1057A00081B200000400004081B20000040000400B
-:1057B00081B200000400004081B2000004000040FB
-:1057C00081B200000400004081B2000004000040EB
-:1057D00081B200000400004081B2000004000040DB
-:1057E00081B200000400004081B2000004000040CB
-:1057F00081B200000400004081B2000004000040BB
-:1058000081B200000400004081B2000004000040AA
-:1058100081B200000400004081B20000040000409A
-:1058200081B200000400004081B20000040000408A
-:1058300081B200000400004081B20000040000407A
-:1058400081B200000400004081B20000040000406A
-:1058500081B200000400004081B20000040000405A
-:1058600081B200000400004081B20000040000404A
-:1058700081B200000400004081B20000040000403A
-:1058800081B200000400004081B20000040000402A
-:1058900081B200000400004081B20000040000401A
-:1058A00081B200000400004081B20000040000400A
-:1058B00081B200000400004081B2000004000040FA
-:1058C00081B200000400004081B2000004000040EA
-:1058D00081B200000400004081B2000004000040DA
-:1058E00081B200000400004081B2000004000040CA
-:1058F00081B200000400004081B2000004000040BA
-:1059000081B200000400004081B2000004000040A9
-:1059100081B200000400004081B200000400004099
-:1059200081B200000400004081B200000400004089
-:1059300081B200000400004081B200000400004079
-:1059400081B200000400004081B200000400004069
-:1059500081B200000400004081B200000400004059
-:1059600081B200000400004081B200000400004049
-:1059700081B200000400004081B200000400004039
-:1059800081B200000400004081B200000400004029
-:1059900081B200000400004081B200000400004019
-:1059A00081B200000400004081B200000400004009
-:1059B00081B200000400004081B2000004000040F9
-:1059C00081B200000400004081B2000004000040E9
-:1059D00081B200000400004081B2000004000040D9
-:1059E00081B200000400004081B2000004000040C9
-:1059F00081B200000400004081B2000004000040B9
-:105A000081B200000400004081B2000004000040A8
-:105A100081B200000400004081B200000400004098
-:105A200081B200000400004081B200000400004088
-:105A300081B200000400004081B200000400004078
-:105A400081B200000400004081B200000400004068
-:105A500081B200000400004081B200000400004058
-:105A600081B200000400004081B200000400004048
-:105A700081B200000400004081B200000400004038
-:105A800081B200000400004081B200000400004028
-:105A900081B200000400004081B200000400004018
-:105AA00081B200000400004081B200000400004008
-:105AB00081B200000400004081B2000004000040F8
-:105AC00081B200000400004081B2000004000040E8
-:105AD00081B200000400004081B2000004000040D8
-:105AE00081B200000400004081B2000004000040C8
-:105AF00081B200000400004081B2000004000040B8
-:105B000081B200000400004081B2000004000040A7
-:105B100081B200000400004081B200000400004097
-:105B200081B200000400004081B200000400004087
-:105B300081B200000400004081B200000400004077
-:105B400081B200000400004081B200000400004067
-:105B500081B200000400004081B200000400004057
-:105B600081B200000400004081B200000400004047
-:105B700081B200000400004081B200000400004037
-:105B800081B200000400004081B200000400004027
-:105B900081B200000400004081B200000400004017
-:105BA00081B200000400004081B200000400004007
-:105BB00081B200000400004081B2000004000040F7
-:105BC00081B200000400004081B2000004000040E7
-:105BD00081B200000400004081B2000004000040D7
-:105BE00081B200000400004081B2000004000040C7
-:105BF00081B200000400004081B2000004000040B7
-:105C000081B200000400004081B2000004000040A6
-:105C100081B200000400004081B200000400004096
-:105C200081B200000400004081B200000400004086
-:105C300081B200000400004081B200000400004076
-:105C400081B200000400004081B200000400004066
-:105C500081B200000400004081B200000400004056
-:105C600081B200000400004081B200000400004046
-:105C700081B200000400004081B200000400004036
-:105C800081B200000400004081B200000400004026
-:105C900081B200000400004081B200000400004016
-:105CA00081B200000400004081B200000400004006
-:105CB00081B200000400004081B2000004000040F6
-:105CC00081B200000400004081B2000004000040E6
-:105CD00081B200000400004081B2000004000040D6
-:105CE00081B200000400004081B2000004000040C6
-:105CF00081B200000400004081B2000004000040B6
-:105D000081B200000400004081B2000004000040A5
-:105D100081B200000400004081B200000400004095
-:105D200081B200000400004081B200000400004085
-:105D300081B200000400004081B200000400004075
-:105D400081B200000400004081B200000400004065
-:105D500081B200000400004081B200000400004055
-:105D600081B200000400004081B200000400004045
-:105D700081B200000400004081B200000400004035
-:105D800081B200000400004081B200000400004025
-:105D900081B200000400004081B200000400004015
-:105DA00081B200000400004081B200000400004005
-:105DB00081B200000400004081B2000004000040F5
-:105DC00081B200000400004081B2000004000040E5
-:105DD00081B200000400004081B2000004000040D5
-:105DE00081B200000400004081B2000004000040C5
-:105DF00081B200000400004081B2000004000040B5
-:105E000081B200000400004081B2000004000040A4
-:105E100081B200000400004081B200000400004094
-:105E200081B200000400004081B200000400004084
-:105E300081B200000400004081B200000400004074
-:105E400081B200000400004081B200000400004064
-:105E500081B200000400004081B200000400004054
-:105E600081B200000400004081B200000400004044
-:105E700081B200000400004081B200000400004034
-:105E800081B200000400004081B200000400004024
-:105E900081B200000400004081B200000400004014
-:105EA00081B200000400004081B200000400004004
-:105EB00081B200000400004081B2000004000040F4
-:105EC00081B200000400004081B2000004000040E4
-:105ED00081B200000400004081B2000004000040D4
-:105EE00081B200000400004081B2000004000040C4
-:105EF00081B200000400004081B2000004000040B4
-:105F000081B200000400004081B2000004000040A3
-:105F100081B200000400004081B200000400004093
-:105F200081B200000400004081B200000400004083
-:105F300081B200000400004081B200000400004073
-:105F400081B200000400004081B200000400004063
-:105F500081B200000400004081B200000400004053
-:105F600081B200000400004081B200000400004043
-:105F700081B200000400004081B200000400004033
-:105F800081B200000400004081B200000400004023
-:105F900081B200000400004081B200000400004013
-:105FA00081B200000400004081B200000400004003
-:105FB00081B200000400004081B2000004000040F3
-:105FC00081B200000400004081B2000004000040E3
-:105FD00081B200000400004081B2000004000040D3
-:105FE00081B200000400004081B2000004000040C3
-:105FF00081B200000400004081B2000004000040B3
-:1060000081B200000400004081B2000004000040A2
-:1060100081B200000400004081B200000400004092
-:1060200081B200000400004081B200000400004082
-:1060300081B200000400004081B200000400004072
-:1060400081B200000400004081B200000400004062
-:1060500081B200000400004081B200000400004052
-:1060600081B200000400004081B200000400004042
-:1060700081B200000400004081B200000400004032
-:1060800081B200000400004081B200000400004022
-:1060900081B200000400004081B200000400004012
-:1060A00081B200000400004081B200000400004002
-:1060B00081B200000400004081B2000004000040F2
-:1060C00081B200000400004081B2000004000040E2
-:1060D00081B200000400004081B2000004000040D2
-:1060E00081B200000400004081B2000004000040C2
-:1060F00081B200000400004081B2000004000040B2
-:1061000081B200000400004081B2000004000040A1
-:1061100081B200000400004081B200000400004091
-:1061200081B200000400004081B200000400004081
-:1061300081B200000400004081B200000400004071
-:1061400081B200000400004081B200000400004061
-:1061500081B200000400004081B200000400004051
-:1061600081B200000400004081B200000400004041
-:1061700081B200000400004081B200000400004031
-:1061800081B200000400004081B200000400004021
-:1061900081B200000400004081B200000400004011
-:1061A00081B200000400004081B200000400004001
-:1061B00081B200000400004081B2000004000040F1
-:1061C00081B200000400004081B2000004000040E1
-:1061D00081B200000400004081B2000004000040D1
-:1061E00081B200000400004081B2000004000040C1
-:1061F00081B200000400004081B2000004000040B1
-:1062000081B200000400004081B2000004000040A0
-:1062100081B200000400004081B200000400004090
-:1062200081B200000400004081B200000400004080
-:1062300081B200000400004081B200000400004070
-:1062400081B200000400004081B200000400004060
-:1062500081B200000400004081B200000400004050
-:1062600081B200000400004081B200000400004040
-:1062700081B200000400004081B200000400004030
-:1062800081B200000400004081B200000400004020
-:1062900081B200000400004081B200000400004010
-:1062A00081B200000400004081B200000400004000
-:1062B00081B200000400004081B2000004000040F0
-:1062C00081B200000400004081B2000004000040E0
-:1062D00081B200000400004081B2000004000040D0
-:1062E00081B200000400004081B2000004000040C0
-:1062F00081B200000400004081B2000004000040B0
-:1063000081B200000400004081B20000040000409F
-:1063100081B200000400004081B20000040000408F
-:1063200081B200000400004081B20000040000407F
-:1063300081B200000400004081B20000040000406F
-:1063400081B200000400004081B20000040000405F
-:1063500081B200000400004081B20000040000404F
-:1063600081B200000400004081B20000040000403F
-:1063700081B200000400004081B20000040000402F
-:1063800081B200000400004081B20000040000401F
-:1063900081B200000400004081B20000040000400F
-:1063A00081B200000400004081B2000004000040FF
-:1063B00081B200000400004081B2000004000040EF
-:1063C00081B200000400004081B2000004000040DF
-:1063D00081B200000400004081B2000004000040CF
-:1063E00081B200000400004081B2000004000040BF
-:1063F00081B200000400004081B2000004000040AF
-:1064000081B200000400004081B20000040000409E
-:1064100081B200000400004081B20000040000408E
-:1064200081B200000400004081B20000040000407E
-:1064300081B200000400004081B20000040000406E
-:1064400081B200000400004081B20000040000405E
-:1064500081B200000400004081B20000040000404E
-:1064600081B200000400004081B20000040000403E
-:1064700081B200000400004081B20000040000402E
-:1064800081B200000400004081B20000040000401E
-:1064900081B200000400004081B20000040000400E
-:1064A00081B200000400004081B2000004000040FE
-:1064B00081B200000400004081B2000004000040EE
-:1064C00081B200000400004081B2000004000040DE
-:1064D00081B200000400004081B2000004000040CE
-:1064E00081B200000400004081B2000004000040BE
-:1064F00081B200000400004081B2000004000040AE
-:1065000081B200000400004081B20000040000409D
-:1065100081B200000400004081B20000040000408D
-:1065200081B200000400004081B20000040000407D
-:1065300081B200000400004081B20000040000406D
-:1065400081B200000400004081B20000040000405D
-:1065500081B200000400004081B20000040000404D
-:1065600081B200000400004081B20000040000403D
-:1065700081B200000400004081B20000040000402D
-:1065800081B200000400004081B20000040000401D
-:1065900081B200000400004081B20000040000400D
-:1065A00081B200000400004081B2000004000040FD
-:1065B00081B200000400004081B2000004000040ED
-:1065C00081B200000400004081B2000004000040DD
-:1065D00081B200000400004081B2000004000040CD
-:1065E00081B200000400004081B2000004000040BD
-:1065F00081B200000400004081B2000004000040AD
-:1066000081B200000400004081B20000040000409C
-:1066100081B200000400004081B20000040000408C
-:1066200081B200000400004081B20000040000407C
-:1066300081B200000400004081B20000040000406C
-:1066400081B200000400004081B20000040000405C
-:1066500081B200000400004081B20000040000404C
-:1066600081B200000400004081B20000040000403C
-:1066700081B200000400004081B20000040000402C
-:1066800081B200000400004081B20000040000401C
-:1066900081B200000400004081B20000040000400C
-:1066A00081B200000400004081B2000004000040FC
-:1066B00081B200000400004081B2000004000040EC
-:1066C00081B200000400004081B2000004000040DC
-:1066D00081B200000400004081B2000004000040CC
-:1066E00081B200000400004081B2000004000040BC
-:1066F00081B200000400004081B2000004000040AC
-:1067000081B200000400004081B20000040000409B
-:1067100081B200000400004081B20000040000408B
-:1067200081B200000400004081B20000040000407B
-:1067300081B200000400004081B20000040000406B
-:1067400081B200000400004081B20000040000405B
-:1067500081B200000400004081B20000040000404B
-:1067600081B200000400004081B20000040000403B
-:1067700081B200000400004081B20000040000402B
-:1067800081B200000400004081B20000040000401B
-:1067900081B200000400004081B20000040000400B
-:1067A00081B200000400004081B2000004000040FB
-:1067B00081B200000400004081B2000004000040EB
-:1067C00081B200000400004081B2000004000040DB
-:1067D00081B200000400004081B2000004000040CB
-:1067E00081B200000400004081B2000004000040BB
-:1067F00081B200000400004081B2000004000040AB
-:1068000081B200000400004081B20000040000409A
-:1068100081B200000400004081B20000040000408A
-:1068200081B200000400004081B20000040000407A
-:1068300081B200000400004081B20000040000406A
-:1068400081B200000400004081B20000040000405A
-:1068500081B200000400004081B20000040000404A
-:1068600081B200000400004081B20000040000403A
-:1068700081B200000400004081B20000040000402A
-:1068800081B200000400004081B20000040000401A
-:1068900081B200000400004081B20000040000400A
-:1068A00081B200000400004081B2000004000040FA
-:1068B00081B200000400004081B2000004000040EA
-:1068C00081B200000400004081B2000004000040DA
-:1068D00081B200000400004081B2000004000040CA
-:1068E00081B200000400004081B2000004000040BA
-:1068F00081B200000400004081B2000004000040AA
-:1069000081B200000400004081B200000400004099
-:1069100081B200000400004081B200000400004089
-:1069200081B200000400004081B200000400004079
-:1069300081B200000400004081B200000400004069
-:1069400081B200000400004081B200000400004059
-:1069500081B200000400004081B200000400004049
-:1069600081B200000400004081B200000400004039
-:1069700081B200000400004081B200000400004029
-:1069800081B200000400004081B200000400004019
-:1069900081B200000400004081B200000400004009
-:1069A00081B200000400004081B2000004000040F9
-:1069B00081B200000400004081B2000004000040E9
-:1069C00081B200000400004081B2000004000040D9
-:1069D00081B200000400004081B2000004000040C9
-:1069E00081B200000400004081B2000004000040B9
-:1069F00081B200000400004081B2000004000040A9
-:106A000081B200000400004081B200000400004098
-:106A100081B200000400004081B200000400004088
-:106A200081B200000400004081B200000400004078
-:106A300081B200000400004081B200000400004068
-:106A400081B200000400004081B200000400004058
-:106A500081B200000400004081B200000400004048
-:106A600081B200000400004081B200000400004038
-:106A700081B200000400004081B200000400004028
-:106A800081B200000400004081B200000400004018
-:106A900081B200000400004081B200000400004008
-:106AA00081B200000400004081B2000004000040F8
-:106AB00081B200000400004081B2000004000040E8
-:106AC00081B200000400004081B2000004000040D8
-:106AD00081B200000400004081B2000004000040C8
-:106AE00081B200000400004081B2000004000040B8
-:106AF00081B200000400004081B2000004000040A8
-:106B000081B200000400004081B200000400004097
-:106B100081B200000400004081B200000400004087
-:106B200081B200000400004081B200000400004077
-:106B300081B200000400004081B200000400004067
-:106B400081B200000400004081B200000400004057
-:106B500081B200000400004081B200000400004047
-:106B600081B200000400004081B200000400004037
-:106B700081B200000400004081B200000400004027
-:106B800081B200000400004081B200000400004017
-:106B900081B200000400004081B200000400004007
-:106BA00081B200000400004081B2000004000040F7
-:106BB00081B200000400004081B2000004000040E7
-:106BC00081B200000400004081B2000004000040D7
-:106BD00081B200000400004081B2000004000040C7
-:106BE00081B200000400004081B2000004000040B7
-:106BF00081B200000400004081B2000004000040A7
-:106C000081B200000400004081B200000400004096
-:106C100081B200000400004081B200000400004086
-:106C200081B200000400004081B200000400004076
-:106C300081B200000400004081B200000400004066
-:106C400081B200000400004081B200000400004056
-:106C500081B200000400004081B200000400004046
-:106C600081B200000400004081B200000400004036
-:106C700081B200000400004081B200000400004026
-:106C800081B200000400004081B200000400004016
-:106C900081B200000400004081B200000400004006
-:106CA00081B200000400004081B2000004000040F6
-:106CB00081B200000400004081B2000004000040E6
-:106CC00081B200000400004081B2000004000040D6
-:106CD00081B200000400004081B2000004000040C6
-:106CE00081B200000400004081B2000004000040B6
-:106CF00081B200000400004081B2000004000040A6
-:106D000081B200000400004081B200000400004095
-:106D100081B200000400004081B200000400004085
-:106D200081B200000400004081B200000400004075
-:106D300081B200000400004081B200000400004065
-:106D400081B200000400004081B200000400004055
-:106D500081B200000400004081B200000400004045
-:106D600081B200000400004081B200000400004035
-:106D700081B200000400004081B200000400004025
-:106D800081B200000400004081B200000400004015
-:106D900081B200000400004081B200000400004005
-:106DA00081B200000400004081B2000004000040F5
-:106DB00081B200000400004081B2000004000040E5
-:106DC00081B200000400004081B2000004000040D5
-:106DD00081B200000400004081B2000004000040C5
-:106DE00081B200000400004081B2000004000040B5
-:106DF00081B200000400004081B2000004000040A5
-:106E000081B200000400004081B200000400004094
-:106E100081B200000400004081B200000400004084
-:106E200081B200000400004081B200000400004074
-:106E300081B200000400004081B200000400004064
-:106E400081B200000400004081B200000400004054
-:106E500081B200000400004081B200000400004044
-:106E600081B200000400004081B200000400004034
-:106E700081B200000400004081B200000400004024
-:106E800081B200000400004081B200000400004014
-:106E900081B200000400004081B200000400004004
-:106EA00081B200000400004081B2000004000040F4
-:106EB00081B200000400004081B2000004000040E4
-:106EC00081B200000400004081B2000004000040D4
-:106ED00081B200000400004081B2000004000040C4
-:106EE00081B200000400004081B2000004000040B4
-:106EF00081B200000400004081B2000004000040A4
-:106F000081B200000400004081B200000400004093
-:106F100081B200000400004081B200000400004083
-:106F200081B200000400004081B200000400004073
-:106F300081B200000400004081B200000400004063
-:106F400081B200000400004081B200000400004053
-:106F500081B200000400004081B200000400004043
-:106F600081B200000400004081B200000400004033
-:106F700081B200000400004081B200000400004023
-:106F800081B200000400004081B200000400004013
-:106F900081B200000400004081B200000400004003
-:106FA00081B200000400004081B2000004000040F3
-:106FB00081B200000400004081B2000004000040E3
-:106FC00081B200000400004081B2000004000040D3
-:106FD00081B200000400004081B2000004000040C3
-:106FE00081B200000400004081B2000004000040B3
-:106FF00081B200000400004081B2000004000040A3
-:1070000081B200000400004081B200000400004092
-:1070100081B200000400004081B200000400004082
-:1070200081B200000400004081B200000400004072
-:1070300081B200000400004081B200000400004062
-:1070400081B200000400004081B200000400004052
-:1070500081B200000400004081B200000400004042
-:1070600081B200000400004081B200000400004032
-:1070700081B200000400004081B200000400004022
-:1070800081B200000400004081B200000400004012
-:1070900081B200000400004081B200000400004002
-:1070A00081B200000400004081B2000004000040F2
-:1070B00081B200000400004081B2000004000040E2
-:1070C00081B200000400004081B2000004000040D2
-:1070D00081B200000400004081B2000004000040C2
-:1070E00081B200000400004081B2000004000040B2
-:1070F00081B200000400004081B2000004000040A2
-:1071000081B200000400004081B200000400004091
-:1071100081B200000400004081B200000400004081
-:1071200081B200000400004081B200000400004071
-:1071300081B200000400004081B200000400004061
-:1071400081B200000400004081B200000400004051
-:1071500081B200000400004081B200000400004041
-:1071600081B200000400004081B200000400004031
-:1071700081B200000400004081B200000400004021
-:1071800081B200000400004081B200000400004011
-:1071900081B200000400004081B200000400004001
-:1071A00081B200000400004081B2000004000040F1
-:1071B00081B200000400004081B2000004000040E1
-:1071C00081B200000400004081B2000004000040D1
-:1071D00081B200000400004081B2000004000040C1
-:1071E00081B200000400004081B2000004000040B1
-:1071F00081B200000400004081B2000004000040A1
-:1072000081B200000400004081B200000400004090
-:1072100081B200000400004081B200000400004080
-:1072200081B200000400004081B200000400004070
-:1072300081B200000400004081B200000400004060
-:1072400081B200000400004081B200000400004050
-:1072500081B200000400004081B200000400004040
-:1072600081B200000400004081B200000400004030
-:1072700081B200000400004081B200000400004020
-:1072800081B200000400004081B200000400004010
-:1072900081B200000400004081B200000400004000
-:1072A00081B200000400004081B2000004000040F0
-:1072B00081B200000400004081B2000004000040E0
-:1072C00081B200000400004081B2000004000040D0
-:1072D00081B200000400004081B2000004000040C0
-:1072E00081B200000400004081B2000004000040B0
-:1072F00081B200000400004081B2000004000040A0
-:1073000081B200000400004081B20000040000408F
-:1073100081B200000400004081B20000040000407F
-:1073200081B200000400004081B20000040000406F
-:1073300081B200000400004081B20000040000405F
-:1073400081B200000400004081B20000040000404F
-:1073500081B200000400004081B20000040000403F
-:1073600081B200000400004081B20000040000402F
-:1073700081B200000400004081B20000040000401F
-:1073800081B200000400004081B20000040000400F
-:1073900081B200000400004081B2000004000040FF
-:1073A00081B200000400004081B2000004000040EF
-:1073B00081B200000400004081B2000004000040DF
-:1073C00081B200000400004081B2000004000040CF
-:1073D00081B200000400004081B2000004000040BF
-:1073E00081B200000400004081B2000004000040AF
-:1073F00081B200000400004081B20000040000409F
-:1074000081B200000400004081B20000040000408E
-:1074100081B200000400004081B20000040000407E
-:1074200081B200000400004081B20000040000406E
-:1074300081B200000400004081B20000040000405E
-:1074400081B200000400004081B20000040000404E
-:1074500081B200000400004081B20000040000403E
-:1074600081B200000400004081B20000040000402E
-:1074700081B200000400004081B20000040000401E
-:1074800081B200000400004081B20000040000400E
-:1074900081B200000400004081B2000004000040FE
-:1074A00081B200000400004081B2000004000040EE
-:1074B00081B200000400004081B2000004000040DE
-:1074C00081B200000400004081B2000004000040CE
-:1074D00081B200000400004081B2000004000040BE
-:1074E00081B200000400004081B2000004000040AE
-:1074F00081B200000400004081B20000040000409E
-:1075000081B200000400004081B20000040000408D
-:1075100081B200000400004081B20000040000407D
-:1075200081B200000400004081B20000040000406D
-:1075300081B200000400004081B20000040000405D
-:1075400081B200000400004081B20000040000404D
-:1075500081B200000400004081B20000040000403D
-:1075600081B200000400004081B20000040000402D
-:1075700081B200000400004081B20000040000401D
-:1075800081B200000400004081B20000040000400D
-:1075900081B200000400004081B2000004000040FD
-:1075A00081B200000400004081B2000004000040ED
-:1075B00081B200000400004081B2000004000040DD
-:1075C00081B200000400004081B2000004000040CD
-:1075D00081B200000400004081B2000004000040BD
-:1075E00081B200000400004081B2000004000040AD
-:1075F00081B200000400004081B20000040000409D
-:1076000081B200000400004081B20000040000408C
-:1076100081B200000400004081B20000040000407C
-:1076200081B200000400004081B20000040000406C
-:1076300081B200000400004081B20000040000405C
-:1076400081B200000400004081B20000040000404C
-:1076500081B200000400004081B20000040000403C
-:1076600081B200000400004081B20000040000402C
-:1076700081B200000400004081B20000040000401C
-:1076800081B200000400004081B20000040000400C
-:1076900081B200000400004081B2000004000040FC
-:1076A00081B200000400004081B2000004000040EC
-:1076B00081B200000400004081B2000004000040DC
-:1076C00081B200000400004081B2000004000040CC
-:1076D00081B200000400004081B2000004000040BC
-:1076E00081B200000400004081B2000004000040AC
-:1076F00081B200000400004081B20000040000409C
-:1077000081B200000400004081B20000040000408B
-:1077100081B200000400004081B20000040000407B
-:1077200081B200000400004081B20000040000406B
-:1077300081B200000400004081B20000040000405B
-:1077400081B200000400004081B20000040000404B
-:1077500081B200000400004081B20000040000403B
-:1077600081B200000400004081B20000040000402B
-:1077700081B200000400004081B20000040000401B
-:1077800081B200000400004081B20000040000400B
-:1077900081B200000400004081B2000004000040FB
-:1077A00081B200000400004081B2000004000040EB
-:1077B00081B200000400004081B2000004000040DB
-:1077C00081B200000400004081B2000004000040CB
-:1077D00081B200000400004081B2000004000040BB
-:1077E00081B200000400004081B2000004000040AB
-:1077F00081B200000400004081B20000040000409B
-:1078000081B200000400004081B20000040000408A
-:1078100081B200000400004081B20000040000407A
-:1078200081B200000400004081B20000040000406A
-:1078300081B200000400004081B20000040000405A
-:1078400081B200000400004081B20000040000404A
-:1078500081B200000400004081B20000040000403A
-:1078600081B200000400004081B20000040000402A
-:1078700081B200000400004081B20000040000401A
-:1078800081B200000400004081B20000040000400A
-:1078900081B200000400004081B2000004000040FA
-:1078A00081B200000400004081B2000004000040EA
-:1078B00081B200000400004081B2000004000040DA
-:1078C00081B200000400004081B2000004000040CA
-:1078D00081B200000400004081B2000004000040BA
-:1078E00081B200000400004081B2000004000040AA
-:1078F00081B200000400004081B20000040000409A
-:1079000081B200000400004081B200000400004089
-:1079100081B200000400004081B200000400004079
-:1079200081B200000400004081B200000400004069
-:1079300081B200000400004081B200000400004059
-:1079400081B200000400004081B200000400004049
-:1079500081B200000400004081B200000400004039
-:1079600081B200000400004081B200000400004029
-:1079700081B200000400004081B200000400004019
-:1079800081B200000400004081B200000400004009
-:1079900081B200000400004081B2000004000040F9
-:1079A00081B200000400004081B2000004000040E9
-:1079B00081B200000400004081B2000004000040D9
-:1079C00081B200000400004081B2000004000040C9
-:1079D00081B200000400004081B2000004000040B9
-:1079E00081B200000400004081B2000004000040A9
-:1079F00081B200000400004081B200000400004099
-:107A000081B200000400004081B200000400004088
-:107A100081B200000400004081B200000400004078
-:107A200081B200000400004081B200000400004068
-:107A300081B200000400004081B200000400004058
-:107A400081B200000400004081B200000400004048
-:107A500081B200000400004081B200000400004038
-:107A600081B200000400004081B200000400004028
-:107A700081B200000400004081B200000400004018
-:107A800081B200000400004081B200000400004008
-:107A900081B200000400004081B2000004000040F8
-:107AA00081B200000400004081B2000004000040E8
-:107AB00081B200000400004081B2000004000040D8
-:107AC00081B200000400004081B2000004000040C8
-:107AD00081B200000400004081B2000004000040B8
-:107AE00081B200000400004081B2000004000040A8
-:107AF00081B200000400004081B200000400004098
-:107B000081B200000400004081B200000400004087
-:107B100081B200000400004081B200000400004077
-:107B200081B200000400004081B200000400004067
-:107B300081B200000400004081B200000400004057
-:107B400081B200000400004081B200000400004047
-:107B500081B200000400004081B200000400004037
-:107B600081B200000400004081B200000400004027
-:107B700081B200000400004081B200000400004017
-:107B800081B200000400004081B200000400004007
-:107B900081B200000400004081B2000004000040F7
-:107BA00081B200000400004081B2000004000040E7
-:107BB00081B200000400004081B2000004000040D7
-:107BC00081B200000400004081B2000004000040C7
-:107BD00081B200000400004081B2000004000040B7
-:107BE00081B200000400004081B2000004000040A7
-:107BF00081B200000400004081B200000400004097
-:107C000081B200000400004081B200000400004086
-:107C100081B200000400004081B200000400004076
-:107C200081B200000400004081B200000400004066
-:107C300081B200000400004081B200000400004056
-:107C400081B200000400004081B200000400004046
-:107C500081B200000400004081B200000400004036
-:107C600081B200000400004081B200000400004026
-:107C700081B200000400004081B200000400004016
-:107C800081B200000400004081B200000400004006
-:107C900081B200000400004081B2000004000040F6
-:107CA00081B200000400004081B2000004000040E6
-:107CB00081B200000400004081B2000004000040D6
-:107CC00081B200000400004081B2000004000040C6
-:107CD00081B200000400004081B2000004000040B6
-:107CE00081B200000400004081B2000004000040A6
-:107CF00081B200000400004081B200000400004096
-:107D000081B200000400004081B200000400004085
-:107D100081B200000400004081B200000400004075
-:107D200081B200000400004081B200000400004065
-:107D300081B200000400004081B200000400004055
-:107D400081B200000400004081B200000400004045
-:107D500081B200000400004081B200000400004035
-:107D600081B200000400004081B200000400004025
-:107D700081B200000400004081B200000400004015
-:107D800081B200000400004081B200000400004005
-:107D900081B20000B69F00889AB00000B69F0088AC
-:107DA0009AB00000B69F00889AB00000B69F008885
-:107DB0009AB00000B69F00889AB0000000000088CA
-:107DC0009AB00100B69F414081320000B99F224025
-:107DD0007B6F0000B69F194081B20000000019417E
-:107DE0007BB30100000000A4C4B30100000000A1A7
-:107DF000C6B3010000002FA2C8B301000814004060
-:107E000049990100B09F004D9ACC0100C29F2640C5
-:107E1000813200000000004C49C10100C09FA24116
-:107E20009B500000C69F80808032000000005249B5
-:107E3000FD9301000000004AFD930100C99F00422C
-:107E4000CD9300000000514AFD930100000000495D
-:107E5000FD930100C99F0043CB93000000005040F8
-:107E600081B20100D99F004019990100000000F083
-:107E70009AB001000000004449D10100000040F028
-:107E800080B201000000414D80B20100D19F00404E
-:107E90001999010000004C4081B20100000000442B
-:107EA00049D10100000000F09AB001000000004D2F
-:107EB00010B10000000000E249B10100000000E341
-:107EC00043B10100000000E445B1010000000040A2
-:107ED0007BB301000000484F40B10100D99F004032
-:107EE00081B200000400004081B2000004000040A4
-:107EF00081B200000400004081B200000400004094
-:107F000081B200000400004081B200000400004083
-:107F100081B200000000804081B0010004000040F8
-:107F200081B200000400004081B200000400004063
-:107F300081B200000400004081B200000400004053
-:107F400081B200000400004081B200000400004043
-:107F500081B200000400004081B200000400004033
-:107F600081B200000400004081B200000400004023
-:107F700081B200000400004081B200000400004013
-:107F800081B200000400004081B200000400004003
-:107F900081B200006A84004081B20000319A004042
-:107FA00081B200000400004081B200004D9A004000
-:107FB00081B200000400004081B200000000804057
-:107FC00081B20100000000A810B1000004000040D0
-:107FD00081B200000400004081B2000004000040B3
-:107FE00081B200000400004081B2000004000040A3
-:107FF00081B200000400004081B200000400004093
-:1080000081B200000400004081B200000400004082
-:0480100081B2000039
-:00000001FF
diff --git a/firmware/slicoss/gbrcvucode.sys.ihex b/firmware/slicoss/gbrcvucode.sys.ihex
deleted file mode 100644 (file)
index bc7a839..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-:10000000000200004775010004A01301001CB75B4B
-:10001000093000B65F01001C00000020183B783A50
-:10002000001CA27701001C071D017018AD7BF1FFB9
-:100030001CB37BA9AA1EB47B010C1CB57B29061C32
-:1000400000005064080C315A70040C315A80040CC2
-:10005000314E90040C314AA000092555C0040C31E2
-:1000600052B000E92455C004CCB3001C1CEB2D0198
-:10007000001C065652D408079D00001C7BB70200E6
-:1000800010A00F51540906565EC004A0307403003E
-:10009000AC30750300CD033A001C7BB702001C6036
-:1000A0008E5154092925750300808E5154098C30D6
-:1000B000910004471C01001CA00F5154090000646A
-:1000C0000004471C65C004471C7503006C30010028
-:1000D0001C4D3402001C7BB702001CA00F515409B8
-:1000E000C88337001C800100001C0000640004A0CD
-:1000F0000F505409000074C3047BFBF2001CCC3386
-:100100000D001CB47BFD031C800E505409E0FB0560
-:10011000001C0000AC0300B30F5154090000EC7048
-:10012000040000EC80040000AC93006176ADC304D1
-:10013000C08D515409E07B00C01FA0FDC50100CC5B
-:100140003305001CD403003C1CD4D31B001CC0D3BB
-:1001500052001C00007C13048E8E5254095B807E7A
-:100160001304000000001C0000940100A00F515473
-:1001700009A00F515409C003FC7F1CA001A001007D
-:100180000000A40100A00F515409C003FC031CF59A
-:100190007701001C267A02061CA00F515409B30FE8
-:1001A000515409B50202001CA00F5154097A7E0275
-:1001B000001CB50202001C530F525409AF0301008A
-:1001C0001C7A0E525409B50202001C000002001CE9
-:1001D000A03DAA11040000AC1104D4D352001CB5F8
-:1001E0003EB2010020FBFDFF1F802C8C0300B93ABA
-:1001F0009E0100753B02001CA71C010010DB83164A
-:10020000001CC71D21C104B93B8DC1048B2C01000A
-:100210001C6B2C35C1040000781100CB2C79C10473
-:10022000A00F515409A00F51540954D002001C4989
-:1002300025B10100AB2C81C104A71D750300CC338F
-:1002400009001CEB2D01001CEA2901001CA00F5124
-:100250005409AE0F515409A00F515409D407FC039F
-:100260001C993A02001CBB3802001C003800001C1C
-:100270000000FC0104DB3B7E001CC71D01001C26A6
-:100280007A16061C271D01001CB30F5154097A0E63
-:10029000525409530F5254097A0E525409530F52B3
-:1002A00054097A0E525409530F525409A00F515455
-:1002B000097A0602001C530F525409AF0301001CB7
-:1002C0007A0E525409530F5254097A0E525409535C
-:1002D0000F5254097A0E525409530F5254097A0E90
-:1002E000525409003D02001C0000581200CB2C01A2
-:1002F000001C753B02001CA71C010010A67BFD051D
-:100300001C000090C204A67BFD051C0000A8C204CE
-:10031000CB2F05001C602C00001CC71CE90200A0AC
-:100320000F515409530702001CC083F1321C000016
-:10033000600204467AE6051C7A0E525409C083F125
-:10034000321C000068020440FA15001C0000A802DC
-:1003500004467AE6051CA00F515409A00F51540918
-:10036000A00F515409A00F515409B37B01C01F7451
-:100370000E505409C0039C001C8000F802000000CD
-:10038000F802040000CC1205071D01001CD4D32B79
-:10039000001CD4D352001C80769D1304000000037F
-:1003A00000A67BB50310C79C00001C802C00001C1D
-:1003B00000007C0204000074C304AB2DF912050791
-:1003C0001DD5C2048B2D01001C692501001CA67BD4
-:1003D000B50310CB2F09001C602C00001C00006826
-:1003E0000300530F525409467AE6051C7A0E525404
-:1003F0000940FA15001C0000300304467AE6051C8B
-:10040000B50F515409A00F51540973EC4A0304600D
-:100410002C00001C0000480300C71C01001C000049
-:10042000481305071D01001CC0D722001C75569EED
-:100430001304602C00001CE71C650304E79C00000B
-:100440001CA67BB50310802C00001C0000180304C0
-:10045000000074C304B97B01001C0000ACC304CBD2
-:10046000AFFC071CCB2F01041CC79F80031C00009E
-:10047000ACC304CBAFFC071CCB2F0D041CC79F8063
-:10048000031C0000ACC304CBAF00F81DCB2F010050
-:100490001DA67BB5031CC79CACC3040000AC1305B0
-:1004A000071D01001CC01DFCD308279D040400A0EB
-:1004B000EE66D400FB75291404207B06001CC01CCA
-:1004C0003C04000000D0D308000020F400C0EFF28C
-:1004D000001C20257C140460B7F2030000002C15DA
-:1004E00000CCB3FC031CCC3305021C00002CC5045B
-:1004F00060B72E050400002C150400007CC404C065
-:100500001DB8F304000088C404079D00001C1B7480
-:100510001DF404A67B11041CA00F895409E07B0084
-:10052000FC1F397F02001C071DBDC304A67BCD0341
-:100530001C000088C404E01C00001C0000C403046C
-:10054000CBAF00F81DCB2F01101D0000CCC3040061
-:1005500000CC0304CBAF00F81DCB2F01181DC79FA3
-:10056000000B1C0000CCC304FB7501001C071D011F
-:10057000001CCCB3FC031CCC3301021C0000CCC318
-:1005800004A01C00001CA0EEC20304CBAFFC071C9F
-:10059000CB2F09041CFB7501001C0000CCC304CC4C
-:1005A000B3FC031CCC3301021C00002CC50400006A
-:1005B000983405CCB3FC031CCC3315021C479D7446
-:1005C000C4040000984400801D9C5404871DAD04A1
-:1005D00000CE7601001CEF76BDC404A477AD2409DB
-:1005E000E47601001CC47601001C0000B85404D756
-:1005F00076015018F67601001C000000301800004B
-:10060000000010CC3061C504EB2D01001CEA29016B
-:10061000001CC05901001CF57749C504E030FC04FA
-:1006200000004CD00400204C140500000008050018
-:10063000CCB3FC031CCC3309021CEB2DD5C404CC79
-:10064000B3FC031CCC3319021CEB2DD5C404CCB372
-:10065000FC031CCC330D021CEB2DD5C404CCB3FC25
-:10066000031CCC3311021CEB2DD5C404007B00808D
-:100670001CAE77610500000004C004D38B00FC1F92
-:10068000607A3C001C604CE00400C02F20051FE095
-:1006900030D004008025D00400B55BD10404692665
-:1006A00001001C6A2B01001C801D00001CA9256193
-:1006B0000500EE3000001CAF77210500B45F01405B
-:1006C00018079D645504B77601001C967601001C3E
-:1006D000471D01001CA433016018A42F0160186499
-:1006E000770160182477016018447701001C648842
-:1006F00003001CA43F01001CA43B01001C537B0011
-:10070000C01CD3CF1B001C534F02001CDACF00C00B
-:100710001FD5570F001CD3D337001CD4530F001C18
-:10072000E02900001CF5D5CC05000000B855047781
-:100730005601001C565301001C0000001018000058
-:1007400004C004F55501001C0000D0550477560183
-:10075000001C565301001C0000001018000004C0CB
-:1007600004CB2F011810CB2F011010CB2F01081034
-:10077000CB2F010810CB2F012010CB2F010010CB65
-:100780002F012810892571C20400000CC304000049
-:1007900074C304000074C304000074C30400007038
-:1007A000C20400000CC304000074C304000074C33E
-:1007B00004000074C304401C6CC004401C9CC004B2
-:1007C000A77775C3040000C4C004271DF1C004004E
-:1007D0000074C304000074C304000074C304000068
-:1007E00048C604000048C604000048C6040000488B
-:1007F000C604000048C604000048C604000048C6FD
-:1008000004000048C604000048C604000048C604AE
-:10081000000048C604000048C604000048C60400A2
-:100820000048C604000048C604000048C604000092
-:1008300048C604000048C604000048C6040000483A
-:10084000C604000048C604000048C604000048C6AC
-:1008500004000048C604000048C604000048C6045E
-:10086000000048C604000048C604000048C6040052
-:100870000048C604000048C604000048C604000042
-:1008800048C604000048C604000048C604000048EA
-:10089000C604000048C604000048C604000048C65C
-:1008A00004000048C604000048C604000048C6040E
-:1008B000000048C604000048C604000048C6040002
-:1008C0000048C604000048C604000048C6040000F2
-:1008D00048C604000048C604000048C6040000489A
-:1008E000C604000048C604000048C604000048C60C
-:1008F00004000048C604000048C604000048C604BE
-:10090000000048C604000048C604000048C60400B1
-:100910000048C604000048C604000048C6040000A1
-:1009200048C604000048C604000048C60400004849
-:10093000C604000048C604000048C604000048C6BB
-:1009400004000048C604000048C604000048C6046D
-:10095000000048C604000048C604000048C6040061
-:100960000048C604000048C604000048C604000051
-:1009700048C604000048C604000048C604000048F9
-:10098000C604000048C604000048C604000048C66B
-:1009900004000048C604000048C604000048C6041D
-:1009A000000048C604000048C604000048C6040011
-:1009B0000048C604000048C604000048C604000001
-:1009C00048C604000048C604000048C604000048A9
-:1009D000C604000048C604000048C604000048C61B
-:1009E00004000048C604000048C604000048C604CD
-:1009F000000048C604000048C604000048C60400C1
-:040A00000048C604E0
-:00000001FF
diff --git a/firmware/slicoss/oasisdbgdownload.sys.ihex b/firmware/slicoss/oasisdbgdownload.sys.ihex
deleted file mode 100644 (file)
index 18b376a..0000000
+++ /dev/null
@@ -1,5124 +0,0 @@
-:1000000002000000004000000000010000000000AD
-:10001000008000001500004081B200001B0000407D
-:1000200081B200002100004081B2000003000040C6
-:1000300081B20000000000A898B001000480A24036
-:10004000FD7F00000900A249DD7D00000000004C9A
-:1000500080B2010007000040D1B100000000004C58
-:1000600080B201000900A240757D000060000040E0
-:10007000619901000B00A8B17E3100000900004029
-:1000800081B2000000808F981831000010000098A5
-:1000900080E40100000041988094010000000040CD
-:1000A00081B201001000009880E401000E00409829
-:1000B000809400001100004081B200000000004068
-:1000C000A59901001900294081320000190014BCD3
-:1000D000803200000E0093BC8032000000005040CF
-:1000E00081B201000080004081B200001000004099
-:1000F000A59901001F002940813200001F0014BC97
-:1001000080320000120093BC80320000000050409A
-:1001100081B201000180004081B200002000004057
-:10012000A59901002500294081320000250014BC5A
-:1001300080320000140093BC8032000000000049AF
-:10014000DD810100120100408132010033010040D5
-:10015000813201002A0014BC80320000FE0013BC72
-:10016000803200005495004045990100FFFF004097
-:10017000E599010000002F4049B101000000004056
-:10018000E1B1010000000040FDB3010000000040AB
-:10019000FFB30100330018EE803200000000005071
-:1001A00089B001003200A24189500000990000404E
-:1001B000813201003094004043990100000000F8B2
-:1001C00020B10100000000FAE0B30100390098EE10
-:1001D00080320000000000FB80B001003B0080F393
-:1001E000DE33000000000047FD9301003E0083F372
-:1001F00080320000F00000F38088010001800040A0
-:100200002EDD0100009400404399010000000046EB
-:1002100043C10100000000FA24B101007C0018EE87
-:1002200080320000450095E880320000FFFF00E8C2
-:10023000808801007C0026408132000000000040E0
-:10024000D5990100000000F2ECB30100000000F8B5
-:10025000D6B1010008000040D5990100000000F06F
-:10026000D6B10100FF0000F8EE8B0100080100404C
-:10027000D5990100FF0000F0808C0100000000F71C
-:100280008194010000000040D6B10100FF0000F899
-:10029000808801003C000040D5990100FF0000F07B
-:1002A000D68D0100FFFF00F0F0DB010000000048E8
-:1002B00081E00100000000F8819401003C01004051
-:1002C000D599010000000040D6B10100FF0000F800
-:1002D000808801000000004881E00100000000F873
-:1002E000819401003C020040D599010000000040CB
-:1002F000D6B101002C000040D5990100000000F8A3
-:10030000D6B101001E0000F082F40100FF3F00F8AA
-:1003100080D80100640026408132000000000041C6
-:1003200081D00100FFFF004080D8010000000041A3
-:100330008094010000000040D8B10100680022FA5A
-:10034000803000000000004C81E00100010000400E
-:1003500080CC010000000040DEB10100000100403F
-:10036000D5990100100000FA80E40100000000F6B9
-:100370008194010000000040D6B10100000200405D
-:10038000D5990100100000FA80E40100000000F699
-:100390008194010000000040D6B101000600004039
-:1003A000D5990100100000FBD6E5010007000040D0
-:1003B000D5990100180000FBD6E501004800004077
-:1003C000D5990100100000FAD6E501005000004068
-:1003D000D5990100100000FBD6E50100030000FBE9
-:1003E0007A890100000000F0DCB101007C00004CC3
-:1003F000DD9100007C0095E88430000000002FE9CA
-:10040000FAB3010000000040D1B10100FF0000423A
-:10041000808801003400004080CE01007C00A640AE
-:1004200081320000850000408132010002802240BC
-:10043000803200007C00004081B200000000004FCC
-:1004400081B001008E0009F9813200008C0008F9AA
-:100450008132000098001FFDF93300008B009EFDE3
-:10046000813200000000004AF39301000000804840
-:10047000F3930100000000FDF7B301000000804984
-:10048000F3930100000000FC19B1010093000AF988
-:1004900081320000000040FB81B20100000041FDFC
-:1004A00081B20100000780F9F38F0100000742F9D3
-:1004B000F38F01009700A2FFF76F00000000434098
-:1004C00081B201000000A2FFFBEF0000000080FCF1
-:1004D000E1B101000000804081B0010000940040C3
-:1004E00047990100BB000040813201000000A24694
-:1004F000FD7F01000094004047990100CE000040BC
-:10050000813201000000A244FD7F01000094004000
-:100510004599010000000040F1B10100FF7F00405B
-:10052000F5990100FF7F0040F59901009A13004002
-:10053000F599010007000040F59901000100004015
-:10054000F599010000020040F59901000200004009
-:10055000F599010000020040F599010003010040F7
-:10056000F599010000000040F59901009A13004040
-:10057000F59901000B000040F59901008000004052
-:10058000F599010000000040F599010000000040CD
-:10059000F599010007000040F599010008000040AE
-:1005A000F5990100B0020040F599010000000040FB
-:1005B000F599010000000040F59901000229004072
-:1005C000F599010000000040F59901000067004026
-:1005D000F599010000000040F599010080000040FD
-:1005E000F599010000008040F599010000000045E8
-:1005F000FD83010000000046FD830100FF7F0040F5
-:1006000025990100C4000040813201000000A2448D
-:1006100080B2000000000045FD930100E2000040B0
-:10062000833001000000A2458032010000008046B6
-:10063000FD9301000010004083980100DD000040A0
-:100640002B3101000000A24688B0000000000041EC
-:1006500089B00100000000948CB00100FFFF00464B
-:1006600080880100A5A5A24080CE000000000048BF
-:100670008DF00100C90082418940000000008040E7
-:1006800089B0010000000044FD830100D400004057
-:10069000813201000000A24480B20000E2000008A4
-:1006A000833001000000A245803201000000804438
-:1006B000FD93010000300008839801008000004095
-:1006C0002B990100DB000040893001000000A246A8
-:1006D00080B20000FFFF009480880100A5A5A24021
-:1006E000804E01000000804389B001000384004176
-:1006F0002C990100DE00004081B200000388004117
-:100700002C990100000000208DB0010000009F9690
-:1007100080B20000DF00A2418D5000000000804048
-:1007200081B20100FF7F0040259901000000004CCC
-:1007300089E00100DD000044821401000000909473
-:100740008AB0000000000045F0B101001000004533
-:1007500088F401000000004489D00100DD0000445D
-:100760002B410100EC00084180320000ED000094B4
-:1007700024B100001000009424F501000000009452
-:10078000F0B10100F200A04489500000DD000044F7
-:100790002B41010000000094F0B10100EF00204463
-:1007A000895000001000004588F40100000000FAA4
-:1007B0008AB001000000A34289D00000F700A0FA2F
-:1007C0008A400000000000418BC00100F500A342F8
-:1007D00089500000FFFF0045888801001000004597
-:1007E0008AF40100FC0090448A40000000000041AF
-:1007F0008BC00100FFFF00458AA801000000805067
-:100800008BE00100FF7F0040259901007C00004043
-:100810002B9901000030004083980100DD000008A2
-:1008200083140100000000942AB101000080004000
-:10083000F99B0100DD0000FC19310100000040942B
-:1008400080B20100DD0000442B4101000000419412
-:1008500080B2010000000041F9C301000000004423
-:100860002BC1010004019F948032000002800040EF
-:1008700081B200001001005193B000001001004D42
-:1008800093B000001001004993B000000000004246
-:1008900093B001001001A24193500000000080407D
-:1008A00081B201000000104081B20100000011403F
-:1008B00081B201000000124081B20100000013402B
-:1008C00081B201000000144081B201000000154017
-:1008D00081B201000000164081B201000000174003
-:1008E00081B201000000184081B2010000001940EF
-:1008F00081B2010000001A4081B2010000001B40DB
-:1009000081B2010000001C4081B2010000001D40C6
-:1009100081B2010000001E4081B2010000001F40B2
-:1009200081B201000000704081B2010000007140FE
-:1009300081B201000000724081B2010000007340EA
-:1009400081B201000000744081B2010000007540D6
-:1009500081B201000000764081B2010000007740C2
-:1009600081B201000000784081B2010000007940AE
-:1009700081B2010000007A4081B2010000007B409A
-:1009800081B2010000007C4081B2010000007D4086
-:1009900081B2010000007E4081B2010000007F4072
-:1009A00081B201000000804081B2010000040040DB
-:1009B000A199010000000050A1D1010000000040F9
-:1009C0001BB001000000004019B001000000004011
-:1009D00017B001000000004015B001000000004009
-:1009E00013B001000000004011B001000000004001
-:1009F0000FB00100000000400DB0010000000040F9
-:100A00000BB001000000004009B0010000000040F0
-:100A100007B001000000004005B0010000000040E8
-:100A200003B001000000004001B001003B0120487C
-:100A3000A15100000000804081B201004701224B1B
-:100A4000747D00000000804081B201006000004B16
-:100A500060990100000000B17EB101004801A8408A
-:100A6000813200004501004081B200000500804055
-:100A700097980100180000AA9688010000008043A2
-:100A800097F00100070000AA96880100000080404E
-:100A900081B201000000005807900100D89F00407B
-:100AA00081B2000000000044A5B30100D80200405C
-:100AB00081320100F8020040813201000000005C38
-:100AC00007900100D89F0040BFB300005A0122CC1C
-:100AD000857F00000000005107900100D89F004072
-:100AE00081B200000000004049B10100AE0300CB1C
-:100AF000A3C90100D0140040A19B01000000002008
-:100B000046B1010000000048F1B10100000000D032
-:100B1000F1B10100000000CAF1B10100000000D5F0
-:100B2000E1B10100070000406199010020000020B0
-:100B300062DD01006301A84081320000000000CCAA
-:100B400085930100F802004081320100D01400407A
-:100B500043990100000000FABAB30100000000FA56
-:100B6000A4B30100000000F8BCB3010000142F4042
-:100B700081B00100000000E7A7B30100000000D829
-:100B8000A9B30100FF0000DD8188010002000040E0
-:100B900080F401007301004080C80100860100DD7F
-:100BA000813200000000004010B1000087010040C9
-:100BB00081B200008801004081B20000890100403C
-:100BC00081B200008A01004081B200008B01004028
-:100BD00081B200008D01004081B200008F01004011
-:100BE00081B200005001004081B20000B601004017
-:100BF00081B200005001004081B20000C4010040F9
-:100C000081B20000C501004081B2000082020040B4
-:100C100081B200008302004081B22800B802004087
-:100C200081B22800D49F004081B22800D59F0040A7
-:100C300081B22800D69F004081B22800D79F004093
-:100C400081B228007201004181C02800550151493C
-:100C5000FD9328005501524AFD932A00550155493C
-:100C6000FD832A005501564AFD832A0050019181D7
-:100C700080302A005501454081B22A0050019182FE
-:100C800080302A005501464081B22A000000004011
-:100C900089B02B0000002F4081B0010000140040FB
-:100CA00049990100B30122DEE16D00000000004C13
-:100CB00049C101000000004181C001009201A2442D
-:100CC000816C00000000004C49D101009A012240D3
-:100CD000E16D00009601A2418150000050010041E9
-:100CE000BFB3000000000042BFB301005001A00FDD
-:100CF000BD6F0000000000DEE1B101000000004413
-:100D000049C10100B50100401999010000004240AD
-:100D100081B20100000043FF85B00100000000DE49
-:100D200019B10100000042FF87B00100000043FF3D
-:100D3000E1B101000000004449C1010000002FFFA3
-:100D4000E1B10100081400A480CC0100AA012640F2
-:100D5000813200000000004185C00100A801A24CC2
-:100D600081500000B40122D281320000AF01224143
-:100D7000A56F00005001A2E081320000000000D207
-:100D8000C1B301000000005C8990010000004042F6
-:100D900080B201000000414380B20100000000F079
-:100DA0008894010055010044E0B10000B101004801
-:100DB00049C10000AF01005B89900000A89F00A01E
-:100DC0009EB000000000004083B00100001400400D
-:100DD000499901000000234081B00100BE0122DEDC
-:100DE000E16D00000000004C49C10100000000411D
-:100DF00081C00100B901A244816C00005001004390
-:100E0000BFB30000000000F818B10100000040F876
-:100E100080B20100000041F080B2010000000040FB
-:100E2000F1B1010000000040F1B1010055010040A6
-:100E3000E1B10000C601004091B000000000004197
-:100E400091B00100D0142E4049B1010005000040CE
-:100E5000A39B0100080000DD81F40100CB010040EC
-:100E600080C801000000004010B10000D101004026
-:100E700081B00000530100DEA1B30000E301004097
-:100E800081B20000E501004081B00000EB010040AC
-:100E900081B20000520100DFE1B10000000000D08B
-:100EA000BAB30100000000DEA1B10100020000D2CF
-:100EB000A5E70100000000D2C1B30100000000005E
-:100EC000F0B10100DB012244C1530000DA0184418A
-:100ED00081400000DE01004081320100000000D0AE
-:100EE00045B10100D5010041A1C10000DA02004076
-:100EF00081320100F802004081320100550100DD1D
-:100F0000A1B100000000004081B00100400000409D
-:100F1000A59B0100DA02004081320100400000D3AD
-:100F2000A7CB0100F80200E0A5B3000003000040D9
-:100F3000A39B0100530100DEA1B3000000000044A8
-:100F4000BFB30100000000DE819001005001A2BA91
-:100F500080040000600000DE61990100E801A8B192
-:100F60008030000052010040E0B10000000000D0DD
-:100F7000BAB301006B020040819801006002004D8D
-:100F80008330010000000044E1B301000000004490
-:100F9000E3B3010000000044E5B301000000004499
-:100FA000E9B3010000000044EBB30100000000447D
-:100FB000F5B3010000000044F7B301000000004455
-:100FC000F9B30100F90122408F6F00007802004060
-:100FD00081980100600200C7833001008002004058
-:100FE000819801006002004283300100000000E8A7
-:100FF000F1B10100000000E9F1B10100000000EAD8
-:10100000F1B10100000000EBF1B10100000000852A
-:10101000F0B10100000000ECF1B10100000000EDB2
-:10102000F1B10100000000B2F0B10100000000A920
-:10103000F0B10100000000ACF0B10100000000AB15
-:10104000F0B10100000000B8F0B10100000000B9EB
-:10105000F0B10100000000BAF0B10100000000BBD7
-:10106000F0B101000C02B8408130000000000040E7
-:10107000819001000E02B940813200000000004161
-:10108000819001001002BA4081320000000000424D
-:10109000819001001202BB40813200000000004339
-:1010A000819001001402BC40813200000000004425
-:1010B000819001001602BD40813200000000004511
-:1010C000819001001802BE408132000000000046FD
-:1010D000819001001A02BF408132000000000047E9
-:1010E000819001001C02C8408132000000000048CD
-:1010F000819001001E02C9408132000000000049B9
-:10110000819001002002CA40813200000000004AA4
-:10111000819001002202CB40813200000000004B90
-:10112000819001002402CC40813200000000004C7C
-:10113000819001002602CD40813200000000004D68
-:10114000819001002802CE40813200000000004E54
-:10115000819001002A02CF40813200000000004F40
-:10116000819001002C02F04081320000000000500C
-:10117000819001002E02F1408132000000000051F8
-:10118000819001003002F2408132000000000052E4
-:10119000819001003202F3408132000000000053D0
-:1011A000819001003402F4408132000000000054BC
-:1011B000819001003602F5408132000000000055A8
-:1011C000819001003802F640813200000000005694
-:1011D000819001003A02F740813200000000005780
-:1011E000819001003C02F84081320000000000586C
-:1011F000819001003E02F940813200000000005958
-:10120000819001004002FA40813200000000005A43
-:10121000819001004202FB40813200000000005B2F
-:10122000819001004402FC40813200000000005C1B
-:10123000819001004602FD40813200000000005D07
-:10124000819001004802FE40813200000000005EF3
-:10125000819001004A02FF40813200000000005FDF
-:101260008190010000000040F0B10100400000400A
-:10127000A59B0100D802004081320100F802004025
-:1012800081320100D0142E06A5B30100400000D326
-:10129000A7CB0100000000F0F1B10100000000F157
-:1012A000F1B10100000000F2F1B10100000000F412
-:1012B000F1B10100000000F5F1B10100000000FAF9
-:1012C000F1B10100000000FBF1B10100000000FCE1
-:1012D000F1B10100000000EBF1B10100000000EEEF
-:1012E000F1B10100000000EFF1B10100000000F3D6
-:1012F000F1B10100000000F6F1B10100000000FDB5
-:10130000F1B10100DB0100C7E1B100000000804045
-:1013100081B20100660200488032000000005140A6
-:101320001AB1010000004D4081B2010000004540AB
-:1013300081B201006302A241835000005F02494074
-:1013400081B20000000052401CB1010000004E407C
-:1013500081B201000000464081B201006802A24152
-:10136000835000005F024A4081B20000000000A0EC
-:101370009EB0010000000080D8B30100000000A171
-:10138000D0B30100000000A2D2B30100000000A40D
-:10139000D4B30100000000D0D6B30100000000D19A
-:1013A000DCB30100000000D2DEB3010000000088C1
-:1013B000DAB30100000000D48EB30100000000D3B6
-:1013C000E6B30100000000ACECB30100000000999E
-:1013D000FAB30100000000D5E0B30100000000D521
-:1013E000E2B30100000000D5E4B30100000000D525
-:1013F000E8B30100000000D5EAB30100000000D509
-:10140000F4B30100000000D5F6B30100000000D5E0
-:10141000F8B30100000000C7A9B101000000004FAF
-:1014200040B101008402004091B000000000004182
-:1014300091B0010007000040A39B0100080000DDFF
-:1014400081F401008802004080C8010000000040D3
-:1014500010B100008D02004081B2000098020040EF
-:1014600081B2000098020046A3B300009B02004036
-:1014700081B20000A102004081B200008F0223501F
-:10148000A56F000000000050A5B30100E802004273
-:10149000A5630100F802004081320100D0142D4004
-:1014A00049B10100000000D0BAB30100000000DE25
-:1014B000A1B10100000000F800B001009702224431
-:1014C000A553000094020041A1C10000550100DDB8
-:1014D000A1B10000E80200DEA1330100F8020040E3
-:1014E000813201005501004081B20000000000453A
-:1014F000BFB301005001A2D2777D0000000000D2EE
-:1015000061B10100000000DE63B101009E02A8404D
-:10151000813200005501004081B20000E802005411
-:10152000A5330100F802004081320100D0142D40A3
-:1015300049B10100000000F8D0B30100000000F83C
-:10154000D2B30100000000F8D4B30100000000F89D
-:10155000D6B30100000000F808B10100AC02004061
-:10156000819801006002004683300100550100406F
-:1015700081B20000000000A09EB00100000000E861
-:1015800043B10100000000E945B10100000000EA9C
-:1015900049B10100000000EBA1B101000000004FC3
-:1015A00040B101000400004081B20000040000408E
-:1015B00081B200000400004081B20000040000403D
-:1015C00081B200000400004081B20000040000402D
-:1015D00081B20000D0142E4049B101000500004046
-:1015E000A39B010000000040C1B30100080000DD22
-:1015F00081F40100BD02004010C90000C3020005D3
-:1016000081B000005001004081B20000CB02000513
-:1016100081B000005001004081B20000D0020044BF
-:10162000A5B30000D2020044A5B3000002000040B0
-:10163000A4E70100000000E081B10100FFFF00C14C
-:10164000F0890100C802224181500000C40200411B
-:10165000C1C30000DA02004081320100F8020040FC
-:10166000813201005501004081B2000002000040BB
-:10167000A4E70100000000E091B10100FFFF00C9F4
-:10168000F0890100C802224181500000CC020041D3
-:10169000C1C30000FFFF00DE85890100C80200C24F
-:1016A000E0B10000FFFF00DE95890100C80200CA1A
-:1016B000E0B100000400004081B2000004000040DE
-:1016C00081B200000400004081B20000040000402C
-:1016D00081B20000000000E7A7B30100000000D8BD
-:1016E000A9B301000000004049B10100AE0300CBE6
-:1016F000A3C901000000002046B10100000000D293
-:10170000F1B10100000000D3F1B10100000000D4EC
-:10171000F1B10100000000D0E1B10100000000D1F2
-:1017200061B101002000002062DD0100E202A8405A
-:1017300081320000000080CC85930100040000404D
-:1017400081B200000400004081B2000004000040AB
-:1017500081B20000000000E7A7B30100000000D83C
-:10176000A9B301000000004049B10100AE0300CB65
-:10177000A3C901000000002046B10100000000D212
-:10178000F1B10100000000D0F1B10100000000D370
-:10179000F1B10100E10200D4E1B100000400004019
-:1017A00081B200000400004081B20000040000404B
-:1017B00081B200000400004081B20000040000403B
-:1017C00081B200000400004081B20000040000402B
-:1017D00081B200000000A2CC85FF00000000005094
-:1017E00081B00100FA02A24181500000F902A2F288
-:1017F00080300000000080CC8583010004000040A0
-:1018000081B200000400004081B2000004000040EA
-:1018100081B20000B5030040A199010000002F41F2
-:1018200099B301000A032244816C0000120322488C
-:10183000816C00000C03224C816C000016032250C6
-:10184000816C000017032254816C00001903225898
-:10185000816C00001E03225C816C0000500100407E
-:1018600081B20000000000BC09B00100DD9F00CA89
-:1018700001B000000000004003B001000000004182
-:10188000F38301001003A242056C00000000004138
-:1018900005B00100DD9F22CA07140000DD9F00454E
-:1018A000F3930000DD9F2043956F0000DD9F80CA09
-:1018B00005300000DD9F220180300000DD9F00CB5D
-:1018C000DB910000570100BCABB30000000000BC7E
-:1018D000B1B30100DD9F00CACFB30000FF0000CA12
-:1018E00081880100DD9FA240747D000060002040DF
-:1018F000609901001B03A8B1823000001A03004068
-:1019000081B20000DD9F00CA79B3000004000040EE
-:1019100081B200000000004E81B0010000000043D1
-:10192000CB8301000000454081B201002203A241A7
-:10193000815000000000454081B201000000454098
-:1019400081B201002D039182823000000000008AE4
-:1019500080B00100AE9F004080CE01002B03A64066
-:10196000813200002D03564081B20000B5030040D3
-:10197000A19901000000005307900100B503004049
-:10198000A19901000000005207900100D89F00417A
-:101990008BB300000000004E81B001000000004247
-:1019A000CD8301000000464081B201003203A24114
-:1019B000815000000000464081B201000000464016
-:1019C00081B201003D039181823000000000008956
-:1019D00080B00100AE9F004080CE01003B03A640D6
-:1019E000813200003D03554081B20000B503004044
-:1019F000A19901000000005207900100B5030040CA
-:101A0000A19901000000005307900100D89F0041F8
-:101A10008BB30000B0030040A1990100C4142F4013
-:101A200099B301005701004049B100000400004093
-:101A300081B200000400004081B2000004000040B8
-:101A400081B200000400004081B2000004000040A8
-:101A500081B200003094004043990100009000F8EA
-:101A600080980100100000F288E40100200000408E
-:101A7000209901000000005F239101004D031F9198
-:101A80008032000030000040209901000000005F1B
-:101A90002391010050031F9180320000400000405C
-:101AA000209901000000005F2391010053031F9162
-:101AB000803200000000005F2391010055031F9158
-:101AC000803200000008804020990100040000409E
-:101AD00081B200000000004784B001000000A2486D
-:101AE000848400000000005F61B101000000005C20
-:101AF0008F9001000000004762B101005A03A84026
-:101B000081320000000800478EC801005803005CC5
-:101B10008F800000E00000406199010058152D40C1
-:101B20008DB00100D0142DF088B00100000000FA43
-:101B30008AB001000000004581B0010007000045A7
-:101B400082880100000000438BF001000000004883
-:101B500083E0010000000046829401002000004163
-:101B600060990100000000418DC001007403225FF4
-:101B70008D6C00006503A2418150000063030040AA
-:101B800081B2000008000040859801000000004478
-:101B900082B001000000004186B00100001C00433B
-:101BA00086D801000000A641855001007003004165
-:101BB00083E000006E030040813201000000004815
-:101BC00085E00100D0142F468494010020000042DB
-:101BD00060990100C0000040619901000000804050
-:101BE00081B201000400004081B200000400004006
-:101BF00081B200000400004081B2000004000040F7
-:101C000081B200000400004081B2000004000040E6
-:101C100081B20000070000458088010000000043F9
-:101C20008BF0010000040040839801008503A0416F
-:101C3000815000008303004182E8000000008041E1
-:101C40008EC001000400004081B20000040000408A
-:101C500081B200000000004049B1010000020040D4
-:101C600083980100003900404599010000000040C0
-:101C7000F1B101008B03A24183500000000000403D
-:101C800085B001000B00004482F401001A1500A683
-:101C900086B0010070150040459901000008004021
-:101CA000F199010000000042F0B10100003900404C
-:101CB000E1990100040000406199010070150043A2
-:101CC000629901009503A840813200009703225ACF
-:101CD000737D00007A000040619901009803A8B16B
-:101CE0007E3100000008004284C801009003A24138
-:101CF000835000000000804081B2010004000040D9
-:101D000081B200000400004081B2000004000040E5
-:101D100081B2000058152D408DB00100D0142DF077
-:101D200088B00100000000408FB00100010000A653
-:101D300090B0010000F800489098010000000045B4
-:101D400093B00100000000FA8AB001008003004057
-:101D500081320100020000A680B00100AC032240E5
-:101D6000826C0000B0030040813201005803004043
-:101D700081320100000000418DC00100B503225FE7
-:101D80008D6C0000A703A24193500000A503004002
-:101D900081B20000FF070047848801000000A640D0
-:101DA00081B20000ED9F0047803001000002004733
-:101DB0008EC80100B003004081B200000000004462
-:101DC00050B30100BB032018896C0000040000A67A
-:101DD00084B00100200000A686B001000010004081
-:101DE000559B0100BE03004081B20000040000A624
-:101DF00084B00100200000A686B001000010004061
-:101E0000559B01000000004250D30100000000A8D3
-:101E10004FB30100000000434ED301006E030040A9
-:101E2000813201008203004280300100B003004093
-:101E300081320100C70322A78F6C00005A030040C3
-:101E400081320100C403004081B2000000008040E4
-:101E500081B20100C8142EBB85B00100000000EE65
-:101E600082B0010000000041E0B10100000000A2CA
-:101E7000A0B3010000000044A5B30100E19F00CA27
-:101E8000A7330100E09F004081B200000400004041
-:101E900081B20000D6032242756F0000D8032241B0
-:101EA000756F0000DA031ECA81320000DC031FCA0E
-:101EB00081320000000000CAC9B10100DD9F00426C
-:101EC00075B30000000000CACDB10100DD9F0041E4
-:101ED00075B30000000000CACFB10100DD9F0040D3
-:101EE00075B30000008100A6C6B10100DD9F00406F
-:101EF00081B20000008000A6C6B10100DD9F004055
-:101F000075B300000400004081B2000004000040EE
-:101F100081B200004501004D933001004501004EA3
-:101F2000933001004501004C93300100EC9F0040CC
-:101F300081320100DD9F004081B2000004000040BA
-:101F400081B200000400004081B2000004000040A3
-:101F500081B200005495004045990100DD9F00CA00
-:101F6000E5B100000400004081B200000400004020
-:101F700081B200000400004081B200000400004073
-:101F800081B200000400004081B200000400004063
-:101F900081B20000CC142E4087B00100000000A2E6
-:101FA000A0B3010015040043B2330100000068DA59
-:101FB00089B001007C0000408B98010000000050B7
-:101FC00089F001000000004189D0010003000044B5
-:101FD000888C01000000004487C00100000000411F
-:101FE000A5B3010015040043B2330100000000DA7C
-:101FF000F1B101000000004487C001000000004171
-:10200000A5C301000B042244895000000B042244A4
-:102010008B500000FA03A250A56F000000000042A0
-:10202000A5E30100000000CAA7B30100E19F00BBC7
-:1020300085300100CC142ED295C30100AE0300CB35
-:10204000A3C901000000002042B1010000000050BF
-:1020500081B001000804A241815000000704A2F2EF
-:1020600080300000FA030040A5B3000000000042E9
-:10207000A5E30100000000CAA7B30100E19F00BB77
-:1020800085300100E09F004081B200000400004064
-:1020900081B20000000000D92BB101000010004007
-:1020A00083980100DB00004081320100FFFF0094B3
-:1020B000B48B01000000804081B20100000000D913
-:1020C0002BB101000010004083980100DD000040AA
-:1020D0008132010000008094B4B30100040000408C
-:1020E00081B200000400004081B200000400004002
-:1020F00081B200000400004081B2000004000040F2
-:1021000081B200000400004081B2000004000040E1
-:1021100081B20000000000D92BB10100000000DAFC
-:1021200027B1010006C000402D990100DE000040EB
-:1021300081320100001000408398010002C4004178
-:102140002C990100DE000040813201000040004077
-:1021500083980100058200412C990100DE000040B7
-:10216000813201002D048094803200000C01004077
-:10217000813201002804004081B200000480004048
-:102180002D990100DE0000408132010000008040F6
-:1021900081B201003104001210C9000000488040E3
-:1021A0000B980100C04980400B980100804B804093
-:1021B0000B980100404D80400B980100004F80407B
-:1021C0000B980100C05080400B9801008052804065
-:1021D0000B980100405480400B980100005680404D
-:1021E0000B980100C05780400B9801008059804037
-:1021F0000B980100405B80400B980100005D80401F
-:102200000B980100C05E80400B9801008060804008
-:102210000B980100406280400B98010000648040F0
-:102220000B980100C06580400B98010080678040DA
-:102230000B980100406980400B980100006B8040C2
-:102240000B980100C06C80400B980100806E8040AC
-:102250000B980100407080400B9801000072804094
-:102260000B980100C07380400B980100807580407E
-:102270000B980100407780400B9801000079804066
-:102280000B980100C07A80400B980100807C804050
-:102290000B980100407E80400B9801000400004034
-:1022A00081B200000400004081B200000400004040
-:1022B00081B200000400004081B200000400004030
-:1022C00081B200000400004081B200000400004020
-:1022D00081B200005904001210C900000080804043
-:1022E0000B980100008280400B9801000084804020
-:1022F0000B980100008680400B9801000088804008
-:102300000B980100008A80400B980100008C8040EF
-:102310000B980100008E80400B98010000908040D7
-:102320000B980100009280400B98010000948040BF
-:102330000B980100009680400B98010000988040A7
-:102340000B980100009A80400B980100009C80408F
-:102350000B980100009E80400B98010000A0804077
-:102360000B98010000A280400B98010000A480405F
-:102370000B98010000A680400B98010000A8804047
-:102380000B98010000AA80400B98010000AC80402F
-:102390000B98010000AE80400B98010000B0804017
-:1023A0000B98010000B280400B98010000B48040FF
-:1023B0000B98010000B680400B98010000B88040E7
-:1023C0000B98010000BA80400B98010000BC8040CF
-:1023D0000B98010000BE80400B98010004000040F3
-:1023E00081B200000400004081B2000004000040FF
-:1023F00081B200000400004081B2000004000040EF
-:1024000081B200000400004081B2000004000040DE
-:1024100081B200000000004087B1010000000040D0
-:1024200097B001000000004B80B10100010000A640
-:1024300082B1010082048541974000000000004005
-:1024400097B101000000004097B001000000004B70
-:1024500090B10100010000A692B1010087048541FE
-:10246000974000000000804081B20100040000405D
-:1024700081B200000400004081B20000040000406E
-:1024800081B200000400004081B20000040000405E
-:1024900081B2000090046040813200000000001210
-:1024A00080B10100FFFFF04B82890100930460407E
-:1024B000813200000000004A80B101000100F0A656
-:1024C00082B101009604604081320000FFFF004BA2
-:1024D000848901000000F0C224B001000000004A1D
-:1024E00090B10100FFFF804B928901000000004A7B
-:1024F00090B10100010080A692B10100FFFF004BE6
-:1025000094890100000080CA94B0010004000040DA
-:1025100081B200001000004E98E4010000000007A6
-:10252000989401000000004399E001000000008041
-:10253000989401000000004999E001000000004C5F
-:1025400088940100A604474081320000AD04222097
-:10255000876F000000001F4081B2010000000040B2
-:1025600081B201000000004081B201000000004083
-:1025700081B20100A604004081B2000000001F806B
-:1025800086B30100B004224F777D0000C0040040F4
-:10259000813201000000004F61B1010000000044E1
-:1025A00062B10100B104A84081320000B804224B9E
-:1025B000897C0000B604224F777D0000C0040040F3
-:1025C000813201000000004562B10100B604A8405C
-:1025D000813200000000802087B301000400004029
-:1025E00081B200000400004081B2000004000040FD
-:1025F00081B200000400004081B2000004000040ED
-:1026000081B200000400004081B2000004000040DC
-:1026100081B200000000005099B001006F0000403E
-:1026200061990100C104A8B152330000C604224BD5
-:10263000537F00006F00004061990100C404A8B1FD
-:102640007E310000C104A241995000000000A24F59
-:1026500077FD00000400004081B20000040000404B
-:1026600081B200000400004081B20000040000407C
-:1026700081B200000400004081B20000040000406C
-:1026800081B200000400004081B20000040000405C
-:1026900081B200001000004E98E401000000000725
-:1026A000989401000000004399E0010000000080C0
-:1026B000989401000000004899E00100D604004C05
-:1026C00088940000D604474081320000DD042220B7
-:1026D000876F000000001F4081B201000000004031
-:1026E00081B201000000004081B201000000004002
-:1026F00081B20100D604004081B2000000001F80BA
-:1027000086B30100E004224F777D0000F004004012
-:10271000813201000000004F61B10100000000445F
-:1027200062B10100E104A84081320000E804224ABD
-:10273000897C0000E604224F777D0000F004004011
-:10274000813201000000004562B10100E604A840AA
-:10275000813200000000802087B3010004000040A7
-:1027600081B200000400004081B20000040000407B
-:1027700081B200000400004081B20000040000406B
-:1027800081B200000400004081B20000040000405B
-:1027900081B200000000005099B001006F000040BD
-:1027A00061990100F104A8B152330000F604224AF5
-:1027B000537F00006F00004061990100F404A8B14C
-:1027C0007E310000F104A241995000000000A24FA8
-:1027D00077FD00000400004081B2000004000040CA
-:1027E00081B200000400004081B2000004000040FB
-:1027F00081B200000400004081B2000004000040EB
-:1028000081B200000400004081B2000004000040DA
-:1028100081B200007B000040619901000005A8B171
-:102820008030000012051D4080320000401800403A
-:1028300049990100040000A686B001001005A240DD
-:1028400086040000DE9F9C4080320000FFFF0040B5
-:1028500088880100300500504731010036000044EF
-:1028600088CC01000C055240813200003005004048
-:10287000473101000000004189B0010030050048E7
-:10288000473101003005000547310100DE9F00405F
-:1028900081B200002800004047991B00DE9F0041E4
-:1028A000E1C11A007818004049991B00190522540B
-:1028B000817C1A001405424081321A00008200B364
-:1028C00067DF1B0000001A4493931B0028000040A0
-:1028D00047991B00300500418930010027050F4052
-:1028E00080320000FF7F00408888010030050050E2
-:1028F000473101003600004488CC01001F05994093
-:10290000803200000000004889D0010021059B4072
-:10291000803200000000004C89D0010023051F44D4
-:1029200080320000300500404731010000000041C6
-:1029300089B00100300500484731010030050058DA
-:1029400047310100DE9F004081B2000010000040CE
-:1029500086F401006F00004386880100DE9F260593
-:10296000473100003005004189300100DE9F004002
-:1029700081B200000400004081B200000400004069
-:1029800081B200000400004081B200000400004059
-:1029900081B200000000A044F041010000000040AE
-:1029A00081B2010000008041E1C10100040000404B
-:1029B00081B200000400004081B200000400004029
-:1029C00081B200000400004081B200000400004019
-:1029D00081B200004C010007913001000000A240CC
-:1029E00097EC00000000800591C001000400004049
-:1029F00081B200000400004081B2000004000040E9
-:102A000081B200000400004081B2000004000040D8
-:102A100081B200004C010040813201004405A24017
-:102A2000976C00003A000040B39B01004505004050
-:102A300081B2000040000040B39B01001004004040
-:102A400081320100000000DAF5B1010010040042FB
-:102A5000B3430100000000DAF5B1010010040042A8
-:102A6000B3430100000000DAF5B101004E00004060
-:102A7000B39B01001004004081320100080000DA1D
-:102A8000F7F5010050000040919801000000004758
-:102A90008FB0010010040048B2330100000000DADA
-:102AA000F7B10100080000DAF7F50100000000426C
-:102AB00091C001005005A2418F500000000000416C
-:102AC00045D1010008000040B39B01001004004004
-:102AD00081320100000000DAFDB101000A0000406F
-:102AE000B39B01001004004081320100000000DAB5
-:102AF000FDB101001A000040B39B0100100400402A
-:102B000081320100000000DAFDB101001800004030
-:102B1000B39B01001004004081320100000000DA84
-:102B2000FDB1010038050040813201001E0000485F
-:102B3000B2CB01001004004081320100000000DA35
-:102B400091C0010000000048B2CB01001004004019
-:102B50008132010000006EDA8FB0010002000048EF
-:102B6000B2CB01001004004081320100000000DA05
-:102B7000FDB1010004000048B2CB01001004004088
-:102B800081320100000080DAFDB101000400004044
-:102B900081B200007A052245FD7F0000401600400A
-:102BA00045990100DB9F00404931010008000048C1
-:102BB000B2CB010015040040813201007805A2402B
-:102BC0008F6C00007D052220B56F00007A05004063
-:102BD00081B20000DA9F004081321F007D05224053
-:102BE000976C1E007A05424081321E000000004FA3
-:102BF00067931F00DF9F005867931E005416004024
-:102C000047991F00000000FEF4B11F0000000040C3
-:102C100081B21F00000000FEF4B10100000000407E
-:102C200081B20100000000FEF4B10100000000408C
-:102C300081B20100000000FEF4B10100000000407C
-:102C400081B20100000000FEF4B10100000000406C
-:102C500081B20100000000FEF4B10100000000405C
-:102C600081B20100000000FEF4B101004600004006
-:102C7000B39B01001004004081320100080000DA1B
-:102C8000F7F501004800004095980100000000445D
-:102C900097B001001004004AB2330100000000DACE
-:102CA000F7B10100080000DAF7F50100000000426A
-:102CB00095C001009005A241975000002A000040F5
-:102CC000A59B010040160040A19B0100000000CA26
-:102CD000A7B30100E19F00BB85300100E09F0040E9
-:102CE00081B200000400004081B2000004000040F6
-:102CF00081B200000400004081B2000004000040E6
-:102D000081B200000400004081B2000004000040D5
-:102D100081B20000B8052245FD7F0000E0150040AB
-:102D2000479901001A0000A280DC01000000005059
-:102D3000F1B10100F0150040F1990100000000CA56
-:102D4000F1B101000700004061990100200000403E
-:102D500062DD0100A705A8BBE131000000000050C2
-:102D600083B00100AA05A24183500000A905A2F288
-:102D7000823000004C01004081320100B005A240C9
-:102D8000976C00003A000040B39B0100B105004081
-:102D900081B2000040000040B39B0100F0150040EC
-:102DA000439901001004004081320100B805A2FAE5
-:102DB000B46F000010040042B3430100B805A2FA4A
-:102DC000B46F000010040042B3430100BB0522FAB7
-:102DD000B46F0000B8054240813220000000004E70
-:102DE00067932100DF9F0058679320004016004042
-:102DF00045992100DB9F004049312100F615004034
-:102E0000439921005C1600404599210000006EFAAC
-:102E10008EB021000000004081B20100000000FEE1
-:102E2000F4B101000000004081B20100000000FE8A
-:102E3000F4B101000000004081B20100000000F088
-:102E4000B4B30100C905A2408F6C0000FC1520201E
-:102E5000E1B10100CE05004081B22400DA9F0040BC
-:102E600081322500CE052240976C2400CB054240DC
-:102E7000813224000000004F67932500DF9F005837
-:102E80006793240038050040813225001E00004869
-:102E9000B2CB25001004004081320100D30522503E
-:102EA000B56F00000000005091C001000000004814
-:102EB000B2CB0100F615004043990100200400F256
-:102EC000B433010002000048B2CB0100F815004005
-:102ED00043990100200400F2B433010004000048CB
-:102EE000B2CB0100FA15004043990100200400F222
-:102EF000B433010008000048B2CB0100FC150040CB
-:102F000043990100000000F094B00100FFFF004A67
-:102F1000B48B010020040040813201000A00004807
-:102F2000B2CB01001000004AB4F7010020040040B9
-:102F30008132010038050040813201001E00004846
-:102F4000B2CB01001004004081320100E90522509B
-:102F5000B56F0000EA050050B5B300000000004066
-:102F6000B5B301002004004081320100E09F004021
-:102F700081B200000400004081B200000400004063
-:102F800081B200000400004081B200000400004053
-:102F900081B2000000160040479901003031004026
-:102FA000F599010032330040F599010034350040B5
-:102FB000F599010036370040F59901003839004095
-:102FC000F599010041420040F59901004344004059
-:102FD000F599010045460040F59901004748004039
-:102FE000F5990100494A0040F59901002C00004084
-:102FF0008398010000000040F7B10100FC05A241E8
-:103000008350000080162E0683B00100360000FBBE
-:10301000F6A90100FF05A2418350000022000040F4
-:1030200083980100000000FBF6B101000206A241F6
-:10303000835000006200004095980100DC9F004032
-:103040008132010000162D0683B001008016004079
-:10305000459901005C0000FBF6A901000806A241A9
-:103060008350000000000070F9B101000000007101
-:10307000F9B1010000000072F9B101000000007315
-:10308000F9B1010000000074F9B1010054000040E2
-:1030900095980100DC9F0040813201000000007023
-:1030A00095B0010014062270B56F00000000804149
-:1030B00097B001000000804097B00100040000407C
-:1030C00081B200000400004081B200000400004012
-:1030D00081B20000456700A6E0B201000123007044
-:1030E000E19A0100CDEF00A6E2B2010089AB0071C8
-:1030F000E39A0100BA9800A6E4B20100FEDC007277
-:10310000E59A0100321000A6E6B201007654007381
-:10311000E79A0100D2C300A6E8B20100F0E1007412
-:10312000E99A01008016004A44C901000000000726
-:1031300081B001000000004A80D001000000004082
-:10314000F7B101002506A241815000008016004A17
-:1031500044C90100FC162A47E7B501000300004AF4
-:10316000E8E50100000000408DB001005003004080
-:10317000A399010080163D468DE00100000000503B
-:1031800089B00100000000FC40B0010000000041D7
-:10319000A3C101002E06A24189500000000000706A
-:1031A000EBB2010000000071EDB2010000000072FE
-:1031B000EFB2010000000073F1B2010000000074E2
-:1031C000F3B201000000004083B001000F00004195
-:1031D0008088010050030040A2C901004B06A050A6
-:1031E000836C00000D00004098C801000000004FF3
-:1031F000998401005003004CA2C901000000002086
-:1032000086B001000800004098C801000000004F8F
-:10321000998401005003004CA2C901000000002065
-:1032200086A401000200004098C801000000004F81
-:10323000998401005003004CA2C901000000002045
-:1032400086A4010050030040A2C901000000004311
-:1032500040A401000100002088E401000000005F9C
-:1032600041F0010000000044409401000500007599
-:1032700089E401001B00007585F401000000004492
-:10328000849401005506A353836C0000000000766F
-:1032900089B00100000000778984010000000076F9
-:1032A0008BB00100000000208BA40100000000781A
-:1032B0008B840100640600458894000027000041CB
-:1032C00080CE01005A06AA4081320000000000763C
-:1032D00089B001000000007789A40100640600782D
-:1032E00089A400003B00004180CE01005706AA409F
-:1032F000813200000000007689B0010000000077F4
-:1033000089840100000000768BB001000000007885
-:103310008B840100000000458894010000000077C4
-:103320008BB00100000000788B840100640600452A
-:10333000889400000000004484C00100000000796F
-:1033400085C001000000002084C001006B06A3536B
-:10335000836C0000825A00A684C001009979004263
-:1033600084C801007806004081B2000027000041B7
-:1033700080CE01007006AA4081320000D96E00A6FE
-:1033800084C00100A1EB004284C80100780600401F
-:1033900081B200003B00004180CE01007506AA40CA
-:1033A000813200001B8F00A684C00100DCBC0042FB
-:1033B00084C801007806004081B2000062CA00A6FD
-:1033C00084C00100D6C1004284C8010078060040D4
-:1033D00081B2000000000078F3B201000000007725
-:1033E000F1B201001E00007689E4010002000076BF
-:1033F000EFF6010000000044EE96010000000075A9
-:10340000EDB2010000000042EAB2010000000041FC
-:1034100083C001004F00004180CE010037062A40E2
-:103420008132000000000075E1C20100000000765A
-:10343000E3C2010000000077E5C20100000000784F
-:10344000E7C2010000000079E9C201002B068141BA
-:103450008D4000000000804081B201000400004067
-:1034600081B200000400004081B20000040000406E
-:1034700081B200000400004081B20000040000405E
-:1034800081B200000400004081B20000040000404E
-:1034900081B2000000000050FD9301004016004082
-:1034A00045990100DB9F00404931010008000048B8
-:1034B000B2CB01001504004081320100B906224060
-:1034C0008F6C0000DA9F004081320100B906A240F3
-:1034D000976C00005E160040439901007C1620F6B0
-:1034E000E0B101000000004031B301009D06224F11
-:1034F0008F7C000000000051FD9301009F062240D8
-:103500008F7C0000A3060054FD930000A106224218
-:103510008F7C000000000052FD930100A3062241B1
-:103520008F7C000000000053FD930100B70622517C
-:10353000FD7F000038050040813201000C0000488A
-:10354000B2CB01001004004081320100B206A2405B
-:10355000B56F00001E000048B2CB01001004004807
-:1035600096300100000000DA97C001000400004B13
-:10357000B2CB010010040040813201000E0000486F
-:10358000B2CB010020040040813201000C00004851
-:10359000B2CB010000000030B5B3010020040040B0
-:1035A000813201000E000048B2CB0100100400403F
-:1035B00081320100B6062240B56F0000BA06005401
-:1035C000FD93000000000051FD8301001C0000FE7F
-:1035D0007FD90100BA06A6408132000000000055E4
-:1035E000FD9301000000804081B201000400004012
-:1035F00081B200000400004081B2000004000040DD
-:1036000081B200000400004081B2000004000040CC
-:1036100081B20000E79F004081320100C406225CB5
-:103620001F7C0000E39F00881CB00000E99F005C45
-:103630001F00010000002E0548B1010000000040FD
-:10364000E1B1010004002D0348B10100000000F0C9
-:103650003CB001002800001402C801000000000175
-:1036600034B0010000002D0532B001002200000539
-:103670000AC801001000000348C90100000000F85A
-:1036800018B00100000000F804B00100000000F8CC
-:103690000EB001000C0000A40CC80100EA9F00401D
-:1036A000813201000000004023B001000A0722011E
-:1036B0008032000000003C4423E0010000002EA402
-:1036C00080B001000000001048C10100D906A30726
-:1036D000026C0000DA0668011AB0000000006807FA
-:1036E0001AB001000000000D02D00100000000052A
-:1036F000F0B101000000000CF0B101000000000278
-:10370000E0B101000000000D0AC00100EC062240FB
-:10371000036C0000E6062242236C0000000000411A
-:1037200023C001000000004761B10100200000A497
-:1037300062DD01002307284081320000E3060040DB
-:1037400081B200000000001080C0010000000047AE
-:1037500061B101000000004062B10100E806A8402C
-:1037600023300000E39F00881CB0000023070040C6
-:1037700081B200000000001080C00100000000477E
-:1037800061B101000000004062B10100EE06A840F6
-:1037900023300000E39F00881CB0000022000019C5
-:1037A00048C9010000002D1448C101000F0000F2BB
-:1037B0003A880100000000423BE001000E000014C6
-:1037C00002C801000000001D02C00100FA06231A11
-:1037D000025000000000004603C001002307000162
-:1037E00034C000000C002D1D48C10100F00000F2A3
-:1037F000308801000000004231F001000000001498
-:1038000002B001000000001D02C00100000000180D
-:1038100002C001000207221A025000002307000123
-:1038200034C000002200001948C9010002002D1414
-:1038300048C10100000000F614B001000000001DA6
-:1038400014D001000000001814D001000000001E78
-:1038500024B001001200001710C801002307001A4D
-:1038600010C0000000003C4423E00100000000A460
-:1038700086B0010000002E1048C101000F07A312FE
-:103880000E6C0000100760071AB000000000601204
-:103890001AB001000000680D16940100FFFF000B34
-:1038A00016D8010000000008F0B101000000000C73
-:1038B000F0B1010000000002E0B1010000000010C2
-:1038C00086C001000000004661B1010020000043F5
-:1038D00062DD01001707A85C1F1000004007220DE1
-:1038E000145000004007220D245000000000000D7D
-:1038F00010C001001E072242236C00002307004174
-:1039000023C000000000004661B10100400000102B
-:1039100062DD01001F07A85C1F000000E39F008814
-:103920001CB000000000004023B001003F07A20DC2
-:103930000E5000002E0722461F7C000000000046AB
-:103940001F8001003080001042C901002C0722F2C4
-:10395000640600000000004761B101004000001053
-:1039600062DD01002907A84081320000E39F008842
-:103970001CB0000020800003469901000000005F99
-:10398000E191010000002D0648B10100000000F89F
-:1039900018B00100000000F804B0010033071FF068
-:1039A0000E300000D306004C0DC0000000002E5F5A
-:1039B0000F800100D3062307146C000030000010B4
-:1039C00048C9010024000040F199010000000003F3
-:1039D000F0B1010000000000F0B10100000000168D
-:1039E000F0B101002400000000C801000000004701
-:1039F00061B10100200000A462DD01003C07A8467F
-:103A00001F100000D30600030CB00000D306000D09
-:103A100018C000005F07A2441F7C000000000019CE
-:103A20000AB001002200000548C901000A002D1457
-:103A300048C1010002002040E5B10100040020401F
-:103A4000E5B101000D002D1D48C10100090000F382
-:103A5000388801000D002050E7B1010004002D401E
-:103A60003FB00100000000F432B00100040020402B
-:103A7000E1B101002200000548C9010000002D1439
-:103A800048C101000200001D94F401000000004044
-:103A900091B001005207A0FC9040000000000041DE
-:103AA00091C001005007A24195500000000000A401
-:103AB00096B0010004002E0548B101000000004846
-:103AC000F0B101000000004B48B1010000000018F7
-:103AD00048C101000200001894F4010000002D18F4
-:103AE00090B001005C07A0FC904000000000004185
-:103AF00091C001005A07A241955000000000004803
-:103B0000E0B1010010002040E5B1010004002D05E6
-:103B100048B10100000000F880B02D00000000F066
-:103B200016B02D002200000548C92D000000001429
-:103B300048C12D00640743303D072C000000009E63
-:103B400085B02D0000001B413DC32D000400204224
-:103B5000ECB12D000000001E82B0010002002E1DFD
-:103B600082C001000000661882C00100000000420F
-:103B700080C001006E07A0418044000000000041A9
-:103B800081C001001000004092F401000A002E30B4
-:103B900081840100720790409240000000000041C3
-:103BA00093C001000000662093A401000000001DE6
-:103BB00048C1010004002019E8B101000000001E06
-:103BC00016C001007807A01916440000000000414B
-:103BD00017C001000D002F1E32C001007D07A2405A
-:103BE000156C00007C07A01C16400000000000417E
-:103BF00017C00100000063F33894010010000005B5
-:103C000048C9010004002E1E98B001000000601A8F
-:103C100098C001000C002040E1B101008B07224652
-:103C20001F7C0000000000461F8001003080001053
-:103C300042C90100890722F2640600000000004723
-:103C400061B101004000001062DD01008607A8405C
-:103C500081320000E39F00881CB000002080000338
-:103C6000469901000000005FE191010030800010E2
-:103C700044C901001200001AF0C901000000001739
-:103C8000F0B1010010000005E0C901003000001093
-:103C900080C801000000004461B101002000004024
-:103CA00062DD01009107A840813200009B07225C81
-:103CB0001F7C000000003C4423E0010000002D10A8
-:103CC00048C101009B0722F2640600000000004684
-:103CD00061B101004000001062DD01009807A840BA
-:103CE00081320000E39F00881CB00000EB9F005C65
-:103CF0001F00010020002F0548B101000000000B4B
-:103D0000E4B101000000005017F00100A10790F29B
-:103D1000164000000000004117C0010000006620AE
-:103D200017A40100100000142AC801000000001DA3
-:103D30002AC00100000000502BE00100000000F24A
-:103D40002A9401003080001042C90100AC0722F221
-:103D5000640600000000004461B101004000001052
-:103D600062DD0100A907A84081320000E39F0088BE
-:103D70001CB000000080001710DC0100C9072240C1
-:103D8000156C0000B407A2441F7C00000000004432
-:103D90001F900100B307229F136C000002000088EF
-:103DA0001CCC0100E49F004081B2000000000041F3
-:103DB0003FC30100E69F004081320100B707A241E6
-:103DC000877C00000000001E3EC00100C9072240A1
-:103DD000156C0000BA07201E146C00000000000AD9
-:103DE0003CB00100E59F001E24300100BF072208FF
-:103DF0002E3000000000005211C001000000001A27
-:103E000010C001002307004017B00000E49F0088A5
-:103E10001CB00000E59F004081320100BC07A208F1
-:103E20002E300000808000A604B001000600004093
-:103E300087980100008000034499010004002204D7
-:103E4000E0310000E89F001F8C30010000000040BE
-:103E50000FB00100E29F005C1F9000000080000393
-:103E60004499010004002204E0310000E69F004074
-:103E700081320100CE07A241877C0000CF07001EDF
-:103E80003EC000000000001F8CB001000000004098
-:103E900005B00100E89F00400F300100E29F005C88
-:103EA0001F9000000400004081B2000004000040A8
-:103EB00081B200000400004081B200000400004014
-:103EC00081B200000400004081B200000400004004
-:103ED00081B200000400004081B2000004000040F4
-:103EE00081B200000400004081B2000004000040E4
-:103EF00081B200000400004081B2000004000040D4
-:103F000081B200000400004081B2000004000040C3
-:103F100081B200000400004081B2000004000040B3
-:103F200081B200000400004081B2000004000040A3
-:103F300081B200000400004081B200000400004093
-:103F400081B200000400004081B200000400004083
-:103F500081B200000400004081B200000400004073
-:103F600081B200000400004081B200000400004063
-:103F700081B200000400004081B200000400004053
-:103F800081B200000400004081B200000400004043
-:103F900081B200000400004081B200000400004033
-:103FA00081B200000400004081B200000400004023
-:103FB00081B200000400004081B200000400004013
-:103FC00081B200000400004081B20000F70700BC8D
-:103FD00080B200000380004081B2000003800040F6
-:103FE00081B200000380004081B2000003800040E5
-:103FF00081B200000380004081B2000003800040D5
-:1040000081B200000380004081B2000003800040C4
-:1040100081B200003180004081B200003480004055
-:1040200081B200003580004081B2000004000040F1
-:1040300081B200001B80818080320000E787A240AF
-:10404000916F00000000004C90B301005C952EA21F
-:1040500080B00100FF000080F489010090952AC81B
-:10406000E5B10100000000A1F0B101000000004036
-:10407000F0B10100000000A4F0B10100000000D088
-:10408000F0B10100000000D1F0B10100000000D249
-:10409000F0B101000000004CF0B10100000000D4BC
-:1040A000F0B10100000000D3F0B10100000000EE0B
-:1040B000F0B101000000004EF0B10100000000402E
-:1040C00044B1010018801181983000000000514077
-:1040D00081B201001A801182983000000000524025
-:1040E00081B20100E7870048FD930000B60300405D
-:1040F000A19901002380A242FD7F00002080008062
-:1041000080320000228011818230000022805140E4
-:1041100081B2000022801182823000002280524051
-:1041200081B200002C800048FD93000027800080B1
-:10413000803200002680A253077C0000000051530B
-:10414000079001002A800052079000002980A252A7
-:10415000077C00000000525207900100000000534D
-:104160000790010000000048FD9301000000004698
-:10417000F39301005C952EA252B30100FF00008072
-:10418000F48901000000004CE4B10100000000A926
-:1041900045B101003080004C80B200000000454075
-:1041A00081B201000000554081B20100C682054085
-:1041B00049B10000C682054049B100000000054039
-:1041C00049B101004C010040813201000000004B68
-:1041D000DEB2010000000040FD9301000000004835
-:1041E000FD830100020000409B9B0100000000A530
-:1041F0009CB30100480300408132010058952044DF
-:10420000E0B101000494004043990100000000F275
-:1042100024B10100000C00EE968801000000004A65
-:1042200097F001004480A243976C00000000004218
-:10423000FD93010000C000A636B10100D01400407B
-:104240004799010005000040F59901000038004041
-:10425000F599010000060040F599010003000040B7
-:10426000F599010005100040F59901000209004090
-:10427000F599010004000040F59901006003004039
-:10428000813201008803004081320100A003004018
-:1042900081320100B982004081320100B1820040C8
-:1042A0008132010060952040E1B10100709520400D
-:1042B000E1B1010000000049DD9101000000004073
-:1042C00091B30100000000407BB30100A0980040C2
-:1042D000813201000000004085B301005C95204060
-:1042E000E1B101003C8200408132010090060040B3
-:1042F000813201000000005F2F810100A281004097
-:1043000081320100A5980040813201000000454043
-:1043100081B201000000554081B2010001830040DC
-:1043200081B200000400004081B20000040000409F
-:1043300081B200000400004081B20000040000408F
-:1043400081B200000400004081B20000040000407F
-:1043500081B200002800004047990100C682004158
-:10436000E1C1000078180040499901001905225464
-:10437000817C00006C80424081320000008200B4E9
-:1043800069DF010000001A449393010028000040F7
-:10439000479901001805004081B200000400004068
-:1043A00081B200000400004081B20000040000401F
-:1043B00081B200000400004081B20000040000400F
-:1043C00081B200000400004081B2000004000040FF
-:1043D00081B2000055820040813201007D80224080
-:1043E000976C00007A804240813200000000004F4C
-:1043F00069930100438100586993000054160040FE
-:1044000047990100000000FEF4B101008005004062
-:1044100081B2000080804240813200000000004EE6
-:1044200069930100438100586993000040160040E1
-:10443000459901004005004049310100F615004052
-:10444000439901005C1600404599010000006EFA96
-:104450008EB00100C105004081B2000004000040A0
-:1044600081B200000400004081B20000040000405E
-:1044700081B200000400004081B20000040000404E
-:1044800081B200000400004081B20000040000403E
-:1044900081B200009680004081B200005582004049
-:1044A0008132010096802240976C00009380424048
-:1044B000813200000000004F6993010043810058E1
-:1044C0006993000038050040813201001E00004859
-:1044D000B2CB0100D005004081B2000004000040D2
-:1044E00081B200000400004081B2000004000040DE
-:1044F00081B200000400004081B2000004000040CE
-:1045000081B200000400004081B2000004000040BD
-:1045100081B200008302004081B20000B802004076
-:1045200081B20000D49F004081B20000D59F0040BE
-:1045300081B20000D69F004081B20000D79F0040AA
-:1045400081B200007201004181C000005501514953
-:10455000FD9300005501524AFD9300005501554955
-:10456000FD8300005501564AFD83000050019181F2
-:10457000803000005501454081B200005001918219
-:10458000803000005501464081B20000000000402C
-:1045900089B00100000000F880B00100000000F0C8
-:1045A00016B001002200000548C9010000000014F7
-:1045B00048C10100B48043303D0700000000009E68
-:1045C00085B0010000001B413DC3010004002042F2
-:1045D000ECB101000000A240916F0100000000401A
-:1045E00049B10100AE0300CBA3C9010000000020C7
-:1045F00046B10100C480A240E16D0000000000D27D
-:10460000F1B10100000000D3F1B10100000000424F
-:10461000F0B101000000004561B101002000002060
-:1046200062DD01000000A8D0E1B10000C1800040BF
-:1046300081B20000000000A898B001000480004092
-:104640008BB30000B1030040A1990100C980A242D0
-:10465000976F000000000045A1C1010000000000AC
-:1046600080B001000000A2048094000080153F4249
-:1046700097E301000000004049B101000000600321
-:10468000029401000000004007B00100040000CBCC
-:1046900099CB0100000000CCF3830100D380A2423B
-:1046A000976F0000000000CBF3930100AE0300CB36
-:1046B000A3C901000000002044B101000000004433
-:1046C000F1B1010000000000F0B1010000000004A1
-:1046D000F0B10100000000A1E0B1010005000040C0
-:1046E000619901002000002062DD0100DA80A8400D
-:1046F00081320000F9020020423101000000A24195
-:10470000056C0100000080CBDB9101000000194125
-:104710008BB301006000004061990100E080A8B106
-:104720008C3300006000004061990100E280A8B174
-:1047300094330000E88014C681320000180000C6DF
-:1047400083F401002283224F83040000C4800040D0
-:1047500081B20000FF0100C681880100000000C690
-:1047600097A30100C4801F5C975300006D821EC692
-:1047700081320000F2802248FD7F0000F280225842
-:10478000816C0000F2802248816C0000C000004073
-:1047900084CC0100F2809F428032000022830040DE
-:1047A00081B20000C480A2C68F060000C4801EC66D
-:1047B0008132000000002F4381F00100F6800040AC
-:1047C00010C900004481004081B200007E81004099
-:1047D00081B20000398200CA63B3000075810040D5
-:1047E00081B200005581004D83B000006081004E11
-:1047F00061B100004C81004085B000005581004C43
-:1048000083B000002E81004085B00000F881004098
-:1048100049B1000086810040C1B10000F481004030
-:1048200081B200004C81004085B00000F0030040E0
-:1048300049B10000228300CA9BB300009081004070
-:10484000C1B1000094810040C1B100009B810040D3
-:10485000C1B100009C810040C1B100009D810040B9
-:10486000C1B100009E810040C1B100009F810040A5
-:1048700081B000009F81004181B000002D82004086
-:1048800081B20000AE8200BBABB300003A8200CA26
-:10489000CFB30000C803004049B10000E803004066
-:1048A00081B20000C480004081B200002283004039
-:1048B00081B20000E003004081B20000228300CA00
-:1048C00077B300005681004D83B000005E81004E3A
-:1048D00061B100004C8100BB85B000005681004CE6
-:1048E00083B000004C8100BB85B000002E8100BB6E
-:1048F00085B000002081004081B20000228300CA00
-:104900004DB300007005004049B10000A005004013
-:1049100049B10000268122428F6F00002881224188
-:104920008F6F00002A811ECA813200002C811FCAAD
-:1049300081320000000000CAC9B101002283004298
-:104940008FB30000000000CACDB1010022830041F6
-:104950008FB30000000000CACFB1010022830040E5
-:104960008FB30000008100A6C6B101002283004081
-:1049700081B20000008000A6C6B101002283004081
-:104980008FB30000781800404999010010002F9C57
-:1049900089B00100468100403933010018002F9B87
-:1049A00089B00100468100403733010000002F9A92
-:1049B00089B00100468100403533010008002F997D
-:1049C00089B001004681004033330100008000AE11
-:1049D00047C90100C480A240E16D00008000004092
-:1049E000F1990100000000CAF1B10100000000428D
-:1049F000F0B1010040180040E199010000000045BD
-:104A000061B10100200000AE63DD0100418128405A
-:104A1000813200003E81004081B20000418142406D
-:104A2000813200000000005C6993010022831A4477
-:104A3000939300004481424081320000438100583A
-:104A40006993000000000044F0D101000000A44080
-:104A500081B200004B81A240E16D000000000044E3
-:104A600045D1010000008040E1B10100000080411B
-:104A7000E1D101004C81375C61310000000000424F
-:104A800062B1010052812840813200004D81225CD8
-:104A9000777D0000C480174081B200004D81004046
-:104AA00081B20000000000CA63B101005281A84039
-:104AB000813200002283174081B2000057810040FC
-:104AC00081B00000578100BB81B0000000000041B0
-:104AD00060B10100C480A241767D0000000000406A
-:104AE00062B101005981A84081320000000000CA73
-:104AF00063B1010022832840813200005B810040C5
-:104B000081B200005095004047990100618100BBCF
-:104B100087B0000050952F4087B00100658122408A
-:104B2000957F0000C480A240E16D0000C480224057
-:104B3000956F0000228360409583000002002DF0F5
-:104B400084B00100C4802240856C0000C480A24073
-:104B5000857C0000C480A24E777D000069813640CC
-:104B6000813200000000004262B101006A81A84069
-:104B7000813200000000004362B101006C81A84056
-:104B800081320000000000CA63B101006E81A840BC
-:104B9000813200000000164081B201007481224180
-:104BA00043510000000800CA95CB01006881004114
-:104BB00085C0000022830040E1B100007781A2425D
-:104BC000676F00000000004167B301007781424039
-:104BD000813200000000004065B301000000004089
-:104BE0009383010000001ACA6997010022832640BE
-:104BF000813200007C8142408132000022831A44CD
-:104C000093930000C4802043956F0000228380CAE4
-:104C10006733000022832240656F0000C480A248F1
-:104C2000DB7D00002283006FDB91000085000040E7
-:104C30008132010035802240803200002283004012
-:104C400081B2000000000058959301000000005F51
-:104C5000959301008C81A244216F00000000005F49
-:104C6000958301000000005E95930100000000574D
-:104C700095930100000000CAC3B101008F81225B3F
-:104C8000957F00000000004BFD930100228300404F
-:104C900081B200001BFD00CA959B01000D0100CAF6
-:104CA000C53101000000005F95830100228300CA26
-:104CB000C5B10000DF6F00CA959B010000000055E0
-:104CC00095930100000000CAC7B101002283225F52
-:104CD000957F00000D010040813201000000005F5F
-:104CE00095830100228300CAC7B10000228300CA55
-:104CF000C9B10000228300CACBB10000228300CAE0
-:104D0000CDB10000228300CACFB1000000002E42C6
-:104D100081E001009814004048C90100228300CAC4
-:104D2000E1B100000000004009B10100200000A630
-:104D300082B00100A481A25E0B7D000000800041D2
-:104D400008990100A681A25E0B7D0000208000A6CC
-:104D500008B10100A8819F8582300000000000306A
-:104D600083840100DD812230836C0000A781A24F83
-:104D70000B7D00000000004121B30100028000A66D
-:104D800082B0010028820040813201001000004101
-:104D900084E40100038000A682B001002882004064
-:104DA00081320100F0FF00418688010000000043CD
-:104DB000849401000F0000A686B0010010C40043D7
-:104DC00086980100BD81A243846C0000000000436E
-:104DD00021B30100200000A682B001001C000041A8
-:104DE00082DC0100BA81A25E0B7D0000040000415C
-:104DF00008990100CF81004081B20000410100A666
-:104E000086B00100500C004386980100C281A24385
-:104E1000846C00000000004121B30100CF810040FC
-:104E200081B20000410100A686B00100600C004381
-:104E300086980100CF81A243846C000000000042EC
-:104E400021B30100188000A682B001002882004032
-:104E500081320100FFFF004182880100007700419C
-:104E6000828C010001020041829801002000004173
-:104E700082DC01001800004182DC0100CD81A25ECD
-:104E80000B7D00000000004108B10100200000A6D9
-:104E900082B00100D081A25E0B7D00004013004172
-:104EA00008990100D8812243216F0000200000A64C
-:104EB00082B001001200004182DC0100D581A25EB7
-:104EC0000B7D00000004004108990100F3810040BF
-:104ED00081B20000200000A682B00100190000414C
-:104EE00082DC0100DA81A25E0B7D000000A000419F
-:104EF00008990100F381004081B2000000000044E5
-:104F000021B301000000004083B001000000005FF9
-:104F1000839001000000005E8390010000000057B4
-:104F20008390010000000041C2B101000C0100406B
-:104F3000813201000000005F838001000000004119
-:104F4000C2B101000C01004081320100200000A626
-:104F500082B001000400004182DC01002000004119
-:104F600008990100200000A682B001001100004154
-:104F700082DC0100EC81A25E0B7D0000010000419B
-:104F800008990100200000A682B00100EF81A25E16
-:104F90000B7D00004013004108990100010000A6AC
-:104FA00082B00100400000412E99010000008040C5
-:104FB00081B20100200000A680B00100000000CAFC
-:104FC00081940100F681A25E0B7D000022830040E7
-:104FD00008B10000C8142EBB85B00100F981A25EA3
-:104FE0000B7D00000000004087B0010008822243D2
-:104FF000216F000017822244216F0000118000A65B
-:1050000082B0010028820040813201001F82224AC2
-:10501000837C000000000040879001000382224D45
-:10502000837C000000000041879001000582224F30
-:10503000837C000000000043879001000782224E1D
-:10504000837C000000000042879001001F82004026
-:1050500081B20000018000A682B0010028820040D9
-:1050600081320100018000A682B001002882004048
-:10507000813201001F822242837C00000000004038
-:10508000879001001C8000A682B0010028820040A9
-:105090008132010012822245837C00000000004121
-:1050A0008790010014822244837C000000000043AA
-:1050B0008790010016822243837C0000000000429A
-:1050C000879001001F82004081B20000018000A68D
-:1050D00082B001002882004081320100018000A6D8
-:1050E00082B0010028820040813201001F822242EA
-:1050F000837C000000000040879001000000004316
-:10510000879001000000004187900100008000A608
-:1051100082B0010028820040813201002382224BAC
-:10512000837C0000000000408780010000000043F5
-:10513000E0B10100FF7F00A2A08B0100000000444D
-:10514000A5B30100B88000CAA73301004181004027
-:1051500081B200002000004182DC01002982A25EB1
-:105160000B7D00000000004108B101002B829F85EB
-:10517000823000000000804081B20100308214F7CC
-:10518000813000003082A249FD7F0000000000480D
-:10519000FD930100338215F8811400003382A24A86
-:1051A000FD7F000000000048FD9301003582A2C889
-:1051B000813200004000004080DC0100001000400F
-:1051C00080DC010000000040EFB301003782424064
-:1051D000F13300004381004068970000228300BB48
-:1051E0006BB30000228300BBB1B3000022830040F8
-:1051F00081B20000000300408198010000000040DF
-:1052000018B101008000004083980100001900409F
-:10521000459901000000424081B20100000043FFB7
-:10522000F1B10100000000FFF1B1010000000041F8
-:1052300081C001000000004018B101004082A2417D
-:1052400083500000001600404599010000190040FD
-:10525000439901000000004743C1010000000040E5
-:1052600083B00100000000F380B001000000005B8B
-:1052700081D001000000004180D00100000000400A
-:10528000F6B101000000005B43C1010000000041D5
-:1052900083C001004A82A254836C000000000040D9
-:1052A000F7B101000000004183C001005182A20655
-:1052B000836C00000000804081B2010000160040B5
-:1052C0004399010080162E0683B00100360000FBD2
-:1052D000F6A901005782A24183500000220000403D
-:1052E00083980100000000FBF6B101005A82A24140
-:1052F000835000006200004095980100DC9F004050
-:105300008132010000162D0683B001008016004096
-:10531000459901005C0000FBF6A901006082A241F2
-:105320008350000000000070F9B10100000000711E
-:10533000F9B1010000000072F9B101000000007332
-:10534000F9B1010000000074F9B1010054000040FF
-:1053500095980100DC9F0040813201000000007040
-:1053600095B001006C822270B56F00000000804192
-:1053700097B001000000804097B00100C480A242B5
-:10538000976F0000B6030040A199010000002F4272
-:1053900099B3010078822244816C00008082224807
-:1053A000816C00007A82224C816C00008582225040
-:1053B000816C000086822254816C00008882225811
-:1053C000816C00008D82225C816C000050010040E5
-:1053D00081B20000000000BC09B00100228300CAB5
-:1053E00001B000000000004003B0010000000041D7
-:1053F000F38301007E82A242056C000000000041A0
-:1054000005B00100228322CA07140000228300464F
-:10541000F393000022832043956F0000228380CA0B
-:10542000053000002283220180300000C480A248A1
-:10543000DB7D0000228300CBDB910000570100BC24
-:10544000ABB30000000000BCB1B30100228300CA6E
-:10545000CFB30000FF0000CA818801002283A24070
-:10546000747D000060002040609901008A82A8B12C
-:10547000823000008982004081B20000228300CA8D
-:1054800079B300000000004E81B00100000000432D
-:10549000CB8301000000454081B201009082A2410F
-:1054A000815000000000454081B2010000004540ED
-:1054B00081B201009B829182823000000000008A4C
-:1054C00080B00100AE9F004080CE01009982A640CE
-:1054D000813200009B82564081B20000B60300403A
-:1054E000A19901000000005307900100B60300409D
-:1054F000A19901000000005207900100D89F0041CF
-:105500008BB300000000004E81B00100000000429B
-:10551000CD8301000000464081B20100A082A2417B
-:10552000815000000000464081B20100000046406A
-:1055300081B20100AB8291818230000000000089BD
-:1055400080B00100AE9F004080CE0100A982A6403D
-:1055500081320000AB82554081B20000B6030040AA
-:10556000A19901000000005207900100B60300401D
-:10557000A19901000000005307900100D89F00414D
-:105580008BB30000B1030040A1990100C4142F4067
-:1055900099B301005701004049B10000A0942E4387
-:1055A00097B0010000000040F1B10100B282A241B9
-:1055B0009750000050952040E1B10100AC942E437B
-:1055C00097B0010000000040F1B10100B682A24195
-:1055D000975000000000804081B20100AE030040FF
-:1055E000A39901000000004081B001006015004057
-:1055F000859801000800004040E4010000000059C7
-:10560000419401000000005041E001000000004210
-:10561000409401000000005741900100000000414B
-:1056200081C001000000A342816C01000000004124
-:10563000A3C10100BC82A042816C0000BC8200506A
-:1056400085C000000183A241017D0000CF82225865
-:10565000737D00007800004061990100C782A8B105
-:105660009C300000300038459DE001000400A25F3E
-:105670001F7C00000400225E1F7C000000C000A60A
-:105680001EA401000100000E10C90000CF8233C427
-:1056900081300000D282A1AD9D200000C68213405F
-:1056A00081B200000000134E5A83010030003845DB
-:1056B0009DE001000400A25F1F7C00000400A25EC8
-:1056C0001F7C00000400A240056C0000DD8222ABBC
-:1056D00080040000DB82A240017D0000DD82225FA9
-:1056E000577D00001288005F1FB40000DD82225E3B
-:1056F000577D00008088005F1FB40000E3822254C1
-:10570000737D00007400004061990100DD82A8B142
-:10571000003000000000005F1FB40100F784A25FAA
-:10572000017C00009587004081B20000E582A25F05
-:1057300059270000E782A25C737D0000EE82A25E22
-:10574000737D0000FA82225C737D0000FB8237408B
-:10575000813200007C00004061990100E882A8B11C
-:10576000363000007C00004061990100EA82A8B157
-:10577000003000001F000000028801003785175F1D
-:105780001FB40000FB823440813200007E000040E4
-:1057900061990100EF82A8B112300000F782522116
-:1057A00013040000000014412FC301000000005F3B
-:1057B0001FB40100FF3F0009008C010000000043FE
-:1057C00001F001004F83003413840000FF3F1409EF
-:1057D000008C01000000005F1FB40100C48300437F
-:1057E00001F000000000004081B20100FB82334064
-:1057F000813200000400A24E5A7F00000700004ED4
-:1058000080E401000039004080C801000400A2408B
-:10581000066C0000C682134E5A930000E787A24828
-:10582000FD7F0000058302E681320000068383E5E8
-:10583000813200008E82004297B300009E820042B7
-:1058400097B3000009832246F37F00000C83A24136
-:10585000F37F0000C6800042973301000C8322448E
-:10586000F37F00000C83A241F37F0000C680006F2D
-:10587000973301000400A2AC803200001183225A49
-:10588000737D00007A000040619901000E83A8B189
-:105890007E310000010000CF11C900001783A24033
-:1058A000937F000017832244937F0000138342A557
-:1058B000803000001683A240937F000038831A4096
-:1058C0009393000000001A4081B20100DF80A240E3
-:1058D000737D0000E2872244216F0000D9872240B7
-:1058E000657D00000005A25B737D00000400A249F5
-:1058F000337D000021832248337D0000FF010099A1
-:1059000080D801000000005081E00100A8982F40DD
-:1059100033B1010000000040E0C1010001830040FC
-:1059200081B20000C68200408BB300000400A25E7A
-:105930001F7C00000400225F1F7C00000000005E4E
-:105940001F900100C682005F1F8000000400A25E5D
-:105950001F7C00000400225F1F7C00000000005E2E
-:105960001F9001000000005F1F8001000000005830
-:1059700061B101000000004E62B10100C682284002
-:10598000813200002C83004081B200000000004002
-:105990000FB001000400A25E1F7C00000400225F23
-:1059A0001F7C0000328333401F3000000400A24EF1
-:1059B0005A7F00000700004E80E4010000390040DB
-:1059C00080C801000400A240066C0000C682134E8D
-:1059D0005A9300003A83A0CE815000004D83A0CDA1
-:1059E000816C0000000000A59CB30100000000B124
-:1059F00081B001004D8322B58114000080152F4035
-:105A000049B101003E83424081320000000060B491
-:105A100065970100D0152E4069B3010000001A44BB
-:105A20009383010004002240E16D00001A0000A2EF
-:105A300080DC010000000044F1B10100000000B171
-:105A4000F1B10100000000B5F1B101000500004016
-:105A5000619901008000004062DD01004883A8A137
-:105A6000E0310000178300889EB300001783A24135
-:105A7000676F00001783006FDB9100004D83424089
-:105A80008132000017831A40938300000004004015
-:105A900089980100099900008A3001000400A25A87
-:105AA000017C000004002240016C00000099000904
-:105AB00046C901003F0000F30C8801005C83A64248
-:105AC000136000009B9600950330010057836140EE
-:105AD0008132000075000040619901005883A8B12F
-:105AE0000C300000A9967110943001005D830058BD
-:105AF0001F9000008D9600950330010023830088DD
-:105B00001CB0000000002D0348B1010004002DF07E
-:105B10002EB0010080040017968801000400A64002
-:105B2000813200004AC1001796D801000400A64047
-:105B300081320000EE070040979801006883234BF4
-:105B4000E46D00006883224BFD7F000000000040F0
-:105B50001F90010022002F4081B201006B83831748
-:105B60008032000026000040479901006D838517B0
-:105B7000803200000000004847C1010073832255B5
-:105B80002F7C00000000004243D101000F0000FA0A
-:105B9000968801000000004297E0010000000042EA
-:105BA00097D001007483004B44C10000120000A292
-:105BB00044C90100280000F602CC01000A0000A13F
-:105BC00042C90100000000F816B00100000028F0F2
-:105BD00010B00100000000F01AB00100000000A2A7
-:105BE0002AB00100C0283C460DE0010000002D4411
-:105BF00095B001008083A2F80E300000908322410E
-:105C00009550000000002D5049C101007C830040E8
-:105C100081B200007D83A2F8166C00007D83A2F89B
-:105C2000106C00007D83A2F01A6C00008E83225855
-:105C30001F7C000000993F4213F0010085836540FE
-:105C4000813200008983A2F3740600000000000680
-:105C5000E69501008E83754081B2000000000006C9
-:105C600096B001003F0075F30C880100000000555C
-:105C700061B101000000004B62B101008C83A840BB
-:105C8000813200008E836740813200009683774125
-:105C90002DC30000948322581F7C00000000005593
-:105CA00061B101000000000662B101009283A840CA
-:105CB000813200009483674081320000D5837741B0
-:105CC0002DC30000030000071AF401001895000717
-:105CD00016300100A8832241816C00009C8322427F
-:105CE000816C0000238300881CB00000A783225F22
-:105CF0000F7C00004E96005F01100100A28322403D
-:105D0000956C00000480000342C90100000000F20D
-:105D100002B00100A595005295300100AC95004BF2
-:105D200002B000000000005F0F800100010400408D
-:105D300089980100099900008A300100B496000991
-:105D400096300100F08700400FB00000B783A25AE0
-:105D50001F7C00000400A25A1F7C000000B5000D4B
-:105D600042C901000400220BE67D000000B7000DCF
-:105D700042C901000400220BE67D0000709400403F
-:105D800081320100B7832220856C0000B2839C0F12
-:105D900080320000238300881CB000008D95005CD9
-:105DA0001F000100C8970042613101002383008871
-:105DB0001CB00000900400079630010000002D0583
-:105DC00048B101000400A24BE17D00000400A25C88
-:105DD0001F7C000000002D0548B10100BB8382F04C
-:105DE000183000006C8900458FB00000282000A604
-:105DF00096B00100C18322179604000034040040CD
-:105E000089980100099900008A3001005B97004BD6
-:105E1000953001006C89004B8FB000005D96000347
-:105E200048310100AF930040813001006C8900408F
-:105E300081B20000000000400FB0010000040040EB
-:105E400089980100099900008A300100040022406D
-:105E5000016C000000002E1048B1010000006850E5
-:105E600003B0010000000003F0B101004000000099
-:105E7000E0C9010000002E5049C10100000000509F
-:105E8000F1B1010000000003F0B101000000004288
-:105E900061B101002000001062DD0100D083A84044
-:105EA000813200001000001062C90100D283A800F6
-:105EB000E0310000238300881CB0000000002D03A7
-:105EC00048B10100000000400FB00100000000F8E0
-:105ED0002EB00100000000F202B0010000000040FE
-:105EE00017B00100004100A696B00100EE072E4752
-:105EF00097900100E883221796040000E683224B66
-:105F0000FD7F0000E68323A2026C0000A5950052ED
-:105F10009530010004002241975000000C002D0034
-:105F200012B00100000000F000B001000000005CB1
-:105F300001800100AC95004B02B000000000000998
-:105F400000B001000000005003B001000584005CB7
-:105F500017900000FA8322432F7C000000000045C8
-:105F60001F900100F383225F2F7C000000002E10A1
-:105F700048B1010000000058F1B101001000000319
-:105F8000F0C9010010000000E0C90100EF83624287
-:105F9000613100000000001062B10100F083A840F0
-:105FA00081320000238372881CB0000020002D0382
-:105FB00048B10100FF0F00F680880100F783A2A618
-:105FC000816C0000FA8300F23AB00000F484A24B26
-:105FD000FD7F0000C9940040813201000688004026
-:105FE00081B200000584224A2F7C000005842248EB
-:105FF0002F7C00000A002D0348B101003F0000F291
-:10600000868801001F0000438488010005000043CA
-:1060100080F4010098943D4281E001000584A24291
-:10602000E07D0000F484A24BFD7F0000C994004095
-:10603000813201000688004081B200000204004065
-:1060400089980100099900008A300100078469409D
-:1060500081320000000000A309B001000000794176
-:1060600047C301000400A0A1096C00000E8422A116
-:10607000096C0000278300881CB000000A8400031C
-:1060800048B100004884A392036C00002B980040A4
-:10609000953001000000004143C3010000000016DC
-:1060A00080B2010006882708803200001584225C37
-:1060B000177C0000168400002AB0000012000000C7
-:1060C0002AC801000200000880C801001A84A24307
-:1060D0002F7C00005E970040813201003684005E14
-:1060E00017900000040000018CCC01005E97004C6A
-:1060F0000330010000002E4602B001001000001025
-:1061000048C901000C000001F0CD01002C00004046
-:10611000F0C9010000000016F0B1010010000015E8
-:10612000E0C901000000004361B10100A00000A42B
-:1061300062DD01002384A854171000003684005E3D
-:1061400017900000120000002AC801003584224385
-:106150002F7C0000040000018CCC01000000004CEA
-:1061600003B001007F9700436131010000002E461B
-:1061700002B001001000001048C901000C0000012D
-:10618000F0CD01000C000009F0C90100000000186A
-:10619000F0B1010010000015E0C90100000000434B
-:1061A00061B10100A00000A462DD01003684285422
-:1061B000171000003284004081B200007F97004336
-:1061C00061310100388422502F7C0000000000560D
-:1061D0001790010007000017988801003B84A24136
-:1061E000996C00000000005517900100000000436A
-:1061F00061B101004000001062DD01003C84A84054
-:1062000081320000238300881CB0000066970040A4
-:1062100081320100438422432F7C0000168000035A
-:1062200044C901000000001DE4B101000097005EB8
-:10623000051001004684A25F2F7C000086930001B8
-:1062400038430100C99400408132010006880040B3
-:1062500081B200004A84A24BFD7F0000F18400411E
-:1062600043C300000000004027B0010000000040D0
-:106270002DB001000000004011B001004D84350137
-:10628000863000006D00004061990100568428B1FD
-:10629000303000004E84224D757D00000000001655
-:1062A00080B20100DD84A740116C000000000041B5
-:1062B00043C301000400A240276C0000F0840040AA
-:1062C00081B200006D000040619901005684A8B1C0
-:1062D000123000000000001680B201006084A74068
-:1062E000116C00000000004143C3010000000009E0
-:1062F00010B00100000000182CB00100DE070043C0
-:1063000080CE01004E84AA408132000065840040A6
-:1063100081B2000040003E4327E001000000000978
-:10632000F0B1010000000018E0B1010000000041E0
-:1063300027C001004E84A30B8750000000001540C9
-:106340001BB001000000004023B001000400A203C4
-:10635000486D0000120000002AC8010040002D40D6
-:1063600039B001006F84A240276C000022000008B1
-:1063700012C801000400A216306C0000DE070040C5
-:10638000259801007284004081B20000000000F8EE
-:1063900012B00100000000F030B001000000000B5E
-:1063A00025B001000000001032B0010014002001EF
-:1063B000E0B10100EE070040379801007784230127
-:1063C000366C00000000000136B00100828482417A
-:1063D000234000002080001042C901007E8422403A
-:1063E000E36D00000000004361B1010040000010B7
-:1063F00062DD01007B84A840813200002383008895
-:106400001CB00000F3940043233001000000001092
-:1064100032B001000000004123B001000000000381
-:1064200048B101000080001944C90100938422454D
-:106430001F7C00000400A241236C00000400A20B9A
-:10644000256C00000000004CF1B1010000000009C3
-:10645000F0B1010000000018F0B10100000000439D
-:1064600061B101002000001962DD01008A84A815D5
-:10647000E03100000000005003D001000000005097
-:1064800033C001000000004C25D001000C002D4C51
-:1064900013C001000000005037D001000000005080
-:1064A0002BC00100778400451F8000009584A31253
-:1064B000366C00009684681B28B00000000068124B
-:1064C00028B0010000000009F0B101000000001830
-:1064D000F0B101000000004361B10100200000198B
-:1064E00062DD01009984A815E0310000C184221406
-:1064F000025000000000005033C0010000000014F2
-:1065000024D001000C002D1412C00100B984A21483
-:1065100036500000A984225C1F7C000030800010EF
-:1065200042C90100A7842240E36D00000000004240
-:1065300061B101004000001062DD0100A484A840A8
-:1065400081320000238300881CB00000000000039B
-:1065500048B101000C002D5C1F800100100000F00C
-:106560002AC801000000005C2B80010004002250BA
-:106570002B6C0000F007004037980100AF84230126
-:10658000366C00000000000136B00100BA84221B06
-:10659000026C00003000001048C9010000002E5CB1
-:1065A0001F90010000000050F1B101000000000345
-:1065B000F0B10100FF070015E08D0100000000426E
-:1065C00061B10100A00000A462DD0100B684A84012
-:1065D00081320000BA84000348B1000000000014BA
-:1065E0002AC001007784A240256C00000000004111
-:1065F00039C0010004002013386C000040003D4306
-:1066000039E001000000000B25B00100000000F897
-:1066100012B00100778400F030B000000400A25CEA
-:106620001F7C00000080001942C90100C88422407C
-:10663000E36D00000000004361B10100400000195B
-:1066400062DD0100C584A8408132000023830088F8
-:106650001CB00000F39400402B30010018002E0302
-:1066600048B10100CC8422502F7C0000000000566D
-:10667000179001000700001798880100CF84A241FD
-:10668000996C00000000005517900100D28422434D
-:106690002F7C000000000054179001001600201D00
-:1066A000E4B10100D484A340276C0000D684605F6D
-:1066B000179000000084000B16DC0100000060133E
-:1066C000169401000097005E051001000400A2402E
-:1066D0000F6C00000688A25F2F7C0000148000036E
-:1066E00042C90100000000F202B0010086930001DF
-:1066F000384301000688004081B200000400A20374
-:10670000486D00000400224D757D0000000000402F
-:1067100083B001000000004D61B1010000000016CF
-:1067200080B2010004002740116C00000000001638
-:1067300062B10100E384A84081320000000000083B
-:1067400062B10100E584A84081320000F084221388
-:10675000826C000040003D4383E00100000000F82F
-:1067600010B00100000000F02CB001000000001685
-:1067700062B10100EB84A8408132000000000008F3
-:1067800062B10100ED84A84081320000E78400413D
-:1067900083C000000000154081B20100008200A605
-:1067A00004B00100A0980040479901003005004165
-:1067B00089300100A595005295300100AC95004B41
-:1067C00002B00000068800400FB000000000005F2B
-:1067D00001800100100000000EF4010004002640BA
-:1067E000813200003F0000000088010005040040E5
-:1067F00089980100099900008A3001000300000710
-:106800001AF401001895000716300100088522418E
-:10681000816C000003852242816C00002383008884
-:106820001CB000000785225F0F7C00000000005FA5
-:106830000F800100060400408998010009990000BA
-:106840008A300100F08700400FB000001785A25A7F
-:106850001F7C00000400A25A1F7C000000B5000D40
-:1068600042C901000400220BE67D000000B7000DC4
-:1068700042C901000400220BE67D00007094004034
-:106880008132010017852220856C000012859C0F43
-:1068900080320000238300881CB000008D95005CCE
-:1068A0001F000100C8970042613101002383008866
-:1068B0001CB00000900400079630010000002D0578
-:1068C00048B101000400A24BE17D000000002D054D
-:1068D00048B10100000000F018B001001C85223A08
-:1068E000016C0000000000008EB001006C890040C7
-:1068F00001B000000000004081B201002E002D0513
-:1069000048B101002185A240E76D00000A00004067
-:106910008F9801006C89004001B000001D94004078
-:106920008132010004002200803200003504004062
-:1069300089980100099900008A3001008D96009520
-:1069400003300100238300881CB0000000002D03E9
-:1069500048B1010022002DF02EB0010004001F17E5
-:1069600080320000282000A696B001002E85221754
-:10697000960400005B97004B953001006C89004C39
-:106980008FB0000030858317803200000000004483
-:1069900043C10100328585178032000000000048A5
-:1069A00043C10100280000F602CC0100120000A142
-:1069B0002AC801005D96004081320100AF9300417A
-:1069C000813001006C89004081B2000000000001AC
-:1069D00000D0010000002E1048B101002800004046
-:1069E000F199010000000003F0B101000000000077
-:1069F000F0B101003C8564476131000000000010E7
-:106A000062B101003D85A81BE0310000238374883A
-:106A10001CB000000000004503E001000400A005D8
-:106A2000036C00000400A309036C000008002D03A0
-:106A300048B101006E8501FB08300000D88587FB56
-:106A400022300000000000FA0EB00100000000F843
-:106A500014B00100030000071AF4010018950007A4
-:106A6000163001005F852241816C00004E85224274
-:106A7000816C0000238300881CB000005E85225FCB
-:106A80000F7C0000380000047E8901005485A65F59
-:106A90000F00000031940040053001000A0400405E
-:106AA00089980100099900008A3001005B85004047
-:106AB00081B20000130000408798010000002D0300
-:106AC00048B101000C002DF082B00100000000F080
-:106AD00084B001002C9600400530010008040040FD
-:106AE00089980100099900008A3001000400A25C25
-:106AF0001F7C00000000005C1F900100F087004038
-:106B00000FB000006C85A25A1F7C00000400A25A3E
-:106B10001F7C000000B5000D42C901000400220BDB
-:106B2000E67D000000B7000D42C901000400220B01
-:106B3000E67D000070940040813201006C852220C7
-:106B4000856C000069859C0F8032000023830088DB
-:106B50001CB000008D95005C1F000100C89700422A
-:106B600061310100238300881CB0000090040007FD
-:106B70009630010000002D0548B10100000000F032
-:106B800018B001007085210480200000718500404C
-:106B900010C90000A488004B81B000009F8500430D
-:106BA00081B00000A38500FB22B00000A488004152
-:106BB00081B000006C89004E8FB000009485005AAF
-:106BC0008FB00000798500478FB00000A488005383
-:106BD00081B00000A488005681B0000032002D056D
-:106BE00048B101000704004089980100099900009C
-:106BF0008A3001003C040040899801000999000A8C
-:106C00008A3001003D0400408998010018000011FD
-:106C10008AE40100099900F28A1401000000004092
-:106C200081B201006C89A00AE46D00008785A24151
-:106C3000197C00008685220A803200006C8900538E
-:106C40008FB000006C8900548FB000009085220A3C
-:106C5000803200008A85A20AE46D00006C89005D24
-:106C60008FB00000000000F280B001000000000AB8
-:106C700080D001008E85A091816C00006C89005E3F
-:106C80008FB00000250000408F9801006C89004003
-:106C900081B2000092852091E56D00006C8900545E
-:106CA0008FB00000210000408F9801006C890040E7
-:106CB00081B2000032002D0548B1010007040040F8
-:106CC00089980100099900008A3001003C040040C5
-:106CD000899801000999000A8A3001003D040040AA
-:106CE00089980100099900F28A30010000000040F3
-:106CF00081B201006C89A00AE46D0000240000400C
-:106D00008F9801006C89004081B2000037002D058A
-:106D100048B10100040000F382F40100A488A042FD
-:106D2000836C0000A488005481B00000000000F2D1
-:106D30000EB00100040023400F6C0000040020AAE4
-:106D40000F6C0000090400408998010009990000B7
-:106D50008A300100030000071AF4010000B5000D9D
-:106D600042C901000700000716880100B185220B07
-:106D7000E67D00000A000040879801007F980040EF
-:106D80008132010004001C0F80320000000000402E
-:106D90000FB00100F087005C1F900000C3852250F7
-:106DA000FD7F0000BE85A254FD7F0000B685225500
-:106DB000FD7F00008200004087980100AD85004003
-:106DC00081B2000004002253FD7F00001480000304
-:106DD00042C90100000000F096B001001000004B15
-:106DE00080F401000CBC004087980100BE8522435E
-:106DF000806C0000FFFF004B80880100AD85A2433E
-:106E0000806C00007C96004047990100BF85464099
-:106E100081320000C285A0F0306F0000B4851E40B2
-:106E200081B2000000001E4131C301007F94004088
-:106E300025300100C7859C0F803200002383008825
-:106E40001CB000008D95005C1F0001001480000341
-:106E500042C901000400225A1F7C0000000000F01B
-:106E600096B0010000002F0548B101001000000796
-:106E700018E401000008000CE099010090040007EC
-:106E80009630010000B5000D46C90100CF853040A5
-:106E9000813200000400A20BE67D00000000000B20
-:106EA000E6910100000200A146C901000400A20B06
-:106EB000E67D00000000000BE691010004002E05B5
-:106EC00048B1010000001040E1B10100A488004079
-:106ED00081B00000000000FB28B00100000000FBB2
-:106EE00086B00100000000F814B00100E3852246DE
-:106EF000237C000004002240876C0000DF852240D4
-:106F0000877C0000000000481F900100E1852241BD
-:106F1000877C0000000000471F900100E3852242AB
-:106F2000877C0000000000451F9001000400224003
-:106F3000097C0000E485661B2C300000000000A0E6
-:106F400013B001000000764141C301001686239270
-:106F5000156C00001686A2451F7C00001C86224B83
-:106F6000FD7F0000170000D0A2C901000000004012
-:106F700027B001000200000A24C80100BF940040AD
-:106F80000F3001001486220840300000000000414C
-:106F9000A3C10100F007001224CC0100ED85AA4135
-:106FA000274000000400A349276C000001000013E3
-:106FB00080CC01000E8626402330000000000040F7
-:106FC00083B001006000000384C8010010000010BD
-:106FD00048CD0100170000D0A2C90100FB85A240E6
-:106FE000836C00000786004183B0000000800042EF
-:106FF00044990100000068213896010000002E50DD
-:1070000049C101000086A244236C00003000000347
-:1070100048C9010000000044F1B101000C0000204B
-:10702000F0C901000000004461B10100A00000A40B
-:1070300062DD01000386A842E03100000000004448
-:1070400085C001000000004123C001000000004194
-:10705000A3C10100F985A241815000000E862240A3
-:10706000236C00000000004461B1010040000010EA
-:1070700062DD01000B86A840813200002383008876
-:107080001CB000000B040040899801000999000021
-:107090008A3001000000000348B10100EE07004003
-:1070A00025980100170000D02AC801002786001784
-:1070B00010B000000A970040813201001C86004099
-:1070C00081B20000BF940092253001000000004012
-:1070D00031B001000B0400408998010009990000BB
-:1070E0008A3001001C8622082E30000027860041CD
-:1070F00027B00000808000A604B001000600004018
-:10710000879801007F98000A8C30010004001C0F52
-:1071100080320000000000400FB001000000005C61
-:107120001F9001000400A09F136C00002686229F80
-:10713000136C0000020000881CCC01002783004073
-:1071400081B20000F08700413FC300000000004012
-:107150000FB001002800000180CE01003B862A40CC
-:10716000813000000080001044C901004000004050
-:10717000819801003086A2481F7C00003086A2471B
-:107180001F7C00003086A307036C000080000040D5
-:10719000819801003386A340026C000028000001A2
-:1071A000F0CD0100358600400FB0000028000040FF
-:1071B000F0CD0100040000400ECC010028000003C7
-:1071C000F0C9010028000000F0C90100000000160D
-:1071D000E0B101000000004761B101002000001093
-:1071E00062DD01003986A85C1F1000000400220A3D
-:1071F000803200000400A203486D0000000000403F
-:1072000043990100000000F008B00100A0012D40EA
-:1072100000C001001C87220F420500004E869C0F13
-:10722000803200000000005C1F8001000080001020
-:1072300042C9010049862240E36D0000000000477A
-:1072400061B101004000001062DD01004686A840E7
-:1072500081320000238300881CB000004E86220784
-:10726000803200000000000342B10100000000076E
-:1072700042C10100008000A1469901000000005FAA
-:10728000E1910100C006A2451F7C00001000000330
-:1072900048C9010000002D5429C00100000000F879
-:1072A00018B00100000000F804B00100000000F870
-:1072B0000EB0010004002640813200000400A25FED
-:1072C0000F7C00003E00001480CE01000400AA40A4
-:1072D00081320000420000030AC801000C0000A433
-:1072E0000CC8010016950040813201000000001416
-:1072F00002B001000000001424D0010000000014BE
-:1073000010C001001200000810C801000000004079
-:1073100023B00100FE7F000544C901000400A2A2C1
-:10732000860600000000000AE4B101007C8622010C
-:107330008032000000003C4423E0010000002EA445
-:1073400080B001000000001048C101006986A30759
-:10735000026C00006A8668011AB00000000068072D
-:107360001AB001000000000D02D00100000000056D
-:10737000F0B101000000000CF0B1010000000002BB
-:10738000E0B101000000000D0AC001007686224035
-:10739000036C000076862242236C0000000000414E
-:1073A00023C001000000004761B10100A00000A45B
-:1073B00062DD01009C862840813200007386004017
-:1073C00081B200000000001080C0010000000047F2
-:1073D00061B101000000004062B101007886A84060
-:1073E00023300000238300881CB000009C860040EE
-:1073F00081B2000000003C4423E00100000000A432
-:1074000086B0010000002E1048C101008186A31241
-:107410000E6C0000828660071AB000000000601247
-:107420001AB001000000680D16940100FFFF000B68
-:1074300016D801001B990008983001000000680868
-:107440003E9601000000000CF0B1010000000002B7
-:10745000E0B101000000001086C0010000000046FD
-:1074600061B101002000004362DD01008A86A85C52
-:107470001F100000BC86220D146C00009086220DA7
-:10748000246C00000000000D10C001009586000D66
-:1074900024D000000400224BFD7F000000000041CA
-:1074A0002BC0010000000015A2B101001000002057
-:1074B00010C80100F007004025980100978622427D
-:1074C000236C00009C86004123C0000000000046A1
-:1074D00061B101004000001062DD01009886A85CE7
-:1074E0001F000000238300881CB000000000004043
-:1074F00023B00100BC86220D14500000BB86A20DF3
-:107500000E500000A88622461F7C000000000046A6
-:107510001F8001003080001042C90100A686224071
-:10752000E36D00000000004761B101004000001061
-:1075300062DD0100A386A840813200002383008819
-:107540001CB0000020800003469901000000005F8D
-:10755000E191010000002D0648B10100000000F893
-:1075600018B00100000000F804B00100040022F08F
-:107570000E300000AE86A25F0F7C00006386004CD8
-:107580000DC0000000002E5F0F80010063862307FE
-:10759000146C00000400A2461F7C000030000010A4
-:1075A00048C9010024000040F199010000000003D7
-:1075B000F0B1010000000000F0B101000000001671
-:1075C000F0B101002400000000C8010000000047E5
-:1075D00061B10100A00000A462DD0100B886A846E8
-:1075E0001F100000638600030CB000006386000DCE
-:1075F00018C0000004002E140AD00100120000057B
-:1076000048CD0100FE7F000542C901000400A2A48C
-:10761000860600000400A2A1860600000C002AF2E3
-:10762000E0B10100C4862240316C00000000601807
-:10763000389601001E00004043990100008100F6C9
-:1076400080CE0100C886A6408132000000000044C0
-:1076500043C10100CA86220BED6D0000080000A1A5
-:1076600042C90100020000A146C901000400A2A114
-:10767000860600000F0000FA948801000400A2456D
-:10768000956C00000200004A86E40100000000F64C
-:107690000EB00100D48622471F7C000004001F4367
-:1076A0000E500000D486A0460F40000000000041AC
-:1076B0000FC00100D88622481F7C00000000004057
-:1076C00091B0010004000FA242310000DB860040AF
-:1076D00089B000000C0000A242C901000000004374
-:1076E00089B001000000004395D00100000000FCBB
-:1076F00082B00100DE86A041904000000000004101
-:1077000091C00100E38622471F7C0000E386A0436E
-:10771000896C0000E3862045896C0000E386A04167
-:107720000E400000000000410FC0010000000041B9
-:1077300089C00100DB86A24195500000F0862248F6
-:107740001F7C00001000004892F40100FFFF004879
-:1077500090880100EA8690489240000000000041B5
-:1077600093C001000A0000A244C901000000662085
-:1077700093A401000A00004380CC0100000000A295
-:1077800080C001000400A240426D00000400A2A1DC
-:10779000860600000400A2461F7C00001B9900170B
-:1077A00098300100FF0700177E8901000400A64001
-:1077B000813200003080001044C901001200001422
-:1077C000F0C9010000000017F0B10100120000052F
-:1077D000E0CD01003000001080C80100000000442E
-:1077E00061B101002000004062DD0100FA86A8407E
-:1077F000813200000587225C1F7C000000003C44B1
-:1078000023E0010000002D1048C101000487224040
-:10781000E36D00000000004661B10100400000106F
-:1078200062DD01000187A8408132000023830088C7
-:107830001CB000000000005C1F8001000887A24708
-:107840001F7C00000C9500408132010088870017E2
-:1078500010B00000139500408132010000002F039A
-:1078600048B101000C87A00716400000000000414D
-:1078700017C001000000000BE4B10100000000503F
-:1078800017F00100108790F2164000000000004140
-:1078900017C001000000662017A4010010000014AA
-:1078A0002AC80100000000502BE00100000000F297
-:1078B0002A9401003080001042C901001A8722403A
-:1078C000E36D00000000004461B1010040000010C1
-:1078D00062DD01001787A840813200002383008801
-:1078E0001CB000000080001710DC010088870040F9
-:1078F00081B2000024879C0F803200000000005CF1
-:107900001F8001000080001042C90100248722402E
-:10791000E36D00000000004761B10100400000106D
-:1079200062DD01002187A8408132000023830088A6
-:107930001CB00000298722078032000000000003ED
-:1079400042B101000000000742C10100008000A117
-:10795000469901000000005FE191010004002E0340
-:1079600048B101000000000AE0B101002E8722406A
-:10797000316C00000C0000404599010000006018C7
-:107980003896010000002E1048B1010000000050A0
-:10799000F1B1010000000008F0B101000000000397
-:1079A000E0B101000000004461B1010000000010DE
-:1079B00062B101003387A840233000002383008890
-:1079C0001CB0000000002D5211C001001000000387
-:1079D00048C90100000000F818B00100000000F8DC
-:1079E00004B00100000000F80EB001000C0000A47B
-:1079F0000CC8010004002240156C000000003C444B
-:107A000023E00100000000A486B0010000002E1059
-:107A100048C101004287A3120E6C0000438768072B
-:107A20001AB00000000068121AB001001B9900088B
-:107A3000983001000000004081B2010000000010F9
-:107A400086C00100000068083E9601000000000C9E
-:107A5000F0B1010000000002E0B1010000000046AA
-:107A600061B101002000004362DD01004A87A85C8B
-:107A70001F1000007C87220D146C00005087220D1F
-:107A8000246C00000000000D10C001005587000D9F
-:107A900024D000000400224BFD7F000000000041C4
-:107AA0002BC0010000000015A2B101001000002051
-:107AB00010C80100F00700402598010057872242B6
-:107AC000236C00005C87004123C0000000000046DA
-:107AD00061B101004000001062DD01005887A85C20
-:107AE0001F000000238300881CB00000000000403D
-:107AF00023B001000400220D145000007B87A20D6A
-:107B00000E500000688722461F7C000000000046DF
-:107B10001F8001003080001042C9010066872240AA
-:107B2000E36D00000000004761B10100400000105B
-:107B300062DD01006387A840813200002383008852
-:107B40001CB0000020800003469901000000005F87
-:107B5000E191010000002D0648B10100000000F88D
-:107B600018B00100000000F804B00100040022F089
-:107B70000E3000006E87A25F0F7C00003C87004C37
-:107B80000DC0000000002E5F0F8001003C8723071E
-:107B9000146C00000400A2461F7C0000300000109E
-:107BA00048C9010024000040F199010000000003D1
-:107BB000F0B1010000000000F0B10100000000166B
-:107BC000F0B101002400000000C8010000000047DF
-:107BD00061B10100A00000A462DD01007887A84621
-:107BE0001F1000003C8700030CB000003C87000D14
-:107BF00018C000000400A2461F7C00008687225C9B
-:107C00001F7C00000000005C1F80010000003C445D
-:107C100023E0010000002D1048C1010086872240AA
-:107C2000E36D00000000004661B10100400000105B
-:107C300062DD01008387A840813200002383008831
-:107C40001CB000000000001710B001008887004041
-:107C50002BB00000008000034499010000000004E4
-:107C6000E0B1010004002640813200000400A09F22
-:107C7000136C00008F87229F136C000002000088A5
-:107C80001CCC01002783004081B200009498004181
-:107C90003F430100000000408DB0010000000040A3
-:107CA00005B001007F9800400F3001000400A25C85
-:107CB0001F7C00000688005C1F9000001000000080
-:107CC0000EF4010004002640813200000000003A5A
-:107CD000018401009B872250016C00000D040040CC
-:107CE00089980100099900008A300100030000070B
-:107CF0001AF401001895000716300100A6872241EA
-:107D0000816C0000A1872242816C000023830088DF
-:107D10001CB00000A587225F0F7C00000000005F00
-:107D20000F8001000E0400408998010009990000AD
-:107D30008A300100F08700400FB00000B387A25ADC
-:107D40001F7C00000400A25A1F7C000000B5000D3B
-:107D500042C901000400220BE67D000000B7000DBF
-:107D600042C901000400220BE67D0000709400402F
-:107D700081320100B3872220856C0000B0879C0F00
-:107D800080320000238300881CB000008D95005CC9
-:107D90001F000100C8970042613101002383008861
-:107DA0001CB00000900400079630010000002D0573
-:107DB00048B10100000000F018B001000000000010
-:107DC00080B00100A488A25F816C0000A8002D4350
-:107DD0001980010037002DF024B00100040000F3E9
-:107DE0008EF401000F0000F3908801000400A3430B
-:107DF0008F6C00000400A343916C0000C4872248EC
-:107E00008E6C0000360000404399010058003D434D
-:107E1000E7E10100C4871FF0246C0000C387234101
-:107E20008F6C0000A488004781B00000A48800483F
-:107E300081B000004000004043990100B0002DF0E7
-:107E400014B00100C987220A904000005F980040EA
-:107E500091300100A488A24080320000B0002D457E
-:107E600081B00100D58722F02C300000A3002D3016
-:107E700083B00100AC002DF382E00100CF87A34165
-:107E80002C6C00000000001682B0010098002DF05C
-:107E900082C0010088002DF082D00100000000F2B5
-:107EA00098E80100A488204C826C00007C002D41E1
-:107EB00098E80100A48820F0986C0000F087220A5E
-:107EC000803200004002000C7E890100F087A6404D
-:107ED00081320000A488004981B00000200000A683
-:107EE00080B00100DD872243216F00001380004035
-:107EF00080DC0100DE87004081B200001A80004073
-:107F000080DC0100DE87A25E0B7D000000000040E7
-:107F100008B10100E0879F8580320000E4870040BF
-:107F200081B200001A832240577D0000010000400A
-:107F300057990100E487424081320000000000446C
-:107F40009393010001831A5B69930000EA8722463C
-:107F5000F37F0000EA87A241F37F0000C680004261
-:107F600097330100040000CB81C80100ED87224057
-:107F7000F27F0000C680006F97330100EF87224038
-:107F8000737D0000E08000418BB30000E787004074
-:107F900081B20000F7879C0F803200000080001043
-:107FA00042C90100F7872240E36D00000000004550
-:107FB00061B101004000001062DD0100F487A840BB
-:107FC00081320000238300881CB000003494220218
-:107FD00080320000F88742408132000000000044F7
-:107FE0009393010034941A026897000002889C0F52
-:107FF000803200000080001042C901000288224047
-:10800000E36D00000000004561B101004000001078
-:1080100062DD0100FF87A8408132000023830088D1
-:108020001CB00000449422028032000003884240C9
-:1080300081320000000000449393010044941A022E
-:10804000689700000D889C0F8032000000800010AF
-:1080500042C901000D882240E36D00000000004588
-:1080600061B101004000001062DD01000A88A840F3
-:1080700081320000238300881CB000002F8322027D
-:10808000803200000E88424081320000000000442F
-:108090009393010000001A02689701002F830040AB
-:1080A00005B00000008000A656B1010056952F4093
-:1080B00005B001000400A240E76D0000B89429411A
-:1080C000E7B1010000000054EF930100000000F24E
-:1080D0000EB001000400A30C556F00002900004001
-:1080E0000D9801000900000712E40100000000A73C
-:1080F00013C00100030000071AF401000700000785
-:1081000016880100FFFF001034D8010000000003B2
-:10811000349401000000004023B00100201800400A
-:1081200011980100040020AA0F6C000000B5000D9A
-:1081300042C901004688220BE67D00002588604088
-:1081400081320000FFFF0007848901002E8805C2EC
-:1081500024300000580400408132010000002D0549
-:1081600048B10100638870F0183001001000000C65
-:1081700082F401000400A2410E6C00004688004019
-:1081800081B200000000704081B201003D88A0482B
-:10819000236C00000000005035D001000080001A60
-:1081A00042C9010037882240E36D00000000004210
-:1081B00061B101004000001A62DD01003488A8406E
-:1081C00081320000238300881CB00000209800400A
-:1081D00043990100638800F8183001003888A241F3
-:1081E00023500000FFFF001034D8010000000003FE
-:1081F00034940100201800401198010000002E1A4C
-:1082000048B1010000000044F1B101000000000885
-:10821000F0B101000000004261B101002000001A2D
-:1082200062DD01004188A809E03100000000004142
-:1082300023C001000000005035C0010000000044D0
-:1082400011C00100528822410D5000000000004181
-:108250000FC001004E88A0AA0F6C00000000004172
-:108260000FB001000900000712E40100000000A7A0
-:1082700013C00100000000401BB001002288004133
-:1082800017B000000002000912C8010022888341D3
-:10829000174000000000004017B001002288004194
-:1082A0001BC000005D882340236C000000000050CC
-:1082B00035D001000080001A42C901005A882240CE
-:1082C000E36D00000000004261B101004000001AAF
-:1082D00062DD01005788A8408132000023830088B6
-:1082E0001CB000002098004043990100638800F80A
-:1082F000183001005B88A2412350000000000041BB
-:108300000FC001006088A0AA0F6C000000000041AF
-:108310000FB00100B8942007E4B101005695204049
-:10832000E7B10100F08700400FB00000FFFF000C34
-:1083300080D801000400264081320000C002000CF9
-:108340007E8901007C882654613100006F88870C8B
-:10835000803200001F040040899801000999000C38
-:108360008A3001000000005461B101000F0000409C
-:10837000629901006F882840813200000400A254F5
-:10838000777D00006B88004081B20000778822462C
-:10839000197C00002A040040899801000999000C0A
-:1083A0008A3001000000005461B101000D0000405E
-:1083B000629901000000A84081B200000400A254AC
-:1083C000777D00007088004081B200007C882249DF
-:1083D000197C00000E000040629901000000A840D6
-:1083E00081B200000400A254777D0000778800402D
-:1083F00081B2000010000040629901000000A84016
-:1084000081B200000400A254777D00007C88004007
-:1084100081B2000030942F55F1930100004000A676
-:1084200056B101002F83A241E551000064000040D5
-:10843000E599010084884440813200008788A29336
-:10844000576F00000000004157C3010000001CAB43
-:1084500027B301002F832250FD7F00002F8322517C
-:10846000FD7F00002F83A2411D53000050460040B5
-:108470001D9B010038050040813201000E000048BC
-:10848000B2CB010010040040493101009388224022
-:10849000B56F00000E000048B2CB0100200400417F
-:1084A000B55301002F83004081B20000000000514D
-:1084B000FD83010040160040459901004005004041
-:1084C000493101001E000048B2CB010010040040F9
-:1084D00081320100000000DA91C001000400004870
-:1084E000B2CB010020040040B533010060162040EB
-:1084F000E5B1010055820040B53301000800004895
-:10850000B2CB0100FFFF004AB48B01002004004001
-:10851000813201000A000048B2CB01001000004A7D
-:10852000B4F7010020040040813201002F83004095
-:1085300081B200000400A205486D00000200004066
-:10854000439901000400A2F20E6C00000400A20294
-:10855000803200000500004043990100000000F354
-:1085600008B00100AE882250816C00000F0400406A
-:1085700089980100100000408AE401000999000474
-:108580008A14010004002048096C000004002057F0
-:10859000816C000004002040E6B1010003000040AF
-:1085A00096E401000000000496C00100B488004B6E
-:1085B00010C90000E48B004109B000000400002055
-:1085C0008FB00000040000208FB0000004000020E5
-:1085D0008FB00000040000208FB0000004000020D5
-:1085E0008FB00000040000208FB0000004000020C5
-:1085F0008FB00000040000208FB00000198C0041F3
-:1086000009B00000040000208FB00000040000202A
-:108610008FB00000040000208FB000000400002094
-:108620008FB00000040000208FB000000400002084
-:108630008FB00000040000208FB000000400002074
-:108640008FB00000558C004509B00000558C0045E6
-:1086500009B00000558C004509B00000558C00455C
-:1086600009B00000040000208FB0000004000020CA
-:108670008FB00000040000208FB000000400002034
-:108680008FB000009C8C004309B00000CB8C0043ED
-:1086900009B00000CF8C004409B000003E8E0045B8
-:1086A00009B00000040000208FB00000040000208A
-:1086B0008FB00000040000208FB0000004000020F4
-:1086C0008FB00000040000208FB00000DF8C00435A
-:1086D00009B00000DD8C004309B00000E08B0045CC
-:1086E00009B00000040000208FB00000040000204A
-:1086F0008FB00000040000208FB0000004000020B4
-:108700008FB00000988D004209B00000988D0043A2
-:1087100009B00000988D004409B00000E08B0045CE
-:1087200009B00000040000208FB000000400002009
-:108730008FB00000040000208FB000000400002073
-:108740008FB00000040000208FB00000B88D0043FF
-:1087500009B00000040000208FB00000E08B00454D
-:1087600009B00000040000208FB0000004000020C9
-:108770008FB00000040000208FB000000400002033
-:108780008FB00000040000208FB00000E08D004397
-:1087900009B00000E08D004409B00000E08B004506
-:1087A00009B00000040000208FB000000400002089
-:1087B0008FB00000040000208FB0000004000020F3
-:1087C0008FB00000040000208FB00000E08D004258
-:1087D00009B00000040000208FB00000E08B0045CD
-:1087E00009B00000040000208FB000000400002049
-:1087F0008FB00000040000208FB0000004000020B3
-:108800008FB00000040000208FB000000F8E0044E5
-:1088100009B00000040000208FB00000E08B00458C
-:1088200009B00000040000208FB000000400002008
-:108830008FB00000040000208FB000000400002072
-:108840008FB00000E08B004209B00000228E00458E
-:1088500009B00000228E004509B00000E08B004501
-:1088600009B00000040000208FB0000004000020C8
-:108870008FB00000040000208FB000000400002032
-:108880008FB00000248E004209B00000248E004307
-:1088900009B00000248E004409B00000248E004579
-:1088A00009B00000040000208FB000000400002088
-:1088B0008FB00000040000208FB0000004000020F2
-:1088C0008FB00000040000208FB0000004000020E2
-:1088D0008FB000002F8E004409B00000E08B0045EF
-:1088E00009B00000040000208FB000000400002048
-:1088F0008FB00000040000208FB0000004000020B2
-:108900008FB00000418E004209B00000308E00435D
-:1089100009B00000418E004409B00000E08B004522
-:1089200009B00000040000208FB000000400002007
-:108930008FB00000040000208FB000000400002071
-:108940008FB00000040000208FB00000438E004371
-:1089500009B00000378E004409B00000E08B0045EC
-:1089600009B00000040000208FB0000004000020C7
-:108970008FB00000040000208FB00000E08B0041A9
-:1089800009B00000968D004209B00000968D0043AA
-:1089900009B00000968D004409B00000E08B00454E
-:1089A00009B00000040000208FB000000400002087
-:1089B0008FB00000040000208FB00000E08B004169
-:1089C00009B00000458E004209B00000458E00430A
-:1089D00009B00000458E004409B00000E08B00455E
-:1089E00009B00000040000208FB000000400002047
-:1089F0008FB00000040000208FB0000004000020B1
-:108A00008FB00000040000208FB0000004000020A0
-:108A10008FB00000040000208FB000004C8E004595
-:108A200009B00000040000208FB000000400002006
-:108A30008FB00000040000208FB000004E8E004276
-:108A400009B00000040000208FB0000004000020E6
-:108A50008FB00000040000208FB000000400002050
-:108A60008FB00000040000208FB000000400002040
-:108A70008FB00000040000208FB000000400002030
-:108A80008FB000005B8E004309B00000C18E004330
-:108A900009B00000CF8C004409B000003E8E0045B4
-:108AA00009B00000040000208FB000000400002086
-:108AB0008FB00000040000208FB0000004000020F0
-:108AC0008FB00000040000208FB00000C98E00436A
-:108AD00009B00000CF8C004409B000003E8E004574
-:108AE00009B00000040000208FB000000400002046
-:108AF0008FB00000040000208FB0000004000020B0
-:108B00008FB00000040000208FB00000DD8E004315
-:108B100009B00000040000208FB00000E08B004589
-:108B200009B00000040000208FB000000400002005
-:108B30008FB00000040000208FB00000040000206F
-:108B40008FB00000968C004309B00000C58E004332
-:108B500009B00000CF8C004409B000003E8E0045F3
-:108B600009B00000040000208FB0000004000020C5
-:108B70008FB0000002002D0548B101000400A2F2F0
-:108B80000E6C00000400A2028032000007002D409D
-:108B900081B20100000000F308B0010010040040A1
-:108BA00089980100100000478AE401000999000437
-:108BB0008A1401000400204E096C00002A000047BE
-:108BC00080CE0100040024408132000006002047CE
-:108BD000E6B101000400004796E4010000000047F0
-:108BE00096D001000000004796D00100000000046C
-:108BF00096C001007D89004B10C90000F98E004924
-:108C000009B000000400002085B00000040000202E
-:108C100085B000000400002085B0000004000020A2
-:108C200085B000000400002085B000000400002092
-:108C300085B000000400002085B000000400002082
-:108C400085B000000400002085B000000400002072
-:108C500085B000000400002085B000000400002062
-:108C600085B000000400002085B000000400002052
-:108C700085B00000328F004209B0000004000020DF
-:108C800085B000000400002085B000000400002032
-:108C900085B000000400002085B000000400002022
-:108CA00085B000000400002085B000000400002012
-:108CB00085B000000400002085B000000400002002
-:108CC00085B000000400002085B0000004000020F2
-:108CD00085B000000400002085B0000004000020E2
-:108CE00085B00000398F004609B000000400002064
-:108CF00085B000000400002085B0000004000020C2
-:108D000085B000000400002085B0000004000020B1
-:108D100085B000000400002085B0000004000020A1
-:108D200085B000000400002085B000000400002091
-:108D300085B000000400002085B000000400002081
-:108D400085B000000400002085B000000400002071
-:108D500085B000000400002085B000004A8F00426A
-:108D600009B000000400002085B000006D8F0042B3
-:108D700009B000000400002085B0000004000020BD
-:108D800085B000000400002085B000000400002031
-:108D900085B000000400002085B000000400002021
-:108DA00085B00000678F004A09B000000400002071
-:108DB00085B000000400002085B000000400002001
-:108DC00085B000000400002085B00000748F0043CF
-:108DD00009B000000400002085B00000DF8F0044CF
-:108DE00009B000000400002085B00000040000204D
-:108DF00085B000000400002085B0000004000020C1
-:108E000085B000000400002085B0000004000020B0
-:108E100085B00000DD8F004B09B000000400002089
-:108E200085B000000400002085B000000400002090
-:108E300085B000003D8F004109B000000400002013
-:108E400085B000003D8F004309B000003D8F004415
-:108E500009B000003D8F004509B000003D8F00467D
-:108E600009B000003D8F004709B000003D8F004869
-:108E700009B000003D8F004909B000003D8F004A55
-:108E800009B000003D8F004B09B000003D8F004C41
-:108E900009B000003D8F004D09B000000400002023
-:108EA00085B000000400002085B00000489000421A
-:108EB00009B000000400002085B000004890004484
-:108EC00009B000000400002085B00000040000206C
-:108ED00085B000000400002085B0000004000020E0
-:108EE00085B000000400002085B0000004000020D0
-:108EF00085B000004890004B09B00000040000203D
-:108F000085B000000400002085B0000004000020AF
-:108F100085B000000400002085B00000040000209F
-:108F200085B000006590004509B0000004000020F5
-:108F300085B000000400002085B00000040000207F
-:108F400085B000000400002085B000007D9000473F
-:108F500009B000000400002085B0000056900045D4
-:108F600009B000000400002085B0000004000020CB
-:108F700085B000001593004609B0000004000020F1
-:108F800085B000000400002085B00000040000202F
-:108F900085B000000400002085B00000040000201F
-:108FA00085B000006D8F004609B000004A8F004672
-:108FB00009B00000658F004709B00000658F0048C8
-:108FC00009B000000400002085B00000040000206B
-:108FD00085B000000400002085B00000678F004AC3
-:108FE00009B000000400002085B00000040000204B
-:108FF00085B000000400002085B0000004000020BF
-:1090000085B000000400002085B0000004000020AE
-:1090100085B00000DF8F004509B00000748F004369
-:1090200009B00000658F004709B00000658F004857
-:1090300009B000000400002085B0000004000020FA
-:1090400085B000000400002085B00000DD8F004CDA
-:1090500009B000000400002085B0000004000020DA
-:1090600085B000000400002085B00000040000204E
-:1090700085B000000400002085B00000040000203E
-:1090800085B000008490004409B000008490004244
-:1090900009B00000C98B004709B00000C98B004827
-:1090A00009B000000400002085B00000040000208A
-:1090B00085B000000400002085B000008490004BC3
-:1090C00009B000000400002085B00000040000206A
-:1090D00085B000003D8F004109B00000AF9000470F
-:1090E00009B000000400002085B000009290004705
-:1090F00009B000000400002085B00000040000203A
-:1091000085B000000400002085B0000004000020AD
-:1091100085B000000400002085B00000040000209D
-:1091200085B000009290004709B0000004000020C4
-:1091300085B000000400002085B00000040000207D
-:1091400085B000000400002085B00000040000206D
-:1091500085B000000400002085B00000040000205D
-:1091600085B000009290004709B00000AF90004722
-:1091700009B00000658F004709B00000658F004806
-:1091800009B000000400002085B0000004000020A9
-:1091900085B000000400002085B0000092900047D8
-:1091A00009B000000400002085B000000400002089
-:1091B00085B000000400002085B0000004000020FD
-:1091C00085B000000400002085B0000004000020ED
-:1091D00085B000000400002085B0000004000020DD
-:1091E00085B00000BE90004709B00000BE90004866
-:1091F00009B000000400002085B000000400002039
-:1092000085B000000400002085B0000004000020AC
-:1092100085B000000400002085B00000040000209C
-:1092200085B000002F91004009B000005191004727
-:1092300009B000004391004809B000008A9000473F
-:1092400009B000008A90004709B000005191004722
-:1092500009B000005A91004709B000005A91004837
-:1092600009B000000400002085B0000043910048D0
-:1092700009B000008A90004709B000008A900047BA
-:1092800009B000004391004809B00000040000202C
-:1092900085B000000400002085B00000040000201C
-:1092A00085B000004890004309B000000400002091
-:1092B00085B000004890004509B000004890004685
-:1092C00009B00000658F004709B00000658F0048B5
-:1092D00009B000000400002085B000004890004A5A
-:1092E00009B000000400002085B000004890004C48
-:1092F00009B000000400002085B000000400002038
-:1093000085B000000400002085B00000AE9000474A
-:1093100009B00000A090004809B0000091900047FB
-:1093200009B000009190004709B00000AE900047DE
-:1093300009B00000C98B004709B00000C98B004884
-:1093400009B000000400002085B00000A090004893
-:1093500009B000009190004709B0000091900047CB
-:1093600009B00000A090004809B0000004000020EF
-:1093700085B000000400002085B000005D9100422F
-:1093800009B000000400002085B000005D91004499
-:1093900009B000000400002085B000000400002097
-:1093A00085B000000400002085B00000040000200B
-:1093B00085B000000400002085B0000004000020FB
-:1093C00085B000005D91004B09B000000400002052
-:1093D00085B000000400002085B0000004000020DB
-:1093E00085B000000400002085B0000004000020CB
-:1093F00085B000005D91004309B00000040000202A
-:1094000085B000005D91004509B000005D91004607
-:1094100009B000005D91004709B000005D9100486F
-:1094200009B000000400002085B000005D91004AF2
-:1094300009B000000400002085B000005D91004CE0
-:1094400009B000005D91004C09B00000040000204C
-:1094500085B000000400002085B00000040000205A
-:1094600085B000007A91004609B000000400002099
-:1094700085B000000400002085B00000040000203A
-:1094800085B000000400002085B000007D900047FA
-:1094900009B000000400002085B000007A91004669
-:1094A00009B000000400002085B000000400002086
-:1094B00085B000000400002085B0000004000020FA
-:1094C00085B000000400002085B0000004000020EA
-:1094D00085B000009C92004609B000000400002006
-:1094E00085B000000400002085B0000004000020CA
-:1094F00085B000000400002085B000007D9000478A
-:1095000009B000000400002085B000009C920046D5
-:1095100009B000000400002085B000000400002015
-:1095200085B000009C92004609B0000004000020B5
-:1095300085B000000400002085B000000400002079
-:1095400085B000000400002085B00000C5920042F4
-:1095500009B000000400002085B0000004000020D5
-:1095600085B000000400002085B000000400002049
-:1095700085B000000400002085B000000400002039
-:1095800085B00000C392004A09B00000040000202A
-:1095900085B000000400002085B000000400002019
-:1095A00085B000000400002085B000000400002009
-:1095B00085B000000400002085B0000004000020F9
-:1095C00085B00000C592004609B0000004000020EC
-:1095D00085B00000658F004709B00000658F004826
-:1095E00009B000000400002085B000000400002045
-:1095F00085B000000400002085B00000C392004A3E
-:1096000009B000000400002085B000000400002024
-:1096100085B000000400002085B000000400002098
-:1096200085B000000400002085B000000400002088
-:1096300085B000000400002085B000000400002078
-:1096400085B000000400002085B000000400002068
-:1096500085B000006A91004109B0000004000020BC
-:1096600085B000000400002085B000000400002048
-:1096700085B000000400002085B000000400002038
-:1096800085B000000400002085B000007791004202
-:1096900009B000000400002085B00000779100446C
-:1096A00009B000000400002085B000000400002084
-:1096B00085B000000400002085B0000004000020F8
-:1096C00085B000000400002085B0000004000020E8
-:1096D00085B000007791004B09B000000400002025
-:1096E00085B000000400002085B0000004000020C8
-:1096F00085B000000400002085B0000004000020B8
-:1097000085B000007791004309B0000004000020FC
-:1097100085B000007791004509B0000077910046C0
-:1097200009B000007791004709B000007791004828
-:1097300009B000000400002085B0000004000020F3
-:1097400085B000000400002085B000007791004C37
-:1097500009B000000400002085B0000004000020D3
-:1097600085B000000400002085B000000400002047
-:1097700085B000006590004C09B000000400002096
-:1097800085B000000400002085B000000400002027
-:1097900085B000000400002085B000007D900047E7
-:1097A00009B000000400002085B000005690004C75
-:1097B00009B000000400002085B000000400002073
-:1097C00085B000008393004609B00000040000202B
-:1097D00085B000000400002085B000000A9300421C
-:1097E00009B000000400002085B000000A93004486
-:1097F00009B000000400002085B000000400002033
-:1098000085B000000400002085B0000004000020A6
-:1098100085B000000400002085B000000400002096
-:1098200085B000000A93004B09B00000040000203E
-:1098300085B000000400002085B000000400002076
-:1098400085B000000400002085B000000400002066
-:1098500085B000000400002085B000000400002056
-:1098600085B000000A93004509B000000A93004645
-:1098700009B00000658F004709B00000658F0048FF
-:1098800009B000000400002085B0000004000020A2
-:1098900085B000000400002085B000000A93004C51
-:1098A00009B000000400002085B000000400002082
-:1098B00085B000000400002085B0000056900042F2
-:1098C00009B000001593004609B000000400002014
-:1098D00085B000000400002085B0000056900046CE
-:1098E00009B000000400002085B000007D90004712
-:1098F00009B000000400002085B000001593004668
-:1099000009B000000400002085B000000400002021
-:1099100085B000001593004609B000000400002047
-:1099200085B000000400002085B000000400002085
-:1099300085B000001C93004309B000000400002023
-:1099400085B000000400002085B000000400002065
-:1099500085B000000400002085B000007D90004725
-:1099600009B000000400002085B000001C930043F3
-:1099700009B000000400002085B0000004000020B1
-:1099800085B000001C93004D09B0000004000020C9
-:1099900085B000000400002085B000000400002015
-:1099A00085B000000400002085B000003293004321
-:1099B00009B000000400002085B000000400002071
-:1099C00085B000000400002085B0000004000020E5
-:1099D00085B000000400002085B0000004000020D5
-:1099E00085B000000393004A09B000000400002085
-:1099F00085B000000400002085B0000004000020B5
-:109A000085B000000400002085B0000004000020A4
-:109A100085B000000400002085B000000400002094
-:109A200085B000003293004309B00000040000201C
-:109A300085B00000658F004709B00000658F0048C1
-:109A400009B000000400002085B0000004000020E0
-:109A500085B000000400002085B000000393004A98
-:109A600009B000000400002085B0000004000020C0
-:109A700085B000000400002085B000000400002034
-:109A800085B000004A93004309B0000004000020A4
-:109A900085B000000400002085B000000400002014
-:109AA00085B000000400002085B000007D900047D4
-:109AB00009B000000400002085B000004A93004374
-:109AC00009B000000400002085B000000400002060
-:109AD00085B000004A93004D09B00000040000204A
-:109AE00085B000000400002085B000004A8F0042CD
-:109AF00009B000000400002085B000006D8F004216
-:109B000009B000000400002085B00000040000201F
-:109B100085B000000400002085B000000400002093
-:109B200085B000000400002085B000000400002083
-:109B300085B000006D93004209B0000004000020D1
-:109B400085B000000400002085B000000400002063
-:109B500085B000000400002085B000000400002053
-:109B600085B000000400002085B000000400002043
-:109B700085B000006D8F004609B000004A8F004696
-:109B800009B00000658F004709B00000658F0048EC
-:109B900009B000000400002085B00000040000208F
-:109BA00085B000000400002085B000006D930046E1
-:109BB00009B000000400002085B00000040000206F
-:109BC00085B000000400002085B0000004000020E3
-:109BD00085B000007493004A09B000000400002022
-:109BE00085B000000400002085B0000004000020C3
-:109BF00085B000000400002085B000007D90004783
-:109C000009B000000400002085B000007493004AF1
-:109C100009B000000400002085B00000040000200E
-:109C200085B000001693004609B000000400002033
-:109C300085B000000400002085B000000400002072
-:109C400085B000001693004609B000000400002013
-:109C500085B000000400002085B000000400002052
-:109C600085B000000400002085B000007D90004712
-:109C700009B000000400002085B0000016930046E3
-:109C800009B000000400002085B00000040000209E
-:109C900085B000001693004609B0000004000020C3
-:109CA00085B000000400002085B000000400002002
-:109CB00085B000000400002085B000007D930042C4
-:109CC00009B000000400002085B00000040000205E
-:109CD00085B000000400002085B0000004000020D2
-:109CE00085B000000400002085B0000004000020C2
-:109CF00085B000000393004A09B000000400002072
-:109D000085B000000400002085B0000004000020A1
-:109D100085B000000400002085B000000400002091
-:109D200085B000000400002085B000000400002081
-:109D300085B000007D93004609B0000004000020BB
-:109D400085B00000658F004709B00000658F0048AE
-:109D500009B000000400002085B0000004000020CD
-:109D600085B000000400002085B000000393004A85
-:109D700009B000000400002085B0000004000020AD
-:109D800085B000000400002085B00000748F004DF5
-:109D900009B000000400002085B00000040000208D
-:109DA00085B000000400002085B000000400002001
-:109DB00085B000000400002085B0000004000020F1
-:109DC00085B000000400002085B0000004000020E1
-:109DD00085B000000400002085B0000004000020D1
-:109DE00085B000000400002085B0000004000020C1
-:109DF00085B000000400002085B0000004000020B1
-:109E000085B000000400002085B0000004000020A0
-:109E100085B000000400002085B00000748F004D64
-:109E200009B00000658F004709B00000658F004849
-:109E300009B000000400002085B0000004000020EC
-:109E400085B000000400002085B000000400002060
-:109E500085B000000400002085B000000400A205C9
-:109E6000486D0000040022078032000007002E4BDE
-:109E700019900100FB870004E6B10000C98B224263
-:109E8000197C00000F97003A81300100C98B004017
-:109E900081B20000C98B2242197C0000FF1F000F15
-:109EA0001E8C01007396004081320100DB8B9C0FF9
-:109EB000803200000000005C1F8001000080001064
-:109EC00042C90100DB8B2240E36D00000000004529
-:109ED00061B101004000001062DD0100D88BA84094
-:109EE00081320000238300881CB000001D852202FF
-:109EF00080320000DC8B42408132000000000044D0
-:109F00009393010000001A02689701001D8500402C
-:109F100005B000000400A205486D000004002207FF
-:109F20008032000005002E4B19900100FB870004D1
-:109F3000E6B100000000004087B0010000000040D2
-:109F40008DB001000080000342C90100400000A163
-:109F500044C90100000000F0E0B101007F98000654
-:109F6000074001000400A25C1F7C00000000000606
-:109F700007D00100D4002E5C1F90010000000007F4
-:109F8000F0B101000C80000342C90100000000F0A4
-:109F9000F0B101000000004081B20100000000FEAD
-:109FA00096B00100000000FE96C00100000000F025
-:109FB000F0B101000000004081B20100000000FE8D
-:109FC00096C00100000000FE96C00100000000F0F5
-:109FD000F0B101000000004081B20100000000FA71
-:109FE00096C00100000000FE96C001000030004B4A
-:109FF000948801000000004695F001000000004A2E
-:10A0000096C001005E012E34978401000200004BCF
-:10A01000E4E5010064012040E1B10100090000070E
-:10A0200086E4010000002EA787C001001000001088
-:10A0300048C9010010000040F19901005801004397
-:10A04000F0C9010058010005E0C90100000000440A
-:10A0500061B10100A00000A462DD0100088CA840ED
-:10A06000813200000000000548B101001A000040E4
-:10A070009798010008002E4095B00100108C204BED
-:10A08000946C000000000040F1B101000D8C004113
-:10A0900095C000001080001042C90100178C2240BA
-:10A0A000E36D00000000004461B1010040000010B9
-:10A0B00062DD0100138CA8408132000023830088F8
-:10A0C0001CB000000000000548B101000F970040DF
-:10A0D00081300100E08B004081B200000C80000361
-:10A0E00042C90100000000F886B00100000000F83D
-:10A0F00088B001001480000398C801000400A2A1E8
-:10A10000986C00001E8C444081320000218CA24CCF
-:10A11000FD7F0000228C004CFD930000238C20F07A
-:10A12000566F0000000000F056B3010000001C4014
-:10A1300081B2010064000040819801006400004089
-:10A1400080CC01000400A64081320000D80000400D
-:10A15000819801000400A2438104000000800010E7
-:10A1600044C9010064000040F1990100700000053D
-:10A17000F0C9010000000043F0B1010000000047F9
-:10A1800061B101002000001062DD01002E8CA844A6
-:10A19000E0310000100000108CC801000080004673
-:10A1A00044C9010040000040F19901006801000528
-:10A1B000F0C9010064000043F0C90100040024401C
-:10A1C000813200000000004761B10100000000463C
-:10A1D00062B10100378CA844E0310000238300887D
-:10A1E0001CB000000900000786E4010038002EA71B
-:10A1F00087C001008B002D0548B101003F8C224330
-:10A20000E77D00000000004445C10100428C22446B
-:10A21000E77D00000000004C45C101000000004A3D
-:10A2200019900100680120A2E4B1010088000040FB
-:10A2300043990100468C230BE56D000000000041AE
-:10A24000199001000080001044C901005000004036
-:10A25000F199010058010043F0C9010058010005BF
-:10A26000E0C901000000004461B1010000000010DD
-:10A2700062B101004B8CA84081320000238300882A
-:10A280001CB000005C002E0548B1010000800003F6
-:10A2900042C90100000060F096B00100A00000403B
-:10A2A000439901000400A2F2803200000F970041A0
-:10A2B00081300100E08B004081B20000588CA2493F
-:10A2C000197C000086000040479901005C8C00402A
-:10A2D000E5B1000086002F49198001005C8CA2F2D4
-:10A2E000803200008B0000404799010000000042CE
-:10A2F000E79101005F8CA246197C0000A00000409D
-:10A3000047990100638C0040E5B10000A0002F4692
-:10A3100019800100638CA2F2803200008B000040A3
-:10A320004799010000000041E79101000700004E3D
-:10A3300080E401000039004080C801000400A24010
-:10A34000066C0000A80000404399010034002DF085
-:10A3500024B00100000000FB0CB00100000000FB75
-:10A3600010B00100000000FB12B001000F0000F36C
-:10A3700016880100040000F314F40100938C2640B9
-:10A3800081320000798C220A166C000058003D438F
-:10A3900013E00100000000F882B00100040022F088
-:10A3A000843000001B980040813201002383008824
-:10A3B0001CB000000000000548B101000000004191
-:10A3C00013C00100788CA043136C00000000004013
-:10A3D00013B001006E8C004115D00000938C220A4E
-:10A3E000803200000400A208126C000058003D43B7
-:10A3F00013E00100000000F882B00100040022F028
-:10A40000843000001B980040813201004000204051
-:10A41000E1B10100238300881CB0000000000005AA
-:10A4200048B10100938C224115500000000000410A
-:10A4300011C00100868CA043116C00000000004098
-:10A4400011B0010004002206106C000058003D43CA
-:10A4500011E00100000000F836B00100040022F015
-:10A46000003000000000005083B001005497004706
-:10A4700061310100238300881CB000003194000585
-:10A48000483101000000004561B1010040000010AA
-:10A4900062DD01008F8CA840813200002383008898
-:10A4A0001CB00000828C000548B10000370020403D
-:10A4B000E7B101008697005181300100E08B004038
-:10A4C00081B2000037000040439901000400A2F36C
-:10A4D0008032000034002E41F5B10100001100402F
-:10A4E000E59901000400A248197C0000A08C0048F6
-:10A4F0001990000037000040439901000400A2F3C6
-:10A500008032000034002E41F5B1010000110040FE
-:10A51000E59901000080000342C90100000000F835
-:10A5200094B00100A78C2245237C0000B0002FF0DE
-:10A530008CB00100000060F08CC001007C00004085
-:10A54000439901000400A3F08C6C000090000040CF
-:10A550004399010035002DF08CB0010034002DF33B
-:10A5600084B00100040022F3846C000058003E43D4
-:10A5700085E00100AE8C2248197C000000000041FB
-:10A580008DC001000000680A8CC0010038002A4A12
-:10A59000E0B1010028000000E0C901003C00201BE0
-:10A5A000E0B101001080000342C90100000000F882
-:10A5B00038B00100000000F826B00100040022F8C5
-:10A5C00002300000BC8C2301146C0000000000F875
-:10A5D00080B00100000000F882B001004C0020F0C3
-:10A5E000E4B1010044002040E0B1010048002041F6
-:10A5F000E0B10100A8002D1032B001005F9800F01A
-:10A6000024300100C58CA244816C0000C38C22411F
-:10A61000197C0000BC9500403B300100ED8CA20885
-:10A620003C300000C58C004081B20000BF94004067
-:10A6300081320100ED8CA2083C3000005000201C4B
-:10A64000E0B1010054002013E0B101004E002001F0
-:10A65000E4B101004000200AE0B101008697005FEC
-:10A6600081300100E08B004081B2000037000040E3
-:10A6700047990100959500F394300100A08C224A7F
-:10A6800080320000D18C004081B2000037000040D1
-:10A6900047990100959500F3943001000400204390
-:10A6A000976C000058003E4397E001000000001B3B
-:10A6B000F0B101001F006000008C0100E08B8511EB
-:10A6C000803200000480000342C90100B0002FF076
-:10A6D0008CB00100000060F08CC001007C000040E4
-:10A6E000439901000400A3F08C6C00008697005F82
-:10A6F00081300100E08B004081B20000040022495B
-:10A70000197C0000DF8C004919800000E48C224194
-:10A71000197C0000BC9500403B300100E88CA20889
-:10A720003C3000008697005F81300100E08B0040E4
-:10A7300081B20000BF94004081320100E88CA20881
-:10A740003C3000008697005F81300100E08B0040C4
-:10A7500081B2000050002D1032B0010054002DF0E5
-:10A7600038B001004E002DF026B0010040002DF25F
-:10A7700002B00100000000F014B001003000001031
-:10A780008CC801000080004644C9010068012D44C6
-:10A7900061B10100100068F280C8010000000008EB
-:10A7A000F0B1010058010005E0C901000000000BF4
-:10A7B00037B001000000004036D001005C012E409F
-:10A7C00010C001000000000680C00100000000521F
-:10A7D00081D0010018970040E431010020000046BC
-:10A7E00062DD0100F98CA840233000000E95004086
-:10A7F000813201001695004081320100078D8241AF
-:10A80000234000002080001042C90100048D224036
-:10A81000E36D00000000004661B10100400000103F
-:10A8200062DD0100018DA840813200002383008891
-:10A830001CB000000000000548B10100000000103D
-:10A8400032B001000000004123B001000080001977
-:10A8500044C901000F8D2241197C00000B8DA3011A
-:10A860000C6C00000C8D000604B00000000000011C
-:10A8700004B001000E8D2002366C00000000001BA9
-:10A8800004B00100128D0002E0B10000118DA3019F
-:10A890000C6C0000128D000604B0000000000001E6
-:10A8A00004B001000000680216940100FFFF000BD5
-:10A8B00016D80100000068083E9601000000001C48
-:10A8C000F0B101000000004661B101002000001954
-:10A8D00062DD0100178DA813E0310000548D2202C3
-:10A8E0001450000044002D020CD001003F8DA20244
-:10A8F00002500000258D225C1F7C00002080000398
-:10A9000042C90100248D2240E36D00000000004791
-:10A9100061B101004000001062DD0100208DA840FF
-:10A9200081320000238300881CB000000000000575
-:10A9300048B1010044002D5C1F80010048002DF04B
-:10A9400038B001004C002DF026B0010038002FF285
-:10A9500002B00100418D2201146C00000400A440EB
-:10A9600081320000338D22461F7C0000000000462B
-:10A970001F80010020002D0348B10100328D2240CC
-:10A98000E36D00000000004461B1010040000010D0
-:10A9900062DD01002F8DA8408132000023830088F2
-:10A9A0001CB0000038002F0548B10100000000F87D
-:10A9B00094B0010038002DF096B001000000004C6A
-:10A9C000E1C101002000000348C901000000224A43
-:10A9D000F1B1010044000005F0C901000000004A87
-:10A9E000F0B101000000004BE0B1010000000047A1
-:10A9F00061B10100A00000A462DD01003C8DA85CF3
-:10AA00001F100000418D000548B100000000000249
-:10AA100038C0010004002440813200004F8D22061E
-:10AA2000803200000000005033C001004D8DA202B2
-:10AA3000366C000004002241197C000004008F0DD8
-:10AA400042310000040022F0803200000400225C49
-:10AA5000E17D00000400A2F06A060000100000F88A
-:10AA600010C801000000005C11800100F0070040E8
-:10AA700037980100FD8C00A11AB000000000000210
-:10AA800010C00100FD8C000236D000005000201CD8
-:10AA9000E0B1010054002013E0B101004E0020019C
-:10AAA000E4B101004000200AE0B101005B8D005FCD
-:10AAB00001B000000400A202026C00000400A20227
-:10AAC0000C6C000037002D4601B00100040000F3BB
-:10AAD00080F401005A8DA043816C000000000055F5
-:10AAE00001B0010040002040E1B1010000800019E8
-:10AAF00042C90100618D2240E36D00000000004664
-:10AB000061B101004000001962DD01005E8DA840C6
-:10AB100081320000238300881CB0000013950040A0
-:10AB2000813201003080001042C90100688D22404E
-:10AB3000E36D00000000004461B10100400000101E
-:10AB400062DD0100658DA84081320000238300880A
-:10AB50001CB0000060012F0548B101000000000B8F
-:10AB6000E4B101000000005017F001006D8D90F27B
-:10AB7000164000000000004117C0010000006620E0
-:10AB800017A40100320000A62AC00100000000F254
-:10AB90002A940100708D45486131000000D0001EEC
-:10ABA00062DD0100758D284005300000718D22485E
-:10ABB000777D0000788D004081B200000000001514
-:10ABC00062B10100838D284081320000758D004004
-:10ABD00081B2000000001D0092B00100808D224172
-:10ABE000197C0000040022403B6C00000400A348D4
-:10ABF0003B6C00000080000342C90100C99400F8CA
-:10AC0000003001007D8DA2413B500000848D004941
-:10AC100000B00000FF07001E008C0100C994004036
-:10AC200081320100848D004900B0000000001D4702
-:10AC300019800100878D225F016C00008E98004012
-:10AC400081320100AA88000080B000008E8D225C55
-:10AC50001F7C00002080000342C901008E8D22402D
-:10AC6000E36D00000000004761B1010040000010EA
-:10AC700062DD01008B8DA8408132000023830088B3
-:10AC80001CB000008E8D400548310000FFFF00071A
-:10AC900094890100948D85CA943000008E98185CC8
-:10ACA0001F0001000E00000F1E8C0100B78700403E
-:10ACB00081B200008697180080300100E08B0047C9
-:10ACC000198000000000004019800100E08B22473D
-:10ACD000197C0000BF940040813201009B8DA208C6
-:10ACE00080320000E08B004081B2000018970040E5
-:10ACF0000D3001009C01004045990100FFFF000B51
-:10AD0000988801008B002D5017F00100A18D904C08
-:10AD1000164000000000004117C00100A38D22432F
-:10AD2000E77D00000000004445C1010000006620EE
-:10AD300017A4010068010040439901005C012EF254
-:10AD400080B00100020062407ECD0100000000578B
-:10AD500081C0010000002E1048B101000300004036
-:10AD6000F08D010000000008F0B10100580100055D
-:10AD7000E0C901000000004461B1010000000010C2
-:10AD800062B10100AD8DA8408132000023830088AC
-:10AD90001CB000000000000548B10100B18D45481D
-:10ADA000613100000050000862DD0100B78D2840CD
-:10ADB00005300000B28D2248777D0000C9941D083F
-:10ADC00000300100E08B004081B20000E08B1D47A5
-:10ADD000198000000400A205486D00003500004005
-:10ADE00047990100010063F384C80100BD8DA043B1
-:10ADF000856C00000000634085B00100A8000040A1
-:10AE00004399010037002FF024B00100040022F321
-:10AE10009E060000010063F382CC0100CB8DA241AD
-:10AE20009E060000E08B224483700000A8000040D2
-:10AE3000439901000400A2F0246C00003600004099
-:10AE40004399010058003D43E7E10100E08B1FF00A
-:10AE5000246C00008E98004881300100AA882341AC
-:10AE6000836C0000AA88004781B0000034000040D5
-:10AE70004399010004002242E66D000058003D4362
-:10AE800085E00100000000F836B00100000000F08D
-:10AE900000B0010004002200803200000400A20083
-:10AEA000BE06000028000040839801005497004728
-:10AEB00061310100238300881CB0000000002D03D5
-:10AEC00048B1010008002DF094B00100000000F826
-:10AED0008EB0010090002DF014B0010000000005BC
-:10AEE00048B10100A88CA2408F7C0000DE8D224773
-:10AEF0008F7C00000400A248197C0000A88C004848
-:10AF000019900000040022468F7C0000608E0040F3
-:10AF100081B200000400A205486D000036002D5DDE
-:10AF200005B4010037002DF380B00100000000F3EC
-:10AF30008EB00100F00000477E8901000400264029
-:10AF4000813200005C003D4381E00100A8002DF04B
-:10AF500094B001000400224A80320000000000F09A
-:10AF600024B001002000001086DC010040800003B6
-:10AF700044C901009293004AF03101000400A25C30
-:10AF80001F7C000036002F5C1F900100F28DA25044
-:10AF90008F50000034002040E1B10100E08B004000
-:10AFA00081B20000F00000477E89010004002640C5
-:10AFB000813200000000634181C00100F78DA04391
-:10AFC000816C00000000634081B001003700204721
-:10AFD000E6B10100E08B2247803200000400004708
-:10AFE0000CF401000000004F8F8401000C8E2247FA
-:10AFF0000C6C000058003D4381E001000C8E1FF0F6
-:10B00000246C00000000005C1F8001000080001024
-:10B0100042C90100058E2240E36D0000000000459A
-:10B0200061B101004000001062DD0100028EA84005
-:10B0300081320000238300881CB00000058E42404E
-:10B0400005300000000000449393010000001A5DE9
-:10B05000699301000A8E23410D6C0000E08D00050C
-:10B0600048B100008E98000548310100AA880048C8
-:10B0700081B00000E08B22408F6C00008697005F5B
-:10B0800081300100E08B004081B200004002000CE2
-:10B090007E8901000400A64081320000A200004029
-:10B0A00043990100000000F384B00100A6002D497F
-:10B0B00019900100020000F280F40100B8002D4058
-:10B0C00081B20100000000F280C0010000000040D9
-:10B0D00082F8010019000040819801001D8EA040F7
-:10B0E000826C00002C010040819801001D8EA3405D
-:10B0F000826C00000000004180B001001F8E204CD7
-:10B10000856C00000000004185C0010086002040E1
-:10B11000E4B10100A2002042E6B10100E08B004052
-:10B1200081B200000F97005081300100E08B004099
-:10B1300081B200000480000342C90100040022F033
-:10B1400080300000000000408DB001007F9800407A
-:10B15000873001000400A25C1F7C0000B0002F5C5F
-:10B160001F900100000060F080C001007C000040E2
-:10B17000439901000400A3F0806C00008697005FF3
-:10B1800081300100E08B004081B2000004000040EB
-:10B1900081B20000E08B2246197C0000A000004034
-:10B1A00047990100010062F296CC0100E08BA640B5
-:10B1B000813200008697004A813001005B9700468B
-:10B1C00095300100E08B004081B20000E08B224905
-:10B1D000197C00008600004047990100010062F2DE
-:10B1E00080CC0100E08BA640813200008697004AA7
-:10B1F000813001005B97004795300100E08B0040F3
-:10B2000081B2000031940040813201000400A25C50
-:10B210001F7C0000E08B005C1F9000000400A24631
-:10B22000197C0000E08B004081B200000400A249BC
-:10B23000197C0000E08B004081B20000BA000040A1
-:10B2400047990100010062F280C80100498E9040D8
-:10B2500080320000FFFF624081980100A40000409E
-:10B2600047990100E08B2240E56D0000E08B004132
-:10B27000E5C100000F97004D81300100E08B0040D8
-:10B2800081B200005C00004047990100040022F0F8
-:10B290009630000000000040E1B101000080000392
-:10B2A00044C901000000004BE0B101000000004073
-:10B2B0008DB001007F980040873001008B00004076
-:10B2C00047990100598E80F396300000000000403D
-:10B2D000E781010000000047199001000400A25C12
-:10B2E0001F7C0000E08B005C1F90000037000040D6
-:10B2F000439901000400A2F38032000034000040B2
-:10B300004599010001000040F5990100001100403D
-:10B31000E5990100BF94004081320100718EA208BE
-:10B32000803200003700004047990100000000F320
-:10B3300082B001000000635183D00100340000405E
-:10B3400047990100010063F384CC0100698E9F429C
-:10B35000803200000000634285B00100000000451B
-:10B3600003F001000000000100C001006B8E375C9B
-:10B37000613100000000001B62B101006C8EA84B1F
-:10B38000191000000000000062B101006E8EA8409C
-:10B3900081320000F087174081B200000080000376
-:10B3A00042C9010090002DF094B00100AC002DF0D6
-:10B3B00030B0010035002DF028B0010034002DF32D
-:10B3C00084B00100040022F3846C000058003E4366
-:10B3D00085E0010001000018F0C901000000004AEA
-:10B3E000E0B1010038002000E0B101003C00201B6A
-:10B3F000E0B1010040002040E1B101000000004048
-:10B400002BB001006A9700400D30010000000018C9
-:10B4100016C00100828EA0141644000000000041F6
-:10B4200017C001000E0000A244C90100000000186E
-:10B43000F8B10100B0002D14F8B101001050004027
-:10B44000879801008B8E224A197C0000003000434F
-:10B4500086C801000030000B16C801008B8EA44086
-:10B46000813200000000004117C0010001006E435E
-:10B4700086980100AE970030813001008F8EA04188
-:10B48000174000000000004117C00100968E224ABC
-:10B49000197C0000080000A244C90100CC002DABBB
-:10B4A000F9B10100000000AB17C00100958EA0F0BB
-:10B4B000164400000000004117C00100000064F0C5
-:10B4C00082B00100900000404599010000006041F9
-:10B4D00031C00100BC000040439901009C8E060C65
-:10B4E00080320000A00020F2E4B10100040009460F
-:10B4F000191000009C01004045990100FFFF000B5E
-:10B50000988801008B002D5017F00100A18E904CFF
-:10B51000164000000000004117C00100A38E224326
-:10B52000E77D00000000004445C1010000006620E6
-:10B5300017A4010068010040439901005C012EF24C
-:10B5400080B00100020062407ECD01000000005783
-:10B5500081C0010000002E1048B10100030000402E
-:10B56000F08D010000000008F0B101005801000555
-:10B57000E0C901000000004461B1010000000010BA
-:10B5800062B10100AD8EA8408132000023830088A3
-:10B590001CB000000000000548B10100B18E454814
-:10B5A000613100000050000862DD0100B28EA84049
-:10B5B0000530000035001D4047990100010063F38C
-:10B5C00084C80100B88EA043856C00000000634071
-:10B5D00085B001003700004047990100040022F3C4
-:10B5E0009E060000010063F382CC01000400A2412A
-:10B5F0009E0600008B000040479901000400A24510
-:10B60000E77D000000000045E79101008697005F9C
-:10B6100081300100E08B004081B200003700004023
-:10B6200047990100959500F394300100608E224AFD
-:10B6300080320000D18C004081B200003700004011
-:10B6400047990100959500F3943001009A8C224AA5
-:10B6500080320000D18C004081B2000036000040F2
-:10B6600043990100000000FB12B001000F0000F33D
-:10B6700090880100040000F30CF40100040026404F
-:10B6800081320000CB8C2206906C00000400AA409E
-:10B69000813200005C003D4313E00100A8002DF062
-:10B6A00094B0010004002240956C000037002FF098
-:10B6B00024B0010036002A50E7D1010000006341A8
-:10B6C00013C00100D88EA043136C0000000000409E
-:10B6D000E7B101008F9300108630010023830088BA
-:10B6E0001CB00000DA8E4205483100000000004422
-:10B6F00093930100CB8C1A5D699300000400A205AE
-:10B70000486D000036002D1086B001005C003D43FE
-:10B71000E7E10100A8002DF094B001000400224AE6
-:10B720008032000035002FF024B0010001006BFBD7
-:10B7300084C80100E78EA043856C000035002040DE
-:10B74000E7B101000000004081B20100010063F395
-:10B7500012C80100EA8EA043136C000000000040F4
-:10B76000E7B101004080000344C901009293004A00
-:10B77000F0310100238300881CB00000ED8E4205EB
-:10B7800048310000000000449393010000001A5D5E
-:10B79000699301003700004047990100040022F33B
-:10B7A0009E060000110063F382CC010004001F41DB
-:10B7B00080320000C28D22419E060000350000400C
-:10B7C0004399010058003D43E7E10100000000F803
-:10B7D00036B00100D08D00F000B000005E012D05F4
-:10B7E00048B10100FA8E65F21230000000993F4224
-:10B7F00013F00100FF8E2247E77D00002783758844
-:10B800001CB00000F98E004081B20000000000472B
-:10B81000E791010000007542199001007500004099
-:10B8200061990100018FA8B10C300000A9960010A9
-:10B8300094300100238300881CB000005E012E05B7
-:10B8400048B10100C0A83D460DE0010000000040E5
-:10B8500097B001000B8F2240E16D0000040002410F
-:10B8600097400000088F005043C10000178F224B03
-:10B87000803200000000624B1294010009000007B2
-:10B8800096E40100000000A797C0010030000010FE
-:10B8900094C801000080004A449901000000004261
-:10B8A000F1B101005E01004BF0C901005E0100052D
-:10B8B000E0C901000000004461B101002000004A1D
-:10B8C00062DD0100158FA840813200000080001069
-:10B8D00044C9010000000050F1B10100040000095A
-:10B8E00096E40100000068A897C00100D40000059C
-:10B8F000E0C901000000004461B101000000001037
-:10B9000062B101001D8FA8408132000023830088AE
-:10B910001CB0000000993F4213F00100218F6540E8
-:10B92000813200003F0000F39688010000000040D3
-:10B93000E7B101000000755561B10100000000068B
-:10B9400062B10100258FA840813200002A8F224B6E
-:10B95000803200000000004B62B10100288FA84037
-:10B96000813200000000009713B001000000009633
-:10B9700097B00100308F2009966C0000308F1F09AE
-:10B9800096240000278300881CB000002B8F004005
-:10B9900081B200000F97005781300100C98B00056C
-:10B9A00048B1000004002242197C00002E00004033
-:10B9B00043990100378F22F3803200000F97004235
-:10B9C00081300100F087004081B20000869700526C
-:10B9D00081300100C98B004219800000040022421E
-:10B9E000197C00000F97003A8130010086970052C1
-:10B9F00081300100C98B004081B20000000000408E
-:10BA000005B001000596004095300100C98B224029
-:10BA1000956C0000240400408998010009990000F9
-:10BA20008A300100458FA2401F7C0000C99400406D
-:10BA300081320100F087004081B2000004800003E1
-:10BA400042C90100000000F202B00100A5950052B9
-:10BA500095300100AC95004B02B00000F08700402B
-:10BA600081B200002B98004095300100518FA20850
-:10BA700080320000518FA21680320000F0872242EF
-:10BA8000197C00000000004B199001000F97003A4C
-:10BA900081300100F087004081B20000002300A641
-:10BAA00016B00100548F831E803200000008000B86
-:10BAB00016DC0100000000002AC001005E970008AB
-:10BAC00080300100588F005E179000007F97004380
-:10BAD000613101009E9300408D30010066970007A0
-:10BAE000161401000080001042C90100608F22403E
-:10BAF000E36D00000000004361B101004000001050
-:10BB000062DD01005D8FA840813200002383008840
-:10BB10001CB000000097005E05100100C9940040B1
-:10BB200081320100648F2209803000008697004036
-:10BB300013300100D08B000548B100003C96004056
-:10BB400081320100C98B004081B200000400A24A8A
-:10BB50001F7C00000000004A1F9001006C8F2243F0
-:10BB60003D7C0000000000441990010000000043EB
-:10BB70003D8001006D8F0042199000000400A24F2B
-:10BB80002B7C00000400A2451F7C000014002D4502
-:10BB90001F9001000400A2F0146C00000400A0013A
-:10BBA000146C0000DF8F831E80320000DF8F0044A2
-:10BBB000199000002F000040439901000400A247A3
-:10BBC000E77D0000B494004081320100878FA20815
-:10BBD00080320000878FA21680320000838FA2423D
-:10BBE000197C00000082000204DC0100A0980040E3
-:10BBF000479901003005004189300100808FA24142
-:10BC0000197C0000C994004081320100F087004097
-:10BC100081B20000A595001594300100AC95004B51
-:10BC200002B00000F087004081B200003C96004066
-:10BC3000813201000000004B199001000F97003A7B
-:10BC400081300100F087004081B200008A8F2242DB
-:10BC5000197C00003C960040813201008B8F00402F
-:10BC600081B200000596004081320100C38F22415D
-:10BC7000197C0000C000001598C80100C38FA00BFC
-:10BC8000996C0000040022441F7C0000FF070000A4
-:10BC90007E8901000400A6408132000030000010BF
-:10BCA00080C801000080004044990100000000505D
-:10BCB000F1B1010000000003F0B1010000000042FA
-:10BCC00061B101000000004062B10100968FA80040
-:10BCD000E0310000238300881CB000000000000554
-:10BCE00048B10100C000001598C8010030002E0BBB
-:10BCF00099D0010000006A5099C001000400200B97
-:10BD0000996C0000C000620180CC01000C8000032F
-:10BD100042C901002D002DF022B001000000004CAE
-:10BD200080C001000000005C23800100D4003F417E
-:10BD3000E7E1010004002242197C00000B0000F240
-:10BD400098E401000000005A998001000400A2005C
-:10BD5000986C0000200400408998010009990011A6
-:10BD60008A3001000B000011E4F501002F0020478C
-:10BD7000E7B50100AE8F230B816C00000000004F7F
-:10BD8000E59101000000000880B00100C100000141
-:10BD900080CE01000400A440813200000000000BAE
-:10BDA00003B001000000001502D001005E97000002
-:10BDB0002A4001000000004361B101004000001072
-:10BDC00062DD0100B58FA840813200002383008826
-:10BDD0001CB00000C994000548310100C0000001FA
-:10BDE00080CE0100C18F261100300000100000003D
-:10BDF0002AC801000000000880B001000000000116
-:10BE000080C00100C00000409998010000000001BE
-:10BE100098D001005E97004C02300100C000004045
-:10BE200003980100CB8F004081B2000030002F0842
-:10BE300080B00100C0000015F4C90100C00000017D
-:10BE4000E4CD0100C100000180CE01000400A44047
-:10BE5000813200000400200BE56D0000C0000040AE
-:10BE6000039801005E9700002A400100D08F224411
-:10BE70001F7C0000AC002F4013B001000000000147
-:10BE8000E0C10100B000004047990100D18F0001DE
-:10BE9000E0D100009E9300408D300100806300A639
-:10BEA00016B001006697000716140100008000100C
-:10BEB00042C90100D98F2240E36D00000000004319
-:10BEC00061B101004000001062DD0100D68FA84082
-:10BED00081320000238300881CB000000097005EC0
-:10BEE00005100100DC8F2209803000008697004099
-:10BEF00081320100C98B000548B100000400A24A4C
-:10BF00001F7C0000DF8F004A1F9000000400A24F3A
-:10BF10002B7C00000400A25C1F7C00000400A244F3
-:10BF20001F7C00000000000010B0010024002D154F
-:10BF300010C0010028002DF016B0010022002DF0E5
-:10BF400026B0010014002FF20CB001000000000127
-:10BF5000E0D101000000001032B001000000000B31
-:10BF60001BB0010004001F151A5000000000004023
-:10BF700023B00100000000012AB00100BE9600407D
-:10BF800035B000002F002040E7B101002990A24504
-:10BF90001F7C00000400A205486D00002400200B57
-:10BFA000E0B1010028002013E0B1010022002006CA
-:10BFB000E4B10100FD8F225C1F7C00000000005CEA
-:10BFC0001F8001003080001042C90100FD8F224017
-:10BFD000E36D00000000004761B101004000001067
-:10BFE00062DD0100F98FA8408132000023830088C0
-:10BFF0001CB000000000000548B101001400004022
-:10C00000439901000400A2F0146C000000800019A4
-:10C0100042C9010022902240E36D000010902242AC
-:10C02000197C000073960040813201005A94004050
-:10C03000813201001D90224B80320000000000433D
-:10C0400061B101004000001062DD01000690A840CF
-:10C0500081320000238300881CB000000C90224134
-:10C06000197C0000E7940040113001000D9000059C
-:10C0700048B10000C9940040813201000F902209AC
-:10C080008030000086970040813201002F830040FD
-:10C0900005B0000073960040813201004F940040CB
-:10C0A000813201000000004361B101004000001036
-:10C0B00062DD01001390A8408132000023830088D4
-:10C0C0001CB0000019902241197C0000E794004048
-:10C0D000113001001A90000548B10000C9940040D9
-:10C0E000813201001C9022098030000086970040B8
-:10C0F000813201002F83004005B0000000000043A2
-:10C1000061B101004000001062DD01001E90A840F6
-:10C1100081320000238300881CB00000000000056D
-:10C1200048B1010025902241197C0000E7940040AD
-:10C13000113001002690000548B10000C99400406C
-:10C14000813201002890220980300000869700404B
-:10C1500013300100D08B004005B0000014000040F7
-:10C16000439901000400A2F0146C00000080001943
-:10C1700042C9010032902240E36D000000000043FC
-:10C1800061B101004000001062DD01002E90A84066
-:10C1900081320000238300881CB0000000000005ED
-:10C1A00048B101000000004005B001003690224176
-:10C1B000197C0000E7940040113001003790000521
-:10C1C00048B10000C99400408132010008002D0AE6
-:10C1D00084B00100000000F082B00100040026409D
-:10C1E0008132000014002040E1B101003D90031EA7
-:10C1F000803200003E90004187B0000021000040E6
-:10C20000879801002C960040813201000400A25C56
-:10C210001F7C00000000005C1F9001004390220979
-:10C220008030000086970040133001004690224481
-:10C23000197C00008697004F813001000000004407
-:10C2400019800100C98BA24A1F7C0000D08B0040DE
-:10C2500081B200000400A205486D0000BA00204031
-:10C26000E5B101004E909C17803200000400224A84
-:10C27000197C0000CC000040439901003698004032
-:10C2800081320100D497004013300100C00000400B
-:10C2900043990100C4002DF082B001000B9800F01A
-:10C2A00084300100C994004081320100D08B220902
-:10C2B000803000008697004013300100D08B004092
-:10C2C00081B200002E000040439901005A902240A4
-:10C2D000E76D000032000040439901006590A240E4
-:10C2E000E56D0000F2950040813201002400200B32
-:10C2F000E0B1010028002013E0B101002200200677
-:10C30000E4B1010004002242197C00001400004046
-:10C31000439901000400A2F0803200001400200ABA
-:10C32000E0B10100D08B22098030000086970040E8
-:10C3300013300100D08B004081B20000F295004024
-:10C34000813201009D9500408132010073902241AD
-:10C35000197C00000000000B99B0010004001F15BB
-:10C360009850000073902001986C0000700000034A
-:10C3700048C9010000002E461F9001000000005037
-:10C38000F1B1010000000003F0B101000000004223
-:10C3900061B10100A00000A462DD01007090A8005E
-:10C3A000E03100000000000548B10100AC002F00A2
-:10C3B00010B0010000000001E0C1010014002F15C1
-:10C3C00010C001000400A2F0803200000000000A4A
-:10C3D00080B001000000600180D001000000004733
-:10C3E00019900100E98F2209803200008697000928
-:10C3F00080300100E98F004013B00000008000038E
-:10C4000042C90100000000F082B0010013000040AA
-:10C41000879801000000004C43C101002C9600F0F9
-:10C42000843001000400A25C1F7C0000C98B005C0A
-:10C430001F9000002C002040E7B101002D0020409B
-:10C44000E7B101002E000040439901000400A2F36F
-:10C450008032000004002242197C0000C98B004297
-:10C46000198000001C960040813201005B97004853
-:10C47000953001000000004561B10100400000104E
-:10C4800062DD01008D90A8401330000023830088F6
-:10C490001CB000009390000548B10000929000404D
-:10C4A00013B000000000000012B0010008000040BE
-:10C4B0004399010014002DF082B0010004002640D1
-:10C4C00081320000040022F084300000130000409C
-:10C4D000879801002C960040813201000400A25C84
-:10C4E0001F7C00000000005C1F900100B09000095C
-:10C4F00000B000000400A205486D0000C98B87420F
-:10C50000191000008B002F4719800100C98B0040D3
-:10C51000E79100000400A2401F7C00002F000040B3
-:10C5200047990100AE902247E77D000004002241B8
-:10C53000197C00001D940040E7310100AE902200FC
-:10C5400080320000A990A2401F7C0000C9940040E6
-:10C5500081320100AE90004081B200003000004006
-:10C560004399010032002DF294B00100A59500F22C
-:10C5700002300100AC95004B02B000000000000545
-:10C5800048B10100AF90004001B000000000004041
-:10C5900005B00100B590220080320000B490A242A4
-:10C5A000197C00000596004081320100B5900040E2
-:10C5B00081B200003C960040813201005491225C1F
-:10C5C0001F7C00000000005C1F8001000080001044
-:10C5D00042C90100BD902240E36D0000000000450B
-:10C5E00061B101004000001062DD0100BA90A84076
-:10C5F00081320000238300881CB0000054910005A4
-:10C6000048B10000B494004081320100C490A208F7
-:10C6100080320000C490A216803200000F97004DB7
-:10C62000813001000082000204DC0100F08700403C
-:10C6300081B200007400004043990100000000F83E
-:10C6400082B00100000000F084B001000000004151
-:10C6500096B00100D5902242961400000080001090
-:10C6600044C9010064006840979801006400004BD1
-:10C6700080CE01000400A64081320000000000418D
-:10C68000F0B1010000000042F0B1010070000005AF
-:10C69000E0C901000000004561B101002000001068
-:10C6A00062DD0100D190A840813200000400A25C4C
-:10C6B0001F7C00000000005C1F900100000000458E
-:10C6C00061B101004000001062DD0100D690A85C5D
-:10C6D0001F000000238300881CB000005E012D05B0
-:10C6E00048B10100DA9065F21230000000993F4233
-:10C6F00013F00100DF902247E77D00002783758853
-:10C700001CB00000D990004081B20000000000473A
-:10C71000E79101000400750996E401000080001013
-:10C7200044C9010000000044F1B10100000068A804
-:10C7300097C0010000000003E0B101000080000389
-:10C74000449901000000004461B1010000000010A4
-:10C7500062B10100E790A840E13100002383008826
-:10C760001CB0000000993F4213F00100EB906505FA
-:10C77000483100003F0000F39688010000000040AF
-:10C78000E7B101000000754081B20100F390224B37
-:10C79000803200000000005561B101000000004B34
-:10C7A00062B10100F190A840813200000000000752
-:10C7B00016B001000062000B16DC01002F000040E3
-:10C7C000439901000400A247E77D00001D9400404A
-:10C7D0008132010010912200803200004E96005FED
-:10C7E00001100100F7902240956C000004002241E6
-:10C7F000197C0000040022401F7C00000080001013
-:10C8000044C9010000000050F1B101000000000324
-:10C81000F0B101000000004261B101000000001011
-:10C8200062B101000191A800E0310000238300887B
-:10C830001CB000000000000548B1010004800003A6
-:10C8400042C90100000000F202B0010004002031E2
-:10C85000036C0000A595005295300100C99400407A
-:10C8600081320100F7902241975000000C800003B4
-:10C8700042C90100000000F000B001000000005CAF
-:10C8800001800100AC95004B02B00000F79000055C
-:10C8900048B1000066970040033001001780000394
-:10C8A00044C9010000F0000C968801000000634CB0
-:10C8B00097F001000400204D976C00000400224016
-:10C8C000976C00001080000344C90100000000AB19
-:10C8D000E1B101000097005E0510010003000007B0
-:10C8E0001AF40100070000071688010000B5000DCA
-:10C8F00046C901001C913040813200000400220B27
-:10C90000E67D00000000000BE681010000B7000D8D
-:10C9100046C901000400220BE67D00000000000B68
-:10C92000E68101001000100F94F401009304005FF1
-:10C930009504010076950040813201002A91225031
-:10C94000FD7F000026914640813200002991A240DF
-:10C95000316F000004001E4081B2000000001E4143
-:10C9600031D3010000002E0548B101000000004055
-:10C97000E1B10100000000400FB00100AB940041A4
-:10C9800081300100F087004081B20000B494004083
-:10C99000813201003D91A208803200003D91A21633
-:10C9A000803200000082000204DC0100000000452B
-:10C9B00003F001000000000100C001003591375C68
-:10C9C000613100000000001B62B101003A91284073
-:10C9D000813200000400A25C777D000036910040A7
-:10C9E00081B200000000000062B101003A91A8404D
-:10C9F00081320000F087174081B2000074002240AD
-:10CA0000F1B1010000000040E1B101005B97004A74
-:10CA1000953001000400A25C1F7C00001C96005CA5
-:10CA20001F100100C490004081B200000400A24029
-:10CA30001F7C00002F0000404799010051912247C0
-:10CA4000E77D000004002241197C00001D94004095
-:10CA5000E731010051912200803200004C91A24048
-:10CA60001F7C0000C99400408132010051910040B8
-:10CA700081B20000300000404399010032002DF2E5
-:10CA800094B00100A59500F202300100AC95004B76
-:10CA900002B000000000000548B101005B970048AB
-:10CAA000953001000400A25C1F7C00001C96005C15
-:10CAB0001F1001000400A205486D00005891874234
-:10CAC000191000008B002F47198001000000004062
-:10CAD000E79101008697004281300100C98B004038
-:10CAE00081B200001C960040813201000400A25C6B
-:10CAF0001F7C0000C98B005C1F900000B00000404C
-:10CB0000439901000400A2F080320000BA002040E6
-:10CB1000E5B10100D497004081320100C00000401F
-:10CB200043990100C4002DF082B001000B9800F081
-:10CB300084300100C994004081320100869700458D
-:10CB400081300100C98B2242197C00000F97003A06
-:10CB500081300100C98B004081B200000400004018
-:10CB600081B20000B4940040813201007091A208AB
-:10CB7000803200007091A216803200000F970047AB
-:10CB8000803001000082000204DC0100F0870040D8
-:10CB900081B200001080000344C9010000E100A63A
-:10CBA00084B0010000000040F1B10100000000402D
-:10CBB000F1B1010000006007849401000097005E5D
-:10CBC00005100100C98B004081B200008A000040BE
-:10CBD00047990100C9940041E7410100D08B004012
-:10CBE00081B200000400A205486D00000400A241CB
-:10CBF000197C00000400A2481F7C0000F295004050
-:10CC0000813201000400A30A0C6C00009D950040D5
-:10CC100081320100000000012CB00100000000156D
-:10CC200010B001000000000010C0010004001F0A45
-:10CC30002C50000014000040439901000400A2F0B1
-:10CC4000803200000000001032B00100A197000601
-:10CC5000043001008E91A2481F7C00008C91844812
-:10CC60001F100000AC000040479901008E91000A9F
-:10CC7000E0C100000000000A02B001009E93000124
-:10CC80008C3001000000004361B101004000001041
-:10CC900062DD01008F91A84081320000238300886B
-:10CCA0001CB000000000000548B1010000000002B7
-:10CCB00010C001009C91220214500000799600459A
-:10CCC0001F0001008691225C1F7C000000000047CD
-:10CCD00061B101004000001062DD01009891A85C84
-:10CCE0001F000000238300881CB00000869100050F
-:10CCF00048B100000000000B1BB0010008002D40EF
-:10CD000085B00100000000F082B00100000000408A
-:10CD100005B001002C96004187300100000000455D
-:10CD200061B101004000001062DD0100A291A84045
-:10CD300081320000238300881CB000000000000541
-:10CD400048B10100A8912209803000008697004078
-:10CD500013300100AC912244197C00008697004FEB
-:10CD600081300100AC91A2471F7C0000000000440C
-:10CD700019800100FF070008008C01000400264014
-:10CD800081320000BB91224A1F7C0000B391A216A1
-:10CD900002300000C9940040813201002F00204081
-:10CDA000E7B10100C98B004081B200002D002D08C1
-:10CDB0002AB00100B7912242197C00003C96004045
-:10CDC00081320100B891004081B200000596004018
-:10CDD0008132010030002E002AD0010032002A15D5
-:10CDE000E4B10100C98B0016E4B10000D191221614
-:10CDF000023000000400A2471F7C00000000000871
-:10CE00002AB001002B98004095300100C191A2404A
-:10CE1000116C0000D29122402D6C00000400A2058C
-:10CE2000486D0000040022441F7C0000AC0000405C
-:10CE300047990100B0002B01E0C10100002B00A6C2
-:10CE400016B0010000000001E0D101005E9700086B
-:10CE500080300100CA91005E179000007F97004368
-:10CE6000613101000000004361B101004000001089
-:10CE700062DD0100CB91A84081320000238300884D
-:10CE80001CB000000000000548B1010066970007D3
-:10CE9000161401000097005E05100100C9940040BF
-:10CEA000813201002F002040E7B10100D08B00400B
-:10CEB00081B200000000000B1BB0010004001F1530
-:10CEC0001A500000E09120161A6C00000400224065
-:10CED0001F7C00007000000348C9010000002250C0
-:10CEE000F1B1010000000003F0B1010000000000FA
-:10CEF000E0B101000000004261B10100A00000A407
-:10CF000062DD0100DD91A8461F1000000000000551
-:10CF100048B101000000000010B001000000001541
-:10CF200010C001000000000A2AB001000000000A41
-:10CF30002CD0010004001F168032000014000040B5
-:10CF4000439901000400A2F080320000AC002F40A1
-:10CF500023B00100EA9184451F100000EB91000A04
-:10CF6000E0C100000000000A02B00100BE960040CF
-:10CF700035B000000400A25C1F7C00000080001996
-:10CF800042C90100F4912240E36D0000000000431B
-:10CF900061B101004000001062DD0100F091A84085
-:10CFA00081320000238300881CB0000000000005CF
-:10CFB00048B101000592A2021A5000000A922240D4
-:10CFC0002D6C0000040022401F7C00000080001037
-:10CFD00044C9010000000050F1B10100000000034D
-:10CFE000F0B10100FF070008E08D010000000042E1
-:10CFF00061B101000000001062B10100FC91A84085
-:10D0000081320000238300881CB00000000000056E
-:10D0100048B101002F002047E7B501000C80000354
-:10D0200042C90100100000F010C80100F0070040E4
-:10D030001B9801000A92005C118000000400A25FAE
-:10D040001B7C0000FF070008988801000000000218
-:10D0500098C001000400200B996C00000000000241
-:10D0600010C0010004002240236C00000400A34310
-:10D07000236C0000E79400401F0001000000000541
-:10D0800048B101001092230D2C6C000000000040FC
-:10D090001F900100199222461F7C000000000046EC
-:10D0A0001F8001007080000342C9010019922240D4
-:10D0B000E36D00000000004261B10100400000107B
-:10D0C00062DD01001592A8408132000023830088B0
-:10D0D0001CB000000000000548B1010008002D4010
-:10D0E00085B00100000000F082B0010000000040A7
-:10D0F00005B001002C96004187300100000000457A
-:10D1000061B101004000001062DD01001E92A840E4
-:10D1100081320000238300881CB00000000000055D
-:10D1200048B1010024922209803000008697004017
-:10D130001330010028922244197C00008697004F8A
-:10D14000813001002892A2471F7C000000000044AB
-:10D1500019800100FF070008008C01000400264030
-:10D16000813200003E92224A1F7C00002F92A216BC
-:10D1700002300000C9940040813201002F0020409D
-:10D18000E7B10100C98B004081B200002D002D08DD
-:10D190002AB001003A922242197C00003392A2F395
-:10D1A00084300000000000A585B0010000000041AF
-:10D1B00085D00100D4003E4185E001003792224035
-:10D1C0001F7C00000000005A119001000B000008B5
-:10D1D000E4F501003C960040813201003B920040A2
-:10D1E00081B20000059600408132010030002E001F
-:10D1F0002AD0010032002A15E4B10100C98B0016C3
-:10D20000E4B100004192A21602300000C99400402F
-:10D21000813201009A92004081B200002D002D0859
-:10D220002AB00100549222471F7C00000400A09104
-:10D23000036C00004E922242197C00004792A2F338
-:10D2400084300000000000A585B00100000000410E
-:10D2500085D00100D4003E4185E001004B92224080
-:10D260001F7C00000000005A119001000B00000814
-:10D27000E4F50100200400408998010009990008A4
-:10D280008A30010058012D002AD0010060012DF0E4
-:10D2900010B00100000000F02CB0010000000016EA
-:10D2A00080B2010004002740116C0000878F00400D
-:10D2B00081B200000400A391036C00002B98004190
-:10D2C000953001005D92A208803200005D92A216A6
-:10D2D000803200000000004197B001005B92230DF6
-:10D2E000026C00000000004197C00100AC95004BAB
-:10D2F00002B000009A92000548B100000400A205A7
-:10D30000486D0000040022441F7C0000AC002F0187
-:10D3100014B00100B0002B01E0C10100002B00A6F9
-:10D3200016B0010004002241197C00000000000139
-:10D33000E0D101007092230D026C0000008000100B
-:10D3400044C9010000000050F1B1010000000003D9
-:10D35000F0B101000000004261B1010000000010C6
-:10D3600062B101006992A800E031000023830088C7
-:10D370001CB000000000000548B101000C80000353
-:10D3800042C90100100000F022C801000000005C4A
-:10D39000238001000000000184B001007392230D7E
-:10D3A000026C00000000000D02B001000000000847
-:10D3B00080B00100789222401B6C00005E97000153
-:10D3C0008450010081922240856C00000000000121
-:10D3D00080C001001080001046C901000000004F0D
-:10D3E0004381010000000042F0B101002000004034
-:10D3F000F0C9010000000016F0B101000000004378
-:10D4000061B10100A00000A162DD01007E92A811BF
-:10D41000E031000004002240236C00009092005E86
-:10D42000179000008492230D026C00000000000D94
-:10D4300002B001000000000184D001008992224066
-:10D440001B6C00007F9700436131010090922240E5
-:10D45000856C00000000000112C001001080001067
-:10D4600046C901000000004F438101000000004256
-:10D47000F0B1010000000009F0B101000000001847
-:10D48000F0B10100A00000A162DD01008E92A811A0
-:10D49000E03100000000004361B1010040000010D5
-:10D4A00062DD01009192A80A023000002383008807
-:10D4B0001CB00000C9940005483101009892230D6A
-:10D4C000026C0000FF070011008C0100C9940040AD
-:10D4D0008132010066970007161401000097005E74
-:10D4E000051001002F002040E7B10100D08B004063
-:10D4F00081B200000080000342C90100000000F872
-:10D5000082B001000400264081320000000000F8D3
-:10D510008CB00100000000F08EB00100EC950040DE
-:10D520001330010004000C4780320000000000406E
-:10D5300085B001002C960041873001009D95004088
-:10D540008132010004002091036C00000080001073
-:10D5500042C90100AE922240E36D00000000004588
-:10D5600061B101004000001062DD0100AA92A840F4
-:10D5700081320000238300881CB0000000000005F9
-:10D5800048B10100B0922209803000008697004027
-:10D59000133001000000000B1BB00100000000155B
-:10D5A0001AD00100B792A241197C00002B980040CC
-:10D5B000953001000000001680B20100C0922708DB
-:10D5C00080320000C19100002AC000002B98004169
-:10D5D000953001000000001680B20100BB922708C0
-:10D5E000803200005D9200002AC00000000000416F
-:10D5F00097B00100BE92230D026C000000000041B4
-:10D6000097C00100AC95004B02B00000000000057F
-:10D6100048B10100C98B2242197C00000F97003AE3
-:10D6200081300100C98B004081B200000400A24A91
-:10D630001F7C0000C592004A1F9000000400A24118
-:10D64000197C00000400A24F2B7C00000400A244BF
-:10D650001F7C00000400A2451F7C0000FF94000016
-:10D66000103001000000001510C001000000001083
-:10D6700032B00100A197000604300100D292A2440A
-:10D680001F7C00000000000B1BB001000000000A1E
-:10D690002CD001000000000A02B001009E9300019E
-:10D6A0008C3001000080001942C90100D99222404B
-:10D6B000E36D00000000004361B101004000001074
-:10D6C00062DD0100D592A8408132000023830088EA
-:10D6D0001CB000000000000548B10100000000027D
-:10D6E00010C00100E2922202145000007996004519
-:10D6F0001F000100CB92225C1F7C0000000000474D
-:10D7000061B101004000001062DD0100DE92A85C02
-:10D710001F000000238300881CB00000CB9200058E
-:10D7200048B1000008002D4085B00100000000F065
-:10D7300082B001000000004005B001002C960041BD
-:10D74000873001000000004561B101004000001079
-:10D7500062DD0100E792A840813200002383008847
-:10D760001CB000000000000548B10100ED92220944
-:10D77000803000008697004013300100F092224470
-:10D78000197C00008697004F8130010000000044A2
-:10D7900019800100FF070008008C010004002640EA
-:10D7A00081320000FF92224A1F7C0000F792A216ED
-:10D7B00002300000C9940040813201002F00204057
-:10D7C000E7B10100C98B004081B200002D002D0897
-:10D7D0002AB00100FB922242197C00003C960040D6
-:10D7E00081320100FC92004081B2000005960040A9
-:10D7F0008132010030002E002AD0010032002A15AB
-:10D80000E4B10100C98B0016E4B10000BC91A2167E
-:10D8100002300000C9940040813201002F002040F6
-:10D82000E7B10100D08B004081B20000040022412A
-:10D83000197C00000400A24F2B7C00000400A244CD
-:10D840001F7C00000400A2451F7C00000400A24AC7
-:10D850001F7C0000FF94004A1F100100D4910010AB
-:10D8600032B000008A002040E7B101000E93A241CF
-:10D87000197C0000C99400408132010011930040DE
-:10D8800081B20000A595001594300100AC95004BC5
-:10D8900002B000000000000548B1010013932242CD
-:10D8A000197C00000F97003A8130010086970045EF
-:10D8B00081300100C98B004081B2000065900045B5
-:10D8C0001F90000004002241197C00000400A247C0
-:10D8D0001F7C0000F2950040813201000400A30A81
-:10D8E0000C6C00009D95004081320100D491000134
-:10D8F0002CB0000004002241197C00000400A24862
-:10D900001F7C0000B4940040813201002C93A208D7
-:10D91000803200002C93A2168032000000820002A8
-:10D9200004DC01000000004503F0010000000001DC
-:10D9300000C001002493375C613100000000001B2F
-:10D9400062B1010029932840813200000400A25CEA
-:10D95000777D00002593004081B2000000000000A8
-:10D9600062B101002993A84081320000F08717407E
-:10D9700081B2000058012008E0B1010060012016CA
-:10D98000E0B10100F29500471F1001000400A30A56
-:10D990000C6C00009D95004081320100D491000183
-:10D9A0002CB0000004002241197C00000400A247B2
-:10D9B0001F7C0000B49400471F1001004393A2088D
-:10D9C000803200004393A216803200003F93A242AF
-:10D9D000197C00000082000204DC0100A0980040D5
-:10D9E00047990100300500418930010004002241BF
-:10D9F000197C0000A595001594300100AC95004BF2
-:10DA000002B00000F087004081B200003C96004068
-:10DA1000813201000000004B199001000F97003A7D
-:10DA200081300100F087004081B2000058012008D9
-:10DA3000E0B1010060012016E0B101000400A24F36
-:10DA40002B7C00000400A2441F7C00000400A245BF
-:10DA50001F7C0000FF94001032300100D491004080
-:10DA600013B00000B4940040813201005893A20822
-:10DA7000803200005893A21680320000008200021B
-:10DA800004DC01000000004503F00100000000017B
-:10DA900000C001005093375C613100000000001BA2
-:10DAA00062B1010055932840813200000400A25C5D
-:10DAB000777D00005193004081B20000000000001B
-:10DAC00062B101005593A84081320000F0871740F1
-:10DAD00081B200000080000342C90100000000F88C
-:10DAE00082B001000400264081320000000000F8EE
-:10DAF0008CB00100000000F08EB00100EC950040F9
-:10DB00001330010004000C47803200000000004088
-:10DB100085B001002C960041873001009D950040A2
-:10DB2000813201000400A091036C0000008000100D
-:10DB300042C901006A932240E36D000000000045E5
-:10DB400061B101004000001062DD01006693A84051
-:10DB500081320000238300881CB000000000000513
-:10DB600048B10100878F220980300000869700406D
-:10DB700013300100878F004081B200000400831E33
-:10DB8000803200000400A24F2B7C00000400A2455C
-:10DB90001F7C000014002D451F9001000400A2F01E
-:10DBA000146C00000400A001146C0000DF8F00441E
-:10DBB000199000000400A24A1F7C00007893A24143
-:10DBC000197C00000000004A1F9001007A9100407B
-:10DBD00081B200000400A2481F7C0000F295004AB8
-:10DBE0001F1001000400A30A0C6C00009D9500406A
-:10DBF00081320100D49100012CB0000004002241C8
-:10DC0000197C00000400A24F2B7C00000400A244F9
-:10DC10001F7C00000400A2451F7C0000FF94004010
-:10DC200081320100D491001032B000008B0000401E
-:10DC3000439901000400A246E77D0000659000457D
-:10DC40001F9000000000004137C3010000000041A8
-:10DC500033C301003600000102CC01000000D240B5
-:10DC600081B200008C9385178032000000009F482D
-:10DC700003D000008E939C178032000000009F4C60
-:10DC800003D000000000800134C301004080000385
-:10DC900044C901000000004AF0B101000400264020
-:10DCA0008132000000000040F1B1010000000012CC
-:10DCB000F0B10100D1940041E13101000080004346
-:10DCC00044C9010010000040F19901000000004823
-:10DCD000F0B1010000000049F0B101004000000374
-:10DCE000E0C901000000004561B1010000000043EF
-:10DCF00062B101000000A84081B200009B93004087
-:10DD000081B200002D04004089980100099900A506
-:10DD10008A300100BA002040E5B10100B0002F01B7
-:10DD20008CD0010004001FF080320000000000468B
-:10DD3000E0C10100AC002F4013B00100CC002D0168
-:10DD4000E0C10100A9939C17803200000400224A20
-:10DD5000197C00003698004081320100AB932247C5
-:10DD6000197C00000000005F13900100D497004769
-:10DD700019100100C0002D441F900100C4002DF0B7
-:10DD800082B001000B9800F084B0000090002D05D7
-:10DD900048B10100C093A24B1F7C00001594A24C17
-:10DDA0001F7C0000C0931F1CE06D0000C393A20104
-:10DDB00080320000A8002D468FB00100B9931F1CCF
-:10DDC000E06D0000B400004043990100BB9322F0D5
-:10DDD0003A6C000012941FF03A6C00000000A24060
-:10DDE00080B200000000804F8FB001008A00004028
-:10DDF0004399010013942042E76D0000BF93224035
-:10DE000080320000000080598FB00100000080586F
-:10DE10008FB00100C2932240803200000000805C7D
-:10DE20008FB001000000805B8FB00100AC000040AB
-:10DE300043990100B0002DF084B00100C793A242C5
-:10DE4000246C0000D29323F0026C0000B00000A10B
-:10DE500080CE01000400A64081320000CF93A2F0E2
-:10DE6000803200001494A242246C00001494A24159
-:10DE7000036C0000CE93A24080320000000080516D
-:10DE80008FB00100000080528FB0010014941F1267
-:10DE9000845000001494A001846C0000C0930040E2
-:10DEA00081B200008B00004043990100FD93A2461F
-:10DEB000E77D00001400004043990100EF9322F039
-:10DEC00014300000DB93200A026C0000EC93031E68
-:10DED00080320000DA93A2408032000000008044CB
-:10DEE0008FB00100000080498FB00100E093220A4A
-:10DEF000026C0000E393A241197C0000DF93A24072
-:10DF000080320000000080558FB001000000805674
-:10DF10008FB00100E293A2408032000000008043F5
-:10DF20008FB00100000080488FB0010000000001A8
-:10DF300082B001000000000A82D00100E993209124
-:10DF4000836C0000E893A2408032000026008040ED
-:10DF50008F980100270080408F980100EB93A2402A
-:10DF6000803200001F0080408F9801002000804018
-:10DF70008F980100EE93A240803200002200804082
-:10DF80008F980100230080408F98010088002D4465
-:10DF90008FB00100F893A241197C0000F593A243D1
-:10DFA0003D7C0000F593A2F2026C00000000A2404C
-:10DFB00080B20000000080498FB00100F793A240BA
-:10DFC00080320000000080438FB0010000008048D4
-:10DFD0008FB00100F593A091036C0000F3932243EE
-:10DFE0003D7C0000FC93A24080320000280080406D
-:10DFF0008F980100290080408F9801001400004094
-:10E00000439901000694A2F01430000088002D44CA
-:10E010008FB001000394A2F2026C00000000A24045
-:10E0200080B20000000080498FB00100F5932241CA
-:10E03000197C0000F3932091036C0000F5930040DD
-:10E0400081B200000A94200A026C00000994A240E8
-:10E0500080320000000080448FB001000000804941
-:10E060008FB001000F94220A026C0000E393A241DA
-:10E07000197C00000E94A240803200000000805500
-:10E080008FB00100000080568FB001001194A240B3
-:10E0900080320000000080438FB001000000804803
-:10E0A0008FB001001794004395B000001794004111
-:10E0B00095B000001794004295B0000017940044FA
-:10E0C00095B000001794004C95B00000300400405B
-:10E0D000899801000999004A8A3001005B97004045
-:10E0E000813201001C94A240803200000000804B6D
-:10E0F0008FB001000000804C8FB001000400A20529
-:10E10000486D00002D000040439901002E002FF3C0
-:10E1100084B001002294A2F39630000000008040F9
-:10E1200001B001002D002A41E7D10100D4003D419A
-:10E1300085E001000B0000F200E401002894225A5F
-:10E14000017C0000000000401F9001002994005A4B
-:10E1500001800000000000401F80010000006341BA
-:10E1600085C001002C94A0A5856C000000006340D0
-:10E1700085B001001204004089980100099900004F
-:10E180008A3001000000804081B201000000A0A59B
-:10E19000856C01000000E34085B001000C800003A5
-:10E1A00042C9010012000040879801007F9800F0EA
-:10E1B0008CB000000400225F1F7C000041942240CC
-:10E1C0000F6C000000002F0548B101000400225A26
-:10E1D0001F7C0000100000F098F401000400A2076A
-:10E1E000986C00001000000C98F401000400A207D5
-:10E1F000986C00003E94A24B197C00003F9422F0E2
-:10E20000186C00000000604B199001004395000756
-:10E21000103001002F83004005B000004394225AC3
-:10E220001F7C0000AB940040813001002F83004030
-:10E2300005B000000400225F1F7C000000002F05D5
-:10E2400048B101000000604B199001000400225AFF
-:10E250001F7C0000040022400F6C0000100000F042
-:10E2600096F401000400A207966C00001000000C58
-:10E2700096F401000400A207966C00004395000785
-:10E28000103001002F83004005B000000400225F21
-:10E290001F7C000000002F0548B101000000604B0A
-:10E2A000199001000400225A1F7C00000400224043
-:10E2B0000F6C0000100000F096F401000400A207AB
-:10E2C000966C00001000000C96F401000400A207F8
-:10E2D000966C00004395000710300100000080405C
-:10E2E00005B001005A943340813200005D94A1AD25
-:10E2F000952000006F94134081B200000000134A83
-:10E300005A8301003000394595E001000400A25F06
-:10E310005F7C00000400A25E5F7C00001F00000F15
-:10E320005ED801000000005A5F9001000000005E0E
-:10E330005F9001000000004045B0010000000004B3
-:10E3400048B00100000000054AB001000000000CC8
-:10E3500058B00100000000074EB001001C850040CD
-:10E360005D9801000400A2445F7C0000000000589A
-:10E3700061B101000000004A62B101000000A84143
-:10E3800097B000006C94004081B200000000804013
-:10E3900097B001000400A240056C00001C990040E9
-:10E3A000813201007294600796300000FFFF004B3D
-:10E3B00084890100000070C224B001007F94A2454E
-:10E3C000257C000076943120853000008094221254
-:10E3D000487F000058041112480301001000001289
-:10E3E00096E401000000004B1E9401001704004059
-:10E3F00089980100000000128AB001000999005FAD
-:10E400008B1001000000805A1F9001007F94314062
-:10E4100081320000000000B424B001008094221278
-:10E42000487F00005804004081320100170400407A
-:10E4300089980100099900128A30010000002F0517
-:10E4400048B101008F940BF08430000000001112DD
-:10E45000488301008C942250857000005E010040CA
-:10E4600043990100B49600F2963001009304001223
-:10E47000943001000000005A1F90010010000012AB
-:10E4800096E401000000804B1E9401001000004241
-:10E4900010F40100040022088032000000B73F435E
-:10E4A00011F00100070000088A880100939430A150
-:10E4B0000C30000096942245E67D000080941040C8
-:10E4C00081B2000000002A45E69101000000101210
-:10E4D000488301000400A205486D000000001140BF
-:10E4E00081B201000000604B858001005E010040A8
-:10E4F00043990100B49600F29630010000800010AC
-:10E5000044C90100D8000040819801002E002D056B
-:10E5100048B10100A2942240E76D00008000004055
-:10E5200080C8010000000040F0B1010009000008AF
-:10E5300086E40100000068A787C0010000000044D5
-:10E5400061B101000000001062B10100A694A805AD
-:10E55000E03100001000001296E401000014004BAE
-:10E5600096DC01000000804B1E9401000400225A3A
-:10E570001F7C00001000000F84F401001F00004207
-:10E5800084880100B094224080320000B19400429F
-:10E5900068B10000000000426AB10100B194315A34
-:10E5A0001F0000000400A242487F000000009142CA
-:10E5B00048930100B4943540813200006D00004062
-:10E5C00061990100BA9428B12C300000B594224D15
-:10E5D000757D0000000000402DB001000000954056
-:10E5E00011B001006D00004061990100BA94A8B11A
-:10E5F000103000000000001680B20100040027085F
-:10E60000803200000000954081B201007F00004090
-:10E6100061990100C59428B110300000BF949FBAE1
-:10E6200080320000150000408998010009990040DF
-:10E63000813201000000804011B001000400225C22
-:10E64000117C00000400A25A117C00000400220882
-:10E650004806000000008024118401000400A25C30
-:10E66000017C00000400A25A017C0000040022008A
-:10E670004806000004001FBB803200000000005F5D
-:10E6800061B101000010000062DD01000000A8403F
-:10E6900081B20000CE94004081B20000AC940040F2
-:10E6A00047990100D294324081320000DA9422F876
-:10E6B00096300000000000F890B00100000000F06B
-:10E6C00092B001000000004880B201000400274918
-:10E6D000803200000100004BF0CD01002000924884
-:10E6E000E0C901006C00004061990100DE9428B18E
-:10E6F00092300000DA94224C757D00000400124034
-:10E7000091B000006C00004061990100DE94A8B156
-:10E71000903000000000004980B20100040027484A
-:10E7200080320000FF000048968801000000004B86
-:10E7300090D001000100004BF0CD01002000004806
-:10E74000F0C9010000009249E0B101000C002D1059
-:10E7500048B10100FF070008828C01000400A25CA0
-:10E76000837C0000FF0700F0008C01000400A25C25
-:10E77000017C000004002240016C00000000A24166
-:10E7800000EC0000F094221A006C0000C994000014
-:10E79000343001000000005049C10100EA94A24158
-:10E7A000235000000000804081B201000C002D10B9
-:10E7B00048B10100FF070015828C01000400A25C33
-:10E7C000837C0000FF0700F0008C01000400A25CC5
-:10E7D000017C000004002240016C00000000A24106
-:10E7E00000EC0000FC94220D006C0000C9940000B5
-:10E7F0001A3001000000005049C10100F694A24106
-:10E80000235000000000804081B201000195831E6A
-:10E8100080320000000000441990010024002D0106
-:10E820002CB0010028002DF016B0010022002DF0C0
-:10E8300026B0010014002FF20CB001000400A2F079
-:10E84000146C000004002001146C000000008040E3
-:10E85000E1B10100300000409798010060972E4020
-:10E8600081B2010000000040F1B101000A95A2410F
-:10E870009750000064973E439DE0010000008040F7
-:10E88000E1B1010064973E439DE001000000800B70
-:10E89000E8B1010064973F439DE00100000000F0F3
-:10E8A00016C0010000008040E1B1010064973F43C1
-:10E8B0009DE00100000000F416B00100000080405F
-:10E8C000E1B1010060173D439DE00100100080A10F
-:10E8D00016E401000400A207166C00001A040040B0
-:10E8E000899801001000000B8AE401000999000DCD
-:10E8F0008A14010000B5000D42C901001D95304782
-:10E90000170400002095A20BE67D00000000904255
-:10E9100081B0010000B7000D46C901002495A20B8B
-:10E92000E67D00000000000BE69101000000904130
-:10E9300081B001000000104081B201002595400720
-:10E94000963000009D040040813201002F95A245C1
-:10E95000957C000001973F4195E00100000000F325
-:10E9600096B001000000004EE6B1010040973E4025
-:10E9700097E001000000004EE6B1010040973E40E4
-:10E980009DE001004295003BE7B100002F9530402B
-:10E99000813200003995A20BE67D000000B5000D24
-:10E9A00046C901003595A20BE67D0000000010402D
-:10E9B00081B201000000984281B0010000B7000D53
-:10E9C00046C901000000000BE69101000000104064
-:10E9D00081B201000000984181B00100040021A231
-:10E9E000952000000000104A4483010000973E413A
-:10E9F00095E001000000004EF6B101000000004E5D
-:10EA0000E6B1010040973E409DE001000000003B60
-:10EA1000E7B101000000004A90B10100FFFF0007CC
-:10EA2000928901000000984081B00100110400406B
-:10EA300089980100099900088A3001000300000844
-:10EA400086F4010000B7004346C901000700000832
-:10EA50008288010004002208803200000400224164
-:10EA6000E67D00004A954008963000009D04004075
-:10EA70008132010058952245957C00005395225A19
-:10EA80001F7C00001000000F96F401004F95315FCD
-:10EA9000970400000400A24B487F00000000114BC7
-:10EAA000489301000000004B6AB1010053953040CB
-:10EAB0008132000004002241E67D00000000004198
-:10EAC000E68101000000104081B201000000984082
-:10EAD00081B2010000973F4195E00100000000F382
-:10EAE00096B0010040973D4097E00100000063F3BD
-:10EAF00088B001006195A23B896C00000000004ACB
-:10EB000090B10100010000A692B101000400A24AE8
-:10EB1000447F00006295184A4493000000001840AA
-:10EB200081B201003F0400408998010016000012E4
-:10EB30008AE401000999004B8A140100300039452C
-:10EB400097E001000400A25F5F7C00000400225EE9
-:10EB50005F7C00001F04002F7ED901000400A64046
-:10EB6000813200006E95225A1F7C00001F04000FA6
-:10EB700098D801000000004C5E94010070950005DB
-:10EB80004AB000001F0400A75E840100000000409E
-:10EB90004BB001000000005E5F9001000400A2087D
-:10EBA0004E6C00000000005861B101000000004BF5
-:10EBB00062B101000000A84081B2000073950040DE
-:10EBC00081B20000330400408998010009990007D0
-:10EBD0008A30010078954007963000009D0400407F
-:10EBE000813201007C952245957C00000000984010
-:10EBF00081B201000400A24A447F00009B04004A45
-:10EC00004413010000973F4195E00100000000F32C
-:10EC100096B0010040973D4097E00100000063F38B
-:10EC200088B001003000384597E001000400A25F81
-:10EC30001F7C00000400225E1F7C0000040020AA4C
-:10EC40000F6C00000000005F0F90010000000058F2
-:10EC500061B101000000004B62B101008895A8403D
-:10EC6000813200007E95A23B896C0000300038455F
-:10EC70009DE001000000984081B2010004002208DC
-:10EC8000803200000300000894F4010000B7004A3D
-:10EC900046C9010007000008968801000400224BC5
-:10ECA000E67D000093040012943001004395005A61
-:10ECB0001F0001000000805A1F9001001100004A4F
-:10ECC000E6C901003000004A80CE01000400244063
-:10ECD0008132000034002F4F95840100000000F3C2
-:10ECE00096B001000100634B84C801000000A043FE
-:10ECF000856C01000000E34085B0010030002D4428
-:10ED00001F90010032002DF22AB0010004002640BD
-:10ED100081320000040022F2023000001D94001035
-:10ED20003230010004002200803200000400224240
-:10ED3000197C00003200A040E5B101000000004055
-:10ED400097B00100F0070040999801000000004AC8
-:10ED500002C001000000005003D00100000000418B
-:10ED600097C001000000A34C02D00000A99500400C
-:10ED700081B20000000000A836B00100BA9522411F
-:10ED8000035000000080001044C901000000005042
-:10ED9000F1B1010070000003F0C901000000004261
-:10EDA00061B101000000001062B10100B295A8003D
-:10EDB000E0310000238300881CB00000C9940040AB
-:10EDC000813201007C80000342C90100040022401E
-:10EDD000E16D0000000000F000B00100AD95005CA6
-:10EDE00001800000C9940040813201000000001B36
-:10EDF00010B1000068012D0682B00100000000F291
-:10EE000082C001000080000346C90100BF94004099
-:10EE100081320100E8952240116C00000000680872
-:10EE2000389601003A0400408998010009990008C9
-:10EE30008A300100F007004182CC0100BF95AA4151
-:10EE40003B400000000000F810B001000000005C32
-:10EE5000118001000400A3483B6C00000100001D6C
-:10EE600004CC0100E695264623300000080000038C
-:10EE700012C801000480000398C801000400A24CDD
-:10EE8000426D00000400A205486D0000640120F0FE
-:10EE9000E0B10100E595224105500000200000038B
-:10EEA00048C901000C0000F886C801000000224497
-:10EEB000F1B1010000000043F0B1010000000009C1
-:10EEC000E0B101000000004461B10100A00000A415
-:10EED00062DD0100D795A8461F100000E49522418D
-:10EEE00005500000E295A24123500000000000A15F
-:10EEF0001AB001000000004461B1010040000010A0
-:10EF000062DD0100DD95A8462330000023830088E0
-:10EF10001CB000001000000348C901000000000DF3
-:10EF200042B101000000004413C00100D29500501E
-:10EF300049C100000000000548B101000480000341
-:10EF40001AC801000400A205486D000000008040BE
-:10EF500081B20100E69522403B6C0000000000F801
-:10EF600000B00100C994005C01000100E895004177
-:10EF70003BD0000000008D4780320100B0002F5FC1
-:10EF800013B00100000060F08CC001007C00004064
-:10EF9000439901000400A3F08C6C00000000804045
-:10EFA00081B201000080000342C90100000000F8A6
-:10EFB00094B00100000000F88CB00100F7958CF8C7
-:10EFC0008E3000000000004419900100040022F877
-:10EFD00014300000000000F816B00100000000F836
-:10EFE00026B0010008002EF80CB001000C002A4ADF
-:10EFF000E0B1010028000000E0C901001000201B62
-:10F00000E0B101000496200A0C6C0000000000F83A
-:10F0100094B00100000000F896B00100200020F03C
-:10F02000E4B101001800204AE0B101001C00204BAF
-:10F03000E0B10100EC95004013B000000400A2050F
-:10F04000486D00002C002D42199001002E002FF376
-:10F0500082B00100000000F396B001000B96A2A55B
-:10F06000976C00000000804195B001000E96A24010
-:10F07000976C00000000004083B001002D0020408C
-:10F08000E7B101000000634197C00100D4003E4198
-:10F0900083E001000000004183C001001396A0A599
-:10F0A000836C00000000004083B001002C00204170
-:10F0B000E6B10100189622401F7C00000004000009
-:10F0C00098DC01000B00004CE4F5010019960040AB
-:10F0D0001F8000000B000000E4F501001E0400404A
-:10F0E00089980100099900008A30010000008040E1
-:10F0F00081B20100D1940040813201000080000300
-:10F1000042C9010004002240E16D000004800003B8
-:10F1100044C9010000000040F1B1010000000040BE
-:10F12000F1B101000000604187B0010000800010D3
-:10F1300044C9010000000050F1B101000000004886
-:10F14000F0B1010000000049F0B10100000000032F
-:10F15000E0B101000000004561B101002000001095
-:10F1600062DD01000000A85D0590000029960040C6
-:10F1700081B20000D1940040813201000080000380
-:10F1800044C9010000000041F0B101000400264024
-:10F190008132000000000042F0B101000000004098
-:10F1A000F1B1010000000043F0B101000080001047
-:10F1B00044C9010000000050F1B101000000004806
-:10F1C000F0B1010000000049F0B1010000000003AF
-:10F1D000E0B101000000004561B101002000001015
-:10F1E00062DD01000000A85D059000003996004036
-:10F1F00081B200000400A205486D00000400820CEA
-:10F20000803200002D000040439901002E002FF3B2
-:10F2100084B00100010063F396C8010043969F414A
-:10F2200085500000010000A585CC01002D00204282
-:10F23000E6B101000400A3A5976C0000D4003D4195
-:10F2400085E001000B0000F298E401004A9622409C
-:10F250001F7C00000400225A997C00000000005A24
-:10F26000998001000400A200986C00002004004076
-:10F2700089980100099900008A300100000080404F
-:10F2800081B2010021040040899801000999000021
-:10F290008A3001000400A2006A0600005E012D0011
-:10F2A00080B001005596524381600000020000F2D8
-:10F2B00082F4010056960041809400000000005F37
-:10F2C000819001000000005E61B10100000000407B
-:10F2D00062B101000000A84095B0000057969EBBA7
-:10F2E000803200005C96A2401F7C0000C994004060
-:10F2F00081B200000000804195B0010004000015BB
-:10F3000042C90100000000542BC00100000000FCB5
-:10F3100024B00100000000FC38B00100000000FE35
-:10F320003CB00100000000FE3AB0010071969C174D
-:10F33000803200006696A24A197C00000000804CD2
-:10F340001F9001000C00001E98F401006596A24871
-:10F35000996C00000000001542B101006596A28A78
-:10F36000F16D00000C00000102CC0100000000FC67
-:10F370003EB00100010000F428CC0100CC002D05B6
-:10F3800048B10100709620F03E6C00000000004B78
-:10F390001F9001000000004C2BC00100BF002D0594
-:10F3A00048B10100000080F33AE001000400A2052A
-:10F3B000486D00001000000C96F401000400A20744
-:10F3C000966C000000002E4B1990010007002A0CDB
-:10F3D000E4B1010000008004E6B101001800004023
-:10F3E000439901001C002DF016B0010020002DF003
-:10F3F00026B001000C002FF20CB001000000A206A4
-:10F4000014EC0000809622451F7C00000000A3063B
-:10F410002AEC0000000000F894B00100000000F0A9
-:10F4200096B001000C002D4081B2010000002A4C72
-:10F43000E1C101003000001048C901000A0000408D
-:10F44000F199010018000005F0C901000000004A10
-:10F45000F0B101000000004BE0B1010000000047E6
-:10F4600061B10100A00000A462DD01008A96A85CE1
-:10F470001F1000000000800548B101000400A295A3
-:10F48000036C000000002E1048B101004000000194
-:10F49000F0CD010040000003F0C901004000000071
-:10F4A000E0C9010000002E5049C101000000000623
-:10F4B000F1B1010000000003F0B101009596624235
-:10F4C000613100002000001062DD01009696A84026
-:10F4D000813200001000001062C901009896A80057
-:10F4E000E03100000000F24081B201000400A2956A
-:10F4F000036C000000002E1048B101004000000124
-:10F50000F0CD010040000003F0C901004000000000
-:10F51000E0C9010000002E5049C1010000000006B2
-:10F52000F1B1010000000003F0B10100A3966242B6
-:10F53000613100002000001062DD0100A496A840A7
-:10F5400081320000A00000A462DD0100A696A800A0
-:10F55000E03100000000F24081B201003080004A3A
-:10F5600044C9010000000006F1B10100C0A83D46F9
-:10F570000DE00100FF7F00A1F089010002000009F9
-:10F5800096F401000000004697E00100000060A82A
-:10F5900097C00100B0966342613100003000004A1C
-:10F5A00062C90100B196A840813200000000F3401A
-:10F5B00081B2010000993F4297F00100B596654085
-:10F5C00081320000BD9622F3740600003F0000F374
-:10F5D0009488010000000007E785010000007555D0
-:10F5E00061B101000000004A62B101000000A840C2
-:10F5F00081B20000BA96004081B200000000F540E0
-:10F6000081B20100000000A836B00100CD96824111
-:10F6100023400000C296A2441F7C00009E9300017C
-:10F620008C3001002080001042C90100C8962240A1
-:10F63000E36D00000000004361B1010040000010D4
-:10F6400062DD0100C596A840813200002383008856
-:10F650001CB000000000004123B0010000000010B9
-:10F6600032B00100CD962241197C0000E79400439E
-:10F67000233001000000004123B00100CF96A31504
-:10F680000C6C0000D096000604B0000000000015CD
-:10F6900004B00100D29620021A6C00000000000D98
-:10F6A00004B00100A197000548310100FD96220237
-:10F6B00014500000D696A2022A500000FD96A245E2
-:10F6C0001F7C0000D89622020C500000E196000238
-:10F6D00016C00000E096225C1F7C00003080001005
-:10F6E00042C90100E0962240E36D0000000000479F
-:10F6F00061B101004000001062DD0100DC96A8400D
-:10F7000081320000238300881CB000000000000547
-:10F7100048B101007996005C1F000100FD9622159A
-:10F72000803200000000005033C00100FC96A202AD
-:10F730001A500000ED9622461F7C000070800003E6
-:10F7400042C90100000000461F800100ED962240E2
-:10F75000E36D00000000004261B1010040000010B4
-:10F7600062DD0100E996A840813200002383008811
-:10F770001CB000000000000548B101000C8000032F
-:10F7800042C90100040022F080320000100000F0A5
-:10F7900010C801002F002F5C1180010000000047FD
-:10F7A000E7910100F00700401B980100BF9620156B
-:10F7B0001A6C00007000000348C9010000002250CC
-:10F7C000F1B1010000000003F0B10100FF070008E3
-:10F7D000E08D01000000004261B10100A00000A422
-:10F7E00062DD0100F996A8461F100000BF960005D3
-:10F7F00048B10000BF96000210C00000FF96A2446E
-:10F800001F7C00009E9300018C3001000000001B53
-:10F8100010B100000080001044C901000C0000403D
-:10F82000F199010010000008F0C901000000001665
-:10F83000F0B1010010000003E0C901000400A25C67
-:10F840001F7C00000000004561B101002000001095
-:10F8500062DD01000000A85C1F90000007970040D7
-:10F8600081B20000170000D0A2C901000000A24030
-:10F8700027EC00000000002000B00100C994004106
-:10F88000A34101000B97004127D00000360400403F
-:10F8900089980100099900408A3001001000000792
-:10F8A00096E401000000004B809401000000005429
-:10F8B00061B101000080004062DD01000000A8404D
-:10F8C00081B20000040014BB803200001497004095
-:10F8D00081B200000400A205486D00006A97004054
-:10F8E0002B300100AC002D0616C0010090002DF059
-:10F8F00016C401001E97A0F016440000000000414D
-:10F9000017C001000E0000A244C9010000006CF005
-:10F9100030B00100AC002D4087B0010000006CF059
-:10F9200028B001002797224A197C000000300043CC
-:10F9300086C801000030000B16C801002797A440BC
-:10F94000813200000000004117C001004A972206E2
-:10F95000803200003597A206146C000032972248CE
-:10F96000197C00002C97A0411740000000000041C6
-:10F9700017C001000000004131C0010090002018B4
-:10F98000E0B101008B002D48198001000400A24560
-:10F99000E77D00008B002045E7910100359700408E
-:10F9A0008790000008000043869801003597A04822
-:10F9B000174000000000004117C00100B0000040E7
-:10F9C0004399010010500043FCC90100AE9700307C
-:10F9D0008130010000000040E5B101004097224A5B
-:10F9E000197C0000080000A244C90100CC002DAB26
-:10F9F000F9B10100000000AB17C001003F97A0F073
-:10FA0000164400000000004117C00100449764F054
-:10FA100082B00000A4000040479901004497A2F280
-:10FA20008032000000000041E5B101008C00201888
-:10FA3000E0B101009000004045990100000060061F
-:10FA400030C001000000860C80B200000400A24912
-:10FA5000197C0000BC002D4619900100A000A0F206
-:10FA6000E4B10100B0000040439901001050004390
-:10FA7000FCC90100AE970030813001000000A24AAD
-:10FA800019FC0000080000A244C90100CC002DAB05
-:10FA9000F9B10100000000AB17C001005397A0F0BE
-:10FAA000164400000000004117C001000000E4F00F
-:10FAB00082B001000080001044C901000000004134
-:10FAC000F0B1010000000003F0B1010000000000EF
-:10FAD000F0B101000000001062B101000000A81B9D
-:10FAE000E0B100005897004081B2000000F0000C27
-:10FAF0007E8901000000A64C956001000000804A4C
-:10FB0000189401000080001044C901000400220183
-:10FB1000F031000020000040F0C901000000001694
-:10FB2000F0B101000000004361B1010020000010AD
-:10FB300062DD01000000A815E0B1000063970040FD
-:10FB400081B200001080000344C9010000000006DB
-:10FB5000F0B1010000000001F0B101000000E85F19
-:10FB60001790010070000040439901007A012EFEB9
-:10FB700092B001008B002DF616B001007097224361
-:10FB8000E77D00000000004445C10100040000A61C
-:10FB90002AB0010028006E0682C801007497224A2C
-:10FBA000197C00000000004245D1010000006E4CAD
-:10FBB00083C001000000004192C0010075974330EE
-:10FBC0003D0700000000669E83B0010000001B415D
-:10FBD0003DC301000000004192C00100060000A2E8
-:10FBE00044C901001000004998F401007E972630B6
-:10FBF000930400007E97904C92400000000000416A
-:10FC000093C00100FFFF8049ECA9010000800010B3
-:10FC100044C9010004002201F03100000000000985
-:10FC2000F0B1010000000018F0B101002000001048
-:10FC300062DD01000000A815E0B1000083970040DC
-:10FC400081B2000004002220816C000004002240E8
-:10FC5000816C00009597225F817C00009297A24002
-:10FC6000197C0000000000401990010000000054C1
-:10FC700061B101001000000796E401000000004F90
-:10FC8000979401000000004B62B101009297284058
-:10FC9000813200000400A254777D00008E9700405E
-:10FCA00081B20000250400408998010009990040B4
-:10FCB0008A3001000000A221818400009897A25F91
-:10FCC000816C00000000A243197C01000000004389
-:10FCD000199001002504004089980100099900400D
-:10FCE0008A3001000000005461B1010010000007DB
-:10FCF00096E4010000000040969401000000004BD3
-:10FD000062B101000000A84081B200000400A254CA
-:10FD1000777D00009D97004081B20000040022081A
-:10FD2000803200000400220280320000A697A24B1D
-:10FD3000FD7F0000B405000280CE01000400AA404F
-:10FD4000813200000080001944C901000400220231
-:10FD5000F03100000000000BF0B1010000000013C2
-:10FD6000F0B101000000004361B101002000001962
-:10FD700062DD01000000A808E0B10000AB97004080
-:10FD800081B200000400A205486D0000B00000A18F
-:10FD900080CE01000400A640813200007C002DF0DE
-:10FDA00084B00100020000F098F40100B797204CE5
-:10FDB000846C00008800004043990100B79720F24E
-:10FDC000846C00000000004085B0010098002D14F4
-:10FDD00082B00100000000F098B00100A3002D14D3
-:10FDE00098D00100BC97204C846C00000000004CAF
-:10FDF00084B001000400A230816C0000000000F318
-:10FE000080E00100C0972340846C000000000040A7
-:10FE100084B00100D0002014E0B101009800254218
-:10FE200080B0010000006EF380F001000000A642E7
-:10FE300082C00000C697A0401640000000000041AC
-:10FE400017C0010000009FF082EC00009800A04164
-:10FE5000E0B101000400A25C1F7C000037040040F8
-:10FE600089980100099900058A30010000000042CC
-:10FE700061B1010000002E1048B10100A80100404E
-:10FE8000F199010000000005F0B101000900000730
-:10FE900096E40100000060A797C001000000001078
-:10FEA00062B101000000A84081B20000D19700407B
-:10FEB00081B20000A8002D1C8AB0010000009FF054
-:10FEC0008AD000000000A2408BEC00008A00204095
-:10FED000E7B10100B400004047990100A4002D459E
-:10FEE000E0D10100DF979C17803200000400224A15
-:10FEF000197C0000BE002FAB83B001003C980014B9
-:10FF000082500100E497004081B20000E49722F2A1
-:10FF1000823000008C00004043990100E4979F1C50
-:10FF2000E06D0000BE000040479901003C98004091
-:10FF300081320100A800201CE0B101009C002D309E
-:10FF400081B0010088002DF084B0010094002DF2F2
-:10FF500086B00100F89723F0846C0000EC972392A0
-:10FF6000876C0000C90400A694B00100EE97004021
-:10FF700081B20000200000A694B001006089004A10
-:10FF800094980100EE9768408132000004002240FE
-:10FF9000BD7D00000000004AB0B10100BF002D424D
-:10FFA000B2B1010090002DF380E00100F397D4403E
-:10FFB00081320000000078DA84C00100FD97234000
-:10FFC000846C00009400209DE1B10100FD97004089
-:10FFD00084B00000BF002D4384C0010090002DF3C9
-:10FFE00080E00100FD972340846C00009400209D78
-:10FFF000E1B101000000004084B001000198A2F0CE
-:020000021000EC
-:10000000386C00009C002042E0B101000000005F5D
-:100010001394010000008046198001009C002042DA
-:10002000E0B101003700004043990100040000F3F3
-:1000300080F401000F0000F382880100079823413B
-:10004000806C00000000005F139401000000890C28
-:1000500080B200000400860C80320000BC0000402A
-:1000600043990100A000A0F2E4B1010000009F410B
-:1000700024EC00001398A6408132000000009F424B
-:1000800038EC00001398A64081320000B400004014
-:10009000439901001598A3F03A6C00000400A440B5
-:1000A000813200000000804081B20100B4000040B5
-:1000B00043990100199822F03A6C0000B400201D09
-:1000C000E0B1010080002D5F13940100199823F026
-:1000D0003A6C00008000201DE0B10100C000201239
-:1000E000E0B10100C400A01CE0B101002704004001
-:1000F00089980100099900428A3001000400A20594
-:10010000486D00000080000344C901000000004267
-:10011000E0B10100120000408798010025989F413E
-:10012000246C0000000000418CB0010000000012AF
-:100130008CD001002698004124B00000000000404F
-:100140008DB001007F980040813201000000004521
-:1001500061B101004000001062DD01000000A84014
-:1001600081B200002898004081B20000B4940040A1
-:10017000813201000000001680B201000000A708D3
-:10018000803201003204004089980100099900087A
-:100190008A3001003298A240956C0000C99400405A
-:1001A00081320100008200A604B00100000000407E
-:1001B0002DB00100A0982F4011B001003005004182
-:1001C00089B00000CC0000A180CE01000400A64050
-:1001D0008132000000009FF83EEC000000009F12FA
-:1001E000E0ED0000C80020ABE1B10100CC00A01F91
-:1001F000E0B101000400A205486D00003F98A35F34
-:10020000E76D000000000041E7C10100A6000040CA
-:1002100047990100539822F2863000000300004302
-:1002200084F401000100004180CC0100B8002D429F
-:1002300080D001000000624086C0010047981F4343
-:10024000803200004898A240876C000000006241A4
-:1002500087B001004C989F408032000000000040B1
-:1002600085B001000000004084D001000000004281
-:1002700080B00100000000F288B0010002000044DC
-:1002800084F40100B8002E4280D0010000006240DA
-:1002900088C0010052981F44803200005698A24046
-:1002A000896C00005698624189B0000003006241E9
-:1002B00086E40100B8000040459901000100624158
-:1002C00088E40100A4002040E5B10100A200204024
-:1002D000E7B10100BC002E4387F00100000000449C
-:1002E00086C001005C982043876C000000008043BA
-:1002F000E5B101004001004380CE01000000A443AD
-:10030000E43101004001E240879801000400A205A9
-:10031000486D00000400220A8032000088002D444D
-:1003200081B0010090002DF22EB001009C002DF054
-:1003300086B0010090002DF082B00100BA002DF0CF
-:1003400098B001006B98A212986C0000BC002DF2CE
-:1003500098B001006B98A0F2986C000000000017A4
-:1003600082B001009C002041E0B10100B4002D12D8
-:1003700086D001006E98A341E06D00006F9800F0F8
-:1003800084B000000000004184B0010080002D43D3
-:1003900084D0010072989F4280320000000000402B
-:1003A00085B001007498A342146C00007598000A8F
-:1003B0000CB00000000000420CB001007798A017BC
-:1003C0000C6C0000000080170CB001007C982240EB
-:1003D0000D6C00000000A00A0CEC0000010000F011
-:1003E00082F401007C98A0410C6C00000000A2F097
-:1003F00080320100290000408998010009990040DD
-:10040000813201000000804081B00100D1940040A1
-:1004100081320100040022038032000004800003C6
-:1004200044C9010000000046F0B101000000004096
-:10043000F1B10100000060418794010000800010CC
-:1004400044C9010000000050F1B101000000004863
-:10045000F0B1010000000049F0B10100000000030C
-:10046000E0B101000000004561B101002000001072
-:1004700062DD01000000A85D059000008B9800403F
-:1004800081B200000400A205486D00001000000CBD
-:1004900096F401000400A207966C000000002E4BA9
-:1004A0001990010005002A0CE4B10100000080044D
-:1004B000E6B101003E040040899801000999000856
-:1004C0008A3001009698454861310000001000080C
-:1004D00062DD01009C9828408730000097982248F0
-:1004E000777D000004002240276C00000A971D461B
-:1004F00087B000009F98225F117C00000400221545
-:10050000623100009D98A8408132000000009D40AB
-:1005100081B201000000004049B1010000142F4CDD
-:1005200083B0010000000040F1B10100A298A24197
-:10053000835000000000804081B2010000000040B4
-:1005400049B1010030000040A199010000000040C5
-:1005500093B00100000000401FB00100F698004970
-:10056000963001000700004906E40100003900034D
-:1005700006C801000000004005B00100200000D0C6
-:10058000A0C901000000004193C00100A998A05437
-:10059000936C000000002E0597B001000080004021
-:1005A0004999010000000040E1B10100000200A2F1
-:1005B00044C90100B298A2419750000000000020F9
-:1005C00049B30100FC980040493101000895004002
-:1005D0008132010000B52E0897B0010000000040F4
-:1005E000F1B10100B998A2419750000018000040F5
-:1005F0009798010000972E4081B201000000004052
-:10060000F1B10100BD98A2419750000000000040E8
-:1006100049B1010040182E0597B0010000000040CC
-:10062000F1B10100C198A2419750000057952040B8
-:10063000E7B101003094004045990100640000409A
-:10064000E599010056952040E7B10100B89420419A
-:10065000E5B10100BA942041E5B101009894004051
-:1006600045990100020000409798010000000040F9
-:10067000F1B10100CB98A24197500000000000406A
-:1006800097B00100000000406FB101000000004B76
-:1006900068B10100CF988541974000008004004078
-:1006A000813201000000004039B301000000004029
-:1006B00037B301000000004035B3010000000040E6
-:1006C00033B301000000004041B3010000000040CE
-:1006D0003FB30100EE050040259B010042000040B1
-:1006E0004B9B0100000000402FB3010000000040C0
-:1006F0002DB301000000004047B30100000000409E
-:1007000043B30100600000402B9B01000000005437
-:10071000EF93010000000055F1930100FFFF00A5D9
-:100720003C8B01000000002C5BB301000000002C9A
-:1007300045B301000000004059B301000000004033
-:1007400057B301000000004027B301000000004043
-:1007500053B30100EB98A250FD7F0000EB98A2512B
-:10076000FD7F0000EC9800401DB3000050460040A3
-:100770001D9B010000C000A688B30100FF3F00A63A
-:100780003AB3010000C0009D3B9B0100B40500404E
-:10079000239B0100000000404DB30100080A00A6A1
-:1007A00014B301000101008A159B01000000002024
-:1007B00087B30100008000A656B101000000805EF2
-:1007C00057B501001800004B20E401000600004B63
-:1007D00096E401000043004B96C801001800001089
-:1007E00020DC01000000004B209401000000805735
-:1007F0002190010000992E0A97B0010000000040EE
-:10080000F1B10100FD98A2419750000000030040A3
-:100810009798010000A900404599010000000040A0
-:10082000F1B101000199A241975000003000004051
-:10083000979801000000005561B101000000004BD5
-:1008400062B101000599A840813200000599A241DA
-:10085000975000000000804081B201001000004E5F
-:1008600098E4010000000007989401000000004394
-:1008700099E0010000000080989401000000004809
-:1008800099E001000000004C889401000F996A4033
-:10089000813200001299224F777D0000F004004061
-:1008A000813201000000004F61B1010000000044EE
-:1008B00062B101001399A840813200001A99224ABE
-:1008C000897C00001899224F777D0000F0040040D9
-:1008D000813201000000004562B101001899A84072
-:1008E000813200000000FA4081B201000000804027
-:1008F00081B201000400A25A1F7C00001000000F0A
-:1009000098F401000400A25F9904000000008040F8
-:1009100081B201000000804081B20100040000406B
-:1009200081B200000400004081B2000004000040D9
-:1009300081B200000400004081B2000004000040C9
-:1009400081B200000400004081B2000004000040B9
-:1009500081B200000400004081B2000004000040A9
-:1009600081B200000400004081B200000400004099
-:1009700081B200000400004081B200000400004089
-:1009800081B200000400004081B200000400004079
-:1009900081B200000400004081B200000400004069
-:1009A00081B200000400004081B200000400004059
-:1009B00081B200000400004081B200000400004049
-:1009C00081B200000400004081B200000400004039
-:1009D00081B200000400004081B200000400004029
-:1009E00081B200000400004081B200000400004019
-:1009F00081B200000400004081B200000400004009
-:100A000081B200000400004081B2000004000040F8
-:100A100081B200000400004081B2000004000040E8
-:100A200081B200000400004081B2000004000040D8
-:100A300081B200000400004081B2000004000040C8
-:100A400081B200000400004081B2000004000040B8
-:100A500081B200000400004081B2000004000040A8
-:100A600081B200000400004081B200000400004098
-:100A700081B200000400004081B200000400004088
-:100A800081B200000400004081B200000400004078
-:100A900081B200000400004081B200000400004068
-:100AA00081B200000400004081B200000400004058
-:100AB00081B200000400004081B200000400004048
-:100AC00081B200000400004081B200000400004038
-:100AD00081B200000400004081B200000400004028
-:100AE00081B200000400004081B200000400004018
-:100AF00081B200000400004081B200000400004008
-:100B000081B200000400004081B2000004000040F7
-:100B100081B200000400004081B2000004000040E7
-:100B200081B200000400004081B2000004000040D7
-:100B300081B200000400004081B2000004000040C7
-:100B400081B200000400004081B2000004000040B7
-:100B500081B200000400004081B2000004000040A7
-:100B600081B200000400004081B200000400004097
-:100B700081B200000400004081B200000400004087
-:100B800081B200000400004081B200000400004077
-:100B900081B200000400004081B200000400004067
-:100BA00081B200000400004081B200000400004057
-:100BB00081B200000400004081B200000400004047
-:100BC00081B200000400004081B200000400004037
-:100BD00081B200000400004081B200000400004027
-:100BE00081B200000400004081B200000400004017
-:100BF00081B200000400004081B200000400004007
-:100C000081B200000400004081B2000004000040F6
-:100C100081B200000400004081B2000004000040E6
-:100C200081B200000400004081B2000004000040D6
-:100C300081B200000400004081B2000004000040C6
-:100C400081B200000400004081B2000004000040B6
-:100C500081B200000400004081B2000004000040A6
-:100C600081B200000400004081B200000400004096
-:100C700081B200000400004081B200000400004086
-:100C800081B200000400004081B200000400004076
-:100C900081B200000400004081B200000400004066
-:100CA00081B200000400004081B200000400004056
-:100CB00081B200000400004081B200000400004046
-:100CC00081B200000400004081B200000400004036
-:100CD00081B200000400004081B200000400004026
-:100CE00081B200000400004081B200000400004016
-:100CF00081B200000400004081B200000400004006
-:100D000081B200000400004081B2000004000040F5
-:100D100081B200000400004081B2000004000040E5
-:100D200081B200000400004081B2000004000040D5
-:100D300081B200000400004081B2000004000040C5
-:100D400081B200000400004081B2000004000040B5
-:100D500081B200000400004081B2000004000040A5
-:100D600081B200000400004081B200000400004095
-:100D700081B200000400004081B200000400004085
-:100D800081B200000400004081B200000400004075
-:100D900081B200000400004081B200000400004065
-:100DA00081B200000400004081B200000400004055
-:100DB00081B200000400004081B200000400004045
-:100DC00081B200000400004081B200000400004035
-:100DD00081B200000400004081B200000400004025
-:100DE00081B200000400004081B200000400004015
-:100DF00081B200000400004081B200000400004005
-:100E000081B200000400004081B2000004000040F4
-:100E100081B200000400004081B2000004000040E4
-:100E200081B200000400004081B2000004000040D4
-:100E300081B200000400004081B2000004000040C4
-:100E400081B200000400004081B2000004000040B4
-:100E500081B200000400004081B2000004000040A4
-:100E600081B200000400004081B200000400004094
-:100E700081B200000400004081B200000400004084
-:100E800081B200000400004081B200000400004074
-:100E900081B200000400004081B200000400004064
-:100EA00081B200000400004081B200000400004054
-:100EB00081B200000400004081B200000400004044
-:100EC00081B200000400004081B200000400004034
-:100ED00081B200000400004081B200000400004024
-:100EE00081B200000400004081B200000400004014
-:100EF00081B200000400004081B200000400004004
-:100F000081B200000400004081B2000004000040F3
-:100F100081B200000400004081B2000004000040E3
-:100F200081B200000400004081B2000004000040D3
-:100F300081B200000400004081B2000004000040C3
-:100F400081B200000400004081B2000004000040B3
-:100F500081B200000400004081B2000004000040A3
-:100F600081B200000400004081B200000400004093
-:100F700081B200000400004081B200000400004083
-:100F800081B200000400004081B200000400004073
-:100F900081B200000400004081B200000400004063
-:100FA00081B200000400004081B200000400004053
-:100FB00081B200000400004081B200000400004043
-:100FC00081B200000400004081B200000400004033
-:100FD00081B200000400004081B200000400004023
-:100FE00081B200000400004081B200000400004013
-:100FF00081B200000400004081B200000400004003
-:1010000081B200000400004081B2000004000040F2
-:1010100081B200000400004081B2000004000040E2
-:1010200081B200000400004081B2000004000040D2
-:1010300081B200000400004081B2000004000040C2
-:1010400081B200000400004081B2000004000040B2
-:1010500081B200000400004081B2000004000040A2
-:1010600081B200000400004081B200000400004092
-:1010700081B200000400004081B200000400004082
-:1010800081B200000400004081B200000400004072
-:1010900081B200000400004081B200000400004062
-:1010A00081B200000400004081B200000400004052
-:1010B00081B200000400004081B200000400004042
-:1010C00081B200000400004081B200000400004032
-:1010D00081B200000400004081B200000400004022
-:1010E00081B200000400004081B200000400004012
-:1010F00081B200000400004081B200000400004002
-:1011000081B200000400004081B2000004000040F1
-:1011100081B200000400004081B2000004000040E1
-:1011200081B200000400004081B2000004000040D1
-:1011300081B200000400004081B2000004000040C1
-:1011400081B200000400004081B2000004000040B1
-:1011500081B200000400004081B2000004000040A1
-:1011600081B200000400004081B200000400004091
-:1011700081B200000400004081B200000400004081
-:1011800081B200000400004081B200000400004071
-:1011900081B200000400004081B200000400004061
-:1011A00081B200000400004081B200000400004051
-:1011B00081B200000400004081B200000400004041
-:1011C00081B200000400004081B200000400004031
-:1011D00081B200000400004081B200000400004021
-:1011E00081B200000400004081B200000400004011
-:1011F00081B200000400004081B200000400004001
-:1012000081B200000400004081B2000004000040F0
-:1012100081B200000400004081B2000004000040E0
-:1012200081B200000400004081B2000004000040D0
-:1012300081B200000400004081B2000004000040C0
-:1012400081B200000400004081B2000004000040B0
-:1012500081B200000400004081B2000004000040A0
-:1012600081B200000400004081B200000400004090
-:1012700081B200000400004081B200000400004080
-:1012800081B200000400004081B200000400004070
-:1012900081B200000400004081B200000400004060
-:1012A00081B200000400004081B200000400004050
-:1012B00081B200000400004081B200000400004040
-:1012C00081B200000400004081B200000400004030
-:1012D00081B200000400004081B200000400004020
-:1012E00081B200000400004081B200000400004010
-:1012F00081B200000400004081B200000400004000
-:1013000081B200000400004081B2000004000040EF
-:1013100081B200000400004081B2000004000040DF
-:1013200081B200000400004081B2000004000040CF
-:1013300081B200000400004081B2000004000040BF
-:1013400081B200000400004081B2000004000040AF
-:1013500081B200000400004081B20000040000409F
-:1013600081B200000400004081B20000040000408F
-:1013700081B200000400004081B20000040000407F
-:1013800081B200000400004081B20000040000406F
-:1013900081B200000400004081B20000040000405F
-:1013A00081B200000400004081B20000040000404F
-:1013B00081B200000400004081B20000040000403F
-:1013C00081B200000400004081B20000040000402F
-:1013D00081B200000400004081B20000040000401F
-:1013E00081B200000400004081B20000040000400F
-:1013F00081B200000400004081B2000004000040FF
-:1014000081B200000400004081B2000004000040EE
-:1014100081B200000400004081B2000004000040DE
-:1014200081B200000400004081B2000004000040CE
-:1014300081B200000400004081B2000004000040BE
-:1014400081B200000400004081B2000004000040AE
-:1014500081B200000400004081B20000040000409E
-:1014600081B200000400004081B20000040000408E
-:1014700081B200000400004081B20000040000407E
-:1014800081B200000400004081B20000040000406E
-:1014900081B200000400004081B20000040000405E
-:1014A00081B200000400004081B20000040000404E
-:1014B00081B200000400004081B20000040000403E
-:1014C00081B200000400004081B20000040000402E
-:1014D00081B200000400004081B20000040000401E
-:1014E00081B200000400004081B20000040000400E
-:1014F00081B200000400004081B2000004000040FE
-:1015000081B200000400004081B2000004000040ED
-:1015100081B200000400004081B2000004000040DD
-:1015200081B200000400004081B2000004000040CD
-:1015300081B200000400004081B2000004000040BD
-:1015400081B200000400004081B2000004000040AD
-:1015500081B200000400004081B20000040000409D
-:1015600081B200000400004081B20000040000408D
-:1015700081B200000400004081B20000040000407D
-:1015800081B200000400004081B20000040000406D
-:1015900081B200000400004081B20000040000405D
-:1015A00081B200000400004081B20000040000404D
-:1015B00081B200000400004081B20000040000403D
-:1015C00081B200000400004081B20000040000402D
-:1015D00081B200000400004081B20000040000401D
-:1015E00081B200000400004081B20000040000400D
-:1015F00081B200000400004081B2000004000040FD
-:1016000081B200000400004081B2000004000040EC
-:1016100081B200000400004081B2000004000040DC
-:1016200081B200000400004081B2000004000040CC
-:1016300081B200000400004081B2000004000040BC
-:1016400081B200000400004081B2000004000040AC
-:1016500081B200000400004081B20000040000409C
-:1016600081B200000400004081B20000040000408C
-:1016700081B200000400004081B20000040000407C
-:1016800081B200000400004081B20000040000406C
-:1016900081B200000400004081B20000040000405C
-:1016A00081B200000400004081B20000040000404C
-:1016B00081B200000400004081B20000040000403C
-:1016C00081B200000400004081B20000040000402C
-:1016D00081B200000400004081B20000040000401C
-:1016E00081B200000400004081B20000040000400C
-:1016F00081B200000400004081B2000004000040FC
-:1017000081B200000400004081B2000004000040EB
-:1017100081B200000400004081B2000004000040DB
-:1017200081B200000400004081B2000004000040CB
-:1017300081B200000400004081B2000004000040BB
-:1017400081B200000400004081B2000004000040AB
-:1017500081B200000400004081B20000040000409B
-:1017600081B200000400004081B20000040000408B
-:1017700081B200000400004081B20000040000407B
-:1017800081B200000400004081B20000040000406B
-:1017900081B200000400004081B20000040000405B
-:1017A00081B200000400004081B20000040000404B
-:1017B00081B200000400004081B20000040000403B
-:1017C00081B200000400004081B20000040000402B
-:1017D00081B200000400004081B20000040000401B
-:1017E00081B200000400004081B20000040000400B
-:1017F00081B200000400004081B2000004000040FB
-:1018000081B200000400004081B2000004000040EA
-:1018100081B200000400004081B2000004000040DA
-:1018200081B200000400004081B2000004000040CA
-:1018300081B200000400004081B2000004000040BA
-:1018400081B200000400004081B2000004000040AA
-:1018500081B200000400004081B20000040000409A
-:1018600081B200000400004081B20000040000408A
-:1018700081B200000400004081B20000040000407A
-:1018800081B200000400004081B20000040000406A
-:1018900081B200000400004081B20000040000405A
-:1018A00081B200000400004081B20000040000404A
-:1018B00081B200000400004081B20000040000403A
-:1018C00081B200000400004081B20000040000402A
-:1018D00081B200000400004081B20000040000401A
-:1018E00081B200000400004081B20000040000400A
-:1018F00081B200000400004081B2000004000040FA
-:1019000081B200000400004081B2000004000040E9
-:1019100081B200000400004081B2000004000040D9
-:1019200081B200000400004081B2000004000040C9
-:1019300081B200000400004081B2000004000040B9
-:1019400081B200000400004081B2000004000040A9
-:1019500081B200000400004081B200000400004099
-:1019600081B200000400004081B200000400004089
-:1019700081B200000400004081B200000400004079
-:1019800081B200000400004081B200000400004069
-:1019900081B200000400004081B200000400004059
-:1019A00081B200000400004081B200000400004049
-:1019B00081B200000400004081B200000400004039
-:1019C00081B200000400004081B200000400004029
-:1019D00081B200000400004081B200000400004019
-:1019E00081B200000400004081B200000400004009
-:1019F00081B200000400004081B2000004000040F9
-:101A000081B200000400004081B2000004000040E8
-:101A100081B200000400004081B2000004000040D8
-:101A200081B200000400004081B2000004000040C8
-:101A300081B200000400004081B2000004000040B8
-:101A400081B200000400004081B2000004000040A8
-:101A500081B200000400004081B200000400004098
-:101A600081B200000400004081B200000400004088
-:101A700081B200000400004081B200000400004078
-:101A800081B200000400004081B200000400004068
-:101A900081B200000400004081B200000400004058
-:101AA00081B200000400004081B200000400004048
-:101AB00081B200000400004081B200000400004038
-:101AC00081B200000400004081B200000400004028
-:101AD00081B200000400004081B200000400004018
-:101AE00081B200000400004081B200000400004008
-:101AF00081B200000400004081B2000004000040F8
-:101B000081B200000400004081B2000004000040E7
-:101B100081B200000400004081B2000004000040D7
-:101B200081B200000400004081B2000004000040C7
-:101B300081B200000400004081B2000004000040B7
-:101B400081B200000400004081B2000004000040A7
-:101B500081B200000400004081B200000400004097
-:101B600081B200000400004081B200000400004087
-:101B700081B200000400004081B200000400004077
-:101B800081B200000400004081B200000400004067
-:101B900081B200000400004081B200000400004057
-:101BA00081B200000400004081B200000400004047
-:101BB00081B200000400004081B200000400004037
-:101BC00081B200000400004081B200000400004027
-:101BD00081B200000400004081B200000400004017
-:101BE00081B200000400004081B200000400004007
-:101BF00081B200000400004081B2000004000040F7
-:101C000081B200000400004081B2000004000040E6
-:101C100081B200000400004081B2000004000040D6
-:101C200081B200000400004081B2000004000040C6
-:101C300081B200000400004081B2000004000040B6
-:101C400081B200000400004081B2000004000040A6
-:101C500081B200000400004081B200000400004096
-:101C600081B200000400004081B200000400004086
-:101C700081B200000400004081B200000400004076
-:101C800081B200000400004081B200000400004066
-:101C900081B200000400004081B200000400004056
-:101CA00081B200000400004081B200000400004046
-:101CB00081B200000400004081B200000400004036
-:101CC00081B200000400004081B200000400004026
-:101CD00081B200000400004081B200000400004016
-:101CE00081B200000400004081B200000400004006
-:101CF00081B200000400004081B2000004000040F6
-:101D000081B200000400004081B2000004000040E5
-:101D100081B200000400004081B2000004000040D5
-:101D200081B200000400004081B2000004000040C5
-:101D300081B200000400004081B2000004000040B5
-:101D400081B200000400004081B2000004000040A5
-:101D500081B200000400004081B200000400004095
-:101D600081B200000400004081B200000400004085
-:101D700081B200000400004081B200000400004075
-:101D800081B200000400004081B200000400004065
-:101D900081B200000400004081B200000400004055
-:101DA00081B200000400004081B200000400004045
-:101DB00081B200000400004081B200000400004035
-:101DC00081B200000400004081B200000400004025
-:101DD00081B200000400004081B200000400004015
-:101DE00081B200000400004081B200000400004005
-:101DF00081B200000400004081B2000004000040F5
-:101E000081B200000400004081B2000004000040E4
-:101E100081B200000400004081B2000004000040D4
-:101E200081B200000400004081B2000004000040C4
-:101E300081B200000400004081B2000004000040B4
-:101E400081B200000400004081B2000004000040A4
-:101E500081B200000400004081B200000400004094
-:101E600081B200000400004081B200000400004084
-:101E700081B200000400004081B200000400004074
-:101E800081B200000400004081B200000400004064
-:101E900081B200000400004081B200000400004054
-:101EA00081B200000400004081B200000400004044
-:101EB00081B200000400004081B200000400004034
-:101EC00081B200000400004081B200000400004024
-:101ED00081B200000400004081B200000400004014
-:101EE00081B200000400004081B200000400004004
-:101EF00081B200000400004081B2000004000040F4
-:101F000081B200000400004081B2000004000040E3
-:101F100081B200000400004081B2000004000040D3
-:101F200081B200000400004081B2000004000040C3
-:101F300081B200000400004081B2000004000040B3
-:101F400081B200000400004081B2000004000040A3
-:101F500081B200000400004081B200000400004093
-:101F600081B200000400004081B200000400004083
-:101F700081B200000400004081B200000400004073
-:101F800081B200000400004081B200000400004063
-:101F900081B200000400004081B200000400004053
-:101FA00081B200000400004081B200000400004043
-:101FB00081B200000400004081B200000400004033
-:101FC00081B200000400004081B200000400004023
-:101FD00081B200000400004081B200000400004013
-:101FE00081B200000400004081B200000400004003
-:101FF00081B200000400004081B2000004000040F3
-:1020000081B200000400004081B2000004000040E2
-:1020100081B200000400004081B2000004000040D2
-:1020200081B200000400004081B2000004000040C2
-:1020300081B200000400004081B2000004000040B2
-:1020400081B200000400004081B2000004000040A2
-:1020500081B200000400004081B200000400004092
-:1020600081B200000400004081B200000400004082
-:1020700081B200000400004081B200000400004072
-:1020800081B200000400004081B200000400004062
-:1020900081B200000400004081B200000400004052
-:1020A00081B200000400004081B200000400004042
-:1020B00081B200000400004081B200000400004032
-:1020C00081B200000400004081B200000400004022
-:1020D00081B200000400004081B200000400004012
-:1020E00081B200000400004081B200000400004002
-:1020F00081B200000400004081B2000004000040F2
-:1021000081B200000400004081B2000004000040E1
-:1021100081B200000400004081B2000004000040D1
-:1021200081B200000400004081B2000004000040C1
-:1021300081B200000400004081B2000004000040B1
-:1021400081B200000400004081B2000004000040A1
-:1021500081B200000400004081B200000400004091
-:1021600081B200000400004081B200000400004081
-:1021700081B200000400004081B200000400004071
-:1021800081B200000400004081B200000400004061
-:1021900081B200000400004081B200000400004051
-:1021A00081B200000400004081B200000400004041
-:1021B00081B200000400004081B200000400004031
-:1021C00081B200000400004081B200000400004021
-:1021D00081B200000400004081B200000400004011
-:1021E00081B200000400004081B200000400004001
-:1021F00081B200000400004081B2000004000040F1
-:1022000081B200000400004081B2000004000040E0
-:1022100081B200000400004081B2000004000040D0
-:1022200081B200000400004081B2000004000040C0
-:1022300081B200000400004081B2000004000040B0
-:1022400081B200000400004081B2000004000040A0
-:1022500081B200000400004081B200000400004090
-:1022600081B200000400004081B200000400004080
-:1022700081B200000400004081B200000400004070
-:1022800081B200000400004081B200000400004060
-:1022900081B200000400004081B200000400004050
-:1022A00081B200000400004081B200000400004040
-:1022B00081B200000400004081B200000400004030
-:1022C00081B200000400004081B200000400004020
-:1022D00081B200000400004081B200000400004010
-:1022E00081B200000400004081B200000400004000
-:1022F00081B200000400004081B2000004000040F0
-:1023000081B200000400004081B2000004000040DF
-:1023100081B200000400004081B2000004000040CF
-:1023200081B200000400004081B2000004000040BF
-:1023300081B200000400004081B2000004000040AF
-:1023400081B200000400004081B20000040000409F
-:1023500081B200000400004081B20000040000408F
-:1023600081B200000400004081B20000040000407F
-:1023700081B200000400004081B20000040000406F
-:1023800081B200000400004081B20000040000405F
-:1023900081B200000400004081B20000040000404F
-:1023A00081B200000400004081B20000040000403F
-:1023B00081B200000400004081B20000040000402F
-:1023C00081B200000400004081B20000040000401F
-:1023D00081B200000400004081B20000040000400F
-:1023E00081B200000400004081B2000004000040FF
-:1023F00081B200000400004081B2000004000040EF
-:1024000081B200000400004081B2000004000040DE
-:1024100081B200000400004081B2000004000040CE
-:1024200081B200000400004081B2000004000040BE
-:1024300081B200000400004081B2000004000040AE
-:1024400081B200000400004081B20000040000409E
-:1024500081B200000400004081B20000040000408E
-:1024600081B200000400004081B20000040000407E
-:1024700081B200000400004081B20000040000406E
-:1024800081B200000400004081B20000040000405E
-:1024900081B200000400004081B20000040000404E
-:1024A00081B200000400004081B20000040000403E
-:1024B00081B200000400004081B20000040000402E
-:1024C00081B200000400004081B20000040000401E
-:1024D00081B200000400004081B20000040000400E
-:1024E00081B200000400004081B2000004000040FE
-:1024F00081B200000400004081B2000004000040EE
-:1025000081B200000400004081B2000004000040DD
-:1025100081B200000400004081B2000004000040CD
-:1025200081B200000400004081B2000004000040BD
-:1025300081B200000400004081B2000004000040AD
-:1025400081B200000400004081B20000040000409D
-:1025500081B200000400004081B20000040000408D
-:1025600081B200000400004081B20000040000407D
-:1025700081B200000400004081B20000040000406D
-:1025800081B200000400004081B20000040000405D
-:1025900081B200000400004081B20000040000404D
-:1025A00081B200000400004081B20000040000403D
-:1025B00081B200000400004081B20000040000402D
-:1025C00081B200000400004081B20000040000401D
-:1025D00081B200000400004081B20000040000400D
-:1025E00081B200000400004081B2000004000040FD
-:1025F00081B200000400004081B2000004000040ED
-:1026000081B200000400004081B2000004000040DC
-:1026100081B200000400004081B2000004000040CC
-:1026200081B200000400004081B2000004000040BC
-:1026300081B200000400004081B2000004000040AC
-:1026400081B200000400004081B20000040000409C
-:1026500081B200000400004081B20000040000408C
-:1026600081B200000400004081B20000040000407C
-:1026700081B200000400004081B20000040000406C
-:1026800081B200000400004081B20000040000405C
-:1026900081B200000400004081B20000040000404C
-:1026A00081B200000400004081B20000040000403C
-:1026B00081B200000400004081B20000040000402C
-:1026C00081B200000400004081B20000040000401C
-:1026D00081B200000400004081B20000040000400C
-:1026E00081B200000400004081B2000004000040FC
-:1026F00081B200000400004081B2000004000040EC
-:1027000081B200000400004081B2000004000040DB
-:1027100081B200000400004081B2000004000040CB
-:1027200081B200000400004081B2000004000040BB
-:1027300081B200000400004081B2000004000040AB
-:1027400081B200000400004081B20000040000409B
-:1027500081B200000400004081B20000040000408B
-:1027600081B200000400004081B20000040000407B
-:1027700081B200000400004081B20000040000406B
-:1027800081B200000400004081B20000040000405B
-:1027900081B200000400004081B20000040000404B
-:1027A00081B200000400004081B20000040000403B
-:1027B00081B200000400004081B20000040000402B
-:1027C00081B200000400004081B20000040000401B
-:1027D00081B200000400004081B20000040000400B
-:1027E00081B200000400004081B2000004000040FB
-:1027F00081B200000400004081B2000004000040EB
-:1028000081B200000400004081B2000004000040DA
-:1028100081B200000400004081B2000004000040CA
-:1028200081B200000400004081B2000004000040BA
-:1028300081B200000400004081B2000004000040AA
-:1028400081B200000400004081B20000040000409A
-:1028500081B200000400004081B20000040000408A
-:1028600081B200000400004081B20000040000407A
-:1028700081B200000400004081B20000040000406A
-:1028800081B200000400004081B20000040000405A
-:1028900081B200000400004081B20000040000404A
-:1028A00081B200000400004081B20000040000403A
-:1028B00081B200000400004081B20000040000402A
-:1028C00081B200000400004081B20000040000401A
-:1028D00081B200000400004081B20000040000400A
-:1028E00081B200000400004081B2000004000040FA
-:1028F00081B200000400004081B2000004000040EA
-:1029000081B200000400004081B2000004000040D9
-:1029100081B200000400004081B2000004000040C9
-:1029200081B200000400004081B2000004000040B9
-:1029300081B200000400004081B2000004000040A9
-:1029400081B200000400004081B200000400004099
-:1029500081B200000400004081B200000400004089
-:1029600081B200000400004081B200000400004079
-:1029700081B200000400004081B200000400004069
-:1029800081B200000400004081B200000400004059
-:1029900081B200000400004081B200000400004049
-:1029A00081B200000400004081B200000400004039
-:1029B00081B200000400004081B200000400004029
-:1029C00081B200000400004081B200000400004019
-:1029D00081B200000400004081B200000400004009
-:1029E00081B200000400004081B2000004000040F9
-:1029F00081B200000400004081B2000004000040E9
-:102A000081B200000400004081B2000004000040D8
-:102A100081B200000400004081B2000004000040C8
-:102A200081B200000400004081B2000004000040B8
-:102A300081B200000400004081B2000004000040A8
-:102A400081B200000400004081B200000400004098
-:102A500081B200000400004081B200000400004088
-:102A600081B200000400004081B200000400004078
-:102A700081B200000400004081B200000400004068
-:102A800081B200000400004081B200000400004058
-:102A900081B200000400004081B200000400004048
-:102AA00081B200000400004081B200000400004038
-:102AB00081B200000400004081B200000400004028
-:102AC00081B200000400004081B200000400004018
-:102AD00081B200000400004081B200000400004008
-:102AE00081B200000400004081B2000004000040F8
-:102AF00081B200000400004081B2000004000040E8
-:102B000081B200000400004081B2000004000040D7
-:102B100081B200000400004081B2000004000040C7
-:102B200081B200000400004081B2000004000040B7
-:102B300081B200000400004081B2000004000040A7
-:102B400081B200000400004081B200000400004097
-:102B500081B200000400004081B200000400004087
-:102B600081B200000400004081B200000400004077
-:102B700081B200000400004081B200000400004067
-:102B800081B200000400004081B200000400004057
-:102B900081B200000400004081B200000400004047
-:102BA00081B200000400004081B200000400004037
-:102BB00081B200000400004081B200000400004027
-:102BC00081B200000400004081B200000400004017
-:102BD00081B200000400004081B200000400004007
-:102BE00081B200000400004081B2000004000040F7
-:102BF00081B200000400004081B2000004000040E7
-:102C000081B200000400004081B2000004000040D6
-:102C100081B200000400004081B2000004000040C6
-:102C200081B200000400004081B2000004000040B6
-:102C300081B200000400004081B2000004000040A6
-:102C400081B200000400004081B200000400004096
-:102C500081B200000400004081B200000400004086
-:102C600081B200000400004081B200000400004076
-:102C700081B200000400004081B200000400004066
-:102C800081B200000400004081B200000400004056
-:102C900081B200000400004081B200000400004046
-:102CA00081B200000400004081B200000400004036
-:102CB00081B200000400004081B200000400004026
-:102CC00081B200000400004081B200000400004016
-:102CD00081B200000400004081B200000400004006
-:102CE00081B200000400004081B2000004000040F6
-:102CF00081B200000400004081B2000004000040E6
-:102D000081B200000400004081B2000004000040D5
-:102D100081B200000400004081B2000004000040C5
-:102D200081B200000400004081B2000004000040B5
-:102D300081B200000400004081B2000004000040A5
-:102D400081B200000400004081B200000400004095
-:102D500081B200000400004081B200000400004085
-:102D600081B200000400004081B200000400004075
-:102D700081B200000400004081B200000400004065
-:102D800081B200000400004081B200000400004055
-:102D900081B200000400004081B200000400004045
-:102DA00081B200000400004081B200000400004035
-:102DB00081B200000400004081B200000400004025
-:102DC00081B200000400004081B200000400004015
-:102DD00081B200000400004081B200000400004005
-:102DE00081B200000400004081B2000004000040F5
-:102DF00081B200000400004081B2000004000040E5
-:102E000081B200000400004081B2000004000040D4
-:102E100081B200000400004081B2000004000040C4
-:102E200081B200000400004081B2000004000040B4
-:102E300081B200000400004081B2000004000040A4
-:102E400081B200000400004081B200000400004094
-:102E500081B200000400004081B200000400004084
-:102E600081B200000400004081B200000400004074
-:102E700081B200000400004081B200000400004064
-:102E800081B200000400004081B200000400004054
-:102E900081B200000400004081B200000400004044
-:102EA00081B200000400004081B200000400004034
-:102EB00081B200000400004081B200000400004024
-:102EC00081B200000400004081B200000400004014
-:102ED00081B200000400004081B200000400004004
-:102EE00081B200000400004081B2000004000040F4
-:102EF00081B200000400004081B2000004000040E4
-:102F000081B200000400004081B2000004000040D3
-:102F100081B200000400004081B2000004000040C3
-:102F200081B200000400004081B2000004000040B3
-:102F300081B200000400004081B2000004000040A3
-:102F400081B200000400004081B200000400004093
-:102F500081B200000400004081B200000400004083
-:102F600081B200000400004081B200000400004073
-:102F700081B200000400004081B200000400004063
-:102F800081B200000400004081B200000400004053
-:102F900081B200000400004081B200000400004043
-:102FA00081B200000400004081B200000400004033
-:102FB00081B200000400004081B200000400004023
-:102FC00081B200000400004081B200000400004013
-:102FD00081B200000400004081B200000400004003
-:102FE00081B200000400004081B2000004000040F3
-:102FF00081B200000400004081B2000004000040E3
-:1030000081B200000400004081B2000004000040D2
-:1030100081B200000400004081B2000004000040C2
-:1030200081B200000400004081B2000004000040B2
-:1030300081B200000400004081B2000004000040A2
-:1030400081B200000400004081B200000400004092
-:1030500081B200000400004081B200000400004082
-:1030600081B200000400004081B200000400004072
-:1030700081B200000400004081B200000400004062
-:1030800081B200000400004081B200000400004052
-:1030900081B200000400004081B200000400004042
-:1030A00081B200000400004081B200000400004032
-:1030B00081B200000400004081B200000400004022
-:1030C00081B200000400004081B200000400004012
-:1030D00081B200000400004081B200000400004002
-:1030E00081B200000400004081B2000004000040F2
-:1030F00081B200000400004081B2000004000040E2
-:1031000081B200000400004081B2000004000040D1
-:1031100081B200000400004081B2000004000040C1
-:1031200081B200000400004081B2000004000040B1
-:1031300081B200000400004081B2000004000040A1
-:1031400081B200000400004081B200000400004091
-:1031500081B200000400004081B200000400004081
-:1031600081B200000400004081B200000400004071
-:1031700081B200000400004081B200000400004061
-:1031800081B200000400004081B200000400004051
-:1031900081B200000400004081B200000400004041
-:1031A00081B200000400004081B200000400004031
-:1031B00081B200000400004081B200000400004021
-:1031C00081B200000400004081B200000400004011
-:1031D00081B200000400004081B200000400004001
-:1031E00081B200000400004081B2000004000040F1
-:1031F00081B200000400004081B2000004000040E1
-:1032000081B200000400004081B2000004000040D0
-:1032100081B200000400004081B2000004000040C0
-:1032200081B200000400004081B2000004000040B0
-:1032300081B200000400004081B2000004000040A0
-:1032400081B200000400004081B200000400004090
-:1032500081B200000400004081B200000400004080
-:1032600081B200000400004081B200000400004070
-:1032700081B200000400004081B200000400004060
-:1032800081B200000400004081B200000400004050
-:1032900081B200000400004081B200000400004040
-:1032A00081B200000400004081B200000400004030
-:1032B00081B200000400004081B200000400004020
-:1032C00081B200000400004081B200000400004010
-:1032D00081B200000400004081B200000400004000
-:1032E00081B200000400004081B2000004000040F0
-:1032F00081B200000400004081B2000004000040E0
-:1033000081B200000400004081B2000004000040CF
-:1033100081B200000400004081B2000004000040BF
-:1033200081B200000400004081B2000004000040AF
-:1033300081B200000400004081B20000040000409F
-:1033400081B200000400004081B20000040000408F
-:1033500081B200000400004081B20000040000407F
-:1033600081B200000400004081B20000040000406F
-:1033700081B200000400004081B20000040000405F
-:1033800081B200000400004081B20000040000404F
-:1033900081B200000400004081B20000040000403F
-:1033A00081B200000400004081B20000040000402F
-:1033B00081B200000400004081B20000040000401F
-:1033C00081B200000400004081B20000040000400F
-:1033D00081B200000400004081B2000004000040FF
-:1033E00081B200000400004081B2000004000040EF
-:1033F00081B200000400004081B2000004000040DF
-:1034000081B200000400004081B2000004000040CE
-:1034100081B200000400004081B2000004000040BE
-:1034200081B200000400004081B2000004000040AE
-:1034300081B200000400004081B20000040000409E
-:1034400081B200000400004081B20000040000408E
-:1034500081B200000400004081B20000040000407E
-:1034600081B200000400004081B20000040000406E
-:1034700081B200000400004081B20000040000405E
-:1034800081B200000400004081B20000040000404E
-:1034900081B200000400004081B20000040000403E
-:1034A00081B200000400004081B20000040000402E
-:1034B00081B200000400004081B20000040000401E
-:1034C00081B200000400004081B20000040000400E
-:1034D00081B200000400004081B2000004000040FE
-:1034E00081B200000400004081B2000004000040EE
-:1034F00081B200000400004081B2000004000040DE
-:1035000081B200000400004081B2000004000040CD
-:1035100081B200000400004081B2000004000040BD
-:1035200081B200000400004081B2000004000040AD
-:1035300081B200000400004081B20000040000409D
-:1035400081B200000400004081B20000040000408D
-:1035500081B200000400004081B20000040000407D
-:1035600081B200000400004081B20000040000406D
-:1035700081B200000400004081B20000040000405D
-:1035800081B200000400004081B20000040000404D
-:1035900081B200000400004081B20000040000403D
-:1035A00081B200000400004081B20000040000402D
-:1035B00081B200000400004081B20000040000401D
-:1035C00081B200000400004081B20000040000400D
-:1035D00081B200000400004081B2000004000040FD
-:1035E00081B200000400004081B2000004000040ED
-:1035F00081B200000400004081B2000004000040DD
-:1036000081B200000400004081B2000004000040CC
-:1036100081B200000400004081B2000004000040BC
-:1036200081B200000400004081B2000004000040AC
-:1036300081B200000400004081B20000040000409C
-:1036400081B200000400004081B20000040000408C
-:1036500081B200000400004081B20000040000407C
-:1036600081B200000400004081B20000040000406C
-:1036700081B200000400004081B20000040000405C
-:1036800081B200000400004081B20000040000404C
-:1036900081B200000400004081B20000040000403C
-:1036A00081B200000400004081B20000040000402C
-:1036B00081B200000400004081B20000040000401C
-:1036C00081B200000400004081B20000040000400C
-:1036D00081B200000400004081B2000004000040FC
-:1036E00081B200000400004081B2000004000040EC
-:1036F00081B200000400004081B2000004000040DC
-:1037000081B200000400004081B2000004000040CB
-:1037100081B200000400004081B2000004000040BB
-:1037200081B200000400004081B2000004000040AB
-:1037300081B200000400004081B20000040000409B
-:1037400081B200000400004081B20000040000408B
-:1037500081B200000400004081B20000040000407B
-:1037600081B200000400004081B20000040000406B
-:1037700081B200000400004081B20000040000405B
-:1037800081B200000400004081B20000040000404B
-:1037900081B200000400004081B20000040000403B
-:1037A00081B200000400004081B20000040000402B
-:1037B00081B200000400004081B20000040000401B
-:1037C00081B200000400004081B20000040000400B
-:1037D00081B200000400004081B2000004000040FB
-:1037E00081B200000400004081B2000004000040EB
-:1037F00081B200000400004081B2000004000040DB
-:1038000081B200000400004081B2000004000040CA
-:1038100081B200000400004081B2000004000040BA
-:1038200081B200000400004081B2000004000040AA
-:1038300081B200000400004081B20000040000409A
-:1038400081B200000400004081B20000040000408A
-:1038500081B200000400004081B20000040000407A
-:1038600081B200000400004081B20000040000406A
-:1038700081B200000400004081B20000040000405A
-:1038800081B200000400004081B20000040000404A
-:1038900081B200000400004081B20000040000403A
-:1038A00081B200000400004081B20000040000402A
-:1038B00081B200000400004081B20000040000401A
-:1038C00081B200000400004081B20000040000400A
-:1038D00081B200000400004081B2000004000040FA
-:1038E00081B200000400004081B2000004000040EA
-:1038F00081B200000400004081B2000004000040DA
-:1039000081B200000400004081B2000004000040C9
-:1039100081B200000400004081B2000004000040B9
-:1039200081B200000400004081B2000004000040A9
-:1039300081B200000400004081B200000400004099
-:1039400081B200000400004081B200000400004089
-:1039500081B200000400004081B200000400004079
-:1039600081B200000400004081B200000400004069
-:1039700081B200000400004081B200000400004059
-:1039800081B200000400004081B200000400004049
-:1039900081B200000400004081B200000400004039
-:1039A00081B200000400004081B200000400004029
-:1039B00081B200000400004081B200000400004019
-:1039C00081B200000400004081B200000400004009
-:1039D00081B200000400004081B2000004000040F9
-:1039E00081B200000400004081B2000004000040E9
-:1039F00081B200000400004081B2000004000040D9
-:103A000081B200000400004081B2000004000040C8
-:103A100081B200000400004081B2000004000040B8
-:103A200081B200000400004081B2000004000040A8
-:103A300081B200000400004081B200000400004098
-:103A400081B200000400004081B200000400004088
-:103A500081B200000400004081B200000400004078
-:103A600081B200000400004081B200000400004068
-:103A700081B200000400004081B200000400004058
-:103A800081B200000400004081B200000400004048
-:103A900081B200000400004081B200000400004038
-:103AA00081B200000400004081B200000400004028
-:103AB00081B200000400004081B200000400004018
-:103AC00081B200000400004081B200000400004008
-:103AD00081B200000400004081B2000004000040F8
-:103AE00081B200000400004081B2000004000040E8
-:103AF00081B200000400004081B2000004000040D8
-:103B000081B200000400004081B2000004000040C7
-:103B100081B200000400004081B2000004000040B7
-:103B200081B200000400004081B2000004000040A7
-:103B300081B200000400004081B200000400004097
-:103B400081B200000400004081B200000400004087
-:103B500081B200000400004081B200000400004077
-:103B600081B200000400004081B200000400004067
-:103B700081B200000400004081B200000400004057
-:103B800081B200000400004081B200000400004047
-:103B900081B200000400004081B200000400004037
-:103BA00081B200000400004081B200000400004027
-:103BB00081B200000400004081B200000400004017
-:103BC00081B200000400004081B200000400004007
-:103BD00081B200000400004081B2000004000040F7
-:103BE00081B200000400004081B2000004000040E7
-:103BF00081B200000400004081B2000004000040D7
-:103C000081B200000400004081B2000004000040C6
-:103C100081B200000400004081B2000004000040B6
-:103C200081B200000400004081B2000004000040A6
-:103C300081B200000400004081B200000400004096
-:103C400081B200000400004081B200000400004086
-:103C500081B200000400004081B200000400004076
-:103C600081B200000400004081B200000400004066
-:103C700081B200000400004081B200000400004056
-:103C800081B200000400004081B200000400004046
-:103C900081B200000400004081B200000400004036
-:103CA00081B200000400004081B200000400004026
-:103CB00081B200000400004081B200000400004016
-:103CC00081B200000400004081B200000400004006
-:103CD00081B200000400004081B2000004000040F6
-:103CE00081B200000400004081B2000004000040E6
-:103CF00081B200000400004081B2000004000040D6
-:103D000081B200000400004081B2000004000040C5
-:103D100081B200000400004081B2000004000040B5
-:103D200081B200000400004081B2000004000040A5
-:103D300081B200000400004081B200000400004095
-:103D400081B200000400004081B200000400004085
-:103D500081B20000AE9F00889AB00000AE9F00883C
-:103D60009AB00000AE9F00889AB00000AE9F008815
-:103D70009AB00000AE9F00889AB000000000008852
-:103D80009AB00100AE9F414081320000B29F2240B4
-:103D90007B6F00000000194081B20100AE9F00401F
-:103DA00081B20000000019417BB30100000000A4B3
-:103DB000C4B30100000000A1C6B3010000002FA29F
-:103DC000C8B301000814004049990100A89F004DA4
-:103DD0009ACC0100BB9F2640813200000000004CBD
-:103DE00049C10100B99FA2419B500000BF9F808044
-:103DF0008032000000005249FD9301000000004A9B
-:103E0000FD930100C29F0042CD9300000000514A83
-:103E1000FD93010000000049FD930100C29F004393
-:103E2000CB9300000000504081B20100D29F0040BF
-:103E300019990100000000F09AB001000000004450
-:103E400049D10100000040F080B201000000414D66
-:103E500080B20100CA9F00401999010000004C4047
-:103E600081B201000000004449D10100000000F0CF
-:103E70009AB001000000004D10B10000000000E207
-:103E800049B10100000000E343B10100000000E47B
-:103E900045B10100000000407BB301000000484F25
-:103EA00040B10100D29F004081B2000004000040F8
-:103EB00081B200000400004081B200000400004014
-:103EC00081B200000400004081B200000400004004
-:103ED00081B20000040000CB81C8010022830040B1
-:103EE000F29300005582004081B20000400500407E
-:103EF00081B200001806004081B200002283004019
-:103F000081B20000C682004081B2000043810040BF
-:103F100081B200004181004081B20000B8800040C1
-:103F200081B20000F087004081B20000238300408E
-:103F300081B200002783004081B20000BF9400409E
-:103F400081B200009498004081B200007F9400404C
-:103F500081B200007F98004081B200008D95004042
-:103F600081B200001695004081B20000109500401B
-:103F700081B20000B182004081B20000209900406F
-:103F800081B200000400004081B200000400004043
-:103F900081B200000400004081B200000400004033
-:103FA00081B200000400004081B200000400004023
-:103FB00081B200000400004081B200000400004013
-:103FC00081B200000400004081B200000400004003
-:103FD00081B200000400004081B2000004000040F3
-:103FE00081B200000400004081B2000004000040E3
-:103FF00081B200000400004081B2000004000040D3
-:1040000081B200000400004081B2000004000040C2
-:0440100081B2000079
-:00000001FF
diff --git a/firmware/slicoss/oasisdownload.sys.ihex b/firmware/slicoss/oasisdownload.sys.ihex
deleted file mode 100644 (file)
index 82026c2..0000000
+++ /dev/null
@@ -1,5124 +0,0 @@
-:1000000002000000004000000000010000000000AD
-:10001000008000001500004081B200001B0000407D
-:1000200081B200002100004081B2000003000040C6
-:1000300081B20000000000A898B001000480A24036
-:10004000FD7F00000900A249DD7D00000000004C9A
-:1000500080B2010007000040D1B100000000004C58
-:1000600080B201000900A240757D000060000040E0
-:10007000619901000B00A8B17E3100000900004029
-:1000800081B2000000808F981831000010000098A5
-:1000900080E40100000041988094010000000040CD
-:1000A00081B201001000009880E401000E00409829
-:1000B000809400001100004081B200000000004068
-:1000C000A59901001900294081320000190014BCD3
-:1000D000803200000E0093BC8032000000005040CF
-:1000E00081B201000080004081B200001000004099
-:1000F000A59901001F002940813200001F0014BC97
-:1001000080320000120093BC80320000000050409A
-:1001100081B201000180004081B200002000004057
-:10012000A59901002500294081320000250014BC5A
-:1001300080320000140093BC8032000000000049AF
-:10014000DD810100120100408132010033010040D5
-:10015000813201002A0014BC80320000FE0013BC72
-:10016000803200005495004045990100FFFF004097
-:10017000E599010000002F4049B101000000004056
-:10018000E1B1010000000040FDB3010000000040AB
-:10019000FFB30100330018EE803200000000005071
-:1001A00089B001003200A24189500000990000404E
-:1001B000813201003094004043990100000000F8B2
-:1001C00020B10100000000FAE0B30100390098EE10
-:1001D00080320000000000FB80B001003B0080F393
-:1001E000DE33000000000047FD9301003E0083F372
-:1001F00080320000F00000F38088010001800040A0
-:100200002EDD0100009400404399010000000046EB
-:1002100043C10100000000FA24B101007C0018EE87
-:1002200080320000450095E880320000FFFF00E8C2
-:10023000808801007C0026408132000000000040E0
-:10024000D5990100000000F2ECB30100000000F8B5
-:10025000D6B1010008000040D5990100000000F06F
-:10026000D6B10100FF0000F8EE8B0100080100404C
-:10027000D5990100FF0000F0808C0100000000F71C
-:100280008194010000000040D6B10100FF0000F899
-:10029000808801003C000040D5990100FF0000F07B
-:1002A000D68D0100FFFF00F0F0DB010000000048E8
-:1002B00081E00100000000F8819401003C01004051
-:1002C000D599010000000040D6B10100FF0000F800
-:1002D000808801000000004881E00100000000F873
-:1002E000819401003C020040D599010000000040CB
-:1002F000D6B101002C000040D5990100000000F8A3
-:10030000D6B101001E0000F082F40100FF3F00F8AA
-:1003100080D80100640026408132000000000041C6
-:1003200081D00100FFFF004080D8010000000041A3
-:100330008094010000000040D8B10100680022FA5A
-:10034000803000000000004C81E00100010000400E
-:1003500080CC010000000040DEB10100000100403F
-:10036000D5990100100000FA80E40100000000F6B9
-:100370008194010000000040D6B10100000200405D
-:10038000D5990100100000FA80E40100000000F699
-:100390008194010000000040D6B101000600004039
-:1003A000D5990100100000FBD6E5010007000040D0
-:1003B000D5990100180000FBD6E501004800004077
-:1003C000D5990100100000FAD6E501005000004068
-:1003D000D5990100100000FBD6E50100030000FBE9
-:1003E0007A890100000000F0DCB101007C00004CC3
-:1003F000DD9100007C0095E88430000000002FE9CA
-:10040000FAB3010000000040D1B10100FF0000423A
-:10041000808801003400004080CE01007C00A640AE
-:1004200081320000850000408132010002802240BC
-:10043000803200007C00004081B200000000004FCC
-:1004400081B001008E0009F9813200008C0008F9AA
-:100450008132000098001FFDF93300008B009EFDE3
-:10046000813200000000004AF39301000000804840
-:10047000F3930100000000FDF7B301000000804984
-:10048000F3930100000000FC19B1010093000AF988
-:1004900081320000000040FB81B20100000041FDFC
-:1004A00081B20100000780F9F38F0100000742F9D3
-:1004B000F38F01009700A2FFF76F00000000434098
-:1004C00081B201000000A2FFFBEF0000000080FCF1
-:1004D000E1B101000000804081B0010000940040C3
-:1004E00047990100BB000040813201000000A24694
-:1004F000FD7F01000094004047990100CE000040BC
-:10050000813201000000A244FD7F01000094004000
-:100510004599010000000040F1B10100FF7F00405B
-:10052000F5990100FF7F0040F59901009A13004002
-:10053000F599010007000040F59901000100004015
-:10054000F599010000020040F59901000200004009
-:10055000F599010000020040F599010003010040F7
-:10056000F599010000000040F59901009A13004040
-:10057000F59901000B000040F59901008000004052
-:10058000F599010000000040F599010000000040CD
-:10059000F599010007000040F599010008000040AE
-:1005A000F5990100B0020040F599010000000040FB
-:1005B000F599010000000040F59901000229004072
-:1005C000F599010000000040F59901000067004026
-:1005D000F599010000000040F599010080000040FD
-:1005E000F599010000008040F599010000000045E8
-:1005F000FD83010000000046FD830100FF7F0040F5
-:1006000025990100C4000040813201000000A2448D
-:1006100080B2000000000045FD930100E2000040B0
-:10062000833001000000A2458032010000008046B6
-:10063000FD9301000010004083980100DD000040A0
-:100640002B3101000000A24688B0000000000041EC
-:1006500089B00100000000948CB00100FFFF00464B
-:1006600080880100A5A5A24080CE000000000048BF
-:100670008DF00100C90082418940000000008040E7
-:1006800089B0010000000044FD830100D400004057
-:10069000813201000000A24480B20000E2000008A4
-:1006A000833001000000A245803201000000804438
-:1006B000FD93010000300008839801008000004095
-:1006C0002B990100DB000040893001000000A246A8
-:1006D00080B20000FFFF009480880100A5A5A24021
-:1006E000804E01000000804389B001000384004176
-:1006F0002C990100DE00004081B200000388004117
-:100700002C990100000000208DB0010000009F9690
-:1007100080B20000DF00A2418D5000000000804048
-:1007200081B20100FF7F0040259901000000004CCC
-:1007300089E00100DD000044821401000000909473
-:100740008AB0000000000045F0B101001000004533
-:1007500088F401000000004489D00100DD0000445D
-:100760002B410100EC00084180320000ED000094B4
-:1007700024B100001000009424F501000000009452
-:10078000F0B10100F200A04489500000DD000044F7
-:100790002B41010000000094F0B10100EF00204463
-:1007A000895000001000004588F40100000000FAA4
-:1007B0008AB001000000A34289D00000F700A0FA2F
-:1007C0008A400000000000418BC00100F500A342F8
-:1007D00089500000FFFF0045888801001000004597
-:1007E0008AF40100FC0090448A40000000000041AF
-:1007F0008BC00100FFFF00458AA801000000805067
-:100800008BE00100FF7F0040259901007C00004043
-:100810002B9901000030004083980100DD000008A2
-:1008200083140100000000942AB101000080004000
-:10083000F99B0100DD0000FC19310100000040942B
-:1008400080B20100DD0000442B4101000000419412
-:1008500080B2010000000041F9C301000000004423
-:100860002BC1010004019F948032000002800040EF
-:1008700081B200001001005193B000001001004D42
-:1008800093B000001001004993B000000000004246
-:1008900093B001001001A24193500000000080407D
-:1008A00081B201000000104081B20100000011403F
-:1008B00081B201000000124081B20100000013402B
-:1008C00081B201000000144081B201000000154017
-:1008D00081B201000000164081B201000000174003
-:1008E00081B201000000184081B2010000001940EF
-:1008F00081B2010000001A4081B2010000001B40DB
-:1009000081B2010000001C4081B2010000001D40C6
-:1009100081B2010000001E4081B2010000001F40B2
-:1009200081B201000000704081B2010000007140FE
-:1009300081B201000000724081B2010000007340EA
-:1009400081B201000000744081B2010000007540D6
-:1009500081B201000000764081B2010000007740C2
-:1009600081B201000000784081B2010000007940AE
-:1009700081B2010000007A4081B2010000007B409A
-:1009800081B2010000007C4081B2010000007D4086
-:1009900081B2010000007E4081B2010000007F4072
-:1009A00081B201000000804081B2010000040040DB
-:1009B000A199010000000050A1D1010000000040F9
-:1009C0001BB001000000004019B001000000004011
-:1009D00017B001000000004015B001000000004009
-:1009E00013B001000000004011B001000000004001
-:1009F0000FB00100000000400DB0010000000040F9
-:100A00000BB001000000004009B0010000000040F0
-:100A100007B001000000004005B0010000000040E8
-:100A200003B001000000004001B001003B0120487C
-:100A3000A15100000000804081B201004701224B1B
-:100A4000747D00000000804081B201006000004B16
-:100A500060990100000000B17EB101004801A8408A
-:100A6000813200004501004081B200000500804055
-:100A700097980100180000AA9688010000008043A2
-:100A800097F00100070000AA96880100000080404E
-:100A900081B201000000005807900100D89F00407B
-:100AA00081B2000000000044A5B30100D80200405C
-:100AB00081320100F8020040813201000000005C38
-:100AC00007900100D89F0040BFB300005A0122CC1C
-:100AD000857F00000000005107900100D89F004072
-:100AE00081B200000000004049B10100AE0300CB1C
-:100AF000A3C90100D0140040A19B01000000002008
-:100B000046B1010000000048F1B10100000000D032
-:100B1000F1B10100000000CAF1B10100000000D5F0
-:100B2000E1B10100070000406199010020000020B0
-:100B300062DD01006301A84081320000000000CCAA
-:100B400085930100F802004081320100D01400407A
-:100B500043990100000000FABAB30100000000FA56
-:100B6000A4B30100000000F8BCB3010000142F4042
-:100B700081B00100000000E7A7B30100000000D829
-:100B8000A9B30100FF0000DD8188010002000040E0
-:100B900080F401007301004080C80100860100DD7F
-:100BA000813200000000004010B1000087010040C9
-:100BB00081B200008801004081B20000890100403C
-:100BC00081B200008A01004081B200008B01004028
-:100BD00081B200008D01004081B200008F01004011
-:100BE00081B200005001004081B20000B601004017
-:100BF00081B200005001004081B20000C4010040F9
-:100C000081B20000C501004081B2000082020040B4
-:100C100081B200008302004081B22800B802004087
-:100C200081B22800D49F004081B22800D59F0040A7
-:100C300081B22800D69F004081B22800D79F004093
-:100C400081B228007201004181C02800550151493C
-:100C5000FD9328005501524AFD932A00550155493C
-:100C6000FD832A005501564AFD832A0050019181D7
-:100C700080302A005501454081B22A0050019182FE
-:100C800080302A005501464081B22A000000004011
-:100C900089B02B0000002F4081B0010000140040FB
-:100CA00049990100B30122DEE16D00000000004C13
-:100CB00049C101000000004181C001009201A2442D
-:100CC000816C00000000004C49D101009A012240D3
-:100CD000E16D00009601A2418150000050010041E9
-:100CE000BFB3000000000042BFB301005001A00FDD
-:100CF000BD6F0000000000DEE1B101000000004413
-:100D000049C10100B50100401999010000004240AD
-:100D100081B20100000043FF85B00100000000DE49
-:100D200019B10100000042FF87B00100000043FF3D
-:100D3000E1B101000000004449C1010000002FFFA3
-:100D4000E1B10100081400A480CC0100AA012640F2
-:100D5000813200000000004185C00100A801A24CC2
-:100D600081500000B40122D281320000AF01224143
-:100D7000A56F00005001A2E081320000000000D207
-:100D8000C1B301000000005C8990010000004042F6
-:100D900080B201000000414380B20100000000F079
-:100DA0008894010055010044E0B10000B101004801
-:100DB00049C10000AF01005B89900000A89F00A01E
-:100DC0009EB000000000004083B00100001400400D
-:100DD000499901000000234081B00100BE0122DEDC
-:100DE000E16D00000000004C49C10100000000411D
-:100DF00081C00100B901A244816C00005001004390
-:100E0000BFB30000000000F818B10100000040F876
-:100E100080B20100000041F080B2010000000040FB
-:100E2000F1B1010000000040F1B1010055010040A6
-:100E3000E1B10000C601004091B000000000004197
-:100E400091B00100D0142E4049B1010005000040CE
-:100E5000A39B0100080000DD81F40100CB010040EC
-:100E600080C801000000004010B10000D101004026
-:100E700081B00000530100DEA1B30000E301004097
-:100E800081B20000E501004081B00000EB010040AC
-:100E900081B20000520100DFE1B10000000000D08B
-:100EA000BAB30100000000DEA1B10100020000D2CF
-:100EB000A5E70100000000D2C1B30100000000005E
-:100EC000F0B10100DB012244C1530000DA0184418A
-:100ED00081400000DE01004081320100000000D0AE
-:100EE00045B10100D5010041A1C10000DA02004076
-:100EF00081320100F802004081320100550100DD1D
-:100F0000A1B100000000004081B00100400000409D
-:100F1000A59B0100DA02004081320100400000D3AD
-:100F2000A7CB0100F80200E0A5B3000003000040D9
-:100F3000A39B0100530100DEA1B3000000000044A8
-:100F4000BFB30100000000DE819001005001A2BA91
-:100F500080040000600000DE61990100E801A8B192
-:100F60008030000052010040E0B10000000000D0DD
-:100F7000BAB301006B020040819801006002004D8D
-:100F80008330010000000044E1B301000000004490
-:100F9000E3B3010000000044E5B301000000004499
-:100FA000E9B3010000000044EBB30100000000447D
-:100FB000F5B3010000000044F7B301000000004455
-:100FC000F9B30100F90122408F6F00007802004060
-:100FD00081980100600200C7833001008002004058
-:100FE000819801006002004283300100000000E8A7
-:100FF000F1B10100000000E9F1B10100000000EAD8
-:10100000F1B10100000000EBF1B10100000000852A
-:10101000F0B10100000000ECF1B10100000000EDB2
-:10102000F1B10100000000B2F0B10100000000A920
-:10103000F0B10100000000ACF0B10100000000AB15
-:10104000F0B10100000000B8F0B10100000000B9EB
-:10105000F0B10100000000BAF0B10100000000BBD7
-:10106000F0B101000C02B8408130000000000040E7
-:10107000819001000E02B940813200000000004161
-:10108000819001001002BA4081320000000000424D
-:10109000819001001202BB40813200000000004339
-:1010A000819001001402BC40813200000000004425
-:1010B000819001001602BD40813200000000004511
-:1010C000819001001802BE408132000000000046FD
-:1010D000819001001A02BF408132000000000047E9
-:1010E000819001001C02C8408132000000000048CD
-:1010F000819001001E02C9408132000000000049B9
-:10110000819001002002CA40813200000000004AA4
-:10111000819001002202CB40813200000000004B90
-:10112000819001002402CC40813200000000004C7C
-:10113000819001002602CD40813200000000004D68
-:10114000819001002802CE40813200000000004E54
-:10115000819001002A02CF40813200000000004F40
-:10116000819001002C02F04081320000000000500C
-:10117000819001002E02F1408132000000000051F8
-:10118000819001003002F2408132000000000052E4
-:10119000819001003202F3408132000000000053D0
-:1011A000819001003402F4408132000000000054BC
-:1011B000819001003602F5408132000000000055A8
-:1011C000819001003802F640813200000000005694
-:1011D000819001003A02F740813200000000005780
-:1011E000819001003C02F84081320000000000586C
-:1011F000819001003E02F940813200000000005958
-:10120000819001004002FA40813200000000005A43
-:10121000819001004202FB40813200000000005B2F
-:10122000819001004402FC40813200000000005C1B
-:10123000819001004602FD40813200000000005D07
-:10124000819001004802FE40813200000000005EF3
-:10125000819001004A02FF40813200000000005FDF
-:101260008190010000000040F0B10100400000400A
-:10127000A59B0100D802004081320100F802004025
-:1012800081320100D0142E06A5B30100400000D326
-:10129000A7CB0100000000F0F1B10100000000F157
-:1012A000F1B10100000000F2F1B10100000000F412
-:1012B000F1B10100000000F5F1B10100000000FAF9
-:1012C000F1B10100000000FBF1B10100000000FCE1
-:1012D000F1B10100000000EBF1B10100000000EEEF
-:1012E000F1B10100000000EFF1B10100000000F3D6
-:1012F000F1B10100000000F6F1B10100000000FDB5
-:10130000F1B10100DB0100C7E1B100000000804045
-:1013100081B20100660200488032000000005140A6
-:101320001AB1010000004D4081B2010000004540AB
-:1013300081B201006302A241835000005F02494074
-:1013400081B20000000052401CB1010000004E407C
-:1013500081B201000000464081B201006802A24152
-:10136000835000005F024A4081B20000000000A0EC
-:101370009EB0010000000080D8B30100000000A171
-:10138000D0B30100000000A2D2B30100000000A40D
-:10139000D4B30100000000D0D6B30100000000D19A
-:1013A000DCB30100000000D2DEB3010000000088C1
-:1013B000DAB30100000000D48EB30100000000D3B6
-:1013C000E6B30100000000ACECB30100000000999E
-:1013D000FAB30100000000D5E0B30100000000D521
-:1013E000E2B30100000000D5E4B30100000000D525
-:1013F000E8B30100000000D5EAB30100000000D509
-:10140000F4B30100000000D5F6B30100000000D5E0
-:10141000F8B30100000000C7A9B101000000004FAF
-:1014200040B101008402004091B000000000004182
-:1014300091B0010007000040A39B0100080000DDFF
-:1014400081F401008802004080C8010000000040D3
-:1014500010B100008D02004081B2000098020040EF
-:1014600081B2000098020046A3B300009B02004036
-:1014700081B20000A102004081B200008F0223501F
-:10148000A56F000000000050A5B30100E802004273
-:10149000A5630100F802004081320100D0142D4004
-:1014A00049B10100000000D0BAB30100000000DE25
-:1014B000A1B10100000000F800B001009702224431
-:1014C000A553000094020041A1C10000550100DDB8
-:1014D000A1B10000E80200DEA1330100F8020040E3
-:1014E000813201005501004081B20000000000453A
-:1014F000BFB301005001A2D2777D0000000000D2EE
-:1015000061B10100000000DE63B101009E02A8404D
-:10151000813200005501004081B20000E802005411
-:10152000A5330100F802004081320100D0142D40A3
-:1015300049B10100000000F8D0B30100000000F83C
-:10154000D2B30100000000F8D4B30100000000F89D
-:10155000D6B30100000000F808B10100AC02004061
-:10156000819801006002004683300100550100406F
-:1015700081B20000000000A09EB00100000000E861
-:1015800043B10100000000E945B10100000000EA9C
-:1015900049B10100000000EBA1B101000000004FC3
-:1015A00040B101000400004081B20000040000408E
-:1015B00081B200000400004081B20000040000403D
-:1015C00081B200000400004081B20000040000402D
-:1015D00081B20000D0142E4049B101000500004046
-:1015E000A39B010000000040C1B30100080000DD22
-:1015F00081F40100BD02004010C90000C3020005D3
-:1016000081B000005001004081B20000CB02000513
-:1016100081B000005001004081B20000D0020044BF
-:10162000A5B30000D2020044A5B3000002000040B0
-:10163000A4E70100000000E081B10100FFFF00C14C
-:10164000F0890100C802224181500000C40200411B
-:10165000C1C30000DA02004081320100F8020040FC
-:10166000813201005501004081B2000002000040BB
-:10167000A4E70100000000E091B10100FFFF00C9F4
-:10168000F0890100C802224181500000CC020041D3
-:10169000C1C30000FFFF00DE85890100C80200C24F
-:1016A000E0B10000FFFF00DE95890100C80200CA1A
-:1016B000E0B100000400004081B2000004000040DE
-:1016C00081B200000400004081B20000040000402C
-:1016D00081B20000000000E7A7B30100000000D8BD
-:1016E000A9B301000000004049B10100AE0300CBE6
-:1016F000A3C901000000002046B10100000000D293
-:10170000F1B10100000000D3F1B10100000000D4EC
-:10171000F1B10100000000D0E1B10100000000D1F2
-:1017200061B101002000002062DD0100E202A8405A
-:1017300081320000000080CC85930100040000404D
-:1017400081B200000400004081B2000004000040AB
-:1017500081B20000000000E7A7B30100000000D83C
-:10176000A9B301000000004049B10100AE0300CB65
-:10177000A3C901000000002046B10100000000D212
-:10178000F1B10100000000D0F1B10100000000D370
-:10179000F1B10100E10200D4E1B100000400004019
-:1017A00081B200000400004081B20000040000404B
-:1017B00081B200000400004081B20000040000403B
-:1017C00081B200000400004081B20000040000402B
-:1017D00081B200000000A2CC85FF00000000005094
-:1017E00081B00100FA02A24181500000F902A2F288
-:1017F00080300000000080CC8583010004000040A0
-:1018000081B200000400004081B2000004000040EA
-:1018100081B20000B5030040A199010000002F41F2
-:1018200099B301000A032244816C0000120322488C
-:10183000816C00000C03224C816C000016032250C6
-:10184000816C000017032254816C00001903225898
-:10185000816C00001E03225C816C0000500100407E
-:1018600081B20000000000BC09B00100DD9F00CA89
-:1018700001B000000000004003B001000000004182
-:10188000F38301001003A242056C00000000004138
-:1018900005B00100DD9F22CA07140000DD9F00454E
-:1018A000F3930000DD9F2043956F0000DD9F80CA09
-:1018B00005300000DD9F220180300000DD9F00CB5D
-:1018C000DB910000570100BCABB30000000000BC7E
-:1018D000B1B30100DD9F00CACFB30000FF0000CA12
-:1018E00081880100DD9FA240747D000060002040DF
-:1018F000609901001B03A8B1823000001A03004068
-:1019000081B20000DD9F00CA79B3000004000040EE
-:1019100081B200000000004E81B0010000000043D1
-:10192000CB8301000000454081B201002203A241A7
-:10193000815000000000454081B201000000454098
-:1019400081B201002D039182823000000000008AE4
-:1019500080B00100AE9F004080CE01002B03A64066
-:10196000813200002D03564081B20000B5030040D3
-:10197000A19901000000005307900100B503004049
-:10198000A19901000000005207900100D89F00417A
-:101990008BB300000000004E81B001000000004247
-:1019A000CD8301000000464081B201003203A24114
-:1019B000815000000000464081B201000000464016
-:1019C00081B201003D039181823000000000008956
-:1019D00080B00100AE9F004080CE01003B03A640D6
-:1019E000813200003D03554081B20000B503004044
-:1019F000A19901000000005207900100B5030040CA
-:101A0000A19901000000005307900100D89F0041F8
-:101A10008BB30000B0030040A1990100C4142F4013
-:101A200099B301005701004049B100000400004093
-:101A300081B200000400004081B2000004000040B8
-:101A400081B200000400004081B2000004000040A8
-:101A500081B200003094004043990100009000F8EA
-:101A600080980100100000F288E40100200000408E
-:101A7000209901000000005F239101004D031F9198
-:101A80008032000030000040209901000000005F1B
-:101A90002391010050031F9180320000400000405C
-:101AA000209901000000005F2391010053031F9162
-:101AB000803200000000005F2391010055031F9158
-:101AC000803200000008804020990100040000409E
-:101AD00081B200000000004784B001000000A2486D
-:101AE000848400000000005F61B101000000005C20
-:101AF0008F9001000000004762B101005A03A84026
-:101B000081320000000800478EC801005803005CC5
-:101B10008F800000E00000406199010058152D40C1
-:101B20008DB00100D0142DF088B00100000000FA43
-:101B30008AB001000000004581B0010007000045A7
-:101B400082880100000000438BF001000000004883
-:101B500083E0010000000046829401002000004163
-:101B600060990100000000418DC001007403225FF4
-:101B70008D6C00006503A2418150000063030040AA
-:101B800081B2000008000040859801000000004478
-:101B900082B001000000004186B00100001C00433B
-:101BA00086D801000000A641855001007003004165
-:101BB00083E000006E030040813201000000004815
-:101BC00085E00100D0142F468494010020000042DB
-:101BD00060990100C0000040619901000000804050
-:101BE00081B201000400004081B200000400004006
-:101BF00081B200000400004081B2000004000040F7
-:101C000081B200000400004081B2000004000040E6
-:101C100081B20000070000458088010000000043F9
-:101C20008BF0010000040040839801008503A0416F
-:101C3000815000008303004182E8000000008041E1
-:101C40008EC001000400004081B20000040000408A
-:101C500081B200000000004049B1010000020040D4
-:101C600083980100003900404599010000000040C0
-:101C7000F1B101008B03A24183500000000000403D
-:101C800085B001000B00004482F401001A1500A683
-:101C900086B0010070150040459901000008004021
-:101CA000F199010000000042F0B10100003900404C
-:101CB000E1990100040000406199010070150043A2
-:101CC000629901009503A840813200009703225ACF
-:101CD000737D00007A000040619901009803A8B16B
-:101CE0007E3100000008004284C801009003A24138
-:101CF000835000000000804081B2010004000040D9
-:101D000081B200000400004081B2000004000040E5
-:101D100081B2000058152D408DB00100D0142DF077
-:101D200088B00100000000408FB00100010000A653
-:101D300090B0010000F800489098010000000045B4
-:101D400093B00100000000FA8AB001008003004057
-:101D500081320100020000A680B00100AC032240E5
-:101D6000826C0000B0030040813201005803004043
-:101D700081320100000000418DC00100B503225FE7
-:101D80008D6C0000A703A24193500000A503004002
-:101D900081B20000FF070047848801000000A640D0
-:101DA00081B20000ED9F0047803001000002004733
-:101DB0008EC80100B003004081B200000000004462
-:101DC00050B30100BB032018896C0000040000A67A
-:101DD00084B00100200000A686B001000010004081
-:101DE000559B0100BE03004081B20000040000A624
-:101DF00084B00100200000A686B001000010004061
-:101E0000559B01000000004250D30100000000A8D3
-:101E10004FB30100000000434ED301006E030040A9
-:101E2000813201008203004280300100B003004093
-:101E300081320100C70322A78F6C00005A030040C3
-:101E400081320100C403004081B2000000008040E4
-:101E500081B20100C8142EBB85B00100000000EE65
-:101E600082B0010000000041E0B10100000000A2CA
-:101E7000A0B3010000000044A5B30100E19F00CA27
-:101E8000A7330100E09F004081B200000400004041
-:101E900081B20000D6032242756F0000D8032241B0
-:101EA000756F0000DA031ECA81320000DC031FCA0E
-:101EB00081320000000000CAC9B10100DD9F00426C
-:101EC00075B30000000000CACDB10100DD9F0041E4
-:101ED00075B30000000000CACFB10100DD9F0040D3
-:101EE00075B30000008100A6C6B10100DD9F00406F
-:101EF00081B20000008000A6C6B10100DD9F004055
-:101F000075B300000400004081B2000004000040EE
-:101F100081B200004501004D933001004501004EA3
-:101F2000933001004501004C93300100EC9F0040CC
-:101F300081320100DD9F004081B2000004000040BA
-:101F400081B200000400004081B2000004000040A3
-:101F500081B200005495004045990100DD9F00CA00
-:101F6000E5B100000400004081B200000400004020
-:101F700081B200000400004081B200000400004073
-:101F800081B200000400004081B200000400004063
-:101F900081B20000CC142E4087B00100000000A2E6
-:101FA000A0B3010015040043B2330100000068DA59
-:101FB00089B001007C0000408B98010000000050B7
-:101FC00089F001000000004189D0010003000044B5
-:101FD000888C01000000004487C00100000000411F
-:101FE000A5B3010015040043B2330100000000DA7C
-:101FF000F1B101000000004487C001000000004171
-:10200000A5C301000B042244895000000B042244A4
-:102010008B500000FA03A250A56F000000000042A0
-:10202000A5E30100000000CAA7B30100E19F00BBC7
-:1020300085300100CC142ED295C30100AE0300CB35
-:10204000A3C901000000002042B1010000000050BF
-:1020500081B001000804A241815000000704A2F2EF
-:1020600080300000FA030040A5B3000000000042E9
-:10207000A5E30100000000CAA7B30100E19F00BB77
-:1020800085300100E09F004081B200000400004064
-:1020900081B20000000000D92BB101000010004007
-:1020A00083980100DB00004081320100FFFF0094B3
-:1020B000B48B01000000804081B20100000000D913
-:1020C0002BB101000010004083980100DD000040AA
-:1020D0008132010000008094B4B30100040000408C
-:1020E00081B200000400004081B200000400004002
-:1020F00081B200000400004081B2000004000040F2
-:1021000081B200000400004081B2000004000040E1
-:1021100081B20000000000D92BB10100000000DAFC
-:1021200027B1010006C000402D990100DE000040EB
-:1021300081320100001000408398010002C4004178
-:102140002C990100DE000040813201000040004077
-:1021500083980100058200412C990100DE000040B7
-:10216000813201002D048094803200000C01004077
-:10217000813201002804004081B200000480004048
-:102180002D990100DE0000408132010000008040F6
-:1021900081B201003104001210C9000000488040E3
-:1021A0000B980100C04980400B980100804B804093
-:1021B0000B980100404D80400B980100004F80407B
-:1021C0000B980100C05080400B9801008052804065
-:1021D0000B980100405480400B980100005680404D
-:1021E0000B980100C05780400B9801008059804037
-:1021F0000B980100405B80400B980100005D80401F
-:102200000B980100C05E80400B9801008060804008
-:102210000B980100406280400B98010000648040F0
-:102220000B980100C06580400B98010080678040DA
-:102230000B980100406980400B980100006B8040C2
-:102240000B980100C06C80400B980100806E8040AC
-:102250000B980100407080400B9801000072804094
-:102260000B980100C07380400B980100807580407E
-:102270000B980100407780400B9801000079804066
-:102280000B980100C07A80400B980100807C804050
-:102290000B980100407E80400B9801000400004034
-:1022A00081B200000400004081B200000400004040
-:1022B00081B200000400004081B200000400004030
-:1022C00081B200000400004081B200000400004020
-:1022D00081B200005904001210C900000080804043
-:1022E0000B980100008280400B9801000084804020
-:1022F0000B980100008680400B9801000088804008
-:102300000B980100008A80400B980100008C8040EF
-:102310000B980100008E80400B98010000908040D7
-:102320000B980100009280400B98010000948040BF
-:102330000B980100009680400B98010000988040A7
-:102340000B980100009A80400B980100009C80408F
-:102350000B980100009E80400B98010000A0804077
-:102360000B98010000A280400B98010000A480405F
-:102370000B98010000A680400B98010000A8804047
-:102380000B98010000AA80400B98010000AC80402F
-:102390000B98010000AE80400B98010000B0804017
-:1023A0000B98010000B280400B98010000B48040FF
-:1023B0000B98010000B680400B98010000B88040E7
-:1023C0000B98010000BA80400B98010000BC8040CF
-:1023D0000B98010000BE80400B98010004000040F3
-:1023E00081B200000400004081B2000004000040FF
-:1023F00081B200000400004081B2000004000040EF
-:1024000081B200000400004081B2000004000040DE
-:1024100081B200000000004087B1010000000040D0
-:1024200097B001000000004B80B10100010000A640
-:1024300082B1010082048541974000000000004005
-:1024400097B101000000004097B001000000004B70
-:1024500090B10100010000A692B1010087048541FE
-:10246000974000000000804081B20100040000405D
-:1024700081B200000400004081B20000040000406E
-:1024800081B200000400004081B20000040000405E
-:1024900081B2000090046040813200000000001210
-:1024A00080B10100FFFFF04B82890100930460407E
-:1024B000813200000000004A80B101000100F0A656
-:1024C00082B101009604604081320000FFFF004BA2
-:1024D000848901000000F0C224B001000000004A1D
-:1024E00090B10100FFFF804B928901000000004A7B
-:1024F00090B10100010080A692B10100FFFF004BE6
-:1025000094890100000080CA94B0010004000040DA
-:1025100081B200001000004E98E4010000000007A6
-:10252000989401000000004399E001000000008041
-:10253000989401000000004999E001000000004C5F
-:1025400088940100A604474081320000AD04222097
-:10255000876F000000001F4081B2010000000040B2
-:1025600081B201000000004081B201000000004083
-:1025700081B20100A604004081B2000000001F806B
-:1025800086B30100B004224F777D0000C0040040F4
-:10259000813201000000004F61B1010000000044E1
-:1025A00062B10100B104A84081320000B804224B9E
-:1025B000897C0000B604224F777D0000C0040040F3
-:1025C000813201000000004562B10100B604A8405C
-:1025D000813200000000802087B301000400004029
-:1025E00081B200000400004081B2000004000040FD
-:1025F00081B200000400004081B2000004000040ED
-:1026000081B200000400004081B2000004000040DC
-:1026100081B200000000005099B001006F0000403E
-:1026200061990100C104A8B152330000C604224BD5
-:10263000537F00006F00004061990100C404A8B1FD
-:102640007E310000C104A241995000000000A24F59
-:1026500077FD00000400004081B20000040000404B
-:1026600081B200000400004081B20000040000407C
-:1026700081B200000400004081B20000040000406C
-:1026800081B200000400004081B20000040000405C
-:1026900081B200001000004E98E401000000000725
-:1026A000989401000000004399E0010000000080C0
-:1026B000989401000000004899E00100D604004C05
-:1026C00088940000D604474081320000DD042220B7
-:1026D000876F000000001F4081B201000000004031
-:1026E00081B201000000004081B201000000004002
-:1026F00081B20100D604004081B2000000001F80BA
-:1027000086B30100E004224F777D0000F004004012
-:10271000813201000000004F61B10100000000445F
-:1027200062B10100E104A84081320000E804224ABD
-:10273000897C0000E604224F777D0000F004004011
-:10274000813201000000004562B10100E604A840AA
-:10275000813200000000802087B3010004000040A7
-:1027600081B200000400004081B20000040000407B
-:1027700081B200000400004081B20000040000406B
-:1027800081B200000400004081B20000040000405B
-:1027900081B200000000005099B001006F000040BD
-:1027A00061990100F104A8B152330000F604224AF5
-:1027B000537F00006F00004061990100F404A8B14C
-:1027C0007E310000F104A241995000000000A24FA8
-:1027D00077FD00000400004081B2000004000040CA
-:1027E00081B200000400004081B2000004000040FB
-:1027F00081B200000400004081B2000004000040EB
-:1028000081B200000400004081B2000004000040DA
-:1028100081B200007B000040619901000005A8B171
-:102820008030000012051D4080320000401800403A
-:1028300049990100040000A686B001001005A240DD
-:1028400086040000DE9F9C4080320000FFFF0040B5
-:1028500088880100300500504731010036000044EF
-:1028600088CC01000C055240813200003005004048
-:10287000473101000000004189B0010030050048E7
-:10288000473101003005000547310100DE9F00405F
-:1028900081B200002800004047991B00DE9F0041E4
-:1028A000E1C11A007818004049991B00190522540B
-:1028B000817C1A001405424081321A00008200B364
-:1028C00067DF1B0000001A4493931B0028000040A0
-:1028D00047991B00300500418930010027050F4052
-:1028E00080320000FF7F00408888010030050050E2
-:1028F000473101003600004488CC01001F05994093
-:10290000803200000000004889D0010021059B4072
-:10291000803200000000004C89D0010023051F44D4
-:1029200080320000300500404731010000000041C6
-:1029300089B00100300500484731010030050058DA
-:1029400047310100DE9F004081B2000010000040CE
-:1029500086F401006F00004386880100DE9F260593
-:10296000473100003005004189300100DE9F004002
-:1029700081B200000400004081B200000400004069
-:1029800081B200000400004081B200000400004059
-:1029900081B200000000A044F041010000000040AE
-:1029A00081B2010000008041E1C10100040000404B
-:1029B00081B200000400004081B200000400004029
-:1029C00081B200000400004081B200000400004019
-:1029D00081B200004C010007913001000000A240CC
-:1029E00097EC00000000800591C001000400004049
-:1029F00081B200000400004081B2000004000040E9
-:102A000081B200000400004081B2000004000040D8
-:102A100081B200004C010040813201004405A24017
-:102A2000976C00003A000040B39B01004505004050
-:102A300081B2000040000040B39B01001004004040
-:102A400081320100000000DAF5B1010010040042FB
-:102A5000B3430100000000DAF5B1010010040042A8
-:102A6000B3430100000000DAF5B101004E00004060
-:102A7000B39B01001004004081320100080000DA1D
-:102A8000F7F5010050000040919801000000004758
-:102A90008FB0010010040048B2330100000000DADA
-:102AA000F7B10100080000DAF7F50100000000426C
-:102AB00091C001005005A2418F500000000000416C
-:102AC00045D1010008000040B39B01001004004004
-:102AD00081320100000000DAFDB101000A0000406F
-:102AE000B39B01001004004081320100000000DAB5
-:102AF000FDB101001A000040B39B0100100400402A
-:102B000081320100000000DAFDB101001800004030
-:102B1000B39B01001004004081320100000000DA84
-:102B2000FDB1010038050040813201001E0000485F
-:102B3000B2CB01001004004081320100000000DA35
-:102B400091C0010000000048B2CB01001004004019
-:102B50008132010000006EDA8FB0010002000048EF
-:102B6000B2CB01001004004081320100000000DA05
-:102B7000FDB1010004000048B2CB01001004004088
-:102B800081320100000080DAFDB101000400004044
-:102B900081B200007A052245FD7F0000401600400A
-:102BA00045990100DB9F00404931010008000048C1
-:102BB000B2CB010015040040813201007805A2402B
-:102BC0008F6C00007D052220B56F00007A05004063
-:102BD00081B20000DA9F004081321F007D05224053
-:102BE000976C1E007A05424081321E000000004FA3
-:102BF00067931F00DF9F005867931E005416004024
-:102C000047991F00000000FEF4B11F0000000040C3
-:102C100081B21F00000000FEF4B10100000000407E
-:102C200081B20100000000FEF4B10100000000408C
-:102C300081B20100000000FEF4B10100000000407C
-:102C400081B20100000000FEF4B10100000000406C
-:102C500081B20100000000FEF4B10100000000405C
-:102C600081B20100000000FEF4B101004600004006
-:102C7000B39B01001004004081320100080000DA1B
-:102C8000F7F501004800004095980100000000445D
-:102C900097B001001004004AB2330100000000DACE
-:102CA000F7B10100080000DAF7F50100000000426A
-:102CB00095C001009005A241975000002A000040F5
-:102CC000A59B010040160040A19B0100000000CA26
-:102CD000A7B30100E19F00BB85300100E09F0040E9
-:102CE00081B200000400004081B2000004000040F6
-:102CF00081B200000400004081B2000004000040E6
-:102D000081B200000400004081B2000004000040D5
-:102D100081B20000B8052245FD7F0000E0150040AB
-:102D2000479901001A0000A280DC01000000005059
-:102D3000F1B10100F0150040F1990100000000CA56
-:102D4000F1B101000700004061990100200000403E
-:102D500062DD0100A705A8BBE131000000000050C2
-:102D600083B00100AA05A24183500000A905A2F288
-:102D7000823000004C01004081320100B005A240C9
-:102D8000976C00003A000040B39B0100B105004081
-:102D900081B2000040000040B39B0100F0150040EC
-:102DA000439901001004004081320100B805A2FAE5
-:102DB000B46F000010040042B3430100B805A2FA4A
-:102DC000B46F000010040042B3430100BB0522FAB7
-:102DD000B46F0000B8054240813220000000004E70
-:102DE00067932100DF9F0058679320004016004042
-:102DF00045992100DB9F004049312100F615004034
-:102E0000439921005C1600404599210000006EFAAC
-:102E10008EB021000000004081B20100000000FEE1
-:102E2000F4B101000000004081B20100000000FE8A
-:102E3000F4B101000000004081B20100000000F088
-:102E4000B4B30100C905A2408F6C0000FC1520201E
-:102E5000E1B10100CE05004081B22400DA9F0040BC
-:102E600081322500CE052240976C2400CB054240DC
-:102E7000813224000000004F67932500DF9F005837
-:102E80006793240038050040813225001E00004869
-:102E9000B2CB25001004004081320100D30522503E
-:102EA000B56F00000000005091C001000000004814
-:102EB000B2CB0100F615004043990100200400F256
-:102EC000B433010002000048B2CB0100F815004005
-:102ED00043990100200400F2B433010004000048CB
-:102EE000B2CB0100FA15004043990100200400F222
-:102EF000B433010008000048B2CB0100FC150040CB
-:102F000043990100000000F094B00100FFFF004A67
-:102F1000B48B010020040040813201000A00004807
-:102F2000B2CB01001000004AB4F7010020040040B9
-:102F30008132010038050040813201001E00004846
-:102F4000B2CB01001004004081320100E90522509B
-:102F5000B56F0000EA050050B5B300000000004066
-:102F6000B5B301002004004081320100E09F004021
-:102F700081B200000400004081B200000400004063
-:102F800081B200000400004081B200000400004053
-:102F900081B2000000160040479901003031004026
-:102FA000F599010032330040F599010034350040B5
-:102FB000F599010036370040F59901003839004095
-:102FC000F599010041420040F59901004344004059
-:102FD000F599010045460040F59901004748004039
-:102FE000F5990100494A0040F59901002C00004084
-:102FF0008398010000000040F7B10100FC05A241E8
-:103000008350000080162E0683B00100360000FBBE
-:10301000F6A90100FF05A2418350000022000040F4
-:1030200083980100000000FBF6B101000206A241F6
-:10303000835000006200004095980100DC9F004032
-:103040008132010000162D0683B001008016004079
-:10305000459901005C0000FBF6A901000806A241A9
-:103060008350000000000070F9B101000000007101
-:10307000F9B1010000000072F9B101000000007315
-:10308000F9B1010000000074F9B1010054000040E2
-:1030900095980100DC9F0040813201000000007023
-:1030A00095B0010014062270B56F00000000804149
-:1030B00097B001000000804097B00100040000407C
-:1030C00081B200000400004081B200000400004012
-:1030D00081B20000456700A6E0B201000123007044
-:1030E000E19A0100CDEF00A6E2B2010089AB0071C8
-:1030F000E39A0100BA9800A6E4B20100FEDC007277
-:10310000E59A0100321000A6E6B201007654007381
-:10311000E79A0100D2C300A6E8B20100F0E1007412
-:10312000E99A01008016004A44C901000000000726
-:1031300081B001000000004A80D001000000004082
-:10314000F7B101002506A241815000008016004A17
-:1031500044C90100FC162A47E7B501000300004AF4
-:10316000E8E50100000000408DB001005003004080
-:10317000A399010080163D468DE00100000000503B
-:1031800089B00100000000FC40B0010000000041D7
-:10319000A3C101002E06A24189500000000000706A
-:1031A000EBB2010000000071EDB2010000000072FE
-:1031B000EFB2010000000073F1B2010000000074E2
-:1031C000F3B201000000004083B001000F00004195
-:1031D0008088010050030040A2C901004B06A050A6
-:1031E000836C00000D00004098C801000000004FF3
-:1031F000998401005003004CA2C901000000002086
-:1032000086B001000800004098C801000000004F8F
-:10321000998401005003004CA2C901000000002065
-:1032200086A401000200004098C801000000004F81
-:10323000998401005003004CA2C901000000002045
-:1032400086A4010050030040A2C901000000004311
-:1032500040A401000100002088E401000000005F9C
-:1032600041F0010000000044409401000500007599
-:1032700089E401001B00007585F401000000004492
-:10328000849401005506A353836C0000000000766F
-:1032900089B00100000000778984010000000076F9
-:1032A0008BB00100000000208BA40100000000781A
-:1032B0008B840100640600458894000027000041CB
-:1032C00080CE01005A06AA4081320000000000763C
-:1032D00089B001000000007789A40100640600782D
-:1032E00089A400003B00004180CE01005706AA409F
-:1032F000813200000000007689B0010000000077F4
-:1033000089840100000000768BB001000000007885
-:103310008B840100000000458894010000000077C4
-:103320008BB00100000000788B840100640600452A
-:10333000889400000000004484C00100000000796F
-:1033400085C001000000002084C001006B06A3536B
-:10335000836C0000825A00A684C001009979004263
-:1033600084C801007806004081B2000027000041B7
-:1033700080CE01007006AA4081320000D96E00A6FE
-:1033800084C00100A1EB004284C80100780600401F
-:1033900081B200003B00004180CE01007506AA40CA
-:1033A000813200001B8F00A684C00100DCBC0042FB
-:1033B00084C801007806004081B2000062CA00A6FD
-:1033C00084C00100D6C1004284C8010078060040D4
-:1033D00081B2000000000078F3B201000000007725
-:1033E000F1B201001E00007689E4010002000076BF
-:1033F000EFF6010000000044EE96010000000075A9
-:10340000EDB2010000000042EAB2010000000041FC
-:1034100083C001004F00004180CE010037062A40E2
-:103420008132000000000075E1C20100000000765A
-:10343000E3C2010000000077E5C20100000000784F
-:10344000E7C2010000000079E9C201002B068141BA
-:103450008D4000000000804081B201000400004067
-:1034600081B200000400004081B20000040000406E
-:1034700081B200000400004081B20000040000405E
-:1034800081B200000400004081B20000040000404E
-:1034900081B2000000000050FD9301004016004082
-:1034A00045990100DB9F00404931010008000048B8
-:1034B000B2CB01001504004081320100B906224060
-:1034C0008F6C0000DA9F004081320100B906A240F3
-:1034D000976C00005E160040439901007C1620F6B0
-:1034E000E0B101000000004031B301009D06224F11
-:1034F0008F7C000000000051FD9301009F062240D8
-:103500008F7C0000A3060054FD930000A106224218
-:103510008F7C000000000052FD930100A3062241B1
-:103520008F7C000000000053FD930100B70622517C
-:10353000FD7F000038050040813201000C0000488A
-:10354000B2CB01001004004081320100B206A2405B
-:10355000B56F00001E000048B2CB01001004004807
-:1035600096300100000000DA97C001000400004B13
-:10357000B2CB010010040040813201000E0000486F
-:10358000B2CB010020040040813201000C00004851
-:10359000B2CB010000000030B5B3010020040040B0
-:1035A000813201000E000048B2CB0100100400403F
-:1035B00081320100B6062240B56F0000BA06005401
-:1035C000FD93000000000051FD8301001C0000FE7F
-:1035D0007FD90100BA06A6408132000000000055E4
-:1035E000FD9301000000804081B201000400004012
-:1035F00081B200000400004081B2000004000040DD
-:1036000081B200000400004081B2000004000040CC
-:1036100081B20000E79F004081320100C406225CB5
-:103620001F7C0000E39F00881CB00000E99F005C45
-:103630001F00010000002E0548B1010000000040FD
-:10364000E1B1010004002D0348B10100000000F0C9
-:103650003CB001002800001402C801000000000175
-:1036600034B0010000002D0532B001002200000539
-:103670000AC801001000000348C90100000000F85A
-:1036800018B00100000000F804B00100000000F8CC
-:103690000EB001000C0000A40CC80100EA9F00401D
-:1036A000813201000000004023B001000A0722011E
-:1036B0008032000000003C4423E0010000002EA402
-:1036C00080B001000000001048C10100D906A30726
-:1036D000026C0000DA0668011AB0000000006807FA
-:1036E0001AB001000000000D02D00100000000052A
-:1036F000F0B101000000000CF0B101000000000278
-:10370000E0B101000000000D0AC00100EC062240FB
-:10371000036C0000E6062242236C0000000000411A
-:1037200023C001000000004761B10100200000A497
-:1037300062DD01002307284081320000E3060040DB
-:1037400081B200000000001080C0010000000047AE
-:1037500061B101000000004062B10100E806A8402C
-:1037600023300000E39F00881CB0000023070040C6
-:1037700081B200000000001080C00100000000477E
-:1037800061B101000000004062B10100EE06A840F6
-:1037900023300000E39F00881CB0000022000019C5
-:1037A00048C9010000002D1448C101000F0000F2BB
-:1037B0003A880100000000423BE001000E000014C6
-:1037C00002C801000000001D02C00100FA06231A11
-:1037D000025000000000004603C001002307000162
-:1037E00034C000000C002D1D48C10100F00000F2A3
-:1037F000308801000000004231F001000000001498
-:1038000002B001000000001D02C00100000000180D
-:1038100002C001000207221A025000002307000123
-:1038200034C000002200001948C9010002002D1414
-:1038300048C10100000000F614B001000000001DA6
-:1038400014D001000000001814D001000000001E78
-:1038500024B001001200001710C801002307001A4D
-:1038600010C0000000003C4423E00100000000A460
-:1038700086B0010000002E1048C101000F07A312FE
-:103880000E6C0000100760071AB000000000601204
-:103890001AB001000000680D16940100FFFF000B34
-:1038A00016D8010000000008F0B101000000000C73
-:1038B000F0B1010000000002E0B1010000000010C2
-:1038C00086C001000000004661B1010020000043F5
-:1038D00062DD01001707A85C1F1000004007220DE1
-:1038E000145000004007220D245000000000000D7D
-:1038F00010C001001E072242236C00002307004174
-:1039000023C000000000004661B10100400000102B
-:1039100062DD01001F07A85C1F000000E39F008814
-:103920001CB000000000004023B001003F07A20DC2
-:103930000E5000002E0722461F7C000000000046AB
-:103940001F8001003080001042C901002C0722F2C4
-:10395000640600000000004761B101004000001053
-:1039600062DD01002907A84081320000E39F008842
-:103970001CB0000020800003469901000000005F99
-:10398000E191010000002D0648B10100000000F89F
-:1039900018B00100000000F804B0010033071FF068
-:1039A0000E300000D306004C0DC0000000002E5F5A
-:1039B0000F800100D3062307146C000030000010B4
-:1039C00048C9010024000040F199010000000003F3
-:1039D000F0B1010000000000F0B10100000000168D
-:1039E000F0B101002400000000C801000000004701
-:1039F00061B10100200000A462DD01003C07A8467F
-:103A00001F100000D30600030CB00000D306000D09
-:103A100018C000005F07A2441F7C000000000019CE
-:103A20000AB001002200000548C901000A002D1457
-:103A300048C1010002002040E5B10100040020401F
-:103A4000E5B101000D002D1D48C10100090000F382
-:103A5000388801000D002050E7B1010004002D401E
-:103A60003FB00100000000F432B00100040020402B
-:103A7000E1B101002200000548C9010000002D1439
-:103A800048C101000200001D94F401000000004044
-:103A900091B001005207A0FC9040000000000041DE
-:103AA00091C001005007A24195500000000000A401
-:103AB00096B0010004002E0548B101000000004846
-:103AC000F0B101000000004B48B1010000000018F7
-:103AD00048C101000200001894F4010000002D18F4
-:103AE00090B001005C07A0FC904000000000004185
-:103AF00091C001005A07A241955000000000004803
-:103B0000E0B1010010002040E5B1010004002D05E6
-:103B100048B10100000000F880B02D00000000F066
-:103B200016B02D002200000548C92D000000001429
-:103B300048C12D00640743303D072C000000009E63
-:103B400085B02D0000001B413DC32D000400204224
-:103B5000ECB12D000000001E82B0010002002E1DFD
-:103B600082C001000000661882C00100000000420F
-:103B700080C001006E07A0418044000000000041A9
-:103B800081C001001000004092F401000A002E30B4
-:103B900081840100720790409240000000000041C3
-:103BA00093C001000000662093A401000000001DE6
-:103BB00048C1010004002019E8B101000000001E06
-:103BC00016C001007807A01916440000000000414B
-:103BD00017C001000D002F1E32C001007D07A2405A
-:103BE000156C00007C07A01C16400000000000417E
-:103BF00017C00100000063F33894010010000005B5
-:103C000048C9010004002E1E98B001000000601A8F
-:103C100098C001000C002040E1B101008B07224652
-:103C20001F7C0000000000461F8001003080001053
-:103C300042C90100890722F2640600000000004723
-:103C400061B101004000001062DD01008607A8405C
-:103C500081320000E39F00881CB000002080000338
-:103C6000469901000000005FE191010030800010E2
-:103C700044C901001200001AF0C901000000001739
-:103C8000F0B1010010000005E0C901003000001093
-:103C900080C801000000004461B101002000004024
-:103CA00062DD01009107A840813200009B07225C81
-:103CB0001F7C000000003C4423E0010000002D10A8
-:103CC00048C101009B0722F2640600000000004684
-:103CD00061B101004000001062DD01009807A840BA
-:103CE00081320000E39F00881CB00000EB9F005C65
-:103CF0001F00010020002F0548B101000000000B4B
-:103D0000E4B101000000005017F00100A10790F29B
-:103D1000164000000000004117C0010000006620AE
-:103D200017A40100100000142AC801000000001DA3
-:103D30002AC00100000000502BE00100000000F24A
-:103D40002A9401003080001042C90100AC0722F221
-:103D5000640600000000004461B101004000001052
-:103D600062DD0100A907A84081320000E39F0088BE
-:103D70001CB000000080001710DC0100C9072240C1
-:103D8000156C0000B407A2441F7C00000000004432
-:103D90001F900100B307229F136C000002000088EF
-:103DA0001CCC0100E49F004081B2000000000041F3
-:103DB0003FC30100E69F004081320100B707A241E6
-:103DC000877C00000000001E3EC00100C9072240A1
-:103DD000156C0000BA07201E146C00000000000AD9
-:103DE0003CB00100E59F001E24300100BF072208FF
-:103DF0002E3000000000005211C001000000001A27
-:103E000010C001002307004017B00000E49F0088A5
-:103E10001CB00000E59F004081320100BC07A208F1
-:103E20002E300000808000A604B001000600004093
-:103E300087980100008000034499010004002204D7
-:103E4000E0310000E89F001F8C30010000000040BE
-:103E50000FB00100E29F005C1F9000000080000393
-:103E60004499010004002204E0310000E69F004074
-:103E700081320100CE07A241877C0000CF07001EDF
-:103E80003EC000000000001F8CB001000000004098
-:103E900005B00100E89F00400F300100E29F005C88
-:103EA0001F9000000400004081B2000004000040A8
-:103EB00081B200000400004081B200000400004014
-:103EC00081B200000400004081B200000400004004
-:103ED00081B200000400004081B2000004000040F4
-:103EE00081B200000400004081B2000004000040E4
-:103EF00081B200000400004081B2000004000040D4
-:103F000081B200000400004081B2000004000040C3
-:103F100081B200000400004081B2000004000040B3
-:103F200081B200000400004081B2000004000040A3
-:103F300081B200000400004081B200000400004093
-:103F400081B200000400004081B200000400004083
-:103F500081B200000400004081B200000400004073
-:103F600081B200000400004081B200000400004063
-:103F700081B200000400004081B200000400004053
-:103F800081B200000400004081B200000400004043
-:103F900081B200000400004081B200000400004033
-:103FA00081B200000400004081B200000400004023
-:103FB00081B200000400004081B200000400004013
-:103FC00081B200000400004081B20000F70700BC8D
-:103FD00080B200000380004081B2000003800040F6
-:103FE00081B200000380004081B2000003800040E5
-:103FF00081B200000380004081B2000003800040D5
-:1040000081B200000380004081B2000003800040C4
-:1040100081B200003180004081B200003480004055
-:1040200081B200003580004081B2000004000040F1
-:1040300081B200001B808180803200001487A24082
-:10404000916F00000000004C90B301005C952EA21F
-:1040500080B00100FF000080F489010090952AC81B
-:10406000E5B10100000000A1F0B101000000004036
-:10407000F0B10100000000A4F0B10100000000D088
-:10408000F0B10100000000D1F0B10100000000D249
-:10409000F0B101000000004CF0B10100000000D4BC
-:1040A000F0B10100000000D3F0B10100000000EE0B
-:1040B000F0B101000000004EF0B10100000000402E
-:1040C00044B1010018801181983000000000514077
-:1040D00081B201001A801182983000000000524025
-:1040E00081B2010014870048FD930000B603004030
-:1040F000A19901002380A242FD7F00002080008062
-:1041000080320000228011818230000022805140E4
-:1041100081B2000022801182823000002280524051
-:1041200081B200002C800048FD93000027800080B1
-:10413000803200002680A253077C0000000051530B
-:10414000079001002A800052079000002980A252A7
-:10415000077C00000000525207900100000000534D
-:104160000790010000000048FD9301000000004698
-:10417000F39301005C952EA252B30100FF00008072
-:10418000F48901000000004CE4B10100000000A926
-:1041900045B101003080004C80B200000000454075
-:1041A00081B201000000554081B20100AF8205409C
-:1041B00049B10000AF82054049B100000000054050
-:1041C00049B101004C010040813201000000004B68
-:1041D000DEB2010000000040FD9301000000004835
-:1041E000FD830100020000409B9B0100000000A530
-:1041F0009CB30100480300408132010058952044DF
-:10420000E0B101000494004043990100000000F275
-:1042100024B10100000C00EE968801000000004A65
-:1042200097F001004480A243976C00000000004218
-:10423000FD93010000C000A636B10100D01400407B
-:104240004799010005000040F59901000038004041
-:10425000F599010000060040F599010000000040BA
-:10426000F599010005100040F59901000209004090
-:10427000F599010004000040F59901006003004039
-:10428000813201008803004081320100A003004018
-:1042900081320100A2820040813201009A820040F6
-:1042A0008132010060952040E1B10100709520400D
-:1042B000E1B1010000000049DD9101000000004073
-:1042C00091B30100F99500408132010000000040E7
-:1042D00085B301005C952040E1B1010027820040D8
-:1042E0008132010090060040813201000000005F31
-:1042F0002F8101008D81004081320100FE95004038
-:10430000813201000000454081B2010000005540AB
-:1043100081B20100DD82004081B200000400004053
-:1043200081B200000400004081B20000040000409F
-:1043300081B200000400004081B20000040000408F
-:1043400081B200000400004081B20000040000407F
-:1043500081B200002800004047990100AF8200416F
-:10436000E1C1000078180040499901001905225464
-:10437000817C00006C80424081320000008200B4E9
-:1043800069DF010000001A449393010028000040F7
-:10439000479901001805004081B200000400004068
-:1043A00081B200000400004081B20000040000401F
-:1043B00081B200000400004081B20000040000400F
-:1043C00081B200000400004081B2000004000040FF
-:1043D00081B2000040820040813201007D80224095
-:1043E000976C00007A804240813200000000004F4C
-:1043F0006993010038810058699300005416004009
-:1044000047990100000000FEF4B101008005004062
-:1044100081B2000080804240813200000000004EE6
-:1044200069930100388100586993000040160040EC
-:10443000459901004005004049310100F615004052
-:10444000439901005C1600404599010000006EFA96
-:104450008EB00100C105004081B2000004000040A0
-:1044600081B200000400004081B20000040000405E
-:1044700081B200000400004081B20000040000404E
-:1044800081B200000400004081B20000040000403E
-:1044900081B200009680004081B20000408200405E
-:1044A0008132010096802240976C00009380424048
-:1044B000813200000000004F6993010038810058EC
-:1044C0006993000038050040813201001E00004859
-:1044D000B2CB0100D005004081B2000004000040D2
-:1044E00081B200000400004081B2000004000040DE
-:1044F00081B200000400004081B2000004000040CE
-:1045000081B200000400004081B2000004000040BD
-:1045100081B200008302004081B20000B802004076
-:1045200081B20000D49F004081B20000D59F0040BE
-:1045300081B20000D69F004081B20000D79F0040AA
-:1045400081B200007201004181C000005501514854
-:10455000FD93000055015248FD9300005501554957
-:10456000FD8300005501564AFD83000050019181F2
-:10457000803000005501454081B200005001918219
-:10458000803000005501464081B20000000000402C
-:1045900089B00100000000F880B00100000000F0C8
-:1045A00016B001002200000548C9010000000014F7
-:1045B00048C10100B48043303D0700000000009E68
-:1045C00085B0010000001B413DC3010004002042F2
-:1045D000ECB101000000004049B10100AE0300CB86
-:1045E000A3C901000000002046B10100000000D274
-:1045F000F1B10100000000D3F1B101000000004260
-:10460000F0B101000000004561B101002000002070
-:1046100062DD01000000A8D0E1B10000BF800040D1
-:1046200081B20000000000A898B0010004800040A2
-:104630008BB30000B1030040A1990100C780A242E2
-:10464000976F000000000045A1C1010000000000BC
-:1046500080B001000000A2048094000080153F4259
-:1046600097E301000000004049B101000000600331
-:10467000029401000000004007B00100040000CBDC
-:1046800099CB0100000000CCF3830100D180A2424D
-:10469000976F0000000000CBF3930100AE0300CB46
-:1046A000A3C901000000002044B101000000004443
-:1046B000F1B1010000000000F0B1010000000004B1
-:1046C000F0B10100000000A1E0B1010005000040D0
-:1046D000619901002000002062DD0100D880A8401F
-:1046E00081320000F9020020423101000000A241A5
-:1046F000056C0100000080CBDB9101000000194136
-:104700008BB301006000004061990100DE80A8B118
-:104710008C3300006000004061990100E080A8B186
-:1047200094330000E68014C681320000180000C6F1
-:1047300083F40100F482224F83040000C280004011
-:1047400081B20000FF0100C681880100000000C6A0
-:1047500097A30100C2801F5C9753000058821EC6B9
-:104760008132000000002F4381F00100EC80004006
-:1047700010C900003981004081B200006A81004008
-:1047800081B20000248200CA63B30000618100404E
-:1047900081B200004881004D83B000005281004E7C
-:1047A00061B100004181004085B000004881004CAB
-:1047B00083B000002481004085B00000E381004008
-:1047C00049B1000071810040C1B10000DF810040AB
-:1047D00081B200004181004085B00000F00300403C
-:1047E00049B10000F48200CA9BB300007B81004005
-:1047F000C1B100007F810040C1B10000868100404E
-:10480000C1B1000087810040C1B100008881004033
-:10481000C1B1000089810040C1B100008A8100401F
-:1048200081B000008A81004181B000001882004000
-:1048300081B20000978200BBABB30000258200CAA2
-:10484000CFB30000C803004049B10000E8030040B6
-:1048500081B200002682004081B20000F482004054
-:1048600081B20000E003004081B20000F48200CA7F
-:1048700077B300004981004D83B000005081004EA5
-:1048800061B10000418100BB85B000004981004C4E
-:1048900083B00000418100BB85B00000248100BBD3
-:1048A00085B000001681004081B20000F48200CA89
-:1048B0004DB300007005004049B10000A005004064
-:1048C00049B100001C8122428F6F00001E812241ED
-:1048D0008F6F000020811ECA8132000022811FCA12
-:1048E00081320000000000CAC9B10100F482004218
-:1048F0008FB30000000000CACDB10100F482004176
-:104900008FB30000000000CACFB10100F482004064
-:104910008FB30000008100A6C6B10100F482004000
-:1049200081B20000008000A6C6B10100F482004000
-:104930008FB30000781800404999010010002F9CA7
-:1049400089B001003B8100403933010018002F9BE2
-:1049500089B001003B8100403733010000002F9AED
-:1049600089B001003B8100403533010008002F99D8
-:1049700089B001003B81004033330100008000AE6C
-:1049800047C9010080000040F1990100000000CA01
-:10499000F1B1010000000042F0B1010040180040F8
-:1049A000E19901000000004561B10100200000AE66
-:1049B00063DD0100368128408132000033810040F0
-:1049C00081B2000036814240813200000000005C6C
-:1049D00069930100F4821A449393000039814240A4
-:1049E00081320000388100586993000000000044C3
-:1049F000F0D101000000A44081B200004081A2403B
-:104A0000E16D00000000004445D10100000080403D
-:104A1000E1B1010000008041E1D101004181375C3A
-:104A2000613100000000004262B101004581284070
-:104A3000813200004281004081B20000000000CAC3
-:104A400063B101004581A84081320000F482174023
-:104A500081B200004A81004081B000004A8100BB61
-:104A600081B000000000004160B101000000004082
-:104A700062B101004B81A84081320000000000CAF1
-:104A800063B10100F4822840813200004D81004072
-:104A900081B200005095004047990100538100BB4E
-:104AA00087B0000050952F4087B00100558122400B
-:104AB000957F0000F48260409583000002002DF095
-:104AC00084B001005681364081320000000000426F
-:104AD00062B101005781A84081320000000000430C
-:104AE00062B101005981A84081320000000000CA73
-:104AF00063B101005B81A8408132000000001640D4
-:104B000081B20100F482224143510000000800CA32
-:104B100095CB01005681004185C000006381A2420F
-:104B2000676F00000000004167B3010063814240ED
-:104B3000813200000000004065B301000000004029
-:104B40009383010000001ACA69970100F48226408D
-:104B5000813200006881424081320000F4821A44B0
-:104B600093930000F4822043956F0000F48280CA82
-:104B700067330000F4822240656F0000F482006F0A
-:104B8000DB91000085000040813201003580224029
-:104B900080320000F482004081B200000000005822
-:104BA000959301000000005F959301007781A24476
-:104BB000216F00000000005F958301000000005E8F
-:104BC000959301000000005795930100000000CA72
-:104BD000C3B101007A81225B957F00000000004B89
-:104BE000FD930100F482004081B200001BFD00CA69
-:104BF000959B01000D0100CAC53101000000005F56
-:104C000095830100F48200CAC5B10000DF6F00CABD
-:104C1000959B01000000005595930100000000CA1B
-:104C2000C7B10100F482225F957F00000D010040B2
-:104C3000813201000000005F95830100F48200CA08
-:104C4000C7B10000F48200CAC9B10000F48200CAF2
-:104C5000CBB10000F48200CACDB10000F48200CADA
-:104C6000CFB1000000002E4281E001009814004006
-:104C700048C90100F48200CAE1B100000000004010
-:104C800009B10100200000A682B001008F81A25E60
-:104C90000B7D000000800041089901009181A25E17
-:104CA0000B7D0000208000A608B1010093819F8544
-:104CB000823000000000003083840100C88122306F
-:104CC000836C00009281A24F0B7D00000000004128
-:104CD00021B30100028000A682B0010013820040CF
-:104CE000813201001000004184E40100038000A62D
-:104CF00082B001001382004081320100F0FF0041C8
-:104D00008688010000000043849401000F0000A683
-:104D100086B0010010C4004386980100A881A24318
-:104D2000846C00000000004321B30100200000A6B5
-:104D300082B001001C00004182DC0100A581A25E5E
-:104D40000B7D00000400004108990100BA81004079
-:104D500081B20000410100A686B00100500C004362
-:104D600086980100AD81A243846C000000000041E0
-:104D700021B30100BA81004081B20000410100A6C8
-:104D800086B00100600C004386980100BA81A243FE
-:104D9000846C00000000004221B30100188000A6CE
-:104DA00082B001001382004081320100FFFF004108
-:104DB0008288010000770041828C010001020041DD
-:104DC000829801002000004182DC010018000041AF
-:104DD00082DC0100B881A25E0B7D00000000004172
-:104DE00008B10100200000A682B00100BB81A25ED4
-:104DF0000B7D00004013004108990100C38122434C
-:104E0000216F0000200000A682B0010012000041C6
-:104E100082DC0100C081A25E0B7D00000004004125
-:104E200008990100DE81004081B20000200000A648
-:104E300082B001001900004182DC0100C581A25E40
-:104E40000B7D000000A0004108990100DE810040B8
-:104E500081B200000000004421B3010000000040C6
-:104E600083B001000000005F839001000000005E3D
-:104E70008390010000000057839001000000004172
-:104E8000C2B101000C010040813201000000005F4E
-:104E90008380010000000041C2B101000C0100400C
-:104EA00081320100200000A682B001000400004110
-:104EB00082DC01002000004108990100200000A6CA
-:104EC00082B001001100004182DC0100D781A25EA6
-:104ED0000B7D00000100004108990100200000A6A0
-:104EE00082B00100DA81A25E0B7D00004013004118
-:104EF00008990100010000A682B0010040000041B5
-:104F00002E9901000000804081B20100200000A61F
-:104F100080B00100000000CA81940100E181A25E1E
-:104F20000B7D0000F482004008B10000C8142EBBC5
-:104F300085B00100E481A25E0B7D0000000000400E
-:104F400087B00100F3812243216F000002822244D6
-:104F5000216F0000118000A682B001001382004082
-:104F6000813201000A82224A837C00000000004056
-:104F700087900100EE81224D837C000000000041FB
-:104F800087900100F081224F837C000000000043E5
-:104F900087900100F281224E837C000000000042D5
-:104FA000879001000A82004081B20000018000A6C3
-:104FB00082B001001382004081320100018000A60E
-:104FC00082B0010013820040813201000A82224235
-:104FD000837C000000000040879001001C8000A638
-:104FE00082B001001382004081320100FD81224520
-:104FF000837C00000000004187900100FF81224473
-:10500000837C00000000004387900100018222435E
-:10501000837C000000000042879001000A8200406B
-:1050200081B20000018000A682B00100138200401E
-:1050300081320100018000A682B00100138200408D
-:10504000813201000A822242837C0000000000407D
-:10505000879001000000004387900100000000419C
-:1050600087900100008000A682B0010013820040FA
-:10507000813201000E82224B837C00000000004040
-:105080008780010000000043E0B10100FF7F00A223
-:10509000A08B010000000044A5B30100B88000CA45
-:1050A000A73301003681004081B20000200000419A
-:1050B00082DC01001482A25E0B7D00000000004132
-:1050C00008B1010016829F858230000000008040F8
-:1050D00081B201001B8214F7813000001B82A249BB
-:1050E000FD7F000000000048FD9301001E8215F8BE
-:1050F000811400001E82A24AFD7F000000000048CB
-:10510000FD9301002082A2C88132000040000040CF
-:1051100080DC01000010004080DC01000000004045
-:10512000EFB3010022824240F13300003881004099
-:1051300068970000F48200BB6BB30000F48200BBF0
-:10514000B1B30000F482004081B2000000030040CF
-:10515000819801000000004018B10100800000406B
-:105160008398010000190040459901000000424069
-:1051700081B20100000043FFF1B10100000000FF17
-:10518000F1B101000000004181C0010000000040B9
-:1051900018B101002B82A24183500000001600408C
-:1051A00045990100001900404399010000000047A3
-:1051B00043C101000000004083B00100000000F383
-:1051C00080B001000000005B81D0010000000041C0
-:1051D00080D0010000000040F6B101000000005B3B
-:1051E00043C101000000004183C001003582A25488
-:1051F000836C000000000040F7B101000000004196
-:1052000083C001003C82A206836C00000000804045
-:1052100081B20100001600404399010080162E065D
-:1052200083B00100360000FBF6A901004282A241D2
-:10523000835000002200004083980100000000FB22
-:10524000F6B101004582A241835000006200004097
-:1052500095980100DC9F00408132010000162D0668
-:1052600083B0010080160040459901005C0000FBFE
-:10527000F6A901004B82A24183500000000000709B
-:10528000F9B1010000000071F9B1010000000072E5
-:10529000F9B1010000000073F9B1010000000074D1
-:1052A000F9B101005400004095980100DC9F0040D6
-:1052B000813201000000007095B001005782227019
-:1052C000B56F00000000804197B0010000008040F1
-:1052D00097B00100B6030040A199010000002F42E1
-:1052E00099B3010062822244816C00006A822248E4
-:1052F000816C00006482224C816C00006E8222501E
-:10530000816C00006F822254816C000071822258EF
-:10531000816C00007682225C816C000050010040AC
-:1053200081B20000000000BC09B00100F48200CA94
-:1053300001B000000000004003B001000000004187
-:10534000F38301006882A242056C00000000004166
-:1053500005B00100F48222CA07140000F48200465E
-:10536000F3930000F4822043956F0000F48280CA1A
-:1053700005300000F482220180300000F48200CB6E
-:10538000DB910000570100BCABB30000000000BC83
-:10539000B1B30100F48200CACFB30000FF0000CA1D
-:1053A00081880100F482A240747D000060002040EA
-:1053B000609901007382A8B18230000072820040BF
-:1053C00081B20000F48200CA79B300000000004EF0
-:1053D00081B0010000000043CB8301000000454084
-:1053E00081B201007982A241815000000000454055
-:1053F00081B201000000454081B2010084829182A7
-:10540000823000000000008A80B00100AE9F0040A2
-:1054100080CE01008282A640813200008482564004
-:1054200081B20000B6030040A199010000000053C2
-:1054300007900100B6030040A1990100000000524E
-:1054400007900100D89F00418BB300000000004E80
-:1054500081B0010000000042CD8301000000464001
-:1054600081B201008982A2418150000000004640C3
-:1054700081B201000000464081B201009482918116
-:10548000823000000000008980B00100AE9F004023
-:1054900080CE01009282A640813200009482554065
-:1054A00081B20000B6030040A19901000000005243
-:1054B00007900100B6030040A199010000000053CD
-:1054C00007900100D89F00418BB30000B10300405A
-:1054D000A1990100C4142F4099B301005701004065
-:1054E00049B10000A0942E4397B001000000004095
-:1054F000F1B101009B82A2419750000050952040DD
-:10550000E1B10100AC942E4397B0010000000040CF
-:10551000F1B101009F82A24197500000000080403D
-:1055200081B20100AE030040A399010000000040D9
-:1055300081B001006015004085980100080000401E
-:1055400040E40100000000594194010000000050B7
-:1055500041E00100000000424094010000000057BB
-:10556000419001000000004181C001000000A34201
-:10557000816C010000000041A3C10100A582A0428E
-:10558000816C0000A582005085C00000DD82A24130
-:10559000017D0000B5822258737D00007800004034
-:1055A00061990100B082A8B19C30000030003845FC
-:1055B0009DE001000100000E10C90000B58233C457
-:1055C00081300000B882A1AD9D200000AF82134061
-:1055D00081B200000000134E5A83010030003845AC
-:1055E0009DE00100C08222AB80040000BE82A24088
-:1055F000017D0000C082225F577D00003C87004093
-:1056000081B20000C082225E577D00009F8700406B
-:1056100081B20000C5822254737D000074000040F6
-:1056200061990100C082A8B1003000009084A25F9F
-:10563000017C0000D086004081B20000C782A25FDA
-:1056400059270000C982A25C737D0000D082A25E4F
-:10565000737D0000DA82225C737D0000DB823740BC
-:10566000813200007C00004061990100CA82A8B12B
-:10567000363000007C00004061990100CC82A8B166
-:10568000003000001F00000002880100BF841740A6
-:1056900081B20000DB823440813200007E00004095
-:1056A00061990100D182A8B112300000D882522144
-:1056B00013040000000014412FC30100FF3F000944
-:1056C000008C01000000004301F001001183003450
-:1056D00013840000FF3F1409008C01007183004314
-:1056E00001F000000000004081B20100DB82334085
-:1056F00081320000AF82134E5A9300001487A248F3
-:10570000FD7F00000400A2AC80320000E382225A38
-:10571000737D00007A00004061990100E082A8B129
-:105720007E310000010000CF11C90000E982A240D3
-:10573000937F0000E9822244937F0000E58242A526
-:1057400080300000E882A240937F0000FB821A4074
-:105750009393000000001A4081B20100DD80A24056
-:10576000737D00000F872244216F000006872240CE
-:10577000657D00000005A25B737D00000400A24966
-:10578000337D0000F3822248337D0000FF01009941
-:1057900080D801000000005081E00100A8982F404F
-:1057A00033B1010000000040E0C10100DD82004093
-:1057B00081B20000AF8200408BB3000000000058AF
-:1057C00061B101000000004E62B10100AF822840CB
-:1057D00081320000F682004081B20000F98233403D
-:1057E0001F300000AF82134E5A930000FD82A0CEFE
-:1057F000815000000F83A0CD816C0000000000A547
-:105800009CB30100000000B181B001000F8322B5FC
-:105810008114000080152F4049B1010001834240EE
-:1058200081320000000060B465970100D0152E4061
-:1058300069B3010000001A44938301001A0000A21A
-:1058400080DC010000000044F1B10100000000B163
-:10585000F1B10100000000B5F1B101000500004008
-:10586000619901008000004062DD01000A83A8A167
-:10587000E0310000E98200889EB30000E982A24185
-:10588000676F0000E982006FDB9100000F834240E8
-:1058900081320000E9821A409383000000990009D8
-:1058A00046C901003F0000F30C8801001A83A6429C
-:1058B00013600000299400950330010015836140B6
-:1058C0008132000075000040619901001683A8B183
-:1058D0000C30000036947110943001001B83005886
-:1058E0001F9000001C94009503300100AF820088D7
-:1058F0001CB0000000002D0348B1010004002DF091
-:105900002EB00100EE070040979801002283234B40
-:10591000E46D00002283224BFD7F00000000004068
-:105920001F90010022002F4081B2010025838317C0
-:105930008032000026000040479901002783851728
-:10594000803200000000004847C101002D8322552D
-:105950002F7C00000000004243D101000F0000FA3C
-:10596000968801000000004297E00100000000421C
-:1059700097D001002E83004B44C10000120000A20A
-:1059800044C90100280000F602CC01000A0000A171
-:1059900042C90100000000F816B00100000028F024
-:1059A00010B00100000000F01AB00100000000A2D9
-:1059B0002AB00100C0283C460DE0010000002D4443
-:1059C00095B001003A83A2F80E3000004A832241CC
-:1059D0009550000000002D5049C101003683004061
-:1059E00081B200003783A2F8166C00003783A2F85A
-:1059F000106C00003783A2F01A6C00004883225814
-:105A00001F7C000000993F4213F001003F83654076
-:105A1000813200004383A2F37406000000000006F8
-:105A2000E69501004883754081B200000000000641
-:105A300096B001003F0075F30C880100000000558E
-:105A400061B101000000004B62B101004683A84033
-:105A500081320000488367408132000050837741E3
-:105A60002DC300004E8322581F7C0000000000550B
-:105A700061B101000000000662B101004C83A84042
-:105A8000813200004E836740813200007E8377417F
-:105A90002DC30000030000071AF40100EF92000775
-:105AA000163001005F832241816C00005683224240
-:105AB000816C0000AF8200881CB000005E83225F12
-:105AC0000F7C0000E393005F011001005C83224023
-:105AD000956C00000480000342C90100000000F240
-:105AE00002B0010058930052953001005F93004BC3
-:105AF00002B0000041940009963001001A8700406E
-:105B00000FB000006783A25A1F7C0000699200401A
-:105B10008132010067832220856C000064839C0F22
-:105B200080320000AF8200881CB000004A93005C05
-:105B30001F0001003C95004261310100AF820088E6
-:105B40001CB00000900400079630010000002D05F5
-:105B500048B101006A8382F0183000008188004556
-:105B60008FB00000282000A696B001006E83221797
-:105B700096040000E094004B953001008188004BB2
-:105B80008FB00000EF93000348310100CA9100403C
-:105B9000813001008188004081B2000000002E1099
-:105BA00048B101000000685003B00100000000038C
-:105BB000F0B1010040000000E0C9010000002E50DB
-:105BC00049C1010000000050F1B1010000000003D4
-:105BD000F0B101000000004261B10100200000109E
-:105BE00062DD01007983A8408132000010000010BE
-:105BF00062C901007B83A800E0310000AF82008809
-:105C00001CB0000000002D0348B10100000000405E
-:105C10000FB00100000000F82EB00100000000F2FB
-:105C200002B001000000004017B00100004100A6D2
-:105C300096B00100EE072E4797900100918322173E
-:105C4000960400008F83224BFD7F00008F8323A2E8
-:105C5000026C00005893005295300100040022416C
-:105C6000975000000C002D0012B00100000000F061
-:105C700000B001000000005C018001005F93004B58
-:105C800002B000000000000900B001000000005058
-:105C900003B00100AE83005C17900000A383224391
-:105CA0002F7C0000000000451F9001009C83225FB4
-:105CB0002F7C000000002E1048B1010000000058A9
-:105CC000F1B1010010000003F0C901001000000054
-:105CD000E0C90100988362426131000000000010B9
-:105CE00062B101009983A84081320000AF827288BE
-:105CF0001CB0000020002D0348B10100FF0F00F68A
-:105D000080880100A083A2A6816C0000A38300F21A
-:105D10003AB000008D84A24BFD7F0000B09200409D
-:105D2000813201003087004081B20000AE83224AF8
-:105D30002F7C0000AE8322482F7C00000A002D0338
-:105D400048B101003F0000F2868801001F000043B7
-:105D5000848801000500004380F4010098943D42CE
-:105D600081E00100AE83A242E07D00008D84A24B61
-:105D7000FD7F0000B092004081320100308700407A
-:105D800081B20000AE83694081320000000000A3B0
-:105D900009B001000000794147C30100B48322A18A
-:105DA000096C0000F58200881CB00000B18300037C
-:105DB00048B10000EE83A392036C0000949500406C
-:105DC000953001000000004143C3010000000016AF
-:105DD00080B201003087270880320000BB83225C3C
-:105DE000177C0000BC8300002AB0000012000000F5
-:105DF0002AC801000200000880C80100C083A24335
-:105E00002F7C0000E394004081320100DC83005EBF
-:105E100017900000040000018CCC0100E394004CBA
-:105E20000330010000002E4602B0010010000010F7
-:105E300048C901000C000001F0CD01002C00004019
-:105E4000F0C9010000000016F0B1010010000015BB
-:105E5000E0C901000000004361B10100A00000A4FE
-:105E600062DD0100C983A85417100000DC83005EC6
-:105E700017900000120000002AC80100DB832243B3
-:105E80002F7C0000040000018CCC01000000004CBD
-:105E900003B00100049500436131010000002E466B
-:105EA00002B001001000001048C901000C00000100
-:105EB000F0CD01000C000009F0C90100000000183D
-:105EC000F0B1010010000015E0C90100000000431E
-:105ED00061B10100A00000A462DD0100DC83285450
-:105EE00017100000D883004081B2000004950043E1
-:105EF00061310100DE8322502F7C0000000000563B
-:105F0000179001000700001798880100E183A24163
-:105F1000996C00000000005517900100000000433C
-:105F200061B101004000001062DD0100E283A84081
-:105F300081320000AF8200881CB00000EB9400406A
-:105F400081320100E98322432F7C00001680000388
-:105F500044C901000000001DE4B101008C94005E02
-:105F600005100100EC83A25F2F7C0000A6910001C8
-:105F700038430100B0920040813201003087004078
-:105F800081B20000F083A24BFD7F00008A840041B3
-:105F900043C300000000004027B0010000000040A3
-:105FA0002DB001000000004011B00100F383350165
-:105FB000863000006D00004061990100FB8328B12C
-:105FC00030300000F483224D757D00000000001683
-:105FD00080B201007A84A740116C000000000041EB
-:105FE00043C301008984004081B200006D0000407D
-:105FF00061990100FB83A8B1123000000000001677
-:1060000080B201000584A740116C0000000000412F
-:1060100043C301000000000910B001000000001897
-:106020002CB00100DE07004380CE0100F483AA40BB
-:10603000813200000A84004081B2000040003E43EB
-:1060400027E0010000000009F0B101000000001885
-:10605000E0B101000000004127C00100F483A30B60
-:1060600087500000000015401BB0010000000040F8
-:1060700023B00100120000002AC8010040002D409A
-:1060800039B001001284A240276C000022000008F1
-:1060900012C80100DE070040259801001584004069
-:1060A00081B20000000000F812B00100000000F012
-:1060B00030B001000000000B25B00100000000100E
-:1060C00032B0010014002001E0B10100EE070040F1
-:1060D000379801001A842301366C0000000000018B
-:1060E00036B001002584824123400000208000104A
-:1060F00042C9010021842240E36D000000000043FA
-:1061000061B101004000001062DD01001E84A84062
-:1061100081320000AF8200881CB00000CF920043A3
-:10612000233001000000001032B0010000000041E7
-:1061300023B001000000000348B1010000800019F5
-:1061400044C90100348422451F7C00000000004C3B
-:10615000F1B1010000000009F0B1010000000018D9
-:10616000F0B101000000004361B1010020000019FE
-:1061700062DD01002B84A815E03100000000005012
-:1061800003D001000000005033C001000000004CAB
-:1061900025D001000C002D4C13C001000000005060
-:1061A00037D00100000000502BC001001A840045C8
-:1061B0001F8000003684A312366C00003784681BF1
-:1061C00028B000000000681228B00100000000099B
-:1061D000F0B1010000000018F0B101000000004320
-:1061E00061B101002000001962DD01003A84A815A8
-:1061F000E0310000608422140250000000000050D2
-:1062000033C001000000001424D001000C002D1444
-:1062100012C001005984A214365000004A84225C46
-:106220001F7C00003080001042C9010048842240D9
-:10623000E36D00000000004261B101004000001069
-:1062400062DD01004584A84081320000AF820088F1
-:106250001CB000000000000348B101000C002D5CE0
-:106260001F800100100000F02AC801000000005C3F
-:106270002B800100F0070040379801004F84230174
-:10628000366C00000000000136B001005A84221B69
-:10629000026C00003000001048C9010000002E5CB4
-:1062A0001F90010000000050F1B101000000000348
-:1062B000F0B10100FF070015E08D01000000004271
-:1062C00061B10100A00000A462DD01005684A84075
-:1062D000813200005A84000348B10000000000141D
-:1062E0002AC001001A84A240256C00000000004171
-:1062F00039C0010040003D4339E001000000000BBF
-:1063000025B00100000000F812B001001A8400F06E
-:1063100030B000000080001942C9010066842240AC
-:10632000E36D00000000004361B10100400000196E
-:1063300062DD01006384A84081320000AF820088E2
-:106340001CB00000CF9200402B30010018002E033B
-:1063500048B101006A8422502F7C000000000056E2
-:106360001790010007000017988801006D84A24172
-:10637000996C0000000000551790010070842243C2
-:106380002F7C000000000054179001001600201D13
-:10639000E4B101007284A340276C00007484605F44
-:1063A000179000000084000B16DC01000000601351
-:1063B000169401008C94005E051001003087A25FE6
-:1063C0002F7C00001480000342C90100000000F28D
-:1063D00002B00100A691000138430100308700405F
-:1063E00081B200000000004083B001000000004DB9
-:1063F00061B101000000001662B101007C84A84078
-:10640000813200000000000862B101007E84A840D3
-:106410008132000089842213826C000040003D43D9
-:1064200083E00100000000F810B00100000000F05F
-:106430002CB001000000001662B101008484A84065
-:10644000813200000000000862B101008684A8408B
-:10645000813200008084004183C0000000001540AC
-:1064600081B20100008200A604B00100A0980040A3
-:1064700047990100300500418930010058930052CE
-:10648000953001005F93004B02B000003087004060
-:106490000FB000000000005F01800100100000004C
-:1064A0000EF401003F000000008801000300000717
-:1064B0001AF40100EF920007163001009B8422417C
-:1064C000816C000099842242816C0000AF820088B8
-:1064D0001CB000009A84225F0F7C00001A870040E5
-:1064E0000FB00000A384A25A1F7C000069920040F4
-:1064F00081320100A3842220856C0000A0849C0FBF
-:1065000080320000AF8200881CB000004A93005C1B
-:106510001F0001003C95004261310100AF820088FC
-:106520001CB00000900400079630010000002D050B
-:1065300048B10100000000F018B00100A984223A1F
-:10654000016C0000000000008EB001008188004056
-:1065500001B000000000004081B201002E002D05B6
-:1065600048B10100AD84A240E76D00000A00004080
-:106570008F9801008188004001B0000034920040F3
-:10658000813201001C94009503300100AF82008825
-:106590001CB0000000002D0348B1010022002DF0C6
-:1065A0002EB00100282000A696B00100B684221764
-:1065B00096040000E094004B953001008188004C67
-:1065C0008FB00000B88483178032000000000044C0
-:1065D00043C10100BA8485178032000000000048E2
-:1065E00043C10100280000F602CC0100120000A106
-:1065F0002AC80100EF93004081320100CA91004196
-:10660000813001008188004081B20000000000015B
-:1066100000D0010000002E1048B101002800004009
-:10662000F199010000000003F0B10100000000003A
-:10663000F0B10100C4846447613100000000001023
-:1066400062B10100C584A81BE0310000AF827488EC
-:106650001CB000000000004503E0010008002D030D
-:1066600048B10100EA8401FB083000003D8587FB4A
-:1066700022300000000000FA0EB00100000000F817
-:1066800014B00100030000071AF40100EF920007A4
-:1066900016300100E0842241816C0000D484224243
-:1066A000816C0000AF8200881CB00000DF84225F94
-:1066B0000F7C0000380000047E890100D884A65FAA
-:1066C0000F0000004292004005300100DD840040D0
-:1066D00081B20000130000408798010000002D03E4
-:1066E00048B101000C002DF082B00100000000F064
-:1066F00084B00100CE930040053001000000005C32
-:106700001F9001001A8700400FB00000E884A25AD1
-:106710001F7C00006992004081320100E884222041
-:10672000856C0000E5849C0F80320000AF820088F9
-:106730001CB000004A93005C1F0001003C95004221
-:1067400061310100AF8200881CB000009004000796
-:106750009630010000002D0548B10100000000F056
-:1067600018B00100EC84210480200000ED8400407A
-:1067700010C90000C387004B81B000000C850043A6
-:1067800081B00000108500FB22B00000C3870041EB
-:1067900081B000008188004E8FB000000885005A4B
-:1067A0008FB00000F58400478FB00000C38700530E
-:1067B00081B00000C387005681B0000032002D0573
-:1067C00048B101008188A00AE46D0000FB84A24169
-:1067D000197C0000FA84220A80320000818800536C
-:1067E0008FB00000818800548FB000000485220A19
-:1067F00080320000FE84A20AE46D00008188005D02
-:106800008FB00000000000F280B001000000000A1C
-:1068100080D001000285A091816C00008188005E1B
-:106820008FB00000250000408F9801008188004053
-:1068300081B2000006852091E56D0000818800543A
-:106840008FB00000210000408F9801008188004037
-:1068500081B2000032002D0548B101008188A00AF4
-:10686000E46D0000240000408F9801008188004002
-:1068700081B2000037002D0548B10100040000F38B
-:1068800082F40100C387A042836C0000C3870054D8
-:1068900081B00000000000F20EB00100030000070C
-:1068A0001AF4010000B5000D42C9010007000007FD
-:1068B000168801001985220BE67D00000A000040C1
-:1068C00087980100DF950040813201000000004000
-:1068D0000FB001001A87005C1F9000002B8522502A
-:1068E000FD7F00002685A254FD7F00001E852255F5
-:1068F000FD7F00008200004087980100168500405F
-:1069000081B2000016852253FD7F00001480000331
-:1069100042C90100000000F096B001001000004BD9
-:1069200080F401000CBC00408798010026852243BA
-:10693000806C0000FFFF004B808801001685A24399
-:10694000806C00007C9600404799010027854640F6
-:10695000813200002A85A0F0306F00001C851E40A7
-:1069600081B2000000001E4131C30100739200405B
-:10697000253001002F859C0F80320000AF820088F7
-:106980001CB000004A93005C1F000100148000034B
-:1069900042C90100000000F096B0010000002F0580
-:1069A00048B101001000000718E401000008000CC5
-:1069B000E0990100900400079630010000B5000D39
-:1069C00046C9010036853040813200000000000BCE
-:1069D000E6910100000200A146C901000000000B81
-:1069E000E691010004002E0548B1010000001040AE
-:1069F000E1B10100C387004081B00000000000FB4E
-:106A000028B00100000000FB86B00100000000F883
-:106A100014B0010047852246237C000043852240B4
-:106A2000877C0000000000481F900100458522413E
-:106A3000877C0000000000471F900100478522422C
-:106A4000877C0000000000451F9001004785661B01
-:106A50002C300000000000A013B0010000007641BF
-:106A600041C3010076852392156C00007685A2450E
-:106A70001F7C00007A85224BFD7F0000170000D0AC
-:106A8000A2C901000000004027B001000200000A76
-:106A900024C80100AB9200400F3001007485220829
-:106AA0004030000000000041A3C10100F0070012C7
-:106AB00024CC01005085AA412740000001000013AA
-:106AC00080CC01007085264023300000000000408B
-:106AD00083B001006000000384C8010010000010B2
-:106AE00048CD0100170000D0A2C901005D85A24079
-:106AF000836C00006985004183B000000080004283
-:106B000044990100000068213896010000002E50D1
-:106B100049C101006285A244236C000030000003DB
-:106B200048C9010000000044F1B101000C00002040
-:106B3000F0C901000000004461B10100A00000A400
-:106B400062DD01006585A842E031000000000044DC
-:106B500085C001000000004123C001000000004189
-:106B6000A3C101005B85A2418150000070852240D5
-:106B7000236C00000000004461B1010040000010DF
-:106B800062DD01006D85A84081320000AF8200887F
-:106B90001CB000000000000348B10100EE070040F7
-:106BA00025980100170000D02AC80100838500172E
-:106BB00010B0000095940040813201007A850040B9
-:106BC00081B20000AB92009225300100000000402D
-:106BD00031B001007A8522082E3000008385004103
-:106BE00027B00000808000A604B00100060000402D
-:106BF00087980100DF95000A8C30010000000040FA
-:106C00000FB001000000005C1F9001008285229FF0
-:106C1000136C0000020000881CCC0100F5820040CB
-:106C200081B200001A8700413FC30000000000400D
-:106C30000FB001002800000180CE010097852A4096
-:106C4000813000000080001044C901004000004075
-:106C5000819801008C85A2481F7C00008C85A2478A
-:106C60001F7C00008C85A307036C0000800000409F
-:106C7000819801008F85A340026C0000280000016C
-:106C8000F0CD0100918500400FB0000028000040C9
-:106C9000F0CD0100040000400ECC010028000003EC
-:106CA000F0C9010028000000F0C901000000001632
-:106CB000E0B101000000004761B1010020000010B8
-:106CC00062DD01009585A85C1F10000000000040F7
-:106CD00043990100000000F008B00100A0012D4020
-:106CE00000C001006186220F42050000A8859C0FAC
-:106CF000803200000000005C1F8001000080001056
-:106D000042C90100A3852240E36D00000000004756
-:106D100061B101004000001062DD0100A085A840C3
-:106D200081320000AF8200881CB00000A8852207D5
-:106D3000803200000000000342B1010000000007A3
-:106D400042C10100008000A1469901000000005FDF
-:106D5000E1910100C006A2451F7C00001000000365
-:106D600048C9010000002D5429C00100000000F8AE
-:106D700018B00100000000F804B00100000000F8A5
-:106D80000EB00100420000030AC801000C0000A47C
-:106D90000CC80100ED920040813201000000001497
-:106DA00002B001000000001424D001000000001413
-:106DB00010C001001200000810C8010000000040CF
-:106DC00023B00100FE7F000544C901000000000A55
-:106DD000E4B10100D18522018032000000003C4472
-:106DE00023E0010000002EA480B00100000000108C
-:106DF00048C10100BE85A307026C0000BF85680181
-:106E00001AB00000000068071AB001000000000D71
-:106E100002D0010000000005F0B101000000000CEC
-:106E2000F0B1010000000002E0B101000000000D1F
-:106E30000AC00100CB852240036C0000CB852242B2
-:106E4000236C00000000004123C001000000004747
-:106E500061B10100A00000A462DD0100EF852840BF
-:106E600081320000C885004081B20000000000109F
-:106E700080C001000000004761B101000000004037
-:106E800062B10100CD85A84023300000AF820088A8
-:106E90001CB00000EF85004081B2000000003C44BF
-:106EA00023E00100000000A486B0010000002E10C5
-:106EB00048C10100D685A3120E6C0000D78560077B
-:106EC0001AB00000000060121AB001000000680D46
-:106ED00016940100FFFF000B16D80100000068089F
-:106EE0003E9601000000000CF0B10100000000021D
-:106EF000E0B101000000001086C001000000004663
-:106F000061B101002000004362DD0100DE85A85C64
-:106F10001F1000000D86220D146C0000E485220D68
-:106F2000246C00000000000D10C00100E885000D79
-:106F300024D00000000000412BC00100000000151B
-:106F4000A2B101001000002010C80100F0070040AD
-:106F500025980100EA852242236C0000EF8500415C
-:106F600023C000000000004661B101004000001095
-:106F700062DD0100EB85A85C1F000000AF82008885
-:106F80001CB000000000004023B001000D86220D5F
-:106F9000145000000C86A20D0E500000FB85224606
-:106FA0001F7C0000000000461F80010030800010A0
-:106FB00042C90100F9852240E36D0000000000474E
-:106FC00061B101004000001062DD0100F685A840BB
-:106FD00081320000AF8200881CB0000020800003D6
-:106FE000469901000000005FE191010000002D06BC
-:106FF00048B10100000000F818B00100000000F8DE
-:1070000004B0010000861FF00E300000B885004C6F
-:107010000DC0000000002E5F0F800100B88523071F
-:10702000146C00003000001048C90100240000402A
-:10703000F199010000000003F0B101000000000020
-:10704000F0B1010000000016F0B1010024000000C2
-:1070500000C801000000004761B10100A00000A4C9
-:1070600062DD01000986A8461F100000B8850003F4
-:107070000CB00000B885000D18C0000004002E14EC
-:107080000AD001001200000548CD0100FE7F000576
-:1070900042C901000C002AF2E0B10100138622402F
-:1070A000316C000000006018389601001E0000409E
-:1070B00043990100008100F680CE01001786A640AA
-:1070C000813200000000004443C101001986220BF8
-:1070D000ED6D0000080000A142C90100020000A1FE
-:1070E00046C901000F0000FA948801000200004A1E
-:1070F00086E40100000000F60EB001002186224760
-:107100001F7C000004001F430E5000002186A04693
-:107110000F400000000000410FC0010025862248FA
-:107120001F7C00000000004091B0010004000FA28D
-:10713000423100002886004089B000000C0000A207
-:1071400042C901000000004389B001000000004373
-:1071500095D00100000000FC82B001002B86A04108
-:10716000904000000000004191C00100308622479D
-:107170001F7C00003086A043896C000030862045CB
-:10718000896C00003086A0410E40000000000041E4
-:107190000FC001000000004189C001002886A24103
-:1071A00095500000398622481F7C000010000048DE
-:1071B00092F40100FFFF0048908801003786904854
-:1071C000924000000000004193C001000A0000A2AC
-:1071D00044C901000000662093A401003080001023
-:1071E00044C9010012000014F0C90100000000179A
-:1071F000F0B1010012000005E0CD010030000010E8
-:1072000080C801000000004461B10100200000407E
-:1072100062DD01003F86A840813200004A86225C80
-:107220001F7C000000003C4423E0010000002D1002
-:1072300048C1010049862240E36D0000000000467D
-:1072400061B101004000001062DD01004686A840E7
-:1072500081320000AF8200881CB000000000005C9A
-:107260001F8001004D86A2471F7C0000E392004072
-:1072700081320100C686001710B00000EA9200407B
-:107280008132010000002F0348B101005186A007A0
-:10729000164000000000004117C001000000000B74
-:1072A000E4B101000000005017F00100558690F293
-:1072B000164000000000004117C0010000006620D9
-:1072C00017A40100100000142AC80100000000509B
-:1072D0002BE00100000000F22A9401003080001031
-:1072E00042C901005F862240E36D000000000044B7
-:1072F00061B101004000001062DD01005C86A84021
-:1073000081320000AF8200881CB0000000800017AE
-:1073100010DC0100C686004081B2000069869C0F27
-:10732000803200000000005C1F800100008000101F
-:1073300042C9010069862240E36D00000000004759
-:1073400061B101004000001062DD01006686A840C6
-:1073500081320000AF8200881CB000006E862207D8
-:10736000803200000000000342B10100000000076D
-:1073700042C10100008000A1469901000000005FA9
-:10738000E191010004002E0348B101000000000A51
-:10739000E0B1010073862240316C00000C00004017
-:1073A00045990100000060183896010000002E1079
-:1073B00048B1010000000050F1B1010000000008D8
-:1073C000F0B1010000000003E0B101000000004442
-:1073D00061B101000000001062B101007886A84090
-:1073E00023300000AF8200881CB0000000002D5246
-:1073F00011C001001000000348C90100000000F89E
-:1074000018B00100000000F804B00100000000F80E
-:107410000EB001000C0000A40CC8010000003C44A8
-:1074200023E00100000000A486B0010000002E103F
-:1074300048C101008686A3120E6C0000878668078B
-:107440001AB00000000068121AB00100000000101D
-:1074500086C00100000068083E9601000000000C94
-:10746000F0B1010000000002E0B1010000000046A0
-:1074700061B101002000004362DD01008C86A85C40
-:107480001F100000BB86220D146C00009286220D96
-:10749000246C00000000000D10C001009686000D55
-:1074A00024D00000000000412BC0010000000015A6
-:1074B000A2B101001000002010C80100F007004038
-:1074C0002598010098862242236C00009D86004189
-:1074D00023C000000000004661B101004000001020
-:1074E00062DD01009986A85C1F000000AF82008861
-:1074F0001CB000000000004023B001000400220D79
-:1075000014500000BA86A20D0E500000A986224633
-:107510001F7C0000000000461F800100308000102A
-:1075200042C90100A7862240E36D00000000004729
-:1075300061B101004000001062DD0100A486A84096
-:1075400081320000AF8200881CB000002080000360
-:10755000469901000000005FE191010000002D0646
-:1075600048B10100000000F818B00100000000F868
-:1075700004B00100AE861FF00E3000008186004C82
-:107580000DC0000000002E5F0F80010081862307E0
-:10759000146C00003000001048C9010024000040B5
-:1075A000F199010000000003F0B1010000000000AB
-:1075B000F0B1010000000016F0B10100240000004D
-:1075C00000C801000000004761B10100A00000A454
-:1075D00062DD0100B786A8461F1000008186000307
-:1075E0000CB000008186000D18C00000C486225C2B
-:1075F0001F7C00000000005C1F80010000003C4474
-:1076000023E0010000002D1048C10100C486224083
-:10761000E36D00000000004661B101004000001071
-:1076200062DD0100C186A84081320000AF8200887F
-:107630001CB000000000001710B00100C68600401A
-:107640002BB00000008000034499010000000004FA
-:10765000E0B10100CB86229F136C0000020000887D
-:107660001CCC0100F582004081B20000F095004181
-:107670003F430100000000408DB0010000000040C9
-:1076800005B00100DF9500400F3001003087005C3D
-:107690001F900000100000000EF401000000003AEE
-:1076A00001840100030000071AF40100EF920007B3
-:1076B00016300100DA862241816C0000D886224211
-:1076C000816C0000AF8200881CB00000D986225F68
-:1076D0000F7C00001A8700400FB00000E286A25A1B
-:1076E0001F7C00006992004081320100E286222066
-:1076F000856C0000DF869C0F80320000AF8200881E
-:107700001CB000004A93005C1F0001003C95004241
-:1077100061310100AF8200881CB0000090040007B6
-:107720009630010000002D0548B10100000000F076
-:1077300018B001000000000080B00100C387A25F04
-:10774000816C0000A8002D431980010037002DF046
-:1077500024B00100040000F38EF401000F0000F3D8
-:1077600090880100F18622488E6C000036000040AF
-:107770004399010058003D43E7E10100F1861FF005
-:10778000246C0000F08623418F6C0000C387004703
-:1077900081B00000C387004881B000004000004075
-:1077A00043990100B0002DF014B00100F686220AC2
-:1077B00090400000C395004091300100C387A24073
-:1077C00080320000B0002D4581B00100028722F018
-:1077D0002C300000A3002D3083B00100AC002DF34D
-:1077E00082E00100FC86A3412C6C00000000001622
-:1077F00082B0010098002DF082C0010088002DF0B9
-:1078000082D00100000000F298E80100C387204CFC
-:10781000826C00007C002D4198E80100C38720F0B5
-:10782000986C00001A87220A803200004002000C87
-:107830007E8901001A87A64081320000C387004973
-:1078400081B00000200000A680B001000A8722431A
-:10785000216F00001380004080DC01000B87004096
-:1078600081B200001A80004080DC01000B87A25E1C
-:107870000B7D00000000004008B101000D879F85CE
-:10788000803200001187004081B20000EC8222406B
-:10789000577D0000010000405799010011874240C8
-:1078A000813200000000004493930100DD821A5BE6
-:1078B00069930000040000CB81C8010017872240B3
-:1078C000F27F0000C480006F9733010019872240C7
-:1078D000737D0000DE8000418BB300001487004000
-:1078E00081B2000021879C0F8032000000800010D0
-:1078F00042C9010021872240E36D000000000045DD
-:1079000061B101004000001062DD01001E87A84047
-:1079100081320000AF8200881CB000004592220234
-:107920008032000022874240813200000000004483
-:107930009393010045921A02689700002C879C0FD0
-:10794000803200000080001042C901002C872240D4
-:10795000E36D00000000004561B10100400000102F
-:1079600062DD01002987A84081320000AF820088D3
-:107970001CB000004F922202803200002D8742404E
-:107980008132000000000044939301004F921A02DC
-:107990006897000037879C0F80320000008000103D
-:1079A00042C9010037872240E36D00000000004516
-:1079B00061B101004000001062DD01003487A84081
-:1079C00081320000AF8200881CB00000F9822202E0
-:1079D00080320000388742408132000000000044BD
-:1079E0009393010000001A0268970100F982004099
-:1079F00005B00000008000A656B1010056952F404A
-:107A000005B001008887A240E76D0000B8942941C5
-:107A1000E7B1010000000054EF930100000000F204
-:107A20000EB00100290000400D9801000900000778
-:107A300012E40100000000A713C0010003000007CA
-:107A40001AF401000700000716880100FFFF00106C
-:107A500034D801000000000334940100000000400D
-:107A600023B00100201800401198010000B5000D5E
-:107A700042C901006C87220BE67D00004D87604003
-:107A800081320000FFFF000784890100548705C28E
-:107A900024300000580400408132010000002D0510
-:107AA00048B10100898770F0183001006C870040F0
-:107AB00081B200000000704081B201006387A048DD
-:107AC000236C00000000005035D001000080001A37
-:107AD00042C901005D872240E36D000000000042C2
-:107AE00061B101004000001A62DD01005A87A84020
-:107AF00081320000AF8200881CB000002098004056
-:107B000043990100898700F8183001005E87A2417F
-:107B100023500000FFFF001034D8010000000003D4
-:107B200034940100201800401198010000002E1A22
-:107B300048B1010000000044F1B10100000000085C
-:107B4000F0B101000000004261B101002000001A04
-:107B500062DD01006787A809E031000000000041F4
-:107B600023C001000000005035C0010000000044A7
-:107B700011C00100788722410D5000000000004133
-:107B80000FC001007487A0AA0F6C00000000004124
-:107B90000FB001000900000712E40100000000A777
-:107BA00013C00100000000401BB001004B870041E2
-:107BB00017B000000002000912C801004B87834182
-:107BC000174000000000004017B001004B87004143
-:107BD0001BC0000083872340236C0000000000507E
-:107BE00035D001000080001A42C901008087224080
-:107BF000E36D00000000004261B101004000001A86
-:107C000062DD01007D87A84081320000AF820088DC
-:107C10001CB000002098004043990100898700F8BB
-:107C2000183001008187A24123500000000000416C
-:107C30000FC001008687A0AA0F6C00000000004161
-:107C40000FB00100B8942007E4B101005695204020
-:107C5000E7B101001A8700400FB00000FFFF000CE1
-:107C600080D80100C002000C7E8901009B87265449
-:107C7000613100009187870C803200000F000040C6
-:107C80006299010091872840813200009187A254B7
-:107C9000777D00008D87004081B2000096872246E4
-:107CA000197C00000D000040629901000000A8400E
-:107CB00081B200000000A254777D0100928700404D
-:107CC00081B200009B872249197C00000E00004011
-:107CD000629901000000A84081B200000000A25497
-:107CE000777D01009687004081B2000010000040BF
-:107CF000629901000000A84081B200000000A25477
-:107D0000777D01009B87004081B2000030942F55A1
-:107D1000F1930100004000A656B10100F982A24192
-:107D2000E551000064000040E5990100A38744404C
-:107D300081320000A687A293576F00000000004127
-:107D400057C3010000001CAB27B30100F982225089
-:107D5000FD7F0000F9822251FD7F0000F982A241DF
-:107D60001D530000504600401D9B01003805004097
-:107D7000813201000E000048B2CB01001004004027
-:107D800049310100B2872240B56F00000E00004863
-:107D9000B2CB010020040041B5530100F98200403C
-:107DA00081B2000000000051FD8301004016004038
-:107DB0004599010040050040493101001E0000487E
-:107DC000B2CB01001004004081320100000000DA53
-:107DD00091C0010004000048B2CB01002004004023
-:107DE000B533010060162040E5B10100408200403B
-:107DF000B533010008000048B2CB0100FFFF004A84
-:107E0000B48B010020040040813201000A000048C8
-:107E1000B2CB01001000004AB4F70100200400407A
-:107E200081320100F982004081B20000050000406B
-:107E300043990100000000F308B001000400204055
-:107E4000E6B101000300004096E4010000000004D8
-:107E500096C00100C987004B10C90000EC8A0041A0
-:107E600009B00000040000208FB0000004000020D2
-:107E70008FB00000040000208FB00000040000203C
-:107E80008FB00000040000208FB00000040000202C
-:107E90008FB00000040000208FB00000040000201C
-:107EA0008FB00000208B004109B0000004000020CA
-:107EB0008FB00000040000208FB0000004000020FC
-:107EC0008FB00000040000208FB0000004000020EC
-:107ED0008FB00000040000208FB0000004000020DC
-:107EE0008FB00000040000208FB00000528B0045CE
-:107EF00009B00000528B004509B00000528B0045CC
-:107F000009B00000528B004509B0000004000020B9
-:107F10008FB00000040000208FB00000040000209B
-:107F20008FB00000040000208FB00000918B004350
-:107F300009B00000BA8B004309B00000BE8B0044BA
-:107F400009B00000098D004509B0000004000020C0
-:107F50008FB00000040000208FB00000040000205B
-:107F60008FB00000040000208FB00000040000204B
-:107F70008FB00000CA8B004309B00000C98B0043DA
-:107F800009B00000EA8A004509B0000004000020A2
-:107F90008FB00000040000208FB00000040000201B
-:107FA0008FB00000040000208FB00000798C0042E8
-:107FB00009B00000798C004309B00000798C0044BE
-:107FC00009B00000EA8A004509B000000400002062
-:107FD0008FB00000040000208FB0000004000020DB
-:107FE0008FB00000040000208FB0000004000020CB
-:107FF0008FB00000998C004309B0000004000020FD
-:108000008FB00000EA8A004509B00000040000209B
-:108010008FB00000040000208FB00000040000209A
-:108020008FB00000040000208FB00000040000208A
-:108030008FB00000B78C004309B00000B78C00443B
-:1080400009B00000EA8A004509B0000004000020E1
-:108050008FB00000040000208FB00000040000205A
-:108060008FB00000040000208FB00000040000204A
-:108070008FB00000B78C004209B00000040000205F
-:108080008FB00000EA8A004509B00000040000201B
-:108090008FB00000040000208FB00000040000201A
-:1080A0008FB00000040000208FB00000040000200A
-:1080B0008FB00000DF8C004409B0000004000020F5
-:1080C0008FB00000EA8A004509B0000004000020DB
-:1080D0008FB00000040000208FB0000004000020DA
-:1080E0008FB00000040000208FB00000EA8A004238
-:1080F00009B00000F08C004509B00000F08C00458C
-:1081000009B00000EA8A004509B000000400002020
-:108110008FB00000040000208FB000000400002099
-:108120008FB00000040000208FB00000F28C0042ED
-:1081300009B00000F28C004309B00000F28C00444A
-:1081400009B00000F28C004509B0000004000020D6
-:108150008FB00000040000208FB000000400002059
-:108160008FB00000040000208FB000000400002049
-:108170008FB00000040000208FB00000FA8C004493
-:1081800009B00000EA8A004509B0000004000020A0
-:108190008FB00000040000208FB000000400002019
-:1081A0008FB00000040000208FB000000B8D004253
-:1081B00009B00000FB8C004309B000000B8D0044A7
-:1081C00009B00000EA8A004509B000000400002060
-:1081D0008FB00000040000208FB0000004000020D9
-:1081E0008FB00000040000208FB0000004000020C9
-:1081F0008FB000000C8D004309B00000028D0044D8
-:1082000009B00000EA8A004509B00000040000201F
-:108210008FB00000040000208FB000000400002098
-:108220008FB00000EA8A004109B00000778C00425C
-:1082300009B00000778C004309B00000778C00443F
-:1082400009B00000EA8A004509B0000004000020DF
-:108250008FB00000040000208FB000000400002058
-:108260008FB00000EA8A004109B000000D8D004285
-:1082700009B000000D8D004309B000000D8D0044D1
-:1082800009B00000EA8A004509B00000040000209F
-:108290008FB00000040000208FB000000400002018
-:1082A0008FB00000040000208FB000000400002008
-:1082B0008FB00000040000208FB0000004000020F8
-:1082C0008FB00000148D004509B0000004000020AC
-:1082D0008FB00000040000208FB0000004000020D8
-:1082E0008FB00000168D004209B00000040000208D
-:1082F0008FB00000040000208FB0000004000020B8
-:108300008FB00000040000208FB0000004000020A7
-:108310008FB00000040000208FB000000400002097
-:108320008FB00000040000208FB00000228D0043B9
-:1083300009B00000818D004309B00000BE8B0044ED
-:1083400009B00000098D004509B0000004000020BC
-:108350008FB00000040000208FB000000400002057
-:108360008FB00000040000208FB000000400002047
-:108370008FB00000898D004309B00000BE8B00441F
-:1083800009B00000098D004509B00000040000207C
-:108390008FB00000040000208FB000000400002017
-:1083A0008FB00000040000208FB000000400002007
-:1083B0008FB000009A8D004309B000000400002037
-:1083C0008FB00000EA8A004509B0000004000020D8
-:1083D0008FB00000040000208FB0000004000020D7
-:1083E0008FB00000040000208FB000008E8B00438F
-:1083F00009B00000858D004309B00000BE8B004429
-:1084000009B00000098D004509B0000004000020FB
-:108410008FB00000040000208FB0000007002D0581
-:1084200048B10100000000F308B001000600204739
-:10843000E6B101000400004796E401000000004797
-:1084400096D001000000004796D001000000000413
-:1084500096C001008988004B10C90000B28D004908
-:1084600009B000000400002085B0000004000020D6
-:1084700085B000000400002085B00000040000204A
-:1084800085B000000400002085B00000040000203A
-:1084900085B000000400002085B00000040000202A
-:1084A00085B000000400002085B00000040000201A
-:1084B00085B000000400002085B00000040000200A
-:1084C00085B000000400002085B0000004000020FA
-:1084D00085B00000EB8D004209B0000004000020D0
-:1084E00085B000000400002085B0000004000020DA
-:1084F00085B000000400002085B0000004000020CA
-:1085000085B000000400002085B0000004000020B9
-:1085100085B000000400002085B0000004000020A9
-:1085200085B000000400002085B000000400002099
-:1085300085B000000400002085B000000400002089
-:1085400085B00000F18D004609B000000400002055
-:1085500085B000000400002085B000000400002069
-:1085600085B000000400002085B000000400002059
-:1085700085B000000400002085B000000400002049
-:1085800085B000000400002085B000000400002039
-:1085900085B000000400002085B000000400002029
-:1085A00085B000000400002085B000000400002019
-:1085B00085B000000400002085B00000FF8D00425F
-:1085C00009B000000400002085B00000218E0042A8
-:1085D00009B000000400002085B000000400002065
-:1085E00085B000000400002085B0000004000020D9
-:1085F00085B000000400002085B0000004000020C9
-:1086000085B000001C8E004A09B000000400002064
-:1086100085B000000400002085B0000004000020A8
-:1086200085B000000400002085B00000248E0043C7
-:1086300009B000000400002085B000007D8E0044D9
-:1086400009B000000400002085B0000004000020F4
-:1086500085B000000400002085B000000400002068
-:1086600085B000000400002085B000000400002058
-:1086700085B000007C8E004B09B000000400002093
-:1086800085B000000400002085B000000400002038
-:1086900085B00000F48D004109B000000400002006
-:1086A00085B00000F48D004309B00000F48D004453
-:1086B00009B00000F48D004509B00000F48D0046BB
-:1086C00009B00000F48D004709B00000F48D0048A7
-:1086D00009B00000F48D004909B00000F48D004A93
-:1086E00009B00000F48D004B09B00000F48D004C7F
-:1086F00009B00000F48D004D09B000000400002016
-:1087000085B000000400002085B00000DC8E00422F
-:1087100009B000000400002085B00000DC8E004499
-:1087200009B000000400002085B000000400002013
-:1087300085B000000400002085B000000400002087
-:1087400085B000000400002085B000000400002077
-:1087500085B00000DC8E004B09B000000400002052
-:1087600085B000000400002085B000000400002057
-:1087700085B000000400002085B000000400002047
-:1087800085B00000F48E004509B000000400002010
-:1087900085B000000400002085B000000400002027
-:1087A00085B000000400002085B000000B8F00475A
-:1087B00009B000000400002085B00000E88E0045EC
-:1087C00009B000000400002085B000000400002073
-:1087D00085B000005491004609B00000040000205C
-:1087E00085B000000400002085B0000004000020D7
-:1087F00085B000000400002085B0000004000020C7
-:1088000085B00000218E004609B00000FF8D0046B3
-:1088100009B000001A8E004709B000001A8E004807
-:1088200009B000000400002085B000000400002012
-:1088300085B000000400002085B000001C8E004AB6
-:1088400009B000000400002085B0000004000020F2
-:1088500085B000000400002085B000000400002066
-:1088600085B000000400002085B000000400002056
-:1088700085B000007D8E004509B00000248E0043C5
-:1088800009B000001A8E004709B000001A8E004897
-:1088900009B000000400002085B0000004000020A2
-:1088A00085B000000400002085B000007C8E004CE4
-:1088B00009B000000400002085B000000400002082
-:1088C00085B000000400002085B0000004000020F6
-:1088D00085B000000400002085B0000004000020E6
-:1088E00085B00000118F004409B00000118F0042D4
-:1088F00009B00000D58A004709B00000D58A0048B9
-:1089000009B000000400002085B000000400002031
-:1089100085B000000400002085B00000118F004BDE
-:1089200009B000000400002085B000000400002011
-:1089300085B00000F48D004109B00000348F00477D
-:1089400009B000000400002085B000001C8F004723
-:1089500009B000000400002085B0000004000020E1
-:1089600085B000000400002085B000000400002055
-:1089700085B000000400002085B000000400002045
-:1089800085B000001C8F004709B0000004000020E3
-:1089900085B000000400002085B000000400002025
-:1089A00085B000000400002085B000000400002015
-:1089B00085B000000400002085B000000400002005
-:1089C00085B000001C8F004709B00000348F0047BD
-:1089D00009B000001A8E004709B000001A8E004846
-:1089E00009B000000400002085B000000400002051
-:1089F00085B000000400002085B000001C8F0047F7
-:108A000009B000000400002085B000000400002030
-:108A100085B000000400002085B0000004000020A4
-:108A200085B000000400002085B000000400002094
-:108A300085B000000400002085B000000400002084
-:108A400085B00000438F004709B00000438F004805
-:108A500009B000000400002085B0000004000020E0
-:108A600085B000000400002085B000000400002054
-:108A700085B000000400002085B000000400002044
-:108A800085B00000A68F004009B00000C48F0047E9
-:108A900009B00000B88F004809B00000148F0047EB
-:108AA00009B00000148F004709B00000C48F0047D0
-:108AB00009B00000CB8F004709B00000CB8F004801
-:108AC00009B000000400002085B00000B88F004805
-:108AD00009B00000148F004709B00000148F004750
-:108AE00009B00000B88F004809B000000400002061
-:108AF00085B000000400002085B0000004000020C4
-:108B000085B00000DC8E004309B0000004000020A6
-:108B100085B00000DC8E004509B00000DC8E004608
-:108B200009B000001A8E004709B000001A8E0048F4
-:108B300009B000000400002085B00000DC8E004A6F
-:108B400009B000000400002085B00000DC8E004C5D
-:108B500009B000000400002085B0000004000020DF
-:108B600085B000000400002085B00000338F00476E
-:108B700009B00000278F004809B000001B8F004794
-:108B800009B000001B8F004709B00000338F004779
-:108B900009B00000D58A004709B00000D58A004816
-:108BA00009B000000400002085B00000278F0048B5
-:108BB00009B000001B8F004709B000001B8F004761
-:108BC00009B00000278F004809B000000400002011
-:108BD00085B000000400002085B00000CD8F004269
-:108BE00009B000000400002085B00000CD8F0044D3
-:108BF00009B000000400002085B00000040000203F
-:108C000085B000000400002085B0000004000020B2
-:108C100085B000000400002085B0000004000020A2
-:108C200085B00000CD8F004B09B00000040000208B
-:108C300085B000000400002085B000000400002082
-:108C400085B000000400002085B000000400002072
-:108C500085B00000CD8F004309B000000400002063
-:108C600085B00000CD8F004509B00000CD8F0046D3
-:108C700009B00000CD8F004709B00000CD8F00483B
-:108C800009B000000400002085B00000CD8F004A2C
-:108C900009B000000400002085B00000CD8F004C1A
-:108CA00009B00000CD8F004C09B000000400002086
-:108CB00085B000000400002085B000000400002002
-:108CC00085B00000E88F004609B0000004000020D5
-:108CD00085B000000400002085B0000004000020E2
-:108CE00085B000000400002085B000000B8F004715
-:108CF00009B000000400002085B00000E88F0046A5
-:108D000009B000000400002085B00000040000202D
-:108D100085B000000400002085B0000004000020A1
-:108D200085B000000400002085B000000400002091
-:108D300085B00000E990004609B000000400002062
-:108D400085B000000400002085B000000400002071
-:108D500085B000000400002085B000000B8F0047A4
-:108D600009B000000400002085B00000E990004632
-:108D700009B000000400002085B0000004000020BD
-:108D800085B00000E990004609B000000400002012
-:108D900085B000000400002085B000000400002021
-:108DA00085B000000400002085B000000E91004254
-:108DB00009B000000400002085B00000040000207D
-:108DC00085B000000400002085B0000004000020F1
-:108DD00085B000000400002085B0000004000020E1
-:108DE00085B000000D91004A09B000000400002089
-:108DF00085B000000400002085B0000004000020C1
-:108E000085B000000400002085B0000004000020B0
-:108E100085B000000400002085B0000004000020A0
-:108E200085B000000E91004609B00000040000204B
-:108E300085B000001A8E004709B000001A8E004865
-:108E400009B000000400002085B0000004000020EC
-:108E500085B000000400002085B000000D91004A9C
-:108E600009B000000400002085B0000004000020CC
-:108E700085B000000400002085B000000400002040
-:108E800085B000000400002085B000000400002030
-:108E900085B000000400002085B000000400002020
-:108EA00085B000000400002085B000000400002010
-:108EB00085B00000D88F004109B0000004000020F8
-:108EC00085B000000400002085B0000004000020F0
-:108ED00085B000000400002085B0000004000020E0
-:108EE00085B000000400002085B00000E58F00423E
-:108EF00009B000000400002085B00000E58F0044A8
-:108F000009B000000400002085B00000040000202B
-:108F100085B000000400002085B00000040000209F
-:108F200085B000000400002085B00000040000208F
-:108F300085B00000E58F004B09B000000400002060
-:108F400085B000000400002085B00000040000206F
-:108F500085B000000400002085B00000040000205F
-:108F600085B00000E58F004309B000000400002038
-:108F700085B00000E58F004509B00000E58F004690
-:108F800009B00000E58F004709B00000E58F0048F8
-:108F900009B000000400002085B00000040000209B
-:108FA00085B000000400002085B00000E58F004C73
-:108FB00009B000000400002085B00000040000207B
-:108FC00085B000000400002085B0000004000020EF
-:108FD00085B00000F48E004C09B0000004000020B1
-:108FE00085B000000400002085B0000004000020CF
-:108FF00085B000000400002085B000000B8F004702
-:1090000009B000000400002085B00000E88E004C8C
-:1090100009B000000400002085B00000040000201A
-:1090200085B00000A591004609B0000004000020B2
-:1090300085B000000400002085B000004991004286
-:1090400009B000000400002085B0000049910044F0
-:1090500009B000000400002085B0000004000020DA
-:1090600085B000000400002085B00000040000204E
-:1090700085B000000400002085B00000040000203E
-:1090800085B000004991004B09B0000004000020A9
-:1090900085B000000400002085B00000040000201E
-:1090A00085B000000400002085B00000040000200E
-:1090B00085B000000400002085B0000004000020FE
-:1090C00085B000004991004509B000004991004673
-:1090D00009B000001A8E004709B000001A8E00483F
-:1090E00009B000000400002085B00000040000204A
-:1090F00085B000000400002085B000004991004CBC
-:1091000009B000000400002085B000000400002029
-:1091100085B000000400002085B00000E88E004209
-:1091200009B000005491004609B00000040000207E
-:1091300085B000000400002085B00000E88E0046E5
-:1091400009B000000400002085B000000B8F00472C
-:1091500009B000000400002085B0000054910046D2
-:1091600009B000000400002085B0000004000020C9
-:1091700085B000005491004609B0000004000020B2
-:1091800085B000000400002085B00000040000202D
-:1091900085B000005891004309B000000400002091
-:1091A00085B000000400002085B00000040000200D
-:1091B00085B000000400002085B000000B8F004740
-:1091C00009B000000400002085B000005891004361
-:1091D00009B000000400002085B000000400002059
-:1091E00085B000005891004D09B000000400002037
-:1091F00085B000000400002085B0000004000020BD
-:1092000085B000000400002085B000006A91004392
-:1092100009B000000400002085B000000400002018
-:1092200085B000000400002085B00000040000208C
-:1092300085B000000400002085B00000040000207C
-:1092400085B000004791004A09B0000004000020EA
-:1092500085B000000400002085B00000040000205C
-:1092600085B000000400002085B00000040000204C
-:1092700085B000000400002085B00000040000203C
-:1092800085B000006A91004309B00000040000208E
-:1092900085B000001A8E004709B000001A8E004801
-:1092A00009B000000400002085B000000400002088
-:1092B00085B000000400002085B000004791004AFE
-:1092C00009B000000400002085B000000400002068
-:1092D00085B000000400002085B0000004000020DC
-:1092E00085B000007C91004309B00000040000201C
-:1092F00085B000000400002085B0000004000020BC
-:1093000085B000000400002085B000000B8F0047EE
-:1093100009B000000400002085B000007C910043EB
-:1093200009B000000400002085B000000400002007
-:1093300085B000007C91004D09B0000004000020C1
-:1093400085B000000400002085B00000FF8D0042C1
-:1093500009B000000400002085B00000218E00420A
-:1093600009B000000400002085B0000004000020C7
-:1093700085B000000400002085B00000040000203B
-:1093800085B000000400002085B00000040000202B
-:1093900085B000009B91004209B00000040000204D
-:1093A00085B000000400002085B00000040000200B
-:1093B00085B000000400002085B0000004000020FB
-:1093C00085B000000400002085B0000004000020EB
-:1093D00085B00000218E004609B00000FF8D0046D8
-:1093E00009B000001A8E004709B000001A8E00482C
-:1093F00009B000000400002085B000000400002037
-:1094000085B000000400002085B000009B9100465C
-:1094100009B000000400002085B000000400002016
-:1094200085B000000400002085B00000040000208A
-:1094300085B000009D91004A09B0000004000020A2
-:1094400085B000000400002085B00000040000206A
-:1094500085B000000400002085B000000B8F00479D
-:1094600009B000000400002085B000009D91004A72
-:1094700009B000000400002085B0000004000020B6
-:1094800085B000005591004609B00000040000209E
-:1094900085B000000400002085B00000040000201A
-:1094A00085B000005591004609B00000040000207E
-:1094B00085B000000400002085B0000004000020FA
-:1094C00085B000000400002085B000000B8F00472D
-:1094D00009B000000400002085B00000559100464E
-:1094E00009B000000400002085B000000400002046
-:1094F00085B000005591004609B00000040000202E
-:1095000085B000000400002085B0000004000020A9
-:1095100085B000000400002085B00000A391004247
-:1095200009B000000400002085B000000400002005
-:1095300085B000000400002085B000000400002079
-:1095400085B000000400002085B000000400002069
-:1095500085B000004791004A09B0000004000020D7
-:1095600085B000000400002085B000000400002049
-:1095700085B000000400002085B000000400002039
-:1095800085B000000400002085B000000400002029
-:1095900085B00000A391004609B00000040000203F
-:1095A00085B000001A8E004709B000001A8E0048EE
-:1095B00009B000000400002085B000000400002075
-:1095C00085B000000400002085B000004791004AEB
-:1095D00009B000000400002085B000000400002055
-:1095E00085B000000400002085B00000248E004DEE
-:1095F00009B000000400002085B000000400002035
-:1096000085B000000400002085B0000004000020A8
-:1096100085B000000400002085B000000400002098
-:1096200085B000000400002085B000000400002088
-:1096300085B000000400002085B000000400002078
-:1096400085B000000400002085B000000400002068
-:1096500085B000000400002085B000000400002058
-:1096600085B000000400002085B000000400002048
-:1096700085B000000400002085B00000248E004D5D
-:1096800009B000001A8E004709B000001A8E004889
-:1096900009B000000400002085B000000400002094
-:1096A00085B000000400002085B000000400002008
-:1096B00085B000000400002085B0000007002E4B9C
-:1096C0001990010025870004E6B10000D58A2242E6
-:1096D000197C00009A94003A81300100D58A00403C
-:1096E00081B20000D58A2242197C0000FF1F000FC2
-:1096F0001E8C01000594004081320100E58A9C0F18
-:10970000803200000000005C1F800100008000101B
-:1097100042C90100E58A2240E36D000000000045D7
-:1097200061B101004000001062DD0100E28AA84042
-:1097300081320000AF8200881CB00000A9842202A0
-:1097400080320000E68A424081320000000000447E
-:109750009393010000001A0268970100A984004059
-:1097600005B0000005002E4B19900100258700046C
-:10977000E6B100000000004087B00100000000409A
-:109780008DB001000080000342C90100400000A12B
-:1097900044C90100000000F0E0B10100DF950006BF
-:1097A000074001000000000607D00100D4002E5C35
-:1097B0001F90010000000007F0B101000C800003C1
-:1097C00042C90100000000F0F0B1010000000040BB
-:1097D00081B20100000000FE96B00100000000FE12
-:1097E00096C00100000000F0F0B101000000004050
-:1097F00081B20100000000FE96C00100000000FEE2
-:1098000096C00100000000F0F0B10100000000402F
-:1098100081B20100000000FA96C00100000000FEC5
-:1098200096C001000030004B948801000000004603
-:1098300095F001000000004A96C001005E012E3440
-:10984000978401000200004BE4E501006401204020
-:10985000E1B101000900000786E4010000002EA725
-:1098600087C001001000001048C90100100000402E
-:10987000F199010058010043F0C9010058010005A9
-:10988000E0C901000000004461B10100A00000A493
-:1098900062DD01000F8BA84081320000000000054E
-:1098A00048B101001A0000409798010008002E40BE
-:1098B00095B00100178B204B946C00000000004015
-:1098C000F1B10100148B004195C000001080001020
-:1098D00042C901001E8B2240E36D000000000044DD
-:1098E00061B101004000001062DD01001A8BA84048
-:1098F00081320000AF8200881CB00000000000052B
-:1099000048B101009A94004081300100EA8A004089
-:1099100081B200000C80000342C90100000000F881
-:1099200086B00100000000F888B00100238B44409D
-:1099300081320000268BA24CFD7F0000278B004C5B
-:10994000FD930000288B20F0566F0000000000F00F
-:1099500056B3010000001C4081B2010000800010DD
-:1099600044C9010064000040F19901007000000545
-:10997000F0C9010000000043F0B101000000004701
-:1099800061B101002000001062DD01002E8BA844AF
-:10999000E0310000100000108CC80100008000467B
-:1099A00044C9010040000040F19901006801000530
-:1099B000F0C9010064000043F0C901000000004745
-:1099C00061B101000000004662B10100368BA8447D
-:1099D000E0310000AF8200881CB0000009000007E1
-:1099E00086E4010038002EA787C001008B002D05FA
-:1099F00048B101003E8B2243E77D00000000004497
-:109A000045C10100418B2244E77D00000000004C6D
-:109A100045C101000000004A19900100680120A220
-:109A2000E4B101008800004043990100458B230BFD
-:109A3000E56D000000000041199001000080001059
-:109A400044C9010050000040F19901005801004351
-:109A5000F0C9010058010005E0C901000000004400
-:109A600061B101000000001062B101004A8BA84002
-:109A700081320000AF8200881CB000005C002E051F
-:109A800048B101000080000342C90100000060F0FD
-:109A900096B001009A94004181300100EA8A0040AA
-:109AA00081B20000558BA249197C0000860000405D
-:109AB00047990100598B0040E5B1000086002F490D
-:109AC00019800100598BA2F2803200008B00004007
-:109AD0004799010000000042E79101005C8BA2461B
-:109AE000197C0000A000004047990100608B0040F5
-:109AF000E5B10000A0002F4619800100608BA2F2A2
-:109B0000803200008B0000404799010000000041B6
-:109B1000E7910100A80000404399010034002DF0B6
-:109B200024B00100000000FB0CB00100000000FBAD
-:109B300010B00100000000FB12B001000F0000F3A4
-:109B400016880100040000F314F401008B8B2640FA
-:109B500081320000738B220A166C000058003D43CE
-:109B600013E00100000000F882B00100040022F0C0
-:109B7000843000008795004081320100AF82008868
-:109B80001CB000000000000548B1010000000041C9
-:109B900013C00100728BA043136C00000000004052
-:109BA00013B00100688B004115D000008B8B220A96
-:109BB0008032000058003D4313E00100000000F82F
-:109BC00082B00100040022F084300000879500403C
-:109BD0008132010040002040E1B10100AF820088E5
-:109BE0001CB000000000000548B101008B8B224131
-:109BF000155000000000004111C001007F8BA04300
-:109C0000116C00000000004011B0010058003D43FD
-:109C100011E00100000000F836B00100040022F05D
-:109C2000003000000000005083B00100D9940047CC
-:109C300061310100AF8200881CB000004292000533
-:109C4000483101000000004561B1010040000010F2
-:109C500062DD0100878BA84081320000AF8200885E
-:109C60001CB000007B8B000548B10000370020408D
-:109C7000E7B101000B95005181300100EA8A0040F4
-:109C800081B2000034002E41F5B101000011004006
-:109C9000E5990100938B00481990000034002E4193
-:109CA000F5B1010000110040E599010000800003BA
-:109CB00042C90100000000F894B00100988B2245D1
-:109CC000237C0000B0002FF08CB00100000060F099
-:109CD0008CC00100900000404399010035002DF038
-:109CE0008CB0010058003E43E7E101009D8B224803
-:109CF000197C0000000000418DC001000000680ACE
-:109D00008CC0010038002A4AE0B1010028000000A0
-:109D1000E0C901003C00201BE0B1010010800003FD
-:109D200042C90100000000F838B00100000000F84E
-:109D300026B00100040022F802300000AB8B2301A2
-:109D4000146C0000000000F880B00100000000F872
-:109D500082B001004C0020F0E4B10100440020403A
-:109D6000E0B1010048002041E0B10100A8002D1041
-:109D700032B00100C39500F024300100B48BA2443E
-:109D8000816C0000B28B2241197C00006E93004070
-:109D90003B300100D88BA2083C300000B48B00405F
-:109DA00081B20000AB92004081320100D88BA20842
-:109DB0003C3000005000201CE0B101005400201392
-:109DC000E0B101004E002001E4B101004000200A92
-:109DD000E0B101000B95005F81300100EA8A00408C
-:109DE00081B2000037000040479901004D9300F315
-:109DF00094300100938B224A80320000C08B0040D7
-:109E000081B2000037000040479901004D9300F3F4
-:109E10009430010058003E4397E001000000001B11
-:109E2000F0B101001F006000008C0100EA8A85117A
-:109E3000803200000480000342C90100B0002FF00E
-:109E40008CB00100000060F08CC001000B95005F39
-:109E500081300100EA8A004081B20000CA8B0049CB
-:109E600019800000CF8B2241197C00006E930040C6
-:109E70003B300100D38BA2083C3000000B95005F03
-:109E800081300100EA8A004081B20000AB920040BC
-:109E900081320100D38BA2083C3000000B95005F9B
-:109EA00081300100EA8A004081B2000050002D108C
-:109EB00032B0010054002DF038B001004E002DF0FA
-:109EC00026B0010040002DF202B00100000000F0B9
-:109ED00014B00100300000108CC801000080004662
-:109EE00044C9010068012D4461B10100100068F20D
-:109EF00080C8010000000008F0B101005801000511
-:109F0000E0C901000000000B37B001000000004074
-:109F100036D001005C012E4010C001000000000698
-:109F200080C001000000005281D00100A0940040D8
-:109F3000E43101002000004662DD0100E48BA8400E
-:109F400023300000E592004081320100ED92004094
-:109F500081320100F28B82412340000020800010FA
-:109F600042C90100EF8B2240E36D00000000004673
-:109F700061B101004000001062DD0100EC8BA840DF
-:109F800081320000AF8200881CB000000000000594
-:109F900048B101000000001032B001000000004193
-:109FA00023B001000080001944C90100FA8B22414E
-:109FB000197C0000F68BA3010C6C0000F78B0006E7
-:109FC00004B000000000000104B00100F98B200281
-:109FD000366C00000000001B04B00100FD8B000285
-:109FE000E0B10000FC8BA3010C6C0000FD8B0006AF
-:109FF00004B000000000000104B00100000068028D
-:10A0000016940100FFFF000B16D80100000068083D
-:10A010003E9601000000001CF0B101000000004667
-:10A0200061B101002000001962DD0100028CA8135B
-:10A03000E0310000398C22021450000044002D024F
-:10A040000CD00100298CA20202500000108C225C6E
-:10A050001F7C00002080000342C901000F8C2240B9
-:10A06000E36D00000000004761B1010040000010F6
-:10A0700062DD01000B8CA84081320000AF820088B5
-:10A080001CB000000000000548B1010044002D5C38
-:10A090001F80010048002DF038B001004C002DF069
-:10A0A00026B0010038002FF202B001002A8C2201F4
-:10A0B000146C00001D8C22461F7C0000000000462E
-:10A0C0001F80010020002D0348B101001C8C22409C
-:10A0D000E36D00000000004461B101004000001089
-:10A0E00062DD0100198CA84081320000AF82008837
-:10A0F0001CB0000038002F0548B10100000000F836
-:10A1000094B0010038002DF096B001000000004C22
-:10A11000E1C101002000000348C901000000224AFB
-:10A12000F1B1010044000005F0C901000000004A3F
-:10A13000F0B101000000004BE0B101000000004759
-:10A1400061B10100A00000A462DD0100268CA85CC2
-:10A150001F1000002A8C000548B10000000000021A
-:10A1600038C00100348C220680320000000000500C
-:10A1700033C00100328CA202366C000004008F0D47
-:10A1800042310000100000F810C801000000005C1F
-:10A1900011800100F007004037980100E88B00A112
-:10A1A0001AB000000000000210C00100E88B00029D
-:10A1B00036D000005000201CE0B1010054002013F4
-:10A1C000E0B101004E002001E4B101004000200A8E
-:10A1D000E0B101003E8C005F01B0000037002D4669
-:10A1E00001B00100040000F380F401003D8CA043A5
-:10A1F000816C00000000005501B0010040002040CB
-:10A20000E1B101000080001942C90100448C2240E4
-:10A21000E36D00000000004661B10100400000193C
-:10A2200062DD0100418CA84081320000AF820088CD
-:10A230001CB00000EA920040813201003080001022
-:10A2400042C901004B8C2240E36D00000000004435
-:10A2500061B101004000001062DD0100488CA8409F
-:10A2600081320000AF8200881CB0000060012F0521
-:10A2700048B101000000000BE4B1010000000050F3
-:10A2800017F00100508C90F21640000000000041D1
-:10A2900017C001000000662017A40100320000A6CC
-:10A2A0002AC00100000000F22A940100538C4548A6
-:10A2B0006131000000D0001E62DD0100588C284092
-:10A2C00005300000548C2248777D00005B8C0040F4
-:10A2D00081B200000000001562B10100648C2840CA
-:10A2E00081320000588C004081B2000000001D0047
-:10A2F00092B00100618C2241197C000000800003B3
-:10A3000042C90100B09200F8003001005E8CA24109
-:10A310003B500000658C004900B00000FF07001EA4
-:10A32000008C0100B092004081320100658C004930
-:10A3300000B0000000001D4719800100688C225FFA
-:10A34000016C0000ED95004081320100C5870000DE
-:10A3500080B000006F8C225C1F7C00002080000316
-:10A3600042C901006F8C2240E36D000000000047ED
-:10A3700061B101004000001062DD01006C8CA8405A
-:10A3800081320000AF8200881CB000006F8C400555
-:10A3900048310000FFFF000794890100758C85CAD1
-:10A3A00094300000ED95185C1F0001000E00000FB6
-:10A3B0001E8C0100E686004081B200000B9518005B
-:10A3C00080300100EA8A0047198000000000004048
-:10A3D00019800100EA8A2247197C0000AB920040F4
-:10A3E000813201007C8CA20880320000EA8A0040A1
-:10A3F00081B20000A09400400D3001009C0100409B
-:10A4000045990100FFFF000B988801008B002D503B
-:10A4100017F00100828C904C1640000000000041B3
-:10A4200017C00100848C2243E77D00000000004437
-:10A4300045C101000000662017A40100680100402A
-:10A44000439901005C012EF280B0010002006240DD
-:10A450007ECD01000000005781C0010000002E10D9
-:10A4600048B1010003000040F08D01000000000829
-:10A47000F0B1010058010005E0C9010000000044EE
-:10A4800061B101000000001062B101008E8CA84093
-:10A4900081320000AF8200881CB00000000000057F
-:10A4A00048B10100928C454861310000005000081D
-:10A4B00062DD0100988C284005300000938C224812
-:10A4C000777D0000B0921D0800300100EA8A00404C
-:10A4D00081B20000EA8A1D47198000003500004063
-:10A4E00047990100010063F384C801009D8CA043DB
-:10A4F000856C00000000634085B00100A8000040AA
-:10A500004399010037002FF024B00100010063F3EC
-:10A5100082CC0100A88CA2419E060000EA8A224457
-:10A5200083700000360000404399010058003D430D
-:10A53000E7E10100EA8A1FF0246C0000ED95004875
-:10A5400081300100C5872341836C0000C587004727
-:10A5500081B0000058003D4385E00100000000F894
-:10A5600036B00100000000F000B0010028000040FB
-:10A5700083980100D994004761310100AF820088BF
-:10A580001CB0000000002D0348B1010008002DF0B0
-:10A5900094B00100000000F88EB0010090002DF092
-:10A5A00014B001000000000548B10100998BA240E1
-:10A5B0008F7C0000B68C22478F7C0000998B00486E
-:10A5C00019900000258D004081B2000036002D5DFD
-:10A5D00005B4010037002DF380B00100000000F346
-:10A5E0008EB001005C003D4381E00100A8002DF029
-:10A5F00094B00100000000F024B001002000001021
-:10A6000086DC01004080000344C90100B191004A8A
-:10A61000F031010036002F5C1F900100C48CA25065
-:10A620008F50000034002040E1B10100EA8A004070
-:10A6300081B200000000634181C00100C78CA043CB
-:10A64000816C00000000634081B0010037002047AA
-:10A65000E6B10100EA8A2247803200000400004788
-:10A660000CF401000000004F8F840100DC8C2247B5
-:10A670000C6C000058003D4381E00100DC8C1FF0B1
-:10A68000246C00000000005C1F80010000800010AE
-:10A6900042C90100D58C2240E36D00000000004556
-:10A6A00061B101004000001062DD0100D28CA840C1
-:10A6B00081320000AF8200881CB00000D58C42407F
-:10A6C00005300000000000449393010000001A5D73
-:10A6D00069930100DA8C23410D6C0000B78C0005F2
-:10A6E00048B10000ED95000548310100C5870048DC
-:10A6F00081B00000EA8A22408F6C00000B95005F59
-:10A7000081300100EA8A004081B20000A2000040CE
-:10A7100043990100000000F384B00100A6002D4918
-:10A7200019900100020000F280F40100B8002D40F1
-:10A7300081B20100000000F280C001000000004072
-:10A7400082F801001900004081980100EB8CA040C4
-:10A75000826C00002C01004081980100EB8CA3402A
-:10A76000826C00000000004180B00100ED8C204CA4
-:10A77000856C00000000004185C00100860020407B
-:10A78000E4B10100A2002042E6B10100EA8A0040E3
-:10A7900081B200009A94005081300100EA8A0040A2
-:10A7A00081B200000480000342C90100040022F0CD
-:10A7B00080300000000000408DB00100DF950040B7
-:10A7C00087300100B0002F5C1F900100000060F096
-:10A7D00080C001000B95005F81300100EA8A0040D3
-:10A7E00081B200000400004081B20000EA8A2246E3
-:10A7F000197C0000A000004047990100010062F2AE
-:10A8000096CC0100EA8AA640813200000B95004AEE
-:10A8100081300100E094004695300100EA8A004052
-:10A8200081B20000EA8A2249197C000086000040BB
-:10A8300047990100010062F280CC0100EA8AA6403B
-:10A84000813200000B95004A81300100E0940047FE
-:10A8500095300100EA8A004081B200004292004037
-:10A8600081320100EA8A005C1F900000EA8A004001
-:10A8700081B20000EA8A004081B20000BA000040C4
-:10A8800047990100010062F280C80100118D9040DB
-:10A8900080320000FFFF624081980100A400004068
-:10A8A00047990100EA8A2240E56D0000EA8A0041EA
-:10A8B000E5C100009A94004D81300100EA8A004011
-:10A8C00081B200005C00004047990100040022F0C2
-:10A8D0009630000000000040E1B10100008000035C
-:10A8E00044C901000000004BE0B10100000000403D
-:10A8F0008DB00100DF950040873001008B000040E3
-:10A9000047990100218D80F396300000000000403F
-:10A91000E78101000000004719900100EA8A005C0D
-:10A920001F900000340000404599010001000040E4
-:10A93000F599010000110040E5990100AB9200403B
-:10A9400081320100368DA2088032000037000040BD
-:10A9500047990100000000F382B00100000063513C
-:10A9600083D001003400004047990100010063F3E7
-:10A9700084CC01002E8D9F42803200000000634293
-:10A9800085B001000000004503F001000000000157
-:10A9900000C00100308D375C613100000000001BF9
-:10A9A00062B10100318DA84B1910000000000000B9
-:10A9B00062B10100338DA840813200001A87174030
-:10A9C00081B200000080000342C9010090002DF018
-:10A9D00094B00100AC002DF030B0010035002DF036
-:10A9E00028B0010058003E43E7E1010001000018D3
-:10A9F000F0C901000000004AE0B101003800200069
-:10AA0000E0B101003C00201BE0B10100400020400B
-:10AA1000E1B10100000000402BB00100EF940040C4
-:10AA20000D3001000000001816C00100458DA01473
-:10AA3000164400000000004117C001000E0000A2F3
-:10AA400044C9010000000018F8B10100B0002D1445
-:10AA5000F8B1010010500040879801004E8D224A45
-:10AA6000197C00000030004386C801000030000B54
-:10AA700016C801004E8DA440813200000000004144
-:10AA800017C0010001006E43869801002695003032
-:10AA900081300100528DA0411740000000000041AC
-:10AAA00017C00100598D224A197C0000080000A23D
-:10AAB00044C90100CC002DABF9B10100000000AB8E
-:10AAC00017C00100588DA0F016440000000000419E
-:10AAD00017C00100000064F082B001009000004047
-:10AAE000459901000000604131C00100BC000040F8
-:10AAF000439901005F8D060C80320000A00020F217
-:10AB0000E4B1010004000946191000009C01004056
-:10AB100045990100FFFF000B988801008B002D5024
-:10AB200017F00100648D904C1640000000000041B9
-:10AB300017C00100668D2243E77D0000000000443D
-:10AB400045C101000000662017A401006801004013
-:10AB5000439901005C012EF280B0010002006240C6
-:10AB60007ECD01000000005781C0010000002E10C2
-:10AB700048B1010003000040F08D01000000000812
-:10AB8000F0B1010058010005E0C9010000000044D7
-:10AB900061B101000000001062B10100708DA84099
-:10ABA00081320000AF8200881CB000000000000568
-:10ABB00048B10100748D4548613100000050000823
-:10ABC00062DD0100758DA8400530000035001D4094
-:10ABD00047990100010063F384C801007B8DA04305
-:10ABE000856C00000000634085B001003700004024
-:10ABF00047990100010063F382CC01008B00004003
-:10AC00004799010000000045E79101000B95005FA6
-:10AC100081300100EA8A004081B200003700004024
-:10AC2000479901004D9300F394300100258D224A8D
-:10AC300080320000C08B004081B20000370000402D
-:10AC4000479901004D9300F394300100908B224A04
-:10AC500080320000C08B004081B20000360000400E
-:10AC600043990100000000FB12B001000F0000F347
-:10AC700090880100040000F30CF40100BA8B220656
-:10AC8000906C00005C003D4313E00100A8002DF033
-:10AC900094B0010037002FF024B0010036002A5094
-:10ACA000E7D101000000634113C00100958DA0436E
-:10ACB000136C000000000040E7B10100AF910010EC
-:10ACC00086300100AF8200881CB00000978D4205DD
-:10ACD000483100000000004493930100BA8B1A5DD4
-:10ACE0006993000036002D1086B001005C003D43E2
-:10ACF000E7E10100A8002DF094B0010035002FF02D
-:10AD000024B0010001006BFB84C80100A28DA043A8
-:10AD1000856C000035002040E7B1010000000040D4
-:10AD200081B20100010063F312C80100A58DA043A8
-:10AD3000136C000000000040E7B1010040800003F8
-:10AD400044C90100B191004AF0310100AF8200888E
-:10AD50001CB00000A88D42054831000000000044EE
-:10AD60009393010000001A5D6993010037000040D1
-:10AD700047990100110063F382CC0100A18C2241AC
-:10AD80009E060000350000404399010058003D43F5
-:10AD9000E7E10100000000F836B00100AB8C00F0E4
-:10ADA00000B000005E012D0548B10100B38D65F2D1
-:10ADB0001230000000993F4213F00100B88D224785
-:10ADC000E77D0000F58275881CB00000B28D004060
-:10ADD00081B2000000000047E791010000007542C9
-:10ADE000199001007500004061990100BA8DA8B169
-:10ADF0000C3000003694001094300100AF820088BF
-:10AE00001CB000005E012E0548B10100C0A83D46FF
-:10AE10000DE001000000004097B00100C48D224009
-:10AE2000E16D00000400024197400000C18D005018
-:10AE300043C10000D08D224B803200000000624BE5
-:10AE4000129401000900000796E40100000000A729
-:10AE500097C001003000001094C801000080004A33
-:10AE60004499010000000042F1B101005E01004B75
-:10AE7000F0C901005E010005E0C9010000000044C6
-:10AE800061B101002000004A62DD0100CE8DA840C2
-:10AE9000813200000080001044C901000000005011
-:10AEA000F1B101000400000996E40100000068A867
-:10AEB00097C00100D4000005E0C901000000004473
-:10AEC00061B101000000001062B10100D68DA84000
-:10AED00081320000AF8200881CB0000000993F4220
-:10AEE00013F00100DA8D6540813200003F0000F36D
-:10AEF0009688010000000040E7B101000000755590
-:10AF000061B101000000000662B10100DE8DA840C1
-:10AF100081320000E38D224B803200000000004BA4
-:10AF200062B10100E18DA84081320000000000976D
-:10AF300013B001000000009697B00100E98D2009D0
-:10AF4000966C0000E98D1F0996240000F5820088A8
-:10AF50001CB00000E48D004081B200009A940057BC
-:10AF600081300100D58A000548B100002E00004064
-:10AF700043990100EF8D22F3803200009A94004241
-:10AF8000813001001A87004081B200000B95005209
-:10AF900081300100D58A0042198000009A94003A5D
-:10AFA000813001000B95005281300100D58A0040AC
-:10AFB00081B200000000004005B00100AD930040E8
-:10AFC00095300100D58A2240956C0000FA8DA24090
-:10AFD0001F7C0000B0920040813201001A870040BF
-:10AFE00081B200000480000342C90100000000F2A9
-:10AFF00002B0010058930052953001005F93004B5E
-:10B0000002B000001A87004081B200009495004011
-:10B0100095300100068EA20880320000068EA2162E
-:10B02000803200001A872242197C00000000004B89
-:10B03000199001009A94003A813001001A8700406B
-:10B0400081B20000002300A616B00100098E831E05
-:10B05000803200000008000B16DC01000000000038
-:10B060002AC00100E3940008803001000D8E005ECC
-:10B07000179000000495004361310100BD9100402C
-:10B080008D300100EB9400071614010000800010C1
-:10B0900042C90100158E2240E36D0000000000430C
-:10B0A00061B101004000001062DD0100128EA84075
-:10B0B00081320000AF8200881CB000008C94005EDA
-:10B0C00005100100B092004081320100198E220962
-:10B0D000803000000B95004013300100DA8A000533
-:10B0E00048B10000DD93004081320100D58A004064
-:10B0F00081B200000000004A1F900100208E224310
-:10B100003D7C000000000044199001000000004355
-:10B110003D800100218E00421990000014002D4551
-:10B120001F9001007D8E831E803200007D8E0044C2
-:10B1300019900000A292004081320100358EA208D1
-:10B1400080320000358EA21680320000318EA2427D
-:10B15000197C00000082000204DC0100A09800407D
-:10B160004799010030050041893001002E8EA2412F
-:10B17000197C0000B0920040813201001A87004023
-:10B1800081B2000058930015943001005F93004B8A
-:10B1900002B000001A87004081B20000DD93004039
-:10B1A000813201000000004B199001009A94003A8E
-:10B1B000813001001A87004081B20000388E22429F
-:10B1C000197C0000DD93004081320100398E00407F
-:10B1D00081B20000AD93004081320100658E2241B2
-:10B1E000197C0000C000001598C80100658EA00BF6
-:10B1F000996C00003000001080C801000080004001
-:10B200004499010000000050F1B10100000000036A
-:10B21000F0B101000000004261B1010000000040F7
-:10B2200062B10100418EA800E0310000AF820088C9
-:10B230001CB000000000000548B10100C00000156E
-:10B2400098C8010030002E0B99D0010000006A5010
-:10B2500099C00100C000620180CC01000C80000395
-:10B2600042C901002D002DF022B001000000004C69
-:10B2700080C001000000005C23800100D4003F4139
-:10B28000E7E101000B000011E4F501002F00204769
-:10B29000E7B50100528E230B816C00000000004FC7
-:10B2A000E59101000000000880B001000000000BE3
-:10B2B00003B001000000001502D00100E39400007B
-:10B2C0002A4001000000004361B10100400000106D
-:10B2D00062DD0100578EA84081320000AF820088F5
-:10B2E0001CB00000B092000548310100C000000110
-:10B2F00080CE0100638E2611003000001000000097
-:10B300002AC801000000000880B001000000000110
-:10B3100080C00100C00000409998010000000001B9
-:10B3200098D00100E394004C02300100C0000040BE
-:10B33000039801006A8E004081B2000030002F089F
-:10B3400080B00100C0000015F4C90100C000000178
-:10B35000E4CD0100C000004003980100E394000028
-:10B360002A4001006F8E22441F7C0000AC002F4059
-:10B3700013B0010000000001E0C10100B000004076
-:10B3800047990100708E0001E0D10000BD9100409E
-:10B390008D300100806300A616B00100EB94000719
-:10B3A000161401000080001042C90100788E22406E
-:10B3B000E36D00000000004361B101004000001097
-:10B3C00062DD0100758EA84081320000AF820088E6
-:10B3D0001CB000008C94005E051001007B8E2209D9
-:10B3E000803000000B95004081320100D58A0005B5
-:10B3F00048B100007D8E004A1F9000000000000050
-:10B4000010B0010024002D1510C0010028002DF0FF
-:10B4100016B0010022002DF026B0010014002FF21A
-:10B420000CB0010000000001E0D10100000000109C
-:10B4300032B001000000000B1BB0010004001F151A
-:10B440001A5000000000004023B00100000000017D
-:10B450002AB001004B94004035B000002F0020407E
-:10B46000E7B10100C18EA2451F7C00002400200B23
-:10B47000E0B1010028002013E0B101002200200605
-:10B48000E4B10100978E225C1F7C00000000005C8C
-:10B490001F8001003080001042C90100978E2240B9
-:10B4A000E36D00000000004761B1010040000010A2
-:10B4B00062DD0100938EA84081320000AF820088D7
-:10B4C0001CB000000000000548B101000080001918
-:10B4D00042C90100BA8E2240E36D0000A88E2242CC
-:10B4E000197C000005940040813201005792004011
-:10B4F00081320100B58E224B8032000000000043F3
-:10B5000061B101004000001062DD01009E8EA84084
-:10B5100081320000AF8200881CB00000A48E22415E
-:10B52000197C0000C692004011300100A58E000574
-:10B5300048B10000B092004081320100A78E22097C
-:10B54000803000000B95004081320100F9820040FC
-:10B5500005B0000005940040813201005392004084
-:10B56000813201000000004361B101004000001081
-:10B5700062DD0100AB8EA84081320000AF820088FE
-:10B580001CB00000B18E2241197C0000C692004020
-:10B5900011300100B28E000548B10000B0920040A9
-:10B5A00081320100B48E2209803000000B950040EA
-:10B5B00081320100F982004005B000000000004324
-:10B5C00061B101004000001062DD0100B68EA840AC
-:10B5D00081320000AF8200881CB00000000000052E
-:10B5E00048B10100BD8E2241197C0000C692004086
-:10B5F00011300100BE8E000548B10000B09200403D
-:10B6000081320100C08E2209803000000B9500407D
-:10B6100013300100DA8A004005B0000000800019F4
-:10B6200042C90100C88E2240E36D000000000043C3
-:10B6300061B101004000001062DD0100C48EA8402D
-:10B6400081320000AF8200881CB0000000000005BD
-:10B6500048B101000000004005B00100CC8E22413D
-:10B66000197C0000C692004011300100CD8E00050B
-:10B6700048B10000B09200408132010008002D0A5C
-:10B6800084B00100000000F082B0010014002040EE
-:10B69000E1B10100D28E031E80320000D38E004142
-:10B6A00087B000002100004087980100CE93004041
-:10B6B000813201000000005C1F900100D78E22093A
-:10B6C000803000000B95004013300100DA8E2244D8
-:10B6D000197C00000B95004F8130010000000044F0
-:10B6E00019800100D58AA24A1F7C0000DA8A004036
-:10B6F00081B20000BA002040E5B10100E08E9C1745
-:10B7000080320000CC000040439901009D9500402C
-:10B71000813201004495004013300100C000004018
-:10B7200043990100C4002DF082B00100789500F02B
-:10B7300084300100B092004081320100DA8A22098F
-:10B74000803000000B95004013300100DA8A004081
-:10B7500081B200002E00004043990100EC8E22408F
-:10B76000E76D00003200004043990100F48EA240D2
-:10B77000E56D00009A930040813201002400200B07
-:10B78000E0B1010028002013E0B1010022002006F2
-:10B79000E4B101001400200AE0B10100DA8A2209B4
-:10B7A000803000000B95004013300100DA8A004021
-:10B7B00081B200009A93004081320100539300400F
-:10B7C00081320100028F2241197C00000000000B31
-:10B7D00099B0010004001F1598500000028F20014D
-:10B7E000986C00007000000348C9010000002E465C
-:10B7F0001F90010000000050F1B1010000000003A3
-:10B80000F0B101000000004261B10100A00000A4FD
-:10B8100062DD0100FF8EA800E0310000000000059D
-:10B8200048B10100AC002F0010B001000000000181
-:10B83000E0C1010014002F1510C001000000000A33
-:10B8400080B001000000600180D0010000000047CE
-:10B8500019900100848E2209803200000B950009A6
-:10B8600080300100848E004013B00000008000038F
-:10B8700042C90100000000F082B001001300004046
-:10B88000879801000000004C43C10100CE9300F0F6
-:10B8900084300100D58A005C1F9000002C002040FD
-:10B8A000E7B101002D002040E7B10100D58A004238
-:10B8B00019800000C093004081320100E0940048EC
-:10B8C000953001000000004561B10100400000100A
-:10B8D00062DD0100178FA84013300000AF8200889E
-:10B8E0001CB000001D8F000548B100001C8F0040F7
-:10B8F00013B000000000000012B00100080000407A
-:10B900004399010014002DF082B00100040022F0E0
-:10B91000843000001300004087980100CE9300405F
-:10B92000813201000000005C1F900100358F00098A
-:10B9300000B00000D58A8742191000008B002F4705
-:10B9400019800100D58A0040E79100002F000040D7
-:10B9500047990100338F2247E77D00003492004071
-:10B96000E7310100338F2200803200002E8FA24089
-:10B970001F7C0000B092004081320100338F0040F4
-:10B9800081B20000300000404399010032002DF2E6
-:10B9900094B00100589300F2023001005F93004B15
-:10B9A00002B000000000000548B10100348F0040E3
-:10B9B00001B000000000004005B001003A8F2200F5
-:10B9C00080320000398FA242197C0000AD93004004
-:10B9D000813201003A8F004081B20000DD930040C7
-:10B9E00081320100C68F225C1F7C00000000005CD9
-:10B9F0001F8001000080001042C90100428F2240D8
-:10BA0000E36D00000000004561B10100400000103E
-:10BA100062DD01003F8FA84081320000AF820088C4
-:10BA20001CB00000C68F000548B10000A292004083
-:10BA300081320100498FA20880320000498FA2168E
-:10BA4000803200009A94004D813001000082000293
-:10BA500004DC01001A87004081B20000740000403D
-:10BA600043990100000000F882B00100000000F0DE
-:10BA700084B001000000004196B00100578F2242BF
-:10BA8000961400000080001044C901006400684062
-:10BA90009798010000000041F0B101000000004251
-:10BAA000F0B1010070000005E0C901000000004590
-:10BAB00061B101002000001062DD0100548FA84038
-:10BAC000813200000000005C1F9001000000004572
-:10BAD00061B101004000001062DD0100588FA85CD8
-:10BAE0001F000000AF8200881CB000005E012D0521
-:10BAF00048B101005C8F65F21230000000993F42AE
-:10BB000013F00100618F2247E77D0000F582758800
-:10BB10001CB000005B8F004081B2000000000047B5
-:10BB2000E79101000400750996E40100008000100F
-:10BB300044C9010000000044F1B10100000068A800
-:10BB400097C0010000000003E0B101000080000385
-:10BB5000449901000000004461B1010000000010A0
-:10BB600062B10100698FA840E1310000AF82008816
-:10BB70001CB0000000993F4213F001006D8F650575
-:10BB8000483100003F0000F39688010000000040AB
-:10BB9000E7B101000000754081B20100758F224BB2
-:10BBA000803200000000005561B101000000004B30
-:10BBB00062B10100738FA8408132000000000007CD
-:10BBC00016B001000062000B16DC01003492004048
-:10BBD000813201008D8F220080320000E393005FEC
-:10BBE00001100100778F2240956C0000008000104A
-:10BBF00044C9010000000050F1B101000000000341
-:10BC0000F0B101000000004261B10100000000102D
-:10BC100062B101007F8FA800E0310000AF82008890
-:10BC20001CB000000000000548B1010004800003C2
-:10BC300042C90100000000F202B001005893005216
-:10BC400095300100B092004081320100778F22418F
-:10BC5000975000000C80000342C90100000000F072
-:10BC600000B001000000005C018001005F93004B08
-:10BC700002B00000778F000548B10000EB9400404F
-:10BC8000033001001780000344C9010000F0000CDC
-:10BC9000968801000000634C97F0010010800003BB
-:10BCA00044C90100000000ABE1B101008C94005ECA
-:10BCB00005100100030000071AF401000700000747
-:10BCC0001688010000B5000D46C90100978F30406D
-:10BCD000813200000000000BE681010000B7000D7A
-:10BCE00046C901000000000BE68101001000100FA2
-:10BCF00094F401009304005F95040100399300401F
-:10BD000081320100A18F2250FD7F00009F8F4640AD
-:10BD10008132000000001E4131D3010000002E05D9
-:10BD200048B1010000000040E1B101000000004006
-:10BD30000FB001009B920041813001001A87004042
-:10BD400081B20000A292004081320100B38FA208AC
-:10BD500080320000B38FA216803200000082000201
-:10BD600004DC01000000004503F0010000000001B8
-:10BD700000C00100AC8F375C613100000000001B87
-:10BD800062B10100B08F284081320000AD8F0040C9
-:10BD900081B200000000000062B10100B08FA84035
-:10BDA000813200001A87174081B2000074002240DF
-:10BDB000F1B1010000000040E1B10100E094004A4F
-:10BDC00095300100C093005C1F100100498F0040B6
-:10BDD00081B200002F00004047990100C48F224724
-:10BDE000E77D000034920040E7310100C48F22005B
-:10BDF00080320000BF8FA2401F7C0000B092004044
-:10BE000081320100C48F004081B200003000004048
-:10BE10004399010032002DF294B00100589300F2D2
-:10BE2000023001005F93004B02B0000000000005EB
-:10BE300048B10100E094004895300100C093005CD7
-:10BE40001F100100C98F8742191000008B002F4777
-:10BE50001980010000000040E79101000B950042AD
-:10BE600081300100D58A004081B20000C0930040BB
-:10BE700081320100D58A005C1F900000BA0020408A
-:10BE8000E5B101004495004081320100C00000404E
-:10BE900043990100C4002DF082B00100789500F0B4
-:10BEA00084300100B0920040813201000B950045C2
-:10BEB00081300100D58A2242197C00009A94003A10
-:10BEC00081300100D58A004081B2000004000040AA
-:10BED00081B20000A292004081320100DE8FA208F0
-:10BEE00080320000DE8FA216803200009A94004754
-:10BEF000803001000082000204DC01001A8700404B
-:10BF000081B200001080000344C9010000E100A6D6
-:10BF100084B0010000000040F1B1010000000040C9
-:10BF2000F1B1010000006007849401008C94005E70
-:10BF300005100100D58A004081B200008A0000404F
-:10BF400047990100B0920041E7410100DA8A0040C0
-:10BF500081B200009A930040813201005393004067
-:10BF600081320100000000012CB00100000000152A
-:10BF700010B001000000000010C0010004001F0A02
-:10BF80002C5000000000001032B001001E95000689
-:10BF900004300100F68FA2481F7C0000F48F844813
-:10BFA0001F100000AC00004047990100F68F000A06
-:10BFB000E0C100000000000A02B00100BD910001D4
-:10BFC0008C3001000000004361B10100400000100E
-:10BFD00062DD0100F78FA84081320000AF82008847
-:10BFE0001CB000000000000548B101000000000284
-:10BFF00010C0010004902202145000000894004573
-:10C000001F000100EE8F225C1F7C00000000004733
-:10C0100061B101004000001062DD01000090A85CE9
-:10C020001F000000AF8200881CB00000EE8F0005EA
-:10C0300048B100000000000B1BB0010008002D40BB
-:10C0400085B00100000000F082B001000000004057
-:10C0500005B00100CE93004187300100000000458B
-:10C0600061B101004000001062DD01000A90A840AB
-:10C0700081320000AF8200881CB000000000000583
-:10C0800048B1010010902209803000000B9500405B
-:10C090001330010014902244197C00000B95004FCE
-:10C0A000813001001490A2471F7C00000000004472
-:10C0B00019800100FF070008008C01002290224A2D
-:10C0C0001F7C00001A90A21602300000B0920040BF
-:10C0D000813201002F002040E7B10100D58A0040E5
-:10C0E00081B200002D002D082AB001001E902242CE
-:10C0F000197C0000DD930040813201001F90004058
-:10C1000081B20000AD9300408132010030002E006A
-:10C110002AD0010032002A15E4B10100D58A0016A8
-:10C12000E4B1000035902216023000000000000843
-:10C130002AB0010094950040953001002790A2405C
-:10C14000116C0000369022402D6C0000AC000040C5
-:10C1500047990100B0002B01E0C10100002B00A6AF
-:10C1600016B0010000000001E0D10100E3940008D6
-:10C17000803001002E90005E17900000049500436F
-:10C18000613101000000004361B101004000001076
-:10C1900062DD01002F90A84081320000AF8200884C
-:10C1A0001CB000000000000548B10100EB9400073E
-:10C1B000161401008C94005E05100100B09200403E
-:10C1C000813201002F002040E7B10100DA8A0040EF
-:10C1D00081B200000000000B1BB0010004001F151D
-:10C1E0001A500000439020161A6C000070000003E3
-:10C1F00048C9010000002250F1B101000000000315
-:10C20000F0B1010000000000E0B1010000000042B8
-:10C2100061B10100A00000A462DD01004090A846C9
-:10C220001F1000000000000548B1010000000000E0
-:10C2300010B001000000001510C001000000000A4D
-:10C240002AB001000000000A2CD00100AC002F40F1
-:10C2500023B001004A9084451F1000004B90000A53
-:10C26000E0C100000000000A02B001004B94004051
-:10C2700035B000000080001942C9010053902240EF
-:10C28000E36D00000000004361B1010040000010B8
-:10C2900062DD01004F90A84081320000AF8200882B
-:10C2A0001CB000000000000548B101006390A2022C
-:10C2B0001A500000649022402D6C00000080001095
-:10C2C00044C9010000000050F1B10100000000036A
-:10C2D000F0B10100FF070008E08D010000000042FE
-:10C2E00061B101000000001062B101005A90A84045
-:10C2F00081320000AF8200881CB000000000000501
-:10C3000048B101002F002047E7B501000C80000371
-:10C3100042C90100100000F010C80100F007004001
-:10C320001B9801006490005C118000000000000276
-:10C3300010C00100C69200401F000100000000056F
-:10C3400048B101006890230D2C6C000000000040F3
-:10C350001F900100719022461F7C000000000046E3
-:10C360001F8001007080000342C9010071902240CB
-:10C37000E36D00000000004261B1010040000010C8
-:10C3800062DD01006D90A84081320000AF8200881C
-:10C390001CB000000000000548B1010008002D405D
-:10C3A00085B00100000000F082B0010000000040F4
-:10C3B00005B00100CE930041873001000000004528
-:10C3C00061B101004000001062DD01007690A840DC
-:10C3D00081320000AF8200881CB000000000000520
-:10C3E00048B101007C902209803000000B9500408C
-:10C3F0001330010080902244197C00000B95004FFF
-:10C40000813001008090A2471F7C000000000044A2
-:10C4100019800100FF070008008C01009590224A56
-:10C420001F7C00008690A21602300000B0920040EF
-:10C43000813201002F002040E7B10100D58A004081
-:10C4400081B200002D002D082AB0010091902242F7
-:10C45000197C00008A90A2F384300000000000A53F
-:10C4600085B001000000004185D00100D4003E41AC
-:10C4700085E001008E9022401F7C00000000005AE1
-:10C48000119001000B000008E4F50100DD9300406D
-:10C49000813201009290004081B20000AD930040D3
-:10C4A0008132010030002E002AD0010032002A150E
-:10C4B000E4B10100D58A0016E4B100009890A216FC
-:10C4C00002300000B092004081320100E79000404D
-:10C4D00081B200002D002D082AB00100A69022474D
-:10C4E0001F7C0000A2902242197C00009D90A2F3C4
-:10C4F00084300000000000A585B00100000000416C
-:10C5000085D00100D4003E4185E00100A190224089
-:10C510001F7C00000000005A119001000B00000871
-:10C52000E4F5010058012D002AD0010060012DF032
-:10C5300010B00100000000F02CB00100358E00406A
-:10C5400081B200009495004195300100AE90A208A0
-:10C5500080320000AE90A216803200000000004140
-:10C5600097B00100AC90230D026C00000000004168
-:10C5700097C001005F93004B02B00000E7900005F8
-:10C5800048B10000AC002F0114B00100B0002B0135
-:10C59000E0C10100002B00A616B001000000000160
-:10C5A000E0D10100BE90230D026C0000008000105D
-:10C5B00044C9010000000050F1B101000000000377
-:10C5C000F0B101000000004261B101000000001064
-:10C5D00062B10100B790A800E0310000AF8200888E
-:10C5E0001CB000000000000548B101000C800003F1
-:10C5F00042C90100100000F022C801000000005CE8
-:10C60000238001000000000184B00100C190230DCF
-:10C61000026C00000000000D02B0010000000008E4
-:10C6200080B00100C69022401B6C0000E394000122
-:10C6300084500100CE902240856C00000000000173
-:10C6400080C001001080001046C901000000004FAA
-:10C650004381010000000042F0B1010020000040D1
-:10C66000F0C9010000000016F0B101000000004315
-:10C6700061B10100A00000A162DD0100CC90A81111
-:10C68000E0310000DD90005E17900000D190230D96
-:10C69000026C00000000000D02B00100000000016B
-:10C6A00084D00100D69022401B6C0000049500430A
-:10C6B00061310100DD902240856C00000000000126
-:10C6C00012C001001080001046C901000000004F98
-:10C6D0004381010000000042F0B1010000000009A8
-:10C6E000F0B1010000000018F0B10100A00000A1AD
-:10C6F00062DD0100DB90A811E03100000000004382
-:10C7000061B101004000001062DD0100DE90A80A66
-:10C7100002300000AF8200881CB00000B09200051B
-:10C7200048310100E590230D026C0000FF07001165
-:10C73000008C0100B092004081320100EB940007B0
-:10C74000161401008C94005E051001002F0020409B
-:10C75000E7B10100DA8A004081B2000000800003E6
-:10C7600042C90100000000F882B00100000000F89A
-:10C770008CB00100000000F08EB0010097930040E3
-:10C78000133001000000004085B00100CE9300414D
-:10C790008730010053930040813201000080001077
-:10C7A00042C90100F8902240E36D000000000045FE
-:10C7B00061B101004000001062DD0100F490A8406A
-:10C7C00081320000AF8200881CB00000000000052C
-:10C7D00048B10100FA902209803000000B9500401A
-:10C7E000133001000000000B1BB001000000001519
-:10C7F0001AD001000191A241197C000094950040DB
-:10C80000953001000000001680B201000A9127084F
-:10C8100080320000279000002AC00000949500415B
-:10C82000953001000000001680B201000591270834
-:10C8300080320000AE9000002AC0000000000041DD
-:10C8400097B001000891230D026C00000000004128
-:10C8500097C001005F93004B02B00000000000058C
-:10C8600048B10100D58A2242197C00009A94003A0E
-:10C8700081300100D58A004081B200000E91004A4B
-:10C880001F900000D8920000103001000000001539
-:10C8900010C001000000001032B001001E9500061B
-:10C8A000043001001791A2441F7C00000000000B1F
-:10C8B0001BB001000000000A2CD001000000000A9B
-:10C8C00002B00100BD9100018C3001000080001910
-:10C8D00042C901001E912240E36D000000000043A8
-:10C8E00061B101004000001062DD01001A91A84012
-:10C8F00081320000AF8200881CB0000000000005FB
-:10C9000048B101000000000210C00100279122027E
-:10C9100014500000089400451F0001001091225C93
-:10C920001F7C00000000004761B1010040000010C2
-:10C9300062DD01002391A85C1F000000AF82008827
-:10C940001CB000001091000548B1000008002D4007
-:10C9500085B00100000000F082B00100000000403E
-:10C9600005B00100CE930041873001000000004572
-:10C9700061B101004000001062DD01002C91A8406F
-:10C9800081320000AF8200881CB00000000000056A
-:10C9900048B1010032912209803000000B9500401F
-:10C9A0001330010035912244197C00000B95004F93
-:10C9B000813001000000004419800100FF070008D9
-:10C9C000008C01004391224A1F7C00003B91A2167B
-:10C9D00002300000B0920040813201002F00204060
-:10C9E000E7B10100D58A004081B200002D002D087A
-:10C9F0002AB001003F912242197C0000DD930040E3
-:10CA0000813201004091004081B20000AD930040AE
-:10CA10008132010030002E002AD0010032002A1598
-:10CA2000E4B10100D58A0016E4B100002390A216FB
-:10CA300002300000B0920040813201002F002040FF
-:10CA4000E7B10100DA8A004081B20000D892004AC2
-:10CA50001F1001003890001032B000008A00204002
-:10CA6000E7B101004D91A241197C0000B092004055
-:10CA7000813201005091004081B2000058930015AE
-:10CA8000943001005F93004B02B0000000000005ED
-:10CA900048B1010052912242197C00009A94003A58
-:10CAA000813001000B95004581300100D58A00409E
-:10CAB00081B20000F48E00451F9000009A93004060
-:10CAC000813201005393004081320100389000010F
-:10CAD0002CB00000A2920040813201006591A208B2
-:10CAE000803200006591A2168032000000820002B0
-:10CAF00004DC01000000004503F00100000000011B
-:10CB000000C001005E91375C613100000000001B35
-:10CB100062B1010062912840813200005F910040C3
-:10CB200081B200000000000062B101006291A840E3
-:10CB3000813200001A87174081B200005801200896
-:10CB4000E0B1010060012016E0B101009A930047B6
-:10CB50001F10010053930040813201003890000102
-:10CB60002CB00000A29200471F1001007891A2088B
-:10CB7000803200007891A216803200007491A242A7
-:10CB8000197C00000082000204DC0100A098004033
-:10CB90004799010030050041893001005893001584
-:10CBA000943001005F93004B02B000001A870040F0
-:10CBB00081B20000DD930040813201000000004B93
-:10CBC000199001009A94003A813001001A870040C0
-:10CBD00081B2000058012008E0B101006001201678
-:10CBE000E0B10100D89200103230010038900040CE
-:10CBF00013B00000A2920040813201008991A20886
-:10CC0000803200008991A21680320000008200026A
-:10CC100004DC01000000004503F0010000000001F9
-:10CC200000C001008291375C613100000000001BF0
-:10CC300062B101008691284081320000839100405A
-:10CC400081B200000000000062B101008691A8409E
-:10CC5000813200001A87174081B200000080000373
-:10CC600042C90100000000F882B00100000000F895
-:10CC70008CB00100000000F08EB0010097930040DE
-:10CC8000133001000000004085B00100CE93004148
-:10CC90008730010053930040813201000080001072
-:10CCA00042C9010098912240E36D00000000004558
-:10CCB00061B101004000001062DD01009491A840C4
-:10CCC00081320000AF8200881CB000000000000527
-:10CCD00048B10100358E2209803000000B950040DC
-:10CCE00013300100358E004081B2000014002D4544
-:10CCF0001F9001007D8E004419900000A091A24178
-:10CD0000197C00000000004A1F900100E88F0040DD
-:10CD100081B200009A93004A1F1001005393004013
-:10CD200081320100389000012CB00000D892004000
-:10CD3000813201003890001032B00000F48E0045BE
-:10CD40001F9000000000004137C3010000000041B7
-:10CD500033C301003600000102CC01000000D240C4
-:10CD600081B20000AC9185178032000000009F481E
-:10CD700003D00000AE919C178032000000009F4C51
-:10CD800003D000000000800134C301004080000394
-:10CD900044C901000000004AF0B101000000004059
-:10CDA000F1B1010000000012F0B10100B4920041A5
-:10CDB000E13101000080004344C90100100000403F
-:10CDC000F199010000000048F0B1010000000049A5
-:10CDD000F0B1010040000003E0C90100000000457F
-:10CDE00061B101000000004362B101000000A840F1
-:10CDF00081B20000BA91004081B20000BA00204028
-:10CE0000E5B10100B0002F018CD001000000004608
-:10CE1000E0C10100AC002F4013B00100CC002D0197
-:10CE2000E0C10100C4919C17803200009D95004034
-:10CE300081320100C6912247197C00000000005F8A
-:10CE4000139001004495004719100100C0002D44C3
-:10CE50001F900100C4002DF082B00100789500F011
-:10CE600084B0000090002D0548B10100DB91A24B79
-:10CE70001F7C00002E92A24C1F7C0000DB911F1C27
-:10CE8000E06D0000DE91A20180320000A8002D4676
-:10CE90008FB00100D4911F1CE06D0000B400004071
-:10CEA00043990100D69122F03A6C00002B921FF0BA
-:10CEB0003A6C00000000A24080B200000000804FE9
-:10CEC0008FB001008A000040439901002C9220425B
-:10CED000E76D0000DA9122408032000000008059A6
-:10CEE0008FB00100000080588FB00100DD9122401A
-:10CEF000803200000000805C8FB001000000805B89
-:10CF00008FB00100AC00004043990100B0002DF04B
-:10CF100084B00100E291A242246C0000EB9123F066
-:10CF2000026C0000E891A2F0803200002D92A24233
-:10CF3000246C00002D92A241036C0000E791A240F6
-:10CF400080320000000080518FB00100000080524C
-:10CF50008FB001002D921F12845000002D92A0016D
-:10CF6000846C0000DB91004081B200008B00004027
-:10CF7000439901001692A246E77D0000140000408C
-:10CF800043990100089222F014300000F491200A25
-:10CF9000026C00000592031E80320000F391A24053
-:10CFA00080320000000080448FB001000000804902
-:10CFB0008FB00100F991220A026C0000FC91A2419D
-:10CFC000197C0000F891A2408032000000008055DA
-:10CFD0008FB00100000080568FB00100FB91A2408D
-:10CFE00080320000000080438FB0010000008048C4
-:10CFF0008FB001000000000182B001000000000AB3
-:10D0000082D0010002922091836C00000192A24024
-:10D0100080320000260080408F9801002700804069
-:10D020008F9801000492A240803200001F008040CF
-:10D030008F980100200080408F9801000792A24045
-:10D0400080320000220080408F9801002300804041
-:10D050008F98010088002D448FB001001192A241E9
-:10D06000197C00000E92A2433D7C00000E92A2F2B9
-:10D07000026C00000000A24080B200000000804965
-:10D080008FB001001092A240803200000000804367
-:10D090008FB00100000080488FB001000E92A09177
-:10D0A000036C00000C9222433D7C00001592A240CC
-:10D0B00080320000280080408F98010029008040C5
-:10D0C0008F98010014000040439901001F92A2F0C4
-:10D0D0001430000088002D448FB001001C92A2F291
-:10D0E000026C00000000A24080B2000000008049F5
-:10D0F0008FB001000E922241197C00000C92209109
-:10D10000036C00000E92004081B200002392200ABE
-:10D11000026C00002292A240803200000000804495
-:10D120008FB00100000080498FB001002892220AD0
-:10D13000026C0000FC91A241197C00002792A240E1
-:10D1400080320000000080558FB001000000805642
-:10D150008FB001002A92A24080320000000080437C
-:10D160008FB00100000080488FB001003092004372
-:10D1700095B000003092004195B00000309200421E
-:10D1800095B000003092004495B000003092004C01
-:10D1900095B00000E0940040813201003392A2403B
-:10D1A000803200000000804B8FB001000000804CF6
-:10D1B0008FB001002D000040439901002E002FF395
-:10D1C00084B001003892A2F3963000000000804045
-:10D1D00001B001002D002A41E7D10100D4003D41FA
-:10D1E00085E001000B0000F200E401003E92225AAB
-:10D1F000017C0000000000401F9001003F92005A97
-:10D2000001800000000000401F8001000000634119
-:10D2100085C001000000A0A5856C01000000E3406E
-:10D2200085B001000C80000342C9010012000040DB
-:10D2300087980100DF9500F08CB000004C922240EE
-:10D240000F6C000000002F0548B101004992A24B6D
-:10D25000197C00004A9222F0186C00000000604B1C
-:10D26000199001001693000710300100F982004068
-:10D2700005B000004E92225A1F7C00009B92004095
-:10D2800081300100F982004005B0000000002F0548
-:10D2900048B101000000604B19900100169300078F
-:10D2A00010300100F982004005B0000000002F0599
-:10D2B00048B101000000604B19900100169300076F
-:10D2C000103001000000804005B00100579233404B
-:10D2D000813200005A92A1AD95200000689213405F
-:10D2E00081B200000000134A5A8301003000394522
-:10D2F00095E001001F00000F5ED801000000005AF9
-:10D300005F9001000000004045B0010000000004F3
-:10D3100048B00100000000054AB001000000000C08
-:10D3200058B00100000000074EB00100A884004082
-:10D330005D9801000000005861B101000000004A42
-:10D3400062B101000000A84197B000006592004062
-:10D3500081B200000000804097B001006992600730
-:10D3600096300000FFFF004B84890100000070C26E
-:10D3700024B001007392A245257C00006D923120FB
-:10D380008530000074922212487F00005804111268
-:10D39000480301001000001296E401000000004B59
-:10D3A0001E9401000000805A1F90010073923140CA
-:10D3B00081320000000000B424B0010074922212F7
-:10D3C000487F0000580400408132010000002F0512
-:10D3D00048B1010081920BF084300000000011126E
-:10D3E000488301007E922250857000005E0100405B
-:10D3F00043990100419400F2963001009304001219
-:10D40000943001000000005A1F900100100000122B
-:10D4100096E401000000804B1E94010010000042C1
-:10D4200010F4010000B73F4311F0010007000008AD
-:10D430008A880100849230A10C3000008792224536
-:10D44000E67D00007492104081B2000000002A4581
-:10D45000E691010000001012488301000000114015
-:10D4600081B201000000604B858001005E01004038
-:10D4700043990100419400F29630010000800010B1
-:10D4800044C90100D8000040819801002E002D05FC
-:10D4900048B1010092922240E76D000080000040F8
-:10D4A00080C8010000000040F0B101000900000840
-:10D4B00086E40100000068A787C001000000004466
-:10D4C00061B101000000001062B101009692A80550
-:10D4D000E03100001000001296E401000014004B3F
-:10D4E00096DC01000000804B1E9401001000000F2C
-:10D4F00084F401001F000042848801009F922240B2
-:10D5000080320000A092004268B10000000000429A
-:10D510006AB10100A092315A1F0000000000914240
-:10D5200048930100A2923540813200006D00004016
-:10D5300061990100A89228B12C300000A392224DDD
-:10D54000757D0000000000402DB0010000009540F6
-:10D5500011B001006D00004061990100A892A8B1CE
-:10D56000103000000000954081B201007F000040B3
-:10D5700061990100AF9228B110300000AB929FBAC0
-:10D58000803200000000804011B0010000008024C3
-:10D59000118401000000005F61B101000010000073
-:10D5A00062DD01000000A84081B20000B19200409D
-:10D5B00081B20000AC94004047990100B59232401E
-:10D5C00081320000BB9222F896300000000000F883
-:10D5D00090B00100000000F092B001000100004B8B
-:10D5E000F0CD010020009248E0C901006C0000402D
-:10D5F00061990100BF9228B192300000BB92224C89
-:10D60000757D00000400124091B000006C000040E5
-:10D6100061990100BF92A8B190300000FF0000485E
-:10D62000968801000000004B90D001000100004BE3
-:10D63000F0CD010020000048F0C90100000092492F
-:10D64000E0B101000C002D1048B10100FF070008F7
-:10D65000828C0100FF0700F0008C01000000A24155
-:10D6600000EC0000CC92221A006C0000B092000086
-:10D67000343001000000005049C10100C892A241AD
-:10D68000235000000000804081B201000C002D10EA
-:10D6900048B10100FF070015828C0100FF0700F070
-:10D6A000008C01000000A24100EC0000D592220D88
-:10D6B000006C0000B09200001A3001000000005021
-:10D6C00049C10100D192A2412350000000008040D6
-:10D6D00081B20100DA92831E803200000000004413
-:10D6E0001990010024002D012CB0010028002DF01C
-:10D6F00016B0010022002DF026B0010014002FF218
-:10D700000CB0010000008040E1B101003000004099
-:10D710009798010060972E4081B201000000004000
-:10D72000F1B10100E192A2419750000064973E439D
-:10D730009DE0010000008040E1B1010064973E439C
-:10D740009DE001000000800BE8B1010064973F43B9
-:10D750009DE00100000000F016C0010000008040C4
-:10D76000E1B1010064973F439DE00100000000F437
-:10D7700016B0010000008040E1B1010060173D4398
-:10D780009DE00100100080A116E4010000B5000D2D
-:10D7900042C90100F092304717040000F392A20B37
-:10D7A000E67D00000000904281B0010000B7000D4E
-:10D7B00046C90100F792A20BE67D00000000000BB5
-:10D7C000E69101000000904181B00100000010408E
-:10D7D00081B20100F8924007963000009D0400409D
-:10D7E000813201000293A245957C000001973F41E0
-:10D7F00095E00100000000F396B001000000004E2B
-:10D80000E6B1010040973E4097E001000000004E65
-:10D81000E6B1010040973E409DE001001593003BBA
-:10D82000E7B1000002933040813200000C93A20B5C
-:10D83000E67D000000B5000D46C901000893A20B6B
-:10D84000E67D00000000104081B201000000984217
-:10D8500081B0010000B7000D46C901000000000BB7
-:10D86000E69101000000104081B2010000009841E3
-:10D8700081B00100040021A2952000000000104AA0
-:10D880004483010000973E4195E001000000004EF6
-:10D89000F6B101000000004EE6B1010040973E40A5
-:10D8A0009DE001000000003BE7B101000000004ADC
-:10D8B00090B10100FFFF000792890100000098402D
-:10D8C00081B001000300000886F4010000B70043A6
-:10D8D00046C901000700000882880100199340082A
-:10D8E000963000009D0400408132010025932245BE
-:10D8F000957C00002193225A1F7C00001000000F2D
-:10D9000096F401001E93315F970400000000114B54
-:10D91000489301000000004B6AB1010021933040A0
-:10D920008132000000000041E6810100000010404B
-:10D9300081B201000000984081B2010000973F4190
-:10D9400095E00100000000F396B0010040973D40D3
-:10D9500097E00100000063F388B001002D93A23B23
-:10D96000896C00000000004A90B10100010000A68F
-:10D9700092B101002E93184A449300000000184011
-:10D9800081B201003000394597E001003393225AFB
-:10D990001F7C00001F04000F98D801000000004CFD
-:10D9A0005E940100359300054AB000001F0400A7F3
-:10D9B0005E840100000000404BB0010000000058F0
-:10D9C00061B101000000004B62B101000000A840FD
-:10D9D00081B200003693004081B2000039934007C5
-:10D9E000963000009D040040813201003D932245A5
-:10D9F000957C00000000984081B201009B04004A21
-:10DA00004413010000973F4195E00100000000F33E
-:10DA100096B0010040973D4097E00100000063F39D
-:10DA200088B001003000384597E001000000005F39
-:10DA30000F9001000000005861B101000000004B90
-:10DA400062B101004593A840813200003E93A23BA1
-:10DA5000896C0000300038459DE0010000009840CE
-:10DA600081B2010093040012943001001693005A11
-:10DA70001F0001000000805A1F9001001100004AA1
-:10DA8000E6C9010034002F4F95840100000000F327
-:10DA900096B001000100634B84C801000000A04360
-:10DAA000856C01000000E34085B0010030002D448A
-:10DAB0001F90010032002DF22AB00100040022F272
-:10DAC0000230000034920010323001003200A040D9
-:10DAD000E5B101000000004097B00100F0070040F0
-:10DAE000999801000000004A02C0010000000050A7
-:10DAF00003D001000000004197C001000000A34CCA
-:10DB000002D000005C93004081B20000000000A839
-:10DB100036B001006C9322410350000000800010D9
-:10DB200044C9010000000050F1B101007000000381
-:10DB3000F0C901000000004261B1010000000010C6
-:10DB400062B101006593A800E0310000AF82008857
-:10DB50001CB00000B0920040813201007C800003C4
-:10DB600042C90100000000F000B001006093005CB9
-:10DB700001800000B0920040813201000000001BD3
-:10DB800010B1000068012D0682B00100000000F213
-:10DB900082C001000080000346C90100AB92004032
-:10DBA0008132010093932240116C0000000068084C
-:10DBB00038960100F007004182CC01007193AA4120
-:10DBC0003B400000000000F810B001000000005CC5
-:10DBD000118001000100001D04CC01009293264633
-:10DBE000233000000800000312C80100640120F087
-:10DBF000E0B1010091932241055000002000000394
-:10DC000048C901000C0000F886C801000000224449
-:10DC1000F1B1010000000043F0B101000000000973
-:10DC2000E0B101000000004461B10100A00000A4C7
-:10DC300062DD01008393A8461F10000090932241EB
-:10DC4000055000008E93A24123500000000000A167
-:10DC50001AB001000000004461B101004000001052
-:10DC600062DD01008993A84623300000AF8200885E
-:10DC70001CB000001000000348C901000000000DA6
-:10DC800042B101000000004413C001007E93005027
-:10DC900049C100000000000548B1010004800003F4
-:10DCA0001AC801000000804081B201009293224016
-:10DCB0003B6C0000000000F800B00100B092005C76
-:10DCC00001000100939300413BD0000000008D470C
-:10DCD00080320100B0002F5F13B001000000E0F0BF
-:10DCE0008CC001000080000342C90100000000F860
-:10DCF00094B00100000000F88CB001009F938CF8F4
-:10DD00008E3000000000004419900100040022F849
-:10DD100014300000000000F816B00100000000F808
-:10DD200026B0010008002EF80CB001000C002A4AB1
-:10DD3000E0B1010028000000E0C901001000201B34
-:10DD4000E0B10100AC93200A0C6C0000000000F868
-:10DD500094B00100000000F896B00100200020F00F
-:10DD6000E4B101001800204AE0B101001C00204B82
-:10DD7000E0B101009793004013B000002C002D4249
-:10DD8000199001002E002FF382B00100000000F373
-:10DD900096B00100B293A2A5976C000000008041EC
-:10DDA00095B00100B593A240976C000000000040C0
-:10DDB00083B001002D002040E7B101000000634165
-:10DDC00097C00100D4003E4183E001000000004103
-:10DDD00083C00100BA93A0A5836C0000000000403E
-:10DDE00083B001002C002041E6B10100BF93224026
-:10DDF0001F7C00000004000098DC01000B00004CB8
-:10DE0000E4F50100000080401F8001000B0080004D
-:10DE1000E4F50100B4920040813201000480000367
-:10DE200044C9010000000040F1B1010000000040C1
-:10DE3000F1B101000000604187B0010000800010D6
-:10DE400044C9010000000050F1B101000000004889
-:10DE5000F0B1010000000049F0B101000000000332
-:10DE6000E0B101000000004561B101002000001098
-:10DE700062DD01000000A85D05900000CB9300402A
-:10DE800081B20000B49200408132010000800003A2
-:10DE900044C9010000000041F0B10100000000424F
-:10DEA000F0B1010000000040F1B1010000000043AA
-:10DEB000F0B101000080001044C9010000000050D2
-:10DEC000F1B1010000000048F0B10100000000497C
-:10DED000F0B1010000000003E0B1010000000045C6
-:10DEE00061B101002000001062DD01000000A85DAA
-:10DEF00005900000DA93004081B200002D00004040
-:10DF0000439901002E002FF384B00100010063F358
-:10DF100096C80100E2939F4185500000010000A5D2
-:10DF200085CC01002D00A042E6B101005E012D006C
-:10DF300080B00100E793524381600000020000F2CC
-:10DF400082F40100E8930041809400000000005F2B
-:10DF5000819001000000005E61B1010000000040FE
-:10DF600062B101000000A84095B00000E9939EBB9B
-:10DF700080320000EE93A2401F7C0000B09200406F
-:10DF800081B200000000804195B00100040000153E
-:10DF900042C90100000000542BC00100000000FC39
-:10DFA00024B00100000000FC38B00100000000FEB9
-:10DFB0003CB00100000000FE3AB0010003949C1741
-:10DFC00080320000F893A24A197C00000000804CC7
-:10DFD0001F9001000C00001E98F40100F793A24866
-:10DFE000996C00000000001542B10100F793A28A6D
-:10DFF000F16D00000C00000102CC0100000000FCEB
-:10E000003EB00100010000F428CC0100CC002D0539
-:10E0100048B10100029420F03E6C00000000004B6B
-:10E020001F9001000000004C2BC00100BF002D0517
-:10E0300048B10100000080F33AE0010000002E4BDF
-:10E040001990010007002A0CE4B1010000008004CF
-:10E05000E6B1010018000040439901001C002DF0BA
-:10E0600016B0010020002DF026B001000C002FF2A8
-:10E070000CB001000000A20614EC00000F94224531
-:10E080001F7C00000000A3062AEC0000000000F83E
-:10E0900094B00100000000F096B001000C002D408B
-:10E0A00081B2010000002A4CE1C1010030000010E3
-:10E0B00048C901000A000040F1990100180000055C
-:10E0C000F0C901000000004AF0B101000000004B5F
-:10E0D000E0B101000000004761B10100A00000A410
-:10E0E00062DD01001994A85C1F100000000080058B
-:10E0F00048B1010000002E1048B1010040000001AD
-:10E10000F0CD010040000003F0C901004000000014
-:10E11000E0C9010000002E5049C1010000000006C6
-:10E12000F1B1010000000003F0B10100239462424C
-:10E13000613100002000001062DD01002494A8403D
-:10E14000813200001000001062C901002694A8006E
-:10E15000E03100000000F24081B2010000002E100A
-:10E1600048B1010040000001F0CD01004000000373
-:10E17000F0C9010040000000E0C9010000002E507D
-:10E1800049C1010000000006F1B1010000000003D8
-:10E19000F0B10100309462426131000020000010B3
-:10E1A00062DD01003194A84081320000A00000A48B
-:10E1B00062DD01003394A800E03100000000F2406D
-:10E1C00081B201003080004A44C90100000000060D
-:10E1D000F1B10100C0A83D460DE00100FF7F00A1A4
-:10E1E000F08901000200000996F4010000000046D9
-:10E1F00097E00100000060A897C001003D946342D1
-:10E20000613100003000004A62C901003E94A8401C
-:10E21000813200000000F34081B2010000993F42CA
-:10E2200097F0010042946540813200004A9422F345
-:10E23000740600003F0000F394880100000000070E
-:10E24000E78501000000755561B101000000004A3A
-:10E2500062B101000000A84081B200004794004074
-:10E2600081B200000000F54081B20100000000A86A
-:10E2700036B001005A948241234000004F94A244DA
-:10E280001F7C0000BD9100018C3001002080001037
-:10E2900042C9010055942240E36D00000000004394
-:10E2A00061B101004000001062DD01005294A840FD
-:10E2B00081320000AF8200881CB0000000000041E5
-:10E2C00023B001000000001032B001005A94224136
-:10E2D000197C0000C6920043233001000000004179
-:10E2E00023B001005C94A3150C6C00005D94000643
-:10E2F00004B000000000001504B001005F9420028B
-:10E300001A6C00000000000D04B001001E9500050D
-:10E310004831010089942202145000006394A20243
-:10E320002A5000008994A2451F7C000065942202B7
-:10E330000C5000006E94000216C000006D94225C28
-:10E340001F7C00003080001042C901006D94224003
-:10E35000E36D00000000004761B1010040000010C3
-:10E3600062DD01006994A84081320000AF8200881C
-:10E370001CB000000000000548B101000894005CDA
-:10E380001F00010089942215803200000000005017
-:10E3900033C001008894A2021A5000007A942246E9
-:10E3A0001F7C00007080000342C90100000000468D
-:10E3B0001F8001007A942240E36D000000000042BB
-:10E3C00061B101004000001062DD01007694A840B8
-:10E3D00081320000AF8200881CB000000000000500
-:10E3E00048B101000C80000342C90100100000F098
-:10E3F00010C801002F002F5C1180010000000047B1
-:10E40000E7910100F00700401B9801004C94201593
-:10E410001A6C00007000000348C90100000022507F
-:10E42000F1B1010000000003F0B10100FF07000896
-:10E43000E08D01000000004261B10100A00000A4D5
-:10E4400062DD01008594A8461F1000004C94000571
-:10E4500048B100004C94000210C000008B94A2440C
-:10E460001F7C0000BD9100018C3001000000001BEA
-:10E4700010B100000080001044C901000C000040F1
-:10E48000F199010010000008F0C901000000001619
-:10E49000F0B1010010000003E0C9010000000045D8
-:10E4A00061B101002000001062DD01000000A85CE5
-:10E4B0001F9000009294004081B20000170000D02D
-:10E4C000A2C901000000A24027EC000000000020CB
-:10E4D00000B00100B0920041A341010096940041B8
-:10E4E00027D000001000000796E401000000004B58
-:10E4F000809401000000005461B1010000800040E0
-:10E5000062DD01000000A84081B200009D9400403F
-:10E5100081B20000EF9400402B300100AC002D06CA
-:10E5200016C0010090002DF016C40100A594A0F0C3
-:10E53000164400000000004117C001000E0000A2B8
-:10E5400044C9010000006CF030B00100AC002D4067
-:10E5500087B0010000006CF028B00100AE94224AA0
-:10E56000197C00000030004386C801000030000B19
-:10E5700016C80100AE94A4408132000000000041A2
-:10E5800017C00100CF94220680320000BB94A2067F
-:10E59000146C0000B8942248197C0000B394A04188
-:10E5A000174000000000004117C0010000000041BA
-:10E5B00031C0010090002018E0B101008B002D480F
-:10E5C000198001008B002045E7910100BB940040B9
-:10E5D000879000000800004386980100BB94A04883
-:10E5E000174000000000004117C00100B0000040CB
-:10E5F0004399010010500043FCC9010026950030EA
-:10E600008130010000000040E5B10100C694224ABB
-:10E61000197C0000080000A244C90100CC002DAB09
-:10E62000F9B10100000000AB17C00100C594A0F0D3
-:10E63000164400000000004117C00100CA9464F0B5
-:10E6400082B00000A400004047990100CA94A2F2E1
-:10E650008032000000000041E5B101008C0020186C
-:10E66000E0B1010090000040459901000000600603
-:10E6700030C001000000860C80B20000BC002D46B6
-:10E6800019900100A000A0F2E4B10100B000004028
-:10E690004399010010500043FCC901002695003049
-:10E6A000813001000000A24A19FC0000080000A20D
-:10E6B00044C90100CC002DABF9B10100000000AB52
-:10E6C00017C00100D894A0F01644000000000041DB
-:10E6D00017C001000000E4F082B0010000800010CB
-:10E6E00044C9010000000041F0B101000000000336
-:10E6F000F0B1010000000000F0B1010000000010C6
-:10E7000062B101000000A81BE0B10000DD940040F0
-:10E7100081B2000000F0000C7E8901000000A64CD0
-:10E72000956001000000804A1894010000800010EC
-:10E7300044C9010004002201F03100002000004023
-:10E74000F0C9010000000016F0B101000000004314
-:10E7500061B101002000001062DD01000000A81579
-:10E76000E0B10000E894004081B200001080000396
-:10E7700044C9010000000006F0B1010000000001E2
-:10E78000F0B101000000E85F179001007000004048
-:10E79000439901007A012EFE92B001008B002DF604
-:10E7A00016B00100F5942243E77D0000000000440C
-:10E7B00045C10100040000A62AB0010028006E0631
-:10E7C00082C80100F994224A197C0000000000422E
-:10E7D00045D1010000006E4C83C0010000000041E3
-:10E7E00092C00100FA9443303D0700000000669E8D
-:10E7F00083B0010000001B413DC301000000004147
-:10E8000092C00100060000A244C9010010000049A6
-:10E8100098F4010003952630930400000395904C72
-:10E82000924000000000004193C00100FFFF8049BA
-:10E83000ECA901000080001044C90100040022017D
-:10E84000F031000000000009F0B1010000000018E4
-:10E85000F0B101002000001062DD01000000A815E9
-:10E86000E0B100000895004081B200001595225FDC
-:10E87000817C00001495A240197C0000000000403B
-:10E88000199001000000005461B101001000000760
-:10E8900096E401000000004F979401000000004B37
-:10E8A00062B10100149528408132000011950040AA
-:10E8B00081B200000000A221818400001895A25FAF
-:10E8C000816C00000000A243197C0100000000439D
-:10E8D000199001000000005461B101001000000710
-:10E8E00096E4010000000040969401000000004BF7
-:10E8F00062B101000000A84081B200001B950040F9
-:10E9000081B200000080001944C901000400220205
-:10E91000F03100000000000BF0B101000000001316
-:10E92000F0B101000000004361B1010020000019B6
-:10E9300062DD01000000A808E0B10000239500405E
-:10E9400081B200007C002DF084B00100020000F0D4
-:10E9500098F401002C95204C846C00008800004045
-:10E96000439901002C9520F2846C000000000040C7
-:10E9700085B0010098002D1482B00100000000F065
-:10E9800098B00100A3002D1498D001003195204CBF
-:10E99000846C00000000004C84B00100000000F313
-:10E9A00080E0010034952340846C000000000040AA
-:10E9B00084B00100D0002014E0B10100980025428D
-:10E9C00080B0010000006EF380F001000000A6425C
-:10E9D00082C000003A95A0401640000000000041AF
-:10E9E00017C0010000009FF082EC00009800A041D9
-:10E9F000E0B1010000002E1048B10100A801004064
-:10EA0000F199010000000005F0B1010009000007C4
-:10EA100096E40100000060A797C00100000000100C
-:10EA200062B101000000A84081B2000041950040A1
-:10EA300081B20000A8002D1C8AB0010000009FF0E8
-:10EA40008AD000000000A2408BEC00008A00204029
-:10EA5000E7B10100B400004047990100A4002D4532
-:10EA6000E0D101004E959C1780320000BE002FAB14
-:10EA700083B00100A195001482500100539500401D
-:10EA800081B20000539522F2823000008C000040D9
-:10EA90004399010053959F1CE06D0000BE000040AB
-:10EAA00047990100A195004081320100A800201C77
-:10EAB000E0B101009C002D3081B0010088002DF0F4
-:10EAC00084B0010094002DF286B00100669523F019
-:10EAD000846C00005B952392876C0000C90400A63B
-:10EAE00094B001005D95004081B20000200000A6B6
-:10EAF00094B001006089004A949801005D956840D7
-:10EB0000813200000000004AB0B10100BF002D4278
-:10EB1000B2B1010090002DF380E001006195D44076
-:10EB200081320000000078DA84C001006B95234038
-:10EB3000846C00009400209DE1B101006B950040C1
-:10EB400084B00000BF002D4384C0010090002DF36D
-:10EB500080E001006B952340846C00009400209DB0
-:10EB6000E1B101000000004084B001006F95A2F007
-:10EB7000386C00009C002042E0B101000000005F02
-:10EB80001394010000008046198001009C0020427F
-:10EB9000E0B101003700004043990100040000F398
-:10EBA00080F401000F0000F3828801007595234175
-:10EBB000806C00000000005F139401000000890CCD
-:10EBC00080B20000BC00004043990100A000A0F208
-:10EBD000E4B1010000009F4124EC00007F95A640B5
-:10EBE0008132000000009F4238EC00007F95A64073
-:10EBF00081320000B4000040439901008195A3F0E8
-:10EC00003A6C00000000804081B20100B400004076
-:10EC100043990100859522F03A6C0000B400201D54
-:10EC2000E0B1010080002D5F13940100859523F071
-:10EC30003A6C00008000201DE0B10100C0002012ED
-:10EC4000E0B10100C400A01CE0B10100008000039D
-:10EC500044C9010000000042E0B101001200004080
-:10EC6000879801008E959F41246C000000000041B0
-:10EC70008CB00100000000128CD001008F95004183
-:10EC800024B00000000000408DB00100DF9500407E
-:10EC9000813201000000004561B101004000001018
-:10ECA00062DD01000000A84081B2000091950040A3
-:10ECB00081B20000A29200408132010000000016E3
-:10ECC00080B201000000A708803201009995A2409F
-:10ECD000956C0000B092004081320100008200A6D5
-:10ECE00004B00100000000402DB00100A0982F40AA
-:10ECF00011B001003005004189B0000000009FF80C
-:10ED00003EEC000000009F12E0ED0000C80020ABC8
-:10ED1000E1B10100CC00A01FE0B10100A395A35F09
-:10ED2000E76D000000000041E7C10100A6000040BF
-:10ED300047990100B79522F2863000000300004396
-:10ED400084F401000100004180CC0100B8002D4294
-:10ED500080D001000000624086C00100AB951F43D7
-:10ED600080320000AC95A240876C00000000624138
-:10ED700087B00100B0959F40803200000000004045
-:10ED800085B001000000004084D001000000004276
-:10ED900080B00100000000F288B0010002000044D1
-:10EDA00084F40100B8002E4280D0010000006240CF
-:10EDB00088C00100B6951F4480320000BA95A24079
-:10EDC000896C0000BA95624189B00000030062417D
-:10EDD00086E40100B800004045990100010062414D
-:10EDE00088E40100A4002040E5B10100A200204019
-:10EDF000E7B10100BC002E4387F001000000004491
-:10EE000086C00100C0952043876C0000000080434D
-:10EE1000E5B101004001004380CE01000000A443A1
-:10EE2000E43101004001E2408798010088002D4450
-:10EE300081B0010090002DF22EB001009C002DF059
-:10EE400086B0010090002DF082B00100BA002DF0D4
-:10EE500098B00100CD95A212986C0000BC002DF274
-:10EE600098B00100CD95A0F2986C0000000000174A
-:10EE700082B001009C002041E0B10100B4002D12DD
-:10EE800086D00100D095A341E06D0000D19500F03F
-:10EE900084B000000000004184B0010080002D43D8
-:10EEA00084D00100D4959F428032000000000040D1
-:10EEB00085B00100D695A342146C0000D795000AD6
-:10EEC0000CB00000000000420CB00100D995A01762
-:10EED0000C6C0000000080170CB00100DE95224091
-:10EEE0000D6C00000000A00A0CEC0000010000F016
-:10EEF00082F40100DE95A0410C6C00000000A2F03D
-:10EF0000803201000000804081B00100B4920040D6
-:10EF1000813201000480000344C901000000004662
-:10EF2000F0B1010000000040F1B1010000006041BB
-:10EF3000879401000080001044C9010000000050C7
-:10EF4000F1B1010000000048F0B1010000000049EB
-:10EF5000F0B1010000000003E0B101000000004535
-:10EF600061B101002000001062DD01000000A85D19
-:10EF700005900000EA95004081B2000000002E4B91
-:10EF80001990010005002A0CE4B101000000800482
-:10EF9000E6B10100F095454861310000001000081D
-:10EFA00062DD0100F595284087300000F195224888
-:10EFB000777D000095941D4687B00000F895225F8C
-:10EFC000117C00000400221562310000F695A84073
-:10EFD0008132000000009D4081B20100000000402D
-:10EFE00049B1010000142F4C83B001000000004023
-:10EFF000F1B10100FB95A241835000000000804068
-:10F0000081B201000000004049B101003000004021
-:10F01000A19901000000004093B0010000000040F1
-:10F020001FB001004E9600499630010007000049CC
-:10F0300006E401000039000306C80100000000409A
-:10F0400005B00100200000D0A0C90100000000416F
-:10F0500093C001000296A054936C000000002E059E
-:10F0600097B0010000800040499901000000004075
-:10F07000E1B10100000200A244C901000B96A241C7
-:10F08000975000000000002049B301005496004052
-:10F0900049310100DF9200408132010000B52E08A5
-:10F0A00097B0010000000040F1B101001296A241AA
-:10F0B00097500000180000409798010000972E40DC
-:10F0C00081B2010000000040F1B101001696A2419A
-:10F0D000975000000000004049B1010040182E0583
-:10F0E00097B0010000000040F1B101001A96A24162
-:10F0F0009750000057952040E7B101003094004040
-:10F100004599010064000040E599010056952040B2
-:10F11000E7B10100B8942041E5B10100BA94204163
-:10F12000E5B10100989400404599010002000040BB
-:10F130009798010000000040F1B101002496A2411F
-:10F14000975000000000004097B001000000004010
-:10F150006FB101000000004B68B1010028968541A5
-:10F160009740000080040040813201000000004010
-:10F1700039B301000000004037B301000000004037
-:10F1800035B301000000004033B30100000000402F
-:10F1900041B30100000000403FB30100EE05004014
-:10F1A000259B0100420000404B9B010000000040F5
-:10F1B0002FB30100000000402DB30100000000400B
-:10F1C00047B301000000004043B30100600000406D
-:10F1D0002B9B010000000054EF930100000000553C
-:10F1E000F1930100FFFF00A53C8B01000000002C03
-:10F1F0005BB301000000002C45B30100000000409B
-:10F2000059B301000000004057B301000000004066
-:10F2100027B301000000004053B301004496A25000
-:10F22000FD7F00004496A251FD7F000045960040FE
-:10F230001DB30000504600401D9B010000C000A609
-:10F2400088B30100FF3F00A63AB3010000C0009D53
-:10F250003B9B0100B4050040239B010000000040DF
-:10F260004DB30100080A00A614B301000101008A91
-:10F27000159B0100008000A656B101000000805ED1
-:10F2800057B501001800004B20E401000600004BB8
-:10F2900096E401000043004B96C8010018000010DE
-:10F2A00020DC01000000004B20940100000080578A
-:10F2B0002190010000992E0A97B001000000004043
-:10F2C000F1B101005596A2419750000000030040A3
-:10F2D0009798010000A900404599010000000040F6
-:10F2E000F1B101005996A241975000003000004052
-:10F2F000979801000000005561B101000000004B2B
-:10F3000062B101005D96A840813200005D96A24185
-:10F31000975000000000804081B201000000804052
-:10F3200081B201000400004081B2000004000040EE
-:10F3300081B200000400004081B2000004000040DF
-:10F3400081B200000400004081B2000004000040CF
-:10F3500081B200000400004081B2000004000040BF
-:10F3600081B200000400004081B2000004000040AF
-:10F3700081B200000400004081B20000040000409F
-:10F3800081B200000400004081B20000040000408F
-:10F3900081B200000400004081B20000040000407F
-:10F3A00081B200000400004081B20000040000406F
-:10F3B00081B200000400004081B20000040000405F
-:10F3C00081B200000400004081B20000040000404F
-:10F3D00081B200000400004081B20000040000403F
-:10F3E00081B200000400004081B20000040000402F
-:10F3F00081B200000400004081B20000040000401F
-:10F4000081B200000400004081B20000040000400E
-:10F4100081B200000400004081B2000004000040FE
-:10F4200081B200000400004081B2000004000040EE
-:10F4300081B200000400004081B2000004000040DE
-:10F4400081B200000400004081B2000004000040CE
-:10F4500081B200000400004081B2000004000040BE
-:10F4600081B200000400004081B2000004000040AE
-:10F4700081B200000400004081B20000040000409E
-:10F4800081B200000400004081B20000040000408E
-:10F4900081B200000400004081B20000040000407E
-:10F4A00081B200000400004081B20000040000406E
-:10F4B00081B200000400004081B20000040000405E
-:10F4C00081B200000400004081B20000040000404E
-:10F4D00081B200000400004081B20000040000403E
-:10F4E00081B200000400004081B20000040000402E
-:10F4F00081B200000400004081B20000040000401E
-:10F5000081B200000400004081B20000040000400D
-:10F5100081B200000400004081B2000004000040FD
-:10F5200081B200000400004081B2000004000040ED
-:10F5300081B200000400004081B2000004000040DD
-:10F5400081B200000400004081B2000004000040CD
-:10F5500081B200000400004081B2000004000040BD
-:10F5600081B200000400004081B2000004000040AD
-:10F5700081B200000400004081B20000040000409D
-:10F5800081B200000400004081B20000040000408D
-:10F5900081B200000400004081B20000040000407D
-:10F5A00081B200000400004081B20000040000406D
-:10F5B00081B200000400004081B20000040000405D
-:10F5C00081B200000400004081B20000040000404D
-:10F5D00081B200000400004081B20000040000403D
-:10F5E00081B200000400004081B20000040000402D
-:10F5F00081B200000400004081B20000040000401D
-:10F6000081B200000400004081B20000040000400C
-:10F6100081B200000400004081B2000004000040FC
-:10F6200081B200000400004081B2000004000040EC
-:10F6300081B200000400004081B2000004000040DC
-:10F6400081B200000400004081B2000004000040CC
-:10F6500081B200000400004081B2000004000040BC
-:10F6600081B200000400004081B2000004000040AC
-:10F6700081B200000400004081B20000040000409C
-:10F6800081B200000400004081B20000040000408C
-:10F6900081B200000400004081B20000040000407C
-:10F6A00081B200000400004081B20000040000406C
-:10F6B00081B200000400004081B20000040000405C
-:10F6C00081B200000400004081B20000040000404C
-:10F6D00081B200000400004081B20000040000403C
-:10F6E00081B200000400004081B20000040000402C
-:10F6F00081B200000400004081B20000040000401C
-:10F7000081B200000400004081B20000040000400B
-:10F7100081B200000400004081B2000004000040FB
-:10F7200081B200000400004081B2000004000040EB
-:10F7300081B200000400004081B2000004000040DB
-:10F7400081B200000400004081B2000004000040CB
-:10F7500081B200000400004081B2000004000040BB
-:10F7600081B200000400004081B2000004000040AB
-:10F7700081B200000400004081B20000040000409B
-:10F7800081B200000400004081B20000040000408B
-:10F7900081B200000400004081B20000040000407B
-:10F7A00081B200000400004081B20000040000406B
-:10F7B00081B200000400004081B20000040000405B
-:10F7C00081B200000400004081B20000040000404B
-:10F7D00081B200000400004081B20000040000403B
-:10F7E00081B200000400004081B20000040000402B
-:10F7F00081B200000400004081B20000040000401B
-:10F8000081B200000400004081B20000040000400A
-:10F8100081B200000400004081B2000004000040FA
-:10F8200081B200000400004081B2000004000040EA
-:10F8300081B200000400004081B2000004000040DA
-:10F8400081B200000400004081B2000004000040CA
-:10F8500081B200000400004081B2000004000040BA
-:10F8600081B200000400004081B2000004000040AA
-:10F8700081B200000400004081B20000040000409A
-:10F8800081B200000400004081B20000040000408A
-:10F8900081B200000400004081B20000040000407A
-:10F8A00081B200000400004081B20000040000406A
-:10F8B00081B200000400004081B20000040000405A
-:10F8C00081B200000400004081B20000040000404A
-:10F8D00081B200000400004081B20000040000403A
-:10F8E00081B200000400004081B20000040000402A
-:10F8F00081B200000400004081B20000040000401A
-:10F9000081B200000400004081B200000400004009
-:10F9100081B200000400004081B2000004000040F9
-:10F9200081B200000400004081B2000004000040E9
-:10F9300081B200000400004081B2000004000040D9
-:10F9400081B200000400004081B2000004000040C9
-:10F9500081B200000400004081B2000004000040B9
-:10F9600081B200000400004081B2000004000040A9
-:10F9700081B200000400004081B200000400004099
-:10F9800081B200000400004081B200000400004089
-:10F9900081B200000400004081B200000400004079
-:10F9A00081B200000400004081B200000400004069
-:10F9B00081B200000400004081B200000400004059
-:10F9C00081B200000400004081B200000400004049
-:10F9D00081B200000400004081B200000400004039
-:10F9E00081B200000400004081B200000400004029
-:10F9F00081B200000400004081B200000400004019
-:10FA000081B200000400004081B200000400004008
-:10FA100081B200000400004081B2000004000040F8
-:10FA200081B200000400004081B2000004000040E8
-:10FA300081B200000400004081B2000004000040D8
-:10FA400081B200000400004081B2000004000040C8
-:10FA500081B200000400004081B2000004000040B8
-:10FA600081B200000400004081B2000004000040A8
-:10FA700081B200000400004081B200000400004098
-:10FA800081B200000400004081B200000400004088
-:10FA900081B200000400004081B200000400004078
-:10FAA00081B200000400004081B200000400004068
-:10FAB00081B200000400004081B200000400004058
-:10FAC00081B200000400004081B200000400004048
-:10FAD00081B200000400004081B200000400004038
-:10FAE00081B200000400004081B200000400004028
-:10FAF00081B200000400004081B200000400004018
-:10FB000081B200000400004081B200000400004007
-:10FB100081B200000400004081B2000004000040F7
-:10FB200081B200000400004081B2000004000040E7
-:10FB300081B200000400004081B2000004000040D7
-:10FB400081B200000400004081B2000004000040C7
-:10FB500081B200000400004081B2000004000040B7
-:10FB600081B200000400004081B2000004000040A7
-:10FB700081B200000400004081B200000400004097
-:10FB800081B200000400004081B200000400004087
-:10FB900081B200000400004081B200000400004077
-:10FBA00081B200000400004081B200000400004067
-:10FBB00081B200000400004081B200000400004057
-:10FBC00081B200000400004081B200000400004047
-:10FBD00081B200000400004081B200000400004037
-:10FBE00081B200000400004081B200000400004027
-:10FBF00081B200000400004081B200000400004017
-:10FC000081B200000400004081B200000400004006
-:10FC100081B200000400004081B2000004000040F6
-:10FC200081B200000400004081B2000004000040E6
-:10FC300081B200000400004081B2000004000040D6
-:10FC400081B200000400004081B2000004000040C6
-:10FC500081B200000400004081B2000004000040B6
-:10FC600081B200000400004081B2000004000040A6
-:10FC700081B200000400004081B200000400004096
-:10FC800081B200000400004081B200000400004086
-:10FC900081B200000400004081B200000400004076
-:10FCA00081B200000400004081B200000400004066
-:10FCB00081B200000400004081B200000400004056
-:10FCC00081B200000400004081B200000400004046
-:10FCD00081B200000400004081B200000400004036
-:10FCE00081B200000400004081B200000400004026
-:10FCF00081B200000400004081B200000400004016
-:10FD000081B200000400004081B200000400004005
-:10FD100081B200000400004081B2000004000040F5
-:10FD200081B200000400004081B2000004000040E5
-:10FD300081B200000400004081B2000004000040D5
-:10FD400081B200000400004081B2000004000040C5
-:10FD500081B200000400004081B2000004000040B5
-:10FD600081B200000400004081B2000004000040A5
-:10FD700081B200000400004081B200000400004095
-:10FD800081B200000400004081B200000400004085
-:10FD900081B200000400004081B200000400004075
-:10FDA00081B200000400004081B200000400004065
-:10FDB00081B200000400004081B200000400004055
-:10FDC00081B200000400004081B200000400004045
-:10FDD00081B200000400004081B200000400004035
-:10FDE00081B200000400004081B200000400004025
-:10FDF00081B200000400004081B200000400004015
-:10FE000081B200000400004081B200000400004004
-:10FE100081B200000400004081B2000004000040F4
-:10FE200081B200000400004081B2000004000040E4
-:10FE300081B200000400004081B2000004000040D4
-:10FE400081B200000400004081B2000004000040C4
-:10FE500081B200000400004081B2000004000040B4
-:10FE600081B200000400004081B2000004000040A4
-:10FE700081B200000400004081B200000400004094
-:10FE800081B200000400004081B200000400004084
-:10FE900081B200000400004081B200000400004074
-:10FEA00081B200000400004081B200000400004064
-:10FEB00081B200000400004081B200000400004054
-:10FEC00081B200000400004081B200000400004044
-:10FED00081B200000400004081B200000400004034
-:10FEE00081B200000400004081B200000400004024
-:10FEF00081B200000400004081B200000400004014
-:10FF000081B200000400004081B200000400004003
-:10FF100081B200000400004081B2000004000040F3
-:10FF200081B200000400004081B2000004000040E3
-:10FF300081B200000400004081B2000004000040D3
-:10FF400081B200000400004081B2000004000040C3
-:10FF500081B200000400004081B2000004000040B3
-:10FF600081B200000400004081B2000004000040A3
-:10FF700081B200000400004081B200000400004093
-:10FF800081B200000400004081B200000400004083
-:10FF900081B200000400004081B200000400004073
-:10FFA00081B200000400004081B200000400004063
-:10FFB00081B200000400004081B200000400004053
-:10FFC00081B200000400004081B200000400004043
-:10FFD00081B200000400004081B200000400004033
-:10FFE00081B200000400004081B200000400004023
-:10FFF00081B200000400004081B200000400004013
-:020000021000EC
-:1000000081B200000400004081B200000400004002
-:1000100081B200000400004081B2000004000040F2
-:1000200081B200000400004081B2000004000040E2
-:1000300081B200000400004081B2000004000040D2
-:1000400081B200000400004081B2000004000040C2
-:1000500081B200000400004081B2000004000040B2
-:1000600081B200000400004081B2000004000040A2
-:1000700081B200000400004081B200000400004092
-:1000800081B200000400004081B200000400004082
-:1000900081B200000400004081B200000400004072
-:1000A00081B200000400004081B200000400004062
-:1000B00081B200000400004081B200000400004052
-:1000C00081B200000400004081B200000400004042
-:1000D00081B200000400004081B200000400004032
-:1000E00081B200000400004081B200000400004022
-:1000F00081B200000400004081B200000400004012
-:1001000081B200000400004081B200000400004001
-:1001100081B200000400004081B2000004000040F1
-:1001200081B200000400004081B2000004000040E1
-:1001300081B200000400004081B2000004000040D1
-:1001400081B200000400004081B2000004000040C1
-:1001500081B200000400004081B2000004000040B1
-:1001600081B200000400004081B2000004000040A1
-:1001700081B200000400004081B200000400004091
-:1001800081B200000400004081B200000400004081
-:1001900081B200000400004081B200000400004071
-:1001A00081B200000400004081B200000400004061
-:1001B00081B200000400004081B200000400004051
-:1001C00081B200000400004081B200000400004041
-:1001D00081B200000400004081B200000400004031
-:1001E00081B200000400004081B200000400004021
-:1001F00081B200000400004081B200000400004011
-:1002000081B200000400004081B200000400004000
-:1002100081B200000400004081B2000004000040F0
-:1002200081B200000400004081B2000004000040E0
-:1002300081B200000400004081B2000004000040D0
-:1002400081B200000400004081B2000004000040C0
-:1002500081B200000400004081B2000004000040B0
-:1002600081B200000400004081B2000004000040A0
-:1002700081B200000400004081B200000400004090
-:1002800081B200000400004081B200000400004080
-:1002900081B200000400004081B200000400004070
-:1002A00081B200000400004081B200000400004060
-:1002B00081B200000400004081B200000400004050
-:1002C00081B200000400004081B200000400004040
-:1002D00081B200000400004081B200000400004030
-:1002E00081B200000400004081B200000400004020
-:1002F00081B200000400004081B200000400004010
-:1003000081B200000400004081B2000004000040FF
-:1003100081B200000400004081B2000004000040EF
-:1003200081B200000400004081B2000004000040DF
-:1003300081B200000400004081B2000004000040CF
-:1003400081B200000400004081B2000004000040BF
-:1003500081B200000400004081B2000004000040AF
-:1003600081B200000400004081B20000040000409F
-:1003700081B200000400004081B20000040000408F
-:1003800081B200000400004081B20000040000407F
-:1003900081B200000400004081B20000040000406F
-:1003A00081B200000400004081B20000040000405F
-:1003B00081B200000400004081B20000040000404F
-:1003C00081B200000400004081B20000040000403F
-:1003D00081B200000400004081B20000040000402F
-:1003E00081B200000400004081B20000040000401F
-:1003F00081B200000400004081B20000040000400F
-:1004000081B200000400004081B2000004000040FE
-:1004100081B200000400004081B2000004000040EE
-:1004200081B200000400004081B2000004000040DE
-:1004300081B200000400004081B2000004000040CE
-:1004400081B200000400004081B2000004000040BE
-:1004500081B200000400004081B2000004000040AE
-:1004600081B200000400004081B20000040000409E
-:1004700081B200000400004081B20000040000408E
-:1004800081B200000400004081B20000040000407E
-:1004900081B200000400004081B20000040000406E
-:1004A00081B200000400004081B20000040000405E
-:1004B00081B200000400004081B20000040000404E
-:1004C00081B200000400004081B20000040000403E
-:1004D00081B200000400004081B20000040000402E
-:1004E00081B200000400004081B20000040000401E
-:1004F00081B200000400004081B20000040000400E
-:1005000081B200000400004081B2000004000040FD
-:1005100081B200000400004081B2000004000040ED
-:1005200081B200000400004081B2000004000040DD
-:1005300081B200000400004081B2000004000040CD
-:1005400081B200000400004081B2000004000040BD
-:1005500081B200000400004081B2000004000040AD
-:1005600081B200000400004081B20000040000409D
-:1005700081B200000400004081B20000040000408D
-:1005800081B200000400004081B20000040000407D
-:1005900081B200000400004081B20000040000406D
-:1005A00081B200000400004081B20000040000405D
-:1005B00081B200000400004081B20000040000404D
-:1005C00081B200000400004081B20000040000403D
-:1005D00081B200000400004081B20000040000402D
-:1005E00081B200000400004081B20000040000401D
-:1005F00081B200000400004081B20000040000400D
-:1006000081B200000400004081B2000004000040FC
-:1006100081B200000400004081B2000004000040EC
-:1006200081B200000400004081B2000004000040DC
-:1006300081B200000400004081B2000004000040CC
-:1006400081B200000400004081B2000004000040BC
-:1006500081B200000400004081B2000004000040AC
-:1006600081B200000400004081B20000040000409C
-:1006700081B200000400004081B20000040000408C
-:1006800081B200000400004081B20000040000407C
-:1006900081B200000400004081B20000040000406C
-:1006A00081B200000400004081B20000040000405C
-:1006B00081B200000400004081B20000040000404C
-:1006C00081B200000400004081B20000040000403C
-:1006D00081B200000400004081B20000040000402C
-:1006E00081B200000400004081B20000040000401C
-:1006F00081B200000400004081B20000040000400C
-:1007000081B200000400004081B2000004000040FB
-:1007100081B200000400004081B2000004000040EB
-:1007200081B200000400004081B2000004000040DB
-:1007300081B200000400004081B2000004000040CB
-:1007400081B200000400004081B2000004000040BB
-:1007500081B200000400004081B2000004000040AB
-:1007600081B200000400004081B20000040000409B
-:1007700081B200000400004081B20000040000408B
-:1007800081B200000400004081B20000040000407B
-:1007900081B200000400004081B20000040000406B
-:1007A00081B200000400004081B20000040000405B
-:1007B00081B200000400004081B20000040000404B
-:1007C00081B200000400004081B20000040000403B
-:1007D00081B200000400004081B20000040000402B
-:1007E00081B200000400004081B20000040000401B
-:1007F00081B200000400004081B20000040000400B
-:1008000081B200000400004081B2000004000040FA
-:1008100081B200000400004081B2000004000040EA
-:1008200081B200000400004081B2000004000040DA
-:1008300081B200000400004081B2000004000040CA
-:1008400081B200000400004081B2000004000040BA
-:1008500081B200000400004081B2000004000040AA
-:1008600081B200000400004081B20000040000409A
-:1008700081B200000400004081B20000040000408A
-:1008800081B200000400004081B20000040000407A
-:1008900081B200000400004081B20000040000406A
-:1008A00081B200000400004081B20000040000405A
-:1008B00081B200000400004081B20000040000404A
-:1008C00081B200000400004081B20000040000403A
-:1008D00081B200000400004081B20000040000402A
-:1008E00081B200000400004081B20000040000401A
-:1008F00081B200000400004081B20000040000400A
-:1009000081B200000400004081B2000004000040F9
-:1009100081B200000400004081B2000004000040E9
-:1009200081B200000400004081B2000004000040D9
-:1009300081B200000400004081B2000004000040C9
-:1009400081B200000400004081B2000004000040B9
-:1009500081B200000400004081B2000004000040A9
-:1009600081B200000400004081B200000400004099
-:1009700081B200000400004081B200000400004089
-:1009800081B200000400004081B200000400004079
-:1009900081B200000400004081B200000400004069
-:1009A00081B200000400004081B200000400004059
-:1009B00081B200000400004081B200000400004049
-:1009C00081B200000400004081B200000400004039
-:1009D00081B200000400004081B200000400004029
-:1009E00081B200000400004081B200000400004019
-:1009F00081B200000400004081B200000400004009
-:100A000081B200000400004081B2000004000040F8
-:100A100081B200000400004081B2000004000040E8
-:100A200081B200000400004081B2000004000040D8
-:100A300081B200000400004081B2000004000040C8
-:100A400081B200000400004081B2000004000040B8
-:100A500081B200000400004081B2000004000040A8
-:100A600081B200000400004081B200000400004098
-:100A700081B200000400004081B200000400004088
-:100A800081B200000400004081B200000400004078
-:100A900081B200000400004081B200000400004068
-:100AA00081B200000400004081B200000400004058
-:100AB00081B200000400004081B200000400004048
-:100AC00081B200000400004081B200000400004038
-:100AD00081B200000400004081B200000400004028
-:100AE00081B200000400004081B200000400004018
-:100AF00081B200000400004081B200000400004008
-:100B000081B200000400004081B2000004000040F7
-:100B100081B200000400004081B2000004000040E7
-:100B200081B200000400004081B2000004000040D7
-:100B300081B200000400004081B2000004000040C7
-:100B400081B200000400004081B2000004000040B7
-:100B500081B200000400004081B2000004000040A7
-:100B600081B200000400004081B200000400004097
-:100B700081B200000400004081B200000400004087
-:100B800081B200000400004081B200000400004077
-:100B900081B200000400004081B200000400004067
-:100BA00081B200000400004081B200000400004057
-:100BB00081B200000400004081B200000400004047
-:100BC00081B200000400004081B200000400004037
-:100BD00081B200000400004081B200000400004027
-:100BE00081B200000400004081B200000400004017
-:100BF00081B200000400004081B200000400004007
-:100C000081B200000400004081B2000004000040F6
-:100C100081B200000400004081B2000004000040E6
-:100C200081B200000400004081B2000004000040D6
-:100C300081B200000400004081B2000004000040C6
-:100C400081B200000400004081B2000004000040B6
-:100C500081B200000400004081B2000004000040A6
-:100C600081B200000400004081B200000400004096
-:100C700081B200000400004081B200000400004086
-:100C800081B200000400004081B200000400004076
-:100C900081B200000400004081B200000400004066
-:100CA00081B200000400004081B200000400004056
-:100CB00081B200000400004081B200000400004046
-:100CC00081B200000400004081B200000400004036
-:100CD00081B200000400004081B200000400004026
-:100CE00081B200000400004081B200000400004016
-:100CF00081B200000400004081B200000400004006
-:100D000081B200000400004081B2000004000040F5
-:100D100081B200000400004081B2000004000040E5
-:100D200081B200000400004081B2000004000040D5
-:100D300081B200000400004081B2000004000040C5
-:100D400081B200000400004081B2000004000040B5
-:100D500081B200000400004081B2000004000040A5
-:100D600081B200000400004081B200000400004095
-:100D700081B200000400004081B200000400004085
-:100D800081B200000400004081B200000400004075
-:100D900081B200000400004081B200000400004065
-:100DA00081B200000400004081B200000400004055
-:100DB00081B200000400004081B200000400004045
-:100DC00081B200000400004081B200000400004035
-:100DD00081B200000400004081B200000400004025
-:100DE00081B200000400004081B200000400004015
-:100DF00081B200000400004081B200000400004005
-:100E000081B200000400004081B2000004000040F4
-:100E100081B200000400004081B2000004000040E4
-:100E200081B200000400004081B2000004000040D4
-:100E300081B200000400004081B2000004000040C4
-:100E400081B200000400004081B2000004000040B4
-:100E500081B200000400004081B2000004000040A4
-:100E600081B200000400004081B200000400004094
-:100E700081B200000400004081B200000400004084
-:100E800081B200000400004081B200000400004074
-:100E900081B200000400004081B200000400004064
-:100EA00081B200000400004081B200000400004054
-:100EB00081B200000400004081B200000400004044
-:100EC00081B200000400004081B200000400004034
-:100ED00081B200000400004081B200000400004024
-:100EE00081B200000400004081B200000400004014
-:100EF00081B200000400004081B200000400004004
-:100F000081B200000400004081B2000004000040F3
-:100F100081B200000400004081B2000004000040E3
-:100F200081B200000400004081B2000004000040D3
-:100F300081B200000400004081B2000004000040C3
-:100F400081B200000400004081B2000004000040B3
-:100F500081B200000400004081B2000004000040A3
-:100F600081B200000400004081B200000400004093
-:100F700081B200000400004081B200000400004083
-:100F800081B200000400004081B200000400004073
-:100F900081B200000400004081B200000400004063
-:100FA00081B200000400004081B200000400004053
-:100FB00081B200000400004081B200000400004043
-:100FC00081B200000400004081B200000400004033
-:100FD00081B200000400004081B200000400004023
-:100FE00081B200000400004081B200000400004013
-:100FF00081B200000400004081B200000400004003
-:1010000081B200000400004081B2000004000040F2
-:1010100081B200000400004081B2000004000040E2
-:1010200081B200000400004081B2000004000040D2
-:1010300081B200000400004081B2000004000040C2
-:1010400081B200000400004081B2000004000040B2
-:1010500081B200000400004081B2000004000040A2
-:1010600081B200000400004081B200000400004092
-:1010700081B200000400004081B200000400004082
-:1010800081B200000400004081B200000400004072
-:1010900081B200000400004081B200000400004062
-:1010A00081B200000400004081B200000400004052
-:1010B00081B200000400004081B200000400004042
-:1010C00081B200000400004081B200000400004032
-:1010D00081B200000400004081B200000400004022
-:1010E00081B200000400004081B200000400004012
-:1010F00081B200000400004081B200000400004002
-:1011000081B200000400004081B2000004000040F1
-:1011100081B200000400004081B2000004000040E1
-:1011200081B200000400004081B2000004000040D1
-:1011300081B200000400004081B2000004000040C1
-:1011400081B200000400004081B2000004000040B1
-:1011500081B200000400004081B2000004000040A1
-:1011600081B200000400004081B200000400004091
-:1011700081B200000400004081B200000400004081
-:1011800081B200000400004081B200000400004071
-:1011900081B200000400004081B200000400004061
-:1011A00081B200000400004081B200000400004051
-:1011B00081B200000400004081B200000400004041
-:1011C00081B200000400004081B200000400004031
-:1011D00081B200000400004081B200000400004021
-:1011E00081B200000400004081B200000400004011
-:1011F00081B200000400004081B200000400004001
-:1012000081B200000400004081B2000004000040F0
-:1012100081B200000400004081B2000004000040E0
-:1012200081B200000400004081B2000004000040D0
-:1012300081B200000400004081B2000004000040C0
-:1012400081B200000400004081B2000004000040B0
-:1012500081B200000400004081B2000004000040A0
-:1012600081B200000400004081B200000400004090
-:1012700081B200000400004081B200000400004080
-:1012800081B200000400004081B200000400004070
-:1012900081B200000400004081B200000400004060
-:1012A00081B200000400004081B200000400004050
-:1012B00081B200000400004081B200000400004040
-:1012C00081B200000400004081B200000400004030
-:1012D00081B200000400004081B200000400004020
-:1012E00081B200000400004081B200000400004010
-:1012F00081B200000400004081B200000400004000
-:1013000081B200000400004081B2000004000040EF
-:1013100081B200000400004081B2000004000040DF
-:1013200081B200000400004081B2000004000040CF
-:1013300081B200000400004081B2000004000040BF
-:1013400081B200000400004081B2000004000040AF
-:1013500081B200000400004081B20000040000409F
-:1013600081B200000400004081B20000040000408F
-:1013700081B200000400004081B20000040000407F
-:1013800081B200000400004081B20000040000406F
-:1013900081B200000400004081B20000040000405F
-:1013A00081B200000400004081B20000040000404F
-:1013B00081B200000400004081B20000040000403F
-:1013C00081B200000400004081B20000040000402F
-:1013D00081B200000400004081B20000040000401F
-:1013E00081B200000400004081B20000040000400F
-:1013F00081B200000400004081B2000004000040FF
-:1014000081B200000400004081B2000004000040EE
-:1014100081B200000400004081B2000004000040DE
-:1014200081B200000400004081B2000004000040CE
-:1014300081B200000400004081B2000004000040BE
-:1014400081B200000400004081B2000004000040AE
-:1014500081B200000400004081B20000040000409E
-:1014600081B200000400004081B20000040000408E
-:1014700081B200000400004081B20000040000407E
-:1014800081B200000400004081B20000040000406E
-:1014900081B200000400004081B20000040000405E
-:1014A00081B200000400004081B20000040000404E
-:1014B00081B200000400004081B20000040000403E
-:1014C00081B200000400004081B20000040000402E
-:1014D00081B200000400004081B20000040000401E
-:1014E00081B200000400004081B20000040000400E
-:1014F00081B200000400004081B2000004000040FE
-:1015000081B200000400004081B2000004000040ED
-:1015100081B200000400004081B2000004000040DD
-:1015200081B200000400004081B2000004000040CD
-:1015300081B200000400004081B2000004000040BD
-:1015400081B200000400004081B2000004000040AD
-:1015500081B200000400004081B20000040000409D
-:1015600081B200000400004081B20000040000408D
-:1015700081B200000400004081B20000040000407D
-:1015800081B200000400004081B20000040000406D
-:1015900081B200000400004081B20000040000405D
-:1015A00081B200000400004081B20000040000404D
-:1015B00081B200000400004081B20000040000403D
-:1015C00081B200000400004081B20000040000402D
-:1015D00081B200000400004081B20000040000401D
-:1015E00081B200000400004081B20000040000400D
-:1015F00081B200000400004081B2000004000040FD
-:1016000081B200000400004081B2000004000040EC
-:1016100081B200000400004081B2000004000040DC
-:1016200081B200000400004081B2000004000040CC
-:1016300081B200000400004081B2000004000040BC
-:1016400081B200000400004081B2000004000040AC
-:1016500081B200000400004081B20000040000409C
-:1016600081B200000400004081B20000040000408C
-:1016700081B200000400004081B20000040000407C
-:1016800081B200000400004081B20000040000406C
-:1016900081B200000400004081B20000040000405C
-:1016A00081B200000400004081B20000040000404C
-:1016B00081B200000400004081B20000040000403C
-:1016C00081B200000400004081B20000040000402C
-:1016D00081B200000400004081B20000040000401C
-:1016E00081B200000400004081B20000040000400C
-:1016F00081B200000400004081B2000004000040FC
-:1017000081B200000400004081B2000004000040EB
-:1017100081B200000400004081B2000004000040DB
-:1017200081B200000400004081B2000004000040CB
-:1017300081B200000400004081B2000004000040BB
-:1017400081B200000400004081B2000004000040AB
-:1017500081B200000400004081B20000040000409B
-:1017600081B200000400004081B20000040000408B
-:1017700081B200000400004081B20000040000407B
-:1017800081B200000400004081B20000040000406B
-:1017900081B200000400004081B20000040000405B
-:1017A00081B200000400004081B20000040000404B
-:1017B00081B200000400004081B20000040000403B
-:1017C00081B200000400004081B20000040000402B
-:1017D00081B200000400004081B20000040000401B
-:1017E00081B200000400004081B20000040000400B
-:1017F00081B200000400004081B2000004000040FB
-:1018000081B200000400004081B2000004000040EA
-:1018100081B200000400004081B2000004000040DA
-:1018200081B200000400004081B2000004000040CA
-:1018300081B200000400004081B2000004000040BA
-:1018400081B200000400004081B2000004000040AA
-:1018500081B200000400004081B20000040000409A
-:1018600081B200000400004081B20000040000408A
-:1018700081B200000400004081B20000040000407A
-:1018800081B200000400004081B20000040000406A
-:1018900081B200000400004081B20000040000405A
-:1018A00081B200000400004081B20000040000404A
-:1018B00081B200000400004081B20000040000403A
-:1018C00081B200000400004081B20000040000402A
-:1018D00081B200000400004081B20000040000401A
-:1018E00081B200000400004081B20000040000400A
-:1018F00081B200000400004081B2000004000040FA
-:1019000081B200000400004081B2000004000040E9
-:1019100081B200000400004081B2000004000040D9
-:1019200081B200000400004081B2000004000040C9
-:1019300081B200000400004081B2000004000040B9
-:1019400081B200000400004081B2000004000040A9
-:1019500081B200000400004081B200000400004099
-:1019600081B200000400004081B200000400004089
-:1019700081B200000400004081B200000400004079
-:1019800081B200000400004081B200000400004069
-:1019900081B200000400004081B200000400004059
-:1019A00081B200000400004081B200000400004049
-:1019B00081B200000400004081B200000400004039
-:1019C00081B200000400004081B200000400004029
-:1019D00081B200000400004081B200000400004019
-:1019E00081B200000400004081B200000400004009
-:1019F00081B200000400004081B2000004000040F9
-:101A000081B200000400004081B2000004000040E8
-:101A100081B200000400004081B2000004000040D8
-:101A200081B200000400004081B2000004000040C8
-:101A300081B200000400004081B2000004000040B8
-:101A400081B200000400004081B2000004000040A8
-:101A500081B200000400004081B200000400004098
-:101A600081B200000400004081B200000400004088
-:101A700081B200000400004081B200000400004078
-:101A800081B200000400004081B200000400004068
-:101A900081B200000400004081B200000400004058
-:101AA00081B200000400004081B200000400004048
-:101AB00081B200000400004081B200000400004038
-:101AC00081B200000400004081B200000400004028
-:101AD00081B200000400004081B200000400004018
-:101AE00081B200000400004081B200000400004008
-:101AF00081B200000400004081B2000004000040F8
-:101B000081B200000400004081B2000004000040E7
-:101B100081B200000400004081B2000004000040D7
-:101B200081B200000400004081B2000004000040C7
-:101B300081B200000400004081B2000004000040B7
-:101B400081B200000400004081B2000004000040A7
-:101B500081B200000400004081B200000400004097
-:101B600081B200000400004081B200000400004087
-:101B700081B200000400004081B200000400004077
-:101B800081B200000400004081B200000400004067
-:101B900081B200000400004081B200000400004057
-:101BA00081B200000400004081B200000400004047
-:101BB00081B200000400004081B200000400004037
-:101BC00081B200000400004081B200000400004027
-:101BD00081B200000400004081B200000400004017
-:101BE00081B200000400004081B200000400004007
-:101BF00081B200000400004081B2000004000040F7
-:101C000081B200000400004081B2000004000040E6
-:101C100081B200000400004081B2000004000040D6
-:101C200081B200000400004081B2000004000040C6
-:101C300081B200000400004081B2000004000040B6
-:101C400081B200000400004081B2000004000040A6
-:101C500081B200000400004081B200000400004096
-:101C600081B200000400004081B200000400004086
-:101C700081B200000400004081B200000400004076
-:101C800081B200000400004081B200000400004066
-:101C900081B200000400004081B200000400004056
-:101CA00081B200000400004081B200000400004046
-:101CB00081B200000400004081B200000400004036
-:101CC00081B200000400004081B200000400004026
-:101CD00081B200000400004081B200000400004016
-:101CE00081B200000400004081B200000400004006
-:101CF00081B200000400004081B2000004000040F6
-:101D000081B200000400004081B2000004000040E5
-:101D100081B200000400004081B2000004000040D5
-:101D200081B200000400004081B2000004000040C5
-:101D300081B200000400004081B2000004000040B5
-:101D400081B200000400004081B2000004000040A5
-:101D500081B200000400004081B200000400004095
-:101D600081B200000400004081B200000400004085
-:101D700081B200000400004081B200000400004075
-:101D800081B200000400004081B200000400004065
-:101D900081B200000400004081B200000400004055
-:101DA00081B200000400004081B200000400004045
-:101DB00081B200000400004081B200000400004035
-:101DC00081B200000400004081B200000400004025
-:101DD00081B200000400004081B200000400004015
-:101DE00081B200000400004081B200000400004005
-:101DF00081B200000400004081B2000004000040F5
-:101E000081B200000400004081B2000004000040E4
-:101E100081B200000400004081B2000004000040D4
-:101E200081B200000400004081B2000004000040C4
-:101E300081B200000400004081B2000004000040B4
-:101E400081B200000400004081B2000004000040A4
-:101E500081B200000400004081B200000400004094
-:101E600081B200000400004081B200000400004084
-:101E700081B200000400004081B200000400004074
-:101E800081B200000400004081B200000400004064
-:101E900081B200000400004081B200000400004054
-:101EA00081B200000400004081B200000400004044
-:101EB00081B200000400004081B200000400004034
-:101EC00081B200000400004081B200000400004024
-:101ED00081B200000400004081B200000400004014
-:101EE00081B200000400004081B200000400004004
-:101EF00081B200000400004081B2000004000040F4
-:101F000081B200000400004081B2000004000040E3
-:101F100081B200000400004081B2000004000040D3
-:101F200081B200000400004081B2000004000040C3
-:101F300081B200000400004081B2000004000040B3
-:101F400081B200000400004081B2000004000040A3
-:101F500081B200000400004081B200000400004093
-:101F600081B200000400004081B200000400004083
-:101F700081B200000400004081B200000400004073
-:101F800081B200000400004081B200000400004063
-:101F900081B200000400004081B200000400004053
-:101FA00081B200000400004081B200000400004043
-:101FB00081B200000400004081B200000400004033
-:101FC00081B200000400004081B200000400004023
-:101FD00081B200000400004081B200000400004013
-:101FE00081B200000400004081B200000400004003
-:101FF00081B200000400004081B2000004000040F3
-:1020000081B200000400004081B2000004000040E2
-:1020100081B200000400004081B2000004000040D2
-:1020200081B200000400004081B2000004000040C2
-:1020300081B200000400004081B2000004000040B2
-:1020400081B200000400004081B2000004000040A2
-:1020500081B200000400004081B200000400004092
-:1020600081B200000400004081B200000400004082
-:1020700081B200000400004081B200000400004072
-:1020800081B200000400004081B200000400004062
-:1020900081B200000400004081B200000400004052
-:1020A00081B200000400004081B200000400004042
-:1020B00081B200000400004081B200000400004032
-:1020C00081B200000400004081B200000400004022
-:1020D00081B200000400004081B200000400004012
-:1020E00081B200000400004081B200000400004002
-:1020F00081B200000400004081B2000004000040F2
-:1021000081B200000400004081B2000004000040E1
-:1021100081B200000400004081B2000004000040D1
-:1021200081B200000400004081B2000004000040C1
-:1021300081B200000400004081B2000004000040B1
-:1021400081B200000400004081B2000004000040A1
-:1021500081B200000400004081B200000400004091
-:1021600081B200000400004081B200000400004081
-:1021700081B200000400004081B200000400004071
-:1021800081B200000400004081B200000400004061
-:1021900081B200000400004081B200000400004051
-:1021A00081B200000400004081B200000400004041
-:1021B00081B200000400004081B200000400004031
-:1021C00081B200000400004081B200000400004021
-:1021D00081B200000400004081B200000400004011
-:1021E00081B200000400004081B200000400004001
-:1021F00081B200000400004081B2000004000040F1
-:1022000081B200000400004081B2000004000040E0
-:1022100081B200000400004081B2000004000040D0
-:1022200081B200000400004081B2000004000040C0
-:1022300081B200000400004081B2000004000040B0
-:1022400081B200000400004081B2000004000040A0
-:1022500081B200000400004081B200000400004090
-:1022600081B200000400004081B200000400004080
-:1022700081B200000400004081B200000400004070
-:1022800081B200000400004081B200000400004060
-:1022900081B200000400004081B200000400004050
-:1022A00081B200000400004081B200000400004040
-:1022B00081B200000400004081B200000400004030
-:1022C00081B200000400004081B200000400004020
-:1022D00081B200000400004081B200000400004010
-:1022E00081B200000400004081B200000400004000
-:1022F00081B200000400004081B2000004000040F0
-:1023000081B200000400004081B2000004000040DF
-:1023100081B200000400004081B2000004000040CF
-:1023200081B200000400004081B2000004000040BF
-:1023300081B200000400004081B2000004000040AF
-:1023400081B200000400004081B20000040000409F
-:1023500081B200000400004081B20000040000408F
-:1023600081B200000400004081B20000040000407F
-:1023700081B200000400004081B20000040000406F
-:1023800081B200000400004081B20000040000405F
-:1023900081B200000400004081B20000040000404F
-:1023A00081B200000400004081B20000040000403F
-:1023B00081B200000400004081B20000040000402F
-:1023C00081B200000400004081B20000040000401F
-:1023D00081B200000400004081B20000040000400F
-:1023E00081B200000400004081B2000004000040FF
-:1023F00081B200000400004081B2000004000040EF
-:1024000081B200000400004081B2000004000040DE
-:1024100081B200000400004081B2000004000040CE
-:1024200081B200000400004081B2000004000040BE
-:1024300081B200000400004081B2000004000040AE
-:1024400081B200000400004081B20000040000409E
-:1024500081B200000400004081B20000040000408E
-:1024600081B200000400004081B20000040000407E
-:1024700081B200000400004081B20000040000406E
-:1024800081B200000400004081B20000040000405E
-:1024900081B200000400004081B20000040000404E
-:1024A00081B200000400004081B20000040000403E
-:1024B00081B200000400004081B20000040000402E
-:1024C00081B200000400004081B20000040000401E
-:1024D00081B200000400004081B20000040000400E
-:1024E00081B200000400004081B2000004000040FE
-:1024F00081B200000400004081B2000004000040EE
-:1025000081B200000400004081B2000004000040DD
-:1025100081B200000400004081B2000004000040CD
-:1025200081B200000400004081B2000004000040BD
-:1025300081B200000400004081B2000004000040AD
-:1025400081B200000400004081B20000040000409D
-:1025500081B200000400004081B20000040000408D
-:1025600081B200000400004081B20000040000407D
-:1025700081B200000400004081B20000040000406D
-:1025800081B200000400004081B20000040000405D
-:1025900081B200000400004081B20000040000404D
-:1025A00081B200000400004081B20000040000403D
-:1025B00081B200000400004081B20000040000402D
-:1025C00081B200000400004081B20000040000401D
-:1025D00081B200000400004081B20000040000400D
-:1025E00081B200000400004081B2000004000040FD
-:1025F00081B200000400004081B2000004000040ED
-:1026000081B200000400004081B2000004000040DC
-:1026100081B200000400004081B2000004000040CC
-:1026200081B200000400004081B2000004000040BC
-:1026300081B200000400004081B2000004000040AC
-:1026400081B200000400004081B20000040000409C
-:1026500081B200000400004081B20000040000408C
-:1026600081B200000400004081B20000040000407C
-:1026700081B200000400004081B20000040000406C
-:1026800081B200000400004081B20000040000405C
-:1026900081B200000400004081B20000040000404C
-:1026A00081B200000400004081B20000040000403C
-:1026B00081B200000400004081B20000040000402C
-:1026C00081B200000400004081B20000040000401C
-:1026D00081B200000400004081B20000040000400C
-:1026E00081B200000400004081B2000004000040FC
-:1026F00081B200000400004081B2000004000040EC
-:1027000081B200000400004081B2000004000040DB
-:1027100081B200000400004081B2000004000040CB
-:1027200081B200000400004081B2000004000040BB
-:1027300081B200000400004081B2000004000040AB
-:1027400081B200000400004081B20000040000409B
-:1027500081B200000400004081B20000040000408B
-:1027600081B200000400004081B20000040000407B
-:1027700081B200000400004081B20000040000406B
-:1027800081B200000400004081B20000040000405B
-:1027900081B200000400004081B20000040000404B
-:1027A00081B200000400004081B20000040000403B
-:1027B00081B200000400004081B20000040000402B
-:1027C00081B200000400004081B20000040000401B
-:1027D00081B200000400004081B20000040000400B
-:1027E00081B200000400004081B2000004000040FB
-:1027F00081B200000400004081B2000004000040EB
-:1028000081B200000400004081B2000004000040DA
-:1028100081B200000400004081B2000004000040CA
-:1028200081B200000400004081B2000004000040BA
-:1028300081B200000400004081B2000004000040AA
-:1028400081B200000400004081B20000040000409A
-:1028500081B200000400004081B20000040000408A
-:1028600081B200000400004081B20000040000407A
-:1028700081B200000400004081B20000040000406A
-:1028800081B200000400004081B20000040000405A
-:1028900081B200000400004081B20000040000404A
-:1028A00081B200000400004081B20000040000403A
-:1028B00081B200000400004081B20000040000402A
-:1028C00081B200000400004081B20000040000401A
-:1028D00081B200000400004081B20000040000400A
-:1028E00081B200000400004081B2000004000040FA
-:1028F00081B200000400004081B2000004000040EA
-:1029000081B200000400004081B2000004000040D9
-:1029100081B200000400004081B2000004000040C9
-:1029200081B200000400004081B2000004000040B9
-:1029300081B200000400004081B2000004000040A9
-:1029400081B200000400004081B200000400004099
-:1029500081B200000400004081B200000400004089
-:1029600081B200000400004081B200000400004079
-:1029700081B200000400004081B200000400004069
-:1029800081B200000400004081B200000400004059
-:1029900081B200000400004081B200000400004049
-:1029A00081B200000400004081B200000400004039
-:1029B00081B200000400004081B200000400004029
-:1029C00081B200000400004081B200000400004019
-:1029D00081B200000400004081B200000400004009
-:1029E00081B200000400004081B2000004000040F9
-:1029F00081B200000400004081B2000004000040E9
-:102A000081B200000400004081B2000004000040D8
-:102A100081B200000400004081B2000004000040C8
-:102A200081B200000400004081B2000004000040B8
-:102A300081B200000400004081B2000004000040A8
-:102A400081B200000400004081B200000400004098
-:102A500081B200000400004081B200000400004088
-:102A600081B200000400004081B200000400004078
-:102A700081B200000400004081B200000400004068
-:102A800081B200000400004081B200000400004058
-:102A900081B200000400004081B200000400004048
-:102AA00081B200000400004081B200000400004038
-:102AB00081B200000400004081B200000400004028
-:102AC00081B200000400004081B200000400004018
-:102AD00081B200000400004081B200000400004008
-:102AE00081B200000400004081B2000004000040F8
-:102AF00081B200000400004081B2000004000040E8
-:102B000081B200000400004081B2000004000040D7
-:102B100081B200000400004081B2000004000040C7
-:102B200081B200000400004081B2000004000040B7
-:102B300081B200000400004081B2000004000040A7
-:102B400081B200000400004081B200000400004097
-:102B500081B200000400004081B200000400004087
-:102B600081B200000400004081B200000400004077
-:102B700081B200000400004081B200000400004067
-:102B800081B200000400004081B200000400004057
-:102B900081B200000400004081B200000400004047
-:102BA00081B200000400004081B200000400004037
-:102BB00081B200000400004081B200000400004027
-:102BC00081B200000400004081B200000400004017
-:102BD00081B200000400004081B200000400004007
-:102BE00081B200000400004081B2000004000040F7
-:102BF00081B200000400004081B2000004000040E7
-:102C000081B200000400004081B2000004000040D6
-:102C100081B200000400004081B2000004000040C6
-:102C200081B200000400004081B2000004000040B6
-:102C300081B200000400004081B2000004000040A6
-:102C400081B200000400004081B200000400004096
-:102C500081B200000400004081B200000400004086
-:102C600081B200000400004081B200000400004076
-:102C700081B200000400004081B200000400004066
-:102C800081B200000400004081B200000400004056
-:102C900081B200000400004081B200000400004046
-:102CA00081B200000400004081B200000400004036
-:102CB00081B200000400004081B200000400004026
-:102CC00081B200000400004081B200000400004016
-:102CD00081B200000400004081B200000400004006
-:102CE00081B200000400004081B2000004000040F6
-:102CF00081B200000400004081B2000004000040E6
-:102D000081B200000400004081B2000004000040D5
-:102D100081B200000400004081B2000004000040C5
-:102D200081B200000400004081B2000004000040B5
-:102D300081B200000400004081B2000004000040A5
-:102D400081B200000400004081B200000400004095
-:102D500081B200000400004081B200000400004085
-:102D600081B200000400004081B200000400004075
-:102D700081B200000400004081B200000400004065
-:102D800081B200000400004081B200000400004055
-:102D900081B200000400004081B200000400004045
-:102DA00081B200000400004081B200000400004035
-:102DB00081B200000400004081B200000400004025
-:102DC00081B200000400004081B200000400004015
-:102DD00081B200000400004081B200000400004005
-:102DE00081B200000400004081B2000004000040F5
-:102DF00081B200000400004081B2000004000040E5
-:102E000081B200000400004081B2000004000040D4
-:102E100081B200000400004081B2000004000040C4
-:102E200081B200000400004081B2000004000040B4
-:102E300081B200000400004081B2000004000040A4
-:102E400081B200000400004081B200000400004094
-:102E500081B200000400004081B200000400004084
-:102E600081B200000400004081B200000400004074
-:102E700081B200000400004081B200000400004064
-:102E800081B200000400004081B200000400004054
-:102E900081B200000400004081B200000400004044
-:102EA00081B200000400004081B200000400004034
-:102EB00081B200000400004081B200000400004024
-:102EC00081B200000400004081B200000400004014
-:102ED00081B200000400004081B200000400004004
-:102EE00081B200000400004081B2000004000040F4
-:102EF00081B200000400004081B2000004000040E4
-:102F000081B200000400004081B2000004000040D3
-:102F100081B200000400004081B2000004000040C3
-:102F200081B200000400004081B2000004000040B3
-:102F300081B200000400004081B2000004000040A3
-:102F400081B200000400004081B200000400004093
-:102F500081B200000400004081B200000400004083
-:102F600081B200000400004081B200000400004073
-:102F700081B200000400004081B200000400004063
-:102F800081B200000400004081B200000400004053
-:102F900081B200000400004081B200000400004043
-:102FA00081B200000400004081B200000400004033
-:102FB00081B200000400004081B200000400004023
-:102FC00081B200000400004081B200000400004013
-:102FD00081B200000400004081B200000400004003
-:102FE00081B200000400004081B2000004000040F3
-:102FF00081B200000400004081B2000004000040E3
-:1030000081B200000400004081B2000004000040D2
-:1030100081B200000400004081B2000004000040C2
-:1030200081B200000400004081B2000004000040B2
-:1030300081B200000400004081B2000004000040A2
-:1030400081B200000400004081B200000400004092
-:1030500081B200000400004081B200000400004082
-:1030600081B200000400004081B200000400004072
-:1030700081B200000400004081B200000400004062
-:1030800081B200000400004081B200000400004052
-:1030900081B200000400004081B200000400004042
-:1030A00081B200000400004081B200000400004032
-:1030B00081B200000400004081B200000400004022
-:1030C00081B200000400004081B200000400004012
-:1030D00081B200000400004081B200000400004002
-:1030E00081B200000400004081B2000004000040F2
-:1030F00081B200000400004081B2000004000040E2
-:1031000081B200000400004081B2000004000040D1
-:1031100081B200000400004081B2000004000040C1
-:1031200081B200000400004081B2000004000040B1
-:1031300081B200000400004081B2000004000040A1
-:1031400081B200000400004081B200000400004091
-:1031500081B200000400004081B200000400004081
-:1031600081B200000400004081B200000400004071
-:1031700081B200000400004081B200000400004061
-:1031800081B200000400004081B200000400004051
-:1031900081B200000400004081B200000400004041
-:1031A00081B200000400004081B200000400004031
-:1031B00081B200000400004081B200000400004021
-:1031C00081B200000400004081B200000400004011
-:1031D00081B200000400004081B200000400004001
-:1031E00081B200000400004081B2000004000040F1
-:1031F00081B200000400004081B2000004000040E1
-:1032000081B200000400004081B2000004000040D0
-:1032100081B200000400004081B2000004000040C0
-:1032200081B200000400004081B2000004000040B0
-:1032300081B200000400004081B2000004000040A0
-:1032400081B200000400004081B200000400004090
-:1032500081B200000400004081B200000400004080
-:1032600081B200000400004081B200000400004070
-:1032700081B200000400004081B200000400004060
-:1032800081B200000400004081B200000400004050
-:1032900081B200000400004081B200000400004040
-:1032A00081B200000400004081B200000400004030
-:1032B00081B200000400004081B200000400004020
-:1032C00081B200000400004081B200000400004010
-:1032D00081B200000400004081B200000400004000
-:1032E00081B200000400004081B2000004000040F0
-:1032F00081B200000400004081B2000004000040E0
-:1033000081B200000400004081B2000004000040CF
-:1033100081B200000400004081B2000004000040BF
-:1033200081B200000400004081B2000004000040AF
-:1033300081B200000400004081B20000040000409F
-:1033400081B200000400004081B20000040000408F
-:1033500081B200000400004081B20000040000407F
-:1033600081B200000400004081B20000040000406F
-:1033700081B200000400004081B20000040000405F
-:1033800081B200000400004081B20000040000404F
-:1033900081B200000400004081B20000040000403F
-:1033A00081B200000400004081B20000040000402F
-:1033B00081B200000400004081B20000040000401F
-:1033C00081B200000400004081B20000040000400F
-:1033D00081B200000400004081B2000004000040FF
-:1033E00081B200000400004081B2000004000040EF
-:1033F00081B200000400004081B2000004000040DF
-:1034000081B200000400004081B2000004000040CE
-:1034100081B200000400004081B2000004000040BE
-:1034200081B200000400004081B2000004000040AE
-:1034300081B200000400004081B20000040000409E
-:1034400081B200000400004081B20000040000408E
-:1034500081B200000400004081B20000040000407E
-:1034600081B200000400004081B20000040000406E
-:1034700081B200000400004081B20000040000405E
-:1034800081B200000400004081B20000040000404E
-:1034900081B200000400004081B20000040000403E
-:1034A00081B200000400004081B20000040000402E
-:1034B00081B200000400004081B20000040000401E
-:1034C00081B200000400004081B20000040000400E
-:1034D00081B200000400004081B2000004000040FE
-:1034E00081B200000400004081B2000004000040EE
-:1034F00081B200000400004081B2000004000040DE
-:1035000081B200000400004081B2000004000040CD
-:1035100081B200000400004081B2000004000040BD
-:1035200081B200000400004081B2000004000040AD
-:1035300081B200000400004081B20000040000409D
-:1035400081B200000400004081B20000040000408D
-:1035500081B200000400004081B20000040000407D
-:1035600081B200000400004081B20000040000406D
-:1035700081B200000400004081B20000040000405D
-:1035800081B200000400004081B20000040000404D
-:1035900081B200000400004081B20000040000403D
-:1035A00081B200000400004081B20000040000402D
-:1035B00081B200000400004081B20000040000401D
-:1035C00081B200000400004081B20000040000400D
-:1035D00081B200000400004081B2000004000040FD
-:1035E00081B200000400004081B2000004000040ED
-:1035F00081B200000400004081B2000004000040DD
-:1036000081B200000400004081B2000004000040CC
-:1036100081B200000400004081B2000004000040BC
-:1036200081B200000400004081B2000004000040AC
-:1036300081B200000400004081B20000040000409C
-:1036400081B200000400004081B20000040000408C
-:1036500081B200000400004081B20000040000407C
-:1036600081B200000400004081B20000040000406C
-:1036700081B200000400004081B20000040000405C
-:1036800081B200000400004081B20000040000404C
-:1036900081B200000400004081B20000040000403C
-:1036A00081B200000400004081B20000040000402C
-:1036B00081B200000400004081B20000040000401C
-:1036C00081B200000400004081B20000040000400C
-:1036D00081B200000400004081B2000004000040FC
-:1036E00081B200000400004081B2000004000040EC
-:1036F00081B200000400004081B2000004000040DC
-:1037000081B200000400004081B2000004000040CB
-:1037100081B200000400004081B2000004000040BB
-:1037200081B200000400004081B2000004000040AB
-:1037300081B200000400004081B20000040000409B
-:1037400081B200000400004081B20000040000408B
-:1037500081B200000400004081B20000040000407B
-:1037600081B200000400004081B20000040000406B
-:1037700081B200000400004081B20000040000405B
-:1037800081B200000400004081B20000040000404B
-:1037900081B200000400004081B20000040000403B
-:1037A00081B200000400004081B20000040000402B
-:1037B00081B200000400004081B20000040000401B
-:1037C00081B200000400004081B20000040000400B
-:1037D00081B200000400004081B2000004000040FB
-:1037E00081B200000400004081B2000004000040EB
-:1037F00081B200000400004081B2000004000040DB
-:1038000081B200000400004081B2000004000040CA
-:1038100081B200000400004081B2000004000040BA
-:1038200081B200000400004081B2000004000040AA
-:1038300081B200000400004081B20000040000409A
-:1038400081B200000400004081B20000040000408A
-:1038500081B200000400004081B20000040000407A
-:1038600081B200000400004081B20000040000406A
-:1038700081B200000400004081B20000040000405A
-:1038800081B200000400004081B20000040000404A
-:1038900081B200000400004081B20000040000403A
-:1038A00081B200000400004081B20000040000402A
-:1038B00081B200000400004081B20000040000401A
-:1038C00081B200000400004081B20000040000400A
-:1038D00081B200000400004081B2000004000040FA
-:1038E00081B200000400004081B2000004000040EA
-:1038F00081B200000400004081B2000004000040DA
-:1039000081B200000400004081B2000004000040C9
-:1039100081B200000400004081B2000004000040B9
-:1039200081B200000400004081B2000004000040A9
-:1039300081B200000400004081B200000400004099
-:1039400081B200000400004081B200000400004089
-:1039500081B200000400004081B200000400004079
-:1039600081B200000400004081B200000400004069
-:1039700081B200000400004081B200000400004059
-:1039800081B200000400004081B200000400004049
-:1039900081B200000400004081B200000400004039
-:1039A00081B200000400004081B200000400004029
-:1039B00081B200000400004081B200000400004019
-:1039C00081B200000400004081B200000400004009
-:1039D00081B200000400004081B2000004000040F9
-:1039E00081B200000400004081B2000004000040E9
-:1039F00081B200000400004081B2000004000040D9
-:103A000081B200000400004081B2000004000040C8
-:103A100081B200000400004081B2000004000040B8
-:103A200081B200000400004081B2000004000040A8
-:103A300081B200000400004081B200000400004098
-:103A400081B200000400004081B200000400004088
-:103A500081B200000400004081B200000400004078
-:103A600081B200000400004081B200000400004068
-:103A700081B200000400004081B200000400004058
-:103A800081B200000400004081B200000400004048
-:103A900081B200000400004081B200000400004038
-:103AA00081B200000400004081B200000400004028
-:103AB00081B200000400004081B200000400004018
-:103AC00081B200000400004081B200000400004008
-:103AD00081B200000400004081B2000004000040F8
-:103AE00081B200000400004081B2000004000040E8
-:103AF00081B200000400004081B2000004000040D8
-:103B000081B200000400004081B2000004000040C7
-:103B100081B200000400004081B2000004000040B7
-:103B200081B200000400004081B2000004000040A7
-:103B300081B200000400004081B200000400004097
-:103B400081B200000400004081B200000400004087
-:103B500081B200000400004081B200000400004077
-:103B600081B200000400004081B200000400004067
-:103B700081B200000400004081B200000400004057
-:103B800081B200000400004081B200000400004047
-:103B900081B200000400004081B200000400004037
-:103BA00081B200000400004081B200000400004027
-:103BB00081B200000400004081B200000400004017
-:103BC00081B200000400004081B200000400004007
-:103BD00081B200000400004081B2000004000040F7
-:103BE00081B200000400004081B2000004000040E7
-:103BF00081B200000400004081B2000004000040D7
-:103C000081B200000400004081B2000004000040C6
-:103C100081B200000400004081B2000004000040B6
-:103C200081B200000400004081B2000004000040A6
-:103C300081B200000400004081B200000400004096
-:103C400081B200000400004081B200000400004086
-:103C500081B200000400004081B200000400004076
-:103C600081B200000400004081B200000400004066
-:103C700081B200000400004081B200000400004056
-:103C800081B200000400004081B200000400004046
-:103C900081B200000400004081B200000400004036
-:103CA00081B200000400004081B200000400004026
-:103CB00081B200000400004081B200000400004016
-:103CC00081B200000400004081B200000400004006
-:103CD00081B200000400004081B2000004000040F6
-:103CE00081B200000400004081B2000004000040E6
-:103CF00081B200000400004081B2000004000040D6
-:103D000081B200000400004081B2000004000040C5
-:103D100081B200000400004081B2000004000040B5
-:103D200081B200000400004081B2000004000040A5
-:103D300081B200000400004081B200000400004095
-:103D400081B200000400004081B200000400004085
-:103D500081B20000AE9F00889AB00000AE9F00883C
-:103D60009AB00000AE9F00889AB00000AE9F008815
-:103D70009AB00000AE9F00889AB000000000008852
-:103D80009AB00100AE9F414081320000B29F2240B4
-:103D90007B6F00000000194081B20100AE9F00401F
-:103DA00081B20000000019417BB30100000000A4B3
-:103DB000C4B30100000000A1C6B3010000002FA29F
-:103DC000C8B301000814004049990100A89F004DA4
-:103DD0009ACC0100BB9F2640813200000000004CBD
-:103DE00049C10100B99FA2419B500000BF9F808044
-:103DF0008032000000005249FD9301000000004A9B
-:103E0000FD930100C29F0042CD9300000000514A83
-:103E1000FD93010000000049FD930100C29F004393
-:103E2000CB9300000000504081B20100D29F0040BF
-:103E300019990100000000F09AB001000000004450
-:103E400049D10100000040F080B201000000414D66
-:103E500080B20100CA9F00401999010000004C4047
-:103E600081B201000000004449D10100000000F0CF
-:103E70009AB001000000004D10B10000000000E207
-:103E800049B10100000000E343B10100000000E47B
-:103E900045B10100000000407BB301000000484F25
-:103EA00040B10100D29F004081B2000004000040F8
-:103EB00081B200000400004081B200000400004014
-:103EC00081B200000400004081B200000400004004
-:103ED00081B20000040000CB81C80100F4820040E0
-:103EE000F29300004082004081B200004005004093
-:103EF00081B200001806004081B20000F482004048
-:103F000081B20000AF82004081B2000038810040E1
-:103F100081B200003681004081B20000B8800040CC
-:103F200081B200001A87004081B20000AF820040D9
-:103F300081B20000F582004081B20000AB920040E7
-:103F400081B20000F095004081B200007392004001
-:103F500081B20000DF95004081B200004A9300402A
-:103F600081B20000ED92004081B20000E792004073
-:103F700081B200009A82004081B2000000008040BF
-:103F800081B201000400004081B200000400004042
-:103F900081B200000400004081B200000400004033
-:103FA00081B200000400004081B200000400004023
-:103FB00081B200000400004081B200000400004013
-:103FC00081B200000400004081B200000400004003
-:103FD00081B200000400004081B2000004000040F3
-:103FE00081B200000400004081B2000004000040E3
-:103FF00081B200000400004081B2000004000040D3
-:1040000081B200000400004081B2000004000040C2
-:0440100081B2000079
-:00000001FF
diff --git a/firmware/slicoss/oasisrcvucode.sys.ihex b/firmware/slicoss/oasisrcvucode.sys.ihex
deleted file mode 100644 (file)
index 813bea4..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-:10000000000200004775010004A01301001CB75B4B
-:10001000093000B65F01001C00000020183B783A50
-:10002000001CA27701001C071D017018AD7BF1FFB9
-:100030001CB37BA9AA1EB47B010C1CB57B0D061C4E
-:1000400000003064080C315A70040C315A80040CE2
-:10005000314E90040C314AA000092555C0040C31E2
-:1000600052B000E92455C004CCB3001C1CEB2D0198
-:10007000001C065632D408079D00001C7BB7020006
-:1000800010A00F31540906565EC004A0305403007E
-:10009000AC30550300CD033A001C7BB702001C6056
-:1000A0008E3154092925550300808E3154098C3036
-:1000B000910004471C01001CA00F3154090000648A
-:1000C0000004471C65C004471C5503006C30010048
-:1000D0001C4D3402001C7BB702001CA00F315409D8
-:1000E000C88337001C800100001C0000640004A0CD
-:1000F0000F305409000054C3047BFBF2001CCC33C6
-:100100000D001CB47BFD031C800E305409E0FB0580
-:10011000001C00008C0300B30F3154090000EC7088
-:10012000040000EC800400008C930061768DC30411
-:10013000C08D315409E07B00C01FA0FDC50100CC7B
-:100140003305001CD403003C1CD4D31B001CC0D3BB
-:1001500052001C00005C13048E8E3254095B805EDA
-:100160001304000000001C0000940100A00F315493
-:1001700009A00F315409C003FC7F1CA001A001009D
-:100180000000A40100A00F315409C003FC031CF5BA
-:100190007701001C267AE6051CA00F315409B30F25
-:1001A000315409B50202001CA00F3154097A7E02B5
-:1001B000001CB50202001C530F325409AF030100AA
-:1001C0001C7A0E325409B50202001C000002001C09
-:1001D000A03DAA11040000AC1104D4D352001CB5F8
-:1001E0003EB2010020FBFDFF1F802C6C0300B93ADA
-:1001F0009E0100753B02001CA71C010010DB83164A
-:10020000001CC71D21C104B93B8DC1048B2C01000A
-:100210001C6B2C35C1040000781100CB2C79C10473
-:10022000A00F315409A00F31540954D002001C49C9
-:1002300025B10100AB2C81C104A71D550300CC33AF
-:1002400009001CEB2D01001CEA2901001CA00F3144
-:100250005409AE0F315409A00F315409D407FC03DF
-:100260001C993A02001CBB3802001C003800001C1C
-:100270000000FC0104DB3B7E001CC71D01001C26A6
-:100280007AFA051C271D01001CB30F3154097A0EA0
-:10029000325409530F3254097A0E325409530F3233
-:1002A00054097A0E325409530F325409A00F3154B5
-:1002B000097A0602001C530F325409AF0301001CD7
-:1002C0007A0E325409530F3254097A0E32540953BC
-:1002D0000F3254097A0E325409530F3254097A0EF0
-:1002E000325409003D02001C0000581200CB2C01C2
-:1002F000001C753B02001CA71C010010CB2F050041
-:100300001C602C00001CC71CC90200A00F3154093E
-:10031000530702001C467ACA051C7A0E3254094063
-:10032000FA19001C0000880204467ACA051CA00FB6
-:10033000315409A00F315409A00F315409A00F31D5
-:100340005409B37B01C01F740E305409C0039C00D4
-:100350001C8000D802000000D802040000AC120586
-:10036000071D01001CD4D32B001CD4D352001C80C9
-:10037000767D13040000E00200A67B950310C79C65
-:1003800000001C802C00001C00006C0204000054C3
-:10039000C304AB2DD91205071DB5C2048B2D010076
-:1003A0001C692501001CA67B950310CB2F09001C9E
-:1003B000602C00001C0000480300530F3254094613
-:1003C0007ACA051C7A0E32540940FA19001C000042
-:1003D000100304467ACA051CB50F315409A00F3129
-:1003E000540973EC2A0304602C00001C000028034D
-:1003F00000C71C01001C0000281305071D01001C7C
-:10040000C0D722001C75567E1304602C00001CE728
-:100410001C450304E79C00001CA67B950310802C60
-:1004200000001C0000F80204000054C304B97B0162
-:10043000001C00008CC304CBAFFC071CCB2F0104B5
-:100440001CC79F80031C00008CC304CBAFFC071C9F
-:10045000CB2F0D041CC79F80031C00008CC304CB52
-:10046000AF00F81DCB2F01001DA67B95031CC79C78
-:100470008CC30400008C1305071D01001CC01DDC8B
-:10048000D308279DE40300A0EE46D400FB750914B1
-:1004900004207B06001CC01C1C04000000B0D30814
-:1004A000000000F400C0EFF2001C20255C14046082
-:1004B000B7D2030000000C1500CCB3FC031CCC33F6
-:1004C00005021C00000CC50460B70E050400000CFA
-:1004D000150400005CC404C01D98F304000068C447
-:1004E00004079D00001C1B74FDF304A67BF1031C94
-:1004F000A00F695409E07B00FC1F397F02001C0734
-:100500001D9DC304A67BAD031C000068C404E01C51
-:1005100000001C0000A40304CBAF00F81DCB2F018A
-:10052000101D0000ACC3040000AC0304CBAF00F806
-:100530001DCB2F01181DC79F000B1C0000ACC3046E
-:10054000FB7501001C071D01001CCCB3FC031CCC77
-:100550003301021C0000ACC304A01C00001CA0EE70
-:10056000A20304CBAFFC071CCB2F09041CFB7501B5
-:10057000001C0000ACC304CCB3FC031CCC33010250
-:100580001C00000CC5040000783405CCB3FC031C2F
-:10059000CC3315021C479D54C404000078440080ED
-:1005A0001D7C5404871D8D0400CE7601001CEF765F
-:1005B0009DC404A4778D2409E47601001CC476014F
-:1005C000001C0000985404D776015018F6760100FC
-:1005D0001C00000030180000000010CC3045C5049D
-:1005E000EB2D01001CEA2901001CC05901001CF57B
-:1005F0007729C504E030DC0400004CB00400204C36
-:10060000F404000000E80400CCB3FC031CCC330964
-:10061000021CEB2DB5C404CCB3FC031CCC33190273
-:100620001CEB2DB5C404CCB3FC031CCC330D021C55
-:10063000EB2DB5C404CCB3FC031CCC3311021CEB72
-:100640002DB5C404007B00801CAE7745050000007A
-:1006500004C004D38B00FC1F607A3C001C604CC0BB
-:100660000400C02F20051FE030B004008025B00436
-:1006700000B55BB10404692601001C6A2B01001C53
-:10068000801D00001CA925450500EE3000001CAFB0
-:10069000770105000000AC2404B45F014018079DF9
-:1006A000485504B77601001C967601001C471D01D1
-:1006B000001CA433016018A42F0160186477016046
-:1006C000182477016018447701001C648803001C1B
-:1006D000A43F01001CA43B01001C537B00C01CD3A1
-:1006E000CF1B001C534F02001CDACF00C01FD55790
-:1006F0000F001CD3D337001CD4530F001CE029007B
-:10070000001CF5D5B0050000009C5504775601008B
-:100710001C565301001C0000001018000004C00407
-:10072000F55501001C0000B45504775601001C5615
-:100730005301001C0000001018000004C004CB2F5F
-:10074000011810CB2F011010CB2F010810CB2F0157
-:100750000810CB2F012010CB2F012810CB2F010028
-:1007600010892561C2040000ECC204000054C304D7
-:10077000000054C304000054C304000060C204001D
-:1007800000ECC204000054C304000054C304000081
-:1007900054C304401C6CC004401C9CC004A7775583
-:1007A000C3040000C4C004271DF1C004000054C3EA
-:1007B00004000054C304000054C30400002CC60409
-:1007C00000002CC60400002CC60400002CC6040047
-:1007D000002CC60400002CC60400002CC604000037
-:1007E0002CC60400002CC60400002CC60400002CFB
-:1007F000C60400002CC60400002CC60400002CC651
-:100800000400002CC60400002CC60400002CC60402
-:1008100000002CC60400002CC60400002CC60400F6
-:10082000002CC60400002CC60400002CC6040000E6
-:100830002CC60400002CC60400002CC60400002CAA
-:10084000C60400002CC60400002CC60400002CC600
-:100850000400002CC60400002CC60400002CC604B2
-:1008600000002CC60400002CC60400002CC60400A6
-:10087000002CC60400002CC60400002CC604000096
-:100880002CC60400002CC60400002CC60400002C5A
-:10089000C60400002CC60400002CC60400002CC6B0
-:1008A0000400002CC60400002CC60400002CC60462
-:1008B00000002CC60400002CC60400002CC6040056
-:1008C000002CC60400002CC60400002CC604000046
-:1008D0002CC60400002CC60400002CC60400002C0A
-:1008E000C60400002CC60400002CC60400002CC660
-:1008F0000400002CC60400002CC60400002CC60412
-:1009000000002CC60400002CC60400002CC6040005
-:10091000002CC60400002CC60400002CC6040000F5
-:100920002CC60400002CC60400002CC60400002CB9
-:10093000C60400002CC60400002CC60400002CC60F
-:100940000400002CC60400002CC60400002CC604C1
-:1009500000002CC60400002CC60400002CC60400B5
-:10096000002CC60400002CC60400002CC6040000A5
-:100970002CC60400002CC60400002CC60400002C69
-:10098000C60400002CC60400002CC60400002CC6BF
-:100990000400002CC60400002CC60400002CC60471
-:1009A00000002CC60400002CC60400002CC6040065
-:1009B000002CC60400002CC60400002CC604000055
-:1009C0002CC60400002CC60400002CC60400002C19
-:1009D000C60400002CC60400002CC60400002CC66F
-:1009E0000400002CC60400002CC60400002CC60421
-:1009F00000002CC60400002CC60400002CC6040015
-:040A0000002CC604FC
-:00000001FF
diff --git a/firmware/sxg/saharadbgdownloadB.sys.ihex b/firmware/sxg/saharadbgdownloadB.sys.ihex
deleted file mode 100644 (file)
index e3016d3..0000000
+++ /dev/null
@@ -1,3937 +0,0 @@
-:1000000002000000DCF500000C0000000000000011
-:10001000FF1F00000100000000000088824D293A07
-:1000200000000404000000800200009000000900AD
-:100030000000008002000090000009000000008025
-:100040000200009000000900000000800200009003
-:10005000000009000000008002000090000009007C
-:1000600000000080020000900000090000000080F5
-:1000700002000090000009000000008002000090D3
-:10008000FEFF0000000000AC020036320000360027
-:10009000000000A80200009200001613000000807B
-:1000A0000200009000001613000000800200009083
-:1000B00000001613000000800200009000001613DC
-:1000C0000000008002000090000016130000008075
-:1000D0000200009000002000000000D80F8028924D
-:1000E00000002100000000D80F80289200002200AC
-:1000F000000000D80F80289200002300000000D8E4
-:100100000F402B9200002400000000D80F8028929E
-:1001100000002500000000D80F8028920000260073
-:10012000000000D80F80289200002700000000D8AF
-:100130000F80289200002800000000D80F8028922D
-:1001400000002900000000D80F80289200002A003B
-:10015000000000D80F8028920000360000000098B0
-:100160001E80E99A00002C00000000D80F80289221
-:1001700000002D00000000D80F80289200002E0003
-:10018000000000D80F80289200002F00000000D847
-:100190000F80289200003000000000D40F00009271
-:1001A00000003000000000D40F400092000030003A
-:1001B000000000D40F80009200003400000000D442
-:1001C0000FC0009200003000000000D40F00019228
-:1001D00000003000000000D40F4001920000300009
-:1001E000000000D40F80019200003000000000D415
-:1001F0000FC0019200003000000000D40F000292F6
-:1002000000003000000000D40F40029200003000D7
-:10021000000000D40F80029200001613000000803E
-:100220000200009000003000000000D40F00039294
-:1002300000003000000000D40F40039200003000A6
-:10024000000000D40F80039200003000000000D4B2
-:100250000FC0039200000000000000D05F3F003498
-:10026000000016130400008042FFFCB000000000F4
-:10027000000000881280FD3A000016130000008084
-:10028000020000901613161302010080828DFDBC3F
-:1002900000000000000000881280FD3A000000000D
-:1002A000000000F803C001323800000000010084A3
-:1002B000824D281A000036000000007409400092A8
-:1002C00000004F00000000FC020000920000480007
-:1002D000000000800200009000004D00000000902F
-:1002E0000E80189200001B030000000008C020923E
-:1002F000000089000000000008002192000019039E
-:10030000000000000840219200008600000000006C
-:100310000885219000009B03000000EC02C022929F
-:1003200000009404000000800200009000005800CB
-:10033000000000FC0240189D00005100000000D0A9
-:10034000020000920000E003000000800200009024
-:100350000000161300000080020000900000000062
-:10036000000100800200007000004C00000000004E
-:1003700009C0219200004A0012010000088522B045
-:1003800018003600000000F8738A029900008E0001
-:100390006A000080020000B008008E00000000F833
-:1003A0002340019900000000000100E80200907263
-:1003B0000000161380010080B200E9B600000204BC
-:1003C0000000007C1EC0E79A08000000000000F852
-:1003D000134001390000F60300000008B801009442
-:1003E000000016130300007809401ABD0000161320
-:1003F00004010080E28097BC00000000000000A023
-:10040000E125003408000000000000F8B340013985
-:1004100000000204B20000D8020000B2000016136F
-:1004200017010080020000B000001F06001001F854
-:1004300002006E9200005B000A0100CC020000B2D4
-:1004400000007000030100FC024019BD0800020416
-:10045000000000F8A34001990000000000000084A3
-:1004600001C02F320000000000000090F1010034B4
-:10047000000000000000009401C02F320000600066
-:10048000800100801281FCB6000016130401008078
-:1004900002C02FBC02006000B00000A0F20B00B947
-:1004A000000063000401008002C0B0BC00006E00C8
-:1004B000A000008002000090000065008001008024
-:1004C000F24BD0B600006E00A00000800200009049
-:1004D00000000000A0000004FD4BD03400006B00C1
-:1004E000800100801281FCB60000C211000000D81B
-:1004F000020000D20000161304000080028092BCAB
-:1005000018000000000000F8730A03396E0036007E
-:10051000000000C00200369200009611000000D8D2
-:10052000020000D20000161304000080028092BC7A
-:1005300018003600000000F8730A03F900005B00A1
-:10054000030100FC024018BD00008500030000FC10
-:10055000024019BD000000000000009401C02F32CD
-:100560000000000000000080F101003400000000E5
-:100570000000008401C02F3200007500800100805F
-:100580001281FCB6000016130401008002C02FBCCB
-:1005900002007500B00000A0F20B00B90000780066
-:1005A0000401008002C0B0BC00008300A0000080F5
-:1005B0000200009000007A0080010080F24BD0B66B
-:1005C00000008300A00000800200009000000000F6
-:1005D000A0000004FD4BD0340000800080010080AA
-:1005E0001281FCB60000C211000000D8020000D247
-:1005F0000000161304000080028092BC1800000066
-:10060000000000F8730A033983003600000000C0C0
-:100610000200369200009611000000D8020000D2BD
-:100620000000161304000080028092BC18003600FF
-:10063000000000F8730A03F900007000030100FCD9
-:10064000024019BD00005B00030100FC024018BD20
-:1006500008000204000000F8A3400199080000000F
-:10066000000000F87340013900008E008001008016
-:10067000E20180B600008B000000008002000090C4
-:10068000080091030C0000F8534001B900008D00F0
-:1006900080010080E20180B600001613120000689D
-:1006A000020580B00000F6030000006C1FC0F69A3F
-:1006B000000000000000000008058030000000007D
-:1006C000000000FC020001320000000000000010E9
-:1006D00008803D3200000000000000CC0200003223
-:1006E00000000000000000100900363200008012F7
-:1006F00000000014090080D2000016138000008062
-:1007000062802FB60000161302010080823A80BC7E
-:100710000000161306010080923A80BC0090161368
-:1007200004010080A20D80B000001613120100BC6D
-:1007300008C021B200000000000000D40200003216
-:1007400002A0000000000000A90D80320000161376
-:100750001200005402A438B2000200800000002CF5
-:100760000800373218003600000000F8730A03F959
-:100770000000000000080004088072320000A2009F
-:100780009F00005C080072B28300A100800100801D
-:1007900082CD85B00000B6000000002CD8C1829444
-:1007A0000000B6000000002C88C1829400001613DF
-:1007B00006010080827D80BC000FAC000401008037
-:1007C00082CD85B00000AC00800000803281FCB694
-:1007D0000000161312000068020580B0000000003F
-:1007E0000000006C1FC0F63A00000000000000FC92
-:1007F000020001320000AA00040100DC43603DB3A6
-:100800000000F603000000FC020000921800000047
-:10081000000000F8738A0339A7003600000000C00A
-:10082000020036920000AE0080010080F2C085B662
-:100830000000BE000000002C98C182941000C3008C
-:1008400087000000792116B80000C30080010078FD
-:10085000390090B08300C3008700007889CD85B04F
-:100860000000B30080000080028097B60000B60050
-:100870000000002C88C182940000B5008000008038
-:1008800022C185B60000B6000000002CD8C18294B9
-:100890000000C3000000002C98C182940000BC003E
-:1008A00080010080D2C182B60000C30080010080B8
-:1008B0007280FCB600000000001800A8423D7230B3
-:1008C00000000000541809FEF2C07C300000EA006D
-:1008D00080010080F2C185B60000C50000000080E4
-:1008E00002000090000016138001008082C182B6D1
-:1008F0000000B800800000808280FCB60900C300C0
-:10090000040000B428BF17B88300C500870000ACFE
-:1009100088CD85B00000C30004000080D2E28AB018
-:1009200000000000001800A8423D72300000C50021
-:10093000541809FEF2C07C9000000000540000FC36
-:100940000200003200000000001800200700003202
-:100950008000802000000080C2CD85300000DA00D9
-:100960000B000080020000B01800000000000078BA
-:1009700079A116382000EA0004000080828D97BC1F
-:100980000000D100800100806280FCB68300D100AD
-:100990008700007889CD85B00000CD008000008000
-:1009A000028097B60000D10080010080128097B6C7
-:1009B0000000D1008001008072C185B610000000E7
-:1009C00000000078796116380000D800040100802A
-:1009D000328097BC0000EA000000002CB8C182946D
-:1009E0000000D800800100805280FCB60000D800D2
-:1009F0008000008072C185B60000D80080010080B0
-:100A000002C185B60000D80080010080D2C185B641
-:100A1000180000000000007879E116380000D800C6
-:100A200004010080328097BC0000EA000000002C26
-:100A3000C8C18294000000000000000408000432D5
-:100A40000000EA000000002CA8C182940800000009
-:100A500000000078792117380000EA0004000080C7
-:100A6000328097BC0000EA0004010080228097BC1D
-:100A70001F0000000012000889CD72300500000040
-:100A800000120000B9DC173800000000000000A8C8
-:100A9000220090370000EA008000868022247CB685
-:100AA00000000000000000780905803000001613E7
-:100AB0000201008082BA97BC000016130601008074
-:100AC00092BA97BC0000161312000068020580B0AD
-:100AD00000000000000000FC020001320000E800FD
-:100AE000040100DC43603DB30000F603000000FC9D
-:100AF0000200009218000000000000F8738A033919
-:100B0000E5003600000000C002003692020000003E
-:100B100000000010090036320000801200000014AE
-:100B2000090080D20000F10012010060084023B2E9
-:100B30003200000000000010090036320000801270
-:100B400000000014090080D20082000000000008AC
-:100B5000088036320000E100000000641F40F69A71
-:100B60000000161312000024080023B20000161320
-:100B70001200002008C023B2000016131200001853
-:100B8000088023B200000000000000FC02000132D7
-:100B90000000F800040000DC43603DB318000000D2
-:100BA000000000F8738A0339F4003600000000C02A
-:100BB0000200369200000000000000FC02008532B6
-:100BC00000000000000000D8028001320000000098
-:100BD000000000D00200003200C007011801000C24
-:100BE000A8CD3EB20000F80012000038028081B2A9
-:100BF000000000000000003C020082320000000003
-:100C0000000000300240823200000000000000348A
-:100C10000200863220800000000000080880363282
-:100C2000000000000000005C1FC0F53A000000005A
-:100C300000000078090580300000161302010080D2
-:100C400082BA97BC000016130601008092BA97BCC6
-:100C50000000F60312010068020580B000001613C0
-:100C600000000080020000900000000000180078E2
-:100C70000900723200230A0104010080A2CD82B073
-:100C800000000B0100000000090000920000161394
-:100C90009F16000029C172BC00000000001800006F
-:100CA000078081320000000000200000070082322F
-:100CB00000000000002800000780973210000000AC
-:100CC00000300000172090390000000000380000BC
-:100CD00007C0823200000000000000D8020000328D
-:100CE00000000000000000000740803200001401F6
-:100CF00080010080A2C182B600001501000800003A
-:100D000057008097050000000008000007A0043984
-:100D10000000161304100000074082B2000000001B
-:100D20000018000007008632000016131200005061
-:100D3000F2C138B418003600000000F8730A03F955
-:100D40000000161312000068020580B000000000C9
-:100D500000000078090580300000161302010080B1
-:100D600082BA97BC000016130601008092BA97BCA5
-:100D7000000016131200004802C080B20000F60303
-:100D8000CA010008E8818094000000000000008093
-:100D9000024590300000161304010080120028BCA8
-:100DA00000001613120100BC08C021B208000000A8
-:100DB000000000F89340013910000000540000FCCE
-:100DC000824D9036000016130200008042C02FBCF6
-:100DD00000002501F00100D8020000B20000000070
-:100DE000620401A802C06E3200000000000401008D
-:100DF00059C06E37000000000004017819C06E3A37
-:100E0000000000004E0401EC06BD97300000000019
-:100E1000E00000F41E40EF3A0000161304190B82A4
-:100E200002C07CBC0000000000180BCE074000325E
-:100E30000000000000000000074009320000161307
-:100E400004010080020036BC000000000008000021
-:100E500077C029370000161304100000173D90BA20
-:100E600000000000001800000780F4320000161394
-:100E700012000040F2C138B40B0000000000001066
-:100E8000090036320000801200000014098083D26D
-:100E900000000000000000FC32C02F300000000005
-:100EA0000000001008803D3218003600000000F8F5
-:100EB000730A03F900000000000000D402000032B1
-:100EC000000016130401008002802DBC0000CE013A
-:100ED0008038008022C072B600003E01120000C8B7
-:100EE000020020B2000045011201005C088020B21F
-:100EF000000016131200006002802CB218000000DF
-:100F0000000000F8738A03393B013600000000C07E
-:100F10000200369200000000000000F81F80FF3A37
-:100F200000000000000000FC320085300000A3013A
-:100F30000400008042603DB318000000000000F88B
-:100F4000738A033941013600000000C00200369266
-:100F5000080000000000000088CD85370000000078
-:100F60000000002008007232000000000008002489
-:100F700008007232000016130410006C080072B2F0
-:100F8000000000000018004C080072320000161328
-:100F900004200018080072B2000000000030002891
-:100FA00008007232000016130200008082BD82BC6D
-:100FB000000000000028003008007232000000002D
-:100FC00000000060088082320000560106000080A8
-:100FD00062A082BC000016139F3C0014288072BCE3
-:100FE00000000000000000000700063207000000BB
-:100FF00000080000774A09390000161304100000A9
-:10100000070082B200000000CA19000007408232C7
-:101010000000161312000040F2C138B400000000B6
-:10102000000000D80240003200007D010438007842
-:10103000D9C572B000005A0180010080028097B6C5
-:1010400000000000000000F882802F3400005C01E6
-:1010500080010080128097B600000000000000F8B8
-:1010600092802F34000016130401008002402DBC32
-:10107000040000000038003CB81C173800000000D5
-:101080000000003C28C0833700000000003A002C1C
-:1010900008C07232000000000000001CB8E0833A73
-:1010A00000000000CB2900200700003200007C0176
-:1010B0000400008002C081BC000000000000003479
-:1010C00078A0813E000000000000001CD8E0813CB8
-:1010D00000006A01063A0080B25C83BC0000000098
-:1010E000003A000089C17237070069012B01000432
-:1010F000790A04B900000000CB00000419419034C3
-:1011000000006D01003A002C070000920000000072
-:10111000003A002CD7E0723C000000000000000004
-:101120000900003200000000000000040900003245
-:10113000000000000000000007648332000000008F
-:1011400000080000070080320000161304100000A1
-:1011500007C086B2000000000018000007C08432FB
-:1011600000008C0104000028D8A082BC00001613E7
-:1011700009010080020000B0000000000000000033
-:10118000D820803A000077010400008072802DBCD6
-:10119000000016131200004412E438B20000780177
-:1011A000000000D812802D9A000075120000000483
-:1011B000F94190F400007A0104000018D8A081BC25
-:1011C000000062010000006CD8E0869A0000201246
-:1011D0000000004408802DF2000062010000003091
-:1011E0000800009200000000CB1900200700003228
-:1011F00007007F012B010004790A02B900000000FA
-:10120000CB00000419419034000000004D000000A4
-:10121000A7A0813E00000000000800000700803207
-:10122000000016130410000007C086B20000000082
-:101230000018000007C0843200008C010400002860
-:10124000D8A082BC0000161304010080626083BC39
-:101250000000000000000000D820803A0000890152
-:101260000400008072802DBC0000161312000044A0
-:1012700012E438B200008A01000000D812802D9AD2
-:101280000000751200000004F94190F400002012E3
-:101290000000004408802DF200007D0100000030B5
-:1012A000080000920000161380000080A2802FB674
-:1012B0000000000000000004F94190340000161303
-:1012C0001200004412E438B218003600000000F8A2
-:1012D000730A03F9000016130400008002802DBC7D
-:1012E00000000000001800040980733200000000B4
-:1012F000002800088980733700000000000000808B
-:1013000007008632410000000006008C07003632DC
-:10131000000098012908008007C085B200009B01E9
-:101320002810008C070000B200009C01001200840D
-:1013300007000092000000000010008CF7E0823AE5
-:1013400000009B0128180080074090B200009C011B
-:1013500000120084070000920000000000120084C8
-:1013600027E4823200000000000000783900853058
-:101370000000161304010080F28B97BC0000A1014D
-:101380000400008042603DB318000000000000F837
-:10139000738A03399C013600000000C002003692B7
-:1013A00000000000000000FC02008532000016135F
-:1013B0001200005C52812CB400000000000000D834
-:1013C00002800132000000000000008002003B3279
-:1013D0000840A501F0010008088036B200000000B6
-:1013E0000004013808C06E3200000000E00000F484
-:1013F0001E40EF3C0000AC010B01008C080000B265
-:101400000000A901F2010080020000B0000000000D
-:10141000000000F00E003A320000BE01E200008041
-:101420000E8083920000AC01F2010078C93B3ABC07
-:101430000000B60102010080828097BC000000001D
-:10144000000000A80200E8320000B10104000080A2
-:1014500022A22ABC0000B50104190B8202C07CBC88
-:10146000000000000000008C18C0883A0000000056
-:10147000000000A812802A3A00000000000000A826
-:1014800002BD2A300000AF0104010080E2A02ABCA6
-:101490000000BB010200008082C088BC0000000088
-:1014A000E20000080800003200000000000000A870
-:1014B000028088320000161304190B8212C07CBC13
-:1014C0000000000000180BCE070000320000F603F9
-:1014D000000000DC03000092000000000000003863
-:1014E00008802A3200000000000000F00E003A32AE
-:1014F00000000000E20000800E802A3200000000A0
-:10150000000000A8028088320000161304190B8224
-:1015100012C07CBC0000000000180BCE0700003297
-:1015200000000000000000DC030000320000161381
-:1015300004000080227AE8BA0000000000000000E9
-:1015400007808332000000000000000079C02937C6
-:101550006020000000000000890D903A00000000AB
-:10156000CA0100D812802D3A0000000000000000DF
-:101570000700013200000000000800000700903260
-:1015800000000000001000000740E83200000000EA
-:10159000001800000780E83200000000000000FC96
-:1015A000020000320000F60312010048F2C138B414
-:1015B00000001613000000800200009000001613C7
-:1015C0000401008002402DBC0000161304010080BD
-:1015D00002802DBC000016138000008072802FB6A0
-:1015E0000000000000300078088072320400000023
-:1015F00000380054A85C16380B0000000038002C9E
-:10160000A8DC1638140000000000001C884D853A44
-:101610002200000000000010090036321000801285
-:1016200000380014A99C87D90000000000000020A9
-:101630000800723200000000000800240800723226
-:10164000000000000010006C080072320000000072
-:101650000018004C08007232000016130420001815
-:10166000080072B20000000000280030080072324A
-:10167000000016139F3C0014188072BC0000E501A6
-:1016800004000080024081BC000000000000001443
-:101690001840813C000000000000000007000632F6
-:1016A0000700000000080000774A093900001613FF
-:1016B00004100000070082B200000000CA190000F8
-:1016C000074082320000161312000040F2C138B405
-:1016D00000000000000000D80240003200000000BE
-:1016E0000000006478C02937021000000000006488
-:1016F000884D863A0000000000000080080000329B
-:10170000000000000000004008000032000000005F
-:101710004D00000077A0813E00000000000800009E
-:1017200007408632000016130410000007C086B27E
-:10173000000000000018000007C084320000000212
-:101740000400001CD8E081BC0000161309010080D1
-:10175000020000B00000000000000064D860863A7B
-:101760000000F4010400008072802DBC00001613FC
-:101770001200004002C038B20000FC01000000D896
-:1017800012802D9A0000161312000040F2C138B4E6
-:1017900018003600000000F8730A03F90000FA018F
-:1017A0000401008002802DBC00001613800100801F
-:1017B000A2802FB60000F501670000F8A2802FB5C7
-:1017C00000001613120000E802C021B20000161338
-:1017D0000401008072802DBC00000000000000D8D1
-:1017E000024000320000FE0104000018D8A081BCB5
-:1017F0000000EA010000006CD8E0869A0000C910E1
-:101800000000004408802DF20000EA0100000030D2
-:10181000080000920000161312000040F2C138B414
-:1018200018003600000000F8730A03F900000602F1
-:101830000401008002802DBC00001613800100808E
-:10184000A2802FB600000102670000F8A2802FB529
-:1018500000001613120000E802C021B200001202BC
-:1018600004010080020084BC00000000000000D4DD
-:101870000240003200000000000000A42240853A2F
-:10188000040000000018004088CD743600000000FD
-:10189000000000402800843700000000000000D451
-:1018A00002000032140012020400001C880D84BCE7
-:1018B0000000161309010080020000B000000000C3
-:1018C000000000780961853A800016130601008047
-:1018D000828D97BC0000000000000064D860863A4A
-:1018E0000000FC01000000D8024000920000140239
-:1018F00004000018D8A081BC000016020000006C93
-:10190000D8E0869A0000C9100000004408802DF23B
-:10191000000000000000003008000032000000005D
-:10192000000000D40240003200000000000000A4CB
-:1019300022C0823A000000000000003CB860853CF4
-:1019400004001C028100006088CD74B60000000015
-:1019500000040028F8A0753C00001D020008007477
-:10196000088075920000000000080028F8A0753C6F
-:10197000000000000000002808A1823C00000000D8
-:10198000000000A4F2602A3A0000000000080048AD
-:1019900008007532000000000020007C08807532CD
-:1019A00009002302041A007088CD74B009000000F9
-:1019B000001A004C87CD74317F00000000000064E5
-:1019C000884D863100000000000000642840863AFF
-:1019D00023000000000000100900363200008012D1
-:1019E00000000014098082D20C00000000000010EA
-:1019F000090036320000801200000014098084D2F1
-:101A000000000000000000D802400032000000008A
-:101A1000001000000740863200000000000000D8DF
-:101A20000280003200000000001000005761863A7A
-:101A300000003002120000C8020020B20000330291
-:101A40001201005C088020B2000016131200006032
-:101A500002802CB2000040012A0100D4020000B232
-:101A600018003600CA0000F8730A03F900004101AB
-:101A7000000000F81F80FF9A00000000000000D462
-:101A800002400032080000000000000088CD8537C9
-:101A9000000000000000001CE8A1823E00000000E1
-:101AA000000000A42240853A000000000008005019
-:101AB0000780843200003A020401008072A082BCD8
-:101AC00000000000001A004CC7E174320000000062
-:101AD0000000006808E1813A00003D0290010078B2
-:101AE000F9A186BA00000000000000781980973A3A
-:101AF000000000000020005807809732000000001E
-:101B0000000000D802800032000000000000000049
-:101B10000700843200000000400800005721803A8E
-:101B2000000041021200004CF2C138B40000000075
-:101B3000000000000821803A0000000000000004BE
-:101B400008C0813200000000510000D802C00032FD
-:101B500000000000000000D402000032000000007D
-:101B6000CB1900200700003200001613020100808C
-:101B700032802DBC07004A022B010084780A02B98A
-:101B800000000000CB0000841841883400000000F1
-:101B90004D00000077A0813E00000000000800001A
-:101BA00007008032000016130410000007C086B240
-:101BB000000000000018000007C084320000161367
-:101BC0009F000028D8A082BC000068020400001C0E
-:101BD000D8E081BC0000161304010080626083BC61
-:101BE000000059022D000000D82080BA00005402E5
-:101BF000120100E802C021B218003600000000F80F
-:101C0000730A03F9000056020401008022802DBCF3
-:101C100000005902CD0100D8024084920000161342
-:101C20000401008002802DBC00001613800100809A
-:101C3000A2802FB600005302000000F8A2802F956A
-:101C400000005C020400008072802DBC00001613AE
-:101C50001200004412E238B200006602000000D810
-:101C600012802D9A0000000000000084F8418834A2
-:101C7000000016131200004412E238B218003600B9
-:101C8000000000F8730A03F90000640206010080F6
-:101C900022802DBC000016130401008002802DBCA0
-:101CA0000000161380010080A2802FB600005E02A3
-:101CB000670000F8A2802FB500005F02000000E876
-:101CC00002C02192000016130401008072802DBC16
-:101CD00000000000000000D802C000320000C9105F
-:101CE0000000004408802DF2000047020000003090
-:101CF000080000920000700280000080D2802FB6A1
-:101D000000006B02120100E802C021B21800360088
-:101D1000000000F8730A03F900006D02040100805E
-:101D200022802DBC00007002000000D80240849286
-:101D3000000016130401008002802DBC0000161361
-:101D400080010080A2802FB600006A02000000F827
-:101D5000A2802F9500000000CD000084F841883457
-:101D6000000016131200004412E238B20000000016
-:101D7000000000D40240003200000000000000A477
-:101D800022C0823A0000790204010080420086BC31
-:101D90000000000000080058074087320000780269
-:101DA0008F010074184087BA000000000000007422
-:101DB0000800003200007B0200040058F7A0869A59
-:101DC0000000000000000078F9A0863A280000001A
-:101DD00000080058878D973C00000000000000D8E4
-:101DE000024000321800000000000000B760853992
-:101DF000080000000008000087CD853700007E0243
-:101E00001200004CF2C138B400000000000000488D
-:101E100018A0843A00000000000000D40200003244
-:101E2000000000000000008057A1863A4100000039
-:101E30000006008C07003632000000000008008019
-:101E400007C08532000000000010008C074085327A
-:101E500000000000000000D80280003200001613CD
-:101E600004000058088071B20000000000000080EB
-:101E70000880003218003600000000F8730A03F9E9
-:101E800000008C020401008002802DBC00001613AB
-:101E900080010080A2802FB600008802000000F8B8
-:101EA000A2802F950000880204010080180088BCE1
-:101EB00000008F0290190058E89C85BA00000000CD
-:101EC000000000581880853A0000000000180080CB
-:101ED000078585300000940204010080420086BC22
-:101EE00000000000000000D80240003200000000A6
-:101EF00000000008898071370000950200120084FC
-:101F000027E48292000000000012008407000032E3
-:101F100000009902270000FC020085B2000099022F
-:101F20000400008042603DB318000000000000F88B
-:101F3000738A033995023600000000C00200369211
-:101F4000000016131200005C52812CB400009D02A8
-:101F500004010080028082BC000016138000008013
-:101F6000A2802FB60000A301000000D4020000925E
-:101F70000000A00204010018D8A081BC0000C91014
-:101F80000000004408802DF200002D02C70100303F
-:101F90000800009200002D02C701006CD8E0869A6C
-:101FA00008000000C60100F8934001391900000044
-:101FB00000000010090036320000801200000014FA
-:101FC000094081D200000000000000140845813063
-:101FD00000001613120100BC08C021B20000161345
-:101FE00080000080A2802FB60000F6038001808070
-:101FF000320B6AB600006A100000003C030038F2A1
-:102000000000AC020406018002C06EBC0000161382
-:10201000870601EC56E06EBA0000F3030000008072
-:102020000200009000001613870601EC56E06EBA1D
-:1020300000000000000000F842802F3408C0161392
-:1020400012000040A2CD39B218003600000000F89E
-:10205000730A03F90000161303B8000009C06EBD2F
-:10206000B202000000000088820D903A2F005E0648
-:102070000000001C080036920000161300000080CB
-:10208000020000902C005E060000001C0800369242
-:1020900000001613000000800200009000001613DC
-:1020A0000000008002000090000016130000008075
-:1020B0000200009038005E060000001C0800369206
-:1020C00039005E060000001C08003692080000007F
-:1020D000000000F89340013900001613120100BC03
-:1020E00008C021B20000161380000080A2802FB625
-:1020F0000000161380008080320B6AB600006A1060
-:102100000000003C030038F20000C102040000801F
-:10211000524082BC0000161304010080624082BC61
-:10212000000016130405018002C06EBC0000000010
-:10213000000000F842802F3408C01613120000403F
-:10214000A2CD39B218003600000000F8730A03F976
-:10215000000000000004017809C06E320000000099
-:10216000006201EC068097320900000000000010B8
-:1021700009003632000080120004011409C06ED23A
-:102180000200CB0204B8008082CD6EBC080016139A
-:1021900004B9008082CD6EBC00000000000601EC96
-:1021A000064000320000CC02B50000D8020000B2A8
-:1021B00000000000A50080A0360B6A34000000007B
-:1021C000003002E806C02C320000000000000000D1
-:1021D000078000320000000000000078A9002D37C1
-:1021E0001805010000080000C78D973A00000000A4
-:1021F0000000007899C02C3718010000000000781A
-:10220000898D973A000016130210000087BF97BA15
-:1022100000000000001800000740FE320000161306
-:1022200012000048F2C138B418003600000000F86F
-:10223000730A03F900000000001801E006000032F4
-:1022400000000000000000F882852F3000006806C2
-:102250000000001C0800369208000000000000F892
-:102260009340013900001613120100BC08C021B2CE
-:102270000000161380000080A2802FB660001613A5
-:10228000040100F8828D2FB007000000000000104C
-:10229000090036320000801200000014094081D28B
-:1022A0000000E50280008080320B6AB61700000053
-:1022B00000000010090036320000801200380014BF
-:1022C00009C06ED20000F6030000008002000090FA
-:1022D00000006A1000000038030038F20000E80235
-:1022E0000402018002C06EBC0000F303000201EC96
-:1022F00056E06E9A00000000C00301EC56E06E3A12
-:10230000000016138001008002802FB600C0161353
-:1023100012000040A28D39B218003600000000F80B
-:10232000730A03F9200016130439008082CD6EBCB5
-:102330001200000000000010090036320000801278
-:102340000030001409006ED21500000000000010DB
-:1023500009003632180000000002011489CD6E37E2
-:102360000000801200200114895B91D21B00F4024E
-:1023700038010010090036B200008012003001144C
-:1023800009006ED21800000000000010090036326B
-:102390000800000000000014790B143810008012AF
-:1023A00000500114A95B91D90000F902042801141E
-:1023B00009006EB21C00801200000010090036D225
-:1023C000000005033828001809006EB20000FD0265
-:1023D0000421010869246EBC000016130901008065
-:1023E000020000B0030068060000001C08003692DE
-:1023F0000000010302300080829B90BC00000003BB
-:102400000603018012C06EBC040068060000001CB8
-:1024100008003692050068060000001C080036928D
-:10242000000016130430008002006EB200000403A6
-:102430000603018012C06EBC0B0068060000001C81
-:10244000080036920C0068060000001C0800369256
-:10245000000008030421010869246EBC0000161363
-:1024600009010080020000B0030068060000001CA3
-:102470000800369200000C0302300080829B90BC62
-:1024800000000B030603018012C06EBC0400680646
-:102490000000001C08003692050068060000001CC1
-:1024A0000800369200000E039F31010C69246EBCB7
-:1024B000000000000000000C0900003200001203C0
-:1024C00004310004899B90BC0000110306030180C5
-:1024D00012C06EBC200068060000001C0800369286
-:1024E000210068060000001C080036920000161348
-:1024F0009F000080024090B200001503040201809A
-:1025000012C06EBC220068060000001C0800369253
-:10251000000017030401000039A490BC23006806E2
-:102520000000001C08003692000016139F00008077
-:10253000020090B2240068060000001C08003692D9
-:10254000080016130C0000F8634001B910001D03C9
-:10255000C50100CC02201598080091030C0000F87A
-:10256000434001B910000000C50100CC022015381D
-:102570000000000000000010090036320000801248
-:1025800000000014090080D200001613120100BCE4
-:1025900008C021B200006A100000003C030038F2BD
-:1025A000000000000000005C0805803000001613E9
-:1025B0000401008002402DBC0000161302010080BF
-:1025C00082FA85BC000016130601008092FA85BCD1
-:1025D0000000270336010080020000B00F006806EB
-:1025E0000000001C0800369210000000002C0200C1
-:1025F000A9DB8539000016131200005402A438B27A
-:10260000000000000008028C08C06E3200000000CC
-:10261000000C029828806E37000000000000009C2B
-:1026200038221437000032030430002808006EB24C
-:10263000000016130410006C08006EB200000000C9
-:102640000018004C08006E32000016130420001819
-:1026500008006EB200000000003C001408806E32DA
-:10266000050035030038020078E16E990000000093
-:10267000510000D80200003200000000003802784B
-:1026800009C06E32050000006808000077A1973984
-:10269000000037031201000009C021B21800360003
-:1026A000000000F8730A03F900000000545401FC14
-:1026B00002C06E3214103B0304000080A20D72B001
-:1026C0000000F3110000002809C002F20E006806A5
-:1026D0000000001C08003692000016130609008056
-:1026E00082BD72BC00004F03331500A402C072B259
-:1026F00000008C0380010080B20172B60101420328
-:1027000004290080828D74BC080A8C03042D00808B
-:10271000828D74BC000000000030007C080075321F
-:1027200000004903003800881800759C080A8C03D3
-:1027300004290080828D74BC10000000002C007CF5
-:10274000888D7537000000000030007C68DD87321E
-:10275000000048039F390088188075BC10000000F5
-:1027600000340088888D7537000049030000008818
-:102770001880889C1000000000340088689D88390B
-:1027800037000000000000100900363200008012FF
-:102790000000001409C087D23B00000000000010B8
-:1027A000090036320000801200000014098088D22F
-:1027B000000050039FF1018082DB87BC00008C0386
-:1027C000000000800200009000008C038000008068
-:1027D000B20172B60000000000080048080075321F
-:1027E00000000000001000700800753200000000BA
-:1027F000001C007438A2753700005503831B007855
-:1028000008C074B200000000000000F8C2802F343D
-:102810002F00000000000010090036320000801276
-:1028200000000014098084D2340000000000001071
-:10283000090036320000801200000014090087D21F
-:1028400000006B039F780180C2216EBC00005D0315
-:102850009F990164881B87BC00006C039F6801641A
-:10286000885B86BA000000000000006408000032A7
-:1028700000000000001600A402C072320000000038
-:10288000003C02A4B25B2A3A00000000003A027841
-:1028900009C06E3200006D0308010004E8A575BC94
-:1028A0003F000000000000100900363210008012C6
-:1028B00000040014695D80D910008C030B01001C1A
-:1028C000080036B200006B0304A10180829B84BC27
-:1028D000000068069F980180C2216EBC0000680657
-:1028E00006B10180825B87BC00008B030B01008076
-:1028F000020000B000006C0304990180C2216EBC8C
-:102900000000890302D4018092FB6EBC16006806A9
-:102910000000001C08003692170068060000001C2A
-:10292000080036921C0068060000001C0800369261
-:102930003F00000000000010090036321000801235
-:1029400000040014695D80D90000710304A10180B6
-:10295000829B84BC0000780306A80180825B80BC57
-:102960000000750304A9018002006EBC00008A0308
-:1029700004A10180829B84BC00008A0304010080C2
-:10298000124080BC140068060000001C080036924B
-:1029900000008A039FA0017829216EBC00008A03F1
-:1029A0000201008012A097BC00006B0300000080B1
-:1029B000020000900000850304000080028082BCB9
-:1029C000000016130402018002C06EBC00007E03EA
-:1029D00002000080A26080BC060068062C01001C7A
-:1029E000080036B200C0820304010080A28D2FB01F
-:1029F000060068060000001C0800369200008203F2
-:102A000004000080A26080BC0000810306030180F6
-:102A100012C06EBC090068060000001C0800369257
-:102A20000A0068060000001C0800369200008403BB
-:102A30000603018012C06EBC070068060000001C7F
-:102A400008003692080068060000001C0800369254
-:102A5000020068063801001C080036B20000880336
-:102A6000020C0280A25B80BC1F0068060000001CF4
-:102A7000080036921E0068060000001C080036920E
-:102A800000008D03000000280940009200008D0323
-:102A9000000000280980009200008D03000000283B
-:102AA00009C0009200008D03000000280900019277
-:102AB00030000000000000100900363200008012D3
-:102AC00000000014098092D20E00F3110000001CD7
-:102AD000080036F200006806000000800200009046
-:102AE000100016132A0000CC022015B80D000000BB
-:102AF00000000010090036320000801200000014AF
-:102B0000090080D200001613120100BC08C021B2D7
-:102B100000006A100000003C030038F21D00990319
-:102B20008001007809E000B800001613040100805D
-:102B3000328097BC1D0068060000001C0800369219
-:102B40000000161304010080228097BC150068065F
-:102B50000000001C08003692000000000000001C6D
-:102B6000A8052830000016130400008002C02CBC09
-:102B700000001613120100BC08C021B20000161399
-:102B800080000080A2802FB660001613040100F8B8
-:102B9000828D2FB008000000000000F8834001394A
-:102BA0003600A4030400008082CD81BC0500000033
-:102BB00000000010090036320000801200000014EE
-:102BC00009C081D20000020480018080320B6AB605
-:102BD00000006A1000000038030038F22C0068067C
-:102BE0000201008082CD81BC00005E0600000080F2
-:102BF0000200009000001613120100BC08C021B2B0
-:102C00000000AB031D41025CF80168B44100F3030E
-:102C1000000000F8A28D2F91350000000000001088
-:102C200009003632000080120000001409C085D26D
-:102C300010000000D02C0200A9DB85390000290318
-:102C40001201005402A438B20000161300000080E4
-:102C5000020000900000B40304B0008002006EBCCB
-:102C60000000B40380B9008082806EB600000013BB
-:102C70000078016008006EF230005E06D700001C8C
-:102C8000080036920000B60380010080D2812FB682
-:102C900031005E06D700001C080036920000B80321
-:102CA0008001008042812FB635005E06D700001CEF
-:102CB000080036920000C50304A8010809006EB29E
-:102CC0000000000000200208899B903E00000000E8
-:102CD00000A00108899B903A0000C5039F88010865
-:102CE000899B90BC000000000034020009C06E3DCA
-:102CF00000000000000C020409A46E370000C103AC
-:102D00000200008012A490BC000000000000000837
-:102D1000198090370000C50302010280829B90BC9D
-:102D200031005E06D700001C080036920000C50383
-:102D300004B0008002006EBC0012C50304010080D4
-:102D4000A28D2FB032005E06D700001C080036921C
-:102D50000000F303000000F872812F9500000000CE
-:102D6000000000F842802F3408C0AF02120100407A
-:102D7000A2CD39B2000016130000008002000090BE
-:102D800008000000000000F893400139080000002E
-:102D9000000000100900363200008012000000140C
-:102DA00009C081D2000016130400008002C02CBCB0
-:102DB0000000161380000080A2802FB6600016135A
-:102DC000040100F8828D2FB0000002048001808091
-:102DD000320B6AB600000000000000140840903278
-:102DE00000006A1000000038030038F22C0068066A
-:102DF0000201008082CD81BC00005E0600000080E0
-:102E00000200009008000000000000F89340013923
-:102E10000800000000000010090036321000801287
-:102E200000000014894D81D70000161304000080B3
-:102E300002C02CBC0000161380000080A2802FB6B8
-:102E400060001613040100F8828D2FB00000020408
-:102E500080018080320B6AB600006A1000000038E2
-:102E6000030038F20000DF030420018052206EBC12
-:102E70000000161309010080020000B02600680659
-:102E80000000001C08003692250068060000001CA7
-:102E9000080036920000E503040100D81E80EDBC56
-:102EA0000000E103B70000D80EC0EDB20000E4035B
-:102EB00004010080423BEEBC00000000000000E086
-:102EC0001E00EE3A00000000A70000D00E00EE3217
-:102ED00000000000007486CC02806C32000000000C
-:102EE000000000000940E7320000E9038001808013
-:102EF000320B6AB6360016131200002C82CD2EB2A9
-:102F00000000EB030401008042C52CBC0000EC0370
-:102F1000000000CC0200009200000000000000CC85
-:102F200012C02C3A0000E70304010000190090BC15
-:102F300000000000007486C806C02C32080002049D
-:102F4000000000F8C34001990000F1030400008074
-:102F5000028080BC0000161304550180B2DB2FBC38
-:102F6000000054100000002C090000F20000F603DD
-:102F700000000080020000900000F50304000080C3
-:102F8000028080BC0000161304550180B2DB2FBC08
-:102F9000000054100000002CF90100F40000FF03B1
-:102FA00004000028098080B200000000000000D862
-:102FB000020000320000811100000008080000D269
-:102FC0000000FF0304000080028092BC180036005D
-:102FD000000000F8730A03F9000002048001008079
-:102FE000A2802FB6000002041201000009C021B225
-:102FF00018000000000000F8730A033902043600CC
-:10300000000000C00200369200000204800100802F
-:10301000A2802FB6000002041201000009C021B2F4
-:1030200018003600000000F8730A03F900000000E1
-:10303000000000F80200003218003600000000F81E
-:10304000738A029910000000000000E40300363289
-:1030500002000001000000E0030037320000000021
-:10306000000000E40300363204000001000000E02C
-:1030700003003732AA040000000000E403003632E7
-:1030800009000001000000E00300373200000000EA
-:10309000000000CC0F00003200070000000000E438
-:1030A0000300363206000001000000E00300373262
-:1030B00020000000000000E4030036320800000198
-:1030C000000000E00300373200010000000000E4CF
-:1030D0000300363205000001000000E00300373233
-:1030E00030000000000000E4030036320700000159
-:1030F000000000E00300373200A00000000000E400
-:103100000300363208000008000000E003003732F8
-:1031100000000000000000A00200003200000000DB
-:10312000000000000B000032000016048B0100A01C
-:1031300012002ABA00000000000000A802000032BD
-:1031400000000000000000E0070000320000190449
-:103150000601008002802ABC000000000000009CE4
-:103160000200003200000000000000D40200003223
-:1031700000000000000000CC02000032000000004F
-:10318000000000D80200003200000000000000D063
-:103190000200003200000000000000DC02000032EB
-:1031A00000000000000000F80200003200000000F3
-:1031B000000000C80200003200000000000000C44F
-:1031C0000200003200001C048501009C12C029BAD4
-:1031D00000000000000000E4030036320B00000491
-:1031E000000000E00300373280000000000000E42F
-:1031F0000300363213000004000000E00300373201
-:1032000000200000000000E4030036320C0000043F
-:10321000000000E00300373200000000000000E47E
-:10322000030006320F000004000000E00300373204
-:1032300000040100000000E4030037320D00000428
-:10324000000000E00300373200040000000000E44A
-:103250000300363214000004000000E0030037329F
-:103260009F000000000000E4030036321500000457
-:10327000000000E00300373200000000000000E41E
-:103280000300363218000004000000E0030037326B
-:1032900060000000000000E4030036321D0000045E
-:1032A000000000E00300373200000000000000E4EE
-:1032B000030004321E000004000000E00300373267
-:1032C00070000000000000E4030036321F0000041C
-:1032D000000000E00300373200000000000000E4BE
-:1032E0000300003220000004000000E00300373239
-:1032F000A0030000000000E40300363217000004C1
-:10330000000000E00300373240000000000000E44D
-:10331000030036321B000004000000E003003732D7
-:1033200060000000000000E4030036321C000004CE
-:10333000000000E00300373200000000000000E45D
-:103340000340003216000004000000E003003732A2
-:1033500000010000000000E4030036321A000004FF
-:10336000000000E00300373220010000000000E40C
-:103370000300363219000004000000E00300373279
-:1033800080000000000000E4030036320B00000162
-:10339000000000E00300373200010000000000E4FC
-:1033A000030036320C000001000000E00300373259
-:1033B000FEFF0000000000AC0200363200000000FA
-:1033C000000000000900003218000000000000F8B2
-:1033D0000364023900004F0485010000190090BA0F
-:1033E00025260000000000E4030036320100000141
-:1033F000000000E003003732000000000000008001
-:103400000F00003200000000000000840F000032B6
-:1034100008000000000000F8F34001390800000037
-:10342000000000F8E340013908000000000000F847
-:10343000C340013908000000000000F8B340013922
-:1034400008000000000000F8A34001390800000057
-:10345000000000F89340013908000000000000F867
-:103460008340013908000000000000F87340013972
-:1034700008000000000000F8634001390800000067
-:10348000000000F85340013908000000000000F877
-:103490004340013908000000000000F833400139C2
-:1034A00008000000000000F813400139000000008F
-:1034B000000000F80380003200000000000000C897
-:1034C0003F80FC35000000000000009C020000323C
-:1034D0000000000000000000030000323E00000079
-:1034E000000000D00200363200000000000000287A
-:1034F000034038320000161304010080D20130B6B8
-:1035000000006704040100D012002DBCA0040000DC
-:10351000000000E40300363203000001000000E078
-:103520000300373200000000170000D00200003214
-:1035300000000000000000ACE100003400000000CA
-:10354000000001E00600003200000000000801E475
-:103550000600003200000000000E01EC0600003200
-:1035600000000000001001E0060000320000000032
-:10357000000000D012002D3A3E006F0402010080CE
-:10358000820D2DBC020000000000009CAE0D023236
-:1035900000000000000000A802000032300000001F
-:1035A000008886CC0700363200000000008A86CCF6
-:1035B0000700003A002400000000000409803632B1
-:1035C0000000161312000064024090B200000000D8
-:1035D000000000042940903A00007B0412000078AB
-:1035E00009C020B20000161380010080F28197B656
-:1035F0001D00161380010078E9E500B80000000006
-:103600000000007809459030000079040201008034
-:10361000C28297BC0000000000000084020000325B
-:1036200000000000000000CC030000320000810414
-:103630008E010080024028B20000BD10000000D8BA
-:10364000020000D2AA1100000000008C0E003632E9
-:1036500052000000000000740E0036321800000016
-:10366000000000E40300363209000002000000E020
-:1036700003003732FECA0000000000E403003632C7
-:103680000A000002000000E00300373200008C0452
-:1036900012010000094020B200008A0400000080EE
-:1036A0000200009000008C0412000004094020B2C7
-:1036B00000008F049F010080020090B200008E0481
-:1036C00012000008094020B202008A0404010078B8
-:1036D000092417B8060000000000007809641638B5
-:1036E00000008A0404010080028197BCFE000000F3
-:1036F0000000004403003632FE003600000000489F
-:10370000030036920000161312000000094020B298
-:103710000000950412000004094020B20000980443
-:103720009F010080020090B2000097041200000880
-:10373000094020B200000000000000B402009032F6
-:103740000000161300000080020000900000161315
-:1037500000000080020000900000161300000080AE
-:10376000020000900000161300000080020000908C
-:1037700000001613000000800200009000001613E5
-:10378000000000800200009000001613000000807E
-:10379000020000900600AA040000000C09641698BC
-:1037A0000000A10200000014084090920000DB021B
-:1037B00000000014084090923400C9030000001C6F
-:1037C000080036921200C9030000001C080036925F
-:1037D0003A00C9030000001C0800369200001613CE
-:1037E00000000080020000900000BA0200000014F7
-:1037F000084090920000DE0400000080020000906B
-:103800000000D4030000001408409092AB040000B4
-:103810000000008882CD903A0D00CD04000000FC2D
-:1038200002E416980D00DF04000000FC02E4169884
-:103830000D00E804000000FC02E416980000F60405
-:103840000000008002000090000000050000000061
-:103850000940909D000006050000008002000090D5
-:1038600000001005000000800200009000001A0512
-:10387000000000800200009000002405000000000D
-:103880000940909D00002B05000000800200009080
-:1038900000003405000000000940909D00003B0539
-:1038A00000000080020000900000AA050000000057
-:1038B000090000920000AA050000000009400092E3
-:1038C0001D07AC05000000A0020036920000BA05FA
-:1038D000000000800200009000001613000000802D
-:1038E000020000900000DE04000000DC0F40909217
-:1038F00000007E05000000800200009000008305AB
-:10390000000000D40200009210009805000000841E
-:103910001F6414980000DE04000000EC0E4090923A
-:103920000000A40500000080020000900000DE04FA
-:10393000000000D40E4090920000A7050000008017
-:103940000200009000004E06000000DC0E40909245
-:103950000000CB0500000080020000900800D005A8
-:10396000000000501F2416980000E805000000D851
-:10397000020000920D00F305000000FC02E416981E
-:103980000000F405000000D00200009200001F01BA
-:10399000000000D00200009200001513000000801B
-:1039A000020000900000161300000080020000904A
-:1039B00008000000000000F89340013900000000FA
-:1039C00000000078094590300000161306010080C1
-:1039D000228097BC3F00161304010080820D00B0C6
-:1039E0000200D104B00000A0F20B00B900000000FA
-:1039F000A00000046B4190340000020480010080AC
-:103A00000240B0B600000204040000800280B0BC96
-:103A100000000000000000D802000032000000009A
-:103A2000000000A822C02F370000000000000000A6
-:103A3000670100340042000000080000878D2A3A28
-:103A400000001613041000000700B0B200000000D0
-:103A5000001800000700D0320000161312000048C2
-:103A6000F2C138B418000000000000F8730A0339EE
-:103A700002043600000000C0020036920800020472
-:103A8000000000F8934001990000E2049F000080CC
-:103A9000020090B2000000000000000809409032CF
-:103AA000000000000000000409C0FD320200E20432
-:103AB000B00000A0F20B00B9000000000000000000
-:103AC0000B80903200000000000000000D4090329A
-:103AD00000000000A00000043B40B0310000DE0404
-:103AE0000400008002C02FBC8411DE040000008CA2
-:103AF0000E003692000016130200008002C12FBC97
-:103B000008000000000000F8934001390200EA04B8
-:103B1000B00000A0F20B00B90000ED0480010080AD
-:103B20001240B0B600000000000000043B40B0337B
-:103B30000000000000000004FD4BD0350000000034
-:103B4000000000080B00003200000000A000000C84
-:103B50001BE4B032000002040B000080020000B041
-:103B60000000F30404000080024090B21F00020431
-:103B700000000080114000990000F2040400008061
-:103B8000123EF8BA00000000000000800100F83288
-:103B900000000204000000900140F892000016139B
-:103BA000800000800281FCB60000FA049F000080C3
-:103BB000020090B2000000000000000809409032AE
-:103BC000000000000000000409C0FD3200001613D0
-:103BD00004010080428590B000000000000000E475
-:103BE0000380903209000004000000E00300373237
-:103BF00000000000000000E4034090320A000004CE
-:103C0000000000E0030037320000DE04000000C8BE
-:103C10000F81FC940000161302010080724290BCD8
-:103C20000000161306010080E24290BC000016134B
-:103C300004010078096490B500000000000000E471
-:103C40007300903C10000004000000E003003732D5
-:103C50000000DE0400000080020000900000090562
-:103C60009F000080020090B20000000000000008E9
-:103C700009409032000000000000000409C0FD323D
-:103C80000000161304010080428590B0000000007F
-:103C9000000000E40380903201000004000000E016
-:103CA0000300373200000000000000E00F80903277
-:103CB00000000000000000E4034090320200000415
-:103CC000000000E0030037320000DE04000000E4E2
-:103CD0000F409092000013059F000080020090B2F8
-:103CE00000000000000000080940903200000000C1
-:103CF0000000000409C0FD3200001613040100801A
-:103D0000428590B000000000000000E40380903283
-:103D100003000004000000E0030037320000000050
-:103D2000000000A80E80903200000000000000E4B7
-:103D30000340903204000004000000E0030037322A
-:103D40000000DE04000000AC0E40909200001D0553
-:103D50009F000080020090B20000000000000008F8
-:103D600009409032000000000000000409C0FD324C
-:103D70000000161304010080428590B0000000008E
-:103D8000000000E40380903205000004000000E021
-:103D90000300373200000000000000E403409032CE
-:103DA00006000004000000E00300373200000000BD
-:103DB000000000440F8090320000DE040000004844
-:103DC0000F4090920000161306010080824290BCC2
-:103DD0000000161304010078096490B5000028055E
-:103DE00004010080824290BC00000000000000003E
-:103DF0000900003200000000000000E403009032DF
-:103E000012000004000000E0030037320000DE046E
-:103E1000000000401F40909C00002E059F00008085
-:103E2000020090B20000000000000008094090323B
-:103E3000000000000000000409C0FD32000016135D
-:103E400004010080428590B000000000000000E402
-:103E50000380903207000004000000E003003732C6
-:103E600000000000000000E403409032080000045D
-:103E7000000000E0030037320000DE040000008094
-:103E8000020000900000161306010080824290BCE0
-:103E90000000161304010078096490B5000038058D
-:103EA00004010080824290BC00000000000000007D
-:103EB0000900003200000000000000E4030090321E
-:103EC00011000004000000E0030037320000DE04AF
-:103ED000000000FC1F40909C00003E059F000080F9
-:103EE000020090B20000000000000008094090327B
-:103EF000000000000000000409C0FD3203090000BA
-:103F0000000000280800363200005705000000308D
-:103F1000080036D20000610500000044088000D28D
-:103F20000000470504010080020084B2030E000077
-:103F300000000028080036328000570500000030DD
-:103F4000080036D2000061050000004408C000D21D
-:103F50000000470504010080020084B200004E0505
-:103F600000000044080001928002000000000000F0
-:103F7000070036328C0501000008000007003732C8
-:103F80000000161304100000078090B2000000002B
-:103F900000180000074090320000000000000048B8
-:103FA000F2C138340000161312000080020000B085
-:103FB00018003600000000F8730A03F92000000022
-:103FC000000000E40300363209000002000000E0B7
-:103FD0000300373200000000000000E40340843298
-:103FE0000A000002000000E0030037328C050100E7
-:103FF000000000A802003732A0000000000000000E
-:104000000900363200000000000000E00700003226
-:104010000000540506010000190090BC0000DE04F9
-:1040200000000080020000908C050100000000C824
-:1040300002003732800200000000003C08003632E7
-:1040400000000000000000340800013200005C05A0
-:1040500002000080D2E083BC0000000000000034B9
-:1040600008C083320000720500000080020000F0EA
-:1040700000000000000000A0078083320000000064
-:1040800000000030D820833A00005A050401003CAB
-:10409000D8E083BC00000000000100800200005056
-:1040A0000000000000000040080000320000000096
-:1040B00000000048080000328C050100000000C824
-:1040C0000200373200020000000000C8828D2C3A46
-:1040D000800000000000003C0800363200000000B4
-:1040E00000000078098078325A5A000004010080EC
-:1040F000828D975C00006A0502010048A89E84BA80
-:1041000000000000000000481880843A00006805A4
-:104110000601003C28C083BC0000000000000078BD
-:10412000098584301000000000000048888D843626
-:1041300000006F0590010048E8A584BA0000000067
-:10414000000000481880843A000000000000004889
-:104150000885843000000000040100800285845C32
-:104160000000000000010040084000520000000074
-:10417000000000E40300833201000002000000E0C0
-:10418000030037320C0078050000002CD8A082F91B
-:1041900005000002000000E00300373200000000CC
-:1041A0000000008002000030000000000001003824
-:1041B00008403E7200000000000000E403C08232AC
-:1041C00002000002000000E003003732020000029B
-:1041D000000000E003003732000000000000008013
-:1041E0000200003000007A0580000080F2403EB6F8
-:1041F0000000000000010080020000700000810546
-:104200009F000080020090B2000000000000000843
-:1042100009409032000000000000000409C0FD3297
-:1042200000000000000000840E8090320000DE04D8
-:10423000000000880E40909208000000000000F886
-:1042400093400139000087059F000080020090B272
-:10425000000000000000000809409032000000004B
-:104260000000000409C0FD32000000000000002032
-:104270000740F5320000000000080020070000326F
-:10428000000000000010002007C0F5320000000010
-:10429000001800200740F632000000000020002037
-:1042A0000780F632000000000028002007C0F63228
-:1042B00000000000003000200700F732000000007E
-:1042C000003800200780FF3200000000000000D806
-:1042D0000200003200000000000000000740093228
-:1042E000000000000008000077C02937000000002F
-:1042F000001000000780903200000000001800004D
-:10430000074090320000161312000048F2C138B482
-:1043100018003600000000F8730A03F900000000DE
-:1043200000000008C80100340000F603000000FC93
-:104330000200009200009A0580010080F24190B6D0
-:1043400000009B05000000C82F81FC9400000000C5
-:10435000000000C82F81FC35000000000000008034
-:104360000F45903000009E0502000080027EF8BCE0
-:1043700000000000000000840F00F8320000000080
-:10438000000000001940F837000000000000008421
-:104390003F40F83700000000000000840F64F83A46
-:1043A00000000000000000001900F83700000000C5
-:1043B000000000803F00F8370000DE0400000080AD
-:1043C0000F24F89A0000A60580010080F24190B603
-:1043D0000000DE04000000C83F81FC940000DE0401
-:1043E000000000C83F81FC950000A9050401008081
-:1043F000024090BC000000000000000409C0003230
-:104400000000DE04000000E41E40909C000000005C
-:10441000000000A8220090370000DE04000086C0E3
-:104420000740909208000000000000F89340013916
-:104430000D000000000000FC02E41638000000003F
-:1044400000000000090002320000B40504000080F2
-:104450000200B0B200000000000000000B000032BB
-:1044600020000000000000A0820D2A3A0000AF05E5
-:1044700004010000190090BC0000B60500000028EF
-:104480007901009400000000000000C83F80FC3467
-:1044900040800000000000280980363200008111B1
-:1044A000000000D8020000D20000020404000080D6
-:1044B000028092BC18000000000000F8730A033963
-:1044C00002043600000000C002003692EA05C00572
-:1044D00004010080824D90BC00000000000000EC50
-:1044E0000F00153200FE1F00000000F00F003732F1
-:1044F000F0FF0000000000E80F00363298050000D1
-:10450000000000F40F0036320000C605000000C8AD
-:104510004F80FC953623161304010080824D90BC19
-:1045200000000000000000EC0F80143200F81F00B3
-:10453000000000F00F003732C0FF0000000000E86C
-:104540000F00363298270000000000F40F003632CA
-:1045500000000000000000C84F80FC340400000090
-:10456000000000608F4D903A00001613600100803B
-:10457000020000B0000016137A010080020000B0B3
-:104580000000421100000080020000D00000DE04A4
-:1045900000000080020000900000CD058001008036
-:1045A000024090B600000000000000C86F80FC349C
-:1045B0000000CF0580010080124090B6000000008E
-:1045C000000000C85F80FC340000DE0400000080B2
-:1045D000020000900000D20504010080B24190B0BA
-:1045E0008007DE04000000C88F8DFC910000D40518
-:1045F00080000080124090B60000D505000000C881
-:104600007F80FC9500000000000000C87F80FC3423
-:104610000000D70580000080024090B60000D80559
-:10462000000000C88F80FC9500000000000000C85A
-:104630008F80FC340000DA0580000080424090B694
-:104640000000DB05000000C89F80FC950000000012
-:10465000000000C89F80FC340000DD058000008061
-:10466000324090B60000DE05000000C8AF80FC9527
-:1046700000000000000000C8AF80FC340000E1052D
-:1046800080000080224090B6841100000000008C61
-:104690000E0036320000E305000000C81F81FC95C3
-:1046A000AA1100000000008C0E003632000000004D
-:1046B000000000C81F81FC340000161306010080B2
-:1046C0008202F5BC00001613030000780900F5BD56
-:1046D0000000161304010080E225F5B5100000006B
-:1046E0000000004C1F2416380000DE0400000050BB
-:1046F0001F00F59C8007161304000080828DFCB01B
-:104700000000EC059F000080020090B20000000055
-:104710000000000809409032000000000000000482
-:1047200009C0FD3200000000000000001700F53A4B
-:104730008C04010000080000070037320000161347
-:1047400004100000078090B2000000000018000074
-:10475000074090320000161312000040F2C138B436
-:1047600018003600000000F8730A03F90000DE04A8
-:1047700000000080020000900000DE04000000EC59
-:10478000034090920000161304000080024090BC89
-:104790000000F505B20000D8020000B200000000E1
-:1047A000000201EC16E46E3A08000000000000F878
-:1047B0009340013900001F06171001F802006EB285
-:1047C0000600000604010080828D2FB00300000067
-:1047D000000000F8828D2F3200C061100000002818
-:1047E000098036D200000000000201EC16C06E3CC9
-:1047F00000000000001886C80600003218003600CD
-:10480000000000F8730A03F900000106000000D060
-:1048100002000092000007060419868002806CBC2A
-:10482000000016138001008012802FB600000000E7
-:104830000000000009006E3200000000C108000402
-:1048400009006E3200000000C01586780FC06C327F
-:1048500000000D068001008022802FB600000D06AA
-:10486000001886C8064000920000161380010080E0
-:1048700022802FB6000000000040000009006E32C8
-:1048800000000000C248000409006E320000000071
-:10489000C01686780FC06C3200000D0680010080C3
-:1048A00012802FB600000000001886C806000032F3
-:1048B0000040000000000028098036320000150684
-:1048C0000402018002C06EBC00006110000201EC15
-:1048D00016C06EDC000013068000008002802FB638
-:1048E00000001506810000F822802FB40000150694
-:1048F000001886C80640009200001506820000F8E5
-:1049000012802FB400000000001886C80600003294
-:10491000000016130401008002002DBC00001613D5
-:104920000401008002802DBC00000000001086C839
-:1049300006000032000000000000000007C00A323C
-:10494000003800000008000007003632000016138F
-:1049500004100000070090B20000000000180000E2
-:10496000074090320000161312000040F2C138B424
-:1049700018003600000000F8730A03F90000000078
-:10498000170100F8A2802F34000016130210868051
-:1049900072826CBC00000000001086A842806C3758
-:1049A00000002A061200703802007EB200001613C2
-:1049B0001200703C02007EB200001613120070302C
-:1049C00002007EB2000016131200703402007EB2A4
-:1049D0000000210602010080B2822ABC0000000013
-:1049E000170000D00200003206000006040100801B
-:1049F000828D2FB00000FA050403018002C06EBC56
-:104A000000003506000000800200009000002C0627
-:104A10000403018002C06EBC00003506001086C889
-:104A200046802A9600000000001086C846802A367C
-:104A3000000030068000008012802FB6030032068E
-:104A4000220000F8828D2FB200003206001886C8BE
-:104A500006000092000035068000008022802FB6FC
-:104A600000000000C20100F802802F3500C0611074
-:104A700000000028098036D200000000000201EC8E
-:104A800016C06E3C18003600000000F8730A03F9E7
-:104A900000000000001001E006802F32000000003E
-:104AA000000000A8E100003400000000A20000FCAB
-:104AB000020000320000F60380010080A2802FB6C1
-:104AC00000003B06B90100D8028001B20000F603E5
-:104AD000000000F802000092000000000000003812
-:104AE0001880F73A0000000000000038F8BF83305B
-:104AF00000003F0604010080F2BD83BC0000F60305
-:104B0000A90000F80200009200C046061801000C3F
-:104B1000A8CD3EB200004206840000741F40F7BAE0
-:104B20000000F603A90000F8020000920000000057
-:104B3000000000740F00003200C046061801000C8F
-:104B4000A8CD3EB218003600000000F8738A03F9C1
-:104B500000004306000000B00200009200000000C8
-:104B60000000007C0F80833200000000002800005D
-:104B70000700003200000000003000000700003293
-:104B800000010080003800000700373200000000FC
-:104B9000003C000C0780833200001613120000480E
-:104BA00002C080B20000161380010080A2802FB6E0
-:104BB0000000F603A9000008E80100940000540674
-:104BC00004010080A2C0EDBC52000000000000748F
-:104BD0000E00363200000000000000C00E4001321E
-:104BE000407E0500000000B40E00373200000000D7
-:104BF000000000C40E80073264005A06000000CC9A
-:104C00000E003692640016130401008082CDEDBCC4
-:104C100029000000000000740E0036320000000081
-:104C2000000000C00E400032A08C0000000000B464
-:104C30000E00363200000000000000C40EC000323A
-:104C400000000000000000CC0E80023210000000C6
-:104C5000000000E4337BEC391E000001000000E09E
-:104C60000300373200000000000000C86EC0EC37BF
-:104C70000000DE04000000D80EC0ED920000161304
-:104C800004310280A2DB2CBC00001613040100805A
-:104C9000028080B200001613021C018052C06EBC5C
-:104CA0002C0016130201008082CD81BC3F00161338
-:104CB0000200008082CD81BC3600670604000080BF
-:104CC00082CD81BC0F0000000000001009003632C8
-:104CD0002C0000000000001489CD813C10008012DF
-:104CE000001C011459E46ED96F0600000000008812
-:104CF00082CD813A0000161304010080028080B248
-:104D00000000161304310280A2DB2CBC0000161335
-:104D10000218018092C06EBC2C00161302000080A5
-:104D200082CD81BC10000000000000100900363266
-:104D3000100080120018011479E06ED96F0600008F
-:104D40000000008882CD813AAE060000001801887C
-:104D500082CD6E3AB70600000018018882CD6E3A07
-:104D6000C00600000018018882CD6E3AC906000016
-:104D70000018018882CD6E3AD20600000018018822
-:104D800082CD6E3ADB0600000018018882CD6E3AB3
-:104D9000E40600000018018882CD6E3AED0600009E
-:104DA0000018018882CD6E3AF606000000180188CE
-:104DB00082CD6E3AFF0600000018018882CD6E3A5F
-:104DC000080700000018018882CD6E3A1107000024
-:104DD0000018018882CD6E3A1A0700000018018879
-:104DE00082CD6E3A230700000018018882CD6E3A0A
-:104DF0002C0700000018018882CD6E3A35070000AC
-:104E00000018018882CD6E3A3E0700000018018824
-:104E100082CD6E3A470700000018018882CD6E3AB5
-:104E2000500700000018018882CD6E3A5907000033
-:104E30000018018882CD6E3A6207000000180188D0
-:104E400082CD6E3A6B0700000018018882CD6E3A61
-:104E5000740700000018018882CD6E3A7D070000BB
-:104E60000018018882CD6E3A86070000001801887C
-:104E700082CD6E3A8F0700000018018882CD6E3A0D
-:104E8000980700000018018882CD6E3AA107000043
-:104E90000018018882CD6E3AAA0700000018018828
-:104EA00082CD6E3AB30700000018018882CD6E3AB9
-:104EB000BC0700000018018882CD6E3AC5070000CB
-:104EC0000018018882CD6E3ACE07000000180188D4
-:104ED00082CD6E3AD70700000018018882CD6E3A65
-:104EE000E00700000018018882CD6E3AE907000053
-:104EF0000018018882CD6E3AF20700000018018880
-:104F000082CD6E3AFB0700000018018882CD6E3A10
-:104F1000040800000018018882CD6E3A0D080000D8
-:104F20000018018882CD6E3A16080000001801882A
-:104F300082CD6E3A1F0800000018018882CD6E3ABB
-:104F40000000A803000000D4020000920000EC0260
-:104F5000000000800200009028080000001C01886A
-:104F600082CD6E3A2D080000001C018882CD6E3A79
-:104F700032080000001C018882CD6E3A370800001C
-:104F8000001C018882CD6E3A3C080000001C01889C
-:104F900082CD6E3A41080000001C018882CD6E3A35
-:104FA00046080000001C018882CD6E3A4B080000C4
-:104FB000001C018882CD6E3A50080000001C018858
-:104FC00082CD6E3A55080000001C018882CD6E3AF1
-:104FD0005A080000001C018882CD6E3A5F0800006C
-:104FE000001C018882CD6E3A64080000001C018814
-:104FF00082CD6E3A69080000001C018882CD6E3AAD
-:105000006E080000001C018882CD6E3A7308000013
-:10501000001C018882CD6E3A78080000001C0188CF
-:1050200082CD6E3A0000B003000000D4020000926E
-:105030000000C603000000D4020000920000710AC4
-:10504000000000100880019200001613000000808C
-:105050000200009000001613000000800200009083
-:1050600000001613000000800200009000001613DC
-:105070000000008002000090000016130000008075
-:105080000200009000001613000000800200009053
-:1050900000001613000000800200009000001613AC
-:1050A0000000008002000090000016130000008045
-:1050B000020000900000B10A000000100880009279
-:1050C000000016130000008002000090000016137C
-:1050D0000000008002000090000016130000008015
-:1050E00002000090000016130000008002000090F3
-:1050F000000016130000008002000090000016134C
-:1051000000000080020000900000161300000080E4
-:1051100002000090000016130000008002000090C2
-:105120000000161300000080020000900000C00A7A
-:10513000000000100880009200001613000000809C
-:105140000200009000001613000000800200009092
-:105150000000130B0000001008400192000016131D
-:105160000000008002000090000016130000008084
-:105170000200009000001613000000800200009062
-:1051800000001613000000800200009000001613BB
-:10519000000000800200009000001B0B00000010C7
-:1051A00008C000920000161300000080020000906A
-:1051B00000001B0B0000001008C000920000220E2F
-:1051C000000000100840019200001613000000804B
-:1051D0000200009000001B0B0000001008C00092AD
-:1051E000000016130000008002000090000016135B
-:1051F00000000080020000900000161300000080F4
-:105200000200009000002E0B0000001008C0009269
-:1052100000001613000000800200009000002E0B1A
-:105220000000001008C000920000220E00000010D4
-:105230000840019200001613000000800200009058
-:1052400000002E0B0000001008C000920000161392
-:105250000000008002000090000016130000008093
-:105260000200009000001613000000800200009071
-:1052700000002C0B0000001008C000920000161364
-:10528000000000800200009000002C0B00000010C5
-:1052900008C000920000220E000000100840019299
-:1052A00000001613000000800200009000002C0B8C
-:1052B0000000001008C000920000161300000080DB
-:1052C0000200009000001613000000800200009011
-:1052D000000016130000008002000090000016136A
-:1052E00000000080020000900000F50B000000109C
-:1052F00008C000920000180B000000100800019286
-:105300000000130B0000001008400192000016136B
-:1053100000000080020000900000161300000080D2
-:1053200002000090000016130000008002000090B0
-:105330000000161300000080020000900000161309
-:1053400000000080020000900000161300000080A2
-:10535000020000900000EB0B00000010088000929B
-:105360000000180B00000010080001920000130B51
-:105370000000001008400192000016130000008099
-:105380000200009000001613000000800200009050
-:1053900000001613000000800200009000001613A9
-:1053A0000000008002000090000016130000008042
-:1053B0000200009000001613000000800200009020
-:1053C0000000EB0B00000010080001920000180B19
-:1053D00000000010080001920000130B00000010F4
-:1053E00008400192000016130000008002000090A7
-:1053F0000000161300000080020000900000161349
-:1054000000000080020000900000161300000080E1
-:1054100002000090000016130000008002000090BF
-:105420000000161300000080020000900000790CBC
-:1054300000000010088000920000180B000000100F
-:10544000080001920000130B0000001008400192B8
-:1054500000001613000000800200009000001613E8
-:105460000000008002000090000016130000008081
-:10547000020000900000161300000080020000905F
-:1054800000001613000000800200009000001613B8
-:1054900000000080020000900000790C0000001065
-:1054A000080001920000180B000000100800019293
-:1054B0000000130B000000100840019200001613BA
-:1054C0000000008002000090000016130000008021
-:1054D00002000090000016130000008002000090FF
-:1054E0000000161300000080020000900000161358
-:1054F000000000800200009000002D0B0000001052
-:105500000880009200001613000000800200009046
-:1055100000002D0B00000010088000920000220EF9
-:1055200000000010084001920000161300000080E7
-:10553000020000900000161300000080020000909E
-:1055400000001613000000800200009000001613F7
-:105550000000008002000090000016130000008090
-:105560000200009000002D0B0000001008000192C6
-:1055700000001613000000800200009000002D0BB8
-:1055800000000010080001920000220E0000001030
-:1055900008400192000016130000008002000090F5
-:1055A0000000161300000080020000900000161397
-:1055B0000000008002000090000016130000008030
-:1055C000020000900000161300000080020000900E
-:1055D00000001613000000800200009000007D080B
-:1055E0000000001008000192000016130000008067
-:1055F0000200009000007D080000001008400192A9
-:105600000000161300000080020000900000161336
-:1056100000000080020000900000161300000080CF
-:1056200002000090000016130000008002000090AD
-:105630000000161300000080020000900000430EDE
-:1056400000000010084001920000390E0000001018
-:10565000084001920000430E000000100840019233
-:105660000000130B00000010084001920000161308
-:1056700000000080020000900000430E00000010B7
-:105680000840019200001613000000800200009004
-:105690000000161300000080020000900000B90A0C
-:1056A00000000010084000920000B90A000000103D
-:1056B000088000920000B90A0000001008C00092A3
-:1056C0000000B90A00000010080001920000BE0AA4
-:1056D00000000010084001920000B90A000000100C
-:1056E000088001920000B90A0000001008C0019271
-:1056F0000000161300000080020000900000161346
-:1057000000000080020000900000161300000080DE
-:10571000020000900000F60C0000001008800092CB
-:105720000000F60C0000001008C000920000F60C0B
-:1057300000000010080001920000130B0000001090
-:105740000840019200001613000000800200009043
-:105750000000F60C0000001008C0019200001613B3
-:10576000000000800200009000001613000000807E
-:10577000020000900000161300000080020000905C
-:1057800000001613000000800200009000001613B5
-:10579000000000800200009000001613000000804E
-:1057A0000200009000004D0E000000100840019221
-:1057B0000000161300000080020000900000161385
-:1057C000000000800200009000001613000000801E
-:1057D00002000090000016130000008002000090FC
-:1057E0000000CB0E00000010084001920000CF0E18
-:1057F00000000010084001920000310E000000106F
-:10580000084001920000CF0E0000001008400192F5
-:1058100000007D08000000100840019200001613EF
-:1058200000000080020000900000CF0E0000001079
-:105830000840019200007E0800000010080002925B
-:1058400000001613000000800200009000001613F4
-:1058500000000080020000900000D00E0000001048
-:10586000084001920000310E000000100840019233
-:105870000000D00E000000100840019200007D08DA
-:105880000000001008400192000016130000008084
-:10589000020000900000D00E0000001008400192AD
-:1058A0000000161300000080020000900000161394
-:1058B000000000800200009000001613000000802D
-:1058C000020000900000D50E000000100880009239
-:1058D0000000D50E0000001008C000920000D50E98
-:1058E00000000010080001920000130B00000010DF
-:1058F0000840019200001613000000800200009092
-:105900000000D50E0000001008C001920000161320
-:1059100000000080020000900000161300000080CC
-:1059200002000090000016130000008002000090AA
-:105930000000161300000080020000900000161303
-:10594000000000800200009000001613000000809C
-:10595000020000900000161300000080020000907A
-:105960000000A00A0000001008400092000016137A
-:10597000000000800200009000001613000000806C
-:10598000020000900000161300000080020000904A
-:105990000000161300000080020000900000EA0ED4
-:1059A00000000010088000920000EA0E00000010C5
-:1059B00008C000920000EA0E0000001008000192EA
-:1059C0000000130B000000100840019200001613A5
-:1059D00000000080020000900000EA0E00000010AD
-:1059E00008C0019200001613000000800200009021
-:1059F0000000161300000080020000900000161343
-:105A000000000080020000900000030F0000001062
-:105A1000088000920000030F0000001008C00092F0
-:105A20000000030F00000010080001920000130B9B
-:105A300000000010084001920000161300000080D2
-:105A4000020000900000030F0000001008C0019247
-:105A500000001613000000800200009000007D0886
-:105A600000000010080000920000161300000080E3
-:105A70000200009000007D080000001008800092E5
-:105A80000000150F0000001008C0009200007D0803
-:105A9000000000100800019200007D0800000010C6
-:105AA00008400192000016130000008002000090E0
-:105AB0000000161300000080020000900000161382
-:105AC000000000800200009000001613000000801B
-:105AD00002000090000016130000008002000090F9
-:105AE00000007D0800000010088000920000260FD2
-:105AF000000000100880009200007D0800000010E7
-:105B00000800019200007D0800000010084001928A
-:105B10000000161300000080020000900000161321
-:105B200000000080020000900000161300000080BA
-:105B30000200009000001613000000800200009098
-:105B400000001613000000800200009000007D0895
-:105B500000000010088000920000260F00000010D6
-:105B60000800019200007D0800000010080001926A
-:105B700000007D080000001008400192000016138C
-:105B8000000000800200009000001613000000805A
-:105B90000200009000001613000000800200009038
-:105BA0000000161300000080020000900000161391
-:105BB000000000800200009000001613000000802A
-:105BC0000200009000007D08000000100880009294
-:105BD00000001613000000800200009000007D0805
-:105BE0000000001008400192000016130000008021
-:105BF00002000090000016130000008002000090D8
-:105C00000000161300000080020000900000161330
-:105C100000000080020000900000161300000080C9
-:105C2000020000900000FA0E0000001008800092B0
-:105C30000000FA0E0000001008C000920000FA0EEA
-:105C400000000010080001920000130B000000107B
-:105C5000084001920000161300000080020000902E
-:105C60000000FA0E0000001008C001920000161398
-:105C70000000008002000090000016130000008069
-:105C80000200009000001613000000800200009047
-:105C900000001613000000800200009000001613A0
-:105CA0000000008002000090000016130000008039
-:105CB000020000900000390F00000010080002925E
-:105CC0000000161300000080020000900000161370
-:105CD0000000008002000090000016130000008009
-:105CE00002000090000016130000008002000090E7
-:105CF0000000161300000080020000900000C00A9F
-:105D00000000001008C0019200001613000000807F
-:105D100002000090000016130000008002000090B6
-:105D20000000130B00000010084001920000161341
-:105D300000000080020000900000010B0000001035
-:105D400008C00192000016130000008002000090BD
-:105D500000001613000000800200009000001613DF
-:105D600000000080020000900000C00A0000001047
-:105D700008800092000016130000008002000090CE
-:105D80000000161300000080020000900000130BBA
-:105D9000000000100840019200001613000000806F
-:105DA000020000900000010B0000001008C00192EA
-:105DB000000016130000008002000090000016137F
-:105DC0000000008002000090000016130000008018
-:105DD000020000900000260D0000001008800092D4
-:105DE0000000161300000080020000900000260D45
-:105DF00000000010088000920000220E0000001039
-:105E0000084001920000161300000080020000907C
-:105E10000000260D000000100880009200001613FC
-:105E200000000080020000900000161300000080B7
-:105E30000200009000001613000000800200009095
-:105E40000000260D0000001008000192000016134B
-:105E500000000080020000900000260D00000010ED
-:105E6000080001920000220E00000010084001927C
-:105E70000000161300000080020000900000260DB4
-:105E800000000010080001920000161300000080BE
-:105E90000200009000001613000000800200009035
-:105EA0000000161300000080020000900000260D84
-:105EB000000000100800019200001613000000808E
-:105EC000020000900000260D000000100800019262
-:105ED0000000220E0000001008400192000016137E
-:105EE00000000080020000900000260D000000105D
-:105EF00008000192000016130000008002000090CC
-:105F0000000016130000008002000090000016132D
-:105F100000000080020000900000260D000000102C
-:105F2000088000920000161300000080020000901C
-:105F30000000260D00000010088000920000220ED4
-:105F400000000010084001920000161300000080BD
-:105F5000020000900000260D000000100880009252
-:105F600000001613000000800200009000001613CD
-:105F70000000008002000090000016130000008066
-:105F80000200009000001613000000800200009044
-:105F90000000161300000080020000900000260D93
-:105FA0000000001008C001920000220E0000001046
-:105FB00008400192000016130000008002000090CB
-:105FC0000000260D0000001008C00192000016130A
-:105FD0000000008002000090000016130000008006
-:105FE00002000090000016130000008002000090E4
-:105FF0000000AB0D00000010088000920000161396
-:1060000000000080020000900000161300000080D5
-:106010000200009000007D0800000010084001927E
-:106020000000161300000080020000900000AB0D7D
-:10603000000000100880009200001613000000808D
-:106040000200009000001613000000800200009083
-:106050000000161300000080020000900000AB0D4D
-:10606000000000100880009200001613000000805D
-:106070000200009000001613000000800200009053
-:1060800000007D0800000010084001920000161377
-:1060900000000080020000900000AB0D0000001026
-:1060A00008C001920000161300000080020000905A
-:1060B000000016130000008002000090000016137C
-:1060C0000000008002000090000016130000008015
-:1060D00002000090000016130000008002000090F3
-:1060E00000001613000000800200009000007D08F0
-:1060F000000000100840019200001613000000800C
-:10610000020000900000B50D0000001008C00192D0
-:10611000000016130000008002000090000016131B
-:1061200000000080020000900000161300000080B4
-:106130000200009000001613000000800200009092
-:1061400000001613000000800200009000001613EB
-:10615000000000800200009000007D080000001098
-:106160000840019200001613000000800200009019
-:106170000000B50D0000001008800092000016130A
-:106180000000008002000090000016130000008054
-:106190000200009000001613000000800200009032
-:1061A000000016130000008002000090000016138B
-:1061B0000000008002000090000016130000008024
-:1061C000020000900000B30E000000100840019291
-:1061D000000016130000008002000090000016135B
-:1061E00000000080020000900000161300000080F4
-:1061F0000200009000008608000000100840009295
-:10620000000016130000008002000090000016132A
-:1062100000000080020000900000161300000080C3
-:1062200002000090000016130000008002000090A1
-:106230000000161300000080020000900000DD083E
-:10624000000000100880009200001613000000807B
-:106250000200009000001613000000800200009071
-:106260000000C6090000001008000192000016138B
-:10627000000000800200009000008508000000106F
-:10628000080001920000D0090000001008000192EF
-:106290000000D00900000010080001920000D009A1
-:1062A000000000100800019200001613000000809A
-:1062B0000200009000001613000000800200009011
-:1062C0000000EF0800000010088000920000161384
-:1062D000000000800200009000008508000000100F
-:1062E00008000192000016130000008002000090D8
-:1062F000000016130000008002000090000000095A
-:1063000000000010088000920000C4090000001086
-:10631000088000920000850800000010080001922B
-:106320000000161300000080020000900000E60943
-:1063300000000010084000920000E6090000001074
-:10634000088000920000E6090000001008C00092DA
-:1063500000008508000000100800019200001613DC
-:106360000000008002000090000016130000008072
-:106370000200009000000C0A0000001008C000920B
-:106380000000161300000080020000900000850845
-:1063900000000010080001920000161300000080A9
-:1063A0000200009000001613000000800200009020
-:1063B00000000F0A000000100800019200000F0A00
-:1063C0000000001008000192000085080000001085
-:1063D00008000192000016130000008002000090E7
-:1063E0000000161300000080020000900000110A57
-:1063F00000000010088000920000110A0000001048
-:1064000008C00092000085080000001008000192FA
-:1064100000001613000000800200009000008508B4
-:1064200000000010084000920000DC09000000108D
-:10643000088000920000DC090000001008C00092F3
-:106440000000850800000010080001920000850887
-:1064500000000010080000920000850800000010F5
-:10646000084000920000250A0000001008800092F9
-:106470000000250A0000001008C0009200008508F6
-:1064800000000010080001920000161300000080B8
-:10649000020000900000161300000080020000902F
-:1064A0000000600A000000100880009200008508CB
-:1064B0000000001008C000920000850800000010D5
-:1064C00008000192000016130000008002000090F6
-:1064D00000001613000000800200009000003F0A38
-:1064E00000000010088000920000161300000080D9
-:1064F00002000090000085080000001008000192D2
-:106500000000161300000080020000900000161327
-:1065100000000080020000900000EC080000001065
-:106520000880009200001613000000800200009016
-:1065300000008508000000100800019200001613FA
-:106540000000008002000090000016130000008090
-:10655000020000900000540A000000100880009221
-:106560000000540A0000001008C0009200008508D6
-:1065700000000010080001920000161300000080C7
-:10658000020000900000161300000080020000903E
-:1065900000001C0A000000100880009200001C0A85
-:1065A0000000001008C000920000850800000010E4
-:1065B0000800019200001613000000800200009005
-:1065C00000001613000000800200009000006D0A19
-:1065D000000000100880009200006D0A000000100A
-:1065E00008C0009200008508000000100800019219
-:1065F0000800F303001801E8762081990800EF03F2
-:10660000001801E87620819900004B1200000080FC
-:10661000020000F0080082081D1901E8762081B907
-:106620000000F303000000F862812F950000F303DF
-:106630008000008002812FB62A0016131200002C61
-:1066400082CD2EB20000F303000000F802812F94E7
-:106650000800F303001C01E876208199000016135E
-:10666000800F018002C06EB600000000000000D85C
-:106670000200003200000000000E01EC06C06E3582
-:106680005400000000000000070036320000000047
-:10669000000000BCA8002D37B40401000008000071
-:1066A000C7CD8B3A000000000000007899C02C375D
-:1066B000B400000000000078898D973A000016139E
-:1066C0000210000087BF97BA000000000018000009
-:1066D0000740FE320000161312000040F2C138B429
-:1066E000000000000090007809006E3200001613D0
-:1066F00004A0000009806EB20000950804A5000403
-:1067000009806EB200000000000000040900903211
-:106710000000161302010080026490BC000098087B
-:1067200004010004096490BC0000000000000004A3
-:1067300009400032080000006E3402E81624903947
-:1067400000009908B71002E0068097B200009C088C
-:1067500080000080F280FCB600009D08000000C8A8
-:10676000FF80FC9400009E089F990080821BEEBC75
-:1067700000000000009800E00E006E3200000000F3
-:10678000A70000800200003018003600000000F86A
-:10679000730A03F9000000000010021C09006E32A9
-:1067A0004000A3080601008082CD91BC00C0A4086F
-:1067B000001802E00680369200E00000001802E0B7
-:1067C00006803632000000000000002009800332FD
-:1067D0000000A70880D7018032C06EB6000000001C
-:1067E000000000204900923A0000000000980118C3
-:1067F00009006E3200000000000A022409C06E3257
-:106800000000000000C0012809806E320000B508B9
-:10681000800E018012C06EB602000000003C02EC47
-:106820000600363200000000000000004901923AE4
-:106830000000B10880D6018042C06EB60082000020
-:10684000001002E0A6CD913200A00000002C02E86A
-:10685000060036322800BF08003A02EC06003692E5
-:1068600000000000D301001CD9C191340082000057
-:10687000001002E0A6CD913200A00000002C02E83A
-:10688000060036323400BF08003A02EC06003692A9
-:1068900004000000003C02EC060036322800000034
-:1068A00000000000890D923A0000BB0880D60180EC
-:1068B00042C06EB600860000001002E0A6CD913204
-:1068C00004A00000002C02E8060036321400BF08C5
-:1068D000003A02EC0600369200000000D301001CD2
-:1068E000D9C1913400860000001002E0A6CD91329B
-:1068F00004A00000002C02E8060036322000BF0889
-:10690000003A02EC0600369212000000003802EC59
-:1069100086CD913A08000000002802E886249039CC
-:1069200000000000002002E0962414370000000060
-:10693000004001E0068091320000C508040100809B
-:10694000028092BC0000000000C001E0060000329E
-:1069500000000000003000E00600003200000000EF
-:1069600000B000E00600003220000000000000003F
-:10697000070036320000000000000078A9002D3723
-:106980000005010000080000C78D973A00000000D4
-:106990000000007899C02C3700010000000000784A
-:1069A000898D973A000016130210000087BF97BA2E
-:1069B00000000000001800000740FE32000016131F
-:1069C00012000048F2C138B40000D20880D7012C70
-:1069D00009C06EB200000000DAD701EC06C06E35C7
-:1069E00000000000005A01EC0640ED32AE0000004D
-:1069F000000000781900363AAF0016130401008039
-:106A0000828D97BC00000000005C01E806808B329C
-:106A10000000D7088001008062C092B6000000002C
-:106A2000000000F882812F3418003600000000F8C2
-:106A3000730A03F9000000000004013808C06E3238
-:106A40000000161304C9018002806EBC0000000023
-:106A5000006201EC06808332010085081201002CDF
-:106A600082CD2EB2000016130000008002000090BC
-:106A700000000000005401FC02C06E320000000063
-:106A8000000000D80280013200C0E3081801000CA9
-:106A9000A8CD3EB2208000000000000808803632F9
-:106AA0002D00EF031201002C82CD2EB20000161330
-:106AB0000000008002000090000000000062013829
-:106AC00008C06E320008008000000028090037323C
-:106AD0000060EB1100000008088036F20000161379
-:106AE000870601EC16C06EBC000085080B00008014
-:106AF000020000B0000085088000008072812FB67F
-:106B000000000000000000F872812F343D0085086D
-:106B10001201002C82CD2EB200001613000000805E
-:106B200002000090000016130407018012C06EBC22
-:106B30000000161380000080B2812FB60000EF081D
-:106B4000000000F8B2812F940000161304A0001872
-:106B500008006EB2000016130406018002C06EBC6D
-:106B600000009E1200000080020000F000000013F0
-:106B70000078016008006EF20000F508120100C8FC
-:106B8000020020B20000F80800000080020000901F
-:106B9000000005091201005C088020B20000F8081E
-:106BA0001201006002802CB2000016130000008069
-:106BB000020000900000FA0804000080024080BC3F
-:106BC00000000000000000F81F80FF3A0000FD08F0
-:106BD00080010080A2802FB618003600CA0000F89D
-:106BE000730A03F9000016130401008002802DBC13
-:106BF000000085088000008072812FB63D001613CA
-:106C00001200002C82CD2EB200008508000000F892
-:106C100072812F94000016130406018002C06EBC1E
-:106C20000000000000BC001408806E320000F8086C
-:106C3000120000C8020020B20000F6081200005C3A
-:106C4000088020B20000161304A0001808006EB2DD
-:106C5000000000000000007879613832000016134F
-:106C60001218024CE2256EB20000161304010080D7
-:106C700002402DBC080000000010020078E16E39CF
-:106C8000000000000018002007000032070000008C
-:106C90000000003878CAE939000016130400003CEF
-:106CA000084080B2000000000090006C08006E32C6
-:106CB000000000000098004C08006E32000016131F
-:106CC0000400008032E186B200000000510000D8CC
-:106CD00002000032000000004D00000067E0833E2B
-:106CE00000000000000800000700803200000000E3
-:106CF0000010000007C086320000000000180000ED
-:106D000007C084320000000000000018D8A0813CB9
-:106D10000000840904B000E0D6206EBC0000161309
-:106D200009010080020000B0000043090400003C9B
-:106D3000D8E083BC0000161304010080028081BCEF
-:106D4000000024098000008092802FB600001C09FA
-:106D50001201000009C021B218003600000000F83E
-:106D6000730A03F91D0000000000007809A4173819
-:106D70000000210904010080128097BC0000161356
-:106D800080010080A2802FB600001B09670000F878
-:106D9000A2802FB500001C090000000009C021924C
-:106DA0000000230904000080228097BC0000161315
-:106DB00004010080328097BC00000000C90100D8A7
-:106DC00002408432000027090400008072802DBC3C
-:106DD0000000161312000044E2E038B2000034094B
-:106DE000510000D812802D9A0000000000000078A9
-:106DF000F98183340000161312000044E2E538B232
-:106E000000002C098000008082802FB60000F7115E
-:106E100000A0015008006EF20000000000F801E040
-:106E20000600853200002E09120100E802C021B2DE
-:106E300018003600000000F8730A03F90000320958
-:106E40000401008002802DBC000016138001008028
-:106E5000A2802FB600002D09670000F8A2802FB590
-:106E600000001613120000E802C021B20000161341
-:106E70000401008072802DBC00000000510000D889
-:106E800002000032000039092A010000D82080BA2F
-:106E9000000038091201000009C021B218003600B4
-:106EA000000000F8730A03F900000000000000D899
-:106EB000024084321D0016130400008002A417B89B
-:106EC00000000000CAE0006C08006E320000000004
-:106ED00000E8004C08006E320000161304F00018A1
-:106EE00008006EB2000000000000003818818335F1
-:106EF0000000100904B00080829B81BC00001613C2
-:106F00000D010080020000B0000016139F00001465
-:106F1000184081BC00000000CA0100F842802F35F3
-:106F200008A0100912010040A2CD39B200001613CA
-:106F3000000000800200009000004E09293402B8D1
-:106F400008806EB2000046091201000009C021B29B
-:106F500018003600000000F8730A03F91D00000055
-:106F60000000007809A4173800004B0904010080D4
-:106F7000128097BC0000161380010080A2802FB6FB
-:106F800000004509670000F8A2802FB500004609FF
-:106F90000000000009C0219200004D09040000809B
-:106FA000228097BC0000161304010080328097BC39
-:106FB00000000000C90100D8024084320000000037
-:106FC00000000078F9818334000016131200004499
-:106FD000E2E538B2000056092800006CD8E086BA15
-:106FE0000000F61100A0015008006EF200005609E2
-:106FF0001DF801E0060085B20000560980000080FF
-:1070000002812FB62A0016131200002C82CD2EB258
-:1070100000000000000000F802812F3400005C092D
-:1070200004A000E0068081B20000000000BC00E87F
-:107030000640813200000000009000E006C0863269
-:1070400000000000009800E006C084320000161323
-:107050000400008032E186B2000070090000008068
-:10706000020000900000620980010080A2802FB61B
-:1070700000005F091201000009C021B218003600AB
-:10708000000000F8730A03F91D0062090401008082
-:1070900002A417B80000161380000080E2802FB60B
-:1070A00000005E09000000F8E2802F94000000005C
-:1070B00000E0006C08006E3200000000CAE8004CDE
-:1070C00008006E32000016130400008032E186B220
-:1070D0000000161304F0001808006EB200006B09DF
-:1070E00004B00080829B81BC000016130D0100805B
-:1070F000020000B0000016139F000014184081BC6D
-:1071000000000000CA0100F842802F3508A01613C5
-:1071100012000040A2CD39B20000000000A000E043
-:107120000680813200000000009800E006C0843232
-:1071300000000000009000E006C086320000161338
-:107140000400008032E186B20000000000BC00E8CC
-:1071500006408132000076092A5D01E806808BB284
-:10716000000073091201000009C021B218003600A6
-:10717000000000F8730A03F91D007609040100807D
-:1071800002A417B80000161380000080E2802FB61A
-:1071900000007209000000F8E2802F9410247909A1
-:1071A000370000F8A28D2FB13D0016131200002CFD
-:1071B00082CD2EB200000000000000F872812F3452
-:1071C00008000000CA1C01E8762081390000541034
-:1071D0000000002CF90100F400007F09800000800D
-:1071E000E2802FB600007E091201000009C021B222
-:1071F00018003600000000F8730A03F91D0016138A
-:107200000401008002A417B800001613800100805A
-:1072100082802FB60000161304010080C20003BC58
-:10722000100000000018008067A173393000F603D9
-:107230001201005CA28D2CB2000016130000008029
-:107240000200009000008A098000008092802FB622
-:1072500018003600000000F8730A03F91D00161329
-:107260000400007809A417B8000089090400008010
-:10727000228097BC0000161304010080328097BC66
-:1072800000000000C90100D802408432000016133B
-:1072900004010080D2E083BC000016132A000078AD
-:1072A000F98183B40000161312000044E2E538B2FD
-:1072B0000000641100000030030038F20000920961
-:1072C0001D000038188183B50000920980000080FD
-:1072D00002812FB62A0016131200002C82CD2EB286
-:1072E00000000000000000F802812F340000161397
-:1072F000870601EC16C06EBC000096090B000080EA
-:10730000020000B000000000CA0100F842802F34E3
-:1073100008C0161312000040A2CD39B2000099092E
-:107320008000008082802FB60000F71100A001507D
-:1073300008006EF20000000000F801E0060085324F
-:1073400000009B091201000009C021B2180036009C
-:10735000000000F8730A03F90000BD092A3502B8DD
-:1073600008806EB200009E091201000009C021B21F
-:1073700018003600000000F8730A03F9000000004E
-:10738000000000F8A2802F350000B509040000803D
-:10739000026180BC0000AD0980B8000009C06EB277
-:1073A0004000A50904000080820D90BC80001613E7
-:1073B00004010080820D90BC0000A50902B000808D
-:1073C000821B84BC0000AD09000000F8B2812F943C
-:1073D000000016130407018012C06EBC00001613D3
-:1073E00080000080B2812FB60000161380D6018085
-:1073F00052C06EB60000000000D601EC56C06E34DC
-:1074000000000000000000601800863A0000000044
-:1074100000000080B701783400000000007801E02F
-:10742000060086324000BD0904000080820D90BC39
-:107430000000161304A0001808006EB200009E128F
-:1074400000000000D82080FA000016130600003C5F
-:10745000182084BC0000161304B0003C88DB83BEF7
-:107460000000161380010080C20178B60000000001
-:1074700000000080F720783A00000000587801E012
-:10748000F620863A00000C0900000004F860809A9B
-:107490000000B80980B9000009C06EB22F00BD0914
-:1074A0001201002C82CD2EB20000161300000080C5
-:1074B000020000904000BA0904010080820D90BCD7
-:1074C0003800BC09000000780900369280001613CD
-:1074D00004010080820D90BC39000000000000789B
-:1074E00009003632000016131200002CE2E52EB21D
-:1074F000000016138001008082802FB60000161352
-:1075000004010080C20003BC1000000000180080CD
-:1075100067A1733900000000005C01E806808B322F
-:1075200010240000000000F8A28D2F3130008508E3
-:107530001201005CA28D2CB2000016130000008026
-:10754000020000900000161380010080C2812FB657
-:1075500000000009000000F8C2812F950000000023
-:10756000005401FC02C06E3200000000000000D890
-:107570000280013200C0CC091801000CA8CD3EB237
-:107580002080000000000008088036322D00EF0344
-:107590001201002C82CD2EB20000161300000080D4
-:1075A00002000090000000000062013808C06E3246
-:1075B0000008008000000028090037320060EB114D
-:1075C00000000008088036F20000DA0900000080A0
-:1075D000020000900000D20980000080C2812FB616
-:1075E0000000D50900D001E806000092000000006C
-:1075F000000000F8C2812F350000D50904D10180B8
-:1076000002806EBC0000000000D601EC26C06E3483
-:107610000000D7098000008092812FB60000DA09AF
-:1076200000C801E80600009200000000000000F819
-:1076300092812F350000DA0904C9018002806EBCF6
-:107640000000000000D601EC16C06E341100850861
-:107650001201002C82CD2EB2000016130000008013
-:1076600002000090000085089A0100F842812FB5C1
-:107670000000E309120100C8020020B2000000006F
-:10768000005C01EC0640003200008508370000F87D
-:1076900042812FB400000000000000F872812F34F6
-:1076A0003D0085081201002C82CD2EB20000161379
-:1076B00000000080020000900000EE091201005C52
-:1076C000088020B20000DE091201006002802CB2A6
-:1076D0000000161300000080020000900000EB097B
-:1076E000120100C8020020B200008508370000F82F
-:1076F000D2812FB400000000000000F872812F3406
-:107700003D0085081201002C82CD2EB20000161318
-:1077100000000080020000900000EE091201005CF1
-:10772000088020B20000E7091201006002802CB23C
-:10773000000016130000008002000090000000000E
-:107740000000007879613832000016131218024CDC
-:10775000E2256EB200000000003402B808806E32EC
-:107760000000000000A0015008006E320000000080
-:107770000078016008006E320000F5099D110234A6
-:1077800009006EB20000000000F0018808006E32AF
-:107790000000121200A8010809006EF200000000AB
-:1077A000D4F801E00600853200000000DA5C01E850
-:1077B00006808B3200006411DD000030030038F2D7
-:1077C0000000FB092329020409806EB23E00161353
-:1077D0001200002C82CD2EB20800FF091D1C01E80A
-:1077E000762081B90000FF098000008002812FB659
-:1077F0002A0016131200002C82CD2EB200000000C9
-:10780000000000F802812F34000054100000002C0A
-:10781000F90100F40000030A9D010080074093B2C3
-:107820000000000000300080078088320000000067
-:10783000003800800700EE320000000000080080E1
-:1078400007C0853200000000001000800740903221
-:107850001000000000180080878D853700000000B0
-:107860000020008007008632000000000028008011
-:107870000700853200000A0A1201000009C021B287
-:1078800018003600000000F8730A03F93000F60310
-:107890001201005CA28D2CB20000161300000080C3
-:1078A000020000900012161304010080A28D2FB078
-:1078B0000000000000CC017809806E3200008508CD
-:1078C000DCD101E806809792130085081201002C94
-:1078D00082CD2EB20000161300000080020000903E
-:1078E0000000E30F00000018094081F20000C70FFC
-:1078F00000A8012009006EF20000850880010080C8
-:10790000F2802FB60000190A120100C8020020B24E
-:10791000000085088000008072812FB60000000002
-:10792000000000F872812F343D0085081201002C00
-:1079300082CD2EB2000016130000008002000090DD
-:107940000000EE091201005C088020B20000150A58
-:107950001201006002802CB20000161300000080AB
-:107960000200009000008508350100F812812FB553
-:1079700000000000000000D802800132000000007A
-:10798000005401FC02C06E3200C0230A1801000C32
-:10799000A8CD3EB220800000D10100080880363218
-:1079A0003B00F3031201002C82CD2EB2000016130F
-:1079B00000000080020000900000E2110098012801
-:1079C00009006EF2000085080000008002000090AF
-:1079D00000002F0A80010080A2812FB600002F0A2C
-:1079E0008000008042812FB61F00000000000010C0
-:1079F00009003632000080120000001409802FD2E6
-:107A00003C00000000000010090036320000801227
-:107A10000000001409803CD200002F0A085B01EC32
-:107A200006FB6EBC00000000005A01EC06000032AC
-:107A300000002F0A370000F842812FB43D000000FB
-:107A4000D701002C82CD2E320000360A8001008042
-:107A500092812FB60000161380000080C2812FB6DD
-:107A600000003D0A08C901E806BB6EBC000000002A
-:107A700000C801E806000032330016131200002C83
-:107A800082CD2EB20000F31100000028098001F21F
-:107A900000008508000000800200009000003D0A00
-:107AA00080010080C2812FB6000016138000008084
-:107AB00092812FB600003D0A08D101E806BB6EBCDA
-:107AC0000000000000D001E8060000323300161369
-:107AD0001200002C82CD2EB20000F311000000280D
-:107AE00009C001F20000850800000080020000903B
-:107AF0000000850880010080F2812FB618008508FB
-:107B00000000002C82CD2E92000016130407018085
-:107B100012C06EBC0000430A120000C8020020B26E
-:107B20000000460A1201005C088020B20000161313
-:107B30001200006002802CB200000000000000F87B
-:107B40001F80FF3A0000F3031201002C72E02EB2F6
-:107B500000001613000000800200009000000000EA
-:107B60000000007879613832000016131218024CB8
-:107B7000E2256EB200000000003402B808806E32C8
-:107B800000000000D4A0015008006E320000000088
-:107B9000DB79016008006E320000F711DD0000049F
-:107BA000080000F21000000000180080878D853763
-:107BB0000000000000F801E0060085320000500AD5
-:107BC0001201000009C021B218003600000000F8C0
-:107BD000730A03F9300016131200005CA28D2CB258
-:107BE00000001613040701EC16C06EBC0000000074
-:107BF00000B000E00600003200008508DA5C01E811
-:107C000006808B92000085089F41018052206EBC47
-:107C100000005F0A9F98018052206EBC00000000A7
-:107C2000000000D80280013200000000005401FC76
-:107C300002C06E3200C05D0A1801000CA8CD3EB231
-:107C40002080850831000008088036B2000000005E
-:107C5000000000F812812F343B0085081201002C2F
-:107C600082CD2EB2000016130000008002000090AA
-:107C70000000E2110098012809006EF2000085085A
-:107C8000000000800200009000008508D54101E05E
-:107C9000064081920000850804B0008002006EBC9E
-:107CA000000000000090010008006E320000001388
-:107CB0000078016008006EF2000085080000008076
-:107CC0000200009000000000000C027809806E3273
-:107CD0000000670A04D4018012C06EBC00000000DE
-:107CE000000000781980973700000000009001E044
-:107CF000E6256E3A0000001300000080020000F04C
-:107D000000006B0A0000008002000090000085085F
-:107D1000009001E00600809200000000009001E069
-:107D20000600803200000009000000800200009080
-:107D30000000161380000080F2802FB60000C70FED
-:107D400000A8012009006EF20000140A80000080E3
-:107D5000F2802FB60000850800000080020000902D
-:107D600000000000000000D8028001320000000086
-:107D70000000007809006E320200760A04B9008023
-:107D800082CD6EBC0000780A800000807280FCB654
-:107D900000007B0A000000FC020000920000780A4C
-:107DA000800000808280FCB600007B0A000000FC9E
-:107DB0000200009200001613040000800200F5BCCF
-:107DC00000000000000000A842BD97300000000045
-:107DD000541809FEF2C07C3000C0810A1801000C62
-:107DE000A8CD3EB200000000000E01EC06000034F9
-:107DF00000000000005401EC06C02F32208000007B
-:107E000000000008088036320000F3031201002C45
-:107E100082CD2EB2000016130000008002000090F8
-:107E2000000000000062013808C06E3200080080C7
-:107E300000000028090037320000EB1100000008A4
-:107E4000E80100F400001613040701EC16C06EBC34
-:107E500000000000000000A8A2002D370A0000006A
-:107E6000000000780900363200000000001809E226
-:107E7000070000320000870A04010078198097BCCF
-:107E80000200920A04B9008082CD6EBC0000004856
-:107E9000D6010078C9CD2C3200008B0AB6000080D4
-:107EA000020000B00000161312000064028097B2B6
-:107EB00000008D0A1208006402006EB200008E0AF3
-:107EC0001218006402006EB200008F0A12100064E3
-:107ED00002006EB200000000A65401EC06C02F3272
-:107EE00000007D08000E01EC060000940020004C0C
-:107EF000D6010078C9CD2C320000930AB60000806C
-:107F0000020000B00000161312000064028097B255
-:107F10000000950A1208006402006EB20000960A82
-:107F20001230006402006EB20000970A123800643A
-:107F300002006EB20000980A1240006402006EB2A5
-:107F40000000990A1248006402006EB200009A0A0A
-:107F50001210006402006EB200009B0A1218006446
-:107F600002006EB200009C0A1220006402006EB291
-:107F700000009D0A1228006402006EB2000000009A
-:107F8000A65401EC06C02F3203007D08000E01EC60
-:107F90000600369200000000000000FC02000132E2
-:107FA0000000A30A0000001408803D9200000000B9
-:107FB000000000FC020001320000A60A040000DC00
-:107FC00053603DB318000000000000F8738A0339C5
-:107FD000A20A3600000000C0020036920000000035
-:107FE000005401FC02C06E3200000000000000D806
-:107FF0000280013200C0AC0A1801000CA8CD3EB2CC
-:108000002080000000000008088036321500EF03D1
-:108010001201002C82CD2EB2000016130000008049
-:10802000020000900000000000280000070000325D
-:10803000000000000030000007C02C320010008259
-:108040000038000007003732000016131200004805
-:1080500002C080B200007D08CA010008E801009457
-:10806000000016138001008062812FB62D001613C8
-:108070001200002C82CD2EB20000B50A1D01008036
-:10808000020000B000007D08000000F862812F951A
-:10809000000016138000008002812FB6000000004F
-:1080A000000000F802812F342A007D081201002C04
-:1080B00082CD2EB200001613000000800200009056
-:1080C0000000D7110000002C09C085D20000641107
-:1080D00000000030030038F20000F303230100F831
-:1080E00022812FB43E00F3031201002C82CD2EB268
-:1080F0000000161300000080020000900000D7115D
-:108100000000002C09C085D20000F303000000F835
-:1081100022812F940000C50A380100D8028001B2E4
-:108120000000C30A1E000080020000B00000C50A63
-:108130001A010080020000B0000038120000006840
-:108140001F80F6FA0000F303000000800200009098
-:108150000000C90A12010060084023B2008200003A
-:108160000000000808803632000038120000006469
-:108170001F40F6FA0000F3030000008002000090A8
-:108180000000161312000024080023B2000016138A
-:108190001200002008C023B20000161312000018BD
-:1081A000088023B200C0D40A1801000CA8CD3EB24A
-:1081B0000000CC0A12000038028081B200001613C1
-:1081C0001200003C020082B20000161312000030C0
-:1081D000024082B20000161312000034020086B280
-:1081E00020800000000000080880363200003812AD
-:1081F0000000005C1FC0F5FA0000F30300000080DF
-:108200000200009000000000450000D8020000328B
-:108210000000000000000000074080320000000065
-:10822000001000000740823200000000001800002B
-:10823000070086320000161312000050F2C138B455
-:1082400000007A0F003001E016206EFA0000DD0A0F
-:108250003801002CF8010BB40000DD0A020D028089
-:10826000A25B80BC000000000000002CC8C182346A
-:108270000000DF0A8000008042812FB60000B40FAA
-:1082800000000080020000F0000016139FA801E02B
-:1082900016206EBC0000D40F00000080020000F029
-:1082A0000000E50A270100D8028001B200000000AA
-:1082B000C700002CE8C08234000000000000000865
-:1082C000D801003400000000D54001E006008732EC
-:1082D00008004B12001801E8762081F900006411B3
-:1082E00000000030030038F20000E90A2319000002
-:1082F000078081B23E0016131200002C82CD2EB2F0
-:108300000000EB0A1D210000070082B20000EE0A07
-:10831000000000F862812F950000EE0A80000080C6
-:1083200002812FB62A0016131200002C82CD2EB225
-:1083300000000000000000F802812F340000161336
-:1083400080000080A2802FB6000054100000002C96
-:10835000F90100F4000016130401008062802DBCB6
-:108360001000F40A2C30000017E02CB90000F60AC7
-:108370008E39000007C082B20000F60A0008000033
-:10838000070087920000F60A8E390000B7C182B458
-:108390000000000000080000070087320000F80A13
-:1083A000120100E802C021B218003600000000F8F7
-:1083B000730A03F90000F60A9F010014184081BCFB
-:1083C0000000FE0A0400008002C085BC00001613F5
-:1083D0001200006802C585B00000000000000078AF
-:1083E00009C58530000016130201008082BA97BCCF
-:1083F000000016130601008092BA97BC0000161305
-:108400001200004802C080B2000016130401008070
-:10841000D28180B50000F603CA010008E88180948B
-:10842000000016138001008082812FB60000040B2B
-:108430001E000080020000B00000060B1A01008040
-:10844000020000B000003812000000681F80F6FA39
-:108450000000F303000000800200009000001613EB
-:108460009FA801E016206EBC00007A0F00000014E7
-:10847000080000F200000A0B8000008042812FB645
-:108480000000B40F00000080020000F00000D40FD4
-:1084900000000080020000F000007F08040000805F
-:1084A000024081BC00000E0B120100E802C021B2A4
-:1084B00018003600000000F8730A03F900000000FD
-:1084C0000000007809C58530000016130201008005
-:1084D00082BA97BC000016130601008092BA97BCBE
-:1084E00000007F081201006802C585B00000161365
-:1084F000000000800200009000007D0880000080E5
-:10850000F2C185B60000170B1C41028006C085B27F
-:10851000000000000000006802C585300000000077
-:10852000000000701F00F73A00007D08000000F80E
-:1085300022812F9400007D0880000080F2C185B662
-:108540000000D7110000002C09C085D20000F30301
-:10855000D20100941E40E99A00001613042000186E
-:1085600008006EB20000161380000080F2812FB662
-:1085700000008C1200000080020000F000001613C2
-:1085800004010080028080BC0000161304510180A9
-:1085900002806EBC000016130421018002006EBC34
-:1085A00000000000003C00E8064081320000250B7E
-:1085B0001F000080020000B00000220B9E400278E5
-:1085C000094068B20000161300000080020000900D
-:1085D0000000290B8001008082812FB600007F08F7
-:1085E0002A3101E0060000B218000000CA0000F8BD
-:1085F000730A03397F083600000000C0020036927B
-:1086000000007F0880010080A2802FB618000000C3
-:10861000CA0000F8730A03397F083600000000C062
-:10862000020036920D002F0B000000580800369211
-:1086300000002F0B00000058080000921B000000F3
-:1086400000000058080036320000161304200018FD
-:1086500008006EB20000161380000080F2812FB671
-:1086600000008C1200000080020000F000000000FA
-:108670000030002808006E3200000000545401FC55
-:1086800002C06E320000940B380000A4088082B251
-:108690000000940B0428010408006EB200001613B9
-:1086A0009F500104A85B80BC00000000005001E85E
-:1086B0000600003200005E0B0801007819A082BCA1
-:1086C00000000000002801E0A660803C00003C0B98
-:1086D0002A010014080000B200000000CA000014C3
-:1086E0001840813A0000C70F00A80120A9206EFAA7
-:1086F0000000161306010280821B92BC00000000DD
-:10870000002001E0A6206E3C00000000003000E0E8
-:10871000060000320000000000A801E006009232CE
-:1087200000000000000000D80280013200C0500BA1
-:108730001801000CA8CD3EB20000470B04000080D9
-:10874000024081BC0000000000000014080000325C
-:1087500018000000000000F8730A0339410B3600CE
-:10876000000000C0020036922080000000000028B7
-:108770000980363200008111000000D8020000D2CA
-:1087800000004B0B04000080028092BC18003600F1
-:10879000000000F8730A03F900000000000000D890
-:1087A0000280013200C0500B1801000CA8CD3EB26F
-:1087B00018000000000000F8738A03394B0B00001A
-:1087C000000000C0020036320000360000000080C9
-:1087D0000200009000000000DE000008E801003404
-:1087E00000000000DF00013808C06E320000000009
-:1087F0000010000007000032000000000018000018
-:1088000007808232000000000030000007C02C32D8
-:108810000020008000380000070037320000000010
-:10882000CA3D000C078083320000000000000014E5
-:108830001840813A00005C0B040201EC16C06EBCCB
-:1088400000000000C00100141840813A0000000040
-:10885000000000F892802F3400C016131200004070
-:10886000A28D39B20000D70B1201004802C080B2BD
-:1088700000001613000000800200009000000000BD
-:10888000000000280880973200000000000000A4CB
-:1088900008808232000000000010006C18206E3A40
-:1088A000000000000018004C08006E320000C70FE6
-:1088B00000A8012019206EFA00001613060102809C
-:1088C000821B92BC00000000002001E016206E3CDC
-:1088D0000000000000A801E0060092320000690BD1
-:1088E000003801E006408092000000000060006C4B
-:1088F00018206E3A000000000068004C08006E323C
-:1089000000006B0B9F010004686080BC0000740BCA
-:10891000000000181820009C000016138001008041
-:10892000A2802FB600006E0B120100E802C021B237
-:1089300018003600000000F8730A03F90000000078
-:10894000CA70001808006E320000670B0201008038
-:10895000626080BC000016139F000014184081BCA8
-:1089600000000000CA0100F802802F3500A0690B4A
-:1089700012010040A28D39B20000161300000080E1
-:10898000020000900000790B80000080A2802FB6CA
-:1089900000007C0B04000080A2A081BC0000161324
-:1089A0009F000014184081BC00000000CA0100F8BC
-:1089B00002802F3500A0161312000040A28D39B29C
-:1089C00000000000000000F8A2802F3500007C0BA2
-:1089D000120100E802C021B218003600000000F8C1
-:1089E000730A03F900000000002801E006000032CD
-:1089F00000000000003C00E806408132000000005A
-:108A0000003000E00680823200000000002000E01C
-:108A10000680813200000000001000E006C08632AF
-:108A200000000000001800E006C0843200001613A9
-:108A30000400008032E186B20000860B1F010008AE
-:108A4000090000B20000970B0420018002006EBCF8
-:108A500000001613000000800200009010000000CB
-:108A600000000010790B1638080000000000000C10
-:108A7000790B16380000000000000004A9002D3713
-:108A80000004010000000004C94D903A02000000FB
-:108A9000000000A8820D913700000000000000A82F
-:108AA00012A42A3A00008F0B80400280E2017CB6BB
-:108AB0000000161304400278B93F7CB000000000AB
-:108AC00000000008E9A5903A0000910B9F010010FA
-:108AD000190091BC9F000000000000100900363210
-:108AE00000008A0B0401008042E490BC00001613D1
-:108AF00004210180829B90BC0000970B0000008045
-:108B000002000090000000000010006C08006E32AF
-:108B1000000000000018004C08006E320000161320
-:108B20000400008032E186B200003210510000D80B
-:108B3000020000F200009A0B0050013CA85B809CF0
-:108B400000007F08003001E00600009200009F0B4B
-:108B50003E510100A81B80BA00000000DE0000F8B2
-:108B6000F2812F3400000000005801EC06C0EE3204
-:108B700000009F0B80010080328087B6000000005B
-:108B8000000000F8E2802F340000E310603001E0C4
-:108B9000060000F20000E90B0000008002000090D7
-:108BA0000000000000000014080000320000A90BC3
-:108BB000040201EC16C06EBC00000000C9010014E4
-:108BC0001840813A00000000C001013808C06E3230
-:108BD00000000000DF0000A4A8608A3C000016131B
-:108BE0000F000080020000B000C0AD0B1201004079
-:108BF000A28D39B200001613000000800200009020
-:108C000000000000003000E006000032000000001C
-:108C1000DF0000A4A8608A3C000016130F0000804B
-:108C2000020000B0000000000000013808C06E32F1
-:108C300000000000DEA8012099226E3A0000161301
-:108C400006010280821B92BC000016139F2001E0E7
-:108C500096226EBC0000B20B80000080F2802FB61E
-:108C60000000C70F00000080020000F00000B90BF8
-:108C70001F5001E8060000B20000B50B04000080A0
-:108C800002C083BC0000B90B005001E8F660809C74
-:108C90000800000000400278399AFE3800001613E0
-:108CA0000201008082BA97BC000016130601008002
-:108CB00092BA97BC0800000000400268129AFE3881
-:108CC0000000BE0B2AA901E0060092B2180036008F
-:108CD000CA0000F8730A03F91D00BE0B04000080EF
-:108CE00002A417B80000BA0B04000014184081BC9D
-:108CF00000001613000000800200009000006411C4
-:108D000000000030030038F20000C10B8001008039
-:108D100032802FB63E0016131200002C82CD2EB2E8
-:108D200000000000000000D80280013200C0D20B19
-:108D30001801000CA8CD3EB220800000C30000281E
-:108D40000980363200008111000000D8020000D2F4
-:108D50000000C70B04000080028092BC00000000ED
-:108D6000000000141840813A0000CC0B0400008081
-:108D7000024081BC18003600000000F8730A03F9B5
-:108D80000000D00B04000014184081BC0000C80B88
-:108D90001200000009C021B20000C90B00000080D1
-:108DA0000200009018003600000000F8738A03F9F2
-:108DB0000000641100000030030038F20000D00B06
-:108DC0008001008032802FB63E0016131200002C66
-:108DD00082CD2EB200000000C30000D80280013214
-:108DE00000C0CC0B1800000CA8CD3EB2000016133A
-:108DF0008000008072802FB60020008000000028D4
-:108E0000090037320000661200000008E80100F493
-:108E1000000016131200004802C080B200000000DB
-:108E2000000000141840813A0000161380010080F1
-:108E3000A2802FB618003600CA0000F8730A03F9A2
-:108E40001D0016130400008002A417B800001613BA
-:108E50009F000014184081BC0000D80B0B0100805B
-:108E6000020000B000004B1200000080020000F081
-:108E70000000E00B8001008092802FB62B00E60BF3
-:108E80001201002C82CD2EB20000161300000080CB
-:108E9000020000900000E30B1D010080020000B002
-:108EA0000000E60B8001008062812FB600001613DF
-:108EB00000000080020000900000E60B80000080AF
-:108EC00002812FB62A0016131200002C82CD2EB27A
-:108ED00000000000000000F802812F3400007D082F
-:108EE00004000080028085BC00005D12000000804C
-:108EF000020000F0000069060000001C0880859256
-:108F000000007F0880010080A2802FB600001613A9
-:108F10000000008002000090000016138000008016
-:108F2000E2802FB60000EE0B8001008082812FB618
-:108F3000000016130431018002006EBC00001613FD
-:108F400004310080829B82BC000016130201008065
-:108F500012A082BC00000000CE0100D802800132C5
-:108F600000C0F50B1801000CA8CD3EB22080000017
-:108F70000000000808803632000038120000005C53
-:108F80001FC0F5FA0000F30300000080020000900B
-:108F90000000161380000080A2802FB60000161378
-:108FA0008000008082802FB600001613040000802D
-:108FB000028082BC00000000600000D80200003285
-:108FC0000000FD0B3F00003C084080B20000FD0B9C
-:108FD00080010080E2812FB600000000DE0000F872
-:108FE000F2812F3400000000005801EC06C0EE3280
-:108FF000000000004D00000067E0833E000000001C
-:10900000000800000700803200000000001000008F
-:1090100007C08632000000000018000007C084323C
-:109020000000490C04000028D8A082BC00001613E0
-:1090300009010080020000B00000000000000018DC
-:10904000D8A0813C00001F0C0400003CD8E083BC89
-:109050000000161304010080028081BC0000090C8E
-:109060000400008072802DBC000016131200005016
-:1090700002C038B200001D0C510000D812802D9A99
-:109080000000161312000050F2C138B40000160C94
-:10909000280000D8020000B20000130C80010080FC
-:1090A000F2C185B600000F0C1F400284E60100B437
-:1090B0000000130C1D0100F822812FB40000130CD6
-:1090C000000000F862812F950000110C1D01008046
-:1090D000020000B000000000000000F862812F359F
-:1090E00000000000004002800240683200001613B9
-:1090F0001F010080020000B00000150C343000E0B9
-:1091000016206EBC0000B40F00000080020000F0CA
-:109110000000D50FDA5B01EC0640EDF218003600D6
-:10912000000000F8730A03F900001B0C0400008023
-:1091300072802DBC0000161380010080A2802FB623
-:109140000000160C670000F8A2802FB5000016136F
-:10915000120000E802C021B20000161304010080D2
-:1091600072802DBC00000000510000D802000032C7
-:1091700000003E1000000000D82080FA0000FE0B26
-:109180004D00000067E0839E00001613120000509F
-:10919000F2C138B400002C0C28000080084000B256
-:1091A0000000290C80010080F2C185B60000250C6A
-:1091B0001F400284E60100B40000290C1D0100F8E4
-:1091C00022812FB40000290C000000F862812F9545
-:1091D0000000270C1D010080020000B0000000000C
-:1091E000000000F862812F3500000000004002807E
-:1091F00002406832000016131F010080020000B018
-:1092000000002B0C343000E016206EBC0000B40FC0
-:1092100000000080020000F00000D50FDA5B01ECD6
-:109220000640EDF200004F0C80000080E2802FB677
-:109230000000300C042100E0068081B200003E10E6
-:1092400000000034080000F200000000002000E0F0
-:109250000680813200000000003C00E806408132B8
-:109260000000360C2A1100E0D6E086BA180036005D
-:10927000CA0000F8730A03F91D00360C04010080CF
-:1092800002A417B80000320C9F010080180088BCAF
-:1092900000001613000000800200009000004B1236
-:1092A00000000080020000F00000641100000030A7
-:1092B000030038F208003A0C231901E8762081B93E
-:1092C0003E0016131200002C82CD2EB200003E0C80
-:1092D0001D1800E006C084B200003E0C8000008033
-:1092E00002812FB62A0016131200002C82CD2EB256
-:1092F00000000000000000F802812F34000054102C
-:109300000000002CF90100F40000430C0400008070
-:10931000020088BC0000420C1201000009C021B20A
-:1093200018003600000000F8730A03F91D00161338
-:109330000401008002A417B8000016130401008085
-:10934000028080BC000000000000007809C5853064
-:10935000000016130201008082BA97BC00001613A9
-:109360000601008092BA97BC0000F6031201006863
-:1093700002C585B0000016130000008002000090B6
-:10938000000000000030007819206E3C0000161329
-:1093900004010080E2A582BC00001613800000805A
-:1093A000A2802FB60000161304010080020088BCC2
-:1093B0000000161304010080028080BC0000161318
-:1093C00012000050F2C138B400000000C0010138A2
-:1093D00008C06E320000530C040201EC16C06EBCD3
-:1093E00000C0161312000040A28D39B20000540CC8
-:1093F000C90100140800009200000000453000E0A0
-:10940000060000320000600C28000008E80100B4EB
-:1094100000005D0C80010080F2C185B60000590C8F
-:109420001F400284E60100B400005D0C1D0100F83D
-:1094300022812FB400005D0C000000F862812F959E
-:1094400000005B0C1D010080020000B00000000065
-:10945000000000F862812F3500000000004002800B
-:1094600002406832000016131F010080020000B0A5
-:1094700000005F0C8000008042812FB60000B40F16
-:1094800000000080020000F00000D50FDA5B01EC64
-:109490000640EDF200200080DF000028090037328E
-:1094A00000006612DE0000D8028001F208004B12B4
-:1094B000001801E8762081F90000641100000030F6
-:1094C000030038F20000660C8001008032802FB665
-:1094D0003E0016131200002C82CD2EB200006B0C41
-:1094E000290801E406C02DB20000700C1D000080A8
-:1094F000020000B00000700C8000008002812FB6D6
-:109500002A0016131200002C82CD2EB20000700C1F
-:10951000000000F802812F9400006D0C1201000081
-:1095200009C021B218003600000000F8730A03F9E0
-:109530001D006F0C0401008002A417B800006C0C21
-:10954000000000141840819C2B0016131200002C00
-:1095500082CD2EB2000055100000002CF90100F45D
-:109560000000730C04010080024081BC180036002A
-:10957000000000F8730A03F90000161312000048F7
-:1095800002C080B2000000000000007809C58530EC
-:10959000000016130201008082BA97BC0000161367
-:1095A0000601008092BA97BC0000F6031201006821
-:1095B00002C585B000001613000000800200009074
-:1095C000000016138000008082802FB60000161362
-:1095D00004310080829B82BC0000161302000080D0
-:1095E00012A082BC0000161304000080028082BC1E
-:1095F0002500000000000010090036321000801223
-:1096000000000014A96080D900000000000000D80C
-:109610000280013200C0840C1801000CA8CD3EB2BB
-:109620002080000000000008088036320000381258
-:109630000000005C1FC0F5FA0000F303000000808A
-:109640000200009000C00000000000F8A28D2F3141
-:1096500000000000000000D80200003200000000FE
-:1096600000000000078081320000000000080000B8
-:1096700007008032000000000010000007C08632A2
-:10968000000000000018000007C08432000016131C
-:1096900012000050F2C138B40000900C800000802D
-:1096A00082802FB60000000000000068A860803CA7
-:1096B000000000000000003C084080320000D40F91
-:1096C00000000004088082F20000910C12010000EA
-:1096D00009C021B218003600000000F8730A03F92F
-:1096E0001D00940C0400008002A417B8000016139B
-:1096F00080010080A2802FB60000900C000000F8CE
-:10970000A2802F9500000000000000006820803A31
-:1097100000009A0C0400002868A082BC0000161308
-:109720000C000080020000B00000161380000080D2
-:10973000E2802FB600003E1000000080020000F022
-:109740000000860C000000D80200009200001613F2
-:1097500080000080A2802FB600000000000000D82A
-:10976000028001320020008000000028090037320A
-:109770000000621200000008E80100F41800360042
-:10978000CA0000F8730A03F90000A50C040201ECFA
-:1097900016C06EBC00000000C00100F892802F349B
-:1097A00000C0A30C12010040A28D39B200001613B4
-:1097B00000000080020000902B00A50C1201002C7C
-:1097C00082CD2EB20000161300000080020000902F
-:1097D000000016131F010080020000B00000A80C5A
-:1097E0008001008082812FB60000161304310180B1
-:1097F00002006EBC00000000000000D802800132B0
-:109800000000AB0C12010060084023B20082B40CCF
-:1098100000000008A88D809200001613120000249A
-:10982000080023B2000016131200002008C023B263
-:109830000000161312000018088023B200C0C90CE3
-:109840001801000CA8CD3EB20000AE0C120000388A
-:10985000028081B2000016131200003C020082B2A6
-:109860000000161312000030024082B200001613EE
-:1098700012000034020086B22080000000000008C0
-:10988000A88D80320000BC0C80010080F2C185B63A
-:109890000000B80C1F400284E60100B40000BC0CBC
-:1098A0001D0100F822812FB40000BC0C000000F85C
-:1098B00062812F950000BA0C1D010080020000B0EB
-:1098C00000000000000000F862812F350000000059
-:1098D0000040028002406832000016131F01008021
-:1098E000020000B032000000000000100900363213
-:1098F0000000801200000014090080D2000016133E
-:109900001200006802C585B0000000000000007869
-:1099100009C58530000016130201008082BA97BC89
-:10992000000016130601008092BA97BC0000C40C18
-:109930003400005C1FC0F5BA0000B40F00000080C6
-:10994000020000F00000C60C8000008092802FB65C
-:1099500000007F08003000E00600009200007F0851
-:10996000120100E802C021B218000000000000F857
-:10997000730A03397F083600000000C002003692E7
-:1099800000000000450000D8024000320000000046
-:10999000410000000780863200000000000800003F
-:1099A00007008032000000000010000007408232F3
-:1099B00000000000001800000700863200001613A7
-:1099C00012000050F2C138B400000000000000781E
-:1099D000388087350000161380000080728087B6BB
-:1099E0000000000000A001E016206E3A0000000018
-:1099F0000000007809C585300000000000A801E0E3
-:109A000016206E3C08000000D2010078E9E5833999
-:109A1000180016131F410284E6A197B90000D90C63
-:109A2000365101E816E083BC0000D90C1D0100800E
-:109A3000020000B000000000000000F862812F3535
-:109A4000000016139F2001E0064080B20000DC0CED
-:109A50008001008082812FB600000000003001E00C
-:109A60000640803200000000000000D80280013271
-:109A70000000DF0C34180000078081B20000B40F32
-:109A800000000080020000F010004B1200300000C7
-:109A900017E02CF900100080003800000700373272
-:109AA0000000641100000030030038F20000E40CF4
-:109AB0008001008032802FB63E0016131200002C69
-:109AC00082CD2EB20000E90C29210000070082B2ED
-:109AD0000000E70C1201000009C021B21800360096
-:109AE000000000F8730A03F91D00EF0C0401008068
-:109AF00002A417B80000E50C000000140800009252
-:109B00000000EC0C1D3100E0060000B20000EF0C7C
-:109B10008001008062812FB60000161300000080D3
-:109B2000020000900000EF0C8000008002812FB640
-:109B30002A0016131200002C82CD2EB20000000065
-:109B4000000000F802812F3400005D120000002C9C
-:109B5000F90100F400005410000000F8A2802FF476
-:109B60000000F40C04000080024081BC0000F40CF2
-:109B7000120100E802C021B218003600000000F80F
-:109B8000730A03F90000F6031201004802C080B214
-:109B90000000161300000080020000900000FE0C80
-:109BA00080010080F2C185B60000FA0C1F400284DB
-:109BB000E60100B40000FE0C1D0100F822812FB464
-:109BC0000000FE0C000000F862812F950000FC0CE4
-:109BD0001D010080020000B000000000000000F83D
-:109BE00062812F3500000000004002800240683290
-:109BF000000016131F010080020000B00000000DDD
-:109C000004000080024086BC0000AB1200900108F6
-:109C100009006EF20000DF1200000080020000F078
-:109C20000000070D330100D8028001B20000070DCB
-:109C300080010080B20172B60000070D9FF0018024
-:109C400082DB87BC0000070D9FF8018022216EBCDB
-:109C50000000000000E801E00600EE320000000015
-:109C600000F001E006C0873208000000001801E89B
-:109C70007620813900000D0D80010080D2802FB642
-:109C800000000D0D04B0008002006EBC000000005A
-:109C9000CD0000F872812F343D000D0D1201002C13
-:109CA00082CD2EB20000161300000080020000904A
-:109CB00000001C0D270901E406C02DB200C0140DE0
-:109CC0001801000CA8CD3EB2000000000000007892
-:109CD00009C58530000016130201008082BA97BCC6
-:109CE000000016130601008092BA97BC00001613FC
-:109CF0001200006802C585B020807F0800000008BF
-:109D0000088036922C000000000000100900363256
-:109D1000000080120098011409006ED200000000BB
-:109D2000004001E00640883200000000D508000035
-:109D300007408832000000000030000007C02C32CD
-:109D400000400080CA3900000700373200001613B7
-:109D50001200004802C080B200600000000000084D
-:109D6000088036320000200D1D000080020000B087
-:109D70000000200D8000008002812FB62A001613FB
-:109D80001200002C82CD2EB200000000000000F86E
-:109D900002812F34000055100000002CF90100F45E
-:109DA000000000000000007809C58530000016138F
-:109DB0000201008082BA97BC0000161306010080E1
-:109DC00092BA97BC0000F6031201006802C585B084
-:109DD0000000161300000080020000900000000048
-:109DE000545401FC02C06E3200000000000000D894
-:109DF0000280013200C02C0D1801000CA8CD3EB22B
-:109E00002080000000000008088036320000F303C4
-:109E10001201002C72E02EB2000016130000008028
-:109E200002000090000016138001008082812FB68E
-:109E300000008C120020001808006EF200001613BB
-:109E40001F30002808006EB200000000000000A4CF
-:109E500008808232000000000010006C08006E32A2
-:109E6000000000000018004C08006E3200001613BD
-:109E70000400008032E186B2000032100000008051
-:109E8000020000F00000360D0050013CA85B809CF1
-:109E90000000161300000080020000900000000087
-:109EA00000500100A81B803A000000000000008064
-:109EB0000800003200000000510000D8020000320B
-:109EC000000000004D00000067E0833E000000003D
-:109ED00000080000070080320000000000100000B1
-:109EE00007C08632000000000018000007C084325E
-:109EF00000006D0D04000028D8A082BC00001613DD
-:109F000009010080020000B00000000000000018FD
-:109F1000D8A0813C0000540D0400003CD8E083BC74
-:109F20000000161304010080028081BC0000450D72
-:109F30000400008072802DBC000016131200005037
-:109F400002C038B200004D0D510000D812802D9A89
-:109F50000000161312000050F2C138B41800360089
-:109F6000000000F8730A03F900004B0D04000080A4
-:109F700072802DBC0000161380010080A2802FB6D5
-:109F80000000460D670000F8A2802FB500001613F0
-:109F9000120000E802C021B2000016130401008084
-:109FA00072802DBC00000000510000D80200003279
-:109FB0000000520D2A010000D82080BA0000510D87
-:109FC0001201000009C021B218003600000000F89C
-:109FD000730A03F900000000000000D80240843238
-:109FE0001D0016130400008002A417B800004610DC
-:109FF0000060006C08006EF200003A0D4D00000099
-:10A0000067E0839E0000161312000050F2C138B4BE
-:10A0100018003600000000F8730A03F91D005B0DFC
-:10A020000400008002A417B800001613800100800D
-:10A03000A2802FB60000550D670000F8A2802FB552
-:10A04000000016131200000009C021B21D001613F3
-:10A050000401008002A417B8080000000040027844
-:10A06000399AFE38000016130201008082BA97BCAC
-:10A07000000016130601008092BA97BC0800161360
-:10A0800012400268129AFEB8000016130B000080FE
-:10A09000020000B00000641100000030030038F23C
-:10A0A000000016131F00006CD8E086BA00003210C2
-:10A0B000510000D8020000F20000650D0000003CD5
-:10A0C00008408092000016130000008002000090FB
-:10A0D0000000390D04010080028081BC00006B0D7E
-:10A0E00080010080A2802FB600006A0D12010000DE
-:10A0F00009C021B218003600000000F8730A03F905
-:10A1000000000000000000D8024084321D00161339
-:10A110000400008002A417B8000046100060006C24
-:10A1200008006EF200003A0D4D00000067E0839ECB
-:10A130000000161380000080A2802FB600000000EF
-:10A14000C001013808C06E3200000000453000E058
-:10A15000060000320000161312000050F2C138B49D
-:10A160000000750D040201EC16C06EBC000000007A
-:10A17000C90100141840813A00C0750D1201004059
-:10A18000A28D39B20000161300000080020000907A
-:10A1900000C00000000000F8A28D2F310000000078
-:10A1A00000A8012099226E3A0000161306010280D1
-:10A1B000821B92BC000016139F2001E096226EBC09
-:10A1C00000007B0D80000080F2802FB60000C70FDA
-:10A1D00000000080020000F000007F0D0400003C41
-:10A1E000D8E083BC00007E0D9F3101E096226EBC5A
-:10A1F00000000000003001E0060000320000860D83
-:10A20000005001E8F660809C0800000000400278E1
-:10A21000399AFE38000016130201008082BA97BCFA
-:10A22000000016130601008092BA97BC08000000D7
-:10A2300000400268129AFE380000850D9F3101E04F
-:10A2400096226EBC00000000003001E006000032E3
-:10A2500000000000005001E806000032000000008D
-:10A2600000A801E00600923218003600000000F855
-:10A27000730A03F91D008B0D0400008002A417B8B7
-:10A280000000870D04000014184081BC0000161364
-:10A290000000008002000090000016138000008083
-:10A2A00072802FB600000000000000D8028001324A
-:10A2B00000200080000000280900373200006612EC
-:10A2C00000000008E80100F4000016131200004826
-:10A2D00002C080B20000641100000030030038F2B8
-:10A2E0000000930D23010014184081BA3E0016139C
-:10A2F0001200002C82CD2EB20000161380010080C7
-:10A30000A2802FB618003600CA0000F8730A03F9BD
-:10A310001D0016130400008002A417B800001613D5
-:10A320009F000014184081BC0000940D0B010080B8
-:10A33000020000B000004B1200000080020000F09C
-:10A3400000009C0D2931010C09006EB22B007D0824
-:10A350001201002C82CD2EB20000161300000080E6
-:10A36000020000900000BE0F000C020009806EF297
-:10A370000000A50D000000800200009000005D12AA
-:10A3800000000080020000F0000000000000001C3F
-:10A39000080090320000A40D04000028098080B25B
-:10A3A00000008111000000D8020000D20000A40DBE
-:10A3B00004000080028092BC18003600000000F803
-:10A3C000730A03F900006806000000080800009204
-:10A3D0000000A80D1D010080020000B000007D08F3
-:10A3E0008001008062812FB60000161300000080FB
-:10A3F0000200009000007D088000008002812FB6DE
-:10A400002A0016131200002C82CD2EB200007D0807
-:10A41000000000F802812F940000161380010080D4
-:10A4200082812FB60000161304000018094081B283
-:10A430000000E30F00000080020000F00000C70FE2
-:10A4400000A8012009006EF2000000000030010C9D
-:10A4500009006E320000BE0F000C020009806EF28F
-:10A4600000007F08000000800200009000004B12F6
-:10A4700000000080020000F000005D12000000807B
-:10A48000020000F0000068060000001C0800909226
-:10A4900000000000545401FC02C06E32000016138C
-:10A4A0008001008082812FB6000016131F000080FB
-:10A4B000020000B010000000000000A8780B163861
-:10A4C00008000000000000AC780B16380000000007
-:10A4D000000000B0A8002D3700040100000000B00B
-:10A4E000C80D8B3A00000000005001B408806E32A5
-:10A4F0000000C70D0431019008006EB20200000098
-:10A50000000000C8828D8A3700000000000000C8EB
-:10A51000C2A22C3A1800C50D86410278880D78B683
-:10A520000000161304000080A2E28ABC000016138B
-:10A5300004410280B23F78B00000BE0D9F0100A828
-:10A5400018808ABC9F00BE0D000000A8080036924B
-:10A550000000000000400204B83F78300000DA0D2F
-:10A5600000000004D862809C00001613020C0280D8
-:10A57000A21B89BC000016138000008082802FB6C9
-:10A5800002000000000000C8828D8A370000000031
-:10A59000000000C8C2A22C3A1800D00D86410278F3
-:10A5A000880D78B60000161304000080A2E28ABC71
-:10A5B0000000161304410280B23F78B00000C90DBC
-:10A5C0009F0100A818808ABC9F00C90D000000A848
-:10A5D000080036920000D30D28400204B83F78B03E
-:10A5E00000000000C8010004D862803C000016137F
-:10A5F0009F000080024080B20000D70D0201009051
-:10A60000182089BC00000000000000B408000032DF
-:10A610000000C90D9F0100A818808ABC9F00C90DC9
-:10A62000000000A8080036920000DA0D0400009037
-:10A63000182089BA000016139F000004486280BCED
-:10A6400000001613900000B448628BBA0300161382
-:10A6500004400200081EFFB80000E20D00000000E8
-:10A66000D822809A0000090E04000080A2E28ABC71
-:10A6700002000000000000C8828D8A370000000040
-:10A68000000000C8C2A22C3A1800070E86400278CB
-:10A69000880D78B60000161304400204B83F78B065
-:10A6A0000300161304400200081EFFB83800000023
-:10A6B0000000001009003632000080120000001473
-:10A6C000090080D20000E80D12010060084023B2AA
-:10A6D0000082000000000008088036320000F3030A
-:10A6E0001201002C72E02EB2000016130000008050
-:10A6F000020000900000161312000024080023B28C
-:10A70000000016131200002008C023B20000161328
-:10A7100012000018088023B200000000000000D8DA
-:10A720000280013200C0F20D1801000CA8CD3EB22B
-:10A730000000EC0D12000038028081B200001613F8
-:10A740001200003C020082B200001613120000301A
-:10A75000024082B20000161312000034020086B2DA
-:10A760002080E60D000000080880369200000000FE
-:10A77000000000D802000032000000000038020093
-:10A78000B81B803A00000000643001E016206E3AE9
-:10A7900000000000000000000740803200000000C0
-:10A7A00000080000070080320000000000100000D8
-:10A7B00007408232000000000018000007008632C7
-:10A7C0000000161312000050F2C138B4000000005F
-:10A7D000000000D8028001320000000000180000D4
-:10A7E0000780813200000000002000000700823254
-:10A7F000100000000030000017E02C3900000000BD
-:10A8000000380000F7010B340000010E80010080C9
-:10A81000328087B60000000000380000B7017034B5
-:10A820000000000000000008E80100340000130EE2
-:10A83000020C0280A21B89BC18003600000000F840
-:10A84000730A03F90000641100000030030038F2BD
-:10A85000000016131200004802C080B21800360033
-:10A86000000000F8730A03F90000DC0D9F0100A846
-:10A8700018808ABC9F00DC0D000000A808003692FA
-:10A8800028000C0E0401008082CD81BC0000000075
-:10A890000020017809006E320000161304010080C8
-:10A8A00042A297BC00000E0E8001008032802FB6BD
-:10A8B0003E0016131200002C82CD2EB20000100EA6
-:10A8C0001D010080020000B000007D08000000F8BB
-:10A8D00062812F9500007D088000008002812FB6E4
-:10A8E0002A0016131200002C82CD2EB200007D0823
-:10A8F000000000F802812F940000000000380000E2
-:10A90000C70170340000641100000030030038F209
-:10A910000800170E231901E8762081B93E001613AE
-:10A920001200002C82CD2EB20000190E1D010080F5
-:10A93000020000B000001C0E000000F862812F959C
-:10A9400000001C0E8000008002812FB62A00161322
-:10A950001200002C82CD2EB200000000000000F892
-:10A9600002812F340000161380000080A2802FB6D1
-:10A97000000054100000002CF90100F40000200E2B
-:10A98000120100E802C021B218003600000000F8F1
-:10A99000730A03F9000016131200004802C080B2C7
-:10A9A0000000F603000000F8A2802F9400000000D1
-:10A9B000000000D8028001320000000000300028B2
-:10A9C00008006E3200000000545401FC02C06E32D8
-:10A9D00000C02E0E1801000CA8CD3EB22080000051
-:10A9E000000000280980363200008111000000D8E4
-:10A9F000020000D200002B0E04000080028092BCF6
-:10AA000018000000000000F8730A03392C0E36000D
-:10AA1000000000C00200369218003600000000F866
-:10AA2000738A03F900000000000000D802800132A0
-:10AA300000C02B0E1800000CA8CD3EB200200084F0
-:10AA400000000028090037320000621200000008F0
-:10AA5000E80100F400007D08000000800200009082
-:10AA600000000000000000D8028001320000000059
-:10AA7000545401FC02C06E3200C0370E1801000CA5
-:10AA8000A8CD3EB2208000000000000808803632C9
-:10AA90000000EF031201002C72E02EB2000016132A
-:10AAA00000000080020000900000F3110000002868
-:10AAB000090002F200003F0E0000005C0800009256
-:10AAC00000000000000000D80280013200000000F9
-:10AAD000545401FC02C06E3200C03F0E1801000C3D
-:10AAE000A8CD3EB220800000000000080880363269
-:10AAF000000038120000005C1FC0F5FA0000F303EC
-:10AB000000000080020000900000000000300028DB
-:10AB100008006E320020008400000028090037324F
-:10AB20000000621200000008E80100F40000440E7A
-:10AB300000000080020000900000000000000008FB
-:10AB40000800003200004A0E0400008002C085B2F6
-:10AB500000004A0E80000080F2C185B60000490E58
-:10AB60001C41028006C085B20000000000000068A1
-:10AB700002C5853000000000000000701F00F73A99
-:10AB800000000000000000F822812F340000D00EE9
-:10AB900080010080A2802FB618000000000000F89D
-:10ABA000730A0339D00E3600CA0000C00200369284
-:10ABB0000000990E8001008082812FB60000A10E56
-:10ABC0001F20010809006EB20000990E0430010830
-:10ABD000899B90BC0000560E0431018002006EBCBF
-:10ABE0000000321000000080020000F00000540E4F
-:10ABF0000050014808806E9200001613000000808B
-:10AC00000200009000000000000000042861803C69
-:10AC100000006B0E000000002821809A000016132F
-:10AC20009F000080028090B2000032100030014886
-:10AC300008006EF200005A0E00500104A85B809CD0
-:10AC400000001613000000800200009000000000C9
-:10AC500000500100A81B803A0000680E0700004861
-:10AC600018A084BC0800000000400200189AFE38BA
-:10AC70000000161302010080823A80BC0000161307
-:10AC800006010080923A80BC0000000000000068CD
-:10AC9000020080320000321000000080020000F04C
-:10ACA0000000630E000000800200009000001613F8
-:10ACB00000000080020000900000680E07000048BD
-:10ACC00018A084BC0800000000400200189AFE385A
-:10ACD0000000161302010080823A80BC00001613A7
-:10ACE00006010080923A80BC0000600E00000068FF
-:10ACF0000200809200006B0E0400004818A084BA85
-:10AD0000000016139F000004286180BC00000000B2
-:10AD1000000000002821803A00000000005401FCDF
-:10AD200002C06E320000740E12010060084023B2AF
-:10AD300000820000D6010008088036320300161396
-:10AD400004400200381AFFB8030000000000007839
-:10AD50000960803918000000D241028CE6A19739C1
-:10AD600000000000005001E8068084322900F3034F
-:10AD70001201002C82CD2EB20000161300000080BC
-:10AD8000020000900000161312000024080023B2F5
-:10AD9000000016131200002008C023B20000161392
-:10ADA00012000018088023B200000000000000D844
-:10ADB0000280013200C07F0E1801000CA8CD3EB207
-:10ADC00020800000D6010008088036320000790E8D
-:10ADD00012000038028081B2000016131200003CFD
-:10ADE000020082B20000161312000030024082B24C
-:10ADF00000006E0E12010034020086B2000016132D
-:10AE00000000008002000090080000000040025C8A
-:10AE1000189AFE38000000000000004808000032C8
-:10AE200000000000000000D8020000320000000016
-:10AE30000000000007408032000000000008000011
-:10AE4000070080320000000000100000074082323E
-:10AE500000000000001800000700863200001613F2
-:10AE600012000050F2C138B400000000D60100D832
-:10AE700002800132000000000018000007808132CB
-:10AE800000000000002000000700823210000000D7
-:10AE90000030000017E02C3900008E0E800000808A
-:10AEA000328087B60010008000380000070037327B
-:10AEB00000008F0E0000008002000090001000884B
-:10AEC000003800000700373218003600000000F894
-:10AED000730A03F9000000000000006802C0853218
-:10AEE000000016130201008082FA85BC00001613D0
-:10AEF0000601008092FA85BC0000000000000008F6
-:10AF0000E8010034000016131200004802C080B2AD
-:10AF100018003600000000F8730A03F90000321030
-:10AF200000000080020000F000006B0E00000080B6
-:10AF3000020000900000A10E0000008002000090BE
-:10AF40000000321000000080020000F000009C0EA3
-:10AF500000380200B81B809C0000A10E0000008099
-:10AF600002000090050000000000006802A0FE380A
-:10AF7000050000000000007809A0FE38000016134C
-:10AF80000201008082BA97BC0000161306010080FF
-:10AF900092BA97BC0000990E00400280024068926D
-:10AFA00000000000CA0100D8020000320000A50E17
-:10AFB00004B8018002006EBC000016139FB801782F
-:10AFC000891BEEBC0000000000B801E0861BEE3CCF
-:10AFD0004C000000000000000700363200000000B6
-:10AFE00000000078A9002D37B4040100000800001B
-:10AFF000C78D973A000000000000007899C02C37F8
-:10B00000B400000000000078898D973A0000161304
-:10B010000210000087BF97BA00000000001800006F
-:10B020000740FE320000161312000048F2C138B487
-:10B030000000AD0EB6000080020000B00020161324
-:10B0400012000064A2CD2CB200000000A600008017
-:10B05000020000300000B20E80010080A2802FB6F6
-:10B0600018003600CA0000F8730A03F900007D08D2
-:10B07000005401FC02C06E92000016138001008093
-:10B0800062812FB6000016138001008082812FB6E6
-:10B09000000016131F000080020000B00000000036
-:10B0A000005401FC02C06E320000BB0E12010060B1
-:10B0B000084023B2008200000000000808803632F9
-:10B0C0002900F3031201002C82CD2EB200001613CA
-:10B0D00000000080020000900000161312000024FF
-:10B0E000080023B2000016131200002008C023B28B
-:10B0F0000000161312000018088023B200000000A0
-:10B10000000000D80280013200C0C60E1801000CF9
-:10B11000A8CD3EB220800000000000080880363232
-:10B120000000C00E12000038028081B20000161329
-:10B130001200003C020082B2000016131200003020
-:10B14000024082B20000B90E12010034020086B241
-:10B150000000161300000080020000900000321072
-:10B1600000000048080000F20800C90E0040025C20
-:10B17000189AFE980000161300000080020000904C
-:10B180000000000000500100A81B803A0000810E62
-:10B190000000004808000092000016131F01008004
-:10B1A000020000B000000000005401FC02C06E323A
-:10B1B0000000F31100000028098002F20000AD0E2B
-:10B1C00000000080020000900000F3110000002841
-:10B1D000090002F20000D30E9A0100F862812FB438
-:10B1E00010240000000000F8A28D2F3100000000A4
-:10B1F00000D601EC06C06E342E007D081201002C32
-:10B2000082CD2EB2000016130000008002000090D4
-:10B210000000161304A9018002006EB20000DE0EC9
-:10B2200080010080F2C185B60000DA0E1F40028462
-:10B23000E60100B40000DE0E1D0100F822812FB4EB
-:10B240000000DE0E000000F862812F950000DC0E89
-:10B250001D010080020000B000000000000000F8A6
-:10B2600062812F35000000000040028002406832F9
-:10B27000000016131F010080020000B00000E00E65
-:10B2800004980164881B87BC0000AB120090010881
-:10B2900009006EF20000DF1200000080020000F0E2
-:10B2A000000000000000007809C58530000016137A
-:10B2B0000201008082BA97BC0000161306010080CC
-:10B2C00092BA97BC000016131200006802C585B040
-:10B2D00000000000000000F8D2802F3500007F0839
-:10B2E000370000F8D2812FB400000000000000F801
-:10B2F00072812F343D007F081201002C82CD2EB2C6
-:10B300000000161300000080020000900000F20E02
-:10B3100080010080F2C185B60000EE0E1F4002845D
-:10B32000E60100B40000F20E1D0100F822812FB4E6
-:10B330000000F20E000000F862812F950000F00E70
-:10B340001D010080020000B000000000000000F8B5
-:10B3500062812F3500000000004002800240683208
-:10B36000000016131F010080020000B00000000062
-:10B3700000D401EC16C06E3A000000000000007816
-:10B3800009C58530000016130201008082BA97BCFF
-:10B39000000016130601008092BA97BC0000161335
-:10B3A0001200006802C585B000007F0804B000806C
-:10B3B00002006EBC37007F081201002C82CD2EB235
-:10B3C0000000161300000080020000900000020F31
-:10B3D00080010080F2C185B60000FE0E1F4002848D
-:10B3E000E60100B40000020F1D0100F822812FB415
-:10B3F0000000020F000000F862812F950000000F8E
-:10B400001D010080020000B000000000000000F8F4
-:10B4100062812F3500000000004002800240683247
-:10B42000000016131F010080020000B000000F0F83
-:10B43000000000800200009000000B0F80010080DF
-:10B44000F2C185B60000070F1F400284E60100B478
-:10B4500000000B0F1D0100F822812FB400000B0F1C
-:10B46000000000F862812F950000090F1D01008087
-:10B47000020000B000000000000000F862812F35DB
-:10B4800000000000004002800240683200001613F5
-:10B490001F010080020000B000000F0F370000F80D
-:10B4A000D2812FB400000000000000F872812F3418
-:10B4B0003D000F0F1201002C82CD2EB2000016139A
-:10B4C00000000080020000900000000000D401ECA9
-:10B4D00006000032000000000000007809C5853039
-:10B4E000000016130201008082BA97BC00001613F8
-:10B4F0000601008092BA97BC00007F081201006824
-:10B5000002C585B000001613000000800200009004
-:10B5100000007D0880010080F2812FB600007D08C8
-:10B5200080000080E2812FB60000190F80000080AB
-:10B5300002812FB6000016131D010080020000B02A
-:10B54000000016130458018002C06EBC00007D0884
-:10B55000085901EC06FB6EBC00000000000000D89A
-:10B560000280013200000000545401FC02C06E321F
-:10B5700000C0220F1801000CA8CD3EB20000000050
-:10B58000005801EC06FB6E3A208000000000000825
-:10B59000088036320000EF031201002C72E02EB258
-:10B5A00000001613000000800200009000005D12F1
-:10B5B000000000F8E2812FF40000250F060301804F
-:10B5C00012C06EBC190068060000001C080036920C
-:10B5D0001A0068060000001C0800369200001613CE
-:10B5E00080010080F2812FB60000161380010080D8
-:10B5F000E2812FB60000161304550180B2DB2FBC88
-:10B6000000C00000000000F8A28D2F3100000000F3
-:10B61000000000D802800132002000C00000002895
-:10B6200009003732000000000030002808006E32A8
-:10B6300000000000453000E0060000320000621209
-:10B6400000000008E80100F40000340F040201ECDF
-:10B6500016C06EBC00000000C90100141840813AF9
-:10B6600000000000000000F802802F3400C0340FFA
-:10B6700012010040A28D39B20000161300000080B4
-:10B680000200009018003600CA0000F8730A03F99F
-:10B690000000340F9F010014184081BC00007F0897
-:10B6A0008001008092802FB62B007F081201002CB1
-:10B6B00082CD2EB200001613000000800200009020
-:10B6C000000016131F0100D8028001B20000000024
-:10B6D000005401FC02C06E3200C0440F1801000C7F
-:10B6E000A8CD3EB22080000000000028098036323C
-:10B6F00000008111000000D8020000D20000410FBC
-:10B7000004000080028092BC18000000000000F8D5
-:10B71000730A0339420F3600000000C0020036925F
-:10B7200018003600000000F8738A03F900000000DA
-:10B73000000000D80280013200C0410F1800000C48
-:10B74000A8CD3EB200005D12000000D8024000F219
-:10B7500000F04C0F1D400200A80D68B10000161348
-:10B760000B000080020000B0000016131E4002848F
-:10B77000060000B200004A0F12000028020580B047
-:10B780000800450F000000F8234001990000450F14
-:10B7900012010068020580B000001613000000804E
-:10B7A0000200009000004C0FB5000080020000B0C5
-:10B7B00000000000A50080A0360B6A3500000000E4
-:10B7C0000000005009C02932000000000056012886
-:10B7D00008C06E320000000000000078390B2E32E5
-:10B7E0000000000000000020F38197340000560F95
-:10B7F00004000078D90130B600001613040100805F
-:10B80000328097BC0000000000000000B905303015
-:10B8100018000000000000F803A403390000000035
-:10B8200000000034330B2F3200006F0F040000784B
-:10B83000D90130B60000161304010080328097BC95
-:10B840000000000000000078B905303000005D0FF6
-:10B850000400008042E529BC00000000000000F860
-:10B860000200003218000000000000F8738A02395C
-:10B87000000000000000009C028097320A000000D7
-:10B880000000001009003632000080120000001491
-:10B8900009C029D20000690F25010008080000B284
-:10B8A0000000161380000080F20180B60000000046
-:10B8B0000000002C090580300000161302010080F2
-:10B8C00082FA92BC000016130601008092FA92BC24
-:10B8D0000000670F12000028020580B00800690F01
-:10B8E000000000F8234001990000690F1201006870
-:10B8F000020580B0000016130000008002000090D6
-:10B9000000006D0F0400008002402FBC000000000A
-:10B910000000007809002C32210316130400008077
-:10B92000828D97BC9603161304000080828D97BC0D
-:10B930000000161380000080A2802FB60000560F72
-:10B94000000000F4020000920000730F0400008069
-:10B9500042E529BC00000000000000F802000032AF
-:10B9600018000000000000F8738A0239000000008F
-:10B970000000009C0200953200000000CA0100D8BF
-:10B9800002800132000000000030000007C02C32AD
-:10B99000001000A00038000007003732000000004F
-:10B9A000002000000700EE32000000000038000C0C
-:10B9B00007808232000016131200004802C080B2D5
-:10B9C0000000F60300000008E80100940000930F57
-:10B9D00002000080A24280BC0000930F8000008023
-:10B9E000F2C185B60000930F1F400208B9BF68B0CE
-:10B9F0000000830F80410280E28168B608000000E9
-:10BA00000000001079618039000016139F2001E0CA
-:10BA100016206EBA00000000000000F822812F34CA
-:10BA20001800000000400288E62191390000000063
-:10BA30000001005C08000072000000000000000C23
-:10BA400019A0903A0000930F06010080D2FF90BC2D
-:10BA50000000870F2C410278F98168B400000000D3
-:10BA600000000078B9819734010000000000001048
-:10BA700009003632000080120000001459C085D73A
-:10BA80000300000000400200291AFF3800000000F7
-:10BA900000380200B91B903A00000000D241028831
-:10BAA00016A0973A00000000450000D8024000327E
-:10BAB000000016139F2001E016206EBA000000005F
-:10BAC0000000000007408032000000000008000075
-:10BAD0002724903A000000000010000007008A327E
-:10BAE0000000000012010058F2C138740000161363
-:10BAF00000000080020000900800A20F1A0000342D
-:10BB0000796180B90000AE0F1E010080020000B014
-:10BB10000000AE0F1F400200094068B20000950F00
-:10BB200080000080E20190B6000016133800005437
-:10BB30001F40F5BA0000000000000008B93F903037
-:10BB400000000000002801E026246E3A08001613C9
-:10BB50001E00000009A4FEB83D0000000000001017
-:10BB6000090036320000801200000014090090D253
-:10BB70000000000000000078090590300000161356
-:10BB80000201008082BA97BC0000161306010080F3
-:10BB900092BA97BC0000AE0F12010068020590B087
-:10BBA0000000161300000080020000900000AE0F9D
-:10BBB0008000008082812FB60000AC0F1F41020080
-:10BBC000094068B200000000002801E016206E3A2B
-:10BBD0000000A80F80010080F2C185B600000000BF
-:10BBE00000400284E60100340000000000000080F4
-:10BBF0000200003000000000004002800240683275
-:10BC000000001613380000541F40F5BA0000161348
-:10BC10009F2001E016206EBA0000000000010080A5
-:10BC2000020000700000A30F80000080E20190B6C7
-:10BC30000000970F000000541F40F59A000000001C
-:10BC40000000005C08000032000016139F2001E095
-:10BC500016206EBA00000000000000F822812F3488
-:10BC6000180000001E410284E6619379000016135B
-:10BC700000000080020000900000FFFF0000008034
-:10BC8000020000900000B90F1D5D01EC16C06EBCF3
-:10BC9000000000000F010080020000700000161379
-:10BCA000045D018002C06EBC00001613800000809D
-:10BCB00042812FB600000000000100F8B2802F740E
-:10BCC000000000000F010080020000700000B70FAC
-:10BCD000045E01EC16C06EBC00000000005C01ECCC
-:10BCE00006400032000000000001008002000070E9
-:10BCF0000000FFFF00000080020000900000000034
-:10BD00000420018082DB907C000016130420018057
-:10BD100002006EBC000016131F000080020000B07D
-:10BD200000000000020C0280A2DB907C0000C40F27
-:10BD300006210180821B90BC2700C50F0000000077
-:10BD40000900369228000000000000000900363289
-:10BD5000000000000000008812002C3A0000FFFFE5
-:10BD600000000080020000900600000000000010AB
-:10BD7000090036320000801200000014090092D23F
-:10BD80000000161304000080020092BC00000000B6
-:10BD90002FA00178891B927A0000000006880178A4
-:10BDA000899B977C000000000034020409C06E3DAE
-:10BDB00000000000000C020019A46E370000D20F32
-:10BDC0000200008002A497BC0000D20F0200008095
-:10BDD000020000B00100000000000078898D973754
-:10BDE0000000000002010280829B977C000000009E
-:10BDF000000100F8F2802F740000FFFF00000080B7
-:10BE00000200009000000000DA5B01EC0640ED3219
-:10BE10002D000000000000100900363200008012E2
-:10BE2000005C011409806ED20000DA0F040100806A
-:10BE3000024086BC0000000000A001E016206E3A1F
-:10BE40000000DC0F00D401EC060000920000AB12F1
-:10BE50000090010809006EF20000000000A001E05F
-:10BE600016206E3A0000DF12330100F882802FB4F2
-:10BE70000000DF129FF0018082DB87BC0000DF1230
-:10BE80009FF8018022216EBC0000000000E801E064
-:10BE90000600EE320000000000F001E006C087322C
-:10BEA0000000DF1200000080020000900000FFFF91
-:10BEB00000000080020000900000161308000080BF
-:10BEC000028091BC11000000000000100900363211
-:10BED0001000801200500114A99B91D91500000098
-:10BEE000000000100900363210000000002001148C
-:10BEF000890D6E370000801200300114895B91D2E9
-:10BF00001A00000000000010090036320000801204
-:10BF10000000001409C02DD2000016130621018074
-:10BF2000829B91BC0000000000A8017809006E32DD
-:10BF30000000161306010280829B97BC00000110CE
-:10BF40000421013069246EBC000000000050010093
-:10BF5000A99B913A0000F90F1F400224094068B2E2
-:10BF60000000F00F80000080E24192B60000000067
-:10BF700000000008B97F92300000000000000000BF
-:10BF80002924903C080000000000007899A4FE38A5
-:10BF9000000016130201008082BA97BC000016133D
-:10BFA0000601008092BA97BC0800F00F12010068E9
-:10BFB00092A4FEB80000161300000080020000905A
-:10BFC0000000161304290180821B90BC00000000B1
-:10BFD00000A801E066246E3A000016139F2001E0DD
-:10BFE000060093B20000FE0F8000008082812FB611
-:10BFF0000000FF0F002801E0060000920000000092
-:10C00000003001E00600003200000000005001E8AE
-:10C0100006000032000000000001008002000070F5
-:10C020000000071038510100A99B91BA00000510CB
-:10C0300004410208B9FF68B0000016138041028075
-:10C04000E2C168B60000021000400280024068921F
-:10C05000000014109F3101E066246EBC0000141033
-:10C06000003001E0060000920000111004280104D5
-:10C0700009006EB20000161306500180A25B90BC4E
-:10C0800000000F109F010000192490BC0000000068
-:10C0900000A801E066246E3A00000000002801E0DC
-:10C0A0000624003C00000000005001E806000032B9
-:10C0B000000016139F2001E0060093B2000000006C
-:10C0C000000100800200007000000000002801E074
-:10C0D0000600003200001D1004000080020090BC29
-:10C0E0000000141004410208B9FF68B000001613E4
-:10C0F00080410280E2C168B6000011100040028059
-:10C10000024068920000181002000080222490BCB7
-:10C1100000001D1080400280F2C168B600000000DF
-:10C120000040028CB6C1683500001D10000000F808
-:10C1300022812F940800000000400278399AFE38CE
-:10C14000000016130201008082BA97BC000016138B
-:10C150000601008092BA97BC0800161312400268CC
-:10C16000129AFEB80000111004010000292490BCAE
-:10C17000000000000000000809000032100000006C
-:10C1800000000010790B1638080000000000000CB9
-:10C19000790B1638000016130400008042E490BCAE
-:10C1A0000000000000000004A9002D370004010079
-:10C1B00000000004C94D903A02000000000000A8F1
-:10C1C000820D913700000000000000A812A42A3A56
-:10C1D0000000281080400280E2017CB600001613A7
-:10C1E00004400278B93F7CB0000000000000000865
-:10C1F000E9A5903A00002A109F010010190091BC97
-:10C200009F000000000000100900363200002310DB
-:10C210000401008042E490BC0000000000000078AF
-:10C22000C924903A000016130401008022A497BC90
-:10C230000000000000A801E066246E3A0000000043
-:10C24000005001E806009032000016139F2001E024
-:10C25000060093B2000000000001008002000070A0
-:10C260000000FFFF00000080020000901800341062
-:10C270001F41027888CD68B60000000000000088E9
-:10C2800012002C3A0000371080010080628087B6CF
-:10C290000000161304410280B2FF68B000003210A3
-:10C2A000004002800240689203001613044002001E
-:10C2B000381AFFB8000016131F400204B8FF68B018
-:10C2C0000000000000380200B81B803A2E00000079
-:10C2D0000000001009003632000080120000001437
-:10C2E000090080D200000000000100800200007000
-:10C2F0000000FFFF000000800200009000004510D9
-:10C3000080010080A2802FB60000421012010000C0
-:10C3100009C021B218003600000000F8730A03F9C2
-:10C3200000000000000000D8024084321D004510CB
-:10C330000401008002A417B800003F109F01008094
-:10C34000180088BC00001613000000800200009056
-:10C35000000000000060006C08006E320000000069
-:10C36000CA68004C08006E320000161304700018F2
-:10C3700008006EB2200000000000001009003632F4
-:10C380001000801200000014A96081D90000000094
-:10C3900004000080A2A0817C000016130D01008023
-:10C3A000020000B000004F1080010080E2802FB634
-:10C3B00000004F101B000080020000B000000000D1
-:10C3C0000600008062E0837C000016139F000014CA
-:10C3D000184081BC00000000CA0100F802802F351F
-:10C3E00000A0000012010040A28D39720000161357
-:10C3F00000000080020000900000FFFF00000080AD
-:10C400000200009000000000000801E406C02D3288
-:10C41000EEFF0000001001E0868D2F3100000000CB
-:10C420000000001CB3E4393200005B100400007807
-:10C43000D90130B60000161304010080328097BC89
-:10C440000000000000000078B9053030180000003E
-:10C45000000000F8E3A503390000000000000034EC
-:10C46000330B2F320000000004000078D901307631
-:10C470000000161304010080328097BC0000000009
-:10C4800000000078B905303018000000000100F805
-:10C49000E3A503790000FFFF000000800200009088
-:10C4A000000016130401008002002DBC00001613CA
-:10C4B0000401008002802DBC00000000000000CCC0
-:10C4C00002000032000066102000012C09C06EB28C
-:10C4D00000006710001686CC06C092920000000093
-:10C4E000001486CC06C09232000000001201004009
-:10C4F000628E92520000161300000080020000902D
-:10C500000000FFFF000000800200009000006D109E
-:10C5100004000078D90130B6000016130401008031
-:10C52000428097BC6D103600000000C002003692B9
-:10C530006000161304010080828D2FB100000000FE
-:10C54000000000140300383200000000000000E08A
-:10C55000020030320000B91004000024D80130B6C7
-:10C560007210000000000088824D823A000016130D
-:10C570000000008002000090000016130000008000
-:10C5800002000090000016130000008002000090DE
-:10C590000000161300000080020000906D103600AD
-:10C5A000000000C00200369200009E1000000080D3
-:10C5B0000200009000007A10000000204805309032
-:10C5C000000016130000008002000090000086109A
-:10C5D000921101BC08006EB200000000000801DCEE
-:10C5E00002406E3200007E101F1101E026C18BB5A3
-:10C5F000000086101D000080020000B00000000056
-:10C60000000000D80200003280020000000000009C
-:10C61000070036320000000000000078A9002D3726
-:10C620002005010000080000C78D973A0A000000AD
-:10C6300000000078890D8237000000000010000023
-:10C64000A7BA973A000000000018000007C0EA32BD
-:10C65000000016131200004802C038B200008A1011
-:10C66000800E01BC08C06EB2000000000000000097
-:10C67000190E823200E0921012010048A20D90B211
-:10C68000000016130000008002000090000000006F
-:10C69000000000D802400032B4000000000000009A
-:10C6A000070036320000000000000078A9002D3796
-:10C6B0000004010000080000C78D973A0000000048
-:10C6C0000000007899008237000016130210000065
-:10C6D00087BF97BA00000000001800000740FE3234
-:10C6E0000000161312000048F2C138B418003600DA
-:10C6F000000000F8730A03F90000000000000004C5
-:10C70000896038321D0000000000007809A4173845
-:10C71000000098108000008002C08BB600009910C5
-:10C7200004000080328097BC0000161300000080D7
-:10C73000020000900000161304010080028097BCE4
-:10C740000000000000000018F341903400009E102B
-:10C7500004000078D90130B60000161304010080EF
-:10C76000328097BC0000000000000000B9053030A6
-:10C7700018000000000000F803A4033900000000C6
-:10C780000000000019CE2C32006016131200004089
-:10C79000A20D90B200000000000000D8020000329C
-:10C7A00060000000000000000700363200000000BA
-:10C7B000000000BCA8002D37A00701000008000001
-:10C7C000C7CD8B3A0A0000000000007889CD2C37D5
-:10C7D0008002000000000078898D973A0000000078
-:10C7E00000100000A7BA973A0000000000180000EF
-:10C7F00007C0EA320000161312000040F2C138B43C
-:10C8000018003600000000F8730A03F90000000069
-:10C81000000801DC02406E321D00000000000078BC
-:10C8200009A417380000161304010080028097BC89
-:10C83000000016138010018022016EB60A00B010AD
-:10C840001F01007889CD2CB70000B7101D1001F82A
-:10C8500002006EB2800200000000000007003632C5
-:10C860002005010000080000C7CD8B3A0000000041
-:10C8700000100000A7BA973A00000000001800005E
-:10C8800007C0EA320000161312000040F2C138B4AB
-:10C8900018003600000000F8730A03F900000000D9
-:10C8A000001001F802006E32EEFF16130401008042
-:10C8B000828D2FB000000000000100800200007097
-:10C8C000EEFF161304110180820D6EB0000000000F
-:10C8D000001001F802006E3200000000000901DCC7
-:10C8E00002406E720000FFFF000000800200009016
-:10C8F0000000000000000000090000320E000000EF
-:10C9000000000004894D0D3600000000000000000A
-:10C9100007800B3200000000000800000700903282
-:10C920000000000000100000070036320000C210B6
-:10C930001200004CF2C138B400000000000000807A
-:10C94000020000300000C3101200008002C021B2BB
-:10C950000000000000000000E902903A0000BF1053
-:10C9600004010004194090BC000000000001008098
-:10C97000020000500000FFFF000000800200009055
-:10C980000000D21080010080A2802FB60000CC10E1
-:10C99000120100E802C021B218003600000000F8C1
-:10C9A000730A03F90000D1100400008002802DBC3E
-:10C9B000000016130401008022802DBC0000161315
-:10C9C0009F000080180088BC0000CC10120100E815
-:10C9D00002C021B20000CB100000008002000090D5
-:10C9E00000000000CA0000D8024084320000161384
-:10C9F0000401008002402DBC0000161304000080DA
-:10CA000002802DBC000000000040006C881C833AAE
-:10CA1000000000000048004C0800723200001613AD
-:10CA200008500018C82072BC0000000004000080FC
-:10CA30000240817C00000000000000141840813C8E
-:10CA40000000161302000020880182BA00000000D6
-:10CA5000000000D8020000320000000000000000CA
-:10CA6000070006320000161304010080020036BCE5
-:10CA70000700000000080000774A093900000000A4
-:10CA8000001000000700823200000000CA190000F8
-:10CA9000074082320000161312000040F2C138B481
-:10CAA00000000000000100D8024084720000FFFF77
-:10CAB0000000008002000090000000004D00000017
-:10CAC00067E0833E0000000000080000070080329D
-:10CAD000000000000010000007C0863200000000C7
-:10CAE0000018000007C0843200003C110400002838
-:10CAF000D8A082BC0000161309010080020000B01B
-:10CB00000000000000000018D8A0813C0000FE10CA
-:10CB10000400003CD8E083BC000016130401008030
-:10CB2000028081BC0000EF100400008072802DBCE8
-:10CB3000000016131200005002C038B20000F710B7
-:10CB4000510000D812802D9A0000161312000050D8
-:10CB5000F2C138B418003600000000F8730A03F977
-:10CB60000000F5100400008072802DBC0000161338
-:10CB700080010080A2802FB60000F010670000F84E
-:10CB8000A2802FB500001613120000E802C021B2E7
-:10CB9000000016130401008072802DBC000000000C
-:10CBA000510000D8020000320000FC102A010000F1
-:10CBB000D82080BA0000FB101201000009C021B289
-:10CBC00018003600000000F8730A03F900000000A6
-:10CBD000000000D8024084321D00161304000080BB
-:10CBE00002A417B8000046100060006C08006EF246
-:10CBF0000000E4104D00000067E0839E0000161363
-:10CC000012000050F2C138B418003600000000F8DD
-:10CC1000730A03F91D0005110400008002A417B86F
-:10CC20000000161380010080A2802FB60000FF10C4
-:10CC3000670000F8A2802FB5000016131200000054
-:10CC400009C021B21D0016130401008002A417B808
-:10CC50000800000000400278399AFE3800001613E0
-:10CC60000201008082BA97BC000016130601008002
-:10CC700092BA97BC0800161312400268129AFEB8C6
-:10CC8000000016130B000080020000B000006411C9
-:10CC900000000030030038F200001B111F00006C80
-:10CCA000D8E086BA00003210510000D8020000F22D
-:10CCB00000000F110000003C0840809200001B1192
-:10CCC000000000800200009000001311800100802D
-:10CCD000F2812FB60000131180000080E2802FB691
-:10CCE0000000131180010080328087B60000000030
-:10CCF000000000F8E2802F340000E31004010080FF
-:10CD0000028081BC0000191180010080A2802FB632
-:10CD1000000018111201000009C021B218003600ED
-:10CD2000000000F8730A03F900000000000000D8BA
-:10CD3000024084321D0016130400008002A417B8BC
-:10CD4000000046100060006C08006EF20000E41065
-:10CD50004D00000067E0839E0000201180010080EC
-:10CD6000E2802FB60000401180010080A2802FB623
-:10CD700018003600CA0000F8730A03F91D004011BC
-:10CD80000401008002A417B8000016130000008000
-:10CD90000200009000000000000000A4A8608A3C8F
-:10CDA0000000161304210180825B8ABC000024115C
-:10CDB0002FA8012099226EBA0000C70F0000008042
-:10CDC000020000F00000161306010280821B92BCD4
-:10CDD0000000000000A801E0060092320000000000
-:10CDE000005001E80600003200002911232101E073
-:10CDF000060000B23E0016131200002C82CD2EB2A7
-:10CE000000001613043000E0068082B200003311E7
-:10CE1000042100E0068081B200001613800000802B
-:10CE2000E2802FB60000311180010080A2802FB671
-:10CE3000000030111201000009C021B218003600B4
-:10CE4000000000F8730A03F900000000000000D899
-:10CE5000024084321D0016130400008002A417B89B
-:10CE6000000046100060006C08006EF20000000038
-:10CE7000002000E00680813200000000003C00E855
-:10CE80000640813200000000001000E006C086323B
-:10CE900000000000001800E006C0843200001613F5
-:10CEA0000400008032E186B2000000002A01008008
-:10CEB0000200007000003A111201000009C021B206
-:10CEC00018003600000000F8730A03F91D0016135D
-:10CED0000400008002A417B800000000000100F860
-:10CEE000A2802F75000000000000003CD8E0833CC9
-:10CEF0000000161312000050F2C138B400001613DF
-:10CF000080000080A2802FB600000000000000F822
-:10CF1000A2802F34000000000000008812002C3A8C
-:10CF20000000FFFF000000800200009000000000F1
-:10CF3000000000000900003200000000000000783E
-:10CF40000900003200000000000000A802000032CA
-:10CF5000EE05481104010080820DF6BC00060000B9
-:10CF6000000000080900363200004A1100000004E9
-:10CF700009C00992002800000000000809003632AC
-:10CF80000000000000000004098009321E000000BB
-:10CF9000000060C087CD003700000000000860C0BE
-:10CFA000078097320030000000000078898D2A3A0F
-:10CFB000000016131200005C528197B400000000BC
-:10CFC000000000002924903A0800000000000078CA
-:10CFD000890D903600000000000000041940903CCC
-:10CFE00000000000000000A852822A3A00084A11FE
-:10CFF00002010080828D2ABC00005B1106000080C7
-:10D00000024090BC00001613120000A8020020B2DB
-:10D010001E000000000000C087CD003700000000A7
-:10D02000000800C007809732000016131200005C51
-:10D0300052812AB400000000000000002924903A28
-:10D040000800000000000078890D9036000054119F
-:10D0500004010004194090BC0500000000000078A5
-:10D06000890D903600000000000000A00E8097326D
-:10D070000000161312000068028097B20000000042
-:10D08000000000A40E8097320000000000000000A5
-:10D090002924903A000000000000007859009036E2
-:10D0A00000005D1195010080222490BA000000006C
-:10D0B00000010080020000500000FFFF000000801F
-:10D0C0000200009000007E1104010078D90130B602
-:10D0D000000000000000002809C029320000000004
-:10D0E0000000009CB2452830000070118601000845
-:10D0F00009802FB2000000000000002C094081329E
-:10D1000000000000000000F80200003200000000F3
-:10D11000000000F40200003218000000000000F8D7
-:10D12000738A0239000000000000009C02809232E5
-:10D1300000006F110407018002C06EBC000079116D
-:10D14000C30701ECB6E46E9A00007911000601EC09
-:10D15000B6E46E9A0000161380010080528090B6EB
-:10D16000000000000000002C0905803000000000D5
-:10D17000000000F80200003200000000000000F48F
-:10D180000200003218000000000000F8738A023923
-:10D19000000000000000009C028092320000161384
-:10D1A0000201008082FA92BC000016130601008082
-:10D1B00092FA92BC0000D71100000080020000D05B
-:10D1C000210000000000001009003632000080122B
-:10D1D0000000001409C092D20000000000000030DE
-:10D1E0000300383200007E1104010078D90130B606
-:10D1F000000067110000009CB2452890000000006C
-:10D20000040000802280977C00001613000000803C
-:10D21000020000900000FFFF00000080020000906C
-:10D22000000016130400008002C0E8BC00001613C2
-:10D230000200008002C12FBC000000000000008836
-:10D2400002C0E83202008411B00000A0F20B00B965
-:10D25000000000000000000CABE4B03200008911B7
-:10D2600080010080F24BD0B600000000A000002832
-:10D2700009000032000000000001008002000050A0
-:10D2800000008B1104010080123EF8BA00009611D4
-:10D29000A0000004FD4BD09400009211800100809A
-:10D2A000D28192B600009211800100802281FCB6EA
-:10D2B00000000000A0000004FD4BD034000000007E
-:10D2C0000000008401C02F32000000000000008038
-:10D2D000F1010034000000000000009401C02F3272
-:10D2E0000000961100000090F10100940000000081
-:10D2F000A000008401C02F32000000000000008068
-:10D30000F101F83400000000000000900140F83204
-:10D310000000000000010028090000520000161360
-:10D3200080010080F24BD0B600009C11040100285F
-:10D330000934B0BA0000161380010080F24BD0B659
-:10D3400000009911B0000080020000B00000000051
-:10D35000A0000004FD4BD0350000000000010028B3
-:10D360000900005200009C11B00000A822C02FB795
-:10D3700000001613040084C037ACB0B200000000F7
-:10D38000A000000C0B000032FFFF0000000000783E
-:10D39000A94DB0300000A411800000800240B0B65A
-:10D3A00000001613800000801240B0B6000000009C
-:10D3B00000000078698197350000000000008408B3
-:10D3C0000B007C320000000000000000E725013265
-:10D3D0000042000000080000878D2A3A000000008B
-:10D3E000001000000700B03200000000001800002C
-:10D3F0000700D0320000000012010048F2C138548A
-:10D400000000161300000080020000900000AA1126
-:10D41000B00000A0020000B2000000000000000CFC
-:10D42000ABE4B0320000AF11800100800240D0B602
-:10D4300000000000A00000280900003200000000E9
-:10D4400000010080020000500000B11104010080C2
-:10D45000123EF8BA0000C211A00000040D40D094A2
-:10D460000000BB1180010080D28192B60000BB1188
-:10D47000800100802281FCB600000000A0000004B2
-:10D480000D40D034000000000000007809C02F32A9
-:10D4900000000000000000FC02000032000000005C
-:10D4A0000000008401C02F32000000000000008056
-:10D4B000F1010034000000000000009401C02F3290
-:10D4C0000000000000000090F10100340000C211D3
-:10D4D000000000FC0280979200000000A00000788D
-:10D4E00009C02F3200000000000000FC02000032E2
-:10D4F000000000000000008401C02F320000000086
-:10D5000000000080F101F8340000000000000090ED
-:10D510000140F83200000000000000FC0280973259
-:10D52000000000000001002809000052000016134E
-:10D53000800100800240D0B60000C811040100281C
-:10D540000934B0BA00001613800100800240D0B642
-:10D550000000C511B0000080020000B00000000013
-:10D56000A00000040D40D03500000000000100289C
-:10D57000090000520000C811B00000A8020000B26B
-:10D5800000001613040084C037ACB0B200000000E5
-:10D59000A000000C0B000032FFFF0000000000782C
-:10D5A000A94DB0300000D011800000800240B0B61C
-:10D5B00000001613800000801240B0B6000000008A
-:10D5C00000000078698197350000000000008408A1
-:10D5D0000B007C320000000000000000E725013253
-:10D5E0000042000000080000878D2A3A0000000079
-:10D5F000001000000700B03200000000001800001A
-:10D600000700D0320000000012010048F2C1385477
-:10D610000000161300000080020000900000FFFFD1
-:10D6200000000080020000900000D9111C40028020
-:10D6300006C092B244000000000100F8A28D2F52F3
-:10D64000000000000000007809C5923000001613A9
-:10D650000201008082BA97BC000016130601008008
-:10D6600092BA97BC000016131200006802C592B06F
-:10D67000000016130B000080020000B02400000020
-:10D680000000001009003632000080120000001473
-:10D6900009C092D200000000000100701F00F75A7C
-:10D6A0000000FFFF00000080020000902C0000003E
-:10D6B0000000001009003632000080120000001443
-:10D6C000098092D200000000D50800000780923245
-:10D6D000000000000030000007C02C320040008035
-:10D6E000003800000700373200000000CA4101E0A6
-:10D6F00006809232000016131200004802C080B269
-:10D700000060000000010008088036720000FFFF82
-:10D7100000000080020000900000161380000080CE
-:10D72000A2802FB6000016130401008062802DBC79
-:10D730000000000000380000078092320000000066
-:10D740000030000007C02C3200000000CA3D000C71
-:10D7500007808332000000001201004802C080727E
-:10D760000000161300000080020000900000FFFF80
-:10D7700000000080020000900000000004570180BB
-:10D7800002C06E7C00000000005701EC068092721F
-:10D790000000FFFF00000080020000900000641104
-:10D7A00000000030030038F23300000000000010D9
-:10D7B00009003632100080120000001419A02CD984
-:10D7C0000000FB119D11020C09006EB20000FC115B
-:10D7D00000F0011C09006E920000000000B8011C5E
-:10D7E00009006E320000FE112CCD011809806EB2C6
-:10D7F000000000000000000CC9C1903400000212BB
-:10D800003B29020409806EB20000161380D6018005
-:10D8100052C06EB60000000000D601EC56C06E3457
-:10D82000000000000000000CB9C19034000012128A
-:10D8300000A8010809006EF2000006129D01008098
-:10D8400017E090BA000000000030008007C091325D
-:10D8500000000912003800800700EE920000091253
-:10D860000401008002C091BC0000000000B801E08B
-:10D870000600EE3200000000007001E00600863273
-:10D8800000000C123908008007C085B20000161392
-:10D8900080000080C2812FB600000000D9C901E8D5
-:10D8A0000680913200000000C811008007409032CD
-:10D8B00000000F123B210080070086B2000000002C
-:10D8C000DB0000601800863A00000000587801E094
-:10D8D0001620863A000000000029008007008572AB
-:10D8E0000000FFFF00000080020000900000161200
-:10D8F000020C0280A29B90BC000000000000027895
-:10D9000029006E360000161202000080E2A590BCCD
-:10D91000000000000000000809000032000018129A
-:10D920009F89017849216EBC00000000000000784A
-:10D93000090000320000000000000008E9A5903F47
-:10D9400000001E1204200208899B90BE0000000007
-:10D95000000A0258B89B90360000000000000078D2
-:10D9600049A1903A000000009F880180829B977C2B
-:10D9700000000000008901E00680977200000000AE
-:10D98000000B0258B89B90760000FFFF000000805B
-:10D99000020000900000271280010080A2802FB6B4
-:10D9A000000025121201007809C021B218003600CB
-:10D9B000000000F8730A03F9000016130401008048
-:10D9C00002802DBC00002712CA0000D802408492B9
-:10D9D0001500161304010078E96517B8000000006F
-:10D9E000000000F8A2802F3500001613040100800B
-:10D9F00002402DBC000016130400008002802DBCE4
-:10DA0000000000000040006C881C833A0000000009
-:10DA10000048004C0800723200001613085000182D
-:10DA2000C82072BC000000000600008062A0827C5A
-:10DA3000000016139F000014184081BC000016134C
-:10DA400002000020880182BA00000000000000D817
-:10DA50000200003200000000000000000700063253
-:10DA60000000161304010080020036BC070000000D
-:10DA700000080000774A093900000000001000008B
-:10DA80000700823200000000CA19000007408232FD
-:10DA90000000161312000040F2C138B4000000006C
-:10DAA000000100D8024084720000FFFF00000080E7
-:10DAB000020000902B000000000000100900363228
-:10DAC000000080120000001409C085D2000042123C
-:10DAD00080010080F2C185B600003E121F40028422
-:10DAE000E60100B4000042121D0100F822812FB4AB
-:10DAF00000004212000000F862812F9500004012E1
-:10DB00001D010080020000B000000000000000F8CD
-:10DB100062812F3500000000004002800240683220
-:10DB2000000016131F010080020000B00000161351
-:10DB30001200006802C585B00000000000000078F7
-:10DB400009C58530000016130201008082BA97BC17
-:10DB5000000016130601008092BA97BC0000000076
-:10DB60001D00008002000070010000000401008020
-:10DB7000A28D2F702A0016131200002C82CD2EB217
-:10DB800000000000000100F802812F740000FFFF78
-:10DB9000000000800200009080A8000004000080C7
-:10DBA000828D2F700000521280010080D2802FB62B
-:10DBB000000016138000008072812FB60000521200
-:10DBC00004B0008002006EBC00000000000000F8FD
-:10DBD00072812F343D0055121201002C82CD2EB2DD
-:10DBE0000000161300000080020000900000551293
-:10DBF00080010080F2802FB63C0058121201002CE8
-:10DC000082CD2EB2000016130000008002000090AA
-:10DC10000000581280010080B2802FB63500161324
-:10DC20001200002C82CD2EB200000000000000F88F
-:10DC300042812F348000000004000080828D2F700C
-:10DC40000200000004010080A28D2F703B0016131B
-:10DC50001200002C82CD2EB200000000000100F85E
-:10DC600012812F740000FFFF00000080020000906E
-:10DC70000000161380000080A2802FB6000016134B
-:10DC800004310280A2DB2CBC08000000001801E86F
-:10DC900076208139EEFF0000000100F8828D2F719F
-:10DCA0000000FFFF000000800200009000006612EC
-:10DCB0000000013808C06EF20000000012010048A8
-:10DCC00002C0807200001613000000800200009065
-:10DCD0000000FFFF00000080020000900E00000026
-:10DCE00000000010090036320000801200380114D4
-:10DCF00009006ED200006A120438017809006EB281
-:10DD000000000000003801E0060000320000161399
-:10DD100080000080A2802FB600000000CA11000021
-:10DD20000780823200006E122E190000078097B221
-:10DD30000000000000000028E98192340000731206
-:10DD40002731000007C02CB200000000D5080000F9
-:10DD50000700873200000000C7000028E9809234E5
-:10DD600000000000004001E00600873200000000D3
-:10DD700000000008D8818034100000000039000045
-:10DD8000E7A092790000FFFF0000008002000090F1
-:10DD9000140000000000001009003632000080125C
-:10DDA00000000014094090D2000016131200004435
-:10DDB00012E438B218003600000000F8730A03F9C4
-:10DDC00000007D120401008002802DBC00001613AB
-:10DDD00080010080A2802FB600007812670000F852
-:10DDE000A2802FB500001613120000E802C021B275
-:10DDF000000016130401008072802DBC000000009A
-:10DE0000000100D8024000720000FFFF0000008007
-:10DE1000020000901B00000000000010790A9139F8
-:10DE20000F00000000000010390B91390C000000B9
-:10DE300000000010590A913909008312F101001005
-:10DE4000690B91B903000000002486A8828D6C370D
-:10DE500000000000000088E0070091320000000090
-:10DE6000000088E00740913200C089120201008062
-:10DE7000828D2ABC00008A12E12486C80600009226
-:10DE800003000000E12486C8868D2A3600000000C9
-:10DE900000010080020000500000FFFF0000008031
-:10DEA000020000900000921204300080829B81BC2E
-:10DEB000000016130D010080020000B000001613D0
-:10DEC0009F3C001428806EBC000016138000008068
-:10DED000A2802FB600000000CA0100F802802F3592
-:10DEE00000A0161312000040A28D39B20000941257
-:10DEF00080390080E2806EB6000016138038008002
-:10DF0000F2806EB600C0161304010080A28D2FB0FF
-:10DF100000C09A1204380078898D6EB010009A12F1
-:10DF20009F0100F8E2A52FB900001613040000803D
-:10DF300002C0EEBC00000000005801EC06C0EE324A
-:10DF4000000000000000008002000030000000001F
-:10DF50000428001809006E720000E30F0000008022
-:10DF6000020000F00000C70F00A8012009006E9217
-:10DF70000000FFFF00000080020000900000A712D8
-:10DF800004B00080829B81BC000016130D0100804C
-:10DF9000020000B0000016139FBC001428806EBC65
-:10DFA0000000161380000080A2802FB60000161318
-:10DFB00080B8008082806EB60000000000B800E8E3
-:10DFC00086806E3400000000CA0100F842802F35C0
-:10DFD00008A0000012010040A2CD39720000161303
-:10DFE00000000080020000900000161380B800803E
-:10DFF00082806EB60000000000B800E886806E34B3
-:10E000000000000000010080020000700000FFFF1F
-:10E0100000000080020000902800000000000010B6
-:10E02000090036320000801200000014098090D2EE
-:10E030000000B01233CD01BC08806EB20000EE12B9
-:10E04000000000282922EEDC0000B512000000804C
-:10E05000020000900000B51204B8012809006EB259
-:10E060000000B5129F710180C2216EBC0000161322
-:10E070009F000028A924EEBC0000EE12000000283A
-:10E08000198092DF000000000000008002000030D4
-:10E090000000C91202810180829B90BC000016130F
-:10E0A00004000080028090BCEE05C112060C0280C4
-:10E0B000828D6EBC00904C0000000084020037325C
-:10E0C0000000BB12B8010080020000B00000B912CD
-:10E0D000000000800200009000000000000000C46A
-:10E0E000038090320000000000B001E096216E3CF9
-:10E0F00000000000619801E0060087320000000087
-:10E1000000D401EC0600003200000000A8000078F6
-:10E1100049403C370000CE1200000008E9A5909A63
-:10E120006089200000000084020037320000C41221
-:10E13000B8010080020000B00000C21200000080A0
-:10E140000200009000000000000000C40380903234
-:10E150000000000000B001E096216E3C00000000CD
-:10E16000619801E0060087320000000000D401EC55
-:10E17000060000320000CE12A8000008198F909A05
-:10E18000000000000000007899A1893E0000000016
-:10E1900000000008E9A5903A0000000000B001E08E
-:10E1A00096216E3C00000000619801E00600873275
-:10E1B0000000000000D401EC060000320000D11283
-:10E1C0000600008072A290BC00C0FF3F008001E00A
-:10E1D00006003732000000000000000809C0893244
-:10E1E0000000D61204790180821B87BC0000D41283
-:10E1F00004B0008002006EBC0000D912D99001E08A
-:10E20000068090920000DC128000008052812FB6C0
-:10E210000000DC12D54101E0060087920000D9120F
-:10E220003C9001E0068090B200001613800100804F
-:10E2300092812FB60000000000C801E806C08B32B2
-:10E24000000000009501008002802F720000DD12A6
-:10E250009F410180821B87BC0000000000010080FC
-:10E260000200007000000000D99001E006809032AA
-:10E2700000000000000100F872802F740000FFFF12
-:10E280000000008002000090270000000000001045
-:10E29000090036320000801200000014094087D2C5
-:10E2A0000000E7129FD8018022216EBC0000000010
-:10E2B0000B010080020000700000E7129FE0018067
-:10E2C000C2216EBC000000000B0100800200007043
-:10E2D0000000E7129FB00180D2216EBC0000000058
-:10E2E00000010080020000700000E9120668018051
-:10E2F000825B87BC00000000006801E006408732B6
-:10E300000000EB1237B001E0064087B200000000C9
-:10E31000000000F8D2802F340000000000D801E097
-:10E32000068084320000000000E101E006008772F0
-:10E330000000FFFF000000800200009000001613A4
-:10E3400008000080028092BC0000FB1204C101841E
-:10E3500002006EB20500000000C001E8868D923711
-:10E360000300000000C401E8868D92370000000021
-:10E3700000000080020000300300000000C0012CFB
-:10E38000898D6E360000000000C4012CA9DB923A92
-:10E39000000000000000002C29C0923600000000A0
-:10E3A0000000002C19FB923F000000000000002834
-:10E3B0002980923A000000000000002CA9E4923F5E
-:10E3C000000000006FCC01E826FB923E0000000038
-:10E3D00000B901E0060000520000000000000094B7
-:10E3E000028092320000000000C001E006402832A6
-:10E3F000100000006FCC01E886CD2A360000000036
-:10E4000000B901E0060000520000FFFF000000809C
-:10E41000020000900000161304B0008002006EB2EB
-:10E4200000000000009001BC08006E3200000000F7
-:10E4300000B001BC88DB8B3E00000000009801BCEE
-:10E4400088DB8B3A00000C139F0000BC88E18BBC7A
-:10E4500000000C13040C0240A8DB8BBE000000007F
-:10E4600000B00004881B843E0000091304B1008042
-:10E47000825B80BC00000000000100F8C2802F74A5
-:10E4800000000000040C0280A25B807C00000C13E2
-:10E490000468017819006EB60000000002000080D8
-:10E4A000E265807C2900000000000010090036327F
-:10E4B000000080120000001409C08BD20000000090
-:10E4C0000000008812002C3A0000FFFF00000080CE
-:10E4D000020000900000161304310280A2DB2CBC65
-:10E4E0000000161380000080A2802FB608000000F4
-:10E4F000001C01E876208139EEFF0000000100F8E1
-:10E50000828D2F710000FFFF00000080020000904C
-:10E5100000001613000000B40F40FB940000000040
-:10E52000000000880F402B32000000000000009027
-:10E530000F00283200000000000000940F00293274
-:10E5400010000000000000B85F461839FF0000000E
-:10E550000000009C0F003632000000000000009C0C
-:10E560005FCAF935000000000000004403C0F93222
-:10E5700000000000000000E4030000324100001031
-:10E58000000000E00300373200000000000000E45B
-:10E590000300003240000010000000E003003732AA
-:10E5A00000002513670000980F802AB200000000C9
-:10E5B000000000A8020000320000231312C186E010
-:10E5C00007C021B20000000000B886C006802A32D1
-:10E5D0004C420000000000A8020036322713381415
-:10E5E000000000B00F003692000000000000009C08
-:10E5F0000200003200012414000000AC0F0036D2EB
-:10E6000000000000000000AC0F802A320020000053
-:10E61000000000A802003632000000000000009C4C
-:10E620000F007E3200000000000000A00F007E32CC
-:10E6300000000000000000A40F007E320000000077
-:10E64000000000A80F007E3200000000000000A8BB
-:10E6500002C0FA3200000000000000E007C0F932FA
-:10E6600000000000000000E00700FA320000000097
-:10E67000000000E00740FA3200003B13000000E019
-:10E680000780FAD200000000000000E00780FB32A3
-:10E6900001006213040100B48F4DFBB002000000C2
-:10E6A000000000A002000039408000000000000CC3
-:10E6B000ABCDB032100000000000000C5BCAB039D6
-:10E6C000000000000000000C2BFEB03200006114BE
-:10E6D000000000800200009000000000000000F830
-:10E6E0000300013200000000000100E007803F52FB
-:10E6F00018000000000000F8738A023900000000D2
-:10E7000000000044530A1635000000000000009C81
-:10E710000F80963200000000000000A00FC096326B
-:10E7200000000000000000A40F009732A260030068
-:10E730000000005803003732481300000000005C5E
-:10E74000030036320000000000000050830D00344A
-:10E750000000000000000048830D003400000000AD
-:10E7600000000044530A003400003600000000801E
-:10E7700002000090000000000000006809C0F932AB
-:10E78000000000000000006C0900FA3200000000E8
-:10E79000000000700940FA3200005A1300000080A7
-:10E7A0000200009002000000000000A0F20B0039FF
-:10E7B00000004F13800100801240B0B6000000003E
-:10E7C000000000043B40B0330000000000000004E3
-:10E7D000FD4BD035000053130000000C0B00979246
-:10E7E00002000000000000A0F20B003900005313EB
-:10E7F000000000046B01979400005313120000689E
-:10E80000094020B2000054131200006C094020B2ED
-:10E810000D000000000000FCA2E5163800005913AE
-:10E820009F000080028096B200000000000000708F
-:10E8300009C0963200005A130000006C09C0FD9216
-:10E840000000591312000070094020B200000000BF
-:10E850000000009C0200003200000000000000D810
-:10E860000200003202005313040100BCAF2517B8A8
-:10E8700006005113040000BCAF6516B800004C132D
-:10E880000400008022C0FBBC00006A13040000806A
-:10E8900012C1FBBC200053130401008082CDFBBCDD
-:10E8A00002000000000000A0F20B003900006B1312
-:10E8B00000000080020000D0641300000000008807
-:10E8C00082CDF93A00005A14000000800200009046
-:10E8D00000009313000000800200009000009413D9
-:10E8E00000000080020000900000981300000080EB
-:10E8F000020000900000A0130000008002000090C1
-:10E900000000F91300000080020000900000531383
-:10E91000000000DC0F0097920000000000000000E3
-:10E920000700033240420000000000A80200363217
-:10E93000000000000008000007802A3200000000EC
-:10E9400000100000070097320000000000180000CF
-:10E9500007C096320880701312000040028036B261
-:10E960000000000000000080020000300000721370
-:10E970001200009C0FC021B21D007513040000801E
-:10E9800072BE17B800007213000000F81E80EF9AE4
-:10E99000130000000000009C7FBE173800007813B1
-:10E9A0000400008012C0F9BC00007213000000F8DF
-:10E9B0001E80EF9A000000000000009C0F007E32D5
-:10E9C00000000000000000A00F007E3200000000E8
-:10E9D000000000A40F007E320000000000010000D3
-:10E9E0000700FA52000000000000009C0200003204
-:10E9F0004C420000000000A8020036320000000077
-:10EA00000008000007802A3200004E140000008039
-:10EA1000020000D00000521400000080020000D06C
-:10EA2000000000000000000CCBC1B034000000006A
-:10EA30000000009C0200003200000000000000D82E
-:10EA400002000032000081110000002809C0B0D28D
-:10EA50000000821304000080028092B2000086133E
-:10EA60001200009C0FC021B21D0089130400008019
-:10EA700072BE17B800008613000000F81E80EF9ADF
-:10EA8000130000000000009C7FBE173800008C13AC
-:10EA90000400008012C0F9BC00008613000000F8DA
-:10EAA0001E80EF9A02008E13040100B48F4DFBB05C
-:10EAB00000005313000000800200009008000000D6
-:10EAC000000000F89340013900000000000000B48D
-:10EAD0001F40FB35FE0000000000004803003632F6
-:10EAE0000000000000000044030000340000821316
-:10EAF0000000000C8BC1B09400005E140008000000
-:10EB00000740FA9200004E14000800000740FAD2B5
-:10EB10000880951312000050028036B20000531492
-:10EB200000000080020000D000006014000000809F
-:10EB300002000090000800000000009C0F00363228
-:10EB400000040100000000A80200373200000000AD
-:10EB5000000000A00200003200000000000000E001
-:10EB60000700B03200000000000000A012002A3AA6
-:10EB700000009B130401009C1FC0F9BC00040100AD
-:10EB8000000000A80200373202005D14000000A05F
-:10EB9000F20B00990000A813040100800240FAB2B1
-:10EBA00000040100000000A8020037320000AA1390
-:10EBB00000000080020000D00000B71300000084B5
-:10EBC000020000D200000000000000E007C03C325C
-:10EBD0000000A4138E010080024028B2000401004E
-:10EBE000000000A40F0037320000931300000080E3
-:10EBF0000200009000040100000000A4CF4DFA3A8A
-:10EC0000000093130000008002000090000000004C
-:10EC10000000009C0F00003210000001000000AC5A
-:10EC20000F0037320000BC1300000080020000D04B
-:10EC30000800AC130401008082CDF9BC0000000084
-:10EC40000000009C0F0000320E000001000000AC2C
-:10EC50000F0037320000BC1300000080020000D01B
-:10EC60000B00B0130401008082CDF9BC200000002D
-:10EC70000000009C0F0036320F000001000000ACC5
-:10EC80000F0037320000BC1300000080020000D0EB
-:10EC90002700B4130401008082CDF9BC00000000FD
-:10ECA0000001008002000050000000000000009CF5
-:10ECB0000F0000320F000001000000AC0F003732DF
-:10ECC0000000BC1300000080020000D02000B91337
-:10ECD0000401008082CDF9BC00000000000100802A
-:10ECE0000200005000000000000000E403C0F93200
-:10ECF0000D000001000000E00300373200000000BA
-:10ED0000000000E003C0FA3200000000000000E054
-:10ED100007403E32000000000001009C1FC0F95A6D
-:10ED200000000000000000E003C0F9320000000015
-:10ED3000000000E007403E32000000000000009CA0
-:10ED40001FC0F93AFF000000000100AC8FCDF95060
-:10ED5000000000000000009C0FC02F3200000000E7
-:10ED6000000000FC0200003200000000000000E093
-:10ED700007803E3200000000000000FC12C02F3A65
-:10ED80000F00C7130401008082CD2FBC00000000DB
-:10ED9000000000E007803E3200000000000100FC9F
-:10EDA00002C0F95200000000000000E007003A3203
-:10EDB00000000000000000E007403A3200000000C0
-:10EDC000000000E007803A3200000000000000E090
-:10EDD00007C03A32000000000000009C0FC02F3234
-:10EDE00000000000000000FC0200003200000000F3
-:10EDF000000000E007003D3200000000000000E0DD
-:10EE000007403D320000D213830100FC12C02FBA2C
-:10EE100000000000000100FC02C0F95200000000E8
-:10EE20000000009C0F0000320C00000000000008F1
-:10EE3000733E003900000000000000E0070030329F
-:10EE4000000000000000009C1FC0F93A7000D713BA
-:10EE50000401008082CDF9BC000000000000000C1D
-:10EE60000300003200000000000000E00700303224
-:10EE7000000000000000001003000032000000004D
-:10EE8000000000E007003032000000000000009C9D
-:10EE90000F00003200000000000000A00FC0293267
-:10EEA000000000000000009C02C0F93200000000D9
-:10EEB000000000A40FC02C32000000000000009CE5
-:10EEC0000200FA32180000000000002C737EFA39AC
-:10EED00000000000000000E0070030320000E013F6
-:10EEE0008501009C1FC0F9BA0000000000010080ED
-:10EEF00002000050010000010000009C0F003732AA
-:10EF00000000C11300000080020000D00E00EF13CB
-:10EF10000401008082CDFABC00000000000000E087
-:10EF20000700003200000000000000E0070000328F
-:10EF300000000000000000E0070000320000E913BC
-:10EF40000000009C3FC0F99A1C00E91304010080F6
-:10EF500082CDFABC0200C1130000009C8FCDF9DA0B
-:10EF600000000000000100800200005001000002CB
-:10EF70000000009C0F0037320000C1130000008029
-:10EF8000020000D00E00F7130401008082CDFABC0D
-:10EF900000000000000000E0070000320000F31352
-:10EFA0000000009C1FC0F99A2600F31304010080A2
-:10EFB00082CDFABC00000000000100800200005079
-:10EFC00000000000000000A80F40293200040100EA
-:10EFD000000000A8020037320000E81300000080A3
-:10EFE000020000D00000F21300000080020000D0F8
-:10EFF0000000C51300000080020000D000000000E7
-:10F00000000000E00780183200000000000000E06F
-:10F0100007401A3200000000000000E007001A322A
-:10F0200000000000000000E007801A32000000002D
-:10F03000000000E007C01A3200000000000000A03D
-:10F040000F000032A26003000000005803003732B6
-:10F050000B1400000000005C0300363200000000CA
-:10F060000000009C0F802A3200000B140400008076
-:10F07000024029B20000000000000050833E00342E
-:10F080000000000000000048833E00340000000043
-:10F0900000000044530A003400000C1400000088F3
-:10F0A0000F402B9200000000000000900F0028325B
-:10F0B00000000000000000940F0029320000000052
-:10F0C000000000980F802A3200000000000000A815
-:10F0D00002C0F93211143814000000B00F0036924B
-:10F0E0000700141404000080824D29BC00000000B9
-:10F0F000000000A01F00FA3A000008140000009C65
-:10F100000F802A92C0010000000000AC0F003632D0
-:10F11000010000000000009C0200363200002414B0
-:10F1200000000080020000D01F001A1404000080BC
-:10F1300082CD29BCC0000000000000AC8FCDFA3A9F
-:10F14000000016140000009C12C0299A0000D6137B
-:10F1500000000080020000D00000CC1300000080FE
-:10F16000020000D00000221404000080528AFABC81
-:10F17000A260030000000058030037322214000090
-:10F180000000005C03003632000000000000005068
-:10F19000A33E00340000000000000048A33E0034FD
-:10F1A0000000000000000044530A00340004010085
-:10F1B000000000A40F00373200009313000000800D
-:10F1C0000200009000000000000000C402C0FA32FB
-:10F1D000030000000000009C0F0036320000000019
-:10F1E000000000BC0F402F3200002B140400009CD4
-:10F1F0001FC0F9BC00002A140400008002402FB296
-:10F2000000002714000000E007002C9200002714E3
-:10F21000000000E00700369200000000000000E05F
-:10F2200007402C3200000000000000E007802C3274
-:10F2300000000000000000E007C02C3200000000C9
-:10F24000000000E007002D3200000000000000E098
-:10F2500007402D3200000000000000E007802D3242
-:10F2600000000000000000E007C02D320000000098
-:10F27000000000E007C0FB3200000000000000E0DA
-:10F2800007802F3200000000000000E007C02F328E
-:10F2900018000000000000F8730A023900000000A6
-:10F2A000000100E007803F52FF0000000000004422
-:10F2B0000300363200000000000000E00700F932D1
-:10F2C00000000000000000E00740283200000000BD
-:10F2D000000000E00780F832030000000000009CFE
-:10F2E0000F00363200000000000000BC0FC02B32BF
-:10F2F000000041140400009C1FC0F9BC0000401431
-:10F300000400008002C02BB200003D14000000E0A9
-:10F3100007C0289200003D14000000E0070036926C
-:10F3200000000000000000E00740F932000000008B
-:10F33000000000E00740293200000000000000E06B
-:10F340000780293200000000000000E007C02932D9
-:10F3500000000000000000E007002A32000000006A
-:10F36000000000E007402A3200000000000000E03A
-:10F370000780F93200000000000000E007C02A32D8
-:10F3800000000000000000E007C02F320000000075
-:10F39000000000E007402B3200000000000000E009
-:10F3A00007802B3200000000000000E007C0FB32A5
-:10F3B00000000000000000880200FB320000000096
-:10F3C0000000009C0200003200000000000000D895
-:10F3D0000200003200000000001000000700973219
-:10F3E000000000000019000007C096520880521467
-:10F3F00012000048028036B20000000000000080C9
-:10F4000002000030000054141200009C0FC021B212
-:10F410001D0057140400008072BE17B80000541479
-:10F42000000000F81E80EF9A130000000000009C0E
-:10F430007FBE1738000000000400008012C0F95C95
-:10F4400000005414000000F81E80EF9A0000000035
-:10F45000000000B40F40FB35000000000000009CDD
-:10F46000020000324C420000000000A802003632C8
-:10F47000000000000008000007802A3200004E143F
-:10F4800000000080020000D0000052140000008044
-:10F49000020000D0000000000000000CCBC1B0341E
-:10F4A000000000000000009C02000032000000008C
-:10F4B000000000D80200003200006B140000002899
-:10F4C00009C0B0D20000611404000080028092B232
-:10F4D000000065141200009C0FC021B21D006814CA
-:10F4E0000400008072BE17B800006514000000F828
-:10F4F0001E80EF9A130000000000009C7FBE1738AA
-:10F50000000053130400008012C0F9BC0000651411
-:10F51000000000F81E80EF9A00000000000000FCD0
-:10F520000200003202000000000000A0F20B0039CF
-:10F5300000006F14040100280934B0BA0000000074
-:10F54000000100280900005200000000000000A88F
-:10F5500022C02F3700000000000084C037ACB0325A
-:10F56000000000000000000C0B000032FFFF000054
-:10F57000000000C0AF4DB030000075148000008066
-:10F580000240B0B600000000000000C06F01FC3572
-:10F590000000000000000000073F013200420000B0
-:10F5A00000080000878D2A3A0000000000100000CB
-:10F5B0000700B03200000000001800000700D03241
-:10F5C00000000000000000C03FC13834000000000F
-:10F5D00012010048F201FC5400007A14000000807F
-:10F5E000020000900000FFFF000000800200009079
-:0CF5F000000036000000008002000090C7
-:00000001FF
diff --git a/firmware/sxg/saharadownloadB.sys.ihex b/firmware/sxg/saharadownloadB.sys.ihex
deleted file mode 100644 (file)
index 0309852..0000000
+++ /dev/null
@@ -1,3385 +0,0 @@
-:10000000020000005CD300000C00000000000000B3
-:10001000FF1F00000100000000000088824D293A07
-:100020000000400300000080020000900000090072
-:100030000000008002000090000009000000008025
-:100040000200009000000900000000800200009003
-:10005000000009000000008002000090000009007C
-:1000600000000080020000900000090000000080F5
-:1000700002000090000009000000008002000090D3
-:10008000FEFF0000000000AC020036320000360027
-:10009000000000A80200009200003610000000805E
-:1000A0000200009000003610000000800200009066
-:1000B00000003610000000800200009000003610A2
-:1000C0000000008002000090000036100000008058
-:1000D0000200009000002000000000D80F8028924D
-:1000E00000002100000000D80F80289200002200AC
-:1000F000000000D80F80289200002300000000D8E4
-:100100000F402B9200002400000000D80F8028929E
-:1001100000002500000000D80F8028920000260073
-:10012000000000D80F80289200002700000000D8AF
-:100130000F80289200002800000000D80F8028922D
-:1001400000002900000000D80F80289200002A003B
-:10015000000000D80F8028920000360000000098B0
-:100160001E80E99A00002C00000000D80F80289221
-:1001700000002D00000000D80F80289200002E0003
-:10018000000000D80F80289200002F00000000D847
-:100190000F80289200003000000000D40F00009271
-:1001A00000003000000000D40F400092000030003A
-:1001B000000000D40F80009200003400000000D442
-:1001C0000FC0009200003000000000D40F00019228
-:1001D00000003000000000D40F4001920000300009
-:1001E000000000D40F80019200003000000000D415
-:1001F0000FC0019200003000000000D40F000292F6
-:1002000000003000000000D40F40029200003000D7
-:10021000000000D40F800292000036100000008021
-:100220000200009000003000000000D40F00039294
-:1002300000003000000000D40F40039200003000A6
-:10024000000000D40F80039200003000000000D4B2
-:100250000FC0039200000000000000D05F3F003498
-:10026000000036100400008042FFFCB000000000D7
-:10027000000000881280FD3A000036100000008067
-:10028000020000903610361002010080828DFDBC05
-:1002900000000000000000881280FD3A000000000D
-:1002A000000000F803C001323800000000010084A3
-:1002B000824D281A000036000000007409400092A8
-:1002C00000004F00000000FC020000920000480007
-:1002D000000000800200009000004D00000000902F
-:1002E0000E80189200008F020000000008C02092CB
-:1002F00000007F00000000000800219200008D0235
-:10030000000000000840219200007C000000000076
-:10031000088521900000F202000000EC02C0229249
-:100320000000CE0300000080020000900000560094
-:10033000000000FC0240189D00005100000000D0A9
-:1003400002000092000020030000008002000090E4
-:100350000000361000000080020000900000000045
-:10036000000100800200007000004C00000000004E
-:1003700009C0219200004A0012010000088522B045
-:1003800018003600000000F8738A0299000084000B
-:100390006A000080020000B008008400000000F83D
-:1003A0002340019900000000000100E80200907263
-:1003B0000000361080010080B200E9B600003E0364
-:1003C0000000007C1EC0E79A08000000000000F852
-:1003D000134001390000320300000008B801009406
-:1003E000000036100300007809401ABD000000002C
-:1003F000000000A0E125003408000000000000F823
-:10040000B340013900003E03B20000D8020000B240
-:1004100000004005001001F802006E920000590033
-:100420000A0100CC020000B200006A00030100FCD7
-:10043000024019BD08003E03000000F8A3400199E6
-:10044000000000000000008401C02F320000000006
-:1004500000000090F1010034000000000000009452
-:1004600001C02F3202005C00B00000A0F20B00B906
-:1004700000005F000401008002C0B0BC0000680002
-:10048000A000008002000090000061008001008058
-:10049000F24BD0B600006800A0000080020000907F
-:1004A00000000000A0000004FD4BD03400006600F6
-:1004B000800100801281FCB600002D0F000000D8E2
-:1004C000020000D218000000000000F8730A03398F
-:1004D00068003600000000C0020036920000040FE1
-:1004E000000000D8020000D218003600000000F81A
-:1004F000730A03F900005900030100FC024018BD13
-:1005000000007B00030000FC024019BD0000000059
-:100510000000009401C02F320000000000000080A5
-:10052000F1010034000000000000008401C02F32FF
-:1005300002006D00B00000A0F20B00B900007000D6
-:100540000401008002C0B0BC00007900A00000805F
-:10055000020000900000720080010080F24BD0B6D3
-:1005600000007900A0000080020000900000000060
-:10057000A0000004FD4BD034000077008001008013
-:100580001281FCB600002D0F000000D8020000D23E
-:1005900018000000000000F8730A033979003600E3
-:1005A000000000C0020036920000040F000000D8D6
-:1005B000020000D218003600000000F8730A03F9A8
-:1005C00000006A00030100FC024019BD0000590050
-:1005D000030100FC024018BD08003E03000000F8C3
-:1005E000A340019908000000000000F873400139A1
-:1005F0000000840080010080E20180B600008100DC
-:1006000000000080020000900800ED020C0000F8DD
-:10061000534001B90000830080010080E20180B6F0
-:100620000000361012000068020580B0000032039E
-:100630000000006C1FC0F69A0000000000000000DF
-:100640000805803000000000000000FC02000132BC
-:10065000000000000000001008803D320000000093
-:10066000000000D40200003202A0000000000000E0
-:10067000A90D8032000088001200005402A438B294
-:10068000000200800000002C0800373218003600FD
-:10069000000000F8730A03F90000000000080004DD
-:1006A00008807232000090009F00005C080072B267
-:1006B00087008F008001008082CD85B00000A100FE
-:1006C0000000002CD8C182940000A1000000002C82
-:1006D00088C18294000F99000401008082CD85B00A
-:1006E00000009900800000804281FCB600003610B6
-:1006F00012000068020580B0000000000000006CDD
-:100700001FC0F63A00000000000000FC02000132A9
-:1007100000009700040100DC43603DB30000320399
-:10072000000000FC0200009218000000000000F829
-:10073000738A033994003600000000C0020036922C
-:1007400010009F0087000078792116B801009F00F3
-:1007500004010080828D97BC8700A8008700007884
-:1007600089CD85B000009E0004010080128097BCF6
-:100770000000A1000000002CD8C182940000A1005C
-:100780000000002C88C182940000A8008001008035
-:10079000F2C085B60000A8000000002C98C1829429
-:1007A0000000A70080010080D2C182B60000A8002E
-:1007B000800100807280FCB600000000001800A8D4
-:1007C000423D723000000000541889FCF2C07C30B9
-:1007D0000000CB0080010080F2C185B60000A900B6
-:1007E00000000080020000900000A3008000008054
-:1007F0008280FCB600000000540000FC02000032C1
-:100800008000802000000080C2CD85300000BE0046
-:100810000B000080020000B018000000000000780B
-:1008200079A116382000CB0004000080828D97BC8F
-:100830000000B500800100806280FCB68700B50032
-:100840008700007889CD85B00000B10004000080E9
-:10085000128097BC0000B50004010080228097BC84
-:100860000000B5008001008072C185B61000000054
-:1008700000000078796116380000BC000401008097
-:10088000328097BC0000CB000000002CB8C18294DD
-:100890000000BC00800100805280FCB60000BC005B
-:1008A0008000008072C185B60000BC00800100801D
-:1008B00002C185B60000BC0080010080D2C185B6AF
-:1008C000180000000000007879E116380000BC0034
-:1008D00004010080328097BC0000CB000000002C97
-:1008E000C8C1829400000000000000040800043227
-:1008F0000000CB000000002CA8C18294080000007A
-:1009000000000078792117380000CB000400008037
-:10091000328097BC0000CB0004010080228097BC8D
-:100920001F0000000012000889CD72300500000091
-:1009300000120000B9DC173800000000000000A819
-:10094000220090370000CB008000868022247CB6F5
-:100950000000361012000068020580B000000000A0
-:10096000000000FC020001320000C900040100DCAC
-:1009700043603DB300003203000000FC020000921F
-:1009800018000000000000F8738A0339C600360022
-:10099000000000C0020036920000CE00120100608C
-:1009A000084023B2008200000000000808803632B0
-:1009B0000000C500000000641F40F69A00003610D9
-:1009C00012000024080023B200003610120000209C
-:1009D00008C023B20000361012000018088023B2AD
-:1009E00000000000000000FC020001320000D50001
-:1009F000040000DC43603DB318000000000000F874
-:100A0000738A0339D1003600000000C0020036921C
-:100A100000000000000000FC020085320000000021
-:100A2000000000D80280013200000000000000D069
-:100A30000200003200C0E1001801000CA8CD3EB257
-:100A40000000D50012000038028081B200000000D2
-:100A50000000003C02008232000000000000003074
-:100A600002408232000000000000003402008632A2
-:100A700020800000000000080880363200000000DE
-:100A80000000005C1FC0F53A00003203120100684C
-:100A9000020580B0000036100000008002000090C7
-:100AA0000000000000180078090072320023E40002
-:100AB00004010080A2CD82B00000E500000000002B
-:100AC00009000092000036109F16000029C172BC78
-:100AD00000000000001800000780813200000000C4
-:100AE0000020000007008232000000000028000003
-:100AF0000780973210000000003000001720903966
-:100B0000000000000038000007C082320000000032
-:100B1000000000D8020000320000000000000000C9
-:100B2000074080320000EE0080010080A2C182B642
-:100B30000000EF000008000057008097050000004B
-:100B40000008000007A0043900003610041000005F
-:100B5000074082B200000000001800000700863243
-:100B60000000F10012000050F2C138B41800360045
-:100B7000000000F8730A03F9000036101200006844
-:100B8000020580B00000F4001200004802C080B2EC
-:100B900000003203CA010008E881809408000000C8
-:100BA000000000F89340013910000000540000FCE0
-:100BB000824D90360000F800F00100D8020000B22B
-:100BC00000000000620401A802C06E3200000000B4
-:100BD0000004010059C06E370000000000040178D5
-:100BE00019C06E3A000000004E0401EC06BD9730BB
-:100BF00000000000E00000F41E40EF3A000000009A
-:100C000000188BCC074000320000000000000000FC
-:100C100007400932000000000008000077C02937B3
-:100C20000000361004100000173D90BA00000000CC
-:100C3000001800000780F432000003011200004099
-:100C4000F2C138B400000000000000FC32C02F30B8
-:100C5000000000000000001008803D32180036003F
-:100C6000000000F8730A03F900000000000000D43F
-:100C700002000032000090018038008022C072B66D
-:100C800000000C01120000C8020020B20000130195
-:100C90001201005C088020B20000361012000060D3
-:100CA00002802CB218000000000000F8738A03399B
-:100CB00009013600000000C002003692000000006A
-:100CC000000000F81F80FF3A00000000000000FC58
-:100CD00032008530000068010400008042603DB3AE
-:100CE00018000000000000F8738A03390F01360075
-:100CF000000000C002003692080000000000000062
-:100D000088CD853700000000000000200800723206
-:100D100000000000000800240800723200003610B5
-:100D20000410006C080072B2000000000018004CB3
-:100D3000080072320000361004200018080072B259
-:100D4000000000000030002808007232000000009F
-:100D5000002800300800723200000000000000602F
-:100D600008808232000022010600008062A082BC5E
-:100D7000000000000000000007000632070000002D
-:100D800000080000774A09390000361004100000FE
-:100D9000070082B200000000CA190000074082323A
-:100DA0000000210112000040F2C138B40000000030
-:100DB000000000D8024000320000470104380078EB
-:100DC000D9C572B00000260180010080028097B66C
-:100DD00000000000000000F882802F34000028018D
-:100DE00080010080128097B600000000000000F82B
-:100DF00092802F34040000000038003CB81C1738E3
-:100E0000000000000000003C28C083370000000004
-:100E1000003A002C08C07232000000000000001CE4
-:100E2000B8E0833A00000000CB2900200700003220
-:100E3000000046010400008002C081BC00000000E8
-:100E40000000003478A0813E000000000000001C7B
-:100E5000D8E0813C00003501063A0080B25C83BCDA
-:100E600000000000003A000089C172370700340119
-:100E70002B010004790A04B900000000CB00000433
-:100E80001941903400003801003A002C070000920C
-:100E900000000000003A002CD7E0723C0000000087
-:100EA0000000000009000032000000000000000403
-:100EB00009000032000000000000000007648332D7
-:100EC000000000000008000007008032000036101B
-:100ED0000410000007C086B20000000000180000E7
-:100EE00007C084320000550104000028D8A082BC4D
-:100EF0000000000000000000D820803A00004101FE
-:100F00000400008072802DBC00003F0112000044EC
-:100F100012E438B200004201000000D812802D9A7D
-:100F20000000BD0F00000004F94190F400004401EE
-:100F300004000018D8A081BC00002D010000006C46
-:100F4000D8E0869A00007A0F0000004408802DF255
-:100F500000002D0100000030080000920000000099
-:100F6000CB19002007000032070049012B010004C3
-:100F7000790A02B900000000CB0000041941903446
-:100F8000000000004D000000A7A0813E000000000E
-:100F90000008000007008032000036100410000036
-:100FA00007C086B2000000000018000007C08432AD
-:100FB0000000550104000028D8A082BC00000000F9
-:100FC00000000000D820803A000052010400008098
-:100FD00072802DBC000050011200004412E438B2AF
-:100FE00000005301000000D812802D9A0000BD0FB0
-:100FF00000000004F94190F400007A0F0000004462
-:1010000008802DF200004701000000300800009227
-:101010000000000000000004F94190340000560177
-:101020001200004412E438B218003600000000F844
-:10103000730A03F9000000000018000409807332ED
-:1010400000000000002800088980733700000000BD
-:101050000000008007008632410000000006008C7E
-:101060000700363200005F012908008007C085B202
-:10107000000062012810008C070000B2000063012C
-:101080000012008407000092000000000010008C95
-:10109000F7E0823A0000620128180080074090B211
-:1010A00000006301001200840700009200000000AD
-:1010B0000012008427E482320000660104000080F0
-:1010C00042603DB318000000000000F8738A033945
-:1010D00063013600000000C00200369200000000EC
-:1010E000000000FC02008532000036101200005C97
-:1010F00052812CB400000000000000D802800132B0
-:10110000000000000000008002003B3208406A013D
-:10111000F0010008088036B2000000000004013829
-:1011200008C06E3200000000E00000F41E40EF3CFA
-:10113000000071010B01008C080000B200006E017C
-:10114000F2010080020000B000000000000000F08A
-:101150000E003A3200008201E20000800E8083928D
-:1011600000007101F2010078C93B3ABC00007B012C
-:1011700002010080828097BC00000000000000A8EF
-:101180000200E832000076010400008022A22ABC9E
-:1011900000007A0104198B8002C07CBC00000000B2
-:1011A0000000008C18C0883A00000000000000A871
-:1011B00012802A3A00000000000000A802BD2A3078
-:1011C0000000740104010080E2A02ABC00007F013D
-:1011D0000200008082C088BC00000000E20000081D
-:1011E0000800003200000000000000A802808832E1
-:1011F0000000000000188BCC070000320000320312
-:10120000000000DC03000092000000000000003835
-:1012100008802A3200000000000000F00E003A3280
-:1012200000000000E20000800E802A320000000072
-:10123000000000A8028088320000000000188BCC5B
-:101240000700003200000000000000DC0300003254
-:101250000000000000000000078083320000000052
-:101260000000000079C02937602000000000000065
-:10127000890D903A00000000CA0100D812802D3A72
-:101280000000000000000000070001320000000024
-:10129000000800000700903200000000001000006D
-:1012A0000740E83200000000001800000780E83224
-:1012B00000000000000000FC0200003200003203C9
-:1012C00012010048F2C138B400008E010000008015
-:1012D00002000090000000000030007808807232A8
-:1012E0000400000000380054A85C16380B00000011
-:1012F0000038002CA8DC1638140000000000001C88
-:10130000884D853A0000000000000020080072327D
-:1013100000000000000800240800723200000000F5
-:101320000010006C08007232000000000018004C31
-:10133000080072320000361004200018080072B253
-:101340000000000000280030080072320000A101F7
-:10135000083C0014188072BC00000000000000145B
-:101360001840813C00000000000000000700063229
-:101370000700000000080000774A09390000361015
-:1013800004100000070082B200000000CA1900002B
-:10139000074082320000A00112000040F2C138B4C0
-:1013A00000000000000000D80240003200000000F1
-:1013B0000000006478C029370210000000000064BB
-:1013C000884D863A000000000000008008000032CE
-:1013D0000000000000000040080000320000000093
-:1013E0004D00000077A0813E0000000000080000D2
-:1013F00007408632000036100410000007C086B295
-:10140000000000000018000007C084320000B9018D
-:101410000400001CD8E081BC000000000000006453
-:10142000D860863A0000AF010400008072802DBCB5
-:101430000000AD011200004002C038B20000B5014A
-:10144000000000D812802D9A0000AF011200004069
-:10145000F2C138B418003600000000F8730A03F92E
-:101460000000B4010401008002802DBC0000B00126
-:10147000670000F8A2802FB500003610120000E8C7
-:1014800002C021B200000000000000D8024000327B
-:101490000000B70104000018D8A081BC0000A6011C
-:1014A0000000006CD8E0869A00005D0E0000004449
-:1014B00008802DF20000A601000000300800009214
-:1014C0000000B90112000040F2C138B41800360023
-:1014D000000000F8730A03F90000BE010401008057
-:1014E00002802DBC0000BA01670000F8A2802FB571
-:1014F00000003610120000E802C021B20000C9014D
-:1015000004010080020084BC00000000000000D440
-:101510000240003200000000000000A42240853A92
-:10152000040000000018004088CD74360000000060
-:10153000000000402800843700000000000000D4B4
-:10154000020000321400C9010400001C880D84BC94
-:1015500000000000000000780961853A8000361024
-:1015600006010080828D97BC00000000000000642E
-:10157000D860863A0000B501000000D80240009211
-:101580000000CB0104000018D8A081BC0000CD01F0
-:101590000000006CD8E0869A00005D0E0000004458
-:1015A00008802DF20000000000000030080000322A
-:1015B00000000000000000D40240003200000000E3
-:1015C000000000A422C0823A000000000000003C9D
-:1015D000B860853C0400D3018100006088CD74B6FA
-:1015E0000000000000040028F8A0753C0000D401B1
-:1015F00000080074088075920000000000080028B0
-:10160000F8A0753C000000000000002808A1823C02
-:1016100000000000000000A4F2602A3A0000000070
-:101620000008004808007532000000000020007C1F
-:10163000088075320900DA01041A007088CD74B090
-:1016400009000000001A004C87CD74317F000000B3
-:1016500000000064884D8631000000000000006436
-:101660002840863A00000000000000D80240003206
-:10167000000000000010000007408632000000005B
-:10168000000000D8028000320000000000100000BE
-:101690005761863A0000E301120000C8020020B240
-:1016A0000000E6011201005C088020B20000361044
-:1016B0001200006002802CB200000E012A0100D44A
-:1016C000020000B218003600CA0000F8730A03F9DD
-:1016D00000000F01000000F81F80FF9A00000000CA
-:1016E000000000D4024000320800000000000000AA
-:1016F00088CD8537000000000000001CE8A1823E74
-:1017000000000000000000A42240853A0000000014
-:1017100000080050078084320000ED0104010080C1
-:1017200072A082BC00000000001A004CC7E17432B5
-:10173000000000000000006808E1813A0000F001AC
-:1017400090010078F9A186BA00000000000000783E
-:101750001980973A00000000002000580780973257
-:1017600000000000000000D80280003200000000ED
-:101770000000000007008432000000004008000064
-:101780005721803A0000F4011200004CF2C138B435
-:1017900000000000000000000821803A0000000066
-:1017A0000000000408C0813200000000510000D891
-:1017B00002C0003200000000000000D4020000322D
-:1017C00000000000CB190020070000320700FC01D8
-:1017D0002B010084780A02B900000000CB000084CD
-:1017E00018418834000000004D00000077A0813EC1
-:1017F00000000000000800000700803200003610E2
-:101800000410000007C086B20000000000180000AD
-:1018100007C08432000036109F000028D8A082BC88
-:10182000000014020400001CD8E081BC0000080283
-:101830002D000000D82080BA00000502120100E847
-:1018400002C021B218003600000000F8730A03F944
-:10185000000007020401008022802DBC0000080265
-:10186000CD0100D80240849200000402000000F87C
-:10187000A2802F9500000B020400008072802DBC16
-:10188000000009021200004412E238B20000120205
-:10189000000000D812802D9A000000000000008493
-:1018A000F841883400000C021200004412E238B201
-:1018B00018003600000000F8730A03F90000110256
-:1018C0000601008022802DBC00000D02670000F898
-:1018D000A2802FB500000E02000000E802C0219295
-:1018E00000000000000000D802C0003200005D0EC1
-:1018F0000000004408802DF20000FA0100000030D2
-:101900000800009200001A0280000080D2802FB6EA
-:1019100000001702120100E802C021B218003600D0
-:10192000000000F8730A03F90000190204010080A6
-:1019300022802DBC00001A02000000D802408492D0
-:1019400000001602000000F8A2802F9500000000A1
-:10195000CD000084F841883400001B0212000044CE
-:1019600012E238B200000000000000D40240003251
-:1019700000000000000000A422C0823A0000230200
-:1019800004010080420086BC0000000000080058EE
-:1019900007408732000022028F010074184087BA86
-:1019A0000000000000000074080000320000250262
-:1019B00000040058F7A0869A00000000000000789C
-:1019C000F9A0863A2800000000080058878D973C4F
-:1019D00000000000000000D80240003218000000A3
-:1019E00000000000B7608539080000000008000012
-:1019F00087CD8537000028021200004CF2C138B4B0
-:101A0000000000000000004818A0843A0000000018
-:101A1000000000D40200003200000000000000803E
-:101A200057A1863A410000000006008C07003632BC
-:101A3000000000000008008007C0853200000000A0
-:101A40000010008C0740853200000000000000D824
-:101A5000028000320000361004000058088071B285
-:101A600000000000000000800880003218003600EE
-:101A7000000000F8730A03F9000035020401008039
-:101A800002802DBC00003202000000F8A2802F95D9
-:101A90000000320204010080180088BC00003802F7
-:101AA00090190058E89C85BA00000000000000581A
-:101AB0001880853A000000000018008007858530F6
-:101AC00000003D0204010080420086BC00000000CE
-:101AD000000000D8024000320000000000000008B2
-:101AE0008980713700003E020012008427E4829250
-:101AF00000000000001200840700003200004202D3
-:101B0000270000FC020085B20000420204000080B1
-:101B100042603DB318000000000000F8738A0339EA
-:101B20003E023600000000C002003692000036106F
-:101B30001200005C52812CB40000450204010080B8
-:101B4000028082BC00006801000000D40200009204
-:101B50000000480204010018D8A081BC00005D0EFE
-:101B60000000004408802DF20000E001C7010030B1
-:101B7000080000920000E001C701006CD8E0869ADE
-:101B800008000000C60100F893400139000032034C
-:101B900080018080320B6AB600000C0E0000003C11
-:101BA000030038F200004E020406018002C06EBC41
-:101BB00000003103000601EC56E06E9A00000000C0
-:101BC000C40701EC56E06E3A08C04F021200004014
-:101BD000A2CD39B218003600000000F8730A03F9EC
-:101BE0000000361003B8000009C06EBD53020000AB
-:101BF00000000088820D903A2F007C050000001C38
-:101C000008003692000036100000008002000090AC
-:101C10002C007C050000001C0800369200003610E5
-:101C200000000080020000900000361000000080DC
-:101C300002000090000036100000008002000090BA
-:101C400038007C050000001C0800369239007C0535
-:101C50000000001C0800369208000000000000F898
-:101C60009340013900000C0E0000003C030038F2E4
-:101C700000000000000000F842802F3408C05E021F
-:101C800012000040A2CD39B218003600000000F862
-:101C9000730A03F9000000000004017809C06E32E5
-:101CA00000000000006201EC068097320000000096
-:101CB000000601EC0640003200006302B50000D8C7
-:101CC000020000B200000000A50080A0360B6A34BC
-:101CD00000000000003002E806C02C3200000000C6
-:101CE000001801E00600003200000000000000F8CB
-:101CF00082852F3000007D050000001C0800369210
-:101D000008000000000000F89340013900006C0258
-:101D100080008080320B6AB6000032030000008031
-:101D20000200009000000C0E00000038030038F2A2
-:101D300000006F020402018002C06EBC000031038B
-:101D4000000201EC56E06E9A00000000C00301ECB6
-:101D500056E06E3A00C0700212000040A28D39B207
-:101D600018003600000000F8730A03F900007C0236
-:101D70003828001809006EB200007502042101081D
-:101D800069246EBC03007D050000001C080036922B
-:101D90000000790202300080829B90BC0000780233
-:101DA0000603018012C06EBC04007D050000001C0B
-:101DB0000800369205007D050000001C08003692E0
-:101DC00000007B020603018012C06EBC0B007D0583
-:101DD0000000001C080036920C007D050000001C6D
-:101DE0000800369200007E020421010869246EBCBE
-:101DF00003007D050000001C0800369200008202EE
-:101E000002300080829B90BC0000810206030180AA
-:101E100012C06EBC04007D050000001C0800369254
-:101E200005007D050000001C0800369200008402B9
-:101E30009F31010C69246EBC000000000000000C02
-:101E4000090000320000880204310004899B90BC24
-:101E5000000087020603018012C06EBC20007D05D1
-:101E60000000001C0800369221007D050000001CC7
-:101E70000800369200008A020402018012C06EBC83
-:101E800022007D050000001C0800369200008C0234
-:101E90000401000039A490BC23007D050000001C53
-:101EA0000800369224007D050000001C08003692D0
-:101EB000080036100C0000F8634001B910009102D0
-:101EC000C50100CC022015980800ED020C0000F8B6
-:101ED000434001B910000000C50100CC02201538B4
-:101EE00000000C0E0000003C030038F200009402D9
-:101EF0003601005C080580B00F007D050000001C65
-:101F00000800369210000000002C0200A9DB853981
-:101F1000000095021200005402A438B20000000034
-:101F20000008028C08C06E3200000000000C02980D
-:101F300028806E37000000000000009C3822143713
-:101F400000009E020430002808006EB20000361027
-:101F50000410006C08006EB2000000000018004C75
-:101F600008006E32000036100420001808006EB21F
-:101F70000500A1020038020078E16E99000000001F
-:101F8000510000D802000032000000000038027842
-:101F900009C06E32050000006808000077A197397B
-:101FA0000000A3021201000009C021B2180036008F
-:101FB000000000F8730A03F900000000545401FC0B
-:101FC00002C06E321410A70204000080A20D72B08D
-:101FD0000000510F0000002809C002F20E007D052C
-:101FE0000000001C080036920000B602331500A461
-:101FF00002C072B20000EA0280010080B20172B633
-:102000000101AD0204290080828D74BC080AEA0235
-:10201000042D0080828D74BC000000000030007C24
-:10202000080075320000B402003800881800759C62
-:10203000080AEA0204290080828D74BC10000000A6
-:10204000002C007C888D7537000000000030007C7B
-:1020500068DD87320000B3029F390088188075BCA4
-:102060001000000000340088888D75370000B4022D
-:10207000000000881880889C100000000034008850
-:10208000689D88390000B7029FF1018082DB87BC20
-:102090000000EA0200000080020000900000EA0256
-:1020A00080000080B20172B6000000000008004805
-:1020B0000800753200000000001000700800753242
-:1020C00000000000001C007438A275370000BC023C
-:1020D000831B007808C074B200000000000000F804
-:1020E000C2802F340000CC029F780180C2216EBCD8
-:1020F0000000C0029F990164881B87BC0000CD02CC
-:102100009F680164885B86BA0000000000000064DC
-:102110000800003200000000001600A402C0723265
-:1021200000000000003C02A4B25B2A3A000000005C
-:10213000003A027809C06E320000CE0208010004A5
-:10214000E8A575BC1000EA020B01001C080036B2BD
-:102150000000CC0204A10180829B84BC00007D05AC
-:102160009F980180C2216EBC00007D0506B10180F0
-:10217000825B87BC0000E9020B010080020000B016
-:102180000000CD0204990180C2216EBC0000E7026C
-:1021900002D4018092FB6EBC16007D050000001C7D
-:1021A0000800369217007D050000001C08003692DA
-:1021B0001C007D050000001C080036920000D002C3
-:1021C00004A10180829B84BC0000D70206A8018084
-:1021D000825B80BC0000D40204A9018002006EBCB6
-:1021E0000000E80204A10180829B84BC0000E80298
-:1021F00004010080124080BC14007D050000001C1A
-:10220000080036920000E8029FA0017829216EBCE8
-:102210000000E8020201008012A097BC0000CC027E
-:1022200000000080020000900000E3020400008033
-:10223000028082BC0000DC0202000080A26080BC40
-:1022400006007D052C01001C080036B200C0E0022B
-:1022500004010080A28D2FB006007D050000001C47
-:10226000080036920000E00204000080A26080BCFA
-:102270000000DF020603018012C06EBC09007D056C
-:102280000000001C080036920A007D050000001CBA
-:10229000080036920000E2020603018012C06EBC04
-:1022A00007007D050000001C0800369208007D052F
-:1022B0000000001C0800369202007D053801001C59
-:1022C000080036B20000E602020C0280A25B80BC6D
-:1022D0001F007D050000001C080036921E007D05D1
-:1022E0000000001C080036920000EB0200000028ED
-:1022F000094000920000EB020000002809800092D3
-:102300000000EB020000002809C000920000EB0270
-:1023100000000028090001920E00510F0000001C6F
-:10232000080036F200007D050000008002000090E9
-:10233000100036102A0000CC022015B800000C0E48
-:102340000000003C030038F21D00F102800100781B
-:1023500009E000B81D007D050000001C0800369251
-:1023600015007D050000001C0800369200000000EA
-:102370000000001CA805283008000000000000F83C
-:102380008340013900003E0380018080320B6AB631
-:1023900000000C0E00000038030038F27E0500003B
-:1023A0000000008882CD813A0000F9021D41025CE4
-:1023B000F80168B441003103000000F8A28D2F91AC
-:1023C00010000000D02C0200A9DB85390000960225
-:1023D0001201005402A438B20000FA02000000808A
-:1023E000020000900000000304B0008002006EBCF8
-:1023F0000000000380B9008082806EB600002510C6
-:102400000078016008006EF230007C05D700001CE7
-:10241000080036920000020380010080D2812FB6AE
-:1024200031007C05D700001C080036920000040330
-:102430008001008042812FB635007C05D700001C4A
-:10244000080036920000110304A8010809006EB2CA
-:102450000000000000200208899B903E0000000060
-:1024600000A00108899B903A000011039F88010891
-:10247000899B90BC000000000034020009C06E3D42
-:1024800000000000000C020409A46E3700000D03D8
-:102490000200008012A490BC0000000000000008B0
-:1024A000198090370000110302010280829B90BCCA
-:1024B00031007C05D700001C080036920000110393
-:1024C00004B0008002006EBC001211030401008001
-:1024D000A28D2FB032007C05D700001C0800369278
-:1024E00000003103000000F872812F950000000009
-:1024F000000000F842802F3408C050021201004052
-:10250000A2CD39B200001303000000800200009049
-:1025100008000000000000F89340013900003E036D
-:1025200080018080320B6AB60000000000000014B9
-:102530000840903200000C0E00000038030038F212
-:102540007E0500000000008882CD813A080000006E
-:10255000000000F89340013900003E0380018080B4
-:10256000320B6AB600000C0E00000038030038F28F
-:1025700000001F030420018052206EBC26007D0550
-:102580000000001C0800369225007D050000001C9C
-:102590000800369200002503040100D81E80EDBC1F
-:1025A00000002103B70000D80EC0EDB200002403E4
-:1025B00004010080423BEEBC00000000000000E08F
-:1025C0001E00EE3A00000000A70000D00E00EE3220
-:1025D00000000000007486CC02806C320000000015
-:1025E000000000000940E7320000290380018080DC
-:1025F000320B6AB6360028031200002C82CD2EB2B0
-:1026000000002B030401008042C52CBC00002C03F9
-:10261000000000CC0200009200000000000000CC8E
-:1026200012C02C3A0000270304010000190090BCDE
-:1026300000000000007486C806C02C3208003E036B
-:10264000000000F8C34001990000FA0D0000002CC2
-:10265000090000F200003203000000800200009038
-:102660000000FA0D0000002CF90100F400003B030B
-:1026700004000028098080B200000000000000D89B
-:10268000020000320000F10E00000008080000D235
-:1026900000003B0304000080028092BC180036005A
-:1026A000000000F8730A03F900003E038001008077
-:1026B000A2802FB600003E031201000009C021B223
-:1026C00018000000000000F8730A03393E033600CA
-:1026D000000000C00200369200003E03800100802E
-:1026E000A2802FB600003E031201000009C021B2F3
-:1026F00018003600000000F8730A03F9000000001B
-:10270000000000F80200003218003600000000F857
-:10271000738A029910000000000000E403003632C2
-:1027200002000001000000E003003732000000005A
-:10273000000000E40300363204000001000000E065
-:1027400003003732AA040000000000E40300363220
-:1027500009000001000000E0030037320000000023
-:10276000000000CC0F00003200070000000000E471
-:102770000300363206000001000000E0030037329B
-:1027800020000000000000E40300363208000001D1
-:10279000000000E00300373200010000000000E408
-:1027A0000300363205000001000000E0030037326C
-:1027B00030000000000000E4030036320700000192
-:1027C000000000E00300373200A00000000000E439
-:1027D0000300363208000008000000E00300373232
-:1027E00000000000000000A0020000320000000015
-:1027F000000000000B000032000052038B0100A01B
-:1028000012002ABA00000000000000A802000032F6
-:1028100000000000000000E0070000320000550347
-:102820000601008002802ABC000000000000009C1D
-:102830000200003200000000000000D4020000325C
-:1028400000000000000000CC020000320000000088
-:10285000000000D80200003200000000000000D09C
-:102860000200003200000000000000DC0200003224
-:1028700000000000000000F802000032000000002C
-:10288000000000C80200003200000000000000C488
-:1028900002000032000058038501009C12C029BAD2
-:1028A00000000000000000E4030036320B000004CA
-:1028B000000000E00300373280000000000000E468
-:1028C0000300363213000004000000E0030037323A
-:1028D00000200000000000E4030036320C00000479
-:1028E000000000E00300373200000000000000E4B8
-:1028F000030006320F000004000000E0030037323E
-:1029000000440000000000E4030036320D00000423
-:10291000000000E00300373200040000000000E483
-:102920000300363214000004000000E003003732D8
-:102930009F000000000000E4030036321500000490
-:10294000000000E00300373200000000000000E457
-:102950000300363218000004000000E003003732A4
-:1029600060000000000000E4030036321D00000497
-:10297000000000E00300373200000000000000E427
-:10298000030004321E000004000000E003003732A0
-:1029900070000000000000E4030036321F00000455
-:1029A000000000E00300373200000000000000E4F7
-:1029B0000300003220000004000000E00300373272
-:1029C000A0030000000000E40300363217000004FA
-:1029D000000000E00300373240000000000000E487
-:1029E000030036321B000004000000E00300373211
-:1029F00060000000000000E4030036321C00000408
-:102A0000000000E00300373200000000000000E496
-:102A10000340003216000004000000E003003732DB
-:102A200000010000000000E4030036321A00000438
-:102A3000000000E00300373220010000000000E445
-:102A40000300363219000004000000E003003732B2
-:102A500080000000000000E4030036320B0000019B
-:102A6000000000E00300373200010000000000E435
-:102A7000030036320C000001000000E00300373292
-:102A8000FEFF0000000000AC020036320000000033
-:102A9000000000000900003218000000000000F8EB
-:102AA0000364023900008B0385010000190090BA0D
-:102AB00025260000000000E403003632010000017A
-:102AC000000000E00300373200000000000000803A
-:102AD0000F00003200000000000000840F000032F0
-:102AE00008000000000000F8F34001390800000071
-:102AF000000000F8E340013908000000000000F881
-:102B0000C340013908000000000000F8B34001395B
-:102B100008000000000000F8A34001390800000090
-:102B2000000000F89340013908000000000000F8A0
-:102B30008340013908000000000000F873400139AB
-:102B400008000000000000F86340013908000000A0
-:102B5000000000F85340013908000000000000F8B0
-:102B60004340013908000000000000F833400139FB
-:102B700008000000000000F81340013900000000C8
-:102B8000000000F80380003200000000000000C8D0
-:102B90003F80FC35000000000000009C0200003275
-:102BA0000000000000000000030000326E00000082
-:102BB000000000D0020036320000000000000028B3
-:102BC000034038320000361004010080D20130B6D4
-:102BD0000000A303040100D012002DBCE00300009C
-:102BE000000000E40300363203000001000000E0B2
-:102BF0000300373200000000170000D0020000324E
-:102C000000000000000000ACE10000340000000003
-:102C1000000001E00600003200000000000801E4AE
-:102C20000600003200000000000E01EC0600003239
-:102C300000000000001001E006000032000000006B
-:102C4000000000D012002D3A6E00AB03020100809C
-:102C5000820D2DBC020000000000009CAE0D02326F
-:102C600000000000000000A8020000320000000088
-:102C7000008886CC0700363200000000008A86CC2F
-:102C80000700003A002400000000000409803632EA
-:102C90000000361012000064024090B200000000F4
-:102CA000000000042940903A0000B70312000078A9
-:102CB00009C020B2000000000000007809459030F3
-:102CC0000000B50302010080C28297BC0000000032
-:102CD000000000840200003200000000000000CC70
-:102CE000030000320000BB038E010080024028B2C6
-:102CF0000000510E000000D8020000D2150F0000A5
-:102D00000000008C0E0036325200000000000074FB
-:102D10000E00363218000000000000E403003632D6
-:102D200009000002000000E003003732FECA000084
-:102D3000000000E4030036320A000002000000E058
-:102D4000030037320000C60312010000094020B220
-:102D50000000C40300000080020000900000C603D1
-:102D600012000004094020B20000C9039F01008046
-:102D7000020090B20000C80312000008094020B20F
-:102D80000200C40304010078092417B806000000FB
-:102D900000000078096416380000C40304010080B4
-:102DA000028197BCFE0000000000004403003632A0
-:102DB000FE00360000000048030036920000361086
-:102DC00012000000094020B20000CF0312000004EE
-:102DD000094020B20000D2039F010080020090B29F
-:102DE0000000D10312000008094020B200000000DA
-:102DF000000000B402009032000036100000008095
-:102E000002000090000036100000008002000090D8
-:102E10000000361000000080020000900000361014
-:102E200000000080020000900000361000000080CA
-:102E300002000090000036100000008002000090A8
-:102E400000003610000000800200009000003610E4
-:102E5000000000800200009000003610000000809A
-:102E60000200009000003610000000800200009078
-:102E700000003610000000800200009000003610B4
-:102E8000000000800200009000003610000000806A
-:102E9000020000900600EA030000000C0964169886
-:102EA00000004902000000140840909200006902EE
-:102EB0000000001408409092340015030000001C2C
-:102EC00008003692120015030000001C080036921C
-:102ED0003A0015030000001C08003692000036106E
-:102EE000000000800200009000005B02000000145F
-:102EF0000840909200001D04000000800200009035
-:102F000000001A030000001408409092EB03000038
-:102F10000000008882CD903A0D000D04000000FCF6
-:102F200002E416980D001E04000000FC02E416984E
-:102F30000D002704000000FC02E416980000340491
-:102F4000000000800200009000003D04000000002E
-:102F50000940909D000040040000008002000090A5
-:102F600000004904000000800200009000005204AC
-:102F7000000000800200009000005B0400000000E0
-:102F80000940909D00006004000000800200009055
-:102F900000006804000000000940909D00006D04DE
-:102FA00000000080020000900000DC04000000002F
-:102FB000090000920000DC040000000009400092BB
-:102FC0001D07DE04000000A0020036920000EC04A1
-:102FD0000000008002000090000036100000008019
-:102FE0000200009000001D04000000DC0F409092E1
-:102FF0000000B00400000080020000900000B50452
-:10300000000000D4020000921000CA0400000084F6
-:103010001F64149800001D04000000EC0E40909204
-:103020000000D604000000800200009000001D0493
-:10303000000000D40E4090920000D90400000080EF
-:103040000200009000006D05000000DC0E40909230
-:103050000000FB0400000080020000900800000552
-:10306000000000501F24169800000F05000000D833
-:10307000020000920D001905000000FC02E4169801
-:1030800000001A05000000D0020000920000F600C7
-:10309000000000D002000092000035100000008007
-:1030A0000200009000003610000000800200009036
-:1030B00008000000000000F8934001390000000003
-:1030C000000000780945903000003E0306010080B2
-:1030D000228097BC02001004B00000A0F20B00B9DF
-:1030E00000000000A00000046B41903400003E038B
-:1030F000800100800240B0B600003E030400008062
-:103100000280B0BC00000000000000D802000032C5
-:1031100000000000000000A822C02F3700000000BF
-:1031200000000000670100340042000000080000B9
-:10313000878D2A3A00003610041000000700B0B254
-:1031400000000000001800000700D03200001A0440
-:1031500012000048F2C138B418000000000000F866
-:10316000730A03393E033600000000C002003692A5
-:1031700008003E03000000F893400199000021047C
-:103180009F000080020090B20000000000000008D4
-:1031900009409032000000000000000409C0FD3228
-:1031A00002002104B00000A0F20B00B900000000F2
-:1031B000000000000B8090320000000000000000C2
-:1031C0000D40903200000000A00000043B40B031F0
-:1031D00000001D040400008002C02FBCF20E1D047C
-:1031E0000000008C0E00369208000000000000F87D
-:1031F0009340013902002804B00000A0F20B00B98E
-:1032000000002B04800100801240B0B600000000D6
-:10321000000000043B40B033000000000000000448
-:10322000FD4BD03500000000000000080B0000320C
-:1032300000000000A000000C1BE4B03200003E03C0
-:103240000B000080020000B0000031040400008088
-:10325000024090B21F003E03000000801140009920
-:103260000000300404000080123EF8BA00000000A4
-:10327000000000800100F83200003E0300000090D2
-:103280000140F89200003610800000800281FCB6F8
-:10329000000038049F000080020090B2000000008F
-:1032A0000000000809409032000000000000000407
-:1032B00009C0FD3200000000000000E403809032ED
-:1032C00009000004000000E00300373200000000A5
-:1032D000000000E4034090320A000004000000E017
-:1032E0000300373200001D04000000C80F81FC9469
-:1032F00000000000000000E47300903C1000000497
-:10330000000000E00300373200001D0400000080D0
-:1033100002000090000043049F000080020090B271
-:10332000000000000000000809409032000000008A
-:103330000000000409C0FD3200000000000000E4AD
-:103340000380903201000004000000E003003732E7
-:1033500000000000000000E00F809032000000003C
-:10336000000000E40340903202000004000000E08E
-:103370000300373200001D04000000E40F4090926B
-:1033800000004C049F000080020090B2000000008A
-:103390000000000809409032000000000000000416
-:1033A00009C0FD3200000000000000E403809032FC
-:1033B00003000004000000E00300373200000000BA
-:1033C000000000A80E80903200000000000000E421
-:1033D0000340903204000004000000E00300373294
-:1033E00000001D04000000AC0E4090920000550447
-:1033F0009F000080020090B2000000000000000862
-:1034000009409032000000000000000409C0FD32B5
-:1034100000000000000000E403809032050000047A
-:10342000000000E00300373200000000000000E46C
-:103430000340903206000004000000E00300373231
-:1034400000000000000000440F80903200001D04C6
-:10345000000000480F40909200005D0404010080CD
-:10346000824290BC00000000000000000900003211
-:1034700000000000000000E403009032120000048D
-:10348000000000E00300373200001D04000000408F
-:103490001F40909C000063049F000080020090B2D7
-:1034A0000000000000000008094090320000000009
-:1034B0000000000409C0FD3200000000000000E42C
-:1034C0000380903207000004000000E00300373260
-:1034D00000000000000000E40340903208000004F7
-:1034E000000000E00300373200001D0400000080EF
-:1034F0000200009000006A0404010080824290BC37
-:103500000000000000000000090000320000000080
-:10351000000000E40300903211000004000000E00D
-:103520000300373200001D04000000FC1F40909C87
-:10353000000070049F000080020090B200000000B4
-:103540000000000809409032000000000000000464
-:1035500009C0FD32030900000000002808003632CF
-:103560000000890400000030080036D200009304F7
-:1035700000000044088000D20000790404010080AB
-:10358000020084B2030E000000000028080036325A
-:103590008000890400000030080036D20000930447
-:1035A0000000004408C000D200007904040100803B
-:1035B000020084B200008004000000440800019270
-:1035C0008002000000000000070036328C45000039
-:1035D000000800000700363200003610041000001A
-:1035E000078090B2000000000018000007409032F1
-:1035F0000000000000000048F2C1383400007E04E2
-:1036000012000080020000B018003600000000F830
-:10361000730A03F920000000000000E403003632C2
-:1036200009000002000000E0030037320000000043
-:10363000000000E4034084320A000002000000E0C1
-:10364000030037328C450000000000A8020036322B
-:10365000A000000000000000090036320000000059
-:10366000000000E0070000320000860406010000B0
-:10367000190090BC00001D040000008002000090B2
-:103680008C450000000000C80200363280020000B5
-:103690000000003C0800363200000000000000344A
-:1036A0000800013200008E0402000080D2E083BCDA
-:1036B000000000000000003408C083320000A404B1
-:1036C00000000080020000F000000000000000A0E8
-:1036D000078083320000000000000030D820833AC9
-:1036E00000008C040401003CD8E083BC0000000012
-:1036F00000010080020000500000000000000040B7
-:1037000008000032000000000000004808000032FD
-:103710008C450000000000C80200363200020000A4
-:10372000000000C8828D2C3A800000000000003CA0
-:10373000080036320000000000000078098078326E
-:103740005A5A000004010080828D975C00009C049E
-:1037500002010048A89E84BA000000000000004852
-:103760001880843A00009A040601003C28C083BCFB
-:10377000000000000000007809858430100000007F
-:1037800000000048888D84360000A10490010048A4
-:10379000E8A584BA00000000000000481880843AC0
-:1037A0000000000000000048088584300000000090
-:1037B000040100800285845C0000000000010040DC
-:1037C0000840005200000000000000E403008332C3
-:1037D00001000002000000E0030037320C00AA04E0
-:1037E0000000002CD8A082F905000002000000E0D3
-:1037F00003003732000000000000008002000030AB
-:10380000000000000001003808403E720000000087
-:10381000000000E403C0823202000002000000E069
-:103820000300373202000002000000E003003732DC
-:103830000000000000000080020000300000AC0426
-:1038400080000080F2403EB60000000000010080D1
-:10385000020000700000B3049F000080020090B2DC
-:103860000000000000000008094090320000000045
-:103870000000000409C0FD320000000000000084C8
-:103880000E80903200001D04000000880E409092CF
-:1038900008000000000000F8934001390000B9045E
-:1038A0009F000080020090B20000000000000008AD
-:1038B00009409032000000000000000409C0FD3201
-:1038C00000000000000000200740F532000000006A
-:1038D0000008002007000032000000000010002057
-:1038E00007C0F53200000000001800200740F63243
-:1038F00000000000002000200780F63200000000D9
-:103900000028002007C0F632000000000030002030
-:103910000700F73200000000003800200780FF3267
-:1039200000000000000000D802000032000000008B
-:1039300000000000074009320000000000080000FD
-:1039400077C0293700000000001000000780903287
-:103950000000000000180000074090320000C6047C
-:1039600012000048F2C138B418003600000000F818
-:10397000730A03F90000000000000008C8010034C9
-:1039800000003203000000FC020000920000CC04A2
-:1039900080010080F24190B60000CD04000000C814
-:1039A0002F81FC9400000000000000C82F81FC352E
-:1039B00000000000000000800F4590300000D0049F
-:1039C00002000080027EF8BC0000000000000084BD
-:1039D0000F00F83200000000000000001940F83726
-:1039E00000000000000000843F40F83700000000A5
-:1039F000000000840F64F83A00000000000000009E
-:103A00001900F83700000000000000803F00F83780
-:103A100000001D04000000800F24F89A0000D80464
-:103A200080010080F24190B600001D04000000C833
-:103A30004F81FC9400001D04000000C84F81FC95DC
-:103A40000000DB0404010080024090BC0000000084
-:103A50000000000409C0003200001D04000000E462
-:103A60001E40909C00000000000000A8220090373B
-:103A700000001D04000086C007409092080000006E
-:103A8000000000F8934001390D000000000000FC28
-:103A900002E41638000000000000000009000232B5
-:103AA0000000E604040000800200B0B20000000044
-:103AB000000000000B00003220000000000000A009
-:103AC000820D2A3A0000E10404010000190090BCB4
-:103AD0000000E804000000287901009400000000C4
-:103AE000000000C83F80FC34408000000000002837
-:103AF000098036320000F10E000000D8020000D22A
-:103B000000003E0304000080028092BC1800000008
-:103B1000000000F8730A03393E033600000000C0BD
-:103B200002003692EA05F20404010080824D90BC46
-:103B300000000000000000EC0F00153200FE1F0026
-:103B4000000000F00F003732F0FF0000000000E836
-:103B50000F00363298050000000000F40F003632E6
-:103B60000000F804000000C84F80FC953623361092
-:103B700004010080824D90BC00000000000000ECB9
-:103B80000F80143200F81F00000000F00F003732E1
-:103B9000C0FF0000000000E80F0036329827000048
-:103BA000000000F40F00363200000000000000C8E2
-:103BB0004F80FC3404000000000000608F4D903AFC
-:103BC0000000BC0E00000080020000D000001D04B8
-:103BD00000000080020000900000FD0480010080D1
-:103BE000024090B600000000000000C86F80FC3466
-:103BF0000000FF0480010080124090B60000000029
-:103C0000000000C85F80FC3400001D04000000803C
-:103C1000020000900000020504010080324090B0D4
-:103C200080011D04000000C88F8DFC910000040578
-:103C300080000080124090B600000505000000C81A
-:103C40007F80FC9500000000000000C87F80FC34ED
-:103C50000000070580000080024090B600000805C3
-:103C6000000000C88F80FC9500000000000000C824
-:103C70008F80FC3400000B0580000080224090B64D
-:103C8000F20E00000000008C0E00363200000D0520
-:103C9000000000C81F81FC95150F00000000008C7B
-:103CA0000E00363200000000000000C81F81FC3406
-:103CB000100000000000004C1F24163800001D04F6
-:103CC000000000501F00F59C000012059F000080BE
-:103CD000020090B20000000000000008094090328D
-:103CE000000000000000000409C0FD3200000000D8
-:103CF000000000001700F53A8C44000000080000A6
-:103D0000070036320000361004100000078090B221
-:103D10000000000000180000074090320000160567
-:103D200012000040F2C138B418003600000000F85C
-:103D3000730A03F900001D040000008002000090D7
-:103D400000001D04000000EC0340909200001A05E2
-:103D5000B20000D8020000B200000000000201EC36
-:103D600016E46E3A08000000000000F893400139A4
-:103D700000004005171001F802006EB2060025058C
-:103D800004010080828D2FB003000000000000F8C5
-:103D9000828D2F3200C0050E00000028098036D227
-:103DA00000000000000201EC16C06E3C00000000A4
-:103DB000001886C80600003218003600000000F81F
-:103DC000730A03F900002605000000D002000092EB
-:103DD00000002B050419868002806CBC00000000E6
-:103DE0000000000009006E3200000000C10800045D
-:103DF00009006E3200000000C01586780FC06C32DA
-:103E0000000030058001008022802FB600003005C0
-:103E1000001886C806400092000000000040000024
-:103E200009006E3200000000C248000409006E3232
-:103E300000000000C01686780FC06C32000030050C
-:103E40008001008012802FB600000000001886C894
-:103E500006000032004000000000002809803632D1
-:103E6000000038050402018002C06EBC0000050E8F
-:103E7000000201EC16C06EDC0000360580000080F8
-:103E800002802FB600003805810000F822802FB490
-:103E900000003805001886C806400092000038056A
-:103EA000820000F812802FB400000000001886C8BD
-:103EB0000600003200000000001086C80600003234
-:103EC000000000000000000007C00A3200380000B7
-:103ED0000008000007003632000036100410000011
-:103EE000070090B200000000001800000740903268
-:103EF00000003D0512000040F2C138B41800360041
-:103F0000000000F8730A03F900000000170100F830
-:103F1000A2802F3400000000001086A842806C3779
-:103F200000004A051200703802007EB20000361010
-:103F30001200703C02007EB2000036101200703099
-:103F400002007EB2000036101200703402007EB211
-:103F50000000410502010080B2822ABC000000007E
-:103F6000170000D002000032060025050401008081
-:103F7000828D2FB000001F050403018002C06EBCBB
-:103F800000005505000000800200009000004C0574
-:103F90000403018002C06EBC00005505001086C8F5
-:103FA00046802A9600000000001086C846802A3607
-:103FB000000050058000008012802FB603005205DB
-:103FC000220000F8828D2FB200005205001886C82A
-:103FD00006000092000055058000008022802FB668
-:103FE00000000000C20100F802802F3500C0050E5D
-:103FF00000000028098036D200000000000201EC19
-:1040000016C06E3C18003600000000F8730A03F971
-:1040100000000000001001E006802F3200000000C8
-:10402000000000A8E100003400000000A20000FC35
-:10403000020000320000320380010080A2802FB60F
-:1040400000005B05B90100D8028001B20000320314
-:10405000000000F80200009200000000000000389C
-:104060001880F73A0000000000000038F8BF8330E5
-:1040700000005F0504010080F2BD83BC0000320334
-:10408000A90000F80200009200C066051801000CAB
-:10409000A8CD3EB200006205840000741F40F7BA4C
-:1040A00000003203A90000F80200009200000000A6
-:1040B000000000740F00003200C066051801000CFB
-:1040C000A8CD3EB218003600000000F8738A03F94C
-:1040D00000006305000000B0020000920000000034
-:1040E0000000007C0F8083320000000000280000E8
-:1040F000070000320000000000300000070000321E
-:104100000001008000380000070037320000000086
-:10411000003C000C0780833200006B051200004851
-:1041200002C080B200003203A9000008E801009438
-:104130000000730504010080A2C0EDBC5200000025
-:10414000000000740E00363200000000000000C0C5
-:104150000E400132407E0500000000B40E003732F0
-:1041600000000000000000C40E80073264007805E3
-:10417000000000CC0E003692290000000000007400
-:104180000E00363200000000000000C00E40003279
-:10419000A08C0000000000B40E00363200000000C9
-:1041A000000000C40EC0003200000000000000CC7F
-:1041B0000E80023210000000000000E4337BEC3976
-:1041C0001E000001000000E0030037320000000084
-:1041D000000000C86EC0EC3700001D04000000D8CD
-:1041E0000EC0ED927E0500000000008882CD813A6D
-:1041F0007E0500000000008882CD813ABD050000E8
-:104200000018018882CD6E3AC605000000180188AA
-:1042100082CD6E3ACF0500000018018882CD6E3A3B
-:10422000D80500000018018882CD6E3AE105000033
-:104230000018018882CD6E3AEA0500000018018856
-:1042400082CD6E3AF30500000018018882CD6E3AE7
-:10425000FC0500000018018882CD6E3A05060000BA
-:104260000018018882CD6E3A0E0600000018018801
-:1042700082CD6E3A170600000018018882CD6E3A92
-:10428000200600000018018882CD6E3A2906000041
-:104290000018018882CD6E3A3206000000180188AD
-:1042A00082CD6E3A3B0600000018018882CD6E3A3E
-:1042B000440600000018018882CD6E3A4D060000C9
-:1042C0000018018882CD6E3A560600000018018859
-:1042D00082CD6E3A5F0600000018018882CD6E3AEA
-:1042E000680600000018018882CD6E3A7106000051
-:1042F0000018018882CD6E3A7A0600000018018805
-:1043000082CD6E3A830600000018018882CD6E3A95
-:104310008C0600000018018882CD6E3A95060000D8
-:104320000018018882CD6E3A9E06000000180188B0
-:1043300082CD6E3AA70600000018018882CD6E3A41
-:10434000B00600000018018882CD6E3AB906000060
-:104350000018018882CD6E3AC2060000001801885C
-:1043600082CD6E3ACB0600000018018882CD6E3AED
-:10437000D40600000018018882CD6E3ADD060000E8
-:104380000018018882CD6E3AE60600000018018808
-:1043900082CD6E3AEF0600000018018882CD6E3A99
-:1043A000F80600000018018882CD6E3A010700006F
-:1043B0000018018882CD6E3A0A07000000180188B3
-:1043C00082CD6E3A130700000018018882CD6E3A44
-:1043D0001C0700000018018882CD6E3A25070000F6
-:1043E0000018018882CD6E3A2E070000001801885F
-:1043F00082CD6E3A0000F702000000D40200009265
-:1044000000007202000000800200009037070000E8
-:10441000001C018882CD6E3A3C070000001C018818
-:1044200082CD6E3A41070000001C018882CD6E3AB1
-:1044300046070000001C018882CD6E3A4B07000041
-:10444000001C018882CD6E3A50070000001C0188D4
-:1044500082CD6E3A55070000001C018882CD6E3A6D
-:104460005A070000001C018882CD6E3A5F070000E9
-:10447000001C018882CD6E3A64070000001C018890
-:1044800082CD6E3A69070000001C018882CD6E3A29
-:104490006E070000001C018882CD6E3A7307000091
-:1044A000001C018882CD6E3A78070000001C01884C
-:1044B00082CD6E3A7D070000001C018882CD6E3AE5
-:1044C00082070000001C018882CD6E3A8707000039
-:1044D000001C018882CD6E3A0000FC02000000D46E
-:1044E0000200009200001203000000D402000092BB
-:1044F00000003C0900000010088001920000361006
-:1045000000000080020000900000361000000080D3
-:1045100002000090000036100000008002000090B1
-:1045200000003610000000800200009000003610ED
-:1045300000000080020000900000361000000080A3
-:104540000200009000003610000000800200009081
-:1045500000003610000000800200009000003610BD
-:10456000000000800200009000007B0900000010A5
-:1045700008800092000036100000008002000090C9
-:10458000000036100000008002000090000036108D
-:104590000000008002000090000036100000008043
-:1045A0000200009000003610000000800200009021
-:1045B000000036100000008002000090000036105D
-:1045C0000000008002000090000036100000008013
-:1045D00002000090000036100000008002000090F1
-:1045E00000008809000000100880009200003610CA
-:1045F00000000080020000900000361000000080E3
-:10460000020000900000CF09000000100840019255
-:1046100000003610000000800200009000003610FC
-:1046200000000080020000900000361000000080B2
-:104630000200009000003610000000800200009090
-:104640000000361000000080020000900000D70932
-:104650000000001008C0009200003610000000802A
-:10466000020000900000D7090000001008C000926E
-:1046700000003D0C000000100840019200003610C0
-:1046800000000080020000900000D7090000001028
-:1046900008C0009200003610000000800200009068
-:1046A000000036100000008002000090000036106C
-:1046B00000000080020000900000E40900000010EB
-:1046C00008C0009200003610000000800200009038
-:1046D0000000E4090000001008C0009200003D0C3A
-:1046E0000000001008400192000036100000008019
-:1046F000020000900000E4090000001008C00092D1
-:10470000000036100000008002000090000036100B
-:1047100000000080020000900000361000000080C1
-:10472000020000900000E2090000001008C00092A2
-:104730000000361000000080020000900000E20936
-:104740000000001008C0009200003D0C00000010A6
-:104750000840019200003610000000800200009026
-:104760000000E2090000001008C0009200003610AE
-:104770000000008002000090000036100000008061
-:10478000020000900000361000000080020000903F
-:1047900000003610000000800200009000007A0A3D
-:1047A0000000001008C000920000D40900000010B2
-:1047B000080001920000CF0900000010084001929B
-:1047C000000036100000008002000090000036104B
-:1047D0000000008002000090000036100000008001
-:1047E00002000090000036100000008002000090DF
-:1047F000000036100000008002000090000036101B
-:1048000000000080020000900000750A0000001007
-:10481000088000920000D4090000001008000192F6
-:104820000000CF090000001008400192000036107F
-:1048300000000080020000900000361000000080A0
-:10484000020000900000361000000080020000907E
-:1048500000003610000000800200009000003610BA
-:104860000000008002000090000036100000008070
-:10487000020000900000750A00000010080001927C
-:104880000000D40900000010080001920000CF09C8
-:104890000000001008400192000036100000008067
-:1048A000020000900000361000000080020000901E
-:1048B000000036100000008002000090000036105A
-:1048C0000000008002000090000036100000008010
-:1048D00002000090000036100000008002000090EE
-:1048E0000000E40A00000010088000920000D409D3
-:1048F00000000010080001920000CF090000001025
-:104900000840019200003610000000800200009074
-:1049100000003610000000800200009000003610F9
-:1049200000000080020000900000361000000080AF
-:10493000020000900000361000000080020000908D
-:104940000000361000000080020000900000E40A21
-:1049500000000010080001920000D40900000010BF
-:10496000080001920000CF090000001008400192E9
-:104970000000361000000080020000900000361099
-:10498000000000800200009000003610000000804F
-:10499000020000900000361000000080020000902D
-:1049A0000000361000000080020000900000E309C3
-:1049B0000000001008800092000036100000008007
-:1049C000020000900000E30900000010088000923F
-:1049D00000003D0C0000001008400192000036105D
-:1049E00000000080020000900000361000000080EF
-:1049F00002000090000036100000008002000090CD
-:104A00000000361000000080020000900000361008
-:104A100000000080020000900000E3090000001088
-:104A20000800019200003610000000800200009093
-:104A30000000E309000000100800019200003D0C96
-:104A400000000010084001920000361000000080B5
-:104A5000020000900000361000000080020000906C
-:104A600000003610000000800200009000003610A8
-:104A7000000000800200009000003610000000805E
-:104A8000020000900000361000000080020000903C
-:104A900000008C0700000010080001920000361092
-:104AA000000000800200009000008C070000001051
-:104AB00008400192000036100000008002000090C3
-:104AC0000000361000000080020000900000361048
-:104AD00000000080020000900000361000000080FE
-:104AE00002000090000036100000008002000090DC
-:104AF00000005E0C00000010084001920000540C01
-:104B0000000000100840019200005E0C0000001040
-:104B1000084001920000CF090000001008400192F7
-:104B200000003610000000800200009000005E0CC3
-:104B300000000010084001920000361000000080C4
-:104B4000020000900000361000000080020000907B
-:104B50000000810900000010084000920000810957
-:104B60000000001008800092000081090000001081
-:104B700008C00092000081090000001008000192A6
-:104B80000000860900000010084001920000810921
-:104B90000000001008800192000081090000001050
-:104BA00008C0019200003610000000800200009052
-:104BB0000000361000000080020000900000361057
-:104BC00000000080020000900000490B000000106F
-:104BD000088000920000490B0000001008C00092FD
-:104BE0000000490B00000010080001920000CF09EE
-:104BF0000000001008400192000036100000008004
-:104C0000020000900000490B0000001008C0019253
-:104C100000003610000000800200009000003610F6
-:104C200000000080020000900000361000000080AC
-:104C3000020000900000361000000080020000908A
-:104C400000003610000000800200009000003610C6
-:104C500000000080020000900000680C00000010BE
-:104C60000840019200003610000000800200009011
-:104C70000000361000000080020000900000361096
-:104C8000000000800200009000003610000000804C
-:104C9000020000900000D80C0000001008400192B3
-:104CA0000000DB0C000000100840019200004C0CDA
-:104CB00000000010084001920000DB0C0000001012
-:104CC0000840019200008C0700000010084001928B
-:104CD0000000361000000080020000900000DB0C95
-:104CE000000000100840019200008D070000001035
-:104CF00008000292000036100000008002000090C0
-:104D00000000361000000080020000900000DC0C63
-:104D1000000000100840019200004C0C0000001040
-:104D2000084001920000DC0C0000001008400192D5
-:104D300000008C07000000100840019200003610AF
-:104D400000000080020000900000DC0C0000001059
-:104D50000840019200003610000000800200009020
-:104D600000003610000000800200009000003610A5
-:104D700000000080020000900000E10C0000001024
-:104D8000088000920000E10C0000001008C00092B2
-:104D90000000E10C00000010080001920000CF09A3
-:104DA0000000001008400192000036100000008052
-:104DB000020000900000E10C0000001008C0019209
-:104DC0000000361000000080020000900000361045
-:104DD00000000080020000900000361000000080FB
-:104DE00002000090000036100000008002000090D9
-:104DF0000000361000000080020000900000361015
-:104E000000000080020000900000361000000080CA
-:104E10000200009000006A090000001008400092A3
-:104E200000003610000000800200009000003610E4
-:104E3000000000800200009000003610000000809A
-:104E40000200009000003610000000800200009078
-:104E50000000F10C00000010088000920000F10C2E
-:104E60000000001008C000920000F10C00000010CB
-:104E7000080001920000CF090000001008400192D4
-:104E80000000361000000080020000900000F10CCD
-:104E90000000001008C001920000361000000080E1
-:104EA0000200009000003610000000800200009018
-:104EB0000000361000000080020000900000050D88
-:104EC00000000010088000920000050D0000001096
-:104ED00008C000920000050D0000001008000192BB
-:104EE0000000CF09000000100840019200003610B9
-:104EF00000000080020000900000050D000000107E
-:104F000008C00192000036100000008002000090EE
-:104F100000008C070000001008000092000036100E
-:104F2000000000800200009000008C0700000010CC
-:104F3000088000920000130D0000001008C00092CD
-:104F400000008C07000000100800019200008C0790
-:104F500000000010084001920000361000000080A0
-:104F60000200009000003610000000800200009057
-:104F70000000361000000080020000900000361093
-:104F80000000008002000090000036100000008049
-:104F90000200009000008C070000001008800092C2
-:104FA0000000210D000000100880009200008C0716
-:104FB000000000100800019200008C0700000010A3
-:104FC00008400192000036100000008002000090AE
-:104FD0000000361000000080020000900000361033
-:104FE00000000080020000900000361000000080E9
-:104FF00002000090000036100000008002000090C7
-:1050000000008C0700000010088000920000210DB5
-:10501000000000100800019200008C070000001042
-:105020000800019200008C07000000100840019267
-:1050300000003610000000800200009000003610D2
-:105040000000008002000090000036100000008088
-:105050000200009000003610000000800200009066
-:1050600000003610000000800200009000003610A2
-:10507000000000800200009000008C07000000107B
-:1050800008800092000036100000008002000090AE
-:1050900000008C070000001008400192000036104C
-:1050A0000000008002000090000036100000008028
-:1050B0000200009000003610000000800200009006
-:1050C0000000361000000080020000900000361042
-:1050D00000000080020000900000FD0C00000010A5
-:1050E000088000920000FD0C0000001008C0009233
-:1050F0000000FD0C00000010080001920000CF0924
-:1051000000000010084001920000361000000080EE
-:10511000020000900000FD0C0000001008C0019289
-:1051200000003610000000800200009000003610E1
-:105130000000008002000090000036100000008097
-:105140000200009000003610000000800200009075
-:1051500000003610000000800200009000003610B1
-:1051600000000080020000900000310D00000010DF
-:10517000080002920000361000000080020000903B
-:105180000000361000000080020000900000361081
-:105190000000008002000090000036100000008037
-:1051A0000200009000003610000000800200009015
-:1051B000000088090000001008C0019200003610AD
-:1051C0000000008002000090000036100000008007
-:1051D000020000900000CF0900000010084001927A
-:1051E0000000361000000080020000900000C1099D
-:1051F0000000001008C0019200003610000000807E
-:1052000002000090000036100000008002000090B4
-:1052100000003610000000800200009000008809A5
-:10522000000000100880009200003610000000808E
-:105230000200009000003610000000800200009084
-:105240000000CF0900000010084001920000361055
-:1052500000000080020000900000C1090000001062
-:1052600008C001920000361000000080020000908B
-:105270000000361000000080020000900000361090
-:10528000000000800200009000006F0B0000001082
-:10529000088000920000361000000080020000909C
-:1052A00000006F0B000000100880009200003D0C11
-:1052B000000000100840019200003610000000803D
-:1052C0000200009000006F0B0000001008800092A8
-:1052D0000000361000000080020000900000361030
-:1052E00000000080020000900000361000000080E6
-:1052F0000200009000006F0B0000001008000192F7
-:1053000000003610000000800200009000006F0BCB
-:10531000000000100800019200003D0C0000001089
-:10532000084001920000361000000080020000904A
-:1053300000006F0B00000010080001920000361002
-:105340000000008002000090000036100000008085
-:105350000200009000003610000000800200009063
-:1053600000006F0B000000100800019200003610D2
-:10537000000000800200009000006F0B0000001091
-:105380000800019200003D0C00000010084001924E
-:1053900000003610000000800200009000006F0B3B
-:1053A000000000100800019200003610000000808C
-:1053B0000200009000003610000000800200009003
-:1053C00000003610000000800200009000006F0B0B
-:1053D00000000010088000920000361000000080DD
-:1053E0000200009000006F0B000000100880009287
-:1053F00000003D0C00000010084001920000361033
-:10540000000000800200009000006F0B0000001000
-:10541000088000920000361000000080020000901A
-:1054200000003610000000800200009000003610DE
-:105430000000008002000090000036100000008094
-:105440000200009000003610000000800200009072
-:1054500000006F0B0000001008C0019200003D0C1E
-:10546000000000100840019200003610000000808B
-:105470000200009000006F0B0000001008C00192B5
-:10548000000036100000008002000090000036107E
-:105490000000008002000090000036100000008034
-:1054A000020000900000D70B00000010088000925E
-:1054B000000036100000008002000090000036104E
-:1054C000000000800200009000008C070000001027
-:1054D0000840019200003610000000800200009099
-:1054E0000000D70B0000001008800092000036106A
-:1054F00000000080020000900000361000000080D4
-:1055000002000090000036100000008002000090B1
-:105510000000D70B00000010088000920000361039
-:1055200000000080020000900000361000000080A3
-:105530000200009000008C0700000010084001925B
-:105540000000361000000080020000900000D70B21
-:105550000000001008C0019200003610000000801A
-:105560000200009000003610000000800200009051
-:10557000000036100000008002000090000036108D
-:105580000000008002000090000036100000008043
-:105590000200009000003610000000800200009021
-:1055A00000008C0700000010084001920000361037
-:1055B00000000080020000900000DF0B00000010DF
-:1055C00008C0019200003610000000800200009028
-:1055D000000036100000008002000090000036102D
-:1055E00000000080020000900000361000000080E3
-:1055F00002000090000036100000008002000090C1
-:1056000000003610000000800200009000008C07AF
-:1056100000000010084001920000361000000080D9
-:10562000020000900000DF0B0000001008800092D4
-:1056300000003610000000800200009000003610CC
-:105640000000008002000090000036100000008082
-:105650000200009000003610000000800200009060
-:10566000000036100000008002000090000036109C
-:1056700000000080020000900000C30C0000001039
-:1056800008400192000036100000008002000090E7
-:10569000000036100000008002000090000036106C
-:1056A000000000800200009000009407000000103D
-:1056B00008400092000036100000008002000090B8
-:1056C000000036100000008002000090000036103C
-:1056D00000000080020000900000361000000080F2
-:1056E00002000090000036100000008002000090D0
-:1056F0000000E6070000001008800092000036104D
-:1057000000000080020000900000361000000080C1
-:105710000200009000009B080000001008000192A9
-:105720000000361000000080020000900000930787
-:1057300000000010080001920000A5080000001001
-:10574000080001920000A508000000100800019266
-:105750000000A508000000100800019200003610AB
-:105760000000008002000090000036100000008061
-:10577000020000900000F507000000100880009271
-:105780000000361000000080020000900000930727
-:105790000000001008000192000036100000008098
-:1057A000020000900000361000000080020000900F
-:1057B00000000308000000100880009200009A0812
-:1057C0000000001008800092000093070000001005
-:1057D00008000192000036100000008002000090D6
-:1057E0000000BB0800000010084000920000BB0849
-:1057F00000000010088000920000BB0800000010AC
-:1058000008C00092000093070000001008000192F9
-:1058100000003610000000800200009000003610EA
-:1058200000000080020000900000E008000000106E
-:1058300008C00092000036100000008002000090B6
-:1058400000009307000000100800019200003610CD
-:105850000000008002000090000036100000008070
-:10586000020000900000E208000000100800019211
-:105870000000E208000000100800019200009307F9
-:1058800000000010080001920000361000000080A7
-:10589000020000900000361000000080020000901E
-:1058A0000000E40800000010088000920000E408F6
-:1058B0000000001008C000920000930700000010D4
-:1058C00008000192000036100000008002000090E5
-:1058D0000000930700000010084000920000B1088B
-:1058E00000000010088000920000B10800000010C5
-:1058F00008C0009200009307000000100800019209
-:1059000000009307000000100800009200009307B9
-:1059100000000010084000920000F808000000108D
-:10592000088000920000F8080000001008C00092F3
-:1059300000009307000000100800019200003610DC
-:10594000000000800200009000003610000000807F
-:105950000200009000002C09000000100880009256
-:10596000000093070000001008C000920000930799
-:1059700000000010080001920000361000000080B6
-:10598000020000900000361000000080020000902D
-:1059900000000C0900000010088000920000361082
-:1059A000000000800200009000009307000000103B
-:1059B00008000192000036100000008002000090F4
-:1059C0000000361000000080020000900000F40784
-:1059D00000000010088000920000361000000080D7
-:1059E00002000090000093070000001008000192E0
-:1059F0000000361000000080020000900000361009
-:105A0000000000800200009000002009000000104B
-:105A100008800092000020090000001008C00092D9
-:105A200000009307000000100800019200003610EB
-:105A3000000000800200009000003610000000808E
-:105A4000020000900000EF080000001008800092A3
-:105A50000000EF080000001008C00092000093074B
-:105A600000000010080001920000361000000080C5
-:105A7000020000900000361000000080020000903C
-:105A80000000390900000010088000920000390968
-:105A90000000001008C000920000930700000010F2
-:105AA0000800019208003103001801E8762081996E
-:105AB00008002F03001801E8762081990000990F53
-:105AC00000000080020000F0080091071D1901E8A5
-:105AD000762081B900003103000000F862812F9523
-:105AE000000031038000008002812FB62A003103BC
-:105AF000D001002C82CD2E9208003103001C01E859
-:105B00007620819900000000000000D802000032D9
-:105B100000000000000E01EC06C06E3554000000CD
-:105B2000000000000700363200000000000000BC4A
-:105B3000A8002D37B44400000008000087CD8B3A40
-:105B4000000000000000007899C02C37B40000006D
-:105B500000000078898D973A00003610021000008E
-:105B600087BF97BA00000000001800000740FE320F
-:105B700000009D0712000040F2C138B40000000090
-:105B80000090007809006E320000361004A000007A
-:105B900009806EB20000A20704A5000409806EB25D
-:105BA0000000000000000004090090320000A4077B
-:105BB00004010004096490BC00000000000000041F
-:105BC00009400032080000006E3402E816249039C3
-:105BD0000000A507B71002E0068097B20000A807F2
-:105BE00080000080F280FCB60000A907000000C819
-:105BF000FF80FC940000AA079F990080821BEEBCE6
-:105C000000000000009800E00E006E32000000006E
-:105C1000A70000800200003018003600000000F8E5
-:105C2000730A03F9000000000010021C09006E3224
-:105C30004000AF070601008082CD91BC00C0B007D4
-:105C4000001802E00680369200E00000001802E032
-:105C50000680363200000000000000200980033278
-:105C60000000B30780D7018032C06EB6000000008C
-:105C7000000000204900923A00000000009801183E
-:105C800009006E3200000000000A022409C06E32D2
-:105C90000000000000C0012809806E320000C1072A
-:105CA000800E018012C06EB602000000003C02ECC3
-:105CB0000600363200000000000000004901923A60
-:105CC0000000BD0780D6018042C06EB60082000091
-:105CD000001002E0A6CD913200A00000002C02E8E6
-:105CE000060036322800CB07003A02EC0600369256
-:105CF00000000000D301001CD9C1913400820000D3
-:105D0000001002E0A6CD913200A00000002C02E8B5
-:105D1000060036323400CB07003A02EC0600369219
-:105D200004000000003C02EC0600363228000000AF
-:105D300000000000890D923A0000C70780D601805C
-:105D400042C06EB600860000001002E0A6CD91327F
-:105D500004A00000002C02E8060036321400CB0735
-:105D6000003A02EC0600369200000000D301001C4D
-:105D7000D9C1913400860000001002E0A6CD913216
-:105D800004A00000002C02E8060036322000CB07F9
-:105D9000003A02EC0600369212000000003802ECD5
-:105DA00086CD913A08000000002802E88624903948
-:105DB00000000000002002E09624143700000000DC
-:105DC000004001E0068091320000D107040100800C
-:105DD000028092BC0000000000C001E0060000321A
-:105DE00000000000003000E006000032000000006B
-:105DF00000B000E0060000322000000000000000BB
-:105E0000070036320000000000000078A9002D379E
-:105E10000045000000080000878D973A0000000050
-:105E20000000007899C02C370001000000000078C5
-:105E3000898D973A000036100210000087BF97BA8C
-:105E400000000000001800000740FE320000DA07E2
-:105E500012000048F2C138B40000DE0780D7012CE0
-:105E600009C06EB200000000DAD701EC06C06E3542
-:105E700000000000005A01EC0640ED320000000076
-:105E8000005C01E806808B320000E10780010080A1
-:105E900062C092B600000000000000F882812F343A
-:105EA00018003600000000F8730A03F90000000033
-:105EB0000004013808C06E3200000000006201ECEE
-:105EC00006808332010093071201002C82CD2EB28E
-:105ED0000000E407000000800200009000000000C5
-:105EE000005401FC02C06E3200000000000000D827
-:105EF0000280013200C0EC071801000CA8CD3EB2B0
-:105F00002080000000000008088036322D002F039A
-:105F10001201002C82CD2EB20000EA0700000080A2
-:105F200002000090000000000062013808C06E32DC
-:105F300000080080000000280900373200604B0F85
-:105F400000000008088036F200009307040601EC08
-:105F500016C06EBC000093078000008072812FB6CF
-:105F600000000000000000F872812F343D0093070C
-:105F70001201002C82CD2EB20000F207000000803A
-:105F8000020000900000F507000000F8B2812F9495
-:105F90000000CF0F00A0001808006EF200002510CE
-:105FA0000078016008006EF20000F907120100C8D5
-:105FB000020020B20000FC070000008002000090F8
-:105FC000000006081201005C088020B20000FC07F7
-:105FD0001201006002802CB20000FA07000000806D
-:105FE000020000900000FE0704000080024080BC18
-:105FF00000000000000000F81F80FF3A00000008C9
-:1060000080010080A2802FB618003600CA0000F878
-:10601000730A03F9000093078000008072812FB695
-:106020003D0001081200002C82CD2EB20000930723
-:10603000000000F872812F940000FC07120000C8D5
-:10604000020020B20000FA071200005C088020B2B3
-:106050000000361004A0001808006EB20000000016
-:106060000000007879613832000007081218024CED
-:10607000E2256EB2080000000010020078E16E39DF
-:106080000000000000180020070000320700000098
-:106090000000003878CAE939000036100400003CDE
-:1060A000084080B2000036100490006C08006EB208
-:1060B000000000000098004C08006E320000000054
-:1060C000510000D802000032000000004D00000026
-:1060D00067E0833E000000000008000007008032F7
-:1060E000000000000010000007C086320000000021
-:1060F0000018000007C084320000000000000018F3
-:10610000D8A0813C0000680804B000E0D6206EBC36
-:10611000000038080400003CD8E083BC00001E08E2
-:106120008000008092802FB6000019081201000044
-:1061300009C021B218003600000000F8730A03F904
-:106140001D0000000000007809A4173800001D0899
-:1061500004010080128097BC00001808670000F856
-:10616000A2802FB5000019080000000009C021928C
-:1061700000000000C90100D802408432000021085C
-:106180000400008072802DBC00001F081200004433
-:10619000E2E038B200002C08510000D812802D9A9D
-:1061A0000000000000000078F9818334000022081C
-:1061B00012000044E2E538B20000260880000080AA
-:1061C00082802FB60000550F00A0015008006EF22B
-:1061D0000000000000F801E00600853200002808F9
-:1061E000120100E802C021B218003600000000F8D9
-:1061F000730A03F900002B080401008002802DBC03
-:1062000000002708670000F8A2802FB500003610B4
-:10621000120000E802C021B200000000510000D8C6
-:1062200002000032000030082A010000D82080BAA5
-:10623000000030081201000009C021B21800360029
-:10624000000000F8730A03F900000000000000D805
-:106250000240843200000000CAE0006C08006E3288
-:106260000000000000E8004C08006E32000036100C
-:1062700004F0001808006EB20000000000000038B2
-:106280001881833500000F0804B00080829B81BC18
-:1062900000000000CA0100F842802F3508A00F0856
-:1062A00012010040A2CD39B2000036080000008083
-:1062B0000200009000004008293402B808806EB245
-:1062C00000003B081201000009C021B2180036008E
-:1062D000000000F8730A03F91D00000000000078B8
-:1062E00009A4173800003F0804010080128097BC01
-:1062F00000003A08670000F8A2802FB500003B08B4
-:106300000000000009C0219200000000C90100D86F
-:10631000024084320000000000000078F9818334DC
-:106320000000410812000044E2E538B200004708CE
-:106330002800006CD8E086BA0000540F00A001507D
-:1063400008006EF2000047081DF801E0060085B263
-:10635000000047088000008002812FB62A0000005C
-:10636000D001002C82CD2E3200004A0804A000E0AB
-:10637000068081B200003610049000E006C086B2AC
-:1063800000005808009800E006C0849200004F0802
-:1063900080010080A2802FB600004D08120100008D
-:1063A00009C021B218003600000000F8730A03F992
-:1063B0001D004F080401008002A417B800004C081B
-:1063C000000000F8E2802F940000361004E0006C1A
-:1063D00008006EB200000000CAE8004C08006E32EF
-:1063E0000000361004F0001808006EB200005508D6
-:1063F00004B00080829B81BC00000000CA0100F84C
-:1064000042802F3508A0540812000040A2CD39B2B6
-:106410000000000000A000E00680813200000000C3
-:10642000009800E006C0843200003610049000E0BE
-:1064300006C086B200005D082A5D01E806808BB2C6
-:1064400000005B081201000009C021B218003600EC
-:10645000000000F8730A03F91D005D0804010080C4
-:1064600002A417B800005A08000000F8E2802F9438
-:1064700010246008370000F8A28D2FB13D005E089F
-:106480001200002C82CD2EB200000000000000F8A7
-:1064900072812F3408000000CA1C01E8762081397F
-:1064A0000000FA0D0000002CF90100F4000065085E
-:1064B00080000080E2802FB6000065081201000015
-:1064C00009C021B218003600000000F8730A03F971
-:1064D000100000000018008067A1733930003203FB
-:1064E0001201005CA28D2CB200003610000000806A
-:1064F0000200009000006B088000008092802FB6A0
-:1065000018003600000000F8730A03F900000000CC
-:10651000C90100D802408432000036102A000078F9
-:10652000F98183B400006C0812000044E2E538B23F
-:106530000000DC0E00000030030038F2000071089B
-:106540001D000038188183B50000710880000080AC
-:1065500002812FB62A000000D001002C82CD2E32FD
-:1065600000007408040601EC16C06EBC00000000B8
-:10657000CA0100F842802F3408C07308120000409E
-:10658000A2CD39B2000077088000008082802FB64B
-:106590000000550F00A0015008006EF2000000003E
-:1065A00000F801E0060085320000790812010000C1
-:1065B00009C021B218003600000000F8730A03F980
-:1065C000000095082A3502B808806EB200007C08E9
-:1065D0001201000009C021B218003600000000F8C6
-:1065E000730A03F900000000000000F8A2802F35B4
-:1065F00000008E0804000080026180BC0000870853
-:1066000080B8000009C06EB240008208040000801B
-:10661000820D90BC0000820802B00080821B84BC06
-:1066200000008708000000F8B2812F9400000000ED
-:1066300000D601EC56C06E3400000000000000607F
-:106640001800863A0000000000000080B70178348E
-:1066500000000000007801E0060086324000950846
-:1066600004000080820D90BC0000361004A00018C9
-:1066700008006EB20000CF0F00000000D82080FAA2
-:10668000000036100600003C182084BC00003610C4
-:1066900004B0003C88DB83BE0000000000000080E6
-:1066A000F720783A00000000587801E0F620863A9A
-:1066B00000000C0800000004F860809A00009108B7
-:1066C00080B9000009C06EB22F0095081201002C9D
-:1066D00082CD2EB200008F080000008002000090E2
-:1066E0004000930804010080820D90BC380094089B
-:1066F00000000078090036923900000000000078A0
-:1067000009003632000094081200002CE2E52EB297
-:10671000100000000018008067A17339000000001D
-:10672000005C01E806808B3210240000000000F8B5
-:10673000A28D2F31300093071201005CA28D2CB284
-:1067400000003610000000800200009000000308E6
-:10675000000000F8C2812F9500000000005401FCE9
-:1067600002C06E3200000000000000D8028001323A
-:1067700000C0A1081801000CA8CD3EB22080000086
-:1067800000000008088036322D002F031201002C73
-:1067900082CD2EB200009F08000000800200009011
-:1067A000000000000062013808C06E32000800805E
-:1067B000000000280900373200604B0F000000087D
-:1067C000088036F20000AF08000000800200009050
-:1067D0000000A70880000080C2812FB60000AA0830
-:1067E00000D001E80600009200000000000000F860
-:1067F000C2812F350000AA0804D1018002806EBC3E
-:106800000000000000D601EC26C06E340000AC0889
-:106810008000008092812FB60000AF0800C801E818
-:106820000600009200000000000000F892812F3561
-:106830000000AF0804C9018002806EBC00000000A7
-:1068400000D601EC16C06E34110093071201002C23
-:1068500082CD2EB20000AF08000000800200009040
-:10686000000093079A0100F842812FB50000B80894
-:10687000120100C8020020B200000000005C01EC20
-:106880000640003200009307370000F842812FB421
-:1068900000000000000000F872812F343D009307D3
-:1068A0001201002C82CD2EB20000B608000000803C
-:1068B000020000900000C3081201005C088020B2B2
-:1068C0000000B3081201006002802CB200003610F4
-:1068D00000000080020000900000C008120100C803
-:1068E000020020B200009307370000F8D2812FB4D5
-:1068F00000000000000000F872812F343D00930773
-:106900001201002C82CD2EB20000BE0800000080D3
-:10691000020000900000C3081201005C088020B251
-:106920000000BC081201006002802CB2000036108A
-:1069300000000080020000900000000000000078CD
-:10694000796138320000C4081218024CE2256EB298
-:1069500000000000003402B808806E320000000021
-:1069600000A0015008006E320000000000780160B5
-:1069700008006E320000CA089D11023409006EB290
-:106980000000000000F0018808006E3200006C0F6B
-:1069900000A8010809006EF200000000D4F801E030
-:1069A0000600853200000000DA5C01E806808B32C8
-:1069B0000000DC0EDD000030030038F20000D008DB
-:1069C0002329020409806EB23E00CF081200002C79
-:1069D00082CD2EB20800D3081D1C01E8762081B9B3
-:1069E0000000D3088000008002812FB62A0000003A
-:1069F000D001002C82CD2E320000FA0D0000002CB8
-:106A0000F90100F40000D7089D010080074093B20F
-:106A10000000000000300080078088320000000085
-:106A2000003800800700EE320000000000080080FF
-:106A300007C085320000000000100080074090323F
-:106A40001000000000180080878D853700000000CE
-:106A5000002000800700863200000000002800802F
-:106A6000070085320000DE081201000009C021B2D3
-:106A700018003600000000F8730A03F930003203F2
-:106A80001201005CA28D2CB20000361000000080C4
-:106A9000020000900000000000CC017809806E32F6
-:106AA00000009307DCD101E806809792130093075A
-:106AB0001201002C82CD2EB20000E20800000080FE
-:106AC000020000900000BA0D00000018094081F299
-:106AD0000000A30D00A8012009006EF2000093073A
-:106AE00080010080F2802FB60000EC08120100C87F
-:106AF000020020B2000093078000008072812FB650
-:106B000000000000000000F872812F343D00930760
-:106B10001201002C82CD2EB20000EA080000008095
-:106B2000020000900000C3081201005C088020B23F
-:106B30000000E8081201006002802CB2000036104C
-:106B4000000000800200009000009307350100F86B
-:106B500012812FB500000000000000D80280013231
-:106B600000000000005401FC02C06E3200C0F608B4
-:106B70001801000CA8CD3EB220800000D101000811
-:106B8000088036323B0031031201002C82CD2EB238
-:106B90000000F40800000080020000900000440F94
-:106BA0000098012809006EF20000930700000080A1
-:106BB000020000900000FE0880010080A2812FB634
-:106BC0000000FE088000008042812FB60000FE0811
-:106BD000085B01EC06FB6EBC00000000005A01ECF3
-:106BE000060000320000FE08370000F842812FB492
-:106BF0003D000000D701002C82CD2E320000040998
-:106C00008001008092812FB600000A0908C901E8BE
-:106C100006BB6EBC0000000000C801E806000032A0
-:106C2000330001091200002C82CD2EB20000510F5A
-:106C300000000028098001F2000093070000008096
-:106C40000200009000000A0980010080C2812FB676
-:106C500000000A0908D101E806BB6EBC0000000074
-:106C600000D001E806000032330007091200002CB2
-:106C700082CD2EB20000510F0000002809C001F2A1
-:106C800000009307000000800200009000009307BE
-:106C900080010080F2812FB6180093070000002CBD
-:106CA00082CD2E9200000F09120000C8020020B20F
-:106CB000000012091201005C088020B200003610AA
-:106CC0001200006002802CB200000000000000F8FA
-:106CD0001F80FF3A000031031201002C72E02EB237
-:106CE0000000100900000080020000900000000079
-:106CF0000000007879613832000013091218024C44
-:106D0000E2256EB200000000003402B808806E3246
-:106D100000000000D4A0015008006E320000000006
-:106D2000DB79016008006E320000550FDD000004C1
-:106D3000080000F21000000000180080878D8537E1
-:106D40000000000000F801E00600853200001C0988
-:106D50001201000009C021B218003600000000F83E
-:106D6000730A03F9300036101200005CA28D2CB2B9
-:106D700000003610040701EC16C06EBC00000000D5
-:106D800000B000E00600003200009307DA5C01E882
-:106D900006808B92000093079F41018052206EBCB9
-:106DA00000002B099F98018052206EBC000000005B
-:106DB000000000D80280013200000000005401FCF5
-:106DC00002C06E3200C029091801000CA8CD3EB2E5
-:106DD0002080930731000008088036B200000000D0
-:106DE000000000F812812F343B0093071201002CA1
-:106DF00082CD2EB200002709000000800200009022
-:106E00000000440F0098012809006EF2000093076B
-:106E1000000000800200009000009307D54101E0CF
-:106E2000064081920000930704B0008002006EBC0F
-:106E3000000000000090010008006E3200002510E4
-:106E40000078016008006EF20000930700000080E7
-:106E50000200009000000000000C027809806E32F1
-:106E60000000330904D4018012C06EBC0000000091
-:106E7000000000781980973700000000009001E0C2
-:106E8000E6256E3A0000251000000080020000F0A8
-:106E90000000370900000080020000900000930706
-:106EA000009001E00600809200000000009001E0E8
-:106EB00006008032000003080000008002000090FD
-:106EC0000000A30D00A8012009006EF20000E708F1
-:106ED00080000080F2802FB6000093070000008041
-:106EE0000200009000000000000000D80280013283
-:106EF000000000000000007809006E320200410925
-:106F000004B9008082CD6EBC00004309800000807F
-:106F10007280FCB600004509000000FC02000092EF
-:106F200000004309800000808280FCB60000450913
-:106F3000000000FC0200009200000000000000A819
-:106F400042BD973000000000541889FCF2C07C302C
-:106F500000C04B091801000CA8CD3EB20000000093
-:106F6000000E01EC0600003400000000005401ECAB
-:106F700006C02F3220800000000000080880363252
-:106F8000000031031201002C82CD2EB2000049090D
-:106F90000000008002000090000000000062013844
-:106FA00008C06E3200080080000000280900373257
-:106FB00000004B0F00000008E80100F4000036104C
-:106FC000040701EC16C06EBC00000000000000A821
-:106FD000A2002D370A0000000000007809003632B8
-:106FE00000000000001889E007000032000051098D
-:106FF00004010078198097BC02005C0904B9008084
-:1070000082CD6EBC00000048D6010078C9CD2C327C
-:1070100000005509B6000080020000B000005609CB
-:1070200012000064028097B2000057091208006441
-:1070300002006EB2000058091218006402006EB21D
-:10704000000059091210006402006EB20000000036
-:10705000A65401EC06C02F3200008C07000E01EC94
-:10706000060000940020004CD6010078C9CD2C32D7
-:1070700000005D09B6000080020000B000005E095B
-:1070800012000064028097B200005F0912080064D9
-:1070900002006EB2000060091230006402006EB29D
-:1070A000000061091238006402006EB2000062093B
-:1070B0001240006402006EB20000630912480064CE
-:1070C00002006EB2000064091210006402006EB289
-:1070D000000065091218006402006EB20000660923
-:1070E0001220006402006EB20000670912280064DA
-:1070F00002006EB200000000A65401EC06C02F3260
-:1071000003008C07000E01EC060036920000000020
-:10711000000000FC0200013200006D0900000014B4
-:1071200008803D9200000000000000FC02000132D7
-:1071300000007009040000DC53603DB3180000003B
-:10714000000000F8738A03396C093600000000C0A3
-:107150000200369200000000005401FC02C06E32B2
-:1071600000000000000000D80280013200C0760953
-:107170001801000CA8CD3EB22080000000000008DD
-:107180000880363215002F031201002C82CD2EB25A
-:107190000000740900000080020000900000000060
-:1071A000002800000700003200000000003000004E
-:1071B00007C02C3200100082003800000700373270
-:1071C000000079091200004802C080B200008C075C
-:1071D000CA010008E80100942D007B091200002C70
-:1071E00082CD2EB200007E091D010080020000B099
-:1071F00000008C07000000F862812F95000000005D
-:10720000000000F802812F342A008C071201002CA4
-:1072100082CD2EB200007F090000008002000090A5
-:1072200000003F0F0000002C09C085D20000DC0EDA
-:1072300000000030030038F200003103230100F8A1
-:1072400022812FB43E0031031201002C82CD2EB2D8
-:1072500000008409000000800200009000003F0F41
-:107260000000002C09C085D200003103000000F8A6
-:1072700022812F9400008D09380100D8028001B2CC
-:1072800000008B091E000080020000B000008D0984
-:107290001A010080020000B000008C0F000000689E
-:1072A0001F80F6FA00003103000000800200009009
-:1072B0000000910912010060084023B20082000022
-:1072C000000000080880363200008C0F00000064C7
-:1072D0001F40F6FA00003103000000800200009019
-:1072E0000000361012000024080023B200003610FF
-:1072F0001200002008C023B200003610120000184F
-:10730000088023B200C09C091801000CA8CD3EB231
-:107310000000940912000038028081B2000036108B
-:107320001200003C020082B2000036101200003051
-:10733000024082B20000361012000034020086B211
-:1073400020800000000000080880363200008C0F0A
-:107350000000005C1FC0F5FA00003103000000804F
-:107360000200009000000000450000D8020000323A
-:107370000000000000000000074080320000000014
-:1073800000100000074082320000000000180000DA
-:10739000070086320000A00912000050F2C138B484
-:1073A0000000640D003001E016206EFA0000A5090F
-:1073B0003801002CF8010BB40000A509020D028071
-:1073C000A25B80BC000000000000002CC8C1823419
-:1073D0000000A7098000008042812FB60000940DB4
-:1073E00000000080020000F00000AD0D00A801E0E8
-:1073F00016206EFC0000AC09270100D8028001B203
-:1074000000000000C700002CE8C08234000000002B
-:1074100000000008D801003400000000D54001E061
-:10742000060087320800990F001801E8762081F9DC
-:107430000000DC0E00000030030038F20000B0094C
-:1074400023190000078081B23E00AF091200002C12
-:1074500082CD2EB20000B2091D210000070082B2C9
-:107460000000B409000000F862812F950000B40903
-:107470008000008002812FB62A000000D001002C7D
-:1074800082CD2E320000FA0D0000002CF90100F42C
-:107490001000B8092C30000017E02CB90000BA0920
-:1074A0008E39000007C082B20000BA09000800004F
-:1074B000070087920000BA098E390000B7C182B474
-:1074C0000000000000080000070087320000BC092F
-:1074D000120100E802C021B218003600000000F8D6
-:1074E000730A03F90000BA099F010014184081BC17
-:1074F0000000BF090400008002C085BC00003610F7
-:107500001200006802C585B00000BF0912000048E3
-:1075100002C080B200003203CA010008E8818094F2
-:107520000000C3091E000080020000B00000C50971
-:107530001A010080020000B000008C0F00000068FB
-:107540001F80F6FA00003103000000800200009066
-:10755000000036109FA801E016206EBC0000640DEC
-:1075600000000014080000F20000C909800000803B
-:1075700042812FB60000940D00000080020000F050
-:107580000000AD0D00000080020000F000008E073A
-:1075900004000080024081BC0000CD09120100E817
-:1075A00002C021B218003600000000F8730A03F987
-:1075B00000008E071201006802C585B00000361079
-:1075C000000000800200009000008C078000008016
-:1075D000F2C185B60000D3091C41028006C085B205
-:1075E000000000000000006802C5853000000000B7
-:1075F000000000701F00F73A00008C07000000F840
-:1076000022812F9400008C0780000080F2C185B693
-:1076100000003F0F0000002C09C085D2000031039C
-:10762000D20100941E40E99A0000C40F0020001807
-:1076300008006EF20000DB091F000080020000B0AD
-:107640000000D8099E400278094068B20000361058
-:1076500000000080020000900000DF09800100802F
-:1076600082812FB600008E072A3101E0060000B2A9
-:1076700018000000CA0000F8730A03398E073600AC
-:10768000000000C00200369200008E0780010080DA
-:10769000A2802FB618000000CA0000F8730A033950
-:1076A0008E073600000000C0020036920D00E5098A
-:1076B00000000058080036920000E509000000585C
-:1076C000080000921B00000000000058080036323D
-:1076D0000000C40F0020001808006EF20000000037
-:1076E0000030002808006E3200000000545401FCF5
-:1076F00002C06E320000300A380000A4088082B256
-:107700000000300A0428010408006EB200003610A0
-:107710009F500104A85B80BC00000000005001E8FD
-:10772000060000320000110A0801007819A082BC8E
-:1077300000000000002801E0A660803C0000F00985
-:107740002A010014080000B200000000CA00001462
-:107750001840813A0000A30D00A80120A9206EFA6C
-:1077600000000000002001E0A6206E3C00000000A8
-:10777000003000E0060000320000000000A801E038
-:107780000600923200000000000000D802800132A2
-:1077900000C0030A1801000CA8CD3EB20000FA098F
-:1077A00004000080024081BC0000000000000014C2
-:1077B0000800003218000000000000F8730A0339C6
-:1077C000F4093600000000C002003692208000005C
-:1077D00000000028098036320000F10E000000D8B9
-:1077E000020000D20000FE0904000080028092BC6A
-:1077F00018003600000000F8730A03F900000000CA
-:10780000000000D80280013200C0030A1801000CF9
-:10781000A8CD3EB218000000000000F8738A0339BA
-:10782000FE090000000000C00200363200003600F1
-:10783000000000800200009000000000DE00000850
-:10784000E801003400000000DF00013808C06E329B
-:1078500000000000001000000700003200000000DF
-:107860000018000007808232000000000030000095
-:1078700007C02C320020008000380000070037329B
-:1078800000000000CA3D000C0780833200000000A9
-:10789000000000141840813A00000F0A040201ECB5
-:1078A00016C06EBC00000000C00100141840813AF0
-:1078B00000000000000000F892802F3400C00E0A83
-:1078C00012000040A28D39B20000690A120100487E
-:1078D00002C080B200000F0A000000800200009089
-:1078E000000000000000002808809732000000001F
-:1078F000000000A408808232000000000010006C2C
-:1079000018206E3A000000000018004C08006E328B
-:107910000000A30D00A8012019206EFA000000004D
-:10792000002001E016206E3C0000000000A801E0ED
-:107930000600923200001B0A003801E006408092E7
-:10794000000000000060006C18206E3A000000008B
-:107950000068004C08006E3200001D0A9F01000400
-:10796000686080BC0000240A000000181820009CF9
-:1079700000001F0A120100E802C021B21800360000
-:10798000000000F8730A03F900000000CA70001834
-:1079900008006E320000190A02010080626080BC9B
-:1079A00000000000CA0100F802802F3500A01B0A69
-:1079B00012010040A28D39B20000220A00000080AE
-:1079C000020000900000280A80000080A2802FB6EC
-:1079D00000002B0A04000080A2A081BC000000006F
-:1079E000CA0100F802802F3500A0270A12000040CB
-:1079F000A28D39B200000000000000F8A2802F35EF
-:107A000000002B0A120100E802C021B21800360063
-:107A1000000000F8730A03F900000000002801E0EC
-:107A20000600003200000000003000E006808232D4
-:107A300000000000002000E00680813200003610C7
-:107A4000041000E006C086B20000320A001800E010
-:107A500006C08492000036100410006C08006EB25C
-:107A6000000000000018004C08006E320000E00D1D
-:107A7000510000D8020000F20000350A0050013C1D
-:107A8000A85B809C00008E07003001E00600009299
-:107A900000003A0A3E510100A81B80BA0000000015
-:107AA000DE0000F8F2812F3400000000005801ECE5
-:107AB00006C0EE3200003A0A80010080328087B6AC
-:107AC00000000000000000F8E2802F340000730E78
-:107AD000603001E0060000F200008E070000008028
-:107AE00002000090000000000000001408000032B6
-:107AF0000000430A040201EC16C06EBC0000000046
-:107B0000C90100141840813A00000000C00101388A
-:107B100008C06E3200000000DF0000A4A8608A3CAC
-:107B200000C0460A12010040A28D39B20000410A8D
-:107B3000000000800200009000000000003000E023
-:107B40000600003200000000DF0000A4A8608A3CAC
-:107B5000000000000000013808C06E320000000084
-:107B6000DEA8012099226E3A0000490A2F2001E088
-:107B700096226EBC0000A30D00000080020000F001
-:107B800000004D0A1F5001E8060000B200004C0A38
-:107B90000400008002C083BC00004D0A005001E8D0
-:107BA000F660809C0800000000400268129AFE38CF
-:107BB0000000510A2AA901E0060092B2180036001E
-:107BC000CA0000F8730A03F91D00510A040000807E
-:107BD00002A417B800004E0A000000141840819C4F
-:107BE0000000DC0E00000030030038F20000540AF0
-:107BF0008001008032802FB63E00530A1200002C14
-:107C000082CD2EB200000000000000D802800132B8
-:107C100000C0650A1801000CA8CD3EB2208000000B
-:107C2000C3000028098036320000F10E000000D8A1
-:107C3000020000D200005A0A04000080028092BCB8
-:107C400000000000000000141840813A00005F0AA4
-:107C500004000080024081BC18003600000000F8DB
-:107C6000730A03F90000630A04000014184081BC81
-:107C700000005B0A1200000009C021B200005C0A8B
-:107C8000000000800200009018003600000000F89C
-:107C9000738A03F90000DC0E00000030030038F2A4
-:107CA0000000630A8001008032802FB63E00620A25
-:107CB0001200002C82CD2EB200000000C30000D8BC
-:107CC0000280013200C05F0A1800000CA8CD3EB24D
-:107CD0000020008000000028090037320000B10FAA
-:107CE00000000008E80100F40000670A12000048E4
-:107CF00002C080B200000000000000141840813A69
-:107D000018003600CA0000F8730A03F90000690A77
-:107D100004010014184081BC0000990F000000808D
-:107D2000020000F000006F0A8001008092802FB6F0
-:107D30002B00720A1201002C82CD2EB200006D0AB7
-:107D400000000080020000900000720A1D00008008
-:107D5000020000B00000720A8000008002812FB68D
-:107D60002A000000D001002C82CD2E3200008C07AA
-:107D700004000080028085BC0000AA0F0000008083
-:107D8000020000F000007D050000001C08808592C4
-:107D900000000000CE0100D80280013200C07A0A43
-:107DA0001801000CA8CD3EB22080000000000008A1
-:107DB0000880363200008C0F0000005C1FC0F5FA0E
-:107DC000000031030000008002000090000000006D
-:107DD000600000D80200003200007F0A3F00003C33
-:107DE000084080B200007F0A80010080E2812FB647
-:107DF00000000000DE0000F8F2812F3400000000D7
-:107E0000005801EC06C0EE32000000004D000000FA
-:107E100067E0833E00000000000800000700803299
-:107E2000000000000010000007C0863200000000C3
-:107E30000018000007C084320000BE0A04000028B9
-:107E4000D8A082BC0000000000000018D8A0813C2F
-:107E500000009C0A0400003CD8E083BC0000890AB2
-:107E60000400008072802DBC0000870A12000050C0
-:107E700002C038B200009A0A510000D812802D9A30
-:107E80000000890A12000050F2C138B40000950ABF
-:107E9000280000D8020000B20000920A8001008091
-:107EA000F2C185B600008F0A1F400284E60100B4CB
-:107EB0000000920A1D0100F822812FB40000920AEE
-:107EC000000000F862812F950000910A1D010080DA
-:107ED000020000B000000000000000F862812F35B1
-:107EE0000000000000400280024068320000940A56
-:107EF000343000E016206EBC0000940D00000080BD
-:107F0000020000F00000AE0DDA5B01EC0640EDF27D
-:107F100018003600000000F8730A03F90000990AFF
-:107F20000400008072802DBC0000950A670000F8F4
-:107F3000A2802FB500003610120000E802C021B266
-:107F400000000000510000D8020000320000E80DDF
-:107F500000000000D82080FA0000800A4D000000D8
-:107F600067E0839E00009C0A12000050F2C138B402
-:107F70000000A80A28000080084000B20000A50AFE
-:107F800080010080F2C185B60000A20A1F40028471
-:107F9000E60100B40000A50A1D0100F822812FB4FB
-:107FA0000000A50A000000F862812F950000A40AD5
-:107FB0001D010080020000B000000000000000F879
-:107FC00062812F35000000000040028002406832CC
-:107FD0000000A70A343000E016206EBC0000940DAB
-:107FE00000000080020000F00000AE0DDA5B01EC42
-:107FF0000640EDF20000BF0A80000080E2802FB64C
-:108000000000AC0A042100E0068081B20000E80D07
-:1080100000000034080000F200000000002000E032
-:10802000068081320000B10A2A1100E0D6E086BA4B
-:1080300018003600CA0000F8730A03F91D00B10ADF
-:108040000401008002A417B80000AD0A9F0100805F
-:10805000180088BC0000361000000080020000906C
-:108060000000990F00000080020000F00000DC0E0C
-:1080700000000030030038F20800B50A231901E8B7
-:10808000762081B93E00B40A1200002C82CD2EB2B7
-:108090000000B80A1D1800E006C084B20000B80A4B
-:1080A0008000008002812FB62A000000D001002C41
-:1080B00082CD2E320000FA0D0000002CF90100F4F0
-:1080C0000000BC0A04000080020088BC0000BC0A5A
-:1080D0001201000009C021B218003600000000F8AB
-:1080E000730A03F9000032031201006802C585B06B
-:1080F0000000361000000080020000900000BE0A60
-:1081000012000050F2C138B400000000C001013874
-:1081100008C06E320000C30A040201EC16C06EBC37
-:1081200000C0C10A12000040A28D39B20000C40A8A
-:10813000C90100140800009200000000453000E072
-:10814000060000320000CF0A28000008E80100B451
-:108150000000CC0A80010080F2C185B60000C90A87
-:108160001F400284E60100B40000CC0A1D0100F8A3
-:1081700022812FB40000CC0A000000F862812F9504
-:108180000000CB0A1D010080020000B000000000CA
-:10819000000000F862812F350000000000400280DE
-:1081A000024068320000CE0A8000008042812FB673
-:1081B0000000940D00000080020000F00000AE0DF1
-:1081C000DA5B01EC0640EDF200200080DF000028C1
-:1081D000090037320000B10FDE0000D8028001F242
-:1081E0000800990F001801E8762081F90000DC0EE4
-:1081F00000000030030038F20000D50A8001008042
-:1082000032802FB63E00D40A1200002C82CD2EB24E
-:108210000000D90A290801E406C02DB20000DE0AD8
-:108220001D000080020000B00000DE0A8000008017
-:1082300002812FB62A00DE0AD001002C82CD2E92B8
-:108240000000DB0A1201000009C021B2180036004C
-:10825000000000F8730A03F91D00DD0A0401008024
-:1082600002A417B80000DA0A000000141840819C2C
-:108270002B00DD0A1200002C82CD2EB20000FB0D77
-:108280000000002CF90100F40000E10A0401008064
-:10829000024081BC18003600000000F8730A03F9A0
-:1082A0000000E10A1200004802C080B20000320360
-:1082B0001201006802C585B00000E20A00000080DB
-:1082C0000200009000000000000000D8028001328F
-:1082D00000C0E90A1801000CA8CD3EB220800000C1
-:1082E000000000080880363200008C0F0000005C9F
-:1082F0001FC0F5FA0000310300000080020000906A
-:1083000000C00000000000F8A28D2F310000000026
-:10831000000000D802000032000000000000000051
-:108320000780813200000000000800000700803252
-:10833000000000000010000007C0863200000000AE
-:108340000018000007C084320000EF0A120000503D
-:10835000F2C138B40000F50A8000008082802FB698
-:108360000000000000000068A860803C00000000E1
-:108370000000003C084080320000AD0D0000000409
-:10838000088082F20000F60A1201000009C021B242
-:1083900018003600000000F8730A03F91D00F80AFF
-:1083A0000400008002A417B80000F50A000000F8DD
-:1083B000A2802F9500000000000000006820803A95
-:1083C0000000FC0A0400002868A082BC0000E80D40
-:1083D00000000080020000F00000EB0A000000D85E
-:1083E0000200009200000000000000D8028001326C
-:1083F0000020008000000028090037320000AD0F87
-:1084000000000008E80100F418003600CA0000F877
-:10841000730A03F90000060B040201EC16C06EBCDF
-:1084200000000000C00100F892802F3400C0040B4F
-:1084300012010040A28D39B20000020B0000008042
-:10844000020000902B00060B1201002C82CD2EB2F0
-:108450000000040B000000800200009000000000FB
-:10846000000000D8028001320000090B12010060F8
-:10847000084023B20082120B00000008A88D8092F1
-:108480000000361012000024080023B2000036104D
-:108490001200002008C023B200003610120000189D
-:1084A000088023B200C0210B1801000CA8CD3EB2F9
-:1084B00000000C0B12000038028081B20000361060
-:1084C0001200003C020082B20000361012000030A0
-:1084D000024082B20000361012000034020086B260
-:1084E0002080000000000008A88D80320000190BD9
-:1084F00080010080F2C185B60000160B1F40028487
-:10850000E60100B40000190B1D0100F822812FB410
-:108510000000190B000000F862812F950000180B75
-:108520001D010080020000B000000000000000F803
-:1085300062812F3500000000004002800240683256
-:10854000000036101200006802C585B000001C0B48
-:108550003400005C1FC0F5BA0000940D00000080DC
-:10856000020000F000001E0B8000008092802FB6F9
-:1085700000008E07003000E00600009200008E0729
-:10858000120100E802C021B218000000000000F84B
-:10859000730A03398E073600000000C002003692CD
-:1085A00000000000450000D802400032000000003A
-:1085B0004100000007808632000000000008000033
-:1085C00007008032000000000010000007408232E7
-:1085D0000000000000180000070086320000260B93
-:1085E00012000050F2C138B4000000000000007812
-:1085F000388087350000000000A001E016206E3AA8
-:10860000000000000000007809C58530000000006F
-:1086100000A801E016206E3C08000000D20100789E
-:10862000E9E58339180036101F410284E6A197B9A5
-:108630000000300B365101E816E083BC0000300B1F
-:108640001D010080020000B000000000000000F8E2
-:1086500062812F350000320B382101E0064080B2E4
-:1086600000000000003001E0064080320000000001
-:10867000000000D8028001320000350B34180000E1
-:10868000078081B20000940D00000080020000F01D
-:108690001000990F0030000017E02CF90010008046
-:1086A00000380000070037320000DC0E0000003008
-:1086B000030038F200003A0B8001008032802FB6B0
-:1086C0003E00390B1200002C82CD2EB200003F0B71
-:1086D00029210000070082B200003D0B12010000BA
-:1086E00009C021B218003600000000F8730A03F92F
-:1086F0001D00420B0401008002A417B800003B0BD0
-:1087000000000014080000920000420B1D3000E041
-:10871000060000B20000420B8000008002812FB6EC
-:108720002A000000D001002C82CD2E320000AA0FBA
-:108730000000002CF90100F40000FA0D000000F820
-:10874000A2802FF40000470B04000080024081BC8F
-:108750000000470B120100E802C021B218003600E9
-:10876000000000F8730A03F9000032031201004808
-:1087700002C080B20000470B0000008002000090A1
-:108780000000500B80010080F2C185B600004D0B47
-:108790001F400284E60100B40000500B1D0100F8E8
-:1087A00022812FB40000500B000000F862812F9549
-:1087B00000004F0B1D010080020000B0000000000F
-:1087C000000000F862812F350000000000400280A8
-:1087D000024068320000520B04000080024086BC58
-:1087E0000000D70F0090010809006EF2000007108A
-:1087F00000000080020000F00000590B330100D897
-:10880000028001B20000590B80010080B20172B6F3
-:108810000000590B9FF0018082DB87BC0000590BE0
-:108820009FF8018022216EBC0000000000E801E0FA
-:108830000600EE320000000000F001E006C08732C2
-:1088400008000000001801E87620813900005F0B65
-:1088500080010080D2802FB600005F0B04B0008042
-:1088600002006EBC00000000CD0000F872812F34C1
-:108870003D005F0B1201002C82CD2EB200005D0B7B
-:1088800000000080020000900000690B270901E44D
-:1088900006C02DB200C0630B1801000CA8CD3EB27B
-:1088A000000036101200006802C585B020808E07D7
-:1088B000000000080880369200000000004001E03F
-:1088C0000640883200000000D508000007408832CA
-:1088D000000000000030000007C02C320040008083
-:1088E000CA390000070037320000670B1200004849
-:1088F00002C080B20060000000000008088036322C
-:1089000000006C0B1D000080020000B000006C0B2A
-:108910008000008002812FB62A000000D001002CC8
-:1089200082CD2E320000FB0D0000002CF90100F476
-:10893000000032031201006802C585B00000361045
-:10894000000000800200009000000000545401FC70
-:1089500002C06E3200000000000000D80280013228
-:1089600000C0750B1801000CA8CD3EB2208000009D
-:108970000000000808803632000031031201002C8C
-:1089800072E02EB20000730B000000800200009025
-:108990000000C40F0020001808006EF2000036101E
-:1089A0001F30002808006EB200000000000000A484
-:1089B00008808232000036100410006C08006EB28D
-:1089C0000000E00D0018004C08006EF200007C0B67
-:1089D0000050013CA85B809C000036100000008025
-:1089E000020000900000000000500100A81B803A27
-:1089F00000000000510000D802000032000000001A
-:108A00004D00000067E0833E000000000008000009
-:108A100007008032000000000010000007C086320E
-:108A2000000000000018000007C084320000A60B00
-:108A300004000028D8A082BC00000000000000183C
-:108A4000D8A0813C0000940B0400003CD8E083BC1B
-:108A50000000880B0400008072802DBC0000860B93
-:108A60001200005002C038B200008E0B510000D836
-:108A700012802D9A0000880B12000050F2C138B409
-:108A800018003600000000F8730A03F900008D0B8F
-:108A90000400008072802DBC0000890B670000F884
-:108AA000A2802FB500003610120000E802C021B2EB
-:108AB00000000000510000D8020000320000920BBC
-:108AC0002A010000D82080BA0000920B1201000099
-:108AD00009C021B218003600000000F8730A03F93B
-:108AE00000000000000000D8024084320000F00DB9
-:108AF0000060006C08006EF200007F0B4D0000006B
-:108B000067E0839E0000940B12000050F2C138B45D
-:108B100018003600000000F8730A03F91D00990BD5
-:108B20000400008002A417B80000950B670000F84D
-:108B3000A2802FB5000036101200000009C021B23B
-:108B40000800361012400268129AFEB80000DC0ECF
-:108B500000000030030038F2000036101F00006CE7
-:108B6000D8E086BA0000E00D510000D8020000F203
-:108B700000009F0B0000003C08408092000036106F
-:108B8000000000800200009000007E0B04010080C5
-:108B9000028081BC0000A40B80010080A2802FB65F
-:108BA0000000A40B1201000009C021B21800360019
-:108BB000000000F8730A03F900000000000000D86C
-:108BC000024084320000F00D0060006C08006EF27C
-:108BD00000007F0B4D00000067E0839E0000000056
-:108BE000C001013808C06E3200000000453000E0CE
-:108BF000060000320000A80B12000050F2C138B489
-:108C00000000AD0B040201EC16C06EBC00000000B9
-:108C1000C90100141840813A00C0AD0B1201004098
-:108C2000A28D39B20000AB0B000000800200009062
-:108C300000C00000000000F8A28D2F3100000000ED
-:108C400000A8012099226E3A0000B10B2F2001E00C
-:108C500096226EBC0000A30D00000080020000F010
-:108C60000000B50B0400003CD8E083BC0000B40B4E
-:108C70009F3101E096226EBC00000000003001E050
-:108C8000060000320000B90B005001E8F660809C3D
-:108C90000800000000400268129AFE380000B80B7D
-:108CA0009F3101E096226EBC00000000003001E020
-:108CB0000600003200000000005001E8060000320B
-:108CC0000000000000A801E0060092321800360003
-:108CD000000000F8730A03F91D00BD0B04000080BA
-:108CE00002A417B80000BA0B000000141840819CC1
-:108CF00000000000000000D8028001320020008047
-:108D000000000028090037320000B10F0000000801
-:108D1000E80100F40000C00B1200004802C080B25D
-:108D20000000DC0E00000030030038F20000C40B2D
-:108D300023010014184081BA3E00C30B1200002C1E
-:108D400082CD2EB218003600CA0000F8730A03F96B
-:108D50000000C40B04010014184081BC0000990FEE
-:108D600000000080020000F00000CA0B2931010C55
-:108D700009006EB22B008C071201002C82CD2EB29E
-:108D80000000C80B000000800200009000009C0D55
-:108D9000000C020009806EF20000D30B000000807E
-:108DA000020000900000AA0F00000080020000F006
-:108DB000000000000000001C080090320000D20BF0
-:108DC00004000028098080B20000F10E000000D8E5
-:108DD000020000D20000D20B04000080028092BC8E
-:108DE00018003600000000F8730A03F900007D0542
-:108DF000000000080800009200008C071D000080A1
-:108E0000020000B000008C078000008002812FB6B5
-:108E10002A00D50B1200002C82CD2EB200008C0748
-:108E2000000000F802812F940000BA0D0000001825
-:108E3000094081F20000A30D00A8012009006EF294
-:108E4000000000000030010C09006E3200009C0D93
-:108E5000000C020009806EF200008E070000008006
-:108E6000020000900000990F00000080020000F056
-:108E70000000AA0F00000080020000F000007D0545
-:108E80000000001C0800909200000000545401FCF7
-:108E900002C06E3210000000000000A8780B1638E7
-:108EA00008000000000000AC780B1638000000003D
-:108EB000000000B0A8002D3700440000000000B002
-:108EC000880D8B3A00000000005001B408806E321B
-:108ED0000000ED0B0431019008006EB202000000AA
-:108EE000000000C8828D8A3700000000000000C822
-:108EF000C2A22C3A1800EB0B86410278880D78B696
-:108F00000000E60B9F0100A818808ABC9F00E60BBA
-:108F1000000000A808003692000000000040020493
-:108F2000B83F78300000FB0B00000004D862809C42
-:108F300002000000000000C8828D8A370000000097
-:108F4000000000C8C2A22C3A1800F20B8641027839
-:108F5000880D78B60000ED0B9F0100A818808ABC30
-:108F60009F00ED0B000000A8080036920000F40BF3
-:108F700028400204B83F78B000000000C801000497
-:108F8000D862803C0000F80B02010090182089BCD8
-:108F900000000000000000B4080000320000ED0BEB
-:108FA0009F0100A818808ABC9F00ED0B000000A85C
-:108FB000080036920000FB0B04000090182089BACC
-:108FC000000036109F000004486280BC000036108C
-:108FD000900000B448628BBA0300361004400200CF
-:108FE000081EFFB80000030C00000000D822809A81
-:108FF0000000280C04000080A2E28ABC02000000ED
-:10900000000000C8828D8A3700000000000000C800
-:10901000C2A22C3A1800260C86400278880D78B639
-:109020000000361004400204B83F78B00300361048
-:1090300004400200081EFFB80000070C1201006087
-:10904000084023B200820000000000080880363289
-:10905000000031031201002C72E02EB20000050C5A
-:109060000000008002000090000036101200002472
-:10907000080023B2000036101200002008C023B2FE
-:109080000000361012000018088023B20000000013
-:10909000000000D80280013200C0110C1801000C41
-:1090A000A8CD3EB200000B0C12000038028081B245
-:1090B000000036101200003C020082B200003610A0
-:1090C00012000030024082B200003610120000345C
-:1090D000020086B22080050C00000008088036924D
-:1090E00000000000000000D8020000320000000074
-:1090F00000380200B81B803A00000000643001E034
-:1091000016206E3A00000000000000000740803288
-:10911000000000000008000007008032000000008E
-:10912000001000000740823200000000001800001C
-:10913000070086320000180C12000050F2C138B44B
-:1091400000000000000000D8028001320000000092
-:10915000001800000780813200000000002000009D
-:1091600007008232100000000030000017E02C39A8
-:109170000000000000380000F7010B340000200C54
-:1091800080010080328087B60000000000380000B7
-:10919000B70170340000000000000008E80100344E
-:1091A00000002F0C020C0280A21B89BC18003600A4
-:1091B000000000F8730A03F90000DC0E0000003024
-:1091C000030038F20000240C1200004802C080B2F4
-:1091D00018003600000000F8730A03F90000FD0BC8
-:1091E0009F0100A818808ABC9F00FD0B000000A80A
-:1091F0000800369200002A0C8001008032802FB6D1
-:109200003E00290C1200002C82CD2EB200002C0C46
-:109210001D010080020000B000008C07000000F873
-:1092200062812F9500008C078000008002812FB69C
-:109230002A002D0C1200002C82CD2EB200008C07CB
-:10924000000000F802812F940000000000380000A8
-:10925000C70170340000DC0E00000030030038F25B
-:109260000800330C231901E8762081B93E00320C46
-:109270001200002C82CD2EB20000350C1D010080A2
-:10928000020000B00000380C000000F862812F9549
-:109290000000380C8000008002812FB62A00360CB6
-:1092A0001200002C82CD2EB200000000000000F859
-:1092B00002812F340000FA0D0000002CF90100F4A7
-:1092C00000003B0C120100E802C021B21800360079
-:1092D000000000F8730A03F900003B0C120000487C
-:1092E00002C080B200003203000000F8A2802F9478
-:1092F00000000000000000D80280013200000000E1
-:109300000030002808006E3200000000545401FCB8
-:1093100002C06E3200C0490C1801000CA8CD3EB24C
-:109320002080000000000028098036320000F10E85
-:10933000000000D8020000D20000460C04000080AB
-:10934000028092BC18000000000000F8730A033984
-:10935000470C3600000000C00200369218003600AC
-:10936000000000F8738A03F900000000000000D834
-:109370000280013200C0460C1800000CA8CD3EB29D
-:109380000020008400000028090037320000AD0FE3
-:1093900000000008E80100F400008C0700000080D5
-:1093A0000200009000000000000000D8028001329E
-:1093B00000000000545401FC02C06E3200C0520C88
-:1093C0001801000CA8CD3EB220800000000000086B
-:1093D0000880363200002F031201002C72E02EB2FA
-:1093E0000000500C00000080020000900000510FAF
-:1093F00000000028090002F200005A0C0000005C86
-:109400000800009200000000000000D80280013235
-:1094100000000000545401FC02C06E3200C05A0C1F
-:109420001801000CA8CD3EB220800000000000080A
-:109430000880363200008C0F0000005C1FC0F5FA77
-:1094400000003103000000800200009000000000D6
-:109450000030002808006E32002000840000002840
-:10946000090037320000AD0F00000008E80100F4E9
-:1094700000005F0C0000008002000090000000006F
-:1094800000000008080000320000650C04000080A5
-:1094900002C085B20000650C80000080F2C185B674
-:1094A0000000640C1C41028006C085B20000000070
-:1094B0000000006802C58530000000000000007058
-:1094C0001F00F73A00000000000000F822812F344E
-:1094D0000000DC0C80010080A2802FB61800000084
-:1094E000000000F8730A0339DC0C3600CA0000C023
-:1094F000020036920000AD0C8001008082812FB600
-:109500000000B20C1F20010809006EB20000AD0C73
-:1095100004300108899B90BC0000710C043101806B
-:1095200002006EBC0000E00D00000080020000F0B0
-:1095300000006F0C0050014808806E920000361049
-:109540000000008002000090000000000000000405
-:109550002861803C0000810C000000002821809AD6
-:109560000000E00D0030014808006EF20000740CAD
-:1095700000500104A85B809C0000361000000080B1
-:10958000020000900000000000500100A81B803A7B
-:1095900000007E0C0700004818A084BC08000000F2
-:1095A00000400200189AFE38000000000000006829
-:1095B000020080320000E00D00000080020000F098
-:1095C00000007B0C000000800200009000003610BC
-:1095D000000000800200009000007E0C07000048A0
-:1095E00018A084BC0800000000400200189AFE3851
-:1095F0000000780C00000068020080920000810CDE
-:109600000400004818A084BA000036109F0000042F
-:10961000286180BC00000000000000002821803A82
-:1096200000000000005401FC02C06E3200008A0CF1
-:1096300012010060084023B200820000D601000839
-:10964000088036320300361004400200381AFFB892
-:109650000300000000000078096080391800000055
-:10966000D241028CE6A1973900000000005001E8C9
-:1096700006808432290031031201002C82CD2EB2E3
-:109680000000880C000000800200009000003610EE
-:1096900012000024080023B200003610120000203F
-:1096A00008C023B20000361012000018088023B250
-:1096B00000000000000000D80280013200C0950CBC
-:1096C0001801000CA8CD3EB220800000D601000891
-:1096D0000880363200008F0C12000038028081B200
-:1096E000000036101200003C020082B2000036106A
-:1096F00012000030024082B20000840C12010034DB
-:10970000020086B2000036100000008002000090C7
-:10971000080000000040025C189AFE3800000000BB
-:10972000000000480800003200000000000000D8DF
-:1097300002000032000000000000000007408032FC
-:109740000000000000080000070080320000000058
-:1097500000100000074082320000000000180000E6
-:109760000700863200009C0C12000050F2C138B491
-:1097700000000000D60100D8028001320000000085
-:109780000018000007808132000000000020000067
-:1097900007008232100000000030000017E02C3972
-:1097A0000000A40C80000080328087B6001000808A
-:1097B00000380000070037320000A50C00000080D0
-:1097C00002000090001000880038000007003732C7
-:1097D00018003600000000F8730A03F900000000CA
-:1097E0000000006802C08532000000000000000890
-:1097F000E80100340000A80C1200004802C080B24A
-:1098000018003600000000F8730A03F90000E00DAC
-:1098100000000080020000F00000810C00000080C9
-:10982000020000900000B20C0000008002000090D6
-:109830000000E00D00000080020000F00000B00C0D
-:1098400000380200B81B809C0000B20C00000080B1
-:1098500002000090050000000000006802A0FE3831
-:109860000000AD0C00400280024068920000000041
-:10987000CA0100D8020000320000B50C04B8018013
-:1098800002006EBC0000000000B801E0861BEE3C48
-:109890004C0000000000000007003632000000000D
-:1098A00000000078A9002D37B44400000008000033
-:1098B000878D973A000000000000007899C02C378F
-:1098C000B400000000000078898D973A000036103F
-:1098D0000210000087BF97BA0000000000180000C7
-:1098E0000740FE320000BC0C12000048F2C138B440
-:1098F0000000BD0CB6000080020000B00020BE0CCD
-:1099000012000064A2CD2CB200000000A60000806E
-:10991000020000300000C20C80010080A2802FB63F
-:1099200018003600CA0000F8730A03F900008C071B
-:10993000005401FC02C06E9200000000005401FCC3
-:1099400002C06E320000C80C12010060084023B251
-:109950000082000000000008088036322900310330
-:109960001201002C82CD2EB20000C60C0000008037
-:10997000020000900000361012000024080023B2FC
-:10998000000036101200002008C023B2000036107C
-:1099900012000018088023B200000000000000D868
-:1099A0000280013200C0D30C1801000CA8CD3EB2D9
-:1099B0002080000000000008088036320000CD0C36
-:1099C00012000038028081B2000036101200003C04
-:1099D000020082B20000361012000030024082B253
-:1099E0000000C60C12010034020086B200003610DE
-:1099F00000000080020000900000E00D0000004820
-:109A0000080000F20800D60C0040025C189AFE988C
-:109A100000003610000000800200009000000000EE
-:109A200000500100A81B803A0000970C000000487D
-:109A30000800009200000000005401FC02C06E32D9
-:109A40000000510F00000028098002F20000BD0C48
-:109A500000000080020000900000510F000000286C
-:109A6000090002F20000DF0C9A0100F862812FB4B5
-:109A700010240000000000F8A28D2F31000000002B
-:109A800000D601EC06C06E342E008C071201002CAB
-:109A900082CD2EB20000DF0C00000080020000909A
-:109AA0000000E80C80010080F2C185B60000E50CE2
-:109AB0001F400284E60100B40000E80C1D0100F81C
-:109AC00022812FB40000E80C000000F862812F957D
-:109AD0000000E70C1D010080020000B00000000043
-:109AE000000000F862812F35000000000040028075
-:109AF000024068320000EA0C04980164881B87BCAD
-:109B00000000D70F0090010809006EF20000071056
-:109B100000000080020000F0000036101200006813
-:109B200002C585B000000000000000F8D2802F358B
-:109B300000008E07370000F8D2812FB4000000002B
-:109B4000000000F872812F343D008E071201002CB6
-:109B500082CD2EB20000EF0C0000008002000090C9
-:109B60000000F80C80010080F2C185B60000F50C01
-:109B70001F400284E60100B40000F80C1D0100F84B
-:109B800022812FB40000F80C000000F862812F95AC
-:109B90000000F70C1D010080020000B00000000072
-:109BA000000000F862812F350000000000400280B4
-:109BB000024068320000000000D401EC16C06E3A8A
-:109BC000000036101200006802C585B000008E0744
-:109BD00004B0008002006EBC37008E071201002C1A
-:109BE00082CD2EB20000FB0C00000080020000902D
-:109BF0000000040D80010080F2C185B60000010D57
-:109C00001F400284E60100B40000040D1D0100F8AD
-:109C100022812FB40000040D000000F862812F950E
-:109C20000000030D1D010080020000B000000000D4
-:109C3000000000F862812F35000000000040028023
-:109C4000024068320000100D000000800200009009
-:109C500000000C0D80010080F2C185B60000090DE6
-:109C60001F400284E60100B400000C0D1D0100F845
-:109C700022812FB400000C0D000000F862812F95A6
-:109C800000000B0D1D010080020000B0000000006C
-:109C9000000000F862812F350000000000400280C3
-:109CA000024068320000100D370000F8D2812FB456
-:109CB00000000000000000F872812F343D00100DFC
-:109CC0001201002C82CD2EB200000E0D000000808B
-:109CD000020000900000000000D401EC06000032F9
-:109CE00000008E071201006802C585B00000361022
-:109CF000000000800200009000008C0780010080BE
-:109D0000F2812FB600008C0780000080E2812FB620
-:109D100000008C07085901EC06FB6EBC0000000037
-:109D2000000000D80280013200000000545401FC01
-:109D300002C06E3200C01D0D1801000CA8CD3EB24D
-:109D400000000000005801EC06FB6E3A2080000085
-:109D5000000000080880363200002F031201002C9A
-:109D600072E02EB200001B0D000000800200009087
-:109D70000000AA0F000000F8E2812FF40000200D7F
-:109D80000603018012C06EBC19007D050000001C96
-:109D9000080036921A007D050000001C080036926B
-:109DA00000C00000000000F8A28D2F31000000006C
-:109DB000000000D802800132002000C0000000280E
-:109DC00009003732000000000030002808006E3221
-:109DD00000000000453000E0060000320000AD0F3A
-:109DE00000000008E80100F400002C0D040201EC62
-:109DF00016C06EBC00000000C90100141840813A72
-:109E000000000000000000F802802F3400C02C0D7C
-:109E100012010040A28D39B200002A0D000000801E
-:109E20000200009018003600CA0000F8730A03F917
-:109E300000002C0D9F010014184081BC00008E070B
-:109E40008001008092802FB62B008E071201002C1B
-:109E500082CD2EB200002F0D000000800200009085
-:109E6000000036101F0100D8028001B2000000007F
-:109E7000005401FC02C06E3200C03C0D1801000C01
-:109E8000A8CD3EB2208000000000002809803632B4
-:109E90000000F10E000000D8020000D20000390DD1
-:109EA00004000080028092BC18000000000000F84E
-:109EB000730A03393A0D3600000000C002003692E2
-:109EC00018003600000000F8738A03F90000000053
-:109ED000000000D80280013200C0390D1800000CCB
-:109EE000A8CD3EB20000AA0F000000D8024000F248
-:109EF00000F0430D1D400200A80D68B100003610AF
-:109F00001E400284060000B20000410D120000282D
-:109F1000020580B008003D0D000000F823400199C3
-:109F200000003D0D12010068020580B000003610EF
-:109F300000000080020000900000430DB50000808A
-:109F4000020000B000000000A50080A0360B6A35BA
-:109F5000000000000000005009C02932000000008D
-:109F60000056012808C06E32000000000000007892
-:109F7000390B2E320000000000000020F3819734DE
-:109F800000004C0D04000078D90130B6000000003C
-:109F900000000000B905303018000000000000F893
-:109FA00003A403390000000000000034330B2F32FB
-:109FB0000000590D04000078D90130B600000000FF
-:109FC00000000078B90530300000520D0400008018
-:109FD00042E529BC00000000000000F80200003249
-:109FE00018000000000000F8738A02390000000029
-:109FF0000000009C028097320000580D25010008E7
-:10A00000080000B20000560D12000028020580B0C2
-:10A010000800580D000000F8234001990000580D79
-:10A0200012010068020580B00000361000000080B8
-:10A030000200009000004C0D000000F402000092AD
-:10A0400000005D0D0400008042E529BC0000000016
-:10A05000000000F80200003218000000000000F8C4
-:10A06000738A0239000000000000009C0200953253
-:10A0700000000000CA0100D8028001320000000088
-:10A080000030000007C02C32001000A00038000093
-:10A090000700373200000000002000000700EE3209
-:10A0A000000000000038000C078082320000620DC2
-:10A0B0001200004802C080B2000032030000000815
-:10A0C000E801009400007A0D02000080A24280BCEA
-:10A0D00000007A0D80000080F2C185B600007A0D84
-:10A0E0001F400208B9BF68B000006C0D80410280BB
-:10A0F000E28168B608000000000000107961803934
-:10A1000000000000D22101E016206E3A1800000085
-:10A1100000400288E6219139000000000001005C47
-:10A1200008000072000000000000000C19A0903A26
-:10A1300000007A0D06010080D2FF90BC0000700D77
-:10A140002C410278F98168B400000000000000781A
-:10A15000B98197340300000000400200291AFF383B
-:10A160000000000000380200B91B903A0000000017
-:10A17000D241028816A0973A00000000450000D89E
-:10A1800002400032000036109F2001E016206EBA17
-:10A1900000000000000000000740803200000000C6
-:10A1A000000800002724903A000000000010000082
-:10A1B00007008A320000000012010058F2C1387412
-:10A1C0000000780D00000080020000900800840D5F
-:10A1D0001A000034796180B900008F0D1E010080E3
-:10A1E000020000B000008F0D1F400200094068B25D
-:10A1F00000007C0D80000080E20190B60000361067
-:10A20000380000541F40F5BA0000000000000008AC
-:10A21000B93F903000000000002801E026246E3A8B
-:10A22000080036101E00000009A4FEB800008F0DC3
-:10A2300012010068020590B0000036100000008096
-:10A240000200009000008F0D8000008082812FB6F8
-:10A2500000008D0D1F410200094068B2000000009F
-:10A26000002801E016206E3A00008A0D800100806F
-:10A27000F2C185B60000000000400284E60100340F
-:10A28000000000000000008002000030000000001C
-:10A29000004002800240683200003610380000544E
-:10A2A0001F40F5BA00000000002101E016206E7A80
-:10A2B0000000850D80000080E20190B600007E0D58
-:10A2C000000000541F40F59A000000000000005CF0
-:10A2D0000800003200000000D22101E016206E3A92
-:10A2E000180000001E410284E661937900003610D8
-:10A2F00000000080020000900000FFFF00000080CE
-:10A30000020000900000970D1D5D01EC16C06EBCB0
-:10A31000000000000F01008002000070000000003B
-:10A32000000100F8B2802F74000000000F010080CF
-:10A33000020000700000960D045E01EC16C06EBCB9
-:10A3400000000000005C01EC06400032000000004C
-:10A3500000010080020000700000FFFF000000808C
-:10A3600002000090000000000420018082DB907C4D
-:10A3700000000000020C0280A2DB907C0000A00D17
-:10A3800006210180821B90BC2700A10D0000000067
-:10A390000900369228000000000000000900363253
-:10A3A000000000000000008812002C3A0000FFFFAF
-:10A3B0000000008002000090000000002FA0017843
-:10A3C000891B927A0000000006880178899B977C9F
-:10A3D000000000000034020409C06E3D00000000CF
-:10A3E000000C020019A46E370000AB0D02000080C3
-:10A3F00002A497BC0000AB0D02000080020000B078
-:10A400000100000000000078898D973700000000EF
-:10A4100002010280829B977C00000000000100F88E
-:10A42000F2802F740000FFFF000000800200009007
-:10A4300000000000DA5B01EC0640ED320000B10DD7
-:10A4400004010080024086BC0000000000A001E082
-:10A4500016206E3A0000B30D00D401EC0600009205
-:10A460000000D70F0090010809006EF20000000004
-:10A4700000A001E016206E3A00000710330100F83A
-:10A4800082802FB4000007109FF0018082DB87BC20
-:10A49000000007109FF8018022216EBC0000000020
-:10A4A00000E801E00600EE320000000000F001E0EC
-:10A4B00006C08732000007100000008002000090F4
-:10A4C0000000FFFF00000080020000900000C50DAA
-:10A4D0000421013069246EBC0000BF0D1F4002241E
-:10A4E000094068B20000BB0D80000080E24192B6D6
-:10A4F0000800BB0D1201006892A4FEB800003610DF
-:10A5000000000080020000900000000000A801E0B0
-:10A5100066246E3A0000C20D382001E0060093B2B6
-:10A520000000C30D002801E00600009200000000BA
-:10A53000003001E00600003200000000005001E899
-:10A5400006000032000000000001008002000070E0
-:10A550000000CA0D38510100A99B91BA0000C80D36
-:10A5600004410208B9FF68B00000C60D0040028037
-:10A57000024068920000D50D9F3101E066246EBC58
-:10A580000000D50D003001E0060000920000D30D60
-:10A590000428010409006EB20000D10D9F010000E3
-:10A5A000192490BC0000000000A801E066246E3A67
-:10A5B00000000000002801E00624003C000000002C
-:10A5C000005001E806000032000036109F2001E034
-:10A5D000060093B20000000000010080020000703D
-:10A5E00000000000002801E0060000320000DB0D42
-:10A5F00004000080020090BC0000D50D0441020858
-:10A60000B9FF68B00000D30D00400280024068929C
-:10A610000000D90D02000080222490BC0000DB0D58
-:10A6200080400280F2C168B6000000000040028C49
-:10A63000B6C168350000DB0D000000F822812F94C0
-:10A640000800361012400268129AFEB80000D30DBE
-:10A6500004010000292490BC0000000000A801E0D3
-:10A6600066246E3A00000000005001E806009032B7
-:10A67000000036109F2001E0060093B200000000A9
-:10A6800000010080020000700000FFFF0000008059
-:10A69000020000901800E20D1F41027888CD68B6D4
-:10A6A000000000000000008812002C3A0000E40DB9
-:10A6B00080010080628087B60000E00D00400280CB
-:10A6C000024068920300361004400200381AFFB8B6
-:10A6D000000036101F400204B8FF68B00000000000
-:10A6E00000390200B81B807A0000FFFF00000080E4
-:10A6F000020000900000EF0D80010080A2802FB6C4
-:10A700000000EC0D1201000009C021B21800360053
-:10A71000000000F8730A03F900000000000000D8F0
-:10A72000024084321D00EF0D0401008002A417B81E
-:10A730000000E90D9F010080180088BC0000361061
-:10A740000000008002000090000000000060006C2B
-:10A7500008006E3200000000CA68004C08006E322B
-:10A76000000036100470001808006EB200000000EF
-:10A7700004000080A2A0817C0000F60D8001008012
-:10A78000E2802FB60000F60D1B000080020000B032
-:10A79000000000000600008062E0837C00000000F2
-:10A7A000CA0100F802802F3500A00000120100400D
-:10A7B000A28D39720000F70D0000008002000090A9
-:10A7C0000000FFFF00000080020000900000000079
-:10A7D000000801E406C02D32EEFF0000001001E089
-:10A7E000868D2F31000000000000001CB3E43932D8
-:10A7F0000000000E04000078D90130B6000000000F
-:10A8000000000078B905303018000000000000F8A2
-:10A81000E3A503390000000000000034330B2F32A1
-:10A820000000000004000078D9013076000000002C
-:10A8300000000078B905303018000000000100F871
-:10A84000E3A503790000FFFF0000008002000090F4
-:10A8500000000000000000CC020000320000080EE2
-:10A860002000012C09C06EB20000090E001686CC33
-:10A8700006C0929200000000001486CC06C09232FE
-:10A880000000000012010040628E92520000090E8A
-:10A8900000000080020000900000FFFF0000008028
-:10A8A0000200009000000E0E04000078D90130B6BE
-:10A8B0000E0E3600000000C00200369200000000BC
-:10A8C000000000140300383200000000000000E027
-:10A8D0000200303200004E0E04000024D80130B6D1
-:10A8E000120E000000000088824D823A00003610EF
-:10A8F0000000008002000090000036100000008080
-:10A90000020000900000361000000080020000905D
-:10A910000000361000000080020000900E0E36008D
-:10A92000000000C0020036920000380E00000080D7
-:10A930000200009000001A0E000000204805309030
-:10A940000000361000000080020000900000260E7B
-:10A95000921101BC08006EB200000000000801DC8A
-:10A9600002406E3200001E0E1F1101E026C18BB5A1
-:10A970000000260E1D000080020000B00000000054
-:10A98000000000D802000032800200000000000039
-:10A99000070036320000000000000078A9002D37C3
-:10A9A0002045000000080000878D973A0A0000004B
-:10A9B00000000078890D82370000000000100000C0
-:10A9C000A7BA973A000000000018000007C0EA325A
-:10A9D0000000250E1200004802C038B200002A0E06
-:10A9E000800E01BC08C06EB2000000000000000034
-:10A9F000190E823200E0320E12010048A20D90B210
-:10AA00000000280E000000800200009000000000FE
-:10AA1000000000D802400032B40000000000000036
-:10AA2000070036320000000000000078A9002D3732
-:10AA30000044000000080000878D973A00000000E5
-:10AA400000000078990082370000361002100000E4
-:10AA500087BF97BA00000000001800000740FE32D0
-:10AA60000000310E12000048F2C138B41800360060
-:10AA7000000000F8730A03F9000000000000000461
-:10AA8000896038320000000000000018F341903463
-:10AA90000000380E04000078D90130B60000000034
-:10AAA00000000000B905303018000000000000F878
-:10AAB00003A40339000000000000000019CE2C326E
-:10AAC0000060390E12000040A20D90B2000000009C
-:10AAD000000000D80200003260000000000000000A
-:10AAE0000700363200000000000000BCA8002D372F
-:10AAF000A04700000008000087CD8B3A0A00000044
-:10AB00000000007889CD2C3780020000000000781A
-:10AB1000898D973A0000000000100000A7BA973A0C
-:10AB2000000000000018000007C0EA320000420EDA
-:10AB300012000040F2C138B418003600000000F8DE
-:10AB4000730A03F900000000000801DC02406E32C5
-:10AB50000A00470E1F01007889CD2CB700000000C5
-:10AB60001D1001F802006E7280020000000000005B
-:10AB700007003632204500000008000087CD8B3AE0
-:10AB80000000000000100000A7BA973A0000000083
-:10AB90000018000007C0EA3200004B0E120000400F
-:10ABA000F2C138B418003600000000F8730A03F947
-:10ABB00000000000001101F802006E7200000000A9
-:10ABC000001001F802006E3200000000000901DCF4
-:10ABD00002406E720000FFFF000000800200009043
-:10ABE0000000000000000000090000320E0000001C
-:10ABF00000000004894D0D36000000000000000038
-:10AC000007800B32000000000008000007009032AF
-:10AC10000000000000100000070036320000560E51
-:10AC20001200004CF2C138B40000000000000080A7
-:10AC3000020000300000570E1200008002C021B256
-:10AC40000000000000000000E902903A0000530EEE
-:10AC500004010004194090BC0000000000010080C5
-:10AC6000020000500000FFFF000000800200009082
-:10AC70000000650E80010080A2802FB60000600EEB
-:10AC8000120100E802C021B218003600000000F8EE
-:10AC9000730A03F90000640E0400008002802DBCDA
-:10ACA000000036109F000080180088BC0000600E75
-:10ACB000120100E802C021B200005F0E0000008017
-:10ACC0000200009000000000CA0000D80240843258
-:10ACD000000000000040006C881C833A0000000067
-:10ACE0000048004C0800723200003610085000186E
-:10ACF000C82072BC00000000040000800240817C7B
-:10AD000000000000000000141840813C00003610D4
-:10AD100002000020880182BA00000000000000D874
-:10AD200002000032000000000000000007000632B0
-:10AD30000700000000080000774A09390000000001
-:10AD4000001000000700823200000000CA19000055
-:10AD5000074082320000700E12000040F2C138B489
-:10AD600000000000000100D8024084720000FFFFD4
-:10AD70000000008002000090000000004D00000074
-:10AD800067E0833E000000000008000007008032FA
-:10AD9000000000000010000007C086320000000024
-:10ADA0000018000007C084320000B70E040000281D
-:10ADB000D8A082BC0000000000000018D8A0813C90
-:10ADC0000000890E0400003CD8E083BC00007D0E2A
-:10ADD0000400008072802DBC00007B0E1200005029
-:10ADE00002C038B20000830E510000D812802D9AA4
-:10ADF00000007D0E12000050F2C138B41800360079
-:10AE0000000000F8730A03F90000820E04000080BD
-:10AE100072802DBC00007E0E670000F8A2802FB566
-:10AE200000003610120000E802C021B2000000004D
-:10AE3000510000D8020000320000870E2A010000F5
-:10AE4000D82080BA0000870E1201000009C021B28C
-:10AE500018003600000000F8730A03F90000000033
-:10AE6000000000D8024084320000F00D0060006C49
-:10AE700008006EF20000740E4D00000067E0839E33
-:10AE80000000890E12000050F2C138B418003600DC
-:10AE9000000000F8730A03F91D008E0E0400008004
-:10AEA00002A417B800008A0E670000F8A2802FB530
-:10AEB000000036101200000009C021B20800361050
-:10AEC00012400268129AFEB80000DC0E000000304A
-:10AED000030038F200009F0E1F00006CD8E086BA15
-:10AEE0000000E00D510000D8020000F20000940EB6
-:10AEF0000000003C0840809200009F0E000000808F
-:10AF0000020000900000980E80010080F2812FB6B0
-:10AF10000000980E80000080E2802FB60000980E9E
-:10AF200080010080328087B600000000000000F839
-:10AF3000E2802F340000730E04010080028081BC87
-:10AF400000009D0E80010080A2802FB600009D0EA3
-:10AF50001201000009C021B218003600000000F8FC
-:10AF6000730A03F900000000000000D80240843298
-:10AF70000000F00D0060006C08006EF20000740E1E
-:10AF80004D00000067E0839E0000A30E800100805A
-:10AF9000E2802FB60000BA0E80010080A2802FB69A
-:10AFA00018000000CA0000F8730A0339BA0E360010
-:10AFB000000000C00200369200000000000000A463
-:10AFC000A8608A3C0000A60E2FA8012099226EBA24
-:10AFD0000000A30D00000080020000F0000000004F
-:10AFE00000A801E00600923200000000005001E8D5
-:10AFF000060000320000AA0E232101E0060000B284
-:10B000003E00A90E1200002C82CD2EB20000361098
-:10B01000043000E0068082B20000B20E042100E09D
-:10B02000068081B20000B00E80010080A2802FB6A1
-:10B030000000B00E1201000009C021B21800360055
-:10B04000000000F8730A03F900000000000000D8B7
-:10B05000024084320000F00D0060006C08006EF2C7
-:10B0600000000000002000E0068081320000361061
-:10B07000041000E006C086B2000000002A1900E0BB
-:10B0800006C0847200000000000000F8A2802F3586
-:10B09000000000001201000009C0217218003600F3
-:10B0A000000000F8730A0399000000000000003C53
-:10B0B000D8E0833C0000B80E12000050F2C138B452
-:10B0C00000000000000000F8A2802F340000000003
-:10B0D0000000008812002C3A0000FFFF00000080F2
-:10B0E0000200009000000000000000000900003293
-:10B0F000000000000000007809000032000000009D
-:10B10000000000A802000032EE05C20E040100801B
-:10B11000820DF6BC0006000000000008090036326F
-:10B120000000C40E0000000409C0099200280000BD
-:10B130000000000809003632000000000000000492
-:10B14000098009321E000000000060C087CD003772
-:10B1500000000000000860C0078097320030000047
-:10B1600000000078898D2A3A000036101200005C39
-:10B17000528197B400000000000000002924903A9A
-:10B180000800000000000078890D903600000000E3
-:10B19000000000041940903C00000000000000A8DE
-:10B1A00052822A3A0008C40E02010080828D2ABC15
-:10B1B0000000D50E06000080024090BC0000361052
-:10B1C000120000A8020020B21E000000000000C013
-:10B1D00087CD003700000000000800C007809732CC
-:10B1E000000036101200005C52812AB400000000FA
-:10B1F000000000002924903A0800000000000078B8
-:10B20000890D90360000CE0E04010004194090BC58
-:10B210000500000000000078890D9036000036100F
-:10B2200012000068028097B20000000000000000D9
-:10B230002924903A00000000000000785900903660
-:10B240000000D60E95010080222490BA0000000074
-:10B2500000010080020000500000FFFF000000809D
-:10B26000020000900000000004010078D90130764F
-:10B27000000000000000002809C029320000000082
-:10B280000000009CB24528300000E80E860100084E
-:10B2900009802FB2000000000000002C094081321C
-:10B2A00000000000000000F8020000320000000072
-:10B2B000000000F40200003218000000000000F856
-:10B2C000738A0239000000000000009C0280923264
-:10B2D0000000E70E0407018002C06EBC0000ED0E06
-:10B2E000C30701ECB6E46E9A0000ED0E000601EC17
-:10B2F000B6E46E9A000000000000002C09058030C2
-:10B3000000000000000000F8020000320000000011
-:10B31000000000F40200003218000000000000F8F5
-:10B32000738A023900003F0F0000009C028092D215
-:10B330000000000000000030030038320000000070
-:10B3400004010078D90130760000DF0E0000009C77
-:10B35000B24528900000FFFF00000080020000902E
-:10B36000000000000000008802C0E8320200F20E77
-:10B37000B00000A0F20B00B9000000000000000CBB
-:10B38000ABE4B0320000F70E80010080F24BD0B683
-:10B3900000000000A00000280900003200000000AA
-:10B3A00000010080020000500000F90E040100803E
-:10B3B000123EF8BA0000040FA0000004FD4BD09428
-:10B3C0000000000F80010080D28192B60000000FC3
-:10B3D000800100802281FCB600000000A000000473
-:10B3E000FD4BD034000000000000008401C02F326B
-:10B3F0000000000000000080F101003400000000A7
-:10B400000000009401C02F320000040F00000090E3
-:10B41000F101009400000000A000008401C02F3260
-:10B420000000000000000080F101F834000000007E
-:10B43000000000900140F8320000000000010028E8
-:10B44000090000520000080F040100280934B0BAB6
-:10B450000000050FB0000080020000B000000000F6
-:10B46000A0000004FD4BD0350000000000010028C2
-:10B47000090000520000080FB00000A822C02FB73A
-:10B480000000060F040084C037ACB0B2000000001A
-:10B49000A000000C0B000032FFFF0000000000784D
-:10B4A000A94DB03000000F0F800000800240B0B600
-:10B4B000000000000000007869819735000000005E
-:10B4C000000084080B007C32000000000000000037
-:10B4D000E72501320042000000080000878D2A3A6B
-:10B4E00000000000001000000700B0320000000063
-:10B4F000001800000700D0320000000012010048D0
-:10B50000F2C138540000130F0000008002000090C8
-:10B510000000150FB00000A0020000B20000000003
-:10B520000000000CABE4B03200001A0F8001008074
-:10B530000240D0B600000000A00000280900003240
-:10B5400000000000000100800200005000001C0FFD
-:10B5500004010080123EF8BA00002D0FA000000484
-:10B560000D40D0940000260F80010080D28192B659
-:10B570000000260F800100802281FCB60000000040
-:10B58000A00000040D40D03400000000000000784E
-:10B5900009C02F3200000000000000FC0200003251
-:10B5A000000000000000008401C02F3200000000F5
-:10B5B00000000080F1010034000000000000009451
-:10B5C00001C02F320000000000000090F1010034A3
-:10B5D00000002D0F000000FC028097920000000088
-:10B5E000A000007809C02F3200000000000000FC1D
-:10B5F00002000032000000000000008401C02F3271
-:10B600000000000000000080F101F834000000009C
-:10B61000000000900140F83200000000000000FC33
-:10B62000028097320000000000010028090000524B
-:10B630000000310F040100280934B0BA00002E0FB9
-:10B64000B0000080020000B000000000A000000474
-:10B650000D40D03500000000000100280900005214
-:10B660000000310FB00000A8020000B200002F0F50
-:10B67000040084C037ACB0B200000000A000000C91
-:10B680000B000032FFFF000000000078A94DB03031
-:10B690000000380F800000800240B0B600000000BB
-:10B6A00000000078698197350000000000008408E0
-:10B6B0000B007C320000000000000000E725013292
-:10B6C0000042000000080000878D2A3A00000000B8
-:10B6D000001000000700B032000000000018000059
-:10B6E0000700D0320000000012010048F2C13854B7
-:10B6F00000003C0F00000080020000900000FFFFEF
-:10B7000000000080020000900000410F1C400280F9
-:10B7100006C092B244000000000100F8A28D2F5232
-:10B72000000036101200006802C592B00000000050
-:10B73000000100701F00F75A0000FFFF00000080AA
-:10B740000200009000000000D5080000078092323F
-:10B75000000000000030000007C02C3200400080D4
-:10B76000003800000700373200000000CA4101E045
-:10B77000068092320000480F1200004802C080B2DA
-:10B780000060000000010008088036720000FFFF22
-:10B79000000000800200009000000000003800005F
-:10B7A00007809232000000000030000007C02C32F9
-:10B7B00000000000CA3D000C07808332000000003A
-:10B7C0001201004802C0807200004E0F000000808D
-:10B7D000020000900000FFFF0000008002000090C7
-:10B7E000000000000457018002C06E7C00000000D1
-:10B7F000005701EC068092720000FFFF00000080FD
-:10B80000020000900000DC0E00000030030038F25F
-:10B810000000570F9D11020C09006EB20000580F76
-:10B8200000F0011C09006E920000000000B8011C2D
-:10B8300009006E3200005A0F2CCD011809806EB23B
-:10B84000000000000000000CC9C1903400005D0F32
-:10B850003B29020409806EB20000000000D601EC12
-:10B8600056C06E34000000000000000CB9C19034D6
-:10B8700000006C0F00A8010809006EF20000610FC3
-:10B880009D01008017E090BA0000000000300080A9
-:10B8900007C091320000640F003800800700EE926C
-:10B8A0000000640F0401008002C091BC0000000091
-:10B8B00000B801E00600EE3200000000007001E078
-:10B8C000060086320000660F3908008007C085B286
-:10B8D00000000000D9C901E8068091320000000094
-:10B8E000C8110080074090320000690F3B210080A2
-:10B8F000070086B200000000DB0000601800863AF6
-:10B9000000000000587801E01620863A0000000090
-:10B9100000290080070085720000FFFF0000008002
-:10B92000020000900000700F020C0280A29B90BCED
-:10B93000000000000000027829006E360000700F41
-:10B9400002000080E2A590BC00000000000000089A
-:10B95000090000320000720F9F89017849216EBCF6
-:10B960000000000000000078090000320000000024
-:10B9700000000008E9A5903F0000780F04200208AD
-:10B98000899B90BE00000000000A0258B89B9036C8
-:10B99000000000000000007849A1903A000000007B
-:10B9A0009F880180829B977C00000000008901E055
-:10B9B0000680977200000000000B0258B89B90763A
-:10B9C0000000FFFF000000800200009000007F0FD9
-:10B9D00080010080A2802FB600007E0F1201007847
-:10B9E00009C021B218003600000000F8730A03F9FC
-:10B9F00000007F0FCA0000D80240849200000000BF
-:10BA0000000000F8A2802F35000000000040006C0C
-:10BA1000881C833A000000000048004C0800723285
-:10BA20000000361008500018C82072BC000000004A
-:10BA30000600008062A0827C000036100200002018
-:10BA4000880182BA00000000000000D80200003225
-:10BA500000000000000000000700063207000000A0
-:10BA600000080000774A09390000000000100000BB
-:10BA70000700823200000000CA190000074082322D
-:10BA80000000890F12000040F2C138B4000000002D
-:10BA9000000100D8024084720000FFFF0000008017
-:10BAA000020000900000930F80010080F2C185B673
-:10BAB0000000900F1F400284E60100B40000930FC5
-:10BAC0001D0100F822812FB40000930F000000F840
-:10BAD00062812F950000920F1D010080020000B0CE
-:10BAE00000000000000000F862812F350000000017
-:10BAF00000400280024068320000361012000068E8
-:10BB000002C585B0000000001D000080020000702A
-:10BB10000100000004010080A28D2F702A00960F02
-:10BB20001200002C82CD2EB200000000000100F8AF
-:10BB300002812F740000FFFF0000008002000090CF
-:10BB400080A8000004000080828D2F7000009F0FED
-:10BB500080010080D2802FB600009F0F04B00080CB
-:10BB600002006EBC00000000000000F872812F345B
-:10BB70003D00A20F1201002C82CD2EB200009D0FBD
-:10BB800000000080020000900000A20F80010080F1
-:10BB9000F2802FB63C00A50F1201002C82CD2EB2F0
-:10BBA0000000A00F00000080020000900000A50F20
-:10BBB00080010080B2802FB63500A30F1200002C48
-:10BBC00082CD2EB200000000000000F842812F3428
-:10BBD0008000000004000080828D2F7002000000B1
-:10BBE00004010080A28D2F703B00A70F1200002CD3
-:10BBF00082CD2EB200000000000100F812812F74E7
-:10BC00000000FFFF0000008002000090080000001C
-:10BC1000001801E876208139EEFF0000000100F8ED
-:10BC2000828D2F710000FFFF000000800200009055
-:10BC30000000B10F0000013808C06EF200000000E3
-:10BC40001201004802C080720000AE0F00000080A8
-:10BC5000020000900000FFFF000000800200009042
-:10BC60000000B30F0438017809006EB20000000034
-:10BC7000003801E00600003200000000CA11000098
-:10BC8000078082320000B60F2E190000078097B29D
-:10BC90000000000000000028E98192340000BB0F82
-:10BCA0002731000007C02CB200000000D5080000BA
-:10BCB0000700873200000000C7000028E9809234A6
-:10BCC00000000000004001E0060087320000000094
-:10BCD00000000008D8818034100000000039000006
-:10BCE000E7A092790000FFFF0000008002000090B2
-:10BCF0000000BD0F1200004412E438B218003600F4
-:10BD0000000000F8730A03F90000C20F040100806C
-:10BD100002802DBC0000BE0F670000F8A2802FB586
-:10BD200000003610120000E802C021B2000000003E
-:10BD3000000100D8024000720000FFFF00000080F8
-:10BD4000020000900000C70F04300080829B81BC7D
-:10BD500000000000CA0100F802802F3500A0C60FC5
-:10BD600012000040A28D39B200C0CB0F0438007819
-:10BD7000898D6EB01000CB0F9F0100F8E2A52FB99E
-:10BD800000000000005801EC06C0EE320000000088
-:10BD900000000080020000300000000004280018AD
-:10BDA00009006E720000BA0D00000080020000F071
-:10BDB0000000A30D00A8012009006E920000FFFF03
-:10BDC00000000080020000900000D40F04B000804A
-:10BDD000829B81BC0000000000B800E886806E34C1
-:10BDE00000000000CA0100F842802F3508A00000C2
-:10BDF00012010040A2CD39720000D20F0000008075
-:10BE0000020000900000000000B800E886806E3458
-:10BE10000000000000010080020000700000FFFF31
-:10BE200000000080020000900000DA0F33CD01BC5A
-:10BE300008806EB200001410000000282922EEDCF9
-:10BE40000000DF0F00000080020000900000DF0F04
-:10BE500004B8012809006EB20000DF0F9F71018055
-:10BE6000C2216EBC000036109F000028A924EEBC41
-:10BE70000000141000000028198092DF000000006C
-:10BE800000000080020000300000F20F02810180FB
-:10BE9000829B90BCEE05EA0F060C0280828D6EBC80
-:10BEA00000904C0000000084020037320000E40FD4
-:10BEB000B8010080020000B00000E20F0000008026
-:10BEC0000200009000000000000000C403809032D7
-:10BED0000000000000B001E096216E3C0000000070
-:10BEE000619801E0060087320000000000D401ECF8
-:10BEF0000600003200000000A800007849403C37EE
-:10BF00000000F70F00000008E9A5909A6089200062
-:10BF100000000084020037320000ED0FB8010080FD
-:10BF2000020000B00000EB0F000000800200009053
-:10BF300000000000000000C40380903200000000F8
-:10BF400000B001E096216E3C00000000619801E025
-:10BF5000060087320000000000D401EC0600003229
-:10BF60000000F70FA8000008198F909A0000000049
-:10BF70000000007899A1893E000000000000000840
-:10BF8000E9A5903A0000000000B001E096216E3C67
-:10BF900000000000619801E0060087320000000008
-:10BFA00000D401EC060000320000FA0F0600008009
-:10BFB00072A290BC00C0FF3F008001E00600373253
-:10BFC000000000000000000809C089320000FF0FD7
-:10BFD00004790180821B87BC0000FD0F04B0008043
-:10BFE00002006EBC00000110D99001E00680909222
-:10BFF000000004108000008052812FB60000041061
-:10C00000D54101E006008792000001103C9001E05C
-:10C01000068090B20000000000C801E806C08B3224
-:10C02000000000009501008002802F7200000510C2
-:10C030009F410180821B87BC00000000000100803E
-:10C040000200007000000000D99001E006809032EC
-:10C0500000000000000100F872802F740000FFFF54
-:10C06000000000800200009000000D109FD80180A9
-:10C0700022216EBC000000000B0100800200007055
-:10C0800000000D109FE00180C2216EBC0000000086
-:10C090000B0100800200007000000D109FB00180B5
-:10C0A000D2216EBC00000000000100800200007080
-:10C0B00000000F1006680180825B87BC0000000052
-:10C0C000006801E0064087320000111037B001E03F
-:10C0D000064087B200000000000000F8D2802F3434
-:10C0E0000000000000D801E006808432000000005B
-:10C0F00000E101E0060087720000FFFF0000008001
-:10C10000020000900000201004C1018402006EB201
-:10C110000500000000C001E8868D92370300000092
-:10C1200000C401E8868D9237000000000000008006
-:10C13000020000300300000000C0012C898D6E3623
-:10C140000000000000C4012CA9DB923A00000000AE
-:10C150000000002C29C09236000000000000002CD6
-:10C1600019FB923F00000000000000282980923A4D
-:10C17000000000000000002CA9E4923F0000000035
-:10C180006FCC01E826FB923E0000000000B901E000
-:10C19000060000520000000000000094028092326D
-:10C1A0000000000000C001E006402832100000003E
-:10C1B0006FCC01E886CD2A360000000000B901E00E
-:10C1C000060000520000FFFF000000800200009007
-:10C1D00000000000009001BC08006E32000000006A
-:10C1E00000B001BC88DB8B3E00000000009801BC61
-:10C1F00088DB8B3A000030109F0000BC88E18BBCCC
-:10C2000000003010040C0240A8DB8BBE00000000D0
-:10C2100000B00004881B843E00002D1004B1008093
-:10C22000825B80BC00000000000100F8C2802F7417
-:10C2300000000000040C0280A25B807C0000301033
-:10C240000468017819006EB600000000020000804A
-:10C25000E265807C000000000000008812002C3A9B
-:10C260000000FFFF000000800200009008000000B6
-:10C27000001C01E876208139EEFF0000000100F883
-:10C28000828D2F710000FFFF0000008002000090EF
-:10C2900000003610000000B40F40FB9400000000C6
-:10C2A000000000880F402B320000000000000090CA
-:10C2B0000F00283200000000000000940F00293217
-:10C2C00010000000000000B85F461839FF000000B1
-:10C2D0000000009C0F003632000000000000009CAF
-:10C2E0005FCAF935000000000000004403C0F932C5
-:10C2F00000000000000000E40300003241000010D4
-:10C30000000000E00300373200000000000000E4FD
-:10C310000300003240000010000000E0030037324C
-:10C3200000004510670000980F802AB2000000004E
-:10C33000000000A8020000320000431012C186E095
-:10C3400007C021B20000000000B886C006802A3273
-:10C350004C420000000000A802003632471058117D
-:10C36000000000B00F003692000000000000009CAA
-:10C370000200003200014411000000AC0F0036D270
-:10C3800000000000000000AC0F802A3200200000F6
-:10C39000000000A802003632000000000000009CEF
-:10C3A0000F007E3200000000000000A00F007E326F
-:10C3B00000000000000000A40F007E32000000001A
-:10C3C000000000A80F007E3200000000000000A85E
-:10C3D00002C0FA3200000000000000E007C0F9329D
-:10C3E00000000000000000E00700FA32000000003A
-:10C3F000000000E00740FA3200005B10000000E09F
-:10C400000780FAD200000000000000E00780FB3245
-:10C4100001008210040100B48F4DFBB00200000047
-:10C42000000000A002000039408000000000000C65
-:10C43000ABCDB032100000000000000C5BCAB03978
-:10C44000000000000000000C2BFEB0320000811143
-:10C45000000000800200009000000000000000F8D2
-:10C460000300013200000000000100E007803F529D
-:10C4700018000000000000F8738A02390000000074
-:10C4800000000044530A1635000000000000009C24
-:10C490000F80963200000000000000A00FC096320E
-:10C4A00000000000000000A40F009732A26003000B
-:10C4B0000000005803003732681000000000005CE4
-:10C4C000030036320000000000000050830D0034ED
-:10C4D0000000000000000048830D00340000000050
-:10C4E00000000044530A00340000360000000080C1
-:10C4F00002000090000000000000006809C0F9324E
-:10C50000000000000000006C0900FA32000000008A
-:10C51000000000700940FA3200007A10000000802C
-:10C520000200009002000000000000A0F20B0039A1
-:10C5300000006F10800100801240B0B600000000C3
-:10C54000000000043B40B033000000000000000485
-:10C55000FD4BD035000073100000000C0B009792CB
-:10C5600002000000000000A0F20B00390000731070
-:10C57000000000046B019794000073101200006823
-:10C58000094020B2000074101200006C094020B273
-:10C590000D000000000000FCA2E516380000791034
-:10C5A0009F000080028096B2000000000000007032
-:10C5B00009C0963200007A100000006C09C0FD929C
-:10C5C0000000791012000070094020B20000000045
-:10C5D0000000009C0200003200000000000000D8B3
-:10C5E0000200003202007310040100BCAF2517B82E
-:10C5F00006007110040000BCAF6516B800006C1096
-:10C600000400008022C0FBBC00008A1004000080EF
-:10C6100012C1FBBC200073100401008082CDFBBC62
-:10C6200002000000000000A0F20B003900008B1097
-:10C6300000000080020000D084100000000000888C
-:10C6400082CDF93A00007A110000008002000090CB
-:10C650000000B31000000080020000900000B41041
-:10C6600000000080020000900000B8100000008070
-:10C67000020000900000C010000000800200009046
-:10C6800000001911000000800200009000007310EB
-:10C69000000000DC0F009792000000000000000086
-:10C6A0000700033240420000000000A802003632BA
-:10C6B000000000000008000007802A32000000008F
-:10C6C0000010000007009732000000000018000072
-:10C6D00007C096320880901012000040028036B2E7
-:10C6E00000000000000000800200003000009210F6
-:10C6F0001200009C0FC021B21D00951004000080A4
-:10C7000072BE17B800009210000000F81E80EF9A69
-:10C71000130000000000009C7FBE17380000981036
-:10C720000400008012C0F9BC00009210000000F864
-:10C730001E80EF9A000000000000009C0F007E3277
-:10C7400000000000000000A00F007E32000000008A
-:10C75000000000A40F007E32000000000001000075
-:10C760000700FA52000000000000009C02000032A6
-:10C770004C420000000000A8020036320000000019
-:10C780000008000007802A3200006E1100000080BF
-:10C79000020000D00000721100000080020000D0F2
-:10C7A000000000000000000CCBC1B034000000000D
-:10C7B0000000009C0200003200000000000000D8D1
-:10C7C000020000320000F10E0000002809C0B0D2C3
-:10C7D0000000A21004000080028092B20000A610A7
-:10C7E0001200009C0FC021B21D00A910040000809F
-:10C7F00072BE17B80000A610000000F81E80EF9A65
-:10C80000130000000000009C7FBE17380000AC1031
-:10C810000400008012C0F9BC0000A610000000F85F
-:10C820001E80EF9A0200AE10040100B48F4DFBB0E1
-:10C83000000073100000008002000090080000005B
-:10C84000000000F89340013900000000000000B42F
-:10C850001F40FB35FE000000000000480300363298
-:10C860000000000000000044030000340000A2109B
-:10C870000000000C8BC1B09400007E110008000085
-:10C880000740FA9200006E11000800000740FAD23B
-:10C890000880B51012000050028036B200007311FB
-:10C8A00000000080020000D0000080110000008025
-:10C8B00002000090000800000000009C0F003632CB
-:10C8C00000440000000000A8020036320000000012
-:10C8D000000000A00200003200000000000000E0A4
-:10C8E0000700B03200000000000000A012002A3A49
-:10C8F0000000BB100401009C1FC0F9BC00440000F4
-:10C90000000000A80200363202007D11000000A0E5
-:10C91000F20B00990000C810040100800240FAB236
-:10C9200000440000000000A8020036320000CA10D7
-:10C9300000000080020000D00000D710000000843A
-:10C94000020000D200000000000000E007C03C32FE
-:10C950000000C4108E010080024028B20044000094
-:10C96000000000A40F0036320000B3100000008069
-:10C970000200009000440000000000A48F4DFA3A2D
-:10C980000000B310000000800200009000000000D2
-:10C990000000009C0F00003210000001000000ACFD
-:10C9A0000F0037320000DC1000000080020000D0D1
-:10C9B0000800CC100401008082CDF9BC000000000A
-:10C9C0000000009C0F0000320E000001000000ACCF
-:10C9D0000F0037320000DC1000000080020000D0A1
-:10C9E0000B00D0100401008082CDF9BC20000000B3
-:10C9F0000000009C0F0036320F000001000000AC68
-:10CA00000F0037320000DC1000000080020000D070
-:10CA10002700D4100401008082CDF9BC0000000082
-:10CA20000001008002000050000000000000009C97
-:10CA30000F0000320F000001000000AC0F00373281
-:10CA40000000DC1000000080020000D02000D9109F
-:10CA50000401008082CDF9BC0000000000010080CC
-:10CA60000200005000000000000000E403C0F932A2
-:10CA70000D000001000000E003003732000000005C
-:10CA8000000000E003C0FA3200000000000000E0F7
-:10CA900007403E32000000000001009C1FC0F95A10
-:10CAA00000000000000000E003C0F93200000000B8
-:10CAB000000000E007403E32000000000000009C43
-:10CAC0001FC0F93AFF000000000100AC8FCDF95003
-:10CAD000000000000000009C0FC02F32000000008A
-:10CAE000000000FC0200003200000000000000E036
-:10CAF00007803E3200000000000000FC12C02F3A08
-:10CB00000F00E7100401008082CD2FBC0000000060
-:10CB1000000000E007803E3200000000000100FC41
-:10CB200002C0F95200000000000000E007003A32A5
-:10CB300000000000000000E007403A320000000062
-:10CB4000000000E007803A3200000000000000E032
-:10CB500007C03A32000000000000009C0FC02F32D6
-:10CB600000000000000000FC020000320000000095
-:10CB7000000000E007003D3200000000000000E07F
-:10CB800007403D320000F210830100FC12C02FBAB2
-:10CB900000000000000100FC02C0F952000000008B
-:10CBA0000000009C0F0000320C0000000000000894
-:10CBB000733E003900000000000000E00700303242
-:10CBC000000000000000009C1FC0F93A7000F71040
-:10CBD0000401008082CDF9BC000000000000000CC0
-:10CBE0000300003200000000000000E007003032C7
-:10CBF00000000000000000100300003200000000F0
-:10CC0000000000E007003032000000000000009C3F
-:10CC10000F00003200000000000000A00FC0293209
-:10CC2000000000000000009C02C0F932000000007B
-:10CC3000000000A40FC02C32000000000000009C87
-:10CC40000200FA32180000000000002C737EFA394E
-:10CC500000000000000000E007003032000000117A
-:10CC60008501009C1FC0F9BA00000000000100808F
-:10CC700002000050010000010000009C0F0037324C
-:10CC80000000E11000000080020000D00E000F1133
-:10CC90000401008082CDFABC00000000000000E02A
-:10CCA0000700003200000000000000E00700003232
-:10CCB00000000000000000E0070000320000091141
-:10CCC0000000009C3FC0F99A1C000911040100807B
-:10CCD00082CDFABC0200E1100000009C8FCDF9DA91
-:10CCE000000000000001008002000050010000026E
-:10CCF0000000009C0F0037320000E11000000080AF
-:10CD0000020000D00E0017110401008082CDFABC91
-:10CD100000000000000000E00700003200001311D6
-:10CD20000000009C1FC0F99A260013110401008026
-:10CD300082CDFABC0000000000010080020000501B
-:10CD400000000000000000A80F402932004400004D
-:10CD5000000000A802003632000008110000008028
-:10CD6000020000D00000121100000080020000D07C
-:10CD70000000E51000000080020000D0000000006C
-:10CD8000000000E00780183200000000000000E012
-:10CD900007401A3200000000000000E007001A32CD
-:10CDA00000000000000000E007801A3200000000D0
-:10CDB000000000E007C01A3200000000000000A0E0
-:10CDC0000F000032A2600300000000580300373259
-:10CDD0002B1100000000005C030036320000000050
-:10CDE0000000009C0F802A3200002B1104000080FC
-:10CDF000024029B20000000000000050833E0034D1
-:10CE00000000000000000048833E003400000000E5
-:10CE100000000044530A003400002C110000008878
-:10CE20000F402B9200000000000000900F002832FD
-:10CE300000000000000000940F00293200000000F4
-:10CE4000000000980F802A3200000000000000A8B7
-:10CE500002C0F93231115811000000B00F003692B3
-:10CE60000700341104000080824D29BC000000003E
-:10CE7000000000A01F00FA3A000028110000009CEA
-:10CE80000F802A92C0010000000000AC0F00363273
-:10CE9000010000000000009C020036320000441136
-:10CEA00000000080020000D01F003A110400008042
-:10CEB00082CD29BCC0000000000000AC8FCDFA3A42
-:10CEC000000036110000009C12C0299A0000F610E4
-:10CED00000000080020000D00000EC100000008084
-:10CEE000020000D00000421104000080528AFABC07
-:10CEF000A260030000000058030037324211000016
-:10CF00000000005C0300363200000000000000500A
-:10CF1000A33E00340000000000000048A33E00349F
-:10CF20000000000000000044530A003400440000E8
-:10CF3000000000A40F0036320000B3100000008093
-:10CF40000200009000000000000000C402C0FA329D
-:10CF5000030000000000009C0F00363200000000BB
-:10CF6000000000BC0F402F3200004B110400009C59
-:10CF70001FC0F9BC00004A110400008002402FB21B
-:10CF800000004711000000E007002C92000047114C
-:10CF9000000000E00700369200000000000000E002
-:10CFA00007402C3200000000000000E007802C3217
-:10CFB00000000000000000E007C02C32000000006C
-:10CFC000000000E007002D3200000000000000E03B
-:10CFD00007402D3200000000000000E007802D32E5
-:10CFE00000000000000000E007C02D32000000003B
-:10CFF000000000E007C0FB3200000000000000E07D
-:10D0000007802F3200000000000000E007C02F3230
-:10D0100018000000000000F8730A02390000000048
-:10D02000000100E007803F52FF00000000000044C4
-:10D030000300363200000000000000E00700F93273
-:10D0400000000000000000E007402832000000005F
-:10D05000000000E00780F832030000000000009CA0
-:10D060000F00363200000000000000BC0FC02B3261
-:10D07000000061110400009C1FC0F9BC0000601199
-:10D080000400008002C02BB200005D11000000E02F
-:10D0900007C0289200005D11000000E007003692F2
-:10D0A00000000000000000E00740F932000000002E
-:10D0B000000000E00740293200000000000000E00E
-:10D0C0000780293200000000000000E007C029327C
-:10D0D00000000000000000E007002A32000000000D
-:10D0E000000000E007402A3200000000000000E0DD
-:10D0F0000780F93200000000000000E007C02A327B
-:10D1000000000000000000E007C02F320000000017
-:10D11000000000E007402B3200000000000000E0AB
-:10D1200007802B3200000000000000E007C0FB3247
-:10D1300000000000000000880200FB320000000038
-:10D140000000009C0200003200000000000000D837
-:10D1500002000032000000000010000007009732BB
-:10D16000000000000019000007C0965208807211EC
-:10D1700012000048028036B200000000000000806B
-:10D1800002000030000074111200009C0FC021B298
-:10D190001D0077110400008072BE17B800007411E2
-:10D1A000000000F81E80EF9A130000000000009CB1
-:10D1B0007FBE1738000000000400008012C0F95C38
-:10D1C00000007411000000F81E80EF9A00000000BB
-:10D1D000000000B40F40FB35000000000000009C80
-:10D1E000020000324C420000000000A8020036326B
-:10D1F000000000000008000007802A3200006E11C5
-:10D2000000000080020000D00000721100000080C9
-:10D21000020000D0000000000000000CCBC1B034C0
-:10D22000000000000000009C02000032000000002E
-:10D23000000000D80200003200008B11000000281E
-:10D2400009C0B0D20000811104000080028092B2B7
-:10D25000000085111200009C0FC021B21D00881132
-:10D260000400008072BE17B800008511000000F8AD
-:10D270001E80EF9A130000000000009C7FBE17384C
-:10D28000000073100400008012C0F9BC000085117A
-:10D29000000000F81E80EF9A00000000000000FC73
-:10D2A0000200003202000000000000A0F20B003972
-:10D2B00000008F11040100280934B0BA00000000FA
-:10D2C000000100280900005200000000000000A832
-:10D2D00022C02F3700000000000084C037ACB032FD
-:10D2E000000000000000000C0B000032FFFF0000F7
-:10D2F000000000C0AF4DB0300000951180000080EC
-:10D300000240B0B600000000000000C06F01FC3514
-:10D310000000000000000000073F01320042000052
-:10D3200000080000878D2A3A00000000001000006D
-:10D330000700B03200000000001800000700D032E3
-:10D3400000000000000000C03FC1383400000000B1
-:10D3500012010048F201FC5400009A110000008004
-:10D36000020000900000FFFF00000080020000901B
-:0CD3700000003600000000800200009069
-:00000001FF
diff --git a/firmware/yamaha/yss225_registers.bin.ihex b/firmware/yamaha/yss225_registers.bin.ihex
new file mode 100644 (file)
index 0000000..6dd3d8c
--- /dev/null
@@ -0,0 +1,998 @@
+:10000000FF000E100F00FF000E110F00FF000E1278
+:100010000F00FF000E130F00FF000E140F00FF0073
+:100020000E150F00FF000E160F00FF000E170F0039
+:10003000FF000E180F00FF000E190F00FF000E1A30
+:100040000F00FF000E1B0F00FF000E1C0F00FF0033
+:100050000E1D0F00FF000E1E0F00FF000E1F0F00F1
+:10006000FF000E200F00FF000E210F00FF000E22E8
+:100070000F00FF000E230F00FF000E240F00FF00F3
+:100080000E250F00FF000E260F00FF000E270F00A9
+:10009000FF000E280F00FF000E290F00FF000E2AA0
+:1000A0000F00FF000E2B0F00FF000E2C0F00FF00B3
+:1000B0000E2D0F00FF000E2E0F00FF000E2F0F0061
+:1000C000FF000E300F00FF000E310F00FF000E3258
+:1000D0000F00FF000E330F00FF000E340F00FF0073
+:1000E0000E350F00FF000E360F00FF000E370F0019
+:1000F000FF000E380F00FF000E390F00FF000E3A10
+:100100000F00FF000E3B0F00FF000E3C0F00FF0032
+:100110000E3D0F00FF000E3E0F00FF000E3F0F00D0
+:10012000FF000E400F00FF000E410F00FF000E42C7
+:100130000F00FF000E430F00FF000E440F00FF00F2
+:100140000E450F00FF000E460F00FF000E470F0088
+:10015000FF000E480F00FF000E490F00FF000E4A7F
+:100160000F00FF000E4B0F00FF000E4C0F00FF00B2
+:100170000E4D0F00FF000E4E0F00FF000E4F0F0040
+:10018000FF000E500F00FF000E510F00FF000E5237
+:100190000F00FF000E530F00FF000E540F00FF0072
+:1001A0000E550F00FF000E560F00FF000E570F00F8
+:1001B000FF000E580F00FF000E590F00FF000E5AEF
+:1001C0000F00FF000E5B0F00FF000E5C0F00FF0032
+:1001D0000E5D0F00FF000E5E0F00FF000E5F0F00B0
+:1001E000FF000E600F00FF000E610F00FF000E62A7
+:1001F0000F00FF000E630F00FF000E640F00FF00F2
+:100200000E650F00FF000E660F00FF000E670F0067
+:10021000FF000E680F00FF000E690F00FF000E6A5E
+:100220000F00FF000E6B0F00FF000E6C0F00FF00B1
+:100230000E6D0F00FF000E6E0F00FF000E6F0F001F
+:10024000FF000E700F00FF000E710F00FF000E7216
+:100250000F00FF000E730F00FF000E740F00FF0071
+:100260000E750F00FF000E760F00FF000E770F00D7
+:10027000FF000E780F00FF000E790F00FF000E7ACE
+:100280000F00FF000E7B0F00FF000E7C0F00FF0031
+:100290000E7D0F00FF000E7E0F00FF000E7F0F008F
+:1002A000FF000E800F00FF000E810F00FF000E8286
+:1002B0000F00FF000E830F00FF000E840F00FF00F1
+:1002C0000E850F00FF000E860F00FF000E870F0047
+:1002D000FF000E880F00FF000E890F00FF000E8A3E
+:1002E0000F00FF000E8B0F00FF000E8C0F00FF00B1
+:1002F0000E8D0F00FF000E8E0F00FF000E8F0F00FF
+:10030000FF000E900F00FF000E910F00FF000E92F5
+:100310000F00FF000E930F00FF000E940F00FF0070
+:100320000E950F00FF000E960F00FF000E970F00B6
+:10033000FF000E980F00FF000E990F00FF000E9AAD
+:100340000F00FF000E9B0F00FF000E9C0F00FF0030
+:100350000E9D0F00FF000E9E0F00FF000E9F0F006E
+:10036000FF000EA00F00FF000EA10F00FF000EA265
+:100370000F00FF000EA30F00FF000EA40F00FF00F0
+:100380000EA50F00FF000EA60F00FF000EA70F0026
+:10039000FF000EA80F00FF000EA90F00FF000EAA1D
+:1003A0000F00FF000EAB0F00FF000EAC0F00FF00B0
+:1003B0000EAD0F00FF000EAE0F00FF000EAF0F00DE
+:1003C000FF000EB00F00FF000EB10F00FF000EB2D5
+:1003D0000F00FF000EB30F00FF000EB40F00FF0070
+:1003E0000EB50F00FF000EB60F00FF000EB70F0096
+:1003F000FF000EB80F00FF000EB90F00FF000EBA8D
+:100400000F00FF000EBB0F00FF000EBC0F00FF002F
+:100410000EBD0F00FF000EBE0F00FF000EBF0F004D
+:10042000FF000EC00F00FF000EC10F00FF000EC244
+:100430000F00FF000EC30F00FF000EC40F00FF00EF
+:100440000EC50F00FF000EC60F00FF000EC70F0005
+:10045000FF000EC80F00FF000EC90F00FF000ECAFC
+:100460000F00FF000ECB0F00FF000ECC0F00FF00AF
+:100470000ECD0F00FF000ECE0F00FF000ECF0F00BD
+:10048000FF000ED00F00FF000ED10F00FF000ED2B4
+:100490000F00FF000ED30F00FF000ED40F00FF006F
+:1004A0000ED50F00FF000ED60F00FF000ED70F0075
+:1004B000FF000ED80F00FF000ED90F00FF000EDA6C
+:1004C0000F00FF000EDB0F00FF000EDC0F00FF002F
+:1004D0000EDD0F00FF000EDE0F00FF000EDF0F002D
+:1004E000FF000EE00F00FF000EE10F00FF000EE224
+:1004F0000F00FF000EE30F00FF000EE40F00FF00EF
+:100500000EE50F00FF000EE60F00FF000EE70F00E4
+:10051000FF000EE80F00FF000EE90F00FF000EEADB
+:100520000F00FF000EEB0F00FF000EEC0F00FF00AE
+:100530000EED0F00FF000EEE0F00FF000EEF0F009C
+:10054000FF000EF00F00FF000EF10F00FF000EF293
+:100550000F00FF000EF30F00FF000EF40F00FF006E
+:100560000EF50F00FF000EF60F00FF000EF70F0054
+:10057000FF000EF80F00FF000EF90F00FF000EFA4B
+:100580000F00FF000EFB0F00FF000EFC0F00FF002E
+:100590000EFD0F00FF000EFE0F00FF000EFF0F000C
+:1005A000FF000E100F00FF000E110F00FF000E12D3
+:1005B0000F00FF000E130F00FF000E140F00FF00CE
+:1005C0000E150F00FF000E160F00FF000E170F0094
+:1005D000FF000E180F00FF000E190F00FF000E1A8B
+:1005E0000F00FF000E1B0F00FF000E1C0F00FF008E
+:1005F0000E1D0F00FF000E1E0F00FF000E1F0F004C
+:10060000FF000E200F00FF000E210F00FF000E2242
+:100610000F00FF000E230F00FF000E240F00FF004D
+:100620000E250F00FF000E260F00FF000E270F0003
+:10063000FF000E280F00FF000E290F00FF000E2AFA
+:100640000F00FF000E2B0F00FF000E2C0F00FF000D
+:100650000E2D0F00FF000E2E0F00FF000E2F0F00BB
+:10066000FF000E300F00FF000E310F00FF000E32B2
+:100670000F00FF000E330F00FF000E340F00FF00CD
+:100680000E350F00FF000E360F00FF000E370F0073
+:10069000FF000E380F00FF000E390F00FF000E3A6A
+:1006A0000F00FF000E3B0F00FF000E3C0F00FF008D
+:1006B0000E3D0F00FF000E3E0F00FF000E3F0F002B
+:1006C000FF000E400F00FF000E410F00FF000E4222
+:1006D0000F00FF000E430F00FF000E440F00FF004D
+:1006E0000E450F00FF000E460F00FF000E470F00E3
+:1006F000FF000E480F00FF000E490F00FF000E4ADA
+:100700000F00FF000E4B0F00FF000E4C0F00FF000C
+:100710000E4D0F00FF000E4E0F00FF000E4F0F009A
+:10072000FF000E500F00FF000E510F00FF000E5291
+:100730000F00FF000E530F00FF000E540F00FF00CC
+:100740000E550F00FF000E560F00FF000E570F0052
+:10075000FF000E580F00FF000E590F00FF000E5A49
+:100760000F00FF000E5B0F00FF000E5C0F00FF008C
+:100770000E5D0F00FF000E5E0F00FF000E5F0F000A
+:10078000FF000E600F00FF000E610F00FF000E6201
+:100790000F00FF000E630F00FF000E640F00FF004C
+:1007A0000E650F00FF000E660F00FF000E670F00C2
+:1007B000FF000E680F00FF000E690F00FF000E6AB9
+:1007C0000F00FF000E6B0F00FF000E6C0F00FF000C
+:1007D0000E6D0F00FF000E6E0F00FF000E6F0F007A
+:1007E000FF000E700F00FF000E710F00FF000E7271
+:1007F0000F00FF000E730F00FF000E740F00FF00CC
+:100800000E750F00FF000E760F00FF000E770F0031
+:10081000FF000E780F00FF000E790F00FF000E7A28
+:100820000F00FF000E7B0F00FF000E7C0F00FF008B
+:100830000E7D0F00FF000E7E0F00FF000E7F0F00E9
+:10084000FF000E800F00FF000E810F00FF000E82E0
+:100850000F00FF000E830F00FF000E840F00FF004B
+:100860000E850F00FF000E860F00FF000E870F00A1
+:10087000FF000E880F00FF000E890F00FF000E8A98
+:100880000F00FF000E8B0F00FF000E8C0F00FF000B
+:100890000E8D0F00FF000E8E0F00FF000E8F0F0059
+:1008A000FF000E900F00FF000E910F00FF000E9250
+:1008B0000F00FF000E930F00FF000E940F00FF00CB
+:1008C0000E950F00FF000E960F00FF000E970F0011
+:1008D000FF000E980F00FF000E990F00FF000E9A08
+:1008E0000F00FF000E9B0F00FF000E9C0F00FF008B
+:1008F0000E9D0F00FF000E9E0F00FF000E9F0F00C9
+:10090000FF000EA00F00FF000EA10F00FF000EA2BF
+:100910000F00FF000EA30F00FF000EA40F00FF004A
+:100920000EA50F00FF000EA60F00FF000EA70F0080
+:10093000FF000EA80F00FF000EA90F00FF000EAA77
+:100940000F00FF000EAB0F00FF000EAC0F00FF000A
+:100950000EAD0F00FF000EAE0F00FF000EAF0F0038
+:10096000FF000EB00F00FF000EB10F00FF000EB22F
+:100970000F00FF000EB30F00FF000EB40F00FF00CA
+:100980000EB50F00FF000EB60F00FF000EB70F00F0
+:10099000FF000EB80F00FF000EB90F00FF000EBAE7
+:1009A0000F00FF000EBB0F00FF000EBC0F00FF008A
+:1009B0000EBD0F00FF000EBE0F00FF000EBF0F00A8
+:1009C000FF000EC00F00FF000EC10F00FF000EC29F
+:1009D0000F00FF000EC30F00FF000EC40F00FF004A
+:1009E0000EC50F00FF000EC60F00FF000EC70F0060
+:1009F000FF000EC80F00FF000EC90F00FF000ECA57
+:100A00000F00FF000ECB0F00FF000ECC0F00FF0009
+:100A10000ECD0F00FF000ECE0F00FF000ECF0F0017
+:100A2000FF000ED00F00FF000ED10F00FF000ED20E
+:100A30000F00FF000ED30F00FF000ED40F00FF00C9
+:100A40000ED50F00FF000ED60F00FF000ED70F00CF
+:100A5000FF000ED80F00FF000ED90F00FF000EDAC6
+:100A60000F00FF000EDB0F00FF000EDC0F00FF0089
+:100A70000EDD0F00FF000EDE0F00FF000EDF0F0087
+:100A8000FF000EE00F00FF000EE10F00FF000EE27E
+:100A90000F00FF000EE30F00FF000EE40F00FF0049
+:100AA0000EE50F00FF000EE60F00FF000EE70F003F
+:100AB000FF000EE80F00FF000EE90F00FF000EEA36
+:100AC0000F00FF000EEB0F00FF000EEC0F00FF0009
+:100AD0000EED0F00FF000EEE0F00FF000EEF0F00F7
+:100AE000FF000EF00F00FF000EF10F00FF000EF2EE
+:100AF0000F00FF000EF30F00FF000EF40F00FF00C9
+:100B00000EF50F00FF000EF60F00FF000EF70F00AE
+:100B1000FF000EF80F00FF000EF90F00FF000EFAA5
+:100B20000F00FF000EFB0F00FF000EFC0F00FF0088
+:100B30000EFD0F00FF000EFE0F00FF000EFF0F0066
+:100B4000FF000802FF000B070A440D000C00FF0025
+:100B50000B070A420D000C00FF000B070A430D00B3
+:100B60000C00FF000B070A7C0D000C00FF000B07B8
+:100B70000A7E0D000C00FF000B070A460D000C005A
+:100B8000FF000B070A490D000C00FF000B070A4786
+:100B90000D000C00FF000B070A4A0D000C00FF00BF
+:100BA0000E100F00FF000E110F00FF000E120F00BD
+:100BB000FF000E130F00FF000E140F00FF000E15B4
+:100BC0000F00FF000E160F00FF000E170F00FF00B2
+:100BD0000E180F00FF000E190F00FF000E1A0F0075
+:100BE000FF000E1B0F00FF000E1C0F00FF000E1D6C
+:100BF0000F00FF000E1E0F00FF000E1F0F00FF0072
+:100C00000E200F00FF000E210F00FF000E220F002C
+:100C1000FF000E230F00FF000E240F00FF000E2523
+:100C20000F00FF000E260F00FF000E270F00FF0031
+:100C30000E280F00FF000E290F00FF000E2A0F00E4
+:100C4000FF000E2B0F00FF000E2C0F00FF000E2DDB
+:100C50000F00FF000E2E0F00FF000E2F0F00FF00F1
+:100C60000E300F00FF000E310F00FF000E320F009C
+:100C7000FF000E330F00FF000E340F00FF000E3593
+:100C80000F00FF000E360F00FF000E370F00FF00B1
+:100C90000E380F00FF000E390F00FF000E3A0F0054
+:100CA000FF000E3B0F00FF000E3C0F00FF000E3D4B
+:100CB0000F00FF000E3E0F00FF000E3F0F00FF0071
+:100CC0000E400F00FF000E410F00FF000E420F000C
+:100CD000FF000E430F00FF000E440F00FF000E4503
+:100CE0000F00FF000E460F00FF000E470F00FF0031
+:100CF0000E480F00FF000E490F00FF000E4A0F00C4
+:100D0000FF000E4B0F00FF000E4C0F00FF000E4DBA
+:100D10000F00FF000E4E0F00FF000E4F0F00FF00F0
+:100D20000E500F00FF000E510F00FF000E520F007B
+:100D3000FF000E530F00FF000E540F00FF000E5572
+:100D40000F00FF000E560F00FF000E570F00FF00B0
+:100D50000E580F00FF000E590F00FF000E5A0F0033
+:100D6000FF000E5B0F00FF000E5C0F00FF000E5D2A
+:100D70000F00FF000E5E0F00FF000E5F0F00FF0070
+:100D80000E600F00FF000E610F00FF000E620F00EB
+:100D9000FF000E630F00FF000E640F00FF000E65E2
+:100DA0000F00FF000E660F00FF000E670F00FF0030
+:100DB0000E680F00FF000E690F00FF000E6A0F00A3
+:100DC000FF000E6B0F00FF000E6C0F00FF000E6D9A
+:100DD0000F00FF000E6E0F00FF000E6F0F00FF00F0
+:100DE0000E700F00FF000E710F00FF000E720F005B
+:100DF000FF000E730F00FF000E740F00FF000E7552
+:100E00000F00FF000E760F00FF000E770F00FF00AF
+:100E10000E780F00FF000E790F00FF000E7A0F0012
+:100E2000FF000E7B0F00FF000E7C0F00FF000E7D09
+:100E30000F00FF000E7E0F00FF000E7F0F00FF006F
+:100E40000E800F00FF000E810F00FF000E820F00CA
+:100E5000FF000E830F00FF000E840F00FF000E85C1
+:100E60000F00FF000E860F00FF000E870F00FF002F
+:100E70000E880F00FF000E890F00FF000E8A0F0082
+:100E8000FF000E8B0F00FF000E8C0F00FF000E8D79
+:100E90000F00FF000E8E0F00FF000E8F0F00FF00EF
+:100EA0000E900F00FF000E910F00FF000E920F003A
+:100EB000FF000E930F00FF000E940F00FF000E9531
+:100EC0000F00FF000E960F00FF000E970F00FF00AF
+:100ED0000E980F00FF000E990F00FF000E9A0F00F2
+:100EE000FF000E9B0F00FF000E9C0F00FF000E9DE9
+:100EF0000F00FF000E9E0F00FF000E9F0F00FF006F
+:100F00000EA00F00FF000EA10F00FF000EA20F00A9
+:100F1000FF000EA30F00FF000EA40F00FF000EA5A0
+:100F20000F00FF000EA60F00FF000EA70F00FF002E
+:100F30000EA80F00FF000EA90F00FF000EAA0F0061
+:100F4000FF000EAB0F00FF000EAC0F00FF000EAD58
+:100F50000F00FF000EAE0F00FF000EAF0F00FF00EE
+:100F60000EB00F00FF000EB10F00FF000EB20F0019
+:100F7000FF000EB30F00FF000EB40F00FF000EB510
+:100F80000F00FF000EB60F00FF000EB70F00FF00AE
+:100F90000EB80F00FF000EB90F00FF000EBA0F00D1
+:100FA000FF000EBB0F00FF000EBC0F00FF000EBDC8
+:100FB0000F00FF000EBE0F00FF000EBF0F00FF006E
+:100FC0000EC00F00FF000EC10F00FF000EC20F0089
+:100FD000FF000EC30F00FF000EC40F00FF000EC580
+:100FE0000F00FF000EC60F00FF000EC70F00FF002E
+:100FF0000EC80F00FF000EC90F00FF000ECA0F0041
+:10100000FF000ECB0F00FF000ECC0F00FF000ECD37
+:101010000F00FF000ECE0F00FF000ECF0F00FF00ED
+:101020000ED00F00FF000ED10F00FF000ED20F00F8
+:10103000FF000ED30F00FF000ED40F00FF000ED5EF
+:101040000F00FF000ED60F00FF000ED70F00FF00AD
+:101050000ED80F00FF000ED90F00FF000EDA0F00B0
+:10106000FF000EDB0F00FF000EDC0F00FF000EDDA7
+:101070000F00FF000EDE0F00FF000EDF0F00FF006D
+:101080000EE00F00FF000EE10F00FF000EE20F0068
+:10109000FF000EE30F00FF000EE40F00FF000EE55F
+:1010A0000F00FF000EE60F00FF000EE70F00FF002D
+:1010B0000EE80F00FF000EE90F00FF000EEA0F0020
+:1010C000FF000EEB0F00FF000EEC0F00FF000EED17
+:1010D0000F00FF000EEE0F00FF000EEF0F00FF00ED
+:1010E0000EF00F00FF000EF10F00FF000EF20F00D8
+:1010F000FF000EF30F00FF000EF40F00FF000EF5CF
+:101100000F00FF000EF60F00FF000EF70F00FF00AC
+:101110000EF80F00FF000EF90F00FF000EFA0F008F
+:10112000FF000EFB0F00FF000EFC0F00FF000EFD86
+:101130000F00FF000EFE0F00FF000EFF0F0009055D
+:101140000B000A000D010C7CFF000D000C1EFF00BF
+:101150000D000C00FF000D000C00FF000D000CF551
+:10116000FF000D000C11FF000D000C20FF000D0012
+:101170000C32FF000D000C40FF000D000C13FF00AF
+:101180000D000C00FF000D000C14FF000D020C768A
+:10119000FF000D000C60FF000D000C80FF000D0231
+:1011A0000C00FF000D000C00FF000D000C00FF0004
+:1011B0000D020C00FF000D000C00FF000D000C00E4
+:1011C000FF000D000C00FF000D000C00FF000D00E3
+:1011D0000C00FF000D000C00FF000D000C00FF00D4
+:1011E0000D000C00FF000D000C00FF000D000C00B6
+:1011F000FF000D000C00FF000D000C00FF000D00B3
+:101200000C00FF000D000C00FF000D000C00FF00A3
+:101210000D000C00FF000D000C00FF000D000C0085
+:10122000FF000D000C00FF000D000C00FF000D0082
+:101230000C00FF000D000C00FF000D000C00FF0073
+:101240000D000C00FF000D000C00FF000D000C0055
+:10125000FF000D000C00FF000D000C00FF000D0052
+:101260000C00FF000D000C00FF000D000C00FF0043
+:101270000D000C00FF000D000C00FF000D000C0025
+:10128000FF000D000C00FF000D000C00FF000D0022
+:101290000C00FF000D000C00FF000D000C00FF0013
+:1012A0000D000C00FF000D000C00FF000D000C00F5
+:1012B000FF000D000C00FF000D000C00FF000D00F2
+:1012C0000C00FF000D000C18FF000D000C19FF00B2
+:1012D0000D010C1AFF000D010C20FF000D010C4048
+:1012E000FF000D010C17FF000D000C00FF000D01A9
+:1012F0000C80FF000D010C20FF000D000C10FF0002
+:101300000D010CA0FF000D030CD1FF000D000C001F
+:10131000FF000D010CF2FF000D020C00FF000D009C
+:101320000C13FF000D000C00FF000D000CF4FF007B
+:101330000D020CE0FF000D000C15FF000D000C006D
+:10134000FF000D000C16FF000D000C00FF000D004B
+:101350000C17FF000D000C20FF000D000C00FF001B
+:101360000D000C20FF000D000C50FF000D000C00C4
+:10137000FF000D000C40FF000D000C00FF000D00F1
+:101380000C71FF000D020C00FF000D000C60FF004F
+:101390000D000C00FF000D000C92FF000D000C0072
+:1013A000FF000D000C80FF000D000C00FF000D0081
+:1013B0000CB3FF000D020C00FF000D000CA0FF009D
+:1013C0000D000C00FF000D000CD4FF000D000C0000
+:1013D000FF000D000C40FF000D000C80FF000D0011
+:1013E0000CF5FF000D000C20FF000D000C70FF003D
+:1013F0000D000CA0FF000D020C11FF000D000C16DB
+:10140000FF000D000C00FF000D000C00FF000D00A0
+:101410000C00FF000D000C20FF000D020C00FF006F
+:101420000D000C20FF000D000C10FF000D000C172C
+:10143000FF000D000C1BFF000D000C1DFF000D0236
+:101440000CDFFF0009050B010A000D000C00FF0076
+:101450000D000C00FF000D000C00FF000D020C0041
+:10146000FF000D000C19FF000D000C1FFF000D0008
+:101470000C00FF000D000C00FF000D000C00FF0031
+:101480000D030CD8FF000D000C00FF000D020C2016
+:10149000FF000D000C19FF000D000C00FF000D00F7
+:1014A0000C00FF000D000C18FF000D010CC0FF0028
+:1014B0000D010CFAFF000D000C1AFF000D000C00CE
+:1014C000FF000D000C00FF000D000C00FF000D00E0
+:1014D0000C00FF000D000C00FF000D000C00FF00D1
+:1014E0000D000C00FF000D000C00FF000D000C00B3
+:1014F000FF000D000C00FF000D000C00FF000D00B0
+:101500000C00FF000D000C00FF000D000C00FF00A0
+:101510000D000C00FF000D000C00FF000D000C0082
+:10152000FF000D000C00FF000D000C00FF000D007F
+:101530000C00FF000D000C00FF000D000C00FF0070
+:101540000D000C00FF000D000C00FF000D000C0052
+:10155000FF000D000C00FF000D000C00FF000D004F
+:101560000C00FF000D000C00FF000D000C00FF0040
+:101570000D000C00FF000D000C00FF000D000C0022
+:10158000FF000D000C00FF000D000C00FF000D001F
+:101590000C00FF000D000C00FF000D000C00FF0010
+:1015A0000D000C00FF000D000C00FF000D000C00F2
+:1015B000FF000D000C00FF000D000C00FF000D00EF
+:1015C0000C00FF000D000C00FF000D020C40FF009E
+:1015D0000D020C60FF000D000C00FF000D000C0060
+:1015E000FF000D000C00FF000D020CC0FF000D02FB
+:1015F0000C80FF000D000C00FF000D020CFBFF0033
+:101600000D020CA0FF000D000C00FF000D000C1BD4
+:10161000FF000D020CD7FF000D000C00FF000D02B3
+:101620000CF7FF000D030C20FF000D030C00FF0062
+:101630000D000C00FF000D000C1CFF000D030C3C06
+:10164000FF000D000C00FF000D030C3FFF000D001C
+:101650000C00FF000D030CC0FF000D000C00FF008C
+:101660000D030CDFFF000D000C00FF000D000C004F
+:10167000FF000D030C5DFF000D000C00FF000D03CB
+:101680000CC0FF000D000C00FF000D030C7DFF00DF
+:101690000D000C00FF000D030CC0FF000D000C003E
+:1016A000FF000D030C9EFF000D000C00FF000D035A
+:1016B0000CC0FF000D000C00FF000D030CBEFF006E
+:1016C0000D000C00FF000D030CC0FF000D000C000E
+:1016D000FF000D000C00FF000D000C00FF000D00CE
+:1016E0000C00FF000D000C1BFF000D000C00FF00A4
+:1016F0000D000C00FF000D000C00FF000D020CDBC4
+:10170000FF000D000C00FF000D020CDBFF000D00C0
+:101710000C00FF000D020CE0FF000D000C00FF00AC
+:101720000D020CFBFF000D000C00FF000D020CC0B1
+:10173000FF000D020C40FF000D020CFBFF000D022C
+:101740000C60FF000D000C1BFF0009050B020A00D6
+:101750000CC4FF000C00FF000C44FF000C07FF004E
+:101760000C44FF000C00FF000C40FF000C25FF00A4
+:101770000C01FF000C06FF000CC4FF000C07FF006B
+:101780000C40FF000C25FF000C01FF000C00FF00C7
+:101790000C46FF000C46FF000C00FF000C00FF0091
+:1017A0000C00FF000C00FF000C00FF000C00FF000D
+:1017B0000C00FF000C00FF000C00FF000C00FF00FD
+:1017C0000C00FF000C00FF000C00FF000C00FF00ED
+:1017D0000C00FF000C00FF000C00FF000C00FF00DD
+:1017E0000C00FF000C00FF000C00FF000C00FF00CD
+:1017F0000C00FF000C00FF000C00FF000C00FF00BD
+:101800000C00FF000C00FF000C00FF000C00FF00AC
+:101810000C00FF000C00FF000C00FF000C00FF009C
+:101820000C00FF000C00FF000C00FF000C00FF008C
+:101830000C00FF000C00FF000C00FF000C00FF007C
+:101840000C00FF000C00FF000C00FF000C00FF006C
+:101850000C46FF000C07FF000C05FF000C05FF0005
+:101860000C05FF000C04FF000C07FF000C05FF0037
+:101870000C04FF000C07FF000C05FF000C44FF00E8
+:101880000C46FF000C44FF000C46FF000C46FF0016
+:101890000C07FF000C05FF000C44FF000C46FF0086
+:1018A0000C05FF000C46FF000C05FF000C46FF0076
+:1018B0000C05FF000C46FF000C05FF000C44FF0068
+:1018C0000C46FF000C05FF000C07FF000C44FF0056
+:1018D0000C46FF000C05FF000C07FF000C44FF0046
+:1018E0000C46FF000C05FF000C07FF000C44FF0036
+:1018F0000C46FF000C05FF000C07FF000C44FF0026
+:101900000C05FF000C05FF000C05FF000C44FF0058
+:101910000C05FF000C05FF000C05FF000C46FF0046
+:101920000C05FF000C46FF000C05FF000C46FF00F5
+:101930000C05FF000C46FF000C05FF000C46FF00E5
+:101940000C07FF000C46FF000C07FF000C44FF00D3
+:1019500009050B030A000C07FF000C40FF000C00F8
+:10196000FF000C00FF000C00FF000C47FF000C0004
+:10197000FF000C40FF000C00FF000C40FF000C06B5
+:10198000FF000C40FF000C00FF000C00FF000C00EB
+:10199000FF000C00FF000C00FF000C00FF000C001B
+:1019A000FF000C00FF000C00FF000C00FF000C000B
+:1019B000FF000C00FF000C00FF000C00FF000C00FB
+:1019C000FF000C00FF000C00FF000C00FF000C00EB
+:1019D000FF000C00FF000C00FF000C00FF000C00DB
+:1019E000FF000C00FF000C00FF000C00FF000C00CB
+:1019F000FF000C00FF000C00FF000C00FF000C00BB
+:101A0000FF000C00FF000C00FF000C00FF000C00AA
+:101A1000FF000C00FF000C00FF000C00FF000C009A
+:101A2000FF000C00FF000C00FF000C00FF000C008A
+:101A3000FF000C00FF000C00FF000C00FF000C007A
+:101A4000FF000C00FF000C00FF000C00FF000C006A
+:101A5000FF000C00FF000C80FF000C80FF000CC09A
+:101A6000FF000C00FF000C00FF000C40FF000C000A
+:101A7000FF000C00FF000C00FF000C40FF000C00FA
+:101A8000FF000C40FF000C00FF000C60FF000C008A
+:101A9000FF000C70FF000C00FF000C40FF000C006A
+:101AA000FF000C40FF000C00FF000C42FF000C0088
+:101AB000FF000C40FF000C00FF000C02FF000C00B8
+:101AC000FF000C40FF000C00FF000C00FF000C00AA
+:101AD000FF000C40FF000C00FF000C00FF000C009A
+:101AE000FF000C40FF000C00FF000C00FF000C008A
+:101AF000FF000C40FF000C00FF000C00FF000C007A
+:101B0000FF000C40FF000C00FF000C00FF000C0069
+:101B1000FF000C42FF000C00FF000C40FF000C0017
+:101B2000FF000C42FF000C00FF000C02FF000C0045
+:101B3000FF000C02FF000C00FF000C02FF000C0075
+:101B4000FF000C42FF000C00FF000CC0FF000C0067
+:101B5000FF000C40FF0009050B040A000C63FF00A6
+:101B60000C03FF000C26FF000C02FF000C2CFF00F2
+:101B70000C00FF000C24FF000C00FF000C2EFF00E7
+:101B80000C02FF000C02FF000C02FF000C00FF0023
+:101B90000C00FF000C00FF000C00FF000C00FF0019
+:101BA0000C00FF000C00FF000C00FF000C00FF0009
+:101BB0000C00FF000C00FF000C00FF000C00FF00F9
+:101BC0000C00FF000C00FF000C00FF000C00FF00E9
+:101BD0000C00FF000C00FF000C00FF000C00FF00D9
+:101BE0000C00FF000C00FF000C00FF000C00FF00C9
+:101BF0000C00FF000C00FF000C00FF000C00FF00B9
+:101C00000C00FF000C00FF000C00FF000C00FF00A8
+:101C10000C00FF000C00FF000C00FF000C00FF0098
+:101C20000C00FF000C00FF000C00FF000C00FF0088
+:101C30000C00FF000C00FF000C00FF000C00FF0078
+:101C40000C00FF000C00FF000C00FF000C00FF0068
+:101C50000C00FF000C00FF000C00FF000C00FF0058
+:101C60000C01FF000C20FF000C00FF000C60FF00C7
+:101C70000C00FF000C20FF000C00FF000C20FF00F8
+:101C80000C00FF000C20FF000C00FF000C20FF00E8
+:101C90000C00FF000C20FF000C00FF000C20FF00D8
+:101CA0000C00FF000C20FF000C00FF000C20FF00C8
+:101CB0000C00FF000C60FF000C00FF000C20FF0078
+:101CC0000C00FF000C60FF000C00FF000C20FF0068
+:101CD0000C00FF000C60FF000C00FF000C20FF0058
+:101CE0000C00FF000C60FF000C00FF000C20FF0048
+:101CF0000C00FF000C60FF000C00FF000C20FF0038
+:101D00000C00FF000C60FF000C00FF000C20FF0027
+:101D10000C00FF000C20FF000C00FF000C22FF0055
+:101D20000C02FF000C22FF000C02FF000C20FF0041
+:101D30000C00FF000C60FF000C00FF000C22FF00F5
+:101D40000C02FF000C62FF000C02FF000C20FF00E1
+:101D50000C01FF000C21FF000C01FF0009010B0624
+:101D60000A000D000C00FF000A020D000C00FF002D
+:101D70000A040D000C00FF000A060D000C00FF0015
+:101D80000A080D000C00FF000A0A0D000C00FF00FD
+:101D90000A0C0D000C00FF000A0E0D000C00FF00E5
+:101DA0000A100D000C00FF000A120D000C00FF00CD
+:101DB0000A140D000C00FF000A160D000C00FF00B5
+:101DC0000A180D000C00FF000A1A0D000C00FF009D
+:101DD0000A1C0D000C00FF000A1E0D000C00FF0085
+:101DE0000A200D000C00FF000A220D000C00FF006D
+:101DF0000A240D000C00FF000A260D000C00FF0055
+:101E00000A280D000C00FF000A2A0D000C00FF003C
+:101E10000A2C0D000C00FF000A2E0D000C00FF0024
+:101E20000A300D000C00FF000A320D000C00FF000C
+:101E30000A340D000C00FF000A360D000C00FF00F4
+:101E40000A380D000C00FF000A3A0D000C00FF00DC
+:101E50000A3C0D000C00FF000A3E0D000C00FF00C4
+:101E60000A400D000C00FF000A420D030C00FF00A9
+:101E70000A440D010C00FF000A460D0A0C21FF0068
+:101E80000A480D0D0C23FF000A4A0D230C1BFF000E
+:101E90000A4C0D370C8FFF000A4E0D450C77FF00E2
+:101EA0000A500D520CE2FF000A520D1C0C92FF006A
+:101EB0000A540D1C0C52FF000A560D070C00FF00BF
+:101EC0000A580D2F0CC6FF000A5A0D0B0C00FF001C
+:101ED0000A5C0D300C06FF000A5E0D170C00FF00B7
+:101EE0000A600D3D0CDAFF000A620D290C00FF00AC
+:101EF0000A640D3E0C41FF000A660D390C00FF001C
+:101F00000A680D4C0C48FF000A6A0D490C00FF00DE
+:101F10000A6C0D4C0C6CFF000A6E0D110CD2FF0008
+:101F20000A700D160C0CFF000A720D000C00FF0069
+:101F30000A740D000C80FF000A760D0F0C00FF00E4
+:101F40000A780D000C80FF000A7A0D130C00FF00C8
+:101F50000A7C0D800C00FF000A7E0D800C80FF00C3
+:101F600009050B070A000D0F0CFFFF000D000C0008
+:101F7000FF000D080C00FF000D080C00FF000D0213
+:101F80000C00FF000D000C00FF000D000C00FF0016
+:101F90000D0F0CFFFF000D000C00FF000D000C00EA
+:101FA000FF000D080C00FF000D080C00FF000D00E5
+:101FB0000C00FF000D0F0CFFFF000D000C00FF00D8
+:101FC0000D000C00FF000D0F0CFFFF000D0F0CFFAC
+:101FD000FF000D000C00FF000D000C00FF000D00C5
+:101FE0000C00FF000D000C00FF000D000C00FF00B6
+:101FF0000D000C00FF000D000C00FF000D000C0098
+:10200000FF000D000C00FF000D000C00FF000D0094
+:102010000C00FF000D000C00FF000D000C00FF0085
+:102020000D000C00FF000D000C00FF000D000C0067
+:10203000FF000D000C00FF000D000C00FF000D0064
+:102040000C00FF000D000C00FF000D000C00FF0055
+:102050000D000C00FF000D000C00FF000D000C0037
+:10206000FF000D000C00FF000D000C00FF000D0034
+:102070000C00FF000D000C00FF000D000C00FF0025
+:102080000D000C00FF000D000C00FF000D000C0007
+:10209000FF000D000C00FF000D000C00FF000D0004
+:1020A0000C00FF000D000C00FF000D000C00FF00F5
+:1020B0000D000C00FF000D000C00FF000D000C00D7
+:1020C000FF000D000C00FF000D000C00FF000D00D4
+:1020D0000C00FF000D000C00FF000D000C00FF00C5
+:1020E0000D000C00FF000D000C00FF000D000C00A7
+:1020F000FF000D000C00FF000D000C00FF000D00A4
+:102100000C00FF000D000C00FF000D000C00FF0094
+:102110000D000C00FF000D000C00FF000D000C0076
+:10212000FF000D000C00FF000D0F0CFFFF000D0F56
+:102130000CFFFF000D0F0CFFFF000D0F0CFFFF0049
+:102140000D020CE9FF000D060C8CFF000D060C8C37
+:10215000FF000D0F0CFFFF000D1A0C75FF000D0D99
+:102160000C8BFF000D040CE9FF000D0B0C16FF009B
+:102170000D1A0C38FF000D0D0CC8FF000D040C6F7C
+:10218000FF000D0B0C91FF000D0F0CFFFF000D0663
+:102190000C40FF000D060C40FF000D020C8FFF00ED
+:1021A0000D0F0CFFFF000D060C62FF000D060C6208
+:1021B000FF000D020C7BFF000D0F0CFFFF000D0652
+:1021C0000C97FF000D060C97FF000D020C52FF004C
+:1021D0000D0F0CFFFF000D060CF6FF000D060CF6B0
+:1021E000FF000D020C19FF000D050C55FF000D0539
+:1021F0000C55FF000D050C55FF000D050C55FF009B
+:102200000D050C55FF000D050C55FF000D050C5577
+:10221000FF000D050C55FF000D140CDAFF000D0D2D
+:102220000C93FF000D040CDAFF000D050C93FF006A
+:102230000D140CDAFF000D0D0C93FF000D040CDAE9
+:10224000FF000D050C93FF000D000C00FF000D00BA
+:102250000C00FF000D000C00FF000D000C00FF0043
+:102260000D020C00FF000E010F00FF000E020F0018
+:10227000FF000E010F01FF000E020F00FF000E0114
+:102280000F02FF000E020F00FF000E010F03FF0000
+:102290000E020F00FF000E010F04FF000E020F00E0
+:1022A000FF000E010F05FF000E020F00FF000E01E0
+:1022B0000F06FF000E020F00FF000E010F07FF00C8
+:1022C0000E020F00FF000E010F08FF000E020F00AC
+:1022D000FF000E010F09FF000E020F00FF000E01AC
+:1022E0000F0AFF000E020F00FF000E010F0BFF0090
+:1022F0000E020F00FF000E010F0CFF000E020F0078
+:10230000FF000E010F0DFF000E020F00FF000E0177
+:102310000F0EFF000E020F00FF000E010F0FFF0057
+:102320000E020F00FF000EB00F20FF000EB10F20B5
+:10233000FF000EB20F20FF000EB30F20FF000EB4FF
+:102340000F20FF000EB50F20FF000EB60F20FF007C
+:102350000EB70F20FF000EB80F20FF000EB90F20A0
+:10236000FF000EBA0F20FF000EBB0F20FF000EBCB7
+:102370000F20FF000EBD0F20FF000EBE0F20FF003C
+:102380000EBF0F20FF000EF00F20FF000EF10F20F8
+:10239000FF000EF20F20FF000EF30F20FF000EF4DF
+:1023A0000F20FF000EF50F20FF000EF60F20FF009C
+:1023B0000EF70F20FF000EF80F20FF000EF90F2080
+:1023C000FF000EFA0F20FF000EFB0F20FF000EFC97
+:1023D0000F20FF000EFD0F20FF000EFE0F20FF005C
+:1023E0000EFF0F20FF000E100FFFFF000E110FFF5A
+:1023F000FF000E120FFFFF000E130FFFFF000E1461
+:102400000FFFFF000E150FFFFF000E160FFFFF005E
+:102410000E170FFFFF000E180FFFFF000E190FFF22
+:10242000FF000E1A0FFFFF000E1B0FFFFF000E1C18
+:102430000FFFFF000E1D0FFFFF000E1E0F40FF00DD
+:102440000E1F0FFFFF000E200FFFFF000E210FFFDA
+:10245000FF000E220FFFFF000E230FFFFF000E24D0
+:102460000FFFFF000E250FFFFF000E260FFFFF00DE
+:102470000E270FFFFF000E280FFFFF000E290FFF92
+:10248000FF000E2A0FFFFF000E2B0FFFFF000E2C88
+:102490000FFFFF000E2D0FFFFF000E2E0F00FF009D
+:1024A0000E2F0F00FF000E300F00FF000E310F0047
+:1024B000FF000E320F00FF000E330F00FF000E343E
+:1024C0000F00FF000E350F00FF000E360F00FF005B
+:1024D0000E370F00FF000E380F00FF000E390F00FF
+:1024E000FF000E3A0F00FF000E3B0F00FF000E3CF6
+:1024F0000F00FF000E3D0F00FF000E3E0F00FF001B
+:102500000E3F0F20FF000E400F00FF000E410F0096
+:10251000FF000E420F00FF000E430F00FF000E44AD
+:102520000F00FF000E450F00FF000E460F00FF00DA
+:102530000E470F00FF000E480F00FF000E490F006E
+:10254000FF000E4A0F00FF000E4B0F00FF000E4C65
+:102550000F00FF000E4D0F00FF000E4E0F0EFF008C
+:102560000E4F0F0EFF000E500F00FF000E510F0018
+:10257000FF000E520F00FF000E530F00FF000E541D
+:102580000F00FF000E550F00FF000E560F00FF005A
+:102590000E570F00FF000E580F00FF000E590F00DE
+:1025A000FF000E5A0F00FF000E5B0F00FF000E5CD5
+:1025B0000F00FF000E5D0F00FF000E5E0F00FF001A
+:1025C0000E5F0F00FF000E600F00FF000E610F0096
+:1025D000FF000E620F00FF000E630F00FF000E648D
+:1025E0000F00FF000E650F00FF000E660F00FF00DA
+:1025F0000E670F00FF000E680F00FF000E690F004E
+:10260000FF000E6A0F00FF000E6B0F00FF000E6C44
+:102610000F40FF000E6D0F00FF000E6E0F40FF0019
+:102620000E6F0F40FF000E700FC0FF000E710FC045
+:10263000FF000E720FC0FF000E730FC0FF000E747C
+:102640000FC0FF000E750FC0FF000E760FC0FF0019
+:102650000E770FC0FF000E780FC0FF000E790FC07D
+:10266000FF000E7A0FC0FF000E7B0FC0FF000E7C34
+:102670000FC0FF000E7D0FC0FF000E7E0FC0FF00D9
+:102680000E7F0FC0FF000E800F00FF000E810F00B5
+:10269000FF000E820F00FF000E830F00FF000E846C
+:1026A0000F00FF000E850F00FF000E860F00FF00D9
+:1026B0000E870F00FF000E880F00FF000E890F002D
+:1026C000FF000E8A0F00FF000E8B0F00FF000E8C24
+:1026D0000F00FF000E8D0F00FF000E8E0F00FF0099
+:1026E0000E8F0F00FF000E900F00FF000E910F00E5
+:1026F000FF000E920F00FF000E930F00FF000E94DC
+:102700000F00FF000E950F00FF000E960F00FF0058
+:102710000E970F00FF000E980F00FF000E990F009C
+:10272000FF000E9A0F00FF000E9B0F00FF000E9C93
+:102730000F00FF000E9D0F00FF000E9E0F00FF0018
+:102740000E9F0F00FF000EA00F00FF000EA10F0054
+:10275000FF000EA20F00FF000EA30F00FF000EA44B
+:102760000F00FF000EA50F00FF000EA60F00FF00D8
+:102770000EA70F00FF000EA80F00FF000EA90F000C
+:10278000FF000EAA0F00FF000EAB0F00FF000EAC03
+:102790000F00FF000EAD0F00FF000EAE0F00FF0098
+:1027A0000EAF0F00FF000EC00F00FF000EC10F00A4
+:1027B000FF000EC20F00FF000EC30F00FF000EC48B
+:1027C0000F00FF000EC50F00FF000EC60F00FF0038
+:1027D0000EC70F00FF000EC80F00FF000EC90F004C
+:1027E000FF000ECA0F00FF000ECB0F00FF000ECC43
+:1027F0000F00FF000ECD0F00FF000ECE0F00FF00F8
+:102800000ECF0F00FF000ED00F00FF000ED10F0003
+:10281000FF000ED20F00FF000ED30F00FF000ED4FA
+:102820000F00FF000ED50F00FF000ED60F00FF00B7
+:102830000ED70F00FF000ED80F00FF000ED90F00BB
+:10284000FF000EDA0F00FF000EDB0F00FF000EDCB2
+:102850000F00FF000EDD0F00FF000EDE0F10FF0067
+:102860000EDF0F10FF000EE00F00FF000EE10F0063
+:10287000FF000EE20F00FF000EE30F00FF000EE46A
+:102880000F00FF000EE50F00FF000EE60F00FF0037
+:102890000EE70F00FF000EE80F00FF000EE90F002B
+:1028A000FF000EEA0F00FF000EEB0F00FF000EEC22
+:1028B0000F00FF000EED0F00FF000EEE0F00FF00F7
+:1028C0000EEF0F00FF000E010F000E020F01FF00C0
+:1028D0000E010F010E020F01FF000E010F020E028A
+:1028E0000F01FF000E010F030E020F01FF000E018A
+:1028F0000F040E020F01FF000E010F050E020F0163
+:10290000FF000E010F060E020F01FF000E010F0760
+:102910000E020F01FF000E010F080E020F01FF0053
+:102920000E010F090E020F01FF000E010F0A0E0229
+:102930000F01FF000E010F0B0E020F01FF000E0131
+:102940000F0C0E020F01FF000E010F0D0E020F0102
+:10295000FF000E010F0E0E020F01FF000E010F0F00
+:102960000E020F01FF0008020B070A460D000C00C3
+:10297000FF000B070A490D000C00FF000B000A4B7B
+:102980000D030C11FF000B000A4D0D010C32FF006E
+:102990000B070A460D000C00FF000B070A490D004B
+:1029A0000C00FF000B070A400D000C00FF000B0796
+:1029B0000A410D000C00FF000B010A400D020C4003
+:1029C000FF000B010A410D020C60FF000B070A40DB
+:1029D0000D000C00FF000B070A410D000C00FF006A
+:1029E0000B070A470D000C00FF000B070A4A0D00F9
+:1029F0000C00FF000B000A470D010C00FF000B004C
+:102A00000A4A0D010C20FF000B070A470D000C00BD
+:102A1000FF000B070A4A0D000C00FF000B070A7CA1
+:102A20000D000C00FF000B070A7E0D000C00FF00DC
+:102A30000B000A000D010C1CFF000B070A7C0D00A7
+:102A40000C00FF000B070A7E0D000C00FF000B07B7
+:102A50000A440D000C00FF000B000A440D010C009D
+:102A6000FF000B070A440D000C00FF000B070A4291
+:102A70000D000C00FF000B070A430D000C00FF00C7
+:102A80000B000A420D010C1AFF000B000A430D0156
+:102A90000C20FF000B070A420D000C00FF000B0783
+:102AA0000A430D000C00FF000B070A400D000C004C
+:102AB000FF000B070A410D000C00FF000B010A404C
+:102AC0000D020C40FF000B010A410D020C60FF00DB
+:102AD0000B070A400D000C00FF000B070A410D0018
+:102AE0000C00FF000B070A440D0F0CFFFF000B0743
+:102AF0000A420D000C00FF000B070A430D000C00FA
+:102B0000FF000B070A400D000C00FF000B070A41F5
+:102B10000D000C00FF000B070A510D060C40FF00D2
+:102B20000B070A500D060C40FF000B070A4F0D0360
+:102B30000C81FF000B070A530D1A0C76FF000B07E0
+:102B40000A540D0D0C8BFF000B070A550D040CE900
+:102B5000FF000B070A560D0B0C17FF000B070A5757
+:102B60000D1A0C38FF000B070A580D0D0CC9FF0099
+:102B70000B070A590D040C6FFF000B070A5A0D0BC7
+:102B80000C91FF000B070A730D140CDAFF000B0702
+:102B90000A740D0D0C93FF000B070A750D040CD978
+:102BA000FF000B070A760D050C93FF000B070A7751
+:102BB0000D140CDAFF000B070A780D0D0C93FF00C3
+:102BC0000B070A790D040CD9FF000B070A7A0D05D3
+:102BD0000C93FF000B070A5E0D030C68FF000B0748
+:102BE0000A5C0D040C31FF000B070A5D0D040C316B
+:102BF000FF000B070A620D030C52FF000B070A606F
+:102C00000D040C76FF000B070A610D040C76FF0023
+:102C10000B070A660D030C2EFF000B070A640D0458
+:102C20000CDAFF000B070A650D040CDAFF000B0736
+:102C30000A6A0D020CF6FF000B070A680D050C620C
+:102C4000FF000B070A690D050C62FF000B060A4620
+:102C50000D0A0C22FF000B060A480D0D0C24FF0084
+:102C60000B060A6E0D110CD3FF000B060A700D1532
+:102C70000CCBFF000B060A520D200C93FF000B0635
+:102C80000A540D200C54FF000B060A4A0D270C1D98
+:102C9000FF000B060A580D2F0CC8FF000B060A5C3C
+:102CA0000D300C07FF000B060A4C0D370C90FF008F
+:102CB0000B060A600D3D0CDBFF000B060A640D3E9F
+:102CC0000C42FF000B060A4E0D450C78FF000B0668
+:102CD0000A680D4C0C48FF000B060A6C0D4C0C6C7E
+:102CE000FF000B060A500D520CE2FF000B060A42D1
+:102CF0000D020CBAFF00FF000E1E0F14FF000EDEC7
+:102D00000F20FF000EDF0F20FF000B060A780D00DA
+:102D10000C40FF000B070A030D0F0CFFFF000B0711
+:102D20000A0B0D0F0CFFFF000B070A020D000C0031
+:102D3000FF000B070A0A0D000C00FF000B070A46F4
+:102D40000D000C00FF000B070A490D000C000905DF
+:102D50000B000A100D000C00FF000D000C00FF001E
+:102D60000D020C00FF000D000C00FF000D000C0018
+:102D7000FF000D000C00FF000D000C00FF000D0017
+:102D80000C00FF000D000C00FF000D000C00FF0008
+:102D90000D000C00FF000D000C00FF000D000C00EA
+:102DA000FF000D000C00FF000D000C00FF000D00E7
+:102DB0000C00FF000D000C00FF000D000C00FF00D8
+:102DC0000D000C00FF000D000C00FF000D000C00BA
+:102DD000FF000D000C00FF000D000C00FF000D00B7
+:102DE0000C00FF000D000C00FF000D000C00FF00A8
+:102DF0000D000C00FF000D000C00FF000D000C008A
+:102E0000FF000D000C00FF000D000C00FF000D0086
+:102E10000C00FF000D000C00FF000D000C00FF0077
+:102E20000D000C00FF000D000C00FF000D000C0059
+:102E3000FF000D000C00FF000D000C00FF000D0056
+:102E40000C00FF000D000C00FF000D000C00FF0047
+:102E50000D000C00FF000D000C00FF000D000C0029
+:102E6000FF000D000C00FF000D000C00FF000D0026
+:102E70000C00FF0009050B010A100D010CC0FF003A
+:102E80000D010CFAFF000D000C1AFF000D000C00E4
+:102E9000FF000D000C00FF000D000C00FF000D00F6
+:102EA0000C00FF000D000C00FF000D000C00FF00E7
+:102EB0000D000C00FF000D000C00FF000D000C00C9
+:102EC000FF000D000C00FF000D000C00FF000D00C6
+:102ED0000C00FF000D000C00FF000D000C00FF00B7
+:102EE0000D000C00FF000D000C00FF000D000C0099
+:102EF000FF000D000C00FF000D000C00FF000D0096
+:102F00000C00FF000D000C00FF000D000C00FF0086
+:102F10000D000C00FF000D000C00FF000D000C0068
+:102F2000FF000D000C00FF000D000C00FF000D0065
+:102F30000C00FF000D000C00FF000D000C00FF0056
+:102F40000D000C00FF000D000C00FF000D000C0038
+:102F5000FF000D000C00FF000D000C00FF000D0035
+:102F60000C00FF000D000C00FF000D000C00FF0026
+:102F70000D000C00FF000D000C00FF000D000C0008
+:102F8000FF000D000C00FF000D000C00FF000D0005
+:102F90000C00FF000D000C00FF00FF00FF00090502
+:102FA0000B020A100C46FF000C46FF000C00FF004D
+:102FB0000C00FF000C00FF000C00FF000C00FF00E5
+:102FC0000C00FF000C00FF000C00FF000C00FF00D5
+:102FD0000C00FF000C00FF000C00FF000C00FF00C5
+:102FE0000C00FF000C00FF000C00FF000C00FF00B5
+:102FF0000C00FF000C00FF000C00FF000C00FF00A5
+:103000000C00FF000C00FF000C00FF000C00FF0094
+:103010000C00FF000C00FF000C00FF000C00FF0084
+:103020000C00FF000C00FF000C00FF000C00FF0074
+:103030000C00FF000C00FF000C00FF000C00FF0064
+:103040000C00FF000C00FF000C00FF000C00FF0054
+:103050000C00FF000C00FF000C00FF000C00FF0044
+:103060000C00FF0009050B030A100C00FF000C0008
+:10307000FF000C00FF000C00FF000C00FF000C0024
+:10308000FF000C00FF000C00FF000C00FF000C0014
+:10309000FF000C00FF000C00FF000C00FF000C0004
+:1030A000FF000C00FF000C00FF000C00FF000C00F4
+:1030B000FF000C00FF000C00FF000C00FF000C00E4
+:1030C000FF000C00FF000C00FF000C00FF000C00D4
+:1030D000FF000C00FF000C00FF000C00FF000C00C4
+:1030E000FF000C00FF000C00FF000C00FF000C00B4
+:1030F000FF000C00FF000C00FF000C00FF000C00A4
+:10310000FF000C00FF000C00FF000C00FF000C0093
+:10311000FF000C00FF000C00FF000C00FF000C0083
+:10312000FF000C00FF000C00FF0009050B040A1053
+:103130000C00FF000C00FF000C00FF000C00FF0063
+:103140000C00FF000C00FF000C00FF000C00FF0053
+:103150000C00FF000C00FF000C00FF000C00FF0043
+:103160000C00FF000C00FF000C00FF000C00FF0033
+:103170000C00FF000C00FF000C00FF000C00FF0023
+:103180000C00FF000C00FF000C00FF000C00FF0013
+:103190000C00FF000C00FF000C00FF000C00FF0003
+:1031A0000C00FF000C00FF000C00FF000C00FF00F3
+:1031B0000C00FF000C00FF000C00FF000C00FF00E3
+:1031C0000C00FF000C00FF000C00FF000C00FF00D3
+:1031D0000C00FF000C00FF000C00FF000C00FF00C3
+:1031E0000C00FF000C00FF000C00FF000C00FF00B3
+:1031F00009010B060A100D000C00FF000A120D0059
+:103200000C00FF000A140D000C00FF000A160D0050
+:103210000C00FF000A180D000C00FF000A1A0D0038
+:103220000C00FF000A1C0D000C00FF000A1E0D0020
+:103230000C00FF000A200D000C00FF000A220D0008
+:103240000C00FF000A240D000C00FF000A260D00F0
+:103250000C00FF000A280D000C00FF000A2A0D00D8
+:103260000C00FF000A2C0D000C00FF000A2E0D00C0
+:103270000C00FF000A300D000C00FF000A320D00A8
+:103280000C00FF000A340D000C00FF000A360D0090
+:103290000C00FF000A380D000C00FF000A3A0D0078
+:1032A0000C00FF000A3C0D000C00FF000A3E0D0060
+:1032B0000C00FF0009050B070A100D0F0CFFFF00A3
+:1032C0000D0F0CFFFF000D000C00FF000D000C00A7
+:1032D000FF000D000C00FF000D000C00FF000D00B2
+:1032E0000C00FF000D000C00FF000D000C00FF00A3
+:1032F0000D000C00FF000D000C00FF000D000C0085
+:10330000FF000D000C00FF000D000C00FF000D0081
+:103310000C00FF000D000C00FF000D000C00FF0072
+:103320000D000C00FF000D000C00FF000D000C0054
+:10333000FF000D000C00FF000D000C00FF000D0051
+:103340000C00FF000D000C00FF000D000C00FF0042
+:103350000D000C00FF000D000C00FF000D000C0024
+:10336000FF000D000C00FF000D000C00FF000D0021
+:103370000C00FF000D000C00FF000D000C00FF0012
+:103380000D000C00FF000D000C00FF000D000C00F4
+:10339000FF000D000C00FF000D000C00FF000D00F1
+:1033A0000C00FF000D000C00FF000D000C00FF00E2
+:1033B0000D000C00FF000D000C00FF000D000C00C4
+:1033C000FF000D000C00FF000D000C00FF000D00C1
+:1033D0000C00FF000D000C00FF000E010F00FF00AD
+:1033E0000E020F00FF000E010F01FF000E020F0082
+:1033F000FF000E010F02FF000E020F00FF000E0182
+:103400000F03FF000E020F00FF000E010F04FF006C
+:103410000E020F00FF000E010F05FF000E020F004D
+:10342000FF000E010F06FF000E020F00FF000E014D
+:103430000F07FF000E020F00FF000EB00F20FF006D
+:103440000EB10F20FF000EB20F20FF000EB30F20B1
+:10345000FF000EB40F20FF000EB50F20FF000EB6C8
+:103460000F20FF000EB70F20FF000EF00F20FF000F
+:103470000EF10F20FF000EF20F20FF000EF30F20C1
+:10348000FF000EF40F20FF000EF50F20FF000EF6D8
+:103490000F20FF000EF70F20FF000E100FFFFF00A0
+:1034A0000E110FFFFF000E120FFFFF000E130FFF94
+:1034B000FF000E140FFFFF000E150FFFFF000E168A
+:1034C0000FFFFF000E170FFFFF000E200FFFFF0082
+:1034D0000E210FFFFF000E220FFFFF000E230FFF34
+:1034E000FF000E240FFFFF000E250FFFFF000E262A
+:1034F0000FFFFF000E270FFFFF000E300F00FF0031
+:103500000E310F00FF000E320F00FF000E330F00D0
+:10351000FF000E340F00FF000E350F00FF000E36C7
+:103520000F00FF000E370F00FF000E400F00FF00DE
+:103530000E410F00FF000E420F00FF000E430F0070
+:10354000FF000E440F00FF000E450F00FF000E4667
+:103550000F00FF000E470F00FF000E500F00FF008E
+:103560000E510F00FF000E520F00FF000E530F0010
+:10357000FF000E540F00FF000E550F00FF000E5607
+:103580000F00FF000E570F00FF000E600F00FF003E
+:103590000E610F00FF000E620F00FF000E630F00B0
+:1035A000FF000E640F00FF000E650F00FF000E66A7
+:1035B0000F00FF000E670F00FF000E700FC0FF002E
+:1035C0000E710FC0FF000E720FC0FF000E730FC010
+:1035D000FF000E740FC0FF000E750FC0FF000E76C7
+:1035E0000FC0FF000E770FC0FF000E800F00FF001E
+:1035F0000E810F00FF000E820F00FF000E830F00F0
+:10360000FF000E840F00FF000E850F00FF000E86E6
+:103610000F00FF000E870F00FF000E900F00FF004D
+:103620000E910F00FF000E920F00FF000E930F008F
+:10363000FF000E940F00FF000E950F00FF000E9686
+:103640000F00FF000E970F00FF000EA00F00FF00FD
+:103650000EA10F00FF000EA20F00FF000EA30F002F
+:10366000FF000EA40F00FF000EA50F00FF000EA626
+:103670000F00FF000EA70F00FF000EC00F00FF009D
+:103680000EC10F00FF000EC20F00FF000EC30F009F
+:10369000FF000EC40F00FF000EC50F00FF000EC696
+:1036A0000F00FF000EC70F00FF000ED00F00FF003D
+:1036B0000ED10F00FF000ED20F00FF000ED30F003F
+:1036C000FF000ED40F00FF000ED50F00FF000ED636
+:1036D0000F00FF000ED70F00FF000EE00F00FF00ED
+:1036E0000EE10F00FF000EE20F00FF000EE30F00DF
+:1036F000FF000EE40F00FF000EE50F00FF000EE6D6
+:103700000F00FF000EE70F00FF000E010F00FF008B
+:103710000E020F01FF000E010F01FF000E020F014C
+:10372000FF000E010F02FF000E020F01FF000E014D
+:103730000F03FF000E020F01FF000E010F04FF0038
+:103740000E020F01FF000E010F05FF000E020F0118
+:10375000FF000E010F06FF000E020F01FF000E0119
+:103760000F07FF000E020F01FF000B070A460D00B6
+:103770000C00FF000B070A490D000C00FF000B07AF
+:103780000A450D0F0CFFFF000B070A480D0F0CFF39
+:10379000FF000B070A7B0D040CCCFF000B070A7D12
+:1037A0000D040CCCFF000B070A7C0D000C00FF0081
+:1037B0000B070A7E0D000C00FF000B070A460D00E8
+:1037C0000C00FF000B070A490D000C00FF000B075F
+:1037D0000A470D000C00FF000B070A4A0D000C0001
+:1037E000FF000B070A4C0D000C00FF000B070A4EF0
+:1037F0000D000C00FF000B070A4C0D000C000B071E
+:103800000A4E0D000C000B070A4C0D000C280B078C
+:103810000A4E0D000C280B070A4C0D000C510B072B
+:103820000A4E0D000C510B070A4C0D000C7A0B07C9
+:103830000A4E0D000C7A0B070A4C0D000CA30B0767
+:103840000A4E0D000CA30B070A4C0D000CCC0B0705
+:103850000A4E0D000CCC0B070A4C0D000CF50B07A3
+:103860000A4E0D000CF50B070A4C0D010C1E0B0740
+:103870000A4E0D010C1E0B070A4C0D010C470B07DD
+:103880000A4E0D010C470B070A4C0D010C700B077B
+:103890000A4E0D010C700B070A4C0D010C990B0719
+:1038A0000A4E0D010C990B070A4C0D010CC20B07B7
+:1038B0000A4E0D010CC20B070A4C0D010CEB0B0755
+:1038C0000A4E0D010CEB0B070A4C0D020C140B07F2
+:1038D0000A4E0D020C140B070A4C0D020C3D0B078F
+:1038E0000A4E0D020C3D0B070A4C0D020C660B072D
+:1038F0000A4E0D020C660B070A4C0D020C8F0B07CB
+:103900000A4E0D020C8F0B070A4C0D020CB80B0768
+:103910000A4E0D020CB80B070A4C0D020CE10B0706
+:103920000A4E0D020CE10B070A4C0D030C0A0B07A3
+:103930000A4E0D030C0A0B070A4C0D030C330B0740
+:103940000A4E0D030C330B070A4C0D030C5C0B07DE
+:103950000A4E0D030C5C0B070A4C0D030C850B077C
+:103960000A4E0D030C850B070A4C0D030CAE0B071A
+:103970000A4E0D030CAE0B070A4C0D030CD70B07B8
+:103980000A4E0D030CD70B070A4C0D040C000B0755
+:103990000A4E0D040C000B070A4C0D040C280B07F3
+:1039A0000A4E0D040C280B070A4C0D040C510B0792
+:1039B0000A4E0D040C510B070A4C0D040C7A0B0730
+:1039C0000A4E0D040C7A0B070A4C0D040CA30B07CE
+:1039D0000A4E0D040CA30B070A4C0D040CCC0B076C
+:1039E0000A4E0D040CCC0B070A4C0D040CF50B070A
+:1039F0000A4E0D040CF50B070A4C0D050C1E0B07A7
+:103A00000A4E0D050C1E0B070A4C0D050C470B0743
+:103A10000A4E0D050C470B070A4C0D050C700B07E1
+:103A20000A4E0D050C700B070A4C0D050C990B077F
+:103A30000A4E0D050C990B070A4C0D050CC20B071D
+:103A40000A4E0D050CC20B070A4C0D050CEB0B07BB
+:103A50000A4E0D050CEB0B070A4C0D060C140B0758
+:103A60000A4E0D060C140B070A4C0D060C3D0B07F5
+:103A70000A4E0D060C3D0B070A4C0D060C660B0793
+:103A80000A4E0D060C660B070A4C0D060C8F0B0731
+:103A90000A4E0D060C8F0B070A4C0D060CB80B07CF
+:103AA0000A4E0D060CB80B070A4C0D060CE10B076D
+:103AB0000A4E0D060CE10B070A4C0D070C0A0B070A
+:103AC0000A4E0D070C0A0B070A4C0D070C330B07A7
+:103AD0000A4E0D070C330B070A4C0D070C5C0B0745
+:103AE0000A4E0D070C5C0B070A4C0D070C850B07E3
+:103AF0000A4E0D070C850B070A4C0D070CAE0B0781
+:103B00000A4E0D070CAE0B070A4C0D070CD70B071E
+:103B10000A4E0D070CD70B070A4C0D080C000B07BB
+:103B20000A4E0D080C000B070A4C0D080C280B0759
+:103B30000A4E0D080C280B070A4C0D080C510B07F8
+:103B40000A4E0D080C510B070A4C0D080C7A0B0796
+:103B50000A4E0D080C7A0B070A4C0D080CA30B0734
+:103B60000A4E0D080CA30B070A4C0D080CCC0B07D2
+:103B70000A4E0D080CCC0B070A4C0D080CF50B0770
+:103B80000A4E0D080CF50B070A4C0D090C1E0B070D
+:103B90000A4E0D090C1E0B070A4C0D090C470B07AA
+:103BA0000A4E0D090C470B070A4C0D090C700B0748
+:103BB0000A4E0D090C700B070A4C0D090C990B07E6
+:103BC0000A4E0D090C990B070A4C0D090CC20B0784
+:103BD0000A4E0D090CC20B070A4C0D090CEB0B0722
+:103BE0000A4E0D090CEB0B070A4C0D0A0C140B07BF
+:103BF0000A4E0D0A0C140B070A4C0D0A0C3D0B075C
+:103C00000A4E0D0A0C3D0B070A4C0D0A0C660B07F9
+:103C10000A4E0D0A0C660B070A4C0D0A0C8F0B0797
+:103C20000A4E0D0A0C8F0B070A4C0D0A0CB80B0735
+:103C30000A4E0D0A0CB80B070A4C0D0A0CE10B07D3
+:103C40000A4E0D0A0CE10B070A4C0D0B0C0A0B0770
+:103C50000A4E0D0B0C0A0B070A4C0D0B0C330B070D
+:103C60000A4E0D0B0C330B070A4C0D0B0C5C0B07AB
+:103C70000A4E0D0B0C5C0B070A4C0D0B0C850B0749
+:103C80000A4E0D0B0C850B070A4C0D0B0CAE0B07E7
+:103C90000A4E0D0B0CAE0B070A4C0D0B0CD70B0785
+:103CA0000A4E0D0B0CD70B070A4C0D0C0C000B0722
+:103CB0000A4E0D0C0C000B070A4C0D0C0C280B07C0
+:103CC0000A4E0D0C0C280B070A4C0D0C0C510B075F
+:103CD0000A4E0D0C0C510B070A4C0D0C0C7A0B07FD
+:103CE0000A4E0D0C0C7A0B070A4C0D0C0CA30B079B
+:103CF0000A4E0D0C0CA30B070A4C0D0C0CCC0B0739
+:103D00000A4E0D0C0CCC0B070A4C0D0C0CF50B07D6
+:103D10000A4E0D0C0CF50B070A4C0D0D0C1E0B0773
+:103D20000A4E0D0D0C1E0B070A4C0D0D0C470B0710
+:103D30000A4E0D0D0C470B070A4C0D0D0C700B07AE
+:103D40000A4E0D0D0C700B070A4C0D0D0C990B074C
+:103D50000A4E0D0D0C990B070A4C0D0D0CC20B07EA
+:103D60000A4E0D0D0CC20B070A4C0D0D0CEB0B0788
+:103D70000A4E0D0D0CEB0B070A4C0D0E0C140B0725
+:103D80000A4E0D0E0C140B070A4C0D0E0C3D0B07C2
+:103D90000A4E0D0E0C3D0B070A4C0D0E0C660B0760
+:103DA0000A4E0D0E0C660B070A4C0D0E0C8F0B07FE
+:103DB0000A4E0D0E0C8F0B070A4C0D0E0CB80B079C
+:103DC0000A4E0D0E0CB80B070A4C0D0E0CE10B073A
+:103DD0000A4E0D0E0CE10B070A4C0D0F0C0A0B07D7
+:103DE0000A4E0D0F0C0A0B070A4C0D0F0C330B0774
+:103DF0000A4E0D0F0C330B070A4C0D0F0C5C0B0712
+:103E00000A4E0D0F0C5C0B070A4C0D0F0C850B07AF
+:103E10000A4E0D0F0C850B070A4C0D0F0CAE0B074D
+:103E20000A4E0D0F0CAE0B070A4C0D0F0CD70B07EB
+:103E30000A4E0D0F0CD70B070A4C0D0F0CFF0B078A
+:0A3E40000A4E0D0F0CFF0800FF00F2
+:00000001FF
index ac77d8b8251da9cb6ac720db55e8b7e72ec97a91..6132353dcf62a5a167d62d6d34f2343fd5a4533a 100644 (file)
@@ -342,7 +342,7 @@ static int ext4_valid_extent_idx(struct inode *inode,
        ext4_fsblk_t block = idx_pblock(ext_idx);
        struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
        if (unlikely(block < le32_to_cpu(es->s_first_data_block) ||
-                       (block > ext4_blocks_count(es))))
+                       (block >= ext4_blocks_count(es))))
                return 0;
        else
                return 1;
index a2e7952bc5f9a6e3f3ed877dde89fb93ef4b4035..c6bd6ced3bb75c666c59c561d76c9f3abad89071 100644 (file)
@@ -372,16 +372,16 @@ static int ext4_block_to_path(struct inode *inode,
 }
 
 static int __ext4_check_blockref(const char *function, struct inode *inode,
-                                unsigned int *p, unsigned int max) {
+                                __le32 *p, unsigned int max) {
 
        unsigned int maxblocks = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es);
-       unsigned int *bref = p;
+       __le32 *bref = p;
        while (bref < p+max) {
-               if (unlikely(*bref >= maxblocks)) {
+               if (unlikely(le32_to_cpu(*bref) >= maxblocks)) {
                        ext4_error(inode->i_sb, function,
                                   "block reference %u >= max (%u) "
                                   "in inode #%lu, offset=%d",
-                                  *bref, maxblocks,
+                                  le32_to_cpu(*bref), maxblocks,
                                   inode->i_ino, (int)(bref-p));
                        return -EIO;
                }
index 9987bba99db3cc62c2faa887b95783676f83b480..2958f4e6f222a8956f595145b1fe31e16e4eec9d 100644 (file)
@@ -2508,6 +2508,15 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
        if (EXT4_BLOCKS_PER_GROUP(sb) == 0)
                goto cantfind_ext4;
 
+       /* check blocks count against device size */
+       blocks_count = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits;
+       if (blocks_count && ext4_blocks_count(es) > blocks_count) {
+               printk(KERN_WARNING "EXT4-fs: bad geometry: block count %llu "
+                      "exceeds size of device (%llu blocks)\n",
+                      ext4_blocks_count(es), blocks_count);
+               goto failed_mount;
+       }
+
         /*
          * It makes no sense for the first data block to be beyond the end
          * of the filesystem.
diff --git a/include/asm-frv/Kbuild b/include/asm-frv/Kbuild
deleted file mode 100644 (file)
index 0f8956d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-include include/asm-generic/Kbuild.asm
-
-header-y += registers.h
-
-unifdef-y += termios.h
diff --git a/include/asm-frv/atomic.h b/include/asm-frv/atomic.h
deleted file mode 100644 (file)
index 296c35c..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/* atomic.h: atomic operation emulation for FR-V
- *
- * For an explanation of how atomic ops work in this arch, see:
- *   Documentation/frv/atomic-ops.txt
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_ATOMIC_H
-#define _ASM_ATOMIC_H
-
-#include <linux/types.h>
-#include <asm/spr-regs.h>
-#include <asm/system.h>
-
-#ifdef CONFIG_SMP
-#error not SMP safe
-#endif
-
-/*
- * Atomic operations that C can't guarantee us.  Useful for
- * resource counting etc..
- *
- * We do not have SMP systems, so we don't have to deal with that.
- */
-
-/* Atomic operations are already serializing */
-#define smp_mb__before_atomic_dec()    barrier()
-#define smp_mb__after_atomic_dec()     barrier()
-#define smp_mb__before_atomic_inc()    barrier()
-#define smp_mb__after_atomic_inc()     barrier()
-
-#define ATOMIC_INIT(i)         { (i) }
-#define atomic_read(v)         ((v)->counter)
-#define atomic_set(v, i)       (((v)->counter) = (i))
-
-#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
-static inline int atomic_add_return(int i, atomic_t *v)
-{
-       unsigned long val;
-
-       asm("0:                                         \n"
-           "   orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
-           "   ckeq            icc3,cc7                \n"
-           "   ld.p            %M0,%1                  \n"     /* LD.P/ORCR must be atomic */
-           "   orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
-           "   add%I2          %1,%2,%1                \n"
-           "   cst.p           %1,%M0          ,cc3,#1 \n"
-           "   corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* clear ICC3.Z if store happens */
-           "   beq             icc3,#0,0b              \n"
-           : "+U"(v->counter), "=&r"(val)
-           : "NPr"(i)
-           : "memory", "cc7", "cc3", "icc3"
-           );
-
-       return val;
-}
-
-static inline int atomic_sub_return(int i, atomic_t *v)
-{
-       unsigned long val;
-
-       asm("0:                                         \n"
-           "   orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
-           "   ckeq            icc3,cc7                \n"
-           "   ld.p            %M0,%1                  \n"     /* LD.P/ORCR must be atomic */
-           "   orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
-           "   sub%I2          %1,%2,%1                \n"
-           "   cst.p           %1,%M0          ,cc3,#1 \n"
-           "   corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* clear ICC3.Z if store happens */
-           "   beq             icc3,#0,0b              \n"
-           : "+U"(v->counter), "=&r"(val)
-           : "NPr"(i)
-           : "memory", "cc7", "cc3", "icc3"
-           );
-
-       return val;
-}
-
-#else
-
-extern int atomic_add_return(int i, atomic_t *v);
-extern int atomic_sub_return(int i, atomic_t *v);
-
-#endif
-
-static inline int atomic_add_negative(int i, atomic_t *v)
-{
-       return atomic_add_return(i, v) < 0;
-}
-
-static inline void atomic_add(int i, atomic_t *v)
-{
-       atomic_add_return(i, v);
-}
-
-static inline void atomic_sub(int i, atomic_t *v)
-{
-       atomic_sub_return(i, v);
-}
-
-static inline void atomic_inc(atomic_t *v)
-{
-       atomic_add_return(1, v);
-}
-
-static inline void atomic_dec(atomic_t *v)
-{
-       atomic_sub_return(1, v);
-}
-
-#define atomic_dec_return(v)           atomic_sub_return(1, (v))
-#define atomic_inc_return(v)           atomic_add_return(1, (v))
-
-#define atomic_sub_and_test(i,v)       (atomic_sub_return((i), (v)) == 0)
-#define atomic_dec_and_test(v)         (atomic_sub_return(1, (v)) == 0)
-#define atomic_inc_and_test(v)         (atomic_add_return(1, (v)) == 0)
-
-/*****************************************************************************/
-/*
- * exchange value with memory
- */
-#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
-
-#define xchg(ptr, x)                                                           \
-({                                                                             \
-       __typeof__(ptr) __xg_ptr = (ptr);                                       \
-       __typeof__(*(ptr)) __xg_orig;                                           \
-                                                                               \
-       switch (sizeof(__xg_orig)) {                                            \
-       case 4:                                                                 \
-               asm volatile(                                                   \
-                       "swap%I0 %M0,%1"                                        \
-                       : "+m"(*__xg_ptr), "=r"(__xg_orig)                      \
-                       : "1"(x)                                                \
-                       : "memory"                                              \
-                       );                                                      \
-               break;                                                          \
-                                                                               \
-       default:                                                                \
-               __xg_orig = (__typeof__(__xg_orig))0;                           \
-               asm volatile("break");                                          \
-               break;                                                          \
-       }                                                                       \
-                                                                               \
-       __xg_orig;                                                              \
-})
-
-#else
-
-extern uint32_t __xchg_32(uint32_t i, volatile void *v);
-
-#define xchg(ptr, x)                                                                           \
-({                                                                                             \
-       __typeof__(ptr) __xg_ptr = (ptr);                                                       \
-       __typeof__(*(ptr)) __xg_orig;                                                           \
-                                                                                               \
-       switch (sizeof(__xg_orig)) {                                                            \
-       case 4: __xg_orig = (__typeof__(*(ptr))) __xchg_32((uint32_t) x, __xg_ptr);     break;  \
-       default:                                                                                \
-               __xg_orig = (__typeof__(__xg_orig))0;                                                                   \
-               asm volatile("break");                                                          \
-               break;                                                                          \
-       }                                                                                       \
-       __xg_orig;                                                                              \
-})
-
-#endif
-
-#define tas(ptr) (xchg((ptr), 1))
-
-#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), old, new))
-#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
-
-static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
-{
-       int c, old;
-       c = atomic_read(v);
-       for (;;) {
-               if (unlikely(c == (u)))
-                       break;
-               old = atomic_cmpxchg((v), c, c + (a));
-               if (likely(old == c))
-                       break;
-               c = old;
-       }
-       return c != (u);
-}
-
-#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
-
-#include <asm-generic/atomic.h>
-#endif /* _ASM_ATOMIC_H */
diff --git a/include/asm-frv/auxvec.h b/include/asm-frv/auxvec.h
deleted file mode 100644 (file)
index 0771077..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef __FRV_AUXVEC_H
-#define __FRV_AUXVEC_H
-
-#endif
diff --git a/include/asm-frv/ax88796.h b/include/asm-frv/ax88796.h
deleted file mode 100644 (file)
index 637e980..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* ax88796.h: access points to the driver for the AX88796 NE2000 clone
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_AX88796_H
-#define _ASM_AX88796_H
-
-#include <asm/mb-regs.h>
-
-#define AX88796_IOADDR         (__region_CS1 + 0x200)
-#define AX88796_IRQ            IRQ_CPU_EXTERNAL7
-#define AX88796_FULL_DUPLEX    0                       /* force full duplex */
-#define AX88796_BUS_INFO       "CS1#+0x200"            /* bus info for ethtool */
-
-#endif /* _ASM_AX88796_H */
diff --git a/include/asm-frv/bitops.h b/include/asm-frv/bitops.h
deleted file mode 100644 (file)
index 287f6f6..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-/* bitops.h: bit operations for the Fujitsu FR-V CPUs
- *
- * For an explanation of how atomic ops work in this arch, see:
- *   Documentation/frv/atomic-ops.txt
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_BITOPS_H
-#define _ASM_BITOPS_H
-
-#include <linux/compiler.h>
-#include <asm/byteorder.h>
-
-#ifdef __KERNEL__
-
-#ifndef _LINUX_BITOPS_H
-#error only <linux/bitops.h> can be included directly
-#endif
-
-#include <asm-generic/bitops/ffz.h>
-
-/*
- * clear_bit() doesn't provide any barrier for the compiler.
- */
-#define smp_mb__before_clear_bit()     barrier()
-#define smp_mb__after_clear_bit()      barrier()
-
-#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
-static inline
-unsigned long atomic_test_and_ANDNOT_mask(unsigned long mask, volatile unsigned long *v)
-{
-       unsigned long old, tmp;
-
-       asm volatile(
-               "0:                                             \n"
-               "       orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
-               "       ckeq            icc3,cc7                \n"
-               "       ld.p            %M0,%1                  \n"     /* LD.P/ORCR are atomic */
-               "       orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
-               "       and%I3          %1,%3,%2                \n"
-               "       cst.p           %2,%M0          ,cc3,#1 \n"     /* if store happens... */
-               "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* ... clear ICC3.Z */
-               "       beq             icc3,#0,0b              \n"
-               : "+U"(*v), "=&r"(old), "=r"(tmp)
-               : "NPr"(~mask)
-               : "memory", "cc7", "cc3", "icc3"
-               );
-
-       return old;
-}
-
-static inline
-unsigned long atomic_test_and_OR_mask(unsigned long mask, volatile unsigned long *v)
-{
-       unsigned long old, tmp;
-
-       asm volatile(
-               "0:                                             \n"
-               "       orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
-               "       ckeq            icc3,cc7                \n"
-               "       ld.p            %M0,%1                  \n"     /* LD.P/ORCR are atomic */
-               "       orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
-               "       or%I3           %1,%3,%2                \n"
-               "       cst.p           %2,%M0          ,cc3,#1 \n"     /* if store happens... */
-               "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* ... clear ICC3.Z */
-               "       beq             icc3,#0,0b              \n"
-               : "+U"(*v), "=&r"(old), "=r"(tmp)
-               : "NPr"(mask)
-               : "memory", "cc7", "cc3", "icc3"
-               );
-
-       return old;
-}
-
-static inline
-unsigned long atomic_test_and_XOR_mask(unsigned long mask, volatile unsigned long *v)
-{
-       unsigned long old, tmp;
-
-       asm volatile(
-               "0:                                             \n"
-               "       orcc            gr0,gr0,gr0,icc3        \n"     /* set ICC3.Z */
-               "       ckeq            icc3,cc7                \n"
-               "       ld.p            %M0,%1                  \n"     /* LD.P/ORCR are atomic */
-               "       orcr            cc7,cc7,cc3             \n"     /* set CC3 to true */
-               "       xor%I3          %1,%3,%2                \n"
-               "       cst.p           %2,%M0          ,cc3,#1 \n"     /* if store happens... */
-               "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     /* ... clear ICC3.Z */
-               "       beq             icc3,#0,0b              \n"
-               : "+U"(*v), "=&r"(old), "=r"(tmp)
-               : "NPr"(mask)
-               : "memory", "cc7", "cc3", "icc3"
-               );
-
-       return old;
-}
-
-#else
-
-extern unsigned long atomic_test_and_ANDNOT_mask(unsigned long mask, volatile unsigned long *v);
-extern unsigned long atomic_test_and_OR_mask(unsigned long mask, volatile unsigned long *v);
-extern unsigned long atomic_test_and_XOR_mask(unsigned long mask, volatile unsigned long *v);
-
-#endif
-
-#define atomic_clear_mask(mask, v)     atomic_test_and_ANDNOT_mask((mask), (v))
-#define atomic_set_mask(mask, v)       atomic_test_and_OR_mask((mask), (v))
-
-static inline int test_and_clear_bit(int nr, volatile void *addr)
-{
-       volatile unsigned long *ptr = addr;
-       unsigned long mask = 1UL << (nr & 31);
-       ptr += nr >> 5;
-       return (atomic_test_and_ANDNOT_mask(mask, ptr) & mask) != 0;
-}
-
-static inline int test_and_set_bit(int nr, volatile void *addr)
-{
-       volatile unsigned long *ptr = addr;
-       unsigned long mask = 1UL << (nr & 31);
-       ptr += nr >> 5;
-       return (atomic_test_and_OR_mask(mask, ptr) & mask) != 0;
-}
-
-static inline int test_and_change_bit(int nr, volatile void *addr)
-{
-       volatile unsigned long *ptr = addr;
-       unsigned long mask = 1UL << (nr & 31);
-       ptr += nr >> 5;
-       return (atomic_test_and_XOR_mask(mask, ptr) & mask) != 0;
-}
-
-static inline void clear_bit(int nr, volatile void *addr)
-{
-       test_and_clear_bit(nr, addr);
-}
-
-static inline void set_bit(int nr, volatile void *addr)
-{
-       test_and_set_bit(nr, addr);
-}
-
-static inline void change_bit(int nr, volatile void * addr)
-{
-       test_and_change_bit(nr, addr);
-}
-
-static inline void __clear_bit(int nr, volatile void * addr)
-{
-       volatile unsigned long *a = addr;
-       int mask;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 31);
-       *a &= ~mask;
-}
-
-static inline void __set_bit(int nr, volatile void * addr)
-{
-       volatile unsigned long *a = addr;
-       int mask;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 31);
-       *a |= mask;
-}
-
-static inline void __change_bit(int nr, volatile void *addr)
-{
-       volatile unsigned long *a = addr;
-       int mask;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 31);
-       *a ^= mask;
-}
-
-static inline int __test_and_clear_bit(int nr, volatile void * addr)
-{
-       volatile unsigned long *a = addr;
-       int mask, retval;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 31);
-       retval = (mask & *a) != 0;
-       *a &= ~mask;
-       return retval;
-}
-
-static inline int __test_and_set_bit(int nr, volatile void * addr)
-{
-       volatile unsigned long *a = addr;
-       int mask, retval;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 31);
-       retval = (mask & *a) != 0;
-       *a |= mask;
-       return retval;
-}
-
-static inline int __test_and_change_bit(int nr, volatile void * addr)
-{
-       volatile unsigned long *a = addr;
-       int mask, retval;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 31);
-       retval = (mask & *a) != 0;
-       *a ^= mask;
-       return retval;
-}
-
-/*
- * This routine doesn't need to be atomic.
- */
-static inline int __constant_test_bit(int nr, const volatile void * addr)
-{
-       return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
-}
-
-static inline int __test_bit(int nr, const volatile void * addr)
-{
-       int     * a = (int *) addr;
-       int     mask;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 0x1f);
-       return ((mask & *a) != 0);
-}
-
-#define test_bit(nr,addr) \
-(__builtin_constant_p(nr) ? \
- __constant_test_bit((nr),(addr)) : \
- __test_bit((nr),(addr)))
-
-#include <asm-generic/bitops/find.h>
-
-/**
- * fls - find last bit set
- * @x: the word to search
- *
- * This is defined the same way as ffs:
- * - return 32..1 to indicate bit 31..0 most significant bit set
- * - return 0 to indicate no bits set
- */
-#define fls(x)                                         \
-({                                                     \
-       int bit;                                        \
-                                                       \
-       asm("   subcc   %1,gr0,gr0,icc0         \n"     \
-           "   ckne    icc0,cc4                \n"     \
-           "   cscan.p %1,gr0,%0       ,cc4,#1 \n"     \
-           "   csub    %0,%0,%0        ,cc4,#0 \n"     \
-           "   csub    %2,%0,%0        ,cc4,#1 \n"     \
-           : "=&r"(bit)                                \
-           : "r"(x), "r"(32)                           \
-           : "icc0", "cc4"                             \
-           );                                          \
-                                                       \
-       bit;                                            \
-})
-
-/**
- * fls64 - find last bit set in a 64-bit value
- * @n: the value to search
- *
- * This is defined the same way as ffs:
- * - return 64..1 to indicate bit 63..0 most significant bit set
- * - return 0 to indicate no bits set
- */
-static inline __attribute__((const))
-int fls64(u64 n)
-{
-       union {
-               u64 ll;
-               struct { u32 h, l; };
-       } _;
-       int bit, x, y;
-
-       _.ll = n;
-
-       asm("   subcc.p         %3,gr0,gr0,icc0         \n"
-           "   subcc           %4,gr0,gr0,icc1         \n"
-           "   ckne            icc0,cc4                \n"
-           "   ckne            icc1,cc5                \n"
-           "   norcr           cc4,cc5,cc6             \n"
-           "   csub.p          %0,%0,%0        ,cc6,1  \n"
-           "   orcr            cc5,cc4,cc4             \n"
-           "   andcr           cc4,cc5,cc4             \n"
-           "   cscan.p         %3,gr0,%0       ,cc4,0  \n"
-           "   setlos          #64,%1                  \n"
-           "   cscan.p         %4,gr0,%0       ,cc4,1  \n"
-           "   setlos          #32,%2                  \n"
-           "   csub.p          %1,%0,%0        ,cc4,0  \n"
-           "   csub            %2,%0,%0        ,cc4,1  \n"
-           : "=&r"(bit), "=r"(x), "=r"(y)
-           : "0r"(_.h), "r"(_.l)
-           : "icc0", "icc1", "cc4", "cc5", "cc6"
-           );
-       return bit;
-
-}
-
-/**
- * ffs - find first bit set
- * @x: the word to search
- *
- * - return 32..1 to indicate bit 31..0 most least significant bit set
- * - return 0 to indicate no bits set
- */
-static inline __attribute__((const))
-int ffs(int x)
-{
-       /* Note: (x & -x) gives us a mask that is the least significant
-        * (rightmost) 1-bit of the value in x.
-        */
-       return fls(x & -x);
-}
-
-/**
- * __ffs - find first bit set
- * @x: the word to search
- *
- * - return 31..0 to indicate bit 31..0 most least significant bit set
- * - if no bits are set in x, the result is undefined
- */
-static inline __attribute__((const))
-int __ffs(unsigned long x)
-{
-       int bit;
-       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(x & -x));
-       return 31 - bit;
-}
-
-/**
- * __fls - find last (most-significant) set bit in a long word
- * @word: the word to search
- *
- * Undefined if no set bit exists, so code should check against 0 first.
- */
-static inline unsigned long __fls(unsigned long word)
-{
-       unsigned long bit;
-       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(word));
-       return bit;
-}
-
-/*
- * special slimline version of fls() for calculating ilog2_u32()
- * - note: no protection against n == 0
- */
-#define ARCH_HAS_ILOG2_U32
-static inline __attribute__((const))
-int __ilog2_u32(u32 n)
-{
-       int bit;
-       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(n));
-       return 31 - bit;
-}
-
-/*
- * special slimline version of fls64() for calculating ilog2_u64()
- * - note: no protection against n == 0
- */
-#define ARCH_HAS_ILOG2_U64
-static inline __attribute__((const))
-int __ilog2_u64(u64 n)
-{
-       union {
-               u64 ll;
-               struct { u32 h, l; };
-       } _;
-       int bit, x, y;
-
-       _.ll = n;
-
-       asm("   subcc           %3,gr0,gr0,icc0         \n"
-           "   ckeq            icc0,cc4                \n"
-           "   cscan.p         %3,gr0,%0       ,cc4,0  \n"
-           "   setlos          #63,%1                  \n"
-           "   cscan.p         %4,gr0,%0       ,cc4,1  \n"
-           "   setlos          #31,%2                  \n"
-           "   csub.p          %1,%0,%0        ,cc4,0  \n"
-           "   csub            %2,%0,%0        ,cc4,1  \n"
-           : "=&r"(bit), "=r"(x), "=r"(y)
-           : "0r"(_.h), "r"(_.l)
-           : "icc0", "cc4"
-           );
-       return bit;
-}
-
-#include <asm-generic/bitops/sched.h>
-#include <asm-generic/bitops/hweight.h>
-#include <asm-generic/bitops/lock.h>
-
-#include <asm-generic/bitops/ext2-non-atomic.h>
-
-#define ext2_set_bit_atomic(lock,nr,addr)      test_and_set_bit  ((nr) ^ 0x18, (addr))
-#define ext2_clear_bit_atomic(lock,nr,addr)    test_and_clear_bit((nr) ^ 0x18, (addr))
-
-#include <asm-generic/bitops/minix-le.h>
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_BITOPS_H */
diff --git a/include/asm-frv/bug.h b/include/asm-frv/bug.h
deleted file mode 100644 (file)
index 6b1b44d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/* bug.h: FRV bug trapping
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_BUG_H
-#define _ASM_BUG_H
-
-#include <linux/linkage.h>
-
-#ifdef CONFIG_BUG
-/*
- * Tell the user there is some problem.
- */
-extern asmlinkage void __debug_bug_trap(int signr);
-
-#ifdef CONFIG_NO_KERNEL_MSG
-#define        _debug_bug_printk()
-#else
-extern void __debug_bug_printk(const char *file, unsigned line);
-#define        _debug_bug_printk() __debug_bug_printk(__FILE__, __LINE__)
-#endif
-
-#define _debug_bug_trap(signr)                 \
-do {                                           \
-       __debug_bug_trap(signr);                \
-       asm volatile("nop");                    \
-} while(0)
-
-#define HAVE_ARCH_BUG
-#define BUG()                                  \
-do {                                           \
-       _debug_bug_printk();                    \
-       _debug_bug_trap(6 /*SIGABRT*/);         \
-} while (0)
-
-#ifdef CONFIG_GDBSTUB
-#define HAVE_ARCH_KGDB_RAISE
-#define kgdb_raise(signr) do { _debug_bug_trap(signr); } while(0)
-
-#define HAVE_ARCH_KGDB_BAD_PAGE
-#define kgdb_bad_page(page) do { kgdb_raise(SIGABRT); } while(0)
-#endif
-#endif
-
-#include <asm-generic/bug.h>
-
-#endif
diff --git a/include/asm-frv/bugs.h b/include/asm-frv/bugs.h
deleted file mode 100644 (file)
index f2382be..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* bugs.h: arch bug checking entry
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-static inline void check_bugs(void)
-{
-}
diff --git a/include/asm-frv/busctl-regs.h b/include/asm-frv/busctl-regs.h
deleted file mode 100644 (file)
index bb0ff48..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* busctl-regs.h: FR400-series CPU bus controller registers
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_BUSCTL_REGS_H
-#define _ASM_BUSCTL_REGS_H
-
-/* bus controller registers */
-#define __get_LGCR()   ({ *(volatile unsigned long *)(0xfe000010); })
-#define __get_LMAICR() ({ *(volatile unsigned long *)(0xfe000030); })
-#define __get_LEMBR()  ({ *(volatile unsigned long *)(0xfe000040); })
-#define __get_LEMAM()  ({ *(volatile unsigned long *)(0xfe000048); })
-#define __get_LCR(R)   ({ *(volatile unsigned long *)(0xfe000100 + 8*(R)); })
-#define __get_LSBR(R)  ({ *(volatile unsigned long *)(0xfe000c00 + 8*(R)); })
-#define __get_LSAM(R)  ({ *(volatile unsigned long *)(0xfe000d00 + 8*(R)); })
-
-#define __set_LGCR(V)  do { *(volatile unsigned long *)(0xfe000010) = (V); } while(0)
-#define __set_LMAICR(V)        do { *(volatile unsigned long *)(0xfe000030) = (V); } while(0)
-#define __set_LEMBR(V) do { *(volatile unsigned long *)(0xfe000040) = (V); } while(0)
-#define __set_LEMAM(V) do { *(volatile unsigned long *)(0xfe000048) = (V); } while(0)
-#define __set_LCR(R,V) do { *(volatile unsigned long *)(0xfe000100 + 8*(R)) = (V); } while(0)
-#define __set_LSBR(R,V)        do { *(volatile unsigned long *)(0xfe000c00 + 8*(R)) = (V); } while(0)
-#define __set_LSAM(R,V)        do { *(volatile unsigned long *)(0xfe000d00 + 8*(R)) = (V); } while(0)
-
-/* FR401 SDRAM controller registers */
-#define __get_DBR(R)   ({ *(volatile unsigned long *)(0xfe000e00 + 8*(R)); })
-#define __get_DAM(R)   ({ *(volatile unsigned long *)(0xfe000f00 + 8*(R)); })
-
-/* FR551 SDRAM controller registers */
-#define __get_DARS(R)  ({ *(volatile unsigned long *)(0xfeff0100 + 8*(R)); })
-#define __get_DAMK(R)  ({ *(volatile unsigned long *)(0xfeff0110 + 8*(R)); })
-
-
-#endif /* _ASM_BUSCTL_REGS_H */
diff --git a/include/asm-frv/byteorder.h b/include/asm-frv/byteorder.h
deleted file mode 100644 (file)
index f29b759..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_BYTEORDER_H
-#define _ASM_BYTEORDER_H
-
-#include <linux/byteorder/big_endian.h>
-
-#endif /* _ASM_BYTEORDER_H */
diff --git a/include/asm-frv/cache.h b/include/asm-frv/cache.h
deleted file mode 100644 (file)
index 2797163..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* cache.h: FRV cache definitions
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef __ASM_CACHE_H
-#define __ASM_CACHE_H
-
-
-/* bytes per L1 cache line */
-#define L1_CACHE_SHIFT         (CONFIG_FRV_L1_CACHE_SHIFT)
-#define L1_CACHE_BYTES         (1 << L1_CACHE_SHIFT)
-
-#define __cacheline_aligned    __attribute__((aligned(L1_CACHE_BYTES)))
-#define ____cacheline_aligned  __attribute__((aligned(L1_CACHE_BYTES)))
-
-#endif
diff --git a/include/asm-frv/cacheflush.h b/include/asm-frv/cacheflush.h
deleted file mode 100644 (file)
index 432a69e..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/* cacheflush.h: FRV cache flushing routines
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_CACHEFLUSH_H
-#define _ASM_CACHEFLUSH_H
-
-/* Keep includes the same across arches.  */
-#include <linux/mm.h>
-
-/*
- * virtually-indexed cache management (our cache is physically indexed)
- */
-#define flush_cache_all()                      do {} while(0)
-#define flush_cache_mm(mm)                     do {} while(0)
-#define flush_cache_dup_mm(mm)                 do {} while(0)
-#define flush_cache_range(mm, start, end)      do {} while(0)
-#define flush_cache_page(vma, vmaddr, pfn)     do {} while(0)
-#define flush_cache_vmap(start, end)           do {} while(0)
-#define flush_cache_vunmap(start, end)         do {} while(0)
-#define flush_dcache_mmap_lock(mapping)                do {} while(0)
-#define flush_dcache_mmap_unlock(mapping)      do {} while(0)
-
-/*
- * physically-indexed cache management
- * - see arch/frv/lib/cache.S
- */
-extern void frv_dcache_writeback(unsigned long start, unsigned long size);
-extern void frv_cache_invalidate(unsigned long start, unsigned long size);
-extern void frv_icache_invalidate(unsigned long start, unsigned long size);
-extern void frv_cache_wback_inv(unsigned long start, unsigned long size);
-
-static inline void __flush_cache_all(void)
-{
-       asm volatile("  dcef    @(gr0,gr0),#1   \n"
-                    "  icei    @(gr0,gr0),#1   \n"
-                    "  membar                  \n"
-                    : : : "memory"
-                    );
-}
-
-/* dcache/icache coherency... */
-#ifdef CONFIG_MMU
-extern void flush_dcache_page(struct page *page);
-#else
-static inline void flush_dcache_page(struct page *page)
-{
-       unsigned long addr = page_to_phys(page);
-       frv_dcache_writeback(addr, addr + PAGE_SIZE);
-}
-#endif
-
-static inline void flush_page_to_ram(struct page *page)
-{
-       flush_dcache_page(page);
-}
-
-static inline void flush_icache(void)
-{
-       __flush_cache_all();
-}
-
-static inline void flush_icache_range(unsigned long start, unsigned long end)
-{
-       frv_cache_wback_inv(start, end);
-}
-
-#ifdef CONFIG_MMU
-extern void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
-                                   unsigned long start, unsigned long len);
-#else
-static inline void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
-                                          unsigned long start, unsigned long len)
-{
-       frv_cache_wback_inv(start, start + len);
-}
-#endif
-
-static inline void flush_icache_page(struct vm_area_struct *vma, struct page *page)
-{
-       flush_icache_user_range(vma, page, page_to_phys(page), PAGE_SIZE);
-}
-
-/*
- * permit ptrace to access another process's address space through the icache
- * and the dcache
- */
-#define copy_to_user_page(vma, page, vaddr, dst, src, len)     \
-do {                                                           \
-       memcpy((dst), (src), (len));                            \
-       flush_icache_user_range((vma), (page), (vaddr), (len)); \
-} while(0)
-
-#define copy_from_user_page(vma, page, vaddr, dst, src, len)   \
-       memcpy((dst), (src), (len))
-
-#endif /* _ASM_CACHEFLUSH_H */
diff --git a/include/asm-frv/checksum.h b/include/asm-frv/checksum.h
deleted file mode 100644 (file)
index 269da09..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/* checksum.h: FRV checksumming
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_CHECKSUM_H
-#define _ASM_CHECKSUM_H
-
-#include <linux/in6.h>
-
-/*
- * computes the checksum of a memory block at buff, length len,
- * and adds in "sum" (32-bit)
- *
- * returns a 32-bit number suitable for feeding into itself
- * or csum_tcpudp_magic
- *
- * this function must be called with even lengths, except
- * for the last fragment, which may be odd
- *
- * it's best to have buff aligned on a 32-bit boundary
- */
-__wsum csum_partial(const void *buff, int len, __wsum sum);
-
-/*
- * the same as csum_partial, but copies from src while it
- * checksums
- *
- * here even more important to align src and dst on a 32-bit (or even
- * better 64-bit) boundary
- */
-__wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum);
-
-/*
- * the same as csum_partial_copy, but copies from user space.
- *
- * here even more important to align src and dst on a 32-bit (or even
- * better 64-bit) boundary
- */
-extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
-                                               int len, __wsum sum, int *csum_err);
-
-/*
- *     This is a version of ip_compute_csum() optimized for IP headers,
- *     which always checksum on 4 octet boundaries.
- *
- */
-static inline
-__sum16 ip_fast_csum(const void *iph, unsigned int ihl)
-{
-       unsigned int tmp, inc, sum = 0;
-
-       asm("   addcc           gr0,gr0,gr0,icc0\n" /* clear icc0.C */
-           "   subi            %1,#4,%1        \n"
-           "0:                                 \n"
-           "   ldu.p           @(%1,%3),%4     \n"
-           "   subicc          %2,#1,%2,icc1   \n"
-           "   addxcc.p        %4,%0,%0,icc0   \n"
-           "   bhi             icc1,#2,0b      \n"
-
-           /* fold the 33-bit result into 16-bits */
-           "   addxcc          gr0,%0,%0,icc0  \n"
-           "   srli            %0,#16,%1       \n"
-           "   sethi           #0,%0           \n"
-           "   add             %1,%0,%0        \n"
-           "   srli            %0,#16,%1       \n"
-           "   add             %1,%0,%0        \n"
-
-           : "=r" (sum), "=r" (iph), "=r" (ihl), "=r" (inc), "=&r"(tmp)
-           : "0" (sum), "1" (iph), "2" (ihl), "3" (4),
-           "m"(*(volatile struct { int _[100]; } *)iph)
-           : "icc0", "icc1", "memory"
-           );
-
-       return (__force __sum16)~sum;
-}
-
-/*
- *     Fold a partial checksum
- */
-static inline __sum16 csum_fold(__wsum sum)
-{
-       unsigned int tmp;
-
-       asm("   srli            %0,#16,%1       \n"
-           "   sethi           #0,%0           \n"
-           "   add             %1,%0,%0        \n"
-           "   srli            %0,#16,%1       \n"
-           "   add             %1,%0,%0        \n"
-           : "=r"(sum), "=&r"(tmp)
-           : "0"(sum)
-           );
-
-       return (__force __sum16)~sum;
-}
-
-/*
- * computes the checksum of the TCP/UDP pseudo-header
- * returns a 16-bit checksum, already complemented
- */
-static inline __wsum
-csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
-                 unsigned short proto, __wsum sum)
-{
-       asm("   addcc           %1,%0,%0,icc0   \n"
-           "   addxcc          %2,%0,%0,icc0   \n"
-           "   addxcc          %3,%0,%0,icc0   \n"
-           "   addxcc          gr0,%0,%0,icc0  \n"
-           : "=r" (sum)
-           : "r" (daddr), "r" (saddr), "r" (len + proto), "0"(sum)
-           : "icc0"
-           );
-       return sum;
-}
-
-static inline __sum16
-csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
-                 unsigned short proto, __wsum sum)
-{
-       return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum));
-}
-
-/*
- * this routine is used for miscellaneous IP-like checksums, mainly
- * in icmp.c
- */
-extern __sum16 ip_compute_csum(const void *buff, int len);
-
-#define _HAVE_ARCH_IPV6_CSUM
-static inline __sum16
-csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
-               __u32 len, unsigned short proto, __wsum sum)
-{
-       unsigned long tmp, tmp2;
-
-       asm("   addcc           %2,%0,%0,icc0   \n"
-
-           /* add up the source addr */
-           "   ldi             @(%3,0),%1      \n"
-           "   addxcc          %1,%0,%0,icc0   \n"
-           "   ldi             @(%3,4),%2      \n"
-           "   addxcc          %2,%0,%0,icc0   \n"
-           "   ldi             @(%3,8),%1      \n"
-           "   addxcc          %1,%0,%0,icc0   \n"
-           "   ldi             @(%3,12),%2     \n"
-           "   addxcc          %2,%0,%0,icc0   \n"
-
-           /* add up the dest addr */
-           "   ldi             @(%4,0),%1      \n"
-           "   addxcc          %1,%0,%0,icc0   \n"
-           "   ldi             @(%4,4),%2      \n"
-           "   addxcc          %2,%0,%0,icc0   \n"
-           "   ldi             @(%4,8),%1      \n"
-           "   addxcc          %1,%0,%0,icc0   \n"
-           "   ldi             @(%4,12),%2     \n"
-           "   addxcc          %2,%0,%0,icc0   \n"
-
-           /* fold the 33-bit result into 16-bits */
-           "   addxcc          gr0,%0,%0,icc0  \n"
-           "   srli            %0,#16,%1       \n"
-           "   sethi           #0,%0           \n"
-           "   add             %1,%0,%0        \n"
-           "   srli            %0,#16,%1       \n"
-           "   add             %1,%0,%0        \n"
-
-           : "=r" (sum), "=&r" (tmp), "=r" (tmp2)
-           : "r" (saddr), "r" (daddr), "0" (sum), "2" (len + proto)
-           : "icc0"
-           );
-
-       return (__force __sum16)~sum;
-}
-
-#endif /* _ASM_CHECKSUM_H */
diff --git a/include/asm-frv/cpu-irqs.h b/include/asm-frv/cpu-irqs.h
deleted file mode 100644 (file)
index 478f349..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/* cpu-irqs.h: on-CPU peripheral irqs
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_CPU_IRQS_H
-#define _ASM_CPU_IRQS_H
-
-#ifndef __ASSEMBLY__
-
-/* IRQ to level mappings */
-#define IRQ_GDBSTUB_LEVEL      15
-#define IRQ_UART_LEVEL         13
-
-#ifdef CONFIG_GDBSTUB_UART0
-#define IRQ_UART0_LEVEL                IRQ_GDBSTUB_LEVEL
-#else
-#define IRQ_UART0_LEVEL                IRQ_UART_LEVEL
-#endif
-
-#ifdef CONFIG_GDBSTUB_UART1
-#define IRQ_UART1_LEVEL                IRQ_GDBSTUB_LEVEL
-#else
-#define IRQ_UART1_LEVEL                IRQ_UART_LEVEL
-#endif
-
-#define IRQ_DMA0_LEVEL         14
-#define IRQ_DMA1_LEVEL         14
-#define IRQ_DMA2_LEVEL         14
-#define IRQ_DMA3_LEVEL         14
-#define IRQ_DMA4_LEVEL         14
-#define IRQ_DMA5_LEVEL         14
-#define IRQ_DMA6_LEVEL         14
-#define IRQ_DMA7_LEVEL         14
-
-#define IRQ_TIMER0_LEVEL       12
-#define IRQ_TIMER1_LEVEL       11
-#define IRQ_TIMER2_LEVEL       10
-
-#define IRQ_XIRQ0_LEVEL                1
-#define IRQ_XIRQ1_LEVEL                2
-#define IRQ_XIRQ2_LEVEL                3
-#define IRQ_XIRQ3_LEVEL                4
-#define IRQ_XIRQ4_LEVEL                5
-#define IRQ_XIRQ5_LEVEL                6
-#define IRQ_XIRQ6_LEVEL                7
-#define IRQ_XIRQ7_LEVEL                8
-
-/* IRQ IDs presented to drivers */
-#define IRQ_CPU__UNUSED                IRQ_BASE_CPU
-#define IRQ_CPU_UART0          (IRQ_BASE_CPU + IRQ_UART0_LEVEL)
-#define IRQ_CPU_UART1          (IRQ_BASE_CPU + IRQ_UART1_LEVEL)
-#define IRQ_CPU_TIMER0         (IRQ_BASE_CPU + IRQ_TIMER0_LEVEL)
-#define IRQ_CPU_TIMER1         (IRQ_BASE_CPU + IRQ_TIMER1_LEVEL)
-#define IRQ_CPU_TIMER2         (IRQ_BASE_CPU + IRQ_TIMER2_LEVEL)
-#define IRQ_CPU_DMA0           (IRQ_BASE_CPU + IRQ_DMA0_LEVEL)
-#define IRQ_CPU_DMA1           (IRQ_BASE_CPU + IRQ_DMA1_LEVEL)
-#define IRQ_CPU_DMA2           (IRQ_BASE_CPU + IRQ_DMA2_LEVEL)
-#define IRQ_CPU_DMA3           (IRQ_BASE_CPU + IRQ_DMA3_LEVEL)
-#define IRQ_CPU_DMA4           (IRQ_BASE_CPU + IRQ_DMA4_LEVEL)
-#define IRQ_CPU_DMA5           (IRQ_BASE_CPU + IRQ_DMA5_LEVEL)
-#define IRQ_CPU_DMA6           (IRQ_BASE_CPU + IRQ_DMA6_LEVEL)
-#define IRQ_CPU_DMA7           (IRQ_BASE_CPU + IRQ_DMA7_LEVEL)
-#define IRQ_CPU_EXTERNAL0      (IRQ_BASE_CPU + IRQ_XIRQ0_LEVEL)
-#define IRQ_CPU_EXTERNAL1      (IRQ_BASE_CPU + IRQ_XIRQ1_LEVEL)
-#define IRQ_CPU_EXTERNAL2      (IRQ_BASE_CPU + IRQ_XIRQ2_LEVEL)
-#define IRQ_CPU_EXTERNAL3      (IRQ_BASE_CPU + IRQ_XIRQ3_LEVEL)
-#define IRQ_CPU_EXTERNAL4      (IRQ_BASE_CPU + IRQ_XIRQ4_LEVEL)
-#define IRQ_CPU_EXTERNAL5      (IRQ_BASE_CPU + IRQ_XIRQ5_LEVEL)
-#define IRQ_CPU_EXTERNAL6      (IRQ_BASE_CPU + IRQ_XIRQ6_LEVEL)
-#define IRQ_CPU_EXTERNAL7      (IRQ_BASE_CPU + IRQ_XIRQ7_LEVEL)
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_CPU_IRQS_H */
diff --git a/include/asm-frv/cpumask.h b/include/asm-frv/cpumask.h
deleted file mode 100644 (file)
index d999c20..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_CPUMASK_H
-#define _ASM_CPUMASK_H
-
-#include <asm-generic/cpumask.h>
-
-#endif /* _ASM_CPUMASK_H */
diff --git a/include/asm-frv/cputime.h b/include/asm-frv/cputime.h
deleted file mode 100644 (file)
index f6c373a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_CPUTIME_H
-#define _ASM_CPUTIME_H
-
-#include <asm-generic/cputime.h>
-
-#endif /* _ASM_CPUTIME_H */
diff --git a/include/asm-frv/current.h b/include/asm-frv/current.h
deleted file mode 100644 (file)
index 86b0274..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/* current.h: FRV current task pointer
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_CURRENT_H
-#define _ASM_CURRENT_H
-
-#ifndef __ASSEMBLY__
-
-/*
- * dedicate GR29 to keeping the current task pointer
- */
-register struct task_struct *current asm("gr29");
-
-#define get_current() current
-
-#else
-
-#define CURRENT gr29
-
-#endif
-
-#endif /* _ASM_CURRENT_H */
diff --git a/include/asm-frv/delay.h b/include/asm-frv/delay.h
deleted file mode 100644 (file)
index 597b4eb..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* delay.h: FRV delay code
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_DELAY_H
-#define _ASM_DELAY_H
-
-#include <asm/param.h>
-#include <asm/timer-regs.h>
-
-/*
- * delay loop - runs at __core_clock_speed_HZ / 2 [there are 2 insns in the loop]
- */
-extern unsigned long __delay_loops_MHz;
-
-static inline void __delay(unsigned long loops)
-{
-       asm volatile("1:        subicc  %0,#1,%0,icc0   \n"
-                    "          bnc     icc0,#2,1b      \n"
-                    : "=r" (loops)
-                    : "0" (loops)
-                    : "icc0"
-                    );
-}
-
-/*
- * Use only for very small delays ( < 1 msec).  Should probably use a
- * lookup table, really, as the multiplications take much too long with
- * short delays.  This is a "reasonable" implementation, though (and the
- * first constant multiplications gets optimized away if the delay is
- * a constant)
- */
-
-extern unsigned long loops_per_jiffy;
-
-static inline void udelay(unsigned long usecs)
-{
-       __delay(usecs * __delay_loops_MHz);
-}
-
-#define ndelay(n)      udelay((n) * 5)
-
-#endif /* _ASM_DELAY_H */
diff --git a/include/asm-frv/device.h b/include/asm-frv/device.h
deleted file mode 100644 (file)
index d8f9872..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Arch specific extensions to struct device
- *
- * This file is released under the GPLv2
- */
-#include <asm-generic/device.h>
-
diff --git a/include/asm-frv/div64.h b/include/asm-frv/div64.h
deleted file mode 100644 (file)
index 6cd978c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/div64.h>
diff --git a/include/asm-frv/dm9000.h b/include/asm-frv/dm9000.h
deleted file mode 100644 (file)
index f6f48fd..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* dm9000.h: Davicom DM9000 adapter configuration
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_DM9000_H
-#define _ASM_DM9000_H
-
-#include <asm/mb-regs.h>
-
-#define DM9000_ARCH_IOBASE     (__region_CS6 + 0x300)
-#define DM9000_ARCH_IRQ                IRQ_CPU_EXTERNAL3       /* XIRQ #3 (shared with FPGA) */
-#undef DM9000_ARCH_IRQ_ACTLOW                          /* IRQ pin active high */
-#define DM9000_ARCH_BUS_INFO   "CS6#+0x300"            /* bus info for ethtool */
-
-#undef __is_PCI_IO
-#define __is_PCI_IO(addr)      0       /* not PCI */
-
-#undef inl
-#define inl(addr)                                                                              \
-({                                                                                             \
-       unsigned long __ioaddr = (unsigned long) addr;                                          \
-       uint32_t x = readl(__ioaddr);                                                           \
-       ((x & 0xff) << 24) | ((x & 0xff00) << 8) | ((x >> 8) & 0xff00) | ((x >> 24) & 0xff);    \
-})
-
-#undef insl
-#define insl(a,b,l)    __insl(a,b,l,0) /* don't byte-swap */
-
-
-#endif /* _ASM_DM9000_H */
diff --git a/include/asm-frv/dma-mapping.h b/include/asm-frv/dma-mapping.h
deleted file mode 100644 (file)
index b289887..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#ifndef _ASM_DMA_MAPPING_H
-#define _ASM_DMA_MAPPING_H
-
-#include <linux/device.h>
-#include <asm/cache.h>
-#include <asm/cacheflush.h>
-#include <asm/scatterlist.h>
-#include <asm/io.h>
-
-#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
-#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
-
-extern unsigned long __nongprelbss dma_coherent_mem_start;
-extern unsigned long __nongprelbss dma_coherent_mem_end;
-
-void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp);
-void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle);
-
-/*
- * Map a single buffer of the indicated size for DMA in streaming mode.
- * The 32-bit bus address to use is returned.
- *
- * Once the device is given the dma address, the device owns this memory
- * until either pci_unmap_single or pci_dma_sync_single is performed.
- */
-extern dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
-                                enum dma_data_direction direction);
-
-/*
- * Unmap a single streaming mode DMA translation.  The dma_addr and size
- * must match what was provided for in a previous pci_map_single call.  All
- * other usages are undefined.
- *
- * After this call, reads by the cpu to the buffer are guarenteed to see
- * whatever the device wrote there.
- */
-static inline
-void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
-                     enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-}
-
-/*
- * Map a set of buffers described by scatterlist in streaming
- * mode for DMA.  This is the scather-gather version of the
- * above pci_map_single interface.  Here the scatter gather list
- * elements are each tagged with the appropriate dma address
- * and length.  They are obtained via sg_dma_{address,length}(SG).
- *
- * NOTE: An implementation may be able to use a smaller number of
- *       DMA address/length pairs than there are SG table elements.
- *       (for example via virtual mapping capabilities)
- *       The routine returns the number of addr/length pairs actually
- *       used, at most nents.
- *
- * Device ownership issues as mentioned above for pci_map_single are
- * the same here.
- */
-extern int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
-                     enum dma_data_direction direction);
-
-/*
- * Unmap a set of streaming mode DMA translations.
- * Again, cpu read rules concerning calls here are the same as for
- * pci_unmap_single() above.
- */
-static inline
-void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
-            enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-}
-
-extern
-dma_addr_t dma_map_page(struct device *dev, struct page *page, unsigned long offset,
-                       size_t size, enum dma_data_direction direction);
-
-static inline
-void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
-                   enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-}
-
-
-static inline
-void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
-                            enum dma_data_direction direction)
-{
-}
-
-static inline
-void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size,
-                               enum dma_data_direction direction)
-{
-       flush_write_buffers();
-}
-
-static inline
-void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle,
-                                  unsigned long offset, size_t size,
-                                  enum dma_data_direction direction)
-{
-}
-
-static inline
-void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle,
-                                     unsigned long offset, size_t size,
-                                     enum dma_data_direction direction)
-{
-       flush_write_buffers();
-}
-
-static inline
-void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
-                        enum dma_data_direction direction)
-{
-}
-
-static inline
-void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
-                           enum dma_data_direction direction)
-{
-       flush_write_buffers();
-}
-
-static inline
-int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
-{
-       return 0;
-}
-
-static inline
-int dma_supported(struct device *dev, u64 mask)
-{
-        /*
-         * we fall back to GFP_DMA when the mask isn't all 1s,
-         * so we can't guarantee allocations that must be
-         * within a tighter range than GFP_DMA..
-         */
-        if (mask < 0x00ffffff)
-                return 0;
-
-       return 1;
-}
-
-static inline
-int dma_set_mask(struct device *dev, u64 mask)
-{
-       if (!dev->dma_mask || !dma_supported(dev, mask))
-               return -EIO;
-
-       *dev->dma_mask = mask;
-
-       return 0;
-}
-
-static inline
-int dma_get_cache_alignment(void)
-{
-       return 1 << L1_CACHE_SHIFT;
-}
-
-#define dma_is_consistent(d, h)        (1)
-
-static inline
-void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
-                   enum dma_data_direction direction)
-{
-       flush_write_buffers();
-}
-
-#endif  /* _ASM_DMA_MAPPING_H */
diff --git a/include/asm-frv/dma.h b/include/asm-frv/dma.h
deleted file mode 100644 (file)
index 683c47d..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/* dma.h: FRV DMA controller management
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_DMA_H
-#define _ASM_DMA_H
-
-//#define DMA_DEBUG 1
-
-#include <linux/interrupt.h>
-
-#undef MAX_DMA_CHANNELS                /* don't use kernel/dma.c */
-
-/* under 2.4 this is actually needed by the new bootmem allocator */
-#define MAX_DMA_ADDRESS                PAGE_OFFSET
-
-/*
- * FRV DMA controller management
- */
-typedef irqreturn_t (*dma_irq_handler_t)(int dmachan, unsigned long cstr, void *data);
-
-extern void frv_dma_init(void);
-
-extern int frv_dma_open(const char *devname,
-                       unsigned long dmamask,
-                       int dmacap,
-                       dma_irq_handler_t handler,
-                       unsigned long irq_flags,
-                       void *data);
-
-/* channels required */
-#define FRV_DMA_MASK_ANY       ULONG_MAX       /* any channel */
-
-/* capabilities required */
-#define FRV_DMA_CAP_DREQ       0x01            /* DMA request pin */
-#define FRV_DMA_CAP_DACK       0x02            /* DMA ACK pin */
-#define FRV_DMA_CAP_DONE       0x04            /* DMA done pin */
-
-extern void frv_dma_close(int dma);
-
-extern void frv_dma_config(int dma, unsigned long ccfr, unsigned long cctr, unsigned long apr);
-
-extern void frv_dma_start(int dma,
-                         unsigned long sba, unsigned long dba,
-                         unsigned long pix, unsigned long six, unsigned long bcl);
-
-extern void frv_dma_restart_circular(int dma, unsigned long six);
-
-extern void frv_dma_stop(int dma);
-
-extern int is_frv_dma_interrupting(int dma);
-
-extern void frv_dma_dump(int dma);
-
-extern void frv_dma_status_clear(int dma);
-
-#define FRV_DMA_NCHANS 8
-#define FRV_DMA_4CHANS 4
-#define FRV_DMA_8CHANS 8
-
-#define DMAC_CCFRx             0x00    /* channel configuration reg */
-#define DMAC_CCFRx_CM_SHIFT    16
-#define DMAC_CCFRx_CM_DA       0x00000000
-#define DMAC_CCFRx_CM_SCA      0x00010000
-#define DMAC_CCFRx_CM_DCA      0x00020000
-#define DMAC_CCFRx_CM_2D       0x00030000
-#define DMAC_CCFRx_ATS_SHIFT   8
-#define DMAC_CCFRx_RS_INTERN   0x00000000
-#define DMAC_CCFRx_RS_EXTERN   0x00000001
-#define DMAC_CCFRx_RS_SHIFT    0
-
-#define DMAC_CSTRx             0x08    /* channel status reg */
-#define DMAC_CSTRx_FS          0x0000003f
-#define DMAC_CSTRx_NE          0x00000100
-#define DMAC_CSTRx_FED         0x00000200
-#define DMAC_CSTRx_WER         0x00000800
-#define DMAC_CSTRx_RER         0x00001000
-#define DMAC_CSTRx_CE          0x00002000
-#define DMAC_CSTRx_INT         0x00800000
-#define DMAC_CSTRx_BUSY                0x80000000
-
-#define DMAC_CCTRx             0x10    /* channel control reg */
-#define DMAC_CCTRx_DSIZ_1      0x00000000
-#define DMAC_CCTRx_DSIZ_2      0x00000001
-#define DMAC_CCTRx_DSIZ_4      0x00000002
-#define DMAC_CCTRx_DSIZ_32     0x00000005
-#define DMAC_CCTRx_DAU_HOLD    0x00000000
-#define DMAC_CCTRx_DAU_INC     0x00000010
-#define DMAC_CCTRx_DAU_DEC     0x00000020
-#define DMAC_CCTRx_SSIZ_1      0x00000000
-#define DMAC_CCTRx_SSIZ_2      0x00000100
-#define DMAC_CCTRx_SSIZ_4      0x00000200
-#define DMAC_CCTRx_SSIZ_32     0x00000500
-#define DMAC_CCTRx_SAU_HOLD    0x00000000
-#define DMAC_CCTRx_SAU_INC     0x00001000
-#define DMAC_CCTRx_SAU_DEC     0x00002000
-#define DMAC_CCTRx_FC          0x08000000
-#define DMAC_CCTRx_ICE         0x10000000
-#define DMAC_CCTRx_IE          0x40000000
-#define DMAC_CCTRx_ACT         0x80000000
-
-#define DMAC_SBAx              0x18    /* source base address reg */
-#define DMAC_DBAx              0x20    /* data base address reg */
-#define DMAC_PIXx              0x28    /* primary index reg */
-#define DMAC_SIXx              0x30    /* secondary index reg */
-#define DMAC_BCLx              0x38    /* byte count limit reg */
-#define DMAC_APRx              0x40    /* alternate pointer reg */
-
-/*
- * required for PCI + MODULES
- */
-#ifdef CONFIG_PCI
-extern int isa_dma_bridge_buggy;
-#else
-#define isa_dma_bridge_buggy   (0)
-#endif
-
-#endif /* _ASM_DMA_H */
diff --git a/include/asm-frv/elf.h b/include/asm-frv/elf.h
deleted file mode 100644 (file)
index 7279ec0..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* elf.h: FR-V ELF definitions
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-m68knommu/elf.h
- *
- * 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.
- */
-#ifndef __ASM_ELF_H
-#define __ASM_ELF_H
-
-#include <asm/ptrace.h>
-#include <asm/user.h>
-
-struct elf32_hdr;
-
-/*
- * ELF header e_flags defines.
- */
-#define EF_FRV_GPR_MASK         0x00000003 /* mask for # of gprs */
-#define EF_FRV_GPR32           0x00000001 /* Only uses GR on 32-register */
-#define EF_FRV_GPR64           0x00000002 /* Only uses GR on 64-register */
-#define EF_FRV_FPR_MASK         0x0000000c /* mask for # of fprs */
-#define EF_FRV_FPR32           0x00000004 /* Only uses FR on 32-register */
-#define EF_FRV_FPR64           0x00000008 /* Only uses FR on 64-register */
-#define EF_FRV_FPR_NONE                0x0000000C /* Uses software floating-point */
-#define EF_FRV_DWORD_MASK       0x00000030 /* mask for dword support */
-#define EF_FRV_DWORD_YES       0x00000010 /* Assumes stack aligned to 8-byte boundaries. */
-#define EF_FRV_DWORD_NO                0x00000020 /* Assumes stack aligned to 4-byte boundaries. */
-#define EF_FRV_DOUBLE          0x00000040 /* Uses double instructions. */
-#define EF_FRV_MEDIA           0x00000080 /* Uses media instructions. */
-#define EF_FRV_PIC             0x00000100 /* Uses position independent code. */
-#define EF_FRV_NON_PIC_RELOCS  0x00000200 /* Does not use position Independent code. */
-#define EF_FRV_MULADD           0x00000400 /* -mmuladd */
-#define EF_FRV_BIGPIC           0x00000800 /* -fPIC */
-#define EF_FRV_LIBPIC           0x00001000 /* -mlibrary-pic */
-#define EF_FRV_G0               0x00002000 /* -G 0, no small data ptr */
-#define EF_FRV_NOPACK           0x00004000 /* -mnopack */
-#define EF_FRV_FDPIC            0x00008000 /* -mfdpic */
-#define EF_FRV_CPU_MASK         0xff000000 /* specific cpu bits */
-#define EF_FRV_CPU_GENERIC     0x00000000 /* Set CPU type is FR-V */
-#define EF_FRV_CPU_FR500       0x01000000 /* Set CPU type is FR500 */
-#define EF_FRV_CPU_FR300       0x02000000 /* Set CPU type is FR300 */
-#define EF_FRV_CPU_SIMPLE       0x03000000 /* SIMPLE */
-#define EF_FRV_CPU_TOMCAT       0x04000000 /* Tomcat, FR500 prototype */
-#define EF_FRV_CPU_FR400       0x05000000 /* Set CPU type is FR400 */
-#define EF_FRV_CPU_FR550        0x06000000 /* Set CPU type is FR550 */
-#define EF_FRV_CPU_FR405       0x07000000 /* Set CPU type is FR405 */
-#define EF_FRV_CPU_FR450       0x08000000 /* Set CPU type is FR450 */
-
-/*
- * FR-V ELF relocation types
- */
-
-
-/*
- * ELF register definitions..
- */
-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 user_fpmedia_regs elf_fpregset_t;
-
-/*
- * This is used to ensure we don't load something for the wrong architecture.
- */
-extern int elf_check_arch(const struct elf32_hdr *hdr);
-
-#define elf_check_fdpic(x) ((x)->e_flags & EF_FRV_FDPIC && !((x)->e_flags & EF_FRV_NON_PIC_RELOCS))
-#define elf_check_const_displacement(x) ((x)->e_flags & EF_FRV_PIC)
-
-/*
- * These are used to set parameters in the core dumps.
- */
-#define ELF_CLASS      ELFCLASS32
-#define ELF_DATA       ELFDATA2MSB
-#define ELF_ARCH       EM_FRV
-
-#define ELF_PLAT_INIT(_r)                      \
-do {                                           \
-       __kernel_frame0_ptr->gr16       = 0;    \
-       __kernel_frame0_ptr->gr17       = 0;    \
-       __kernel_frame0_ptr->gr18       = 0;    \
-       __kernel_frame0_ptr->gr19       = 0;    \
-       __kernel_frame0_ptr->gr20       = 0;    \
-       __kernel_frame0_ptr->gr21       = 0;    \
-       __kernel_frame0_ptr->gr22       = 0;    \
-       __kernel_frame0_ptr->gr23       = 0;    \
-       __kernel_frame0_ptr->gr24       = 0;    \
-       __kernel_frame0_ptr->gr25       = 0;    \
-       __kernel_frame0_ptr->gr26       = 0;    \
-       __kernel_frame0_ptr->gr27       = 0;    \
-       __kernel_frame0_ptr->gr29       = 0;    \
-} while(0)
-
-#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, _dynamic_addr)    \
-do {                                                                                   \
-       __kernel_frame0_ptr->gr16       = _exec_map_addr;                               \
-       __kernel_frame0_ptr->gr17       = _interp_map_addr;                             \
-       __kernel_frame0_ptr->gr18       = _dynamic_addr;                                \
-       __kernel_frame0_ptr->gr19       = 0;                                            \
-       __kernel_frame0_ptr->gr20       = 0;                                            \
-       __kernel_frame0_ptr->gr21       = 0;                                            \
-       __kernel_frame0_ptr->gr22       = 0;                                            \
-       __kernel_frame0_ptr->gr23       = 0;                                            \
-       __kernel_frame0_ptr->gr24       = 0;                                            \
-       __kernel_frame0_ptr->gr25       = 0;                                            \
-       __kernel_frame0_ptr->gr26       = 0;                                            \
-       __kernel_frame0_ptr->gr27       = 0;                                            \
-       __kernel_frame0_ptr->gr29       = 0;                                            \
-} while(0)
-
-#define USE_ELF_CORE_DUMP
-#define ELF_FDPIC_CORE_EFLAGS  EF_FRV_FDPIC
-#define ELF_EXEC_PAGESIZE      16384
-
-/* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
-   use of this is to invoke "./ld.so someprog" to test out a new version of
-   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         0x08000000UL
-
-/* This yields a mask that user programs can use to figure out what
-   instruction set this cpu supports.  */
-
-#define ELF_HWCAP      (0)
-
-/* This yields a string that ld.so will use to load implementation
-   specific libraries for optimization.  This is more specific in
-   intent than poking at uname or /proc/cpuinfo.  */
-
-#define ELF_PLATFORM  (NULL)
-
-#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
-
-#endif
diff --git a/include/asm-frv/emergency-restart.h b/include/asm-frv/emergency-restart.h
deleted file mode 100644 (file)
index 108d8c4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_EMERGENCY_RESTART_H
-#define _ASM_EMERGENCY_RESTART_H
-
-#include <asm-generic/emergency-restart.h>
-
-#endif /* _ASM_EMERGENCY_RESTART_H */
diff --git a/include/asm-frv/errno.h b/include/asm-frv/errno.h
deleted file mode 100644 (file)
index d010795..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _ASM_ERRNO_H
-#define _ASM_ERRNO_H
-
-#include <asm-generic/errno.h>
-
-#endif /* _ASM_ERRNO_H */
-
diff --git a/include/asm-frv/fb.h b/include/asm-frv/fb.h
deleted file mode 100644 (file)
index c7df380..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _ASM_FB_H_
-#define _ASM_FB_H_
-#include <linux/fb.h>
-
-#define fb_pgprotect(...) do {} while (0)
-
-static inline int fb_is_primary_device(struct fb_info *info)
-{
-       return 0;
-}
-
-#endif /* _ASM_FB_H_ */
diff --git a/include/asm-frv/fcntl.h b/include/asm-frv/fcntl.h
deleted file mode 100644 (file)
index 46ab12d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/fcntl.h>
diff --git a/include/asm-frv/fpu.h b/include/asm-frv/fpu.h
deleted file mode 100644 (file)
index d73c60b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __ASM_FPU_H
-#define __ASM_FPU_H
-
-
-/*
- * MAX floating point unit state size (FSAVE/FRESTORE)
- */
-
-#define kernel_fpu_end() do { asm volatile("bar":::"memory"); preempt_enable(); } while(0)
-
-#endif /* __ASM_FPU_H */
diff --git a/include/asm-frv/ftrace.h b/include/asm-frv/ftrace.h
deleted file mode 100644 (file)
index 40a8c17..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* empty */
diff --git a/include/asm-frv/futex.h b/include/asm-frv/futex.h
deleted file mode 100644 (file)
index 08b3d1d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef _ASM_FUTEX_H
-#define _ASM_FUTEX_H
-
-#ifdef __KERNEL__
-
-#include <linux/futex.h>
-#include <asm/errno.h>
-#include <asm/uaccess.h>
-
-extern int futex_atomic_op_inuser(int encoded_op, int __user *uaddr);
-
-static inline int
-futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
-{
-       return -ENOSYS;
-}
-
-#endif
-#endif
diff --git a/include/asm-frv/gdb-stub.h b/include/asm-frv/gdb-stub.h
deleted file mode 100644 (file)
index 24f9738..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/* gdb-stub.h: FRV GDB stub
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from asm-mips/gdb-stub.h (c) 1995 Andreas Busse
- *
- * 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.
- */
-#ifndef __ASM_GDB_STUB_H
-#define __ASM_GDB_STUB_H
-
-#undef GDBSTUB_DEBUG_PROTOCOL
-
-#include <asm/ptrace.h>
-
-/*
- * important register numbers in GDB protocol
- * - GR0,  GR1,  GR2,  GR3,  GR4,  GR5,  GR6,  GR7,
- * - GR8,  GR9,  GR10, GR11, GR12, GR13, GR14, GR15,
- * - GR16, GR17, GR18, GR19, GR20, GR21, GR22, GR23,
- * - GR24, GR25, GR26, GR27, GR28, GR29, GR30, GR31,
- * - GR32, GR33, GR34, GR35, GR36, GR37, GR38, GR39,
- * - GR40, GR41, GR42, GR43, GR44, GR45, GR46, GR47,
- * - GR48, GR49, GR50, GR51, GR52, GR53, GR54, GR55,
- * - GR56, GR57, GR58, GR59, GR60, GR61, GR62, GR63,
- * - FR0,  FR1,  FR2,  FR3,  FR4,  FR5,  FR6,  FR7,
- * - FR8,  FR9,  FR10, FR11, FR12, FR13, FR14, FR15,
- * - FR16, FR17, FR18, FR19, FR20, FR21, FR22, FR23,
- * - FR24, FR25, FR26, FR27, FR28, FR29, FR30, FR31,
- * - FR32, FR33, FR34, FR35, FR36, FR37, FR38, FR39,
- * - FR40, FR41, FR42, FR43, FR44, FR45, FR46, FR47,
- * - FR48, FR49, FR50, FR51, FR52, FR53, FR54, FR55,
- * - FR56, FR57, FR58, FR59, FR60, FR61, FR62, FR63,
- * - PC, PSR, CCR, CCCR,
- * - _X132, _X133, _X134
- * - TBR, BRR, DBAR0, DBAR1, DBAR2, DBAR3,
- * - SCR0, SCR1, SCR2, SCR3,
- * - LR, LCR,
- * - IACC0H, IACC0L,
- * - FSR0,
- * - ACC0, ACC1, ACC2, ACC3, ACC4, ACC5, ACC6, ACC7,
- * - ACCG0123, ACCG4567,
- * - MSR0, MSR1,
- * - GNER0, GNER1,
- * - FNER0, FNER1,
- */
-#define GDB_REG_GR(N)  (N)
-#define GDB_REG_FR(N)  (64+(N))
-#define GDB_REG_PC     128
-#define GDB_REG_PSR    129
-#define GDB_REG_CCR    130
-#define GDB_REG_CCCR   131
-#define GDB_REG_TBR    135
-#define GDB_REG_BRR    136
-#define GDB_REG_DBAR(N)        (137+(N))
-#define GDB_REG_SCR(N) (141+(N))
-#define GDB_REG_LR     145
-#define GDB_REG_LCR    146
-#define GDB_REG_FSR0   149
-#define GDB_REG_ACC(N) (150+(N))
-#define GDB_REG_ACCG(N)        (158+(N)/4)
-#define GDB_REG_MSR(N) (160+(N))
-#define GDB_REG_GNER(N)        (162+(N))
-#define GDB_REG_FNER(N)        (164+(N))
-
-#define GDB_REG_SP     GDB_REG_GR(1)
-#define GDB_REG_FP     GDB_REG_GR(2)
-
-#ifndef _LANGUAGE_ASSEMBLY
-
-/*
- * Prototypes
- */
-extern void show_registers_only(struct pt_regs *regs);
-
-extern void gdbstub_init(void);
-extern void gdbstub(int type);
-extern void gdbstub_exit(int status);
-
-extern void gdbstub_io_init(void);
-extern void gdbstub_set_baud(unsigned baud);
-extern int gdbstub_rx_char(unsigned char *_ch, int nonblock);
-extern void gdbstub_tx_char(unsigned char ch);
-extern void gdbstub_tx_flush(void);
-extern void gdbstub_do_rx(void);
-
-extern asmlinkage void __debug_stub_init_break(void);
-extern asmlinkage void __break_hijack_kernel_event(void);
-extern asmlinkage void __break_hijack_kernel_event_breaks_here(void);
-extern asmlinkage void start_kernel(void);
-
-extern asmlinkage void gdbstub_rx_handler(void);
-extern asmlinkage void gdbstub_rx_irq(void);
-extern asmlinkage void gdbstub_intercept(void);
-
-extern uint32_t __entry_usertrap_table[];
-extern uint32_t __entry_kerneltrap_table[];
-
-extern volatile u8     gdbstub_rx_buffer[PAGE_SIZE];
-extern volatile u32    gdbstub_rx_inp;
-extern volatile u32    gdbstub_rx_outp;
-extern volatile u8     gdbstub_rx_overflow;
-extern u8              gdbstub_rx_unget;
-
-extern void gdbstub_printk(const char *fmt, ...);
-extern void debug_to_serial(const char *p, int n);
-extern void console_set_baud(unsigned baud);
-
-#ifdef GDBSTUB_DEBUG_PROTOCOL
-#define gdbstub_proto(FMT,...) gdbstub_printk(FMT,##__VA_ARGS__)
-#else
-#define gdbstub_proto(FMT,...) ({ 0; })
-#endif
-
-/*
- * we dedicate GR31 to keeping a pointer to the gdbstub exception frame
- * - gr31 is destroyed on entry to the gdbstub if !MMU
- * - gr31 is saved in scr3 on entry to the gdbstub if in !MMU
- */
-register struct frv_frame0 *__debug_frame0 asm("gr31");
-
-#define __debug_frame          (&__debug_frame0->regs)
-#define __debug_user_context   (&__debug_frame0->uc)
-#define __debug_regs           (&__debug_frame0->debug)
-#define __debug_reg(X)         ((unsigned long *) ((unsigned long) &__debug_frame0 + (X)))
-
-struct frv_debug_status {
-       unsigned long           bpsr;
-       unsigned long           dcr;
-       unsigned long           brr;
-       unsigned long           nmar;
-};
-
-extern struct frv_debug_status __debug_status;
-
-#endif /* _LANGUAGE_ASSEMBLY */
-#endif /* __ASM_GDB_STUB_H */
diff --git a/include/asm-frv/gpio-regs.h b/include/asm-frv/gpio-regs.h
deleted file mode 100644 (file)
index 9edf5d5..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* gpio-regs.h: on-chip general purpose I/O registers
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_GPIO_REGS
-#define _ASM_GPIO_REGS
-
-#define __reg(ADDR) (*(volatile unsigned long *)(ADDR))
-
-#define __get_PDR()    ({ __reg(0xfeff0400); })
-#define __set_PDR(V)   do { __reg(0xfeff0400) = (V); mb(); } while(0)
-
-#define __get_GPDR()   ({ __reg(0xfeff0408); })
-#define __set_GPDR(V)  do { __reg(0xfeff0408) = (V); mb(); } while(0)
-
-#define __get_SIR()    ({ __reg(0xfeff0410); })
-#define __set_SIR(V)   do { __reg(0xfeff0410) = (V); mb(); } while(0)
-
-#define __get_SOR()    ({ __reg(0xfeff0418); })
-#define __set_SOR(V)   do { __reg(0xfeff0418) = (V); mb(); } while(0)
-
-#define __set_PDSR(V)  do { __reg(0xfeff0420) = (V); mb(); } while(0)
-
-#define __set_PDCR(V)  do { __reg(0xfeff0428) = (V); mb(); } while(0)
-
-#define __get_RSTR()   ({ __reg(0xfeff0500); })
-#define __set_RSTR(V)  do { __reg(0xfeff0500) = (V); mb(); } while(0)
-
-
-
-/* PDR definitions */
-#define PDR_GPIO_DATA(X)       (1 << (X))
-
-/* GPDR definitions */
-#define GPDR_INPUT             0
-#define GPDR_OUTPUT            1
-#define GPDR_DREQ0_BIT         0x00001000
-#define GPDR_DREQ1_BIT         0x00008000
-#define GPDR_DREQ2_BIT         0x00040000
-#define GPDR_DREQ3_BIT         0x00080000
-#define GPDR_DREQ4_BIT         0x00004000
-#define GPDR_DREQ5_BIT         0x00020000
-#define GPDR_DREQ6_BIT         0x00100000
-#define GPDR_DREQ7_BIT         0x00200000
-#define GPDR_DACK0_BIT         0x00002000
-#define GPDR_DACK1_BIT         0x00010000
-#define GPDR_DACK2_BIT         0x00100000
-#define GPDR_DACK3_BIT         0x00200000
-#define GPDR_DONE0_BIT         0x00004000
-#define GPDR_DONE1_BIT         0x00020000
-#define GPDR_GPIO_DIR(X,D)     ((D) << (X))
-
-/* SIR definitions */
-#define SIR_GPIO_INPUT         0
-#define SIR_DREQ7_INPUT                0x00200000
-#define SIR_DREQ6_INPUT                0x00100000
-#define SIR_DREQ3_INPUT                0x00080000
-#define SIR_DREQ2_INPUT                0x00040000
-#define SIR_DREQ5_INPUT                0x00020000
-#define SIR_DREQ1_INPUT                0x00008000
-#define SIR_DREQ4_INPUT                0x00004000
-#define SIR_DREQ0_INPUT                0x00001000
-#define SIR_RXD1_INPUT         0x00000400
-#define SIR_CTS0_INPUT         0x00000100
-#define SIR_RXD0_INPUT         0x00000040
-#define SIR_GATE1_INPUT                0x00000020
-#define SIR_GATE0_INPUT                0x00000010
-#define SIR_IRQ3_INPUT         0x00000008
-#define SIR_IRQ2_INPUT         0x00000004
-#define SIR_IRQ1_INPUT         0x00000002
-#define SIR_IRQ0_INPUT         0x00000001
-#define SIR_DREQ_BITS          (SIR_DREQ0_INPUT | SIR_DREQ1_INPUT | \
-                                SIR_DREQ2_INPUT | SIR_DREQ3_INPUT | \
-                                SIR_DREQ4_INPUT | SIR_DREQ5_INPUT | \
-                                SIR_DREQ6_INPUT | SIR_DREQ7_INPUT)
-
-/* SOR definitions */
-#define SOR_GPIO_OUTPUT                0
-#define SOR_DACK3_OUTPUT       0x00200000
-#define SOR_DACK2_OUTPUT       0x00100000
-#define SOR_DONE1_OUTPUT       0x00020000
-#define SOR_DACK1_OUTPUT       0x00010000
-#define SOR_DONE0_OUTPUT       0x00004000
-#define SOR_DACK0_OUTPUT       0x00002000
-#define SOR_TXD1_OUTPUT                0x00000800
-#define SOR_RTS0_OUTPUT                0x00000200
-#define SOR_TXD0_OUTPUT                0x00000080
-#define SOR_TOUT1_OUTPUT       0x00000020
-#define SOR_TOUT0_OUTPUT       0x00000010
-#define SOR_DONE_BITS          (SOR_DONE0_OUTPUT | SOR_DONE1_OUTPUT)
-#define SOR_DACK_BITS          (SOR_DACK0_OUTPUT | SOR_DACK1_OUTPUT | \
-                                SOR_DACK2_OUTPUT | SOR_DACK3_OUTPUT)
-
-/* PDSR definitions */
-#define PDSR_UNCHANGED         0
-#define PDSR_SET_BIT(X)                (1 << (X))
-
-/* PDCR definitions */
-#define PDCR_UNCHANGED         0
-#define PDCR_CLEAR_BIT(X)      (1 << (X))
-
-/* RSTR definitions */
-/* Read Only */
-#define RSTR_POWERON           0x00000400
-#define RSTR_SOFTRESET_STATUS  0x00000100
-/* Write Only */
-#define RSTR_SOFTRESET         0x00000001
-
-#endif /* _ASM_GPIO_REGS */
diff --git a/include/asm-frv/hardirq.h b/include/asm-frv/hardirq.h
deleted file mode 100644 (file)
index fc47515..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* hardirq.h: FRV hardware IRQ management
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
-
-#include <linux/threads.h>
-#include <linux/irq.h>
-
-typedef struct {
-       unsigned int __softirq_pending;
-       unsigned long idle_timestamp;
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
-
-#ifdef CONFIG_SMP
-#error SMP not available on FR-V
-#endif /* CONFIG_SMP */
-
-extern atomic_t irq_err_count;
-static inline void ack_bad_irq(int irq)
-{
-       atomic_inc(&irq_err_count);
-}
-
-#endif
diff --git a/include/asm-frv/highmem.h b/include/asm-frv/highmem.h
deleted file mode 100644 (file)
index 68e4677..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/* highmem.h: virtual kernel memory mappings for high memory
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-i386/highmem.h
- *
- * See Documentation/frv/mmu-layout.txt for more information.
- *
- * 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.
- */
-
-#ifndef _ASM_HIGHMEM_H
-#define _ASM_HIGHMEM_H
-
-#ifdef __KERNEL__
-
-#include <linux/init.h>
-#include <linux/highmem.h>
-#include <asm/mem-layout.h>
-#include <asm/spr-regs.h>
-#include <asm/mb-regs.h>
-
-#define NR_TLB_LINES           64      /* number of lines in the TLB */
-
-#ifndef __ASSEMBLY__
-
-#include <linux/interrupt.h>
-#include <asm/kmap_types.h>
-#include <asm/pgtable.h>
-
-#ifdef CONFIG_DEBUG_HIGHMEM
-#define HIGHMEM_DEBUG 1
-#else
-#define HIGHMEM_DEBUG 0
-#endif
-
-/* declarations for highmem.c */
-extern unsigned long highstart_pfn, highend_pfn;
-
-#define kmap_prot PAGE_KERNEL
-#define kmap_pte ______kmap_pte_in_TLB
-extern pte_t *pkmap_page_table;
-
-#define flush_cache_kmaps()  do { } while (0)
-
-/*
- * Right now we initialize only a single pte table. It can be extended
- * easily, subsequent pte tables have to be allocated in one physical
- * chunk of RAM.
- */
-#define LAST_PKMAP     PTRS_PER_PTE
-#define LAST_PKMAP_MASK        (LAST_PKMAP - 1)
-#define PKMAP_NR(virt) ((virt - PKMAP_BASE) >> PAGE_SHIFT)
-#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
-
-extern void *kmap_high(struct page *page);
-extern void kunmap_high(struct page *page);
-
-extern void *kmap(struct page *page);
-extern void kunmap(struct page *page);
-
-extern struct page *kmap_atomic_to_page(void *ptr);
-
-#endif /* !__ASSEMBLY__ */
-
-/*
- * The use of kmap_atomic/kunmap_atomic is discouraged - kmap/kunmap
- * gives a more generic (and caching) interface. But kmap_atomic can
- * be used in IRQ contexts, so in some (very limited) cases we need
- * it.
- */
-#define KMAP_ATOMIC_CACHE_DAMR         8
-
-#ifndef __ASSEMBLY__
-
-#define __kmap_atomic_primary(type, paddr, ampr)                                               \
-({                                                                                             \
-       unsigned long damlr, dampr;                                                             \
-                                                                                               \
-       dampr = paddr | xAMPRx_L | xAMPRx_M | xAMPRx_S | xAMPRx_SS_16Kb | xAMPRx_V;             \
-                                                                                               \
-       if (type != __KM_CACHE)                                                                 \
-               asm volatile("movgs %0,dampr"#ampr :: "r"(dampr) : "memory");                   \
-       else                                                                                    \
-               asm volatile("movgs %0,iampr"#ampr"\n"                                          \
-                            "movgs %0,dampr"#ampr"\n"                                          \
-                            :: "r"(dampr) : "memory"                                           \
-                            );                                                                 \
-                                                                                               \
-       asm("movsg damlr"#ampr",%0" : "=r"(damlr));                                             \
-                                                                                               \
-       /*printk("DAMR"#ampr": PRIM sl=%d L=%08lx P=%08lx\n", type, damlr, dampr);*/            \
-                                                                                               \
-       (void *) damlr;                                                                         \
-})
-
-#define __kmap_atomic_secondary(slot, paddr)                                                     \
-({                                                                                               \
-       unsigned long damlr = KMAP_ATOMIC_SECONDARY_FRAME + (slot) * PAGE_SIZE;                   \
-       unsigned long dampr = paddr | xAMPRx_L | xAMPRx_M | xAMPRx_S | xAMPRx_SS_16Kb | xAMPRx_V; \
-                                                                                                 \
-       asm volatile("movgs %0,tplr \n"                                                           \
-                    "movgs %1,tppr \n"                                                           \
-                    "tlbpr %0,gr0,#2,#1"                                                         \
-                    : : "r"(damlr), "r"(dampr) : "memory");                                      \
-                                                                                                 \
-       /*printk("TLB: SECN sl=%d L=%08lx P=%08lx\n", slot, damlr, dampr);*/                      \
-                                                                                                 \
-       (void *) damlr;                                                                           \
-})
-
-static inline void *kmap_atomic(struct page *page, enum km_type type)
-{
-       unsigned long paddr;
-
-       pagefault_disable();
-       debug_kmap_atomic(type);
-       paddr = page_to_phys(page);
-
-       switch (type) {
-        case 0:                return __kmap_atomic_primary(0, paddr, 2);
-        case 1:                return __kmap_atomic_primary(1, paddr, 3);
-        case 2:                return __kmap_atomic_primary(2, paddr, 4);
-        case 3:                return __kmap_atomic_primary(3, paddr, 5);
-        case 4:                return __kmap_atomic_primary(4, paddr, 6);
-        case 5:                return __kmap_atomic_primary(5, paddr, 7);
-        case 6:                return __kmap_atomic_primary(6, paddr, 8);
-        case 7:                return __kmap_atomic_primary(7, paddr, 9);
-        case 8:                return __kmap_atomic_primary(8, paddr, 10);
-
-       case 9 ... 9 + NR_TLB_LINES - 1:
-               return __kmap_atomic_secondary(type - 9, paddr);
-
-       default:
-               BUG();
-               return NULL;
-       }
-}
-
-#define __kunmap_atomic_primary(type, ampr)                            \
-do {                                                                   \
-       asm volatile("movgs gr0,dampr"#ampr"\n" ::: "memory");          \
-       if (type == __KM_CACHE)                                         \
-               asm volatile("movgs gr0,iampr"#ampr"\n" ::: "memory");  \
-} while(0)
-
-#define __kunmap_atomic_secondary(slot, vaddr)                         \
-do {                                                                   \
-       asm volatile("tlbpr %0,gr0,#4,#1" : : "r"(vaddr) : "memory");   \
-} while(0)
-
-static inline void kunmap_atomic(void *kvaddr, enum km_type type)
-{
-       switch (type) {
-        case 0:                __kunmap_atomic_primary(0, 2);  break;
-        case 1:                __kunmap_atomic_primary(1, 3);  break;
-        case 2:                __kunmap_atomic_primary(2, 4);  break;
-        case 3:                __kunmap_atomic_primary(3, 5);  break;
-        case 4:                __kunmap_atomic_primary(4, 6);  break;
-        case 5:                __kunmap_atomic_primary(5, 7);  break;
-        case 6:                __kunmap_atomic_primary(6, 8);  break;
-        case 7:                __kunmap_atomic_primary(7, 9);  break;
-        case 8:                __kunmap_atomic_primary(8, 10); break;
-
-       case 9 ... 9 + NR_TLB_LINES - 1:
-               __kunmap_atomic_secondary(type - 9, kvaddr);
-               break;
-
-       default:
-               BUG();
-       }
-       pagefault_enable();
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_HIGHMEM_H */
diff --git a/include/asm-frv/hw_irq.h b/include/asm-frv/hw_irq.h
deleted file mode 100644 (file)
index 522ad37..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* hw_irq.h: FR-V specific h/w IRQ stuff
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
-
-
-#endif /* _ASM_HW_IRQ_H */
diff --git a/include/asm-frv/init.h b/include/asm-frv/init.h
deleted file mode 100644 (file)
index 8b15838..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _ASM_INIT_H
-#define _ASM_INIT_H
-
-#define __init __attribute__ ((__section__ (".text.init")))
-#define __initdata __attribute__ ((__section__ (".data.init")))
-/* For assembly routines */
-#define __INIT         .section        ".text.init",#alloc,#execinstr
-#define __FINIT                .previous
-#define __INITDATA     .section        ".data.init",#alloc,#write
-
-#endif
-
diff --git a/include/asm-frv/io.h b/include/asm-frv/io.h
deleted file mode 100644 (file)
index ca7475e..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/* io.h: FRV I/O operations
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- *
- * This gets interesting when talking to the PCI bus - the CPU is in big endian
- * mode, the PCI bus is little endian and the hardware in the middle can do
- * byte swapping
- */
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
-
-#ifdef __KERNEL__
-
-#include <linux/types.h>
-#include <asm/virtconvert.h>
-#include <asm/string.h>
-#include <asm/mb-regs.h>
-#include <linux/delay.h>
-
-/*
- * swap functions are sometimes needed to interface little-endian hardware
- */
-
-static inline unsigned short _swapw(unsigned short v)
-{
-    return ((v << 8) | (v >> 8));
-}
-
-static inline unsigned long _swapl(unsigned long v)
-{
-    return ((v << 24) | ((v & 0xff00) << 8) | ((v & 0xff0000) >> 8) | (v >> 24));
-}
-
-//#define __iormb() asm volatile("membar")
-//#define __iowmb() asm volatile("membar")
-
-#define __raw_readb __builtin_read8
-#define __raw_readw __builtin_read16
-#define __raw_readl __builtin_read32
-
-#define __raw_writeb(datum, addr) __builtin_write8(addr, datum)
-#define __raw_writew(datum, addr) __builtin_write16(addr, datum)
-#define __raw_writel(datum, addr) __builtin_write32(addr, datum)
-
-static inline void io_outsb(unsigned int addr, const void *buf, int len)
-{
-       unsigned long __ioaddr = (unsigned long) addr;
-       const uint8_t *bp = buf;
-
-       while (len--)
-               __builtin_write8((volatile void __iomem *) __ioaddr, *bp++);
-}
-
-static inline void io_outsw(unsigned int addr, const void *buf, int len)
-{
-       unsigned long __ioaddr = (unsigned long) addr;
-       const uint16_t *bp = buf;
-
-       while (len--)
-               __builtin_write16((volatile void __iomem *) __ioaddr, (*bp++));
-}
-
-extern void __outsl_ns(unsigned int addr, const void *buf, int len);
-extern void __outsl_sw(unsigned int addr, const void *buf, int len);
-static inline void __outsl(unsigned int addr, const void *buf, int len, int swap)
-{
-       unsigned long __ioaddr = (unsigned long) addr;
-
-       if (!swap)
-               __outsl_ns(__ioaddr, buf, len);
-       else
-               __outsl_sw(__ioaddr, buf, len);
-}
-
-static inline void io_insb(unsigned long addr, void *buf, int len)
-{
-       uint8_t *bp = buf;
-
-       while (len--)
-               *bp++ = __builtin_read8((volatile void __iomem *) addr);
-}
-
-static inline void io_insw(unsigned long addr, void *buf, int len)
-{
-       uint16_t *bp = buf;
-
-       while (len--)
-               *bp++ = __builtin_read16((volatile void __iomem *) addr);
-}
-
-extern void __insl_ns(unsigned long addr, void *buf, int len);
-extern void __insl_sw(unsigned long addr, void *buf, int len);
-static inline void __insl(unsigned long addr, void *buf, int len, int swap)
-{
-       if (!swap)
-               __insl_ns(addr, buf, len);
-       else
-               __insl_sw(addr, buf, len);
-}
-
-#define mmiowb() mb()
-
-/*
- *     make the short names macros so specific devices
- *     can override them as required
- */
-
-static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
-{
-       memset((void __force *) addr, val, count);
-}
-
-static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, int count)
-{
-       memcpy(dst, (void __force *) src, count);
-}
-
-static inline void memcpy_toio(volatile void __iomem *dst, const void *src, int count)
-{
-       memcpy((void __force *) dst, src, count);
-}
-
-static inline uint8_t inb(unsigned long addr)
-{
-       return __builtin_read8((void __iomem *)addr);
-}
-
-static inline uint16_t inw(unsigned long addr)
-{
-       uint16_t ret = __builtin_read16((void __iomem *)addr);
-
-       if (__is_PCI_IO(addr))
-               ret = _swapw(ret);
-
-       return ret;
-}
-
-static inline uint32_t inl(unsigned long addr)
-{
-       uint32_t ret = __builtin_read32((void __iomem *)addr);
-
-       if (__is_PCI_IO(addr))
-               ret = _swapl(ret);
-
-       return ret;
-}
-
-static inline void outb(uint8_t datum, unsigned long addr)
-{
-       __builtin_write8((void __iomem *)addr, datum);
-}
-
-static inline void outw(uint16_t datum, unsigned long addr)
-{
-       if (__is_PCI_IO(addr))
-               datum = _swapw(datum);
-       __builtin_write16((void __iomem *)addr, datum);
-}
-
-static inline void outl(uint32_t datum, unsigned long addr)
-{
-       if (__is_PCI_IO(addr))
-               datum = _swapl(datum);
-       __builtin_write32((void __iomem *)addr, datum);
-}
-
-#define inb_p(addr)    inb(addr)
-#define inw_p(addr)    inw(addr)
-#define inl_p(addr)    inl(addr)
-#define outb_p(x,addr) outb(x,addr)
-#define outw_p(x,addr) outw(x,addr)
-#define outl_p(x,addr) outl(x,addr)
-
-#define outsb(a,b,l)   io_outsb(a,b,l)
-#define outsw(a,b,l)   io_outsw(a,b,l)
-#define outsl(a,b,l)   __outsl(a,b,l,0)
-
-#define insb(a,b,l)    io_insb(a,b,l)
-#define insw(a,b,l)    io_insw(a,b,l)
-#define insl(a,b,l)    __insl(a,b,l,0)
-
-#define IO_SPACE_LIMIT 0xffffffff
-
-static inline uint8_t readb(const volatile void __iomem *addr)
-{
-       return __builtin_read8((__force void volatile __iomem *) addr);
-}
-
-static inline uint16_t readw(const volatile void __iomem *addr)
-{
-       uint16_t ret =  __builtin_read16((__force void volatile __iomem *)addr);
-
-       if (__is_PCI_MEM(addr))
-               ret = _swapw(ret);
-       return ret;
-}
-
-static inline uint32_t readl(const volatile void __iomem *addr)
-{
-       uint32_t ret =  __builtin_read32((__force void volatile __iomem *)addr);
-
-       if (__is_PCI_MEM(addr))
-               ret = _swapl(ret);
-
-       return ret;
-}
-
-#define readb_relaxed readb
-#define readw_relaxed readw
-#define readl_relaxed readl
-
-static inline void writeb(uint8_t datum, volatile void __iomem *addr)
-{
-       __builtin_write8(addr, datum);
-       if (__is_PCI_MEM(addr))
-               __flush_PCI_writes();
-}
-
-static inline void writew(uint16_t datum, volatile void __iomem *addr)
-{
-       if (__is_PCI_MEM(addr))
-               datum = _swapw(datum);
-
-       __builtin_write16(addr, datum);
-       if (__is_PCI_MEM(addr))
-               __flush_PCI_writes();
-}
-
-static inline void writel(uint32_t datum, volatile void __iomem *addr)
-{
-       if (__is_PCI_MEM(addr))
-               datum = _swapl(datum);
-
-       __builtin_write32(addr, datum);
-       if (__is_PCI_MEM(addr))
-               __flush_PCI_writes();
-}
-
-
-/* Values for nocacheflag and cmode */
-#define IOMAP_FULL_CACHING             0
-#define IOMAP_NOCACHE_SER              1
-#define IOMAP_NOCACHE_NONSER           2
-#define IOMAP_WRITETHROUGH             3
-
-extern void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cacheflag);
-
-static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size)
-{
-       return __ioremap(physaddr, size, IOMAP_NOCACHE_SER);
-}
-
-static inline void __iomem *ioremap_nocache(unsigned long physaddr, unsigned long size)
-{
-       return __ioremap(physaddr, size, IOMAP_NOCACHE_SER);
-}
-
-static inline void __iomem *ioremap_writethrough(unsigned long physaddr, unsigned long size)
-{
-       return __ioremap(physaddr, size, IOMAP_WRITETHROUGH);
-}
-
-static inline void __iomem *ioremap_fullcache(unsigned long physaddr, unsigned long size)
-{
-       return __ioremap(physaddr, size, IOMAP_FULL_CACHING);
-}
-
-#define ioremap_wc ioremap_nocache
-
-extern void iounmap(void volatile __iomem *addr);
-
-static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
-{
-       return (void __iomem *) port;
-}
-
-static inline void ioport_unmap(void __iomem *p)
-{
-}
-
-static inline void flush_write_buffers(void)
-{
-       __asm__ __volatile__ ("membar" : : :"memory");
-}
-
-/*
- * do appropriate I/O accesses for token type
- */
-static inline unsigned int ioread8(void __iomem *p)
-{
-       return __builtin_read8(p);
-}
-
-static inline unsigned int ioread16(void __iomem *p)
-{
-       uint16_t ret = __builtin_read16(p);
-       if (__is_PCI_addr(p))
-               ret = _swapw(ret);
-       return ret;
-}
-
-static inline unsigned int ioread32(void __iomem *p)
-{
-       uint32_t ret = __builtin_read32(p);
-       if (__is_PCI_addr(p))
-               ret = _swapl(ret);
-       return ret;
-}
-
-static inline void iowrite8(u8 val, void __iomem *p)
-{
-       __builtin_write8(p, val);
-       if (__is_PCI_MEM(p))
-               __flush_PCI_writes();
-}
-
-static inline void iowrite16(u16 val, void __iomem *p)
-{
-       if (__is_PCI_addr(p))
-               val = _swapw(val);
-       __builtin_write16(p, val);
-       if (__is_PCI_MEM(p))
-               __flush_PCI_writes();
-}
-
-static inline void iowrite32(u32 val, void __iomem *p)
-{
-       if (__is_PCI_addr(p))
-               val = _swapl(val);
-       __builtin_write32(p, val);
-       if (__is_PCI_MEM(p))
-               __flush_PCI_writes();
-}
-
-static inline void ioread8_rep(void __iomem *p, void *dst, unsigned long count)
-{
-       io_insb((unsigned long) p, dst, count);
-}
-
-static inline void ioread16_rep(void __iomem *p, void *dst, unsigned long count)
-{
-       io_insw((unsigned long) p, dst, count);
-}
-
-static inline void ioread32_rep(void __iomem *p, void *dst, unsigned long count)
-{
-       __insl_ns((unsigned long) p, dst, count);
-}
-
-static inline void iowrite8_rep(void __iomem *p, const void *src, unsigned long count)
-{
-       io_outsb((unsigned long) p, src, count);
-}
-
-static inline void iowrite16_rep(void __iomem *p, const void *src, unsigned long count)
-{
-       io_outsw((unsigned long) p, src, count);
-}
-
-static inline void iowrite32_rep(void __iomem *p, const void *src, unsigned long count)
-{
-       __outsl_ns((unsigned long) p, src, count);
-}
-
-/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
-struct pci_dev;
-extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
-static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
-{
-}
-
-
-/*
- * Convert a physical pointer to a virtual kernel pointer for /dev/mem
- * access
- */
-#define xlate_dev_mem_ptr(p)   __va(p)
-
-/*
- * Convert a virtual cached pointer to an uncached pointer
- */
-#define xlate_dev_kmem_ptr(p)  p
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_IO_H */
diff --git a/include/asm-frv/ioctl.h b/include/asm-frv/ioctl.h
deleted file mode 100644 (file)
index b279fe0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/ioctl.h>
diff --git a/include/asm-frv/ioctls.h b/include/asm-frv/ioctls.h
deleted file mode 100644 (file)
index d0c30e3..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef __ASM_IOCTLS_H__
-#define __ASM_IOCTLS_H__
-
-#include <asm/ioctl.h>
-
-/* 0x54 is just a magic number to make these relatively unique ('T') */
-
-#define TCGETS         0x5401
-#define TCSETS         0x5402
-#define TCSETSW                0x5403
-#define TCSETSF                0x5404
-#define TCGETA         0x5405
-#define TCSETA         0x5406
-#define TCSETAW                0x5407
-#define TCSETAF                0x5408
-#define TCSBRK         0x5409
-#define TCXONC         0x540A
-#define TCFLSH         0x540B
-#define TIOCEXCL       0x540C
-#define TIOCNXCL       0x540D
-#define TIOCSCTTY      0x540E
-#define TIOCGPGRP      0x540F
-#define TIOCSPGRP      0x5410
-#define TIOCOUTQ       0x5411
-#define TIOCSTI                0x5412
-#define TIOCGWINSZ     0x5413
-#define TIOCSWINSZ     0x5414
-#define TIOCMGET       0x5415
-#define TIOCMBIS       0x5416
-#define TIOCMBIC       0x5417
-#define TIOCMSET       0x5418
-#define TIOCGSOFTCAR   0x5419
-#define TIOCSSOFTCAR   0x541A
-#define FIONREAD       0x541B
-#define TIOCINQ                FIONREAD
-#define TIOCLINUX      0x541C
-#define TIOCCONS       0x541D
-#define TIOCGSERIAL    0x541E
-#define TIOCSSERIAL    0x541F
-#define TIOCPKT                0x5420
-#define FIONBIO                0x5421
-#define TIOCNOTTY      0x5422
-#define TIOCSETD       0x5423
-#define TIOCGETD       0x5424
-#define TCSBRKP                0x5425  /* Needed for POSIX tcsendbreak() */
-#define TIOCTTYGSTRUCT 0x5426  /* For debugging only */
-#define TIOCSBRK       0x5427  /* BSD compatibility */
-#define TIOCCBRK       0x5428  /* BSD compatibility */
-#define TIOCGSID       0x5429  /* Return the session ID of FD */
-#define TCGETS2                _IOR('T',0x2A, struct termios2)
-#define TCSETS2                _IOW('T',0x2B, struct termios2)
-#define TCSETSW2       _IOW('T',0x2C, struct termios2)
-#define TCSETSF2       _IOW('T',0x2D, struct termios2)
-#define TIOCGPTN       _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
-#define TIOCSPTLCK     _IOW('T',0x31, int)  /* Lock/unlock Pty */
-
-#define FIONCLEX       0x5450  /* these numbers need to be adjusted. */
-#define FIOCLEX                0x5451
-#define FIOASYNC       0x5452
-#define TIOCSERCONFIG  0x5453
-#define TIOCSERGWILD   0x5454
-#define TIOCSERSWILD   0x5455
-#define TIOCGLCKTRMIOS 0x5456
-#define TIOCSLCKTRMIOS 0x5457
-#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
-#define TIOCSERGETLSR   0x5459 /* Get line status register */
-#define TIOCSERGETMULTI 0x545A /* Get multiport config  */
-#define TIOCSERSETMULTI 0x545B /* Set multiport config */
-
-#define TIOCMIWAIT     0x545C  /* wait for a change on serial input line(s) */
-#define TIOCGICOUNT    0x545D  /* read serial port inline interrupt counts */
-#define FIOQSIZE       0x545E
-
-/* Used for packet mode */
-#define TIOCPKT_DATA            0
-#define TIOCPKT_FLUSHREAD       1
-#define TIOCPKT_FLUSHWRITE      2
-#define TIOCPKT_STOP            4
-#define TIOCPKT_START           8
-#define TIOCPKT_NOSTOP         16
-#define TIOCPKT_DOSTOP         32
-
-#define TIOCSER_TEMT    0x01   /* Transmitter physically empty */
-
-#endif /* __ASM_IOCTLS_H__ */
-
diff --git a/include/asm-frv/ipcbuf.h b/include/asm-frv/ipcbuf.h
deleted file mode 100644 (file)
index b546f67..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __ASM_IPCBUF_H__
-#define __ASM_IPCBUF_H__
-
-/*
- * The user_ipc_perm structure for FR-V architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 32-bit mode_t and seq
- * - 2 miscellaneous 32-bit values
- */
-
-struct ipc64_perm
-{
-       __kernel_key_t          key;
-       __kernel_uid32_t        uid;
-       __kernel_gid32_t        gid;
-       __kernel_uid32_t        cuid;
-       __kernel_gid32_t        cgid;
-       __kernel_mode_t         mode;
-       unsigned short          __pad1;
-       unsigned short          seq;
-       unsigned short          __pad2;
-       unsigned long           __unused1;
-       unsigned long           __unused2;
-};
-
-#endif /* __ASM_IPCBUF_H__ */
-
diff --git a/include/asm-frv/irc-regs.h b/include/asm-frv/irc-regs.h
deleted file mode 100644 (file)
index afa30ae..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/* irc-regs.h: on-chip interrupt controller registers
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_IRC_REGS
-#define _ASM_IRC_REGS
-
-#define __reg(ADDR) (*(volatile unsigned long *)(ADDR))
-
-#define __get_TM0()    ({ __reg(0xfeff9800); })
-#define __get_TM1()    ({ __reg(0xfeff9808); })
-#define __set_TM1(V)   do { __reg(0xfeff9808) = (V); mb(); } while(0)
-
-#define __set_TM1x(XI,V)                       \
-do {                                           \
-       int shift = (XI) * 2 + 16;              \
-       unsigned long tm1 = __reg(0xfeff9808);  \
-       tm1 &= ~(0x3 << shift);                 \
-       tm1 |= (V) << shift;                    \
-       __reg(0xfeff9808) = tm1;                \
-       mb();                                   \
-} while(0)
-
-#define __get_RS(C)    ({ (__reg(0xfeff9810) >> ((C)+16)) & 1; })
-
-#define __clr_RC(C)    do { __reg(0xfeff9818) = 1 << ((C)+16); mb(); } while(0)
-
-#define __get_MASK(C)  ({ (__reg(0xfeff9820) >> ((C)+16)) & 1; })
-#define __set_MASK(C)  do { __reg(0xfeff9820) |=  1 << ((C)+16); mb(); } while(0)
-#define __clr_MASK(C)  do { __reg(0xfeff9820) &=  ~(1 << ((C)+16)); mb(); } while(0)
-
-#define __get_MASK_all() __get_MASK(0)
-#define __set_MASK_all() __set_MASK(0)
-#define __clr_MASK_all() __clr_MASK(0)
-
-#define __get_IRL()    ({ (__reg(0xfeff9828) >> 16) & 0xf; })
-#define __clr_IRL()    do { __reg(0xfeff9828) = 0x100000; mb(); } while(0)
-
-#define __get_IRR(N)   ({ __reg(0xfeff9840 + (N) * 8); })
-#define __set_IRR(N,V) do { __reg(0xfeff9840 + (N) * 8) = (V); } while(0)
-
-#define __get_IITMR(N) ({ __reg(0xfeff9880 + (N) * 8); })
-#define __set_IITMR(N,V) do { __reg(0xfeff9880 + (N) * 8) = (V); } while(0)
-
-
-#endif /* _ASM_IRC_REGS */
diff --git a/include/asm-frv/irq.h b/include/asm-frv/irq.h
deleted file mode 100644 (file)
index 3a66ebd..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/* irq.h: FRV IRQ definitions
- *
- * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_IRQ_H_
-#define _ASM_IRQ_H_
-
-#define NR_IRQS                                48
-#define IRQ_BASE_CPU                   (0 * 16)
-#define IRQ_BASE_FPGA                  (1 * 16)
-#define IRQ_BASE_MB93493               (2 * 16)
-
-/* probe returns a 32-bit IRQ mask:-/ */
-#define MIN_PROBE_IRQ                  (NR_IRQS - 32)
-
-#ifndef __ASSEMBLY__
-static inline int irq_canonicalize(int irq)
-{
-       return irq;
-}
-#endif
-
-#endif /* _ASM_IRQ_H_ */
diff --git a/include/asm-frv/irq_regs.h b/include/asm-frv/irq_regs.h
deleted file mode 100644 (file)
index d22e832..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* FRV per-CPU frame pointer holder
- *
- * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_IRQ_REGS_H
-#define _ASM_IRQ_REGS_H
-
-/*
- * Per-cpu current frame pointer - the location of the last exception frame on
- * the stack
- * - on FRV, GR28 is dedicated to keeping a pointer to the current exception
- *   frame
- */
-#define ARCH_HAS_OWN_IRQ_REGS
-
-#ifndef __ASSEMBLY__
-#define get_irq_regs() (__frame)
-#endif
-
-#endif /* _ASM_IRQ_REGS_H */
diff --git a/include/asm-frv/kdebug.h b/include/asm-frv/kdebug.h
deleted file mode 100644 (file)
index 6ece1b0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/kdebug.h>
diff --git a/include/asm-frv/kmap_types.h b/include/asm-frv/kmap_types.h
deleted file mode 100644 (file)
index f8e16b2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef _ASM_KMAP_TYPES_H
-#define _ASM_KMAP_TYPES_H
-
-enum km_type {
-       /* arch specific kmaps - change the numbers attached to these at your peril */
-       __KM_CACHE,             /* cache flush page attachment point */
-       __KM_PGD,               /* current page directory */
-       __KM_ITLB_PTD,          /* current instruction TLB miss page table lookup */
-       __KM_DTLB_PTD,          /* current data TLB miss page table lookup */
-
-       /* general kmaps */
-        KM_BOUNCE_READ,
-        KM_SKB_SUNRPC_DATA,
-        KM_SKB_DATA_SOFTIRQ,
-        KM_USER0,
-        KM_USER1,
-       KM_BIO_SRC_IRQ,
-       KM_BIO_DST_IRQ,
-       KM_PTE0,
-       KM_PTE1,
-       KM_IRQ0,
-       KM_IRQ1,
-       KM_SOFTIRQ0,
-       KM_SOFTIRQ1,
-       KM_TYPE_NR
-};
-
-#endif
diff --git a/include/asm-frv/linkage.h b/include/asm-frv/linkage.h
deleted file mode 100644 (file)
index 636c1bc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef __ASM_LINKAGE_H
-#define __ASM_LINKAGE_H
-
-#define __ALIGN                .align 4
-#define __ALIGN_STR    ".align 4"
-
-#endif
diff --git a/include/asm-frv/local.h b/include/asm-frv/local.h
deleted file mode 100644 (file)
index c27bdf0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_LOCAL_H
-#define _ASM_LOCAL_H
-
-#include <asm-generic/local.h>
-
-#endif /* _ASM_LOCAL_H */
diff --git a/include/asm-frv/math-emu.h b/include/asm-frv/math-emu.h
deleted file mode 100644 (file)
index 0c8f731..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-#ifndef _ASM_MATH_EMU_H
-#define _ASM_MATH_EMU_H
-
-#include <asm/setup.h>
-#include <linux/linkage.h>
-
-/* Status Register bits */
-
-/* accrued exception bits */
-#define FPSR_AEXC_INEX 3
-#define FPSR_AEXC_DZ   4
-#define FPSR_AEXC_UNFL 5
-#define FPSR_AEXC_OVFL 6
-#define FPSR_AEXC_IOP  7
-
-/* exception status bits */
-#define FPSR_EXC_INEX1 8
-#define FPSR_EXC_INEX2 9
-#define FPSR_EXC_DZ    10
-#define FPSR_EXC_UNFL  11
-#define FPSR_EXC_OVFL  12
-#define FPSR_EXC_OPERR 13
-#define FPSR_EXC_SNAN  14
-#define FPSR_EXC_BSUN  15
-
-/* quotient byte, assumes big-endian, of course */
-#define FPSR_QUOTIENT(fpsr) (*((signed char *) &(fpsr) + 1))
-
-/* condition code bits */
-#define FPSR_CC_NAN    24
-#define FPSR_CC_INF    25
-#define FPSR_CC_Z      26
-#define FPSR_CC_NEG    27
-
-
-/* Control register bits */
-
-/* rounding mode */
-#define        FPCR_ROUND_RN   0               /* round to nearest/even */
-#define FPCR_ROUND_RZ  1               /* round to zero */
-#define FPCR_ROUND_RM  2               /* minus infinity */
-#define FPCR_ROUND_RP  3               /* plus infinity */
-
-/* rounding precision */
-#define FPCR_PRECISION_X       0       /* long double */
-#define FPCR_PRECISION_S       1       /* double */
-#define FPCR_PRECISION_D       2       /* float */
-
-
-/* Flags to select the debugging output */
-#define PDECODE                0
-#define PEXECUTE       1
-#define PCONV          2
-#define PNORM          3
-#define PREGISTER      4
-#define PINSTR         5
-#define PUNIMPL                6
-#define PMOVEM         7
-
-#define PMDECODE       (1<<PDECODE)
-#define PMEXECUTE      (1<<PEXECUTE)
-#define PMCONV         (1<<PCONV)
-#define PMNORM         (1<<PNORM)
-#define PMREGISTER     (1<<PREGISTER)
-#define PMINSTR                (1<<PINSTR)
-#define PMUNIMPL       (1<<PUNIMPL)
-#define PMMOVEM                (1<<PMOVEM)
-
-#ifndef __ASSEMBLY__
-
-#include <linux/kernel.h>
-#include <linux/sched.h>
-
-union fp_mant64 {
-       unsigned long long m64;
-       unsigned long m32[2];
-};
-
-union fp_mant128 {
-       unsigned long long m64[2];
-       unsigned long m32[4];
-};
-
-/* internal representation of extended fp numbers */
-struct fp_ext {
-       unsigned char lowmant;
-       unsigned char sign;
-       unsigned short exp;
-       union fp_mant64 mant;
-};
-
-/* C representation of FPU registers */
-/* NOTE: if you change this, you have to change the assembler offsets
-   below and the size in <asm/fpu.h>, too */
-struct fp_data {
-       struct fp_ext fpreg[8];
-       unsigned int fpcr;
-       unsigned int fpsr;
-       unsigned int fpiar;
-       unsigned short prec;
-       unsigned short rnd;
-       struct fp_ext temp[2];
-};
-
-#if FPU_EMU_DEBUG
-extern unsigned int fp_debugprint;
-
-#define dprint(bit, fmt, args...) ({                   \
-       if (fp_debugprint & (1 << (bit)))               \
-               printk(fmt, ## args);                   \
-})
-#else
-#define dprint(bit, fmt, args...)
-#endif
-
-#define uprint(str) ({                                 \
-       static int __count = 3;                         \
-                                                       \
-       if (__count > 0) {                              \
-               printk("You just hit an unimplemented " \
-                      "fpu instruction (%s)\n", str);  \
-               printk("Please report this to ....\n"); \
-               __count--;                              \
-       }                                               \
-})
-
-#define FPDATA         ((struct fp_data *)current->thread.fp)
-
-#else  /* __ASSEMBLY__ */
-
-#define FPDATA         %a2
-
-/* offsets from the base register to the floating point data in the task struct */
-#define FPD_FPREG      (TASK_THREAD+THREAD_FPREG+0)
-#define FPD_FPCR       (TASK_THREAD+THREAD_FPREG+96)
-#define FPD_FPSR       (TASK_THREAD+THREAD_FPREG+100)
-#define FPD_FPIAR      (TASK_THREAD+THREAD_FPREG+104)
-#define FPD_PREC       (TASK_THREAD+THREAD_FPREG+108)
-#define FPD_RND                (TASK_THREAD+THREAD_FPREG+110)
-#define FPD_TEMPFP1    (TASK_THREAD+THREAD_FPREG+112)
-#define FPD_TEMPFP2    (TASK_THREAD+THREAD_FPREG+124)
-#define FPD_SIZEOF     (TASK_THREAD+THREAD_FPREG+136)
-
-/* offsets on the stack to access saved registers,
- * these are only used during instruction decoding
- * where we always know how deep we're on the stack.
- */
-#define FPS_DO         (PT_D0)
-#define FPS_D1         (PT_D1)
-#define FPS_D2         (PT_D2)
-#define FPS_A0         (PT_A0)
-#define FPS_A1         (PT_A1)
-#define FPS_A2         (PT_A2)
-#define FPS_SR         (PT_SR)
-#define FPS_PC         (PT_PC)
-#define FPS_EA         (PT_PC+6)
-#define FPS_PC2                (PT_PC+10)
-
-.macro fp_get_fp_reg
-       lea     (FPD_FPREG,FPDATA,%d0.w*4),%a0
-       lea     (%a0,%d0.w*8),%a0
-.endm
-
-/* Macros used to get/put the current program counter.
- * 020/030 use a different stack frame then 040/060, for the
- * 040/060 the return pc points already to the next location,
- * so this only needs to be modified for jump instructions.
- */
-.macro fp_get_pc dest
-       move.l  (FPS_PC+4,%sp),\dest
-.endm
-
-.macro fp_put_pc src,jump=0
-       move.l  \src,(FPS_PC+4,%sp)
-.endm
-
-.macro fp_get_instr_data       f,s,dest,label
-       getuser \f,%sp@(FPS_PC+4)@(0),\dest,\label,%sp@(FPS_PC+4)
-       addq.l  #\s,%sp@(FPS_PC+4)
-.endm
-
-.macro fp_get_instr_word       dest,label,addr
-       fp_get_instr_data       w,2,\dest,\label,\addr
-.endm
-
-.macro fp_get_instr_long       dest,label,addr
-       fp_get_instr_data       l,4,\dest,\label,\addr
-.endm
-
-/* These macros are used to read from/write to user space
- * on error we jump to the fixup section, load the fault
- * address into %a0 and jump to the exit.
- * (derived from <asm/uaccess.h>)
- */
-.macro getuser size,src,dest,label,addr
-|      printf  ,"[\size<%08x]",1,\addr
-.Lu1\@:        moves\size      \src,\dest
-
-       .section .fixup,"ax"
-       .even
-.Lu2\@:        move.l  \addr,%a0
-       jra     \label
-       .previous
-
-       .section __ex_table,"a"
-       .align  4
-       .long   .Lu1\@,.Lu2\@
-       .previous
-.endm
-
-.macro putuser size,src,dest,label,addr
-|      printf  ,"[\size>%08x]",1,\addr
-.Lu1\@:        moves\size      \src,\dest
-.Lu2\@:
-
-       .section .fixup,"ax"
-       .even
-.Lu3\@:        move.l  \addr,%a0
-       jra     \label
-       .previous
-
-       .section __ex_table,"a"
-       .align  4
-       .long   .Lu1\@,.Lu3\@
-       .long   .Lu2\@,.Lu3\@
-       .previous
-.endm
-
-
-.macro movestack       nr,arg1,arg2,arg3,arg4,arg5
-       .if     \nr
-       movestack       (\nr-1),\arg2,\arg3,\arg4,\arg5
-       move.l  \arg1,-(%sp)
-       .endif
-.endm
-
-.macro printf  bit=-1,string,nr=0,arg1,arg2,arg3,arg4,arg5
-#ifdef FPU_EMU_DEBUG
-       .data
-.Lpdata\@:
-       .string "\string"
-       .previous
-
-       movem.l %d0/%d1/%a0/%a1,-(%sp)
-       .if     \bit+1
-#if 0
-       moveq   #\bit,%d0
-       andw    #7,%d0
-       btst    %d0,fp_debugprint+((31-\bit)/8)
-#else
-       btst    #\bit,fp_debugprint+((31-\bit)/8)
-#endif
-       jeq     .Lpskip\@
-       .endif
-       movestack       \nr,\arg1,\arg2,\arg3,\arg4,\arg5
-       pea     .Lpdata\@
-       jsr     printk
-       lea     ((\nr+1)*4,%sp),%sp
-.Lpskip\@:
-       movem.l (%sp)+,%d0/%d1/%a0/%a1
-#endif
-.endm
-
-.macro printx  bit,fp
-#ifdef FPU_EMU_DEBUG
-       movem.l %d0/%a0,-(%sp)
-       lea     \fp,%a0
-#if 0
-       moveq   #'+',%d0
-       tst.w   (%a0)
-       jeq     .Lx1\@
-       moveq   #'-',%d0
-.Lx1\@:        printf  \bit," %c",1,%d0
-       move.l  (4,%a0),%d0
-       bclr    #31,%d0
-       jne     .Lx2\@
-       printf  \bit,"0."
-       jra     .Lx3\@
-.Lx2\@:        printf  \bit,"1."
-.Lx3\@:        printf  \bit,"%08x%08x",2,%d0,%a0@(8)
-       move.w  (2,%a0),%d0
-       ext.l   %d0
-       printf  \bit,"E%04x",1,%d0
-#else
-       printf  \bit," %08x%08x%08x",3,%a0@,%a0@(4),%a0@(8)
-#endif
-       movem.l (%sp)+,%d0/%a0
-#endif
-.endm
-
-.macro debug   instr,args
-#ifdef FPU_EMU_DEBUG
-       \instr  \args
-#endif
-.endm
-
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _ASM_FRV_MATH_EMU_H */
-
diff --git a/include/asm-frv/mb-regs.h b/include/asm-frv/mb-regs.h
deleted file mode 100644 (file)
index 219e5f9..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/* mb-regs.h: motherboard registers
- *
- * Copyright (C) 2003, 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MB_REGS_H
-#define _ASM_MB_REGS_H
-
-#include <asm/cpu-irqs.h>
-#include <asm/sections.h>
-#include <asm/mem-layout.h>
-
-#ifndef __ASSEMBLY__
-/* gcc builtins, annotated */
-
-unsigned long __builtin_read8(volatile void __iomem *);
-unsigned long __builtin_read16(volatile void __iomem *);
-unsigned long __builtin_read32(volatile void __iomem *);
-void __builtin_write8(volatile void __iomem *, unsigned char);
-void __builtin_write16(volatile void __iomem *, unsigned short);
-void __builtin_write32(volatile void __iomem *, unsigned long);
-#endif
-
-#define __region_IO    KERNEL_IO_START /* the region from 0xe0000000 to 0xffffffff has suitable
-                                        * protection laid over the top for use in memory-mapped
-                                        * I/O
-                                        */
-
-#define __region_CS0   0xff000000      /* Boot ROMs area */
-
-#ifdef CONFIG_MB93091_VDK
-/*
- * VDK motherboard and CPU card specific stuff
- */
-
-#include <asm/mb93091-fpga-irqs.h>
-
-#define IRQ_CPU_MB93493_0      IRQ_CPU_EXTERNAL0
-#define IRQ_CPU_MB93493_1      IRQ_CPU_EXTERNAL1
-
-#define __region_CS2   0xe0000000      /* SLBUS/PCI I/O space */
-#define __region_CS2_M         0x0fffffff /* mask */
-#define __region_CS2_C         0x00000000 /* control */
-#define __region_CS5   0xf0000000      /* MB93493 CSC area (DAV daughter board) */
-#define __region_CS5_M         0x00ffffff
-#define __region_CS5_C         0x00010000
-#define __region_CS7   0xf1000000      /* CB70 CPU-card PCMCIA port I/O space */
-#define __region_CS7_M         0x00ffffff
-#define __region_CS7_C         0x00410701
-#define __region_CS1   0xfc000000      /* SLBUS/PCI bridge control registers */
-#define __region_CS1_M         0x000fffff
-#define __region_CS1_C         0x00000000
-#define __region_CS6   0xfc100000      /* CB70 CPU-card DM9000 LAN I/O space */
-#define __region_CS6_M         0x000fffff
-#define __region_CS6_C         0x00400707
-#define __region_CS3   0xfc200000      /* MB93493 CSR area (DAV daughter board) */
-#define __region_CS3_M         0x000fffff
-#define __region_CS3_C         0xc8100000
-#define __region_CS4   0xfd000000      /* CB70 CPU-card extra flash space */
-#define __region_CS4_M         0x00ffffff
-#define __region_CS4_C         0x00000f07
-
-#define __region_PCI_IO                (__region_CS2 + 0x04000000UL)
-#define __region_PCI_MEM       (__region_CS2 + 0x08000000UL)
-#define __flush_PCI_writes()                                           \
-do {                                                                   \
-       __builtin_write8((volatile void __iomem *) __region_PCI_MEM, 0);        \
-} while(0)
-
-#define __is_PCI_IO(addr) \
-       (((unsigned long)(addr) >> 24) - (__region_PCI_IO >> 24)  < (0x04000000UL >> 24))
-
-#define __is_PCI_MEM(addr) \
-       ((unsigned long)(addr) - __region_PCI_MEM < 0x08000000UL)
-
-#define __is_PCI_addr(addr) \
-       ((unsigned long)(addr) - __region_PCI_IO < 0x0c000000UL)
-
-#define __get_CLKSW()  ({ *(volatile unsigned long *)(__region_CS2 + 0x0130000cUL) & 0xffUL; })
-#define __get_CLKIN()  (__get_CLKSW() * 125U * 100000U / 24U)
-
-#ifndef __ASSEMBLY__
-extern int __nongprelbss mb93090_mb00_detected;
-#endif
-
-#define __addr_LEDS()          (__region_CS2 + 0x01200004UL)
-#ifdef CONFIG_MB93090_MB00
-#define __set_LEDS(X)                                                  \
-do {                                                                   \
-       if (mb93090_mb00_detected)                                      \
-               __builtin_write32((void __iomem *) __addr_LEDS(), ~(X));        \
-} while (0)
-#else
-#define __set_LEDS(X)
-#endif
-
-#define __addr_LCD()           (__region_CS2 + 0x01200008UL)
-#define __get_LCD(B)           __builtin_read32((volatile void __iomem *) (B))
-#define __set_LCD(B,X)         __builtin_write32((volatile void __iomem *) (B), (X))
-
-#define LCD_D                  0x000000ff              /* LCD data bus */
-#define LCD_RW                 0x00000100              /* LCD R/W signal */
-#define LCD_RS                 0x00000200              /* LCD Register Select */
-#define LCD_E                  0x00000400              /* LCD Start Enable Signal */
-
-#define LCD_CMD_CLEAR          (LCD_E|0x001)
-#define LCD_CMD_HOME           (LCD_E|0x002)
-#define LCD_CMD_CURSOR_INC     (LCD_E|0x004)
-#define LCD_CMD_SCROLL_INC     (LCD_E|0x005)
-#define LCD_CMD_CURSOR_DEC     (LCD_E|0x006)
-#define LCD_CMD_SCROLL_DEC     (LCD_E|0x007)
-#define LCD_CMD_OFF            (LCD_E|0x008)
-#define LCD_CMD_ON(CRSR,BLINK) (LCD_E|0x00c|(CRSR<<1)|BLINK)
-#define LCD_CMD_CURSOR_MOVE_L  (LCD_E|0x010)
-#define LCD_CMD_CURSOR_MOVE_R  (LCD_E|0x014)
-#define LCD_CMD_DISPLAY_SHIFT_L        (LCD_E|0x018)
-#define LCD_CMD_DISPLAY_SHIFT_R        (LCD_E|0x01c)
-#define LCD_CMD_FUNCSET(DL,N,F)        (LCD_E|0x020|(DL<<4)|(N<<3)|(F<<2))
-#define LCD_CMD_SET_CG_ADDR(X) (LCD_E|0x040|X)
-#define LCD_CMD_SET_DD_ADDR(X) (LCD_E|0x080|X)
-#define LCD_CMD_READ_BUSY      (LCD_E|LCD_RW)
-#define LCD_DATA_WRITE(X)      (LCD_E|LCD_RS|(X))
-#define LCD_DATA_READ          (LCD_E|LCD_RS|LCD_RW)
-
-#else
-/*
- * PDK unit specific stuff
- */
-
-#include <asm/mb93093-fpga-irqs.h>
-
-#define IRQ_CPU_MB93493_0      IRQ_CPU_EXTERNAL0
-#define IRQ_CPU_MB93493_1      IRQ_CPU_EXTERNAL1
-
-#define __region_CS5   0xf0000000      /* MB93493 CSC area (DAV daughter board) */
-#define __region_CS5_M         0x00ffffff /* mask */
-#define __region_CS5_C         0x00010000 /* control */
-#define __region_CS2   0x20000000      /* FPGA registers */
-#define __region_CS2_M         0x000fffff
-#define __region_CS2_C         0x00000000
-#define __region_CS1   0xfc100000      /* LAN registers */
-#define __region_CS1_M         0x000fffff
-#define __region_CS1_C         0x00010404
-#define __region_CS3   0xfc200000      /* MB93493 CSR area (DAV daughter board) */
-#define __region_CS3_M         0x000fffff
-#define __region_CS3_C         0xc8000000
-#define __region_CS4   0xfd000000      /* extra ROMs area */
-#define __region_CS4_M         0x00ffffff
-#define __region_CS4_C         0x00000f07
-
-#define __region_CS6   0xfe000000      /* not used - hide behind CPU resource I/O regs */
-#define __region_CS6_M         0x000fffff
-#define __region_CS6_C         0x00000f07
-#define __region_CS7   0xfe000000      /* not used - hide behind CPU resource I/O regs */
-#define __region_CS7_M         0x000fffff
-#define __region_CS7_C         0x00000f07
-
-#define __is_PCI_IO(addr)      0       /* no PCI */
-#define __is_PCI_MEM(addr)     0
-#define __is_PCI_addr(addr)    0
-#define __region_PCI_IO                0
-#define __region_PCI_MEM       0
-#define __flush_PCI_writes()   do { } while(0)
-
-#define __get_CLKSW()          0UL
-#define __get_CLKIN()          66000000UL
-
-#define __addr_LEDS()          (__region_CS2 + 0x00000023UL)
-#define __set_LEDS(X)          __builtin_write8((volatile void __iomem *) __addr_LEDS(), (X))
-
-#define __addr_FPGATR()                (__region_CS2 + 0x00000030UL)
-#define __set_FPGATR(X)                __builtin_write32((volatile void __iomem *) __addr_FPGATR(), (X))
-#define __get_FPGATR()         __builtin_read32((volatile void __iomem *) __addr_FPGATR())
-
-#define MB93093_FPGA_FPGATR_AUDIO_CLK  0x00000003
-
-#define __set_FPGATR_AUDIO_CLK(V) \
-       __set_FPGATR((__get_FPGATR() & ~MB93093_FPGA_FPGATR_AUDIO_CLK) | (V))
-
-#define MB93093_FPGA_FPGATR_AUDIO_CLK_OFF      0x0
-#define MB93093_FPGA_FPGATR_AUDIO_CLK_11MHz    0x1
-#define MB93093_FPGA_FPGATR_AUDIO_CLK_12MHz    0x2
-#define MB93093_FPGA_FPGATR_AUDIO_CLK_02MHz    0x3
-
-#define MB93093_FPGA_SWR_PUSHSWMASK    (0x1F<<26)
-#define MB93093_FPGA_SWR_PUSHSW4       (1<<29)
-
-#define __addr_FPGA_SWR                ((volatile void __iomem *)(__region_CS2 + 0x28UL))
-#define __get_FPGA_PUSHSW1_5() (__builtin_read32(__addr_FPGA_SWR) & MB93093_FPGA_SWR_PUSHSWMASK)
-
-
-#endif
-
-#endif /* _ASM_MB_REGS_H */
diff --git a/include/asm-frv/mb86943a.h b/include/asm-frv/mb86943a.h
deleted file mode 100644 (file)
index e87ef92..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* mb86943a.h: MB86943 SPARClite <-> PCI bridge registers
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MB86943A_H
-#define _ASM_MB86943A_H
-
-#include <asm/mb-regs.h>
-
-#define __reg_MB86943_sl_ctl           *(volatile uint32_t *) (__region_CS1 + 0x00)
-
-#define MB86943_SL_CTL_BUS_WIDTH_64    0x00000001
-#define MB86943_SL_CTL_AS_HOST         0x00000002
-#define MB86943_SL_CTL_DRCT_MASTER_SWAP        0x00000004
-#define MB86943_SL_CTL_DRCT_SLAVE_SWAP 0x00000008
-#define MB86943_SL_CTL_PCI_CONFIG_SWAP 0x00000010
-#define MB86943_SL_CTL_ECS0_ENABLE     0x00000020
-#define MB86943_SL_CTL_ECS1_ENABLE     0x00000040
-#define MB86943_SL_CTL_ECS2_ENABLE     0x00000080
-
-#define __reg_MB86943_ecs_ctl(N)       *(volatile uint32_t *) (__region_CS1 + 0x08 + (0x08*(N)))
-#define __reg_MB86943_ecs_range(N)     *(volatile uint32_t *) (__region_CS1 + 0x20 + (0x10*(N)))
-#define __reg_MB86943_ecs_base(N)      *(volatile uint32_t *) (__region_CS1 + 0x28 + (0x10*(N)))
-
-#define __reg_MB86943_sl_pci_io_range  *(volatile uint32_t *) (__region_CS1 + 0x50)
-#define __reg_MB86943_sl_pci_io_base   *(volatile uint32_t *) (__region_CS1 + 0x58)
-#define __reg_MB86943_sl_pci_mem_range *(volatile uint32_t *) (__region_CS1 + 0x60)
-#define __reg_MB86943_sl_pci_mem_base  *(volatile uint32_t *) (__region_CS1 + 0x68)
-#define __reg_MB86943_pci_sl_io_base   *(volatile uint32_t *) (__region_CS1 + 0x70)
-#define __reg_MB86943_pci_sl_mem_base  *(volatile uint32_t *) (__region_CS1 + 0x78)
-
-#define __reg_MB86943_pci_arbiter      *(volatile uint32_t *) (__region_CS2 + 0x01300014)
-#define MB86943_PCIARB_EN              0x00000001
-
-#endif /* _ASM_MB86943A_H */
diff --git a/include/asm-frv/mb93091-fpga-irqs.h b/include/asm-frv/mb93091-fpga-irqs.h
deleted file mode 100644 (file)
index 19778c5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* mb93091-fpga-irqs.h: MB93091 CPU board FPGA IRQs
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MB93091_FPGA_IRQS_H
-#define _ASM_MB93091_FPGA_IRQS_H
-
-#include <asm/irq.h>
-
-#ifndef __ASSEMBLY__
-
-/* IRQ IDs presented to drivers */
-enum {
-       IRQ_FPGA__UNUSED                        = IRQ_BASE_FPGA,
-       IRQ_FPGA_SYSINT_BUS_EXPANSION_1,
-       IRQ_FPGA_SL_BUS_EXPANSION_2,
-       IRQ_FPGA_PCI_INTD,
-       IRQ_FPGA_PCI_INTC,
-       IRQ_FPGA_PCI_INTB,
-       IRQ_FPGA_PCI_INTA,
-       IRQ_FPGA_SL_BUS_EXPANSION_7,
-       IRQ_FPGA_SYSINT_BUS_EXPANSION_8,
-       IRQ_FPGA_SL_BUS_EXPANSION_9,
-       IRQ_FPGA_MB86943_PCI_INTA,
-       IRQ_FPGA_MB86943_SLBUS_SIDE,
-       IRQ_FPGA_RTL8029_INTA,
-       IRQ_FPGA_SYSINT_BUS_EXPANSION_13,
-       IRQ_FPGA_SL_BUS_EXPANSION_14,
-       IRQ_FPGA_NMI,
-};
-
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_MB93091_FPGA_IRQS_H */
diff --git a/include/asm-frv/mb93093-fpga-irqs.h b/include/asm-frv/mb93093-fpga-irqs.h
deleted file mode 100644 (file)
index 590266b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* mb93093-fpga-irqs.h: MB93093 CPU board FPGA IRQs
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MB93093_FPGA_IRQS_H
-#define _ASM_MB93093_FPGA_IRQS_H
-
-#include <asm/irq.h>
-
-#ifndef __ASSEMBLY__
-
-/* IRQ IDs presented to drivers */
-enum {
-       IRQ_FPGA_PUSH_BUTTON_SW1_5              = IRQ_BASE_FPGA + 8,
-       IRQ_FPGA_ROCKER_C_SW8                   = IRQ_BASE_FPGA + 9,
-       IRQ_FPGA_ROCKER_C_SW9                   = IRQ_BASE_FPGA + 10,
-};
-
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_MB93093_FPGA_IRQS_H */
diff --git a/include/asm-frv/mb93493-irqs.h b/include/asm-frv/mb93493-irqs.h
deleted file mode 100644 (file)
index 82c7aed..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* mb93493-irqs.h: MB93493 companion chip IRQs
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MB93493_IRQS_H
-#define _ASM_MB93493_IRQS_H
-
-#include <asm/irq.h>
-
-#ifndef __ASSEMBLY__
-
-/* IRQ IDs presented to drivers */
-enum {
-       IRQ_MB93493_VDC                 = IRQ_BASE_MB93493 + 0,
-       IRQ_MB93493_VCC                 = IRQ_BASE_MB93493 + 1,
-       IRQ_MB93493_AUDIO_OUT           = IRQ_BASE_MB93493 + 2,
-       IRQ_MB93493_I2C_0               = IRQ_BASE_MB93493 + 3,
-       IRQ_MB93493_I2C_1               = IRQ_BASE_MB93493 + 4,
-       IRQ_MB93493_USB                 = IRQ_BASE_MB93493 + 5,
-       IRQ_MB93493_LOCAL_BUS           = IRQ_BASE_MB93493 + 7,
-       IRQ_MB93493_PCMCIA              = IRQ_BASE_MB93493 + 8,
-       IRQ_MB93493_GPIO                = IRQ_BASE_MB93493 + 9,
-       IRQ_MB93493_AUDIO_IN            = IRQ_BASE_MB93493 + 10,
-};
-
-/* IRQ multiplexor mappings */
-#define ROUTE_VIA_IRQ0 0       /* route IRQ by way of CPU external IRQ 0 */
-#define ROUTE_VIA_IRQ1 1       /* route IRQ by way of CPU external IRQ 1 */
-
-#define IRQ_MB93493_VDC_ROUTE          ROUTE_VIA_IRQ0
-#define IRQ_MB93493_VCC_ROUTE          ROUTE_VIA_IRQ1
-#define IRQ_MB93493_AUDIO_OUT_ROUTE    ROUTE_VIA_IRQ1
-#define IRQ_MB93493_I2C_0_ROUTE                ROUTE_VIA_IRQ1
-#define IRQ_MB93493_I2C_1_ROUTE                ROUTE_VIA_IRQ1
-#define IRQ_MB93493_USB_ROUTE          ROUTE_VIA_IRQ1
-#define IRQ_MB93493_LOCAL_BUS_ROUTE    ROUTE_VIA_IRQ1
-#define IRQ_MB93493_PCMCIA_ROUTE       ROUTE_VIA_IRQ1
-#define IRQ_MB93493_GPIO_ROUTE         ROUTE_VIA_IRQ1
-#define IRQ_MB93493_AUDIO_IN_ROUTE     ROUTE_VIA_IRQ1
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_MB93493_IRQS_H */
diff --git a/include/asm-frv/mb93493-regs.h b/include/asm-frv/mb93493-regs.h
deleted file mode 100644 (file)
index 8a1f6aa..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/* mb93493-regs.h: MB93493 companion chip registers
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MB93493_REGS_H
-#define _ASM_MB93493_REGS_H
-
-#include <asm/mb-regs.h>
-#include <asm/mb93493-irqs.h>
-
-#define __addr_MB93493(X)      ((volatile unsigned long *)(__region_CS3 + (X)))
-#define __get_MB93493(X)       ({ *(volatile unsigned long *)(__region_CS3 + (X)); })
-
-#define __set_MB93493(X,V)                                             \
-do {                                                                   \
-       *(volatile unsigned long *)(__region_CS3 + (X)) = (V); mb();    \
-} while(0)
-
-#define __get_MB93493_STSR(X)  __get_MB93493(0x3c0 + (X) * 4)
-#define __set_MB93493_STSR(X,V)        __set_MB93493(0x3c0 + (X) * 4, (V))
-#define MB93493_STSR_EN
-
-#define __addr_MB93493_IQSR(X) __addr_MB93493(0x3d0 + (X) * 4)
-#define __get_MB93493_IQSR(X)  __get_MB93493(0x3d0 + (X) * 4)
-#define __set_MB93493_IQSR(X,V)        __set_MB93493(0x3d0 + (X) * 4, (V))
-
-#define __get_MB93493_DQSR(X)  __get_MB93493(0x3e0 + (X) * 4)
-#define __set_MB93493_DQSR(X,V)        __set_MB93493(0x3e0 + (X) * 4, (V))
-
-#define __get_MB93493_LBSER()  __get_MB93493(0x3f0)
-#define __set_MB93493_LBSER(V) __set_MB93493(0x3f0, (V))
-
-#define MB93493_LBSER_VDC      0x00010000
-#define MB93493_LBSER_VCC      0x00020000
-#define MB93493_LBSER_AUDIO    0x00040000
-#define MB93493_LBSER_I2C_0    0x00080000
-#define MB93493_LBSER_I2C_1    0x00100000
-#define MB93493_LBSER_USB      0x00200000
-#define MB93493_LBSER_GPIO     0x00800000
-#define MB93493_LBSER_PCMCIA   0x01000000
-
-#define __get_MB93493_LBSR()   __get_MB93493(0x3fc)
-#define __set_MB93493_LBSR(V)  __set_MB93493(0x3fc, (V))
-
-/*
- * video display controller
- */
-#define __get_MB93493_VDC(X)   __get_MB93493(MB93493_VDC_##X)
-#define __set_MB93493_VDC(X,V) __set_MB93493(MB93493_VDC_##X, (V))
-
-#define MB93493_VDC_RCURSOR    0x140   /* cursor position */
-#define MB93493_VDC_RCT1       0x144   /* cursor colour 1 */
-#define MB93493_VDC_RCT2       0x148   /* cursor colour 2 */
-#define MB93493_VDC_RHDC       0x150   /* horizontal display period */
-#define MB93493_VDC_RH_MARGINS 0x154   /* horizontal margin sizes */
-#define MB93493_VDC_RVDC       0x158   /* vertical display period */
-#define MB93493_VDC_RV_MARGINS 0x15c   /* vertical margin sizes */
-#define MB93493_VDC_RC         0x170   /* VDC control */
-#define MB93493_VDC_RCLOCK     0x174   /* clock divider, DMA req delay */
-#define MB93493_VDC_RBLACK     0x178   /* black insert sizes */
-#define MB93493_VDC_RS         0x17c   /* VDC status */
-
-#define __addr_MB93493_VDC_BCI(X)  ({ (volatile unsigned long *)(__region_CS3 + 0x000 + (X)); })
-#define __addr_MB93493_VDC_TPO(X)  (__region_CS3 + 0x1c0 + (X))
-
-#define VDC_TPO_WIDTH          32
-
-#define VDC_RC_DSR             0x00000080      /* VDC master reset */
-
-#define VDC_RS_IT              0x00060000      /* interrupt indicators */
-#define VDC_RS_IT_UNDERFLOW    0x00040000      /* - underflow event */
-#define VDC_RS_IT_VSYNC                0x00020000      /* - VSYNC event */
-#define VDC_RS_DFI             0x00010000      /* current interlace field number */
-#define VDC_RS_DFI_TOP         0x00000000      /* - top field */
-#define VDC_RS_DFI_BOTTOM      0x00010000      /* - bottom field */
-#define VDC_RS_DCSR            0x00000010      /* cursor state */
-#define VDC_RS_DCM             0x00000003      /* display mode */
-#define VDC_RS_DCM_DISABLED    0x00000000      /* - display disabled */
-#define VDC_RS_DCM_STOPPED     0x00000001      /* - VDC stopped */
-#define VDC_RS_DCM_FREERUNNING 0x00000002      /* - VDC free-running */
-#define VDC_RS_DCM_TRANSFERRING        0x00000003      /* - data being transferred to VDC */
-
-/*
- * video capture controller
- */
-#define __get_MB93493_VCC(X)   __get_MB93493(MB93493_VCC_##X)
-#define __set_MB93493_VCC(X,V) __set_MB93493(MB93493_VCC_##X, (V))
-
-#define MB93493_VCC_RREDUCT    0x104   /* reduction rate */
-#define MB93493_VCC_RHY                0x108   /* horizontal brightness filter coefficients */
-#define MB93493_VCC_RHC                0x10c   /* horizontal colour-difference filter coefficients */
-#define MB93493_VCC_RHSIZE     0x110   /* horizontal cycle sizes */
-#define MB93493_VCC_RHBC       0x114   /* horizontal back porch size */
-#define MB93493_VCC_RVCC       0x118   /* vertical capture period */
-#define MB93493_VCC_RVBC       0x11c   /* vertical back porch period */
-#define MB93493_VCC_RV         0x120   /* vertical filter coefficients */
-#define MB93493_VCC_RDTS       0x128   /* DMA transfer size */
-#define MB93493_VCC_RDTS_4B    0x01000000      /* 4-byte transfer */
-#define MB93493_VCC_RDTS_32B   0x03000000      /* 32-byte transfer */
-#define MB93493_VCC_RDTS_SHIFT 24
-#define MB93493_VCC_RCC                0x130   /* VCC control */
-#define MB93493_VCC_RIS                0x134   /* VCC interrupt status */
-
-#define __addr_MB93493_VCC_TPI(X)  (__region_CS3 + 0x180 + (X))
-
-#define VCC_RHSIZE_RHCC                0x000007ff
-#define VCC_RHSIZE_RHCC_SHIFT  0
-#define VCC_RHSIZE_RHTCC       0x0fff0000
-#define VCC_RHSIZE_RHTCC_SHIFT 16
-
-#define VCC_RVBC_RVBC          0x00003f00
-#define VCC_RVBC_RVBC_SHIFT    8
-
-#define VCC_RREDUCT_RHR                0x07ff0000
-#define VCC_RREDUCT_RHR_SHIFT  16
-#define VCC_RREDUCT_RVR                0x000007ff
-#define VCC_RREDUCT_RVR_SHIFT  0
-
-#define VCC_RCC_CE             0x00000001      /* VCC enable */
-#define VCC_RCC_CS             0x00000002      /* request video capture start */
-#define VCC_RCC_CPF            0x0000000c      /* pixel format */
-#define VCC_RCC_CPF_YCBCR_16   0x00000000      /* - YCbCr 4:2:2 16-bit format */
-#define VCC_RCC_CPF_RGB                0x00000004      /* - RGB 4:4:4 format */
-#define VCC_RCC_CPF_YCBCR_24   0x00000008      /* - YCbCr 4:2:2 24-bit format */
-#define VCC_RCC_CPF_BT656      0x0000000c      /* - ITU R-BT.656 format */
-#define VCC_RCC_CPF_SHIFT      2
-#define VCC_RCC_CSR            0x00000080      /* request reset */
-#define VCC_RCC_HSIP           0x00000100      /* HSYNC polarity */
-#define VCC_RCC_HSIP_LOACT     0x00000000      /* - low active */
-#define VCC_RCC_HSIP_HIACT     0x00000100      /* - high active */
-#define VCC_RCC_VSIP           0x00000200      /* VSYNC polarity */
-#define VCC_RCC_VSIP_LOACT     0x00000000      /* - low active */
-#define VCC_RCC_VSIP_HIACT     0x00000200      /* - high active */
-#define VCC_RCC_CIE            0x00000800      /* interrupt enable */
-#define VCC_RCC_CFP            0x00001000      /* RGB pixel packing */
-#define VCC_RCC_CFP_4TO3       0x00000000      /* - pack 4 pixels into 3 words */
-#define VCC_RCC_CFP_1TO1       0x00001000      /* - pack 1 pixel into 1 words */
-#define VCC_RCC_CSM            0x00006000      /* interlace specification */
-#define VCC_RCC_CSM_ONEPASS    0x00002000      /* - non-interlaced */
-#define VCC_RCC_CSM_INTERLACE  0x00004000      /* - interlaced */
-#define VCC_RCC_CSM_SHIFT      13
-#define VCC_RCC_ES             0x00008000      /* capture start polarity */
-#define VCC_RCC_ES_NEG         0x00000000      /* - negative edge */
-#define VCC_RCC_ES_POS         0x00008000      /* - positive edge */
-#define VCC_RCC_IFI            0x00080000      /* inferlace field evaluation reverse */
-#define VCC_RCC_FDTS           0x00300000      /* interlace field start */
-#define VCC_RCC_FDTS_3_8       0x00000000      /* - 3/8 of horizontal entire cycle */
-#define VCC_RCC_FDTS_1_4       0x00100000      /* - 1/4 of horizontal entire cycle */
-#define VCC_RCC_FDTS_7_16      0x00200000      /* - 7/16 of horizontal entire cycle */
-#define VCC_RCC_FDTS_SHIFT     20
-#define VCC_RCC_MOV            0x00400000      /* test bit - always set to 1 */
-#define VCC_RCC_STP            0x00800000      /* request video capture stop */
-#define VCC_RCC_TO             0x01000000      /* input during top-field only */
-
-#define VCC_RIS_VSYNC          0x01000000      /* VSYNC interrupt */
-#define VCC_RIS_OV             0x02000000      /* overflow interrupt */
-#define VCC_RIS_BOTTOM         0x08000000      /* interlace bottom field */
-#define VCC_RIS_STARTED                0x10000000      /* capture started */
-
-/*
- * I2C
- */
-#define MB93493_I2C_BSR        0x340           /* bus status */
-#define MB93493_I2C_BCR                0x344           /* bus control */
-#define MB93493_I2C_CCR                0x348           /* clock control */
-#define MB93493_I2C_ADR                0x34c           /* address */
-#define MB93493_I2C_DTR                0x350           /* data */
-#define MB93493_I2C_BC2R       0x35c           /* bus control 2 */
-
-#define __addr_MB93493_I2C(port,X)   (__region_CS3 + MB93493_I2C_##X + ((port)*0x20))
-#define __get_MB93493_I2C(port,X)    __get_MB93493(MB93493_I2C_##X + ((port)*0x20))
-#define __set_MB93493_I2C(port,X,V)  __set_MB93493(MB93493_I2C_##X + ((port)*0x20), (V))
-
-#define I2C_BSR_BB     (1 << 7)
-
-/*
- * audio controller (I2S) registers
- */
-#define __get_MB93493_I2S(X)   __get_MB93493(MB93493_I2S_##X)
-#define __set_MB93493_I2S(X,V) __set_MB93493(MB93493_I2S_##X, (V))
-
-#define MB93493_I2S_ALDR       0x300           /* L-channel data */
-#define MB93493_I2S_ARDR       0x304           /* R-channel data */
-#define MB93493_I2S_APDR       0x308           /* 16-bit packed data */
-#define MB93493_I2S_AISTR      0x310           /* status */
-#define MB93493_I2S_AICR       0x314           /* control */
-
-#define __addr_MB93493_I2S_ALDR(X)     (__region_CS3 + MB93493_I2S_ALDR + (X))
-#define __addr_MB93493_I2S_ARDR(X)     (__region_CS3 + MB93493_I2S_ARDR + (X))
-#define __addr_MB93493_I2S_APDR(X)     (__region_CS3 + MB93493_I2S_APDR + (X))
-#define __addr_MB93493_I2S_ADR(X)      (__region_CS3 + 0x320 + (X))
-
-#define I2S_AISTR_OTST         0x00000003      /* status of output data transfer */
-#define I2S_AISTR_OTR          0x00000010      /* output transfer request pending */
-#define I2S_AISTR_OUR          0x00000020      /* output FIFO underrun detected */
-#define I2S_AISTR_OOR          0x00000040      /* output FIFO overrun detected */
-#define I2S_AISTR_ODS          0x00000100      /* output DMA transfer size */
-#define I2S_AISTR_ODE          0x00000400      /* output DMA transfer request enable */
-#define I2S_AISTR_OTRIE                0x00001000      /* output transfer request interrupt enable */
-#define I2S_AISTR_OURIE                0x00002000      /* output FIFO underrun interrupt enable */
-#define I2S_AISTR_OORIE                0x00004000      /* output FIFO overrun interrupt enable */
-#define I2S_AISTR__OUT_MASK    0x00007570
-#define I2S_AISTR_ITST         0x00030000      /* status of input data transfer */
-#define I2S_AISTR_ITST_SHIFT   16
-#define I2S_AISTR_ITR          0x00100000      /* input transfer request pending */
-#define I2S_AISTR_IUR          0x00200000      /* input FIFO underrun detected */
-#define I2S_AISTR_IOR          0x00400000      /* input FIFO overrun detected */
-#define I2S_AISTR_IDS          0x01000000      /* input DMA transfer size */
-#define I2S_AISTR_IDE          0x04000000      /* input DMA transfer request enable */
-#define I2S_AISTR_ITRIE                0x10000000      /* input transfer request interrupt enable */
-#define I2S_AISTR_IURIE                0x20000000      /* input FIFO underrun interrupt enable */
-#define I2S_AISTR_IORIE                0x40000000      /* input FIFO overrun interrupt enable */
-#define I2S_AISTR__IN_MASK     0x75700000
-
-#define I2S_AICR_MI            0x00000001      /* mono input requested */
-#define I2S_AICR_AMI           0x00000002      /* relation between LRCKI/FS1 and SDI */
-#define I2S_AICR_LRI           0x00000004      /* function of LRCKI pin */
-#define I2S_AICR_SDMI          0x00000070      /* format of input audio data */
-#define I2S_AICR_SDMI_SHIFT    4
-#define I2S_AICR_CLI           0x00000080      /* input FIFO clearing control */
-#define I2S_AICR_IM            0x00000300      /* input state control */
-#define I2S_AICR_IM_SHIFT      8
-#define I2S_AICR__IN_MASK      0x000003f7
-#define I2S_AICR_MO            0x00001000      /* mono output requested */
-#define I2S_AICR_AMO           0x00002000      /* relation between LRCKO/FS0 and SDO */
-#define I2S_AICR_AMO_SHIFT     13
-#define I2S_AICR_LRO           0x00004000      /* function of LRCKO pin */
-#define I2S_AICR_SDMO          0x00070000      /* format of output audio data */
-#define I2S_AICR_SDMO_SHIFT    16
-#define I2S_AICR_CLO           0x00080000      /* output FIFO clearing control */
-#define I2S_AICR_OM            0x00100000      /* output state control */
-#define I2S_AICR__OUT_MASK     0x001f7000
-#define I2S_AICR_DIV           0x03000000      /* frequency division rate */
-#define I2S_AICR_DIV_SHIFT     24
-#define I2S_AICR_FL            0x20000000      /* frame length */
-#define I2S_AICR_FS            0x40000000      /* frame sync method */
-#define I2S_AICR_ME            0x80000000      /* master enable */
-
-/*
- * PCMCIA
- */
-#define __addr_MB93493_PCMCIA(X)  ((volatile unsigned long *)(__region_CS5 + (X)))
-
-/*
- * GPIO
- */
-#define __get_MB93493_GPIO_PDR(X)      __get_MB93493(0x380 + (X) * 0xc0)
-#define __set_MB93493_GPIO_PDR(X,V)    __set_MB93493(0x380 + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_GPDR(X)     __get_MB93493(0x384 + (X) * 0xc0)
-#define __set_MB93493_GPIO_GPDR(X,V)   __set_MB93493(0x384 + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_SIR(X)      __get_MB93493(0x388 + (X) * 0xc0)
-#define __set_MB93493_GPIO_SIR(X,V)    __set_MB93493(0x388 + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_SOR(X)      __get_MB93493(0x38c + (X) * 0xc0)
-#define __set_MB93493_GPIO_SOR(X,V)    __set_MB93493(0x38c + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_PDSR(X)     __get_MB93493(0x390 + (X) * 0xc0)
-#define __set_MB93493_GPIO_PDSR(X,V)   __set_MB93493(0x390 + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_PDCR(X)     __get_MB93493(0x394 + (X) * 0xc0)
-#define __set_MB93493_GPIO_PDCR(X,V)   __set_MB93493(0x394 + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_INTST(X)    __get_MB93493(0x398 + (X) * 0xc0)
-#define __set_MB93493_GPIO_INTST(X,V)  __set_MB93493(0x398 + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_IEHL(X)     __get_MB93493(0x39c + (X) * 0xc0)
-#define __set_MB93493_GPIO_IEHL(X,V)   __set_MB93493(0x39c + (X) * 0xc0, (V))
-
-#define __get_MB93493_GPIO_IELH(X)     __get_MB93493(0x3a0 + (X) * 0xc0)
-#define __set_MB93493_GPIO_IELH(X,V)   __set_MB93493(0x3a0 + (X) * 0xc0, (V))
-
-#endif /* _ASM_MB93493_REGS_H */
diff --git a/include/asm-frv/mc146818rtc.h b/include/asm-frv/mc146818rtc.h
deleted file mode 100644 (file)
index 90dfb7a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* mc146818rtc.h: RTC defs
- *
- * Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MC146818RTC_H
-#define _ASM_MC146818RTC_H
-
-
-#endif /* _ASM_MC146818RTC_H */
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h
deleted file mode 100644 (file)
index 2947764..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* mem-layout.h: memory layout
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MEM_LAYOUT_H
-#define _ASM_MEM_LAYOUT_H
-
-#ifndef __ASSEMBLY__
-#define __UL(X)        ((unsigned long) (X))
-#else
-#define __UL(X)        (X)
-#endif
-
-/*
- * PAGE_SHIFT determines the page size
- */
-#define PAGE_SHIFT                     14
-
-#ifndef __ASSEMBLY__
-#define PAGE_SIZE                      (1UL << PAGE_SHIFT)
-#else
-#define PAGE_SIZE                      (1 << PAGE_SHIFT)
-#endif
-
-#define PAGE_MASK                      (~(PAGE_SIZE-1))
-
-/*
- * the slab must be aligned such that load- and store-double instructions don't
- * fault if used
- */
-#define        ARCH_KMALLOC_MINALIGN           8
-#define        ARCH_SLAB_MINALIGN              8
-
-/*****************************************************************************/
-/*
- * virtual memory layout from kernel's point of view
- */
-#define PAGE_OFFSET                    ((unsigned long) &__page_offset)
-
-#ifdef CONFIG_MMU
-
-/* see Documentation/frv/mmu-layout.txt */
-#define KERNEL_LOWMEM_START            __UL(0xc0000000)
-#define KERNEL_LOWMEM_END              __UL(0xd0000000)
-#define VMALLOC_START                  __UL(0xd0000000)
-#define VMALLOC_END                    __UL(0xd8000000)
-#define PKMAP_BASE                     __UL(0xd8000000)
-#define PKMAP_END                      __UL(0xdc000000)
-#define KMAP_ATOMIC_SECONDARY_FRAME    __UL(0xdc000000)
-#define KMAP_ATOMIC_PRIMARY_FRAME      __UL(0xdd000000)
-
-#endif
-
-#define KERNEL_IO_START                        __UL(0xe0000000)
-
-
-/*****************************************************************************/
-/*
- * memory layout from userspace's point of view
- */
-#define BRK_BASE                       __UL(2 * 1024 * 1024 + PAGE_SIZE)
-#define STACK_TOP                      __UL(2 * 1024 * 1024)
-#define STACK_TOP_MAX                  __UL(0xc0000000)
-
-/* userspace process size */
-#ifdef CONFIG_MMU
-#define TASK_SIZE                      (PAGE_OFFSET)
-#else
-#define TASK_SIZE                      __UL(0xFFFFFFFFUL)
-#endif
-
-/* base of area at which unspecified mmaps will start */
-#ifdef CONFIG_BINFMT_ELF_FDPIC
-#define TASK_UNMAPPED_BASE             __UL(16 * 1024 * 1024)
-#else
-#define TASK_UNMAPPED_BASE             __UL(TASK_SIZE / 3)
-#endif
-
-#endif /* _ASM_MEM_LAYOUT_H */
diff --git a/include/asm-frv/mman.h b/include/asm-frv/mman.h
deleted file mode 100644 (file)
index b4371e9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef __ASM_MMAN_H__
-#define __ASM_MMAN_H__
-
-#include <asm-generic/mman.h>
-
-#define MAP_GROWSDOWN  0x0100          /* stack-like segment */
-#define MAP_DENYWRITE  0x0800          /* ETXTBSY */
-#define MAP_EXECUTABLE 0x1000          /* mark it as an executable */
-#define MAP_LOCKED     0x2000          /* pages are locked */
-#define MAP_NORESERVE  0x4000          /* don't check for reservations */
-#define MAP_POPULATE   0x8000          /* populate (prefault) pagetables */
-#define MAP_NONBLOCK   0x10000         /* do not block on IO */
-
-#define MCL_CURRENT    1               /* lock all current mappings */
-#define MCL_FUTURE     2               /* lock all future mappings */
-
-#endif /* __ASM_MMAN_H__ */
-
diff --git a/include/asm-frv/mmu.h b/include/asm-frv/mmu.h
deleted file mode 100644 (file)
index 86ca0e8..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* mmu.h: memory management context for FR-V with or without MMU support
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_MMU_H
-#define _ASM_MMU_H
-
-typedef struct {
-#ifdef CONFIG_MMU
-       struct list_head id_link;               /* link in list of context ID owners */
-       unsigned short  id;                     /* MMU context ID */
-       unsigned short  id_busy;                /* true if ID is in CXNR */
-       unsigned long   itlb_cached_pge;        /* [SCR0] PGE cached for insn TLB handler */
-       unsigned long   itlb_ptd_mapping;       /* [DAMR4] PTD mapping for itlb cached PGE */
-       unsigned long   dtlb_cached_pge;        /* [SCR1] PGE cached for data TLB handler */
-       unsigned long   dtlb_ptd_mapping;       /* [DAMR5] PTD mapping for dtlb cached PGE */
-
-#else
-       unsigned long           end_brk;
-
-#endif
-
-#ifdef CONFIG_BINFMT_ELF_FDPIC
-       unsigned long   exec_fdpic_loadmap;
-       unsigned long   interp_fdpic_loadmap;
-#endif
-
-} mm_context_t;
-
-#ifdef CONFIG_MMU
-extern int __nongpreldata cxn_pinned;
-extern int cxn_pin_by_pid(pid_t pid);
-#endif
-
-#endif /* _ASM_MMU_H */
diff --git a/include/asm-frv/mmu_context.h b/include/asm-frv/mmu_context.h
deleted file mode 100644 (file)
index c7daa39..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* mmu_context.h: MMU context management routines
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_MMU_CONTEXT_H
-#define _ASM_MMU_CONTEXT_H
-
-#include <asm/setup.h>
-#include <asm/page.h>
-#include <asm/pgalloc.h>
-#include <asm-generic/mm_hooks.h>
-
-static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
-{
-}
-
-#ifdef CONFIG_MMU
-extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
-extern void change_mm_context(mm_context_t *old, mm_context_t *ctx, pgd_t *_pgd);
-extern void destroy_context(struct mm_struct *mm);
-
-#else
-#define init_new_context(tsk, mm)              ({ 0; })
-#define change_mm_context(old, ctx, _pml4)     do {} while(0)
-#define destroy_context(mm)                    do {} while(0)
-#endif
-
-#define switch_mm(prev, next, tsk)                                             \
-do {                                                                           \
-       if (prev != next)                                                       \
-               change_mm_context(&prev->context, &next->context, next->pgd);   \
-} while(0)
-
-#define activate_mm(prev, next)                                                \
-do {                                                                   \
-       change_mm_context(&prev->context, &next->context, next->pgd);   \
-} while(0)
-
-#define deactivate_mm(tsk, mm)                 \
-do {                                           \
-} while(0)
-
-#endif
diff --git a/include/asm-frv/module.h b/include/asm-frv/module.h
deleted file mode 100644 (file)
index 3d5c636..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* module.h: FRV module stuff
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_MODULE_H
-#define _ASM_MODULE_H
-
-struct mod_arch_specific
-{
-};
-
-#define Elf_Shdr       Elf32_Shdr
-#define Elf_Sym                Elf32_Sym
-#define Elf_Ehdr       Elf32_Ehdr
-
-/*
- * Include the architecture version.
- */
-#define MODULE_ARCH_VERMAGIC __stringify(PROCESSOR_MODEL_NAME) " "
-
-#endif /* _ASM_MODULE_H */
-
diff --git a/include/asm-frv/msgbuf.h b/include/asm-frv/msgbuf.h
deleted file mode 100644 (file)
index 97ceb55..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _ASM_MSGBUF_H
-#define _ASM_MSGBUF_H
-
-/*
- * The msqid64_ds structure for FR-V architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 64-bit time_t to solve y2038 problem
- * - 2 miscellaneous 32-bit values
- */
-
-struct msqid64_ds {
-       struct ipc64_perm       msg_perm;
-       __kernel_time_t         msg_stime;      /* last msgsnd time */
-       unsigned long           __unused1;
-       __kernel_time_t         msg_rtime;      /* last msgrcv time */
-       unsigned long           __unused2;
-       __kernel_time_t         msg_ctime;      /* last change time */
-       unsigned long           __unused3;
-       unsigned long           msg_cbytes;     /* current number of bytes on queue */
-       unsigned long           msg_qnum;       /* number of messages in queue */
-       unsigned long           msg_qbytes;     /* max number of bytes on queue */
-       __kernel_pid_t          msg_lspid;      /* pid of last msgsnd */
-       __kernel_pid_t          msg_lrpid;      /* last receive pid */
-       unsigned long           __unused4;
-       unsigned long           __unused5;
-};
-
-#endif /* _ASM_MSGBUF_H */
-
diff --git a/include/asm-frv/mutex.h b/include/asm-frv/mutex.h
deleted file mode 100644 (file)
index 458c1f7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- * Pull in the generic implementation for the mutex fastpath.
- *
- * TODO: implement optimized primitives instead, or leave the generic
- * implementation in place, or pick the atomic_xchg() based generic
- * implementation. (see asm-generic/mutex-xchg.h for details)
- */
-
-#include <asm-generic/mutex-dec.h>
diff --git a/include/asm-frv/page.h b/include/asm-frv/page.h
deleted file mode 100644 (file)
index bd9c220..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef _ASM_PAGE_H
-#define _ASM_PAGE_H
-
-#include <asm/virtconvert.h>
-#include <asm/mem-layout.h>
-#include <asm/sections.h>
-#include <asm/setup.h>
-
-#ifndef __ASSEMBLY__
-
-#define get_user_page(vaddr)                   __get_free_page(GFP_KERNEL)
-#define free_user_page(page, addr)             free_page(addr)
-
-#define clear_page(pgaddr)                     memset((pgaddr), 0, PAGE_SIZE)
-#define copy_page(to,from)                     memcpy((to), (from), PAGE_SIZE)
-
-#define clear_user_page(pgaddr, vaddr, page)   memset((pgaddr), 0, PAGE_SIZE)
-#define copy_user_page(vto, vfrom, vaddr, topg)        memcpy((vto), (vfrom), PAGE_SIZE)
-
-/*
- * These are used to make use of C type-checking..
- */
-typedef struct { unsigned long pte;    } pte_t;
-typedef struct { unsigned long ste[64];} pmd_t;
-typedef struct { pmd_t         pue[1]; } pud_t;
-typedef struct { pud_t         pge[1]; } pgd_t;
-typedef struct { unsigned long pgprot; } pgprot_t;
-typedef struct page *pgtable_t;
-
-#define pte_val(x)     ((x).pte)
-#define pmd_val(x)     ((x).ste[0])
-#define pud_val(x)     ((x).pue[0])
-#define pgd_val(x)     ((x).pge[0])
-#define pgprot_val(x)  ((x).pgprot)
-
-#define __pte(x)       ((pte_t) { (x) } )
-#define __pmd(x)       ((pmd_t) { (x) } )
-#define __pud(x)       ((pud_t) { (x) } )
-#define __pgd(x)       ((pgd_t) { (x) } )
-#define __pgprot(x)    ((pgprot_t) { (x) } )
-#define PTE_MASK       PAGE_MASK
-
-#define devmem_is_allowed(pfn) 1
-
-#define __pa(vaddr)            virt_to_phys((void *) (unsigned long) (vaddr))
-#define __va(paddr)            phys_to_virt((unsigned long) (paddr))
-
-#define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
-
-extern unsigned long max_low_pfn;
-extern unsigned long min_low_pfn;
-extern unsigned long max_pfn;
-
-#ifdef CONFIG_MMU
-#define pfn_valid(pfn)         ((pfn) < max_mapnr)
-#else
-#define ARCH_PFN_OFFSET                (PAGE_OFFSET >> PAGE_SHIFT)
-#define pfn_valid(pfn)         ((pfn) >= min_low_pfn && (pfn) < max_low_pfn)
-
-#endif
-
-#define virt_to_page(kaddr)    pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
-#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
-
-
-#ifdef CONFIG_MMU
-#define VM_DATA_DEFAULT_FLAGS \
-       (VM_READ | VM_WRITE | \
-       ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
-                VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-#endif
-
-#endif /* __ASSEMBLY__ */
-
-#include <asm-generic/memory_model.h>
-#include <asm-generic/page.h>
-
-#endif /* _ASM_PAGE_H */
diff --git a/include/asm-frv/param.h b/include/asm-frv/param.h
deleted file mode 100644 (file)
index 6859dd5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _ASM_PARAM_H
-#define _ASM_PARAM_H
-
-#ifdef __KERNEL__
-#define HZ             CONFIG_HZ       /* Internal kernel timer frequency */
-#define USER_HZ                100             /* .. some user interfaces are in "ticks" */
-#define CLOCKS_PER_SEC (USER_HZ)       /* like times() */
-#endif
-
-#ifndef HZ
-#define HZ 100
-#endif
-
-#define EXEC_PAGESIZE  16384
-
-#ifndef NOGROUP
-#define NOGROUP                (-1)
-#endif
-
-#define MAXHOSTNAMELEN         64      /* max length of hostname */
-
-#endif /* _ASM_PARAM_H */
diff --git a/include/asm-frv/pci.h b/include/asm-frv/pci.h
deleted file mode 100644 (file)
index 585d9b4..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/* pci.h: FR-V specific PCI declarations
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-m68k/pci.h
- *
- * 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.
- */
-
-#ifndef ASM_PCI_H
-#define        ASM_PCI_H
-
-#include <linux/mm.h>
-#include <asm/scatterlist.h>
-#include <asm-generic/pci-dma-compat.h>
-#include <asm-generic/pci.h>
-
-struct pci_dev;
-
-#define pcibios_assign_all_busses()    0
-
-extern void pcibios_set_master(struct pci_dev *dev);
-
-extern void pcibios_penalize_isa_irq(int irq);
-
-#ifdef CONFIG_MMU
-extern void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *dma_handle);
-extern void consistent_free(void *vaddr);
-extern void consistent_sync(void *vaddr, size_t size, int direction);
-extern void consistent_sync_page(struct page *page, unsigned long offset,
-                                size_t size, int direction);
-#endif
-
-extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
-                                 dma_addr_t *dma_handle);
-
-extern void pci_free_consistent(struct pci_dev *hwdev, size_t size,
-                               void *vaddr, dma_addr_t dma_handle);
-
-/* Return the index of the PCI controller for device PDEV. */
-#define pci_controller_num(PDEV)       (0)
-
-/* The PCI address space does equal the physical memory
- * address space.  The networking and block device layers use
- * this boolean for bounce buffer decisions.
- */
-#define PCI_DMA_BUS_IS_PHYS    (1)
-
-/* pci_unmap_{page,single} is a nop so... */
-#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
-#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
-#define pci_unmap_addr(PTR, ADDR_NAME)         (0)
-#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)        do { } while (0)
-#define pci_unmap_len(PTR, LEN_NAME)           (0)
-#define pci_unmap_len_set(PTR, LEN_NAME, VAL)  do { } while (0)
-
-#ifdef CONFIG_PCI
-static inline void pci_dma_burst_advice(struct pci_dev *pdev,
-                                       enum pci_dma_burst_strategy *strat,
-                                       unsigned long *strategy_parameter)
-{
-       *strat = PCI_DMA_BURST_INFINITY;
-       *strategy_parameter = ~0UL;
-}
-#endif
-
-/*
- *     These are pretty much arbitary with the CoMEM implementation.
- *     We have the whole address space to ourselves.
- */
-#define PCIBIOS_MIN_IO         0x100
-#define PCIBIOS_MIN_MEM                0x00010000
-
-/* Make physical memory consistent for a single
- * streaming mode DMA translation after a transfer.
- *
- * If you perform a pci_map_single() but wish to interrogate the
- * buffer using the cpu, yet do not wish to teardown the PCI dma
- * mapping, you must call this function before doing so.  At the
- * next point you give the PCI dma address back to the card, the
- * device again owns the buffer.
- */
-static inline void pci_dma_sync_single(struct pci_dev *hwdev,
-                                      dma_addr_t dma_handle,
-                                      size_t size, int direction)
-{
-       if (direction == PCI_DMA_NONE)
-                BUG();
-
-       frv_cache_wback_inv((unsigned long)bus_to_virt(dma_handle),
-                           (unsigned long)bus_to_virt(dma_handle) + size);
-}
-
-/* Make physical memory consistent for a set of streaming
- * mode DMA translations after a transfer.
- *
- * The same as pci_dma_sync_single but for a scatter-gather list,
- * same rules and usage.
- */
-static inline void pci_dma_sync_sg(struct pci_dev *hwdev,
-                                  struct scatterlist *sg,
-                                  int nelems, int direction)
-{
-       int i;
-
-       if (direction == PCI_DMA_NONE)
-                BUG();
-
-       for (i = 0; i < nelems; i++)
-               frv_cache_wback_inv(sg_dma_address(&sg[i]),
-                                   sg_dma_address(&sg[i])+sg_dma_len(&sg[i]));
-}
-
-
-#endif
diff --git a/include/asm-frv/percpu.h b/include/asm-frv/percpu.h
deleted file mode 100644 (file)
index 2cad3f8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __ASM_PERCPU_H
-#define __ASM_PERCPU_H
-
-#include <asm-generic/percpu.h>
-
-#endif /* __ASM_PERCPU_H */
diff --git a/include/asm-frv/pgalloc.h b/include/asm-frv/pgalloc.h
deleted file mode 100644 (file)
index 971e6ad..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* pgalloc.h: Page allocation routines for FRV
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- *
- * Derived from:
- *     include/asm-m68knommu/pgalloc.h
- *     include/asm-i386/pgalloc.h
- */
-#ifndef _ASM_PGALLOC_H
-#define _ASM_PGALLOC_H
-
-#include <asm/setup.h>
-#include <asm/virtconvert.h>
-
-#ifdef CONFIG_MMU
-
-#define pmd_populate_kernel(mm, pmd, pte) __set_pmd(pmd, __pa(pte) | _PAGE_TABLE)
-#define pmd_populate(MM, PMD, PAGE)                                            \
-do {                                                                           \
-       __set_pmd((PMD), page_to_pfn(PAGE) << PAGE_SHIFT | _PAGE_TABLE);        \
-} while(0)
-#define pmd_pgtable(pmd) pmd_page(pmd)
-
-/*
- * Allocate and free page tables.
- */
-
-extern pgd_t *pgd_alloc(struct mm_struct *);
-extern void pgd_free(struct mm_struct *mm, pgd_t *);
-
-extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
-
-extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long);
-
-static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
-{
-       free_page((unsigned long)pte);
-}
-
-static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
-{
-       pgtable_page_dtor(pte);
-       __free_page(pte);
-}
-
-#define __pte_free_tlb(tlb,pte)                                \
-do {                                                   \
-       pgtable_page_dtor(pte);                         \
-       tlb_remove_page((tlb),(pte));                   \
-} while (0)
-
-/*
- * allocating and freeing a pmd is trivial: the 1-entry pmd is
- * inside the pgd, so has no extra memory associated with it.
- * (In the PAE case we free the pmds as part of the pgd.)
- */
-#define pmd_alloc_one(mm, addr)                ({ BUG(); ((pmd_t *) 2); })
-#define pmd_free(mm, x)                        do { } while (0)
-#define __pmd_free_tlb(tlb,x)          do { } while (0)
-
-#endif /* CONFIG_MMU */
-
-#endif /* _ASM_PGALLOC_H */
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h
deleted file mode 100644 (file)
index 3323301..0000000
+++ /dev/null
@@ -1,549 +0,0 @@
-/* pgtable.h: FR-V page table mangling
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- *
- * Derived from:
- *     include/asm-m68knommu/pgtable.h
- *     include/asm-i386/pgtable.h
- */
-
-#ifndef _ASM_PGTABLE_H
-#define _ASM_PGTABLE_H
-
-#include <asm/mem-layout.h>
-#include <asm/setup.h>
-#include <asm/processor.h>
-
-#ifndef __ASSEMBLY__
-#include <linux/threads.h>
-#include <linux/slab.h>
-#include <linux/list.h>
-#include <linux/spinlock.h>
-#include <linux/sched.h>
-struct vm_area_struct;
-#endif
-
-#ifndef __ASSEMBLY__
-#if defined(CONFIG_HIGHPTE)
-typedef unsigned long pte_addr_t;
-#else
-typedef pte_t *pte_addr_t;
-#endif
-#endif
-
-/*****************************************************************************/
-/*
- * MMU-less operation case first
- */
-#ifndef CONFIG_MMU
-
-#define pgd_present(pgd)       (1)             /* pages are always present on NO_MM */
-#define pgd_none(pgd)          (0)
-#define pgd_bad(pgd)           (0)
-#define pgd_clear(pgdp)
-#define kern_addr_valid(addr)  (1)
-#define        pmd_offset(a, b)        ((void *) 0)
-
-#define PAGE_NONE              __pgprot(0)     /* these mean nothing to NO_MM */
-#define PAGE_SHARED            __pgprot(0)     /* these mean nothing to NO_MM */
-#define PAGE_COPY              __pgprot(0)     /* these mean nothing to NO_MM */
-#define PAGE_READONLY          __pgprot(0)     /* these mean nothing to NO_MM */
-#define PAGE_KERNEL            __pgprot(0)     /* these mean nothing to NO_MM */
-
-#define __swp_type(x)          (0)
-#define __swp_offset(x)                (0)
-#define __swp_entry(typ,off)   ((swp_entry_t) { ((typ) | ((off) << 7)) })
-#define __pte_to_swp_entry(pte)        ((swp_entry_t) { pte_val(pte) })
-#define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
-
-#ifndef __ASSEMBLY__
-static inline int pte_file(pte_t pte) { return 0; }
-#endif
-
-#define ZERO_PAGE(vaddr)       ({ BUG(); NULL; })
-
-#define swapper_pg_dir         ((pgd_t *) NULL)
-
-#define pgtable_cache_init()           do {} while (0)
-
-#include <asm-generic/pgtable.h>
-
-#else /* !CONFIG_MMU */
-/*****************************************************************************/
-/*
- * then MMU operation
- */
-
-/*
- * ZERO_PAGE is a global shared page that is always zero: used
- * for zero-mapped memory areas etc..
- */
-#ifndef __ASSEMBLY__
-extern unsigned long empty_zero_page;
-#define ZERO_PAGE(vaddr)       virt_to_page(empty_zero_page)
-#endif
-
-/*
- * we use 2-level page tables, folding the PMD (mid-level table) into the PGE (top-level entry)
- * [see Documentation/frv/mmu-layout.txt]
- *
- * Page Directory:
- *  - Size: 16KB
- *  - 64 PGEs per PGD
- *  - Each PGE holds 1 PUD and covers 64MB
- *
- * Page Upper Directory:
- *  - Size: 256B
- *  - 1 PUE per PUD
- *  - Each PUE holds 1 PMD and covers 64MB
- *
- * Page Mid-Level Directory
- *  - Size: 256B
- *  - 1 PME per PMD
- *  - Each PME holds 64 STEs, all of which point to separate chunks of the same Page Table
- *  - All STEs are instantiated at the same time
- *
- * Page Table
- *  - Size: 16KB
- *  - 4096 PTEs per PT
- *  - Each Linux PT is subdivided into 64 FR451 PT's, each of which holds 64 entries
- *
- * Pages
- *  - Size: 4KB
- *
- * total PTEs
- *     = 1 PML4E * 64 PGEs * 1 PUEs * 1 PMEs * 4096 PTEs
- *     = 1 PML4E * 64 PGEs * 64 STEs * 64 PTEs/FR451-PT
- *     = 262144 (or 256 * 1024)
- */
-#define PGDIR_SHIFT            26
-#define PGDIR_SIZE             (1UL << PGDIR_SHIFT)
-#define PGDIR_MASK             (~(PGDIR_SIZE - 1))
-#define PTRS_PER_PGD           64
-
-#define PUD_SHIFT              26
-#define PTRS_PER_PUD           1
-#define PUD_SIZE               (1UL << PUD_SHIFT)
-#define PUD_MASK               (~(PUD_SIZE - 1))
-#define PUE_SIZE               256
-
-#define PMD_SHIFT              26
-#define PMD_SIZE               (1UL << PMD_SHIFT)
-#define PMD_MASK               (~(PMD_SIZE - 1))
-#define PTRS_PER_PMD           1
-#define PME_SIZE               256
-
-#define __frv_PT_SIZE          256
-
-#define PTRS_PER_PTE           4096
-
-#define USER_PGDS_IN_LAST_PML4 (TASK_SIZE / PGDIR_SIZE)
-#define FIRST_USER_ADDRESS     0
-
-#define USER_PGD_PTRS          (PAGE_OFFSET >> PGDIR_SHIFT)
-#define KERNEL_PGD_PTRS                (PTRS_PER_PGD - USER_PGD_PTRS)
-
-#define TWOLEVEL_PGDIR_SHIFT   26
-#define BOOT_USER_PGD_PTRS     (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT)
-#define BOOT_KERNEL_PGD_PTRS   (PTRS_PER_PGD - BOOT_USER_PGD_PTRS)
-
-#ifndef __ASSEMBLY__
-
-extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
-
-#define pte_ERROR(e) \
-       printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte)
-#define pmd_ERROR(e) \
-       printk("%s:%d: bad pmd %08lx.\n", __FILE__, __LINE__, pmd_val(e))
-#define pud_ERROR(e) \
-       printk("%s:%d: bad pud %08lx.\n", __FILE__, __LINE__, pmd_val(pud_val(e)))
-#define pgd_ERROR(e) \
-       printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pmd_val(pud_val(pgd_val(e))))
-
-/*
- * Certain architectures need to do special things when PTEs
- * within a page table are directly modified.  Thus, the following
- * hook is made available.
- */
-#define set_pte(pteptr, pteval)                                \
-do {                                                   \
-       *(pteptr) = (pteval);                           \
-       asm volatile("dcf %M0" :: "U"(*pteptr));        \
-} while(0)
-#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
-
-/*
- * pgd_offset() returns a (pgd_t *)
- * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
- */
-#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address))
-
-/*
- * a shortcut which implies the use of the kernel's pgd, instead
- * of a process's
- */
-#define pgd_offset_k(address) pgd_offset(&init_mm, address)
-
-/*
- * The "pgd_xxx()" functions here are trivial for a folded two-level
- * setup: the pud is never bad, and a pud always exists (as it's folded
- * into the pgd entry)
- */
-static inline int pgd_none(pgd_t pgd)          { return 0; }
-static inline int pgd_bad(pgd_t pgd)           { return 0; }
-static inline int pgd_present(pgd_t pgd)       { return 1; }
-static inline void pgd_clear(pgd_t *pgd)       { }
-
-#define pgd_populate(mm, pgd, pud)             do { } while (0)
-/*
- * (puds are folded into pgds so this doesn't get actually called,
- * but the define is needed for a generic inline function.)
- */
-#define set_pgd(pgdptr, pgdval)                                \
-do {                                                   \
-       memcpy((pgdptr), &(pgdval), sizeof(pgd_t));     \
-       asm volatile("dcf %M0" :: "U"(*(pgdptr)));      \
-} while(0)
-
-static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
-{
-       return (pud_t *) pgd;
-}
-
-#define pgd_page(pgd)                          (pud_page((pud_t){ pgd }))
-#define pgd_page_vaddr(pgd)                    (pud_page_vaddr((pud_t){ pgd }))
-
-/*
- * allocating and freeing a pud is trivial: the 1-entry pud is
- * inside the pgd, so has no extra memory associated with it.
- */
-#define pud_alloc_one(mm, address)             NULL
-#define pud_free(mm, x)                                do { } while (0)
-#define __pud_free_tlb(tlb, x)                 do { } while (0)
-
-/*
- * The "pud_xxx()" functions here are trivial for a folded two-level
- * setup: the pmd is never bad, and a pmd always exists (as it's folded
- * into the pud entry)
- */
-static inline int pud_none(pud_t pud)          { return 0; }
-static inline int pud_bad(pud_t pud)           { return 0; }
-static inline int pud_present(pud_t pud)       { return 1; }
-static inline void pud_clear(pud_t *pud)       { }
-
-#define pud_populate(mm, pmd, pte)             do { } while (0)
-
-/*
- * (pmds are folded into puds so this doesn't get actually called,
- * but the define is needed for a generic inline function.)
- */
-#define set_pud(pudptr, pudval)                        set_pmd((pmd_t *)(pudptr), (pmd_t) { pudval })
-
-#define pud_page(pud)                          (pmd_page((pmd_t){ pud }))
-#define pud_page_vaddr(pud)                    (pmd_page_vaddr((pmd_t){ pud }))
-
-/*
- * (pmds are folded into pgds so this doesn't get actually called,
- * but the define is needed for a generic inline function.)
- */
-extern void __set_pmd(pmd_t *pmdptr, unsigned long __pmd);
-
-#define set_pmd(pmdptr, pmdval)                        \
-do {                                           \
-       __set_pmd((pmdptr), (pmdval).ste[0]);   \
-} while(0)
-
-#define __pmd_index(address)                   0
-
-static inline pmd_t *pmd_offset(pud_t *dir, unsigned long address)
-{
-       return (pmd_t *) dir + __pmd_index(address);
-}
-
-#define pte_same(a, b)         ((a).pte == (b).pte)
-#define pte_page(x)            (mem_map + ((unsigned long)(((x).pte >> PAGE_SHIFT))))
-#define pte_none(x)            (!(x).pte)
-#define pte_pfn(x)             ((unsigned long)(((x).pte >> PAGE_SHIFT)))
-#define pfn_pte(pfn, prot)     __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
-#define pfn_pmd(pfn, prot)     __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
-
-#define VMALLOC_VMADDR(x)      ((unsigned long) (x))
-
-#endif /* !__ASSEMBLY__ */
-
-/*
- * control flags in AMPR registers and TLB entries
- */
-#define _PAGE_BIT_PRESENT      xAMPRx_V_BIT
-#define _PAGE_BIT_WP           DAMPRx_WP_BIT
-#define _PAGE_BIT_NOCACHE      xAMPRx_C_BIT
-#define _PAGE_BIT_SUPER                xAMPRx_S_BIT
-#define _PAGE_BIT_ACCESSED     xAMPRx_RESERVED8_BIT
-#define _PAGE_BIT_DIRTY                xAMPRx_M_BIT
-#define _PAGE_BIT_NOTGLOBAL    xAMPRx_NG_BIT
-
-#define _PAGE_PRESENT          xAMPRx_V
-#define _PAGE_WP               DAMPRx_WP
-#define _PAGE_NOCACHE          xAMPRx_C
-#define _PAGE_SUPER            xAMPRx_S
-#define _PAGE_ACCESSED         xAMPRx_RESERVED8        /* accessed if set */
-#define _PAGE_DIRTY            xAMPRx_M
-#define _PAGE_NOTGLOBAL                xAMPRx_NG
-
-#define _PAGE_RESERVED_MASK    (xAMPRx_RESERVED8 | xAMPRx_RESERVED13)
-
-#define _PAGE_FILE             0x002   /* set:pagecache unset:swap */
-#define _PAGE_PROTNONE         0x000   /* If not present */
-
-#define _PAGE_CHG_MASK         (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
-
-#define __PGPROT_BASE \
-       (_PAGE_PRESENT | xAMPRx_SS_16Kb | xAMPRx_D | _PAGE_NOTGLOBAL | _PAGE_ACCESSED)
-
-#define PAGE_NONE      __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
-#define PAGE_SHARED    __pgprot(__PGPROT_BASE)
-#define PAGE_COPY      __pgprot(__PGPROT_BASE | _PAGE_WP)
-#define PAGE_READONLY  __pgprot(__PGPROT_BASE | _PAGE_WP)
-
-#define __PAGE_KERNEL          (__PGPROT_BASE | _PAGE_SUPER | _PAGE_DIRTY)
-#define __PAGE_KERNEL_NOCACHE  (__PGPROT_BASE | _PAGE_SUPER | _PAGE_DIRTY | _PAGE_NOCACHE)
-#define __PAGE_KERNEL_RO       (__PGPROT_BASE | _PAGE_SUPER | _PAGE_DIRTY | _PAGE_WP)
-
-#define MAKE_GLOBAL(x) __pgprot((x) & ~_PAGE_NOTGLOBAL)
-
-#define PAGE_KERNEL            MAKE_GLOBAL(__PAGE_KERNEL)
-#define PAGE_KERNEL_RO         MAKE_GLOBAL(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_NOCACHE    MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE)
-
-#define _PAGE_TABLE            (_PAGE_PRESENT | xAMPRx_SS_16Kb)
-
-#ifndef __ASSEMBLY__
-
-/*
- * The FR451 can do execute protection by virtue of having separate TLB miss handlers for
- * instruction access and for data access. However, we don't have enough reserved bits to say
- * "execute only", so we don't bother. If you can read it, you can execute it and vice versa.
- */
-#define __P000 PAGE_NONE
-#define __P001 PAGE_READONLY
-#define __P010 PAGE_COPY
-#define __P011 PAGE_COPY
-#define __P100 PAGE_READONLY
-#define __P101 PAGE_READONLY
-#define __P110 PAGE_COPY
-#define __P111 PAGE_COPY
-
-#define __S000 PAGE_NONE
-#define __S001 PAGE_READONLY
-#define __S010 PAGE_SHARED
-#define __S011 PAGE_SHARED
-#define __S100 PAGE_READONLY
-#define __S101 PAGE_READONLY
-#define __S110 PAGE_SHARED
-#define __S111 PAGE_SHARED
-
-/*
- * Define this to warn about kernel memory accesses that are
- * done without a 'access_ok(VERIFY_WRITE,..)'
- */
-#undef TEST_ACCESS_OK
-
-#define pte_present(x) (pte_val(x) & _PAGE_PRESENT)
-#define pte_clear(mm,addr,xp)  do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
-
-#define pmd_none(x)    (!pmd_val(x))
-#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
-#define        pmd_bad(x)      (pmd_val(x) & xAMPRx_SS)
-#define pmd_clear(xp)  do { __set_pmd(xp, 0); } while(0)
-
-#define pmd_page_vaddr(pmd) \
-       ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
-
-#ifndef CONFIG_DISCONTIGMEM
-#define pmd_page(pmd)  (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
-#endif
-
-#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
-
-/*
- * The following only work if pte_present() is true.
- * Undefined behaviour if not..
- */
-static inline int pte_dirty(pte_t pte)         { return (pte).pte & _PAGE_DIRTY; }
-static inline int pte_young(pte_t pte)         { return (pte).pte & _PAGE_ACCESSED; }
-static inline int pte_write(pte_t pte)         { return !((pte).pte & _PAGE_WP); }
-static inline int pte_special(pte_t pte)       { return 0; }
-
-static inline pte_t pte_mkclean(pte_t pte)     { (pte).pte &= ~_PAGE_DIRTY; return pte; }
-static inline pte_t pte_mkold(pte_t pte)       { (pte).pte &= ~_PAGE_ACCESSED; return pte; }
-static inline pte_t pte_wrprotect(pte_t pte)   { (pte).pte |= _PAGE_WP; return pte; }
-static inline pte_t pte_mkdirty(pte_t pte)     { (pte).pte |= _PAGE_DIRTY; return pte; }
-static inline pte_t pte_mkyoung(pte_t pte)     { (pte).pte |= _PAGE_ACCESSED; return pte; }
-static inline pte_t pte_mkwrite(pte_t pte)     { (pte).pte &= ~_PAGE_WP; return pte; }
-static inline pte_t pte_mkspecial(pte_t pte)   { return pte; }
-
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
-{
-       int i = test_and_clear_bit(_PAGE_BIT_ACCESSED, ptep);
-       asm volatile("dcf %M0" :: "U"(*ptep));
-       return i;
-}
-
-static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
-{
-       unsigned long x = xchg(&ptep->pte, 0);
-       asm volatile("dcf %M0" :: "U"(*ptep));
-       return __pte(x);
-}
-
-static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
-{
-       set_bit(_PAGE_BIT_WP, ptep);
-       asm volatile("dcf %M0" :: "U"(*ptep));
-}
-
-/*
- * Macro to mark a page protection value as "uncacheable"
- */
-#define pgprot_noncached(prot) (__pgprot(pgprot_val(prot) | _PAGE_NOCACHE))
-
-/*
- * Conversion functions: convert a page and protection to a page entry,
- * and a page entry and page directory to the page they refer to.
- */
-
-#define mk_pte(page, pgprot)   pfn_pte(page_to_pfn(page), (pgprot))
-#define mk_pte_huge(entry)     ((entry).pte_low |= _PAGE_PRESENT | _PAGE_PSE)
-
-/* This takes a physical page address that is used by the remapping functions */
-#define mk_pte_phys(physpage, pgprot)  pfn_pte((physpage) >> PAGE_SHIFT, pgprot)
-
-static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
-{
-       pte.pte &= _PAGE_CHG_MASK;
-       pte.pte |= pgprot_val(newprot);
-       return pte;
-}
-
-/* to find an entry in a page-table-directory. */
-#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
-#define pgd_index_k(addr) pgd_index(addr)
-
-/* Find an entry in the bottom-level page table.. */
-#define __pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
-
-/*
- * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
- *
- * this macro returns the index of the entry in the pte page which would
- * control the given virtual address
- */
-#define pte_index(address) \
-               (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
-#define pte_offset_kernel(dir, address) \
-       ((pte_t *) pmd_page_vaddr(*(dir)) +  pte_index(address))
-
-#if defined(CONFIG_HIGHPTE)
-#define pte_offset_map(dir, address) \
-       ((pte_t *)kmap_atomic(pmd_page(*(dir)),KM_PTE0) + pte_index(address))
-#define pte_offset_map_nested(dir, address) \
-       ((pte_t *)kmap_atomic(pmd_page(*(dir)),KM_PTE1) + pte_index(address))
-#define pte_unmap(pte) kunmap_atomic(pte, KM_PTE0)
-#define pte_unmap_nested(pte) kunmap_atomic((pte), KM_PTE1)
-#else
-#define pte_offset_map(dir, address) \
-       ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
-#define pte_offset_map_nested(dir, address) pte_offset_map((dir), (address))
-#define pte_unmap(pte) do { } while (0)
-#define pte_unmap_nested(pte) do { } while (0)
-#endif
-
-/*
- * Handle swap and file entries
- * - the PTE is encoded in the following format:
- *     bit 0:          Must be 0 (!_PAGE_PRESENT)
- *     bit 1:          Type: 0 for swap, 1 for file (_PAGE_FILE)
- *     bits 2-7:       Swap type
- *     bits 8-31:      Swap offset
- *     bits 2-31:      File pgoff
- */
-#define __swp_type(x)                  (((x).val >> 2) & 0x1f)
-#define __swp_offset(x)                        ((x).val >> 8)
-#define __swp_entry(type, offset)      ((swp_entry_t) { ((type) << 2) | ((offset) << 8) })
-#define __pte_to_swp_entry(_pte)       ((swp_entry_t) { (_pte).pte })
-#define __swp_entry_to_pte(x)          ((pte_t) { (x).val })
-
-static inline int pte_file(pte_t pte)
-{
-       return pte.pte & _PAGE_FILE;
-}
-
-#define PTE_FILE_MAX_BITS      29
-
-#define pte_to_pgoff(PTE)      ((PTE).pte >> 2)
-#define pgoff_to_pte(off)      __pte((off) << 2 | _PAGE_FILE)
-
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page)         (0)
-#define kern_addr_valid(addr)  (1)
-
-#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)                \
-               remap_pfn_range(vma, vaddr, pfn, size, prot)
-
-#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
-#define __HAVE_ARCH_PTEP_SET_WRPROTECT
-#define __HAVE_ARCH_PTE_SAME
-#include <asm-generic/pgtable.h>
-
-/*
- * preload information about a newly instantiated PTE into the SCR0/SCR1 PGE cache
- */
-static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
-{
-       struct mm_struct *mm;
-       unsigned long ampr;
-
-       mm = current->mm;
-       if (mm) {
-               pgd_t *pge = pgd_offset(mm, address);
-               pud_t *pue = pud_offset(pge, address);
-               pmd_t *pme = pmd_offset(pue, address);
-
-               ampr = pme->ste[0] & 0xffffff00;
-               ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C |
-                       xAMPRx_V;
-       } else {
-               address = ULONG_MAX;
-               ampr = 0;
-       }
-
-       asm volatile("movgs %0,scr0\n"
-                    "movgs %0,scr1\n"
-                    "movgs %1,dampr4\n"
-                    "movgs %1,dampr5\n"
-                    :
-                    : "r"(address), "r"(ampr)
-                    );
-}
-
-#ifdef CONFIG_PROC_FS
-extern char *proc_pid_status_frv_cxnr(struct mm_struct *mm, char *buffer);
-#endif
-
-extern void __init pgtable_cache_init(void);
-
-#endif /* !__ASSEMBLY__ */
-#endif /* !CONFIG_MMU */
-
-#ifndef __ASSEMBLY__
-extern void __init paging_init(void);
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_PGTABLE_H */
diff --git a/include/asm-frv/poll.h b/include/asm-frv/poll.h
deleted file mode 100644 (file)
index 0d01479..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _ASM_POLL_H
-#define _ASM_POLL_H
-
-#define POLLWRNORM     POLLOUT
-#define POLLWRBAND     256
-
-#include <asm-generic/poll.h>
-
-#undef POLLREMOVE
-
-#endif
-
diff --git a/include/asm-frv/posix_types.h b/include/asm-frv/posix_types.h
deleted file mode 100644 (file)
index a9f1f5b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef _ASM_POSIX_TYPES_H
-#define _ASM_POSIX_TYPES_H
-
-/*
- * This file is generally used by user-level software, so you need to
- * be a little careful about namespace pollution etc.  Also, we cannot
- * assume GCC is being used.
- */
-
-typedef unsigned long  __kernel_ino_t;
-typedef unsigned short __kernel_mode_t;
-typedef unsigned short __kernel_nlink_t;
-typedef long           __kernel_off_t;
-typedef int            __kernel_pid_t;
-typedef unsigned short __kernel_ipc_pid_t;
-typedef unsigned short __kernel_uid_t;
-typedef unsigned short __kernel_gid_t;
-typedef unsigned int   __kernel_size_t;
-typedef int            __kernel_ssize_t;
-typedef int            __kernel_ptrdiff_t;
-typedef long           __kernel_time_t;
-typedef long           __kernel_suseconds_t;
-typedef long           __kernel_clock_t;
-typedef int            __kernel_timer_t;
-typedef int            __kernel_clockid_t;
-typedef int            __kernel_daddr_t;
-typedef char *         __kernel_caddr_t;
-typedef unsigned short __kernel_uid16_t;
-typedef unsigned short __kernel_gid16_t;
-typedef unsigned int   __kernel_uid32_t;
-typedef unsigned int   __kernel_gid32_t;
-
-typedef unsigned short __kernel_old_uid_t;
-typedef unsigned short __kernel_old_gid_t;
-typedef unsigned short __kernel_old_dev_t;
-
-#ifdef __GNUC__
-typedef long long      __kernel_loff_t;
-#endif
-
-typedef struct {
-       int     val[2];
-} __kernel_fsid_t;
-
-#if defined(__KERNEL__)
-
-#undef __FD_SET
-#define        __FD_SET(d, set)        ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
-
-#undef __FD_CLR
-#define        __FD_CLR(d, set)        ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
-
-#undef __FD_ISSET
-#define        __FD_ISSET(d, set)      (!!((set)->fds_bits[__FDELT(d)] & __FDMASK(d)))
-
-#undef __FD_ZERO
-#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
-
-#endif /* defined(__KERNEL__) */
-
-#endif
-
diff --git a/include/asm-frv/processor.h b/include/asm-frv/processor.h
deleted file mode 100644 (file)
index 3744f2e..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/* processor.h: FRV processor definitions
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_PROCESSOR_H
-#define _ASM_PROCESSOR_H
-
-#include <asm/mem-layout.h>
-
-#ifndef __ASSEMBLY__
-/*
- * Default implementation of macro that returns current
- * instruction pointer ("program counter").
- */
-#define current_text_addr() ({ __label__ _l; _l: &&_l;})
-
-#include <linux/compiler.h>
-#include <linux/linkage.h>
-#include <asm/sections.h>
-#include <asm/segment.h>
-#include <asm/fpu.h>
-#include <asm/registers.h>
-#include <asm/ptrace.h>
-#include <asm/current.h>
-#include <asm/cache.h>
-
-/* Forward declaration, a strange C thing */
-struct task_struct;
-
-/*
- *  CPU type and hardware bug flags. Kept separately for each CPU.
- */
-struct cpuinfo_frv {
-#ifdef CONFIG_MMU
-       unsigned long   *pgd_quick;
-       unsigned long   *pte_quick;
-       unsigned long   pgtable_cache_sz;
-#endif
-} __cacheline_aligned;
-
-extern struct cpuinfo_frv __nongprelbss boot_cpu_data;
-
-#define cpu_data               (&boot_cpu_data)
-#define current_cpu_data       boot_cpu_data
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define MCA_bus 0
-
-struct thread_struct {
-       struct pt_regs          *frame;         /* [GR28] exception frame ptr for this thread */
-       struct task_struct      *curr;          /* [GR29] current pointer for this thread */
-       unsigned long           sp;             /* [GR1 ] kernel stack pointer */
-       unsigned long           fp;             /* [GR2 ] kernel frame pointer */
-       unsigned long           lr;             /* link register */
-       unsigned long           pc;             /* program counter */
-       unsigned long           gr[12];         /* [GR16-GR27] */
-       unsigned long           sched_lr;       /* LR from schedule() */
-
-       union {
-               struct pt_regs          *frame0;        /* top (user) stack frame */
-               struct user_context     *user;          /* userspace context */
-       };
-} __attribute__((aligned(8)));
-
-extern struct pt_regs *__kernel_frame0_ptr;
-extern struct task_struct *__kernel_current_task;
-
-#endif
-
-#ifndef __ASSEMBLY__
-#define INIT_THREAD_FRAME0 \
-       ((struct pt_regs *) \
-       (sizeof(init_stack) + (unsigned long) init_stack - sizeof(struct user_context)))
-
-#define INIT_THREAD {                          \
-       NULL,                                   \
-       (struct task_struct *) init_stack,      \
-       0, 0, 0, 0,                             \
-       { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, \
-       0,                                      \
-       { INIT_THREAD_FRAME0 },                 \
-}
-
-/*
- * do necessary setup to start up a newly executed thread.
- * - need to discard the frame stacked by init() invoking the execve syscall
- */
-#define start_thread(_regs, _pc, _usp)                 \
-do {                                                   \
-       set_fs(USER_DS); /* reads from user space */    \
-       __frame = __kernel_frame0_ptr;                  \
-       __frame->pc     = (_pc);                        \
-       __frame->psr    &= ~PSR_S;                      \
-       __frame->sp     = (_usp);                       \
-} while(0)
-
-extern void prepare_to_copy(struct task_struct *tsk);
-
-/* Free all resources held by a thread. */
-static inline void release_thread(struct task_struct *dead_task)
-{
-}
-
-extern asmlinkage int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
-extern asmlinkage void save_user_regs(struct user_context *target);
-extern asmlinkage void *restore_user_regs(const struct user_context *target, ...);
-
-#define copy_segments(tsk, mm)         do { } while (0)
-#define release_segments(mm)           do { } while (0)
-#define forget_segments()              do { } while (0)
-
-/*
- * Free current thread data structures etc..
- */
-static inline void exit_thread(void)
-{
-}
-
-/*
- * Return saved PC of a blocked thread.
- */
-extern unsigned long thread_saved_pc(struct task_struct *tsk);
-
-unsigned long get_wchan(struct task_struct *p);
-
-#define        KSTK_EIP(tsk)   ((tsk)->thread.frame0->pc)
-#define        KSTK_ESP(tsk)   ((tsk)->thread.frame0->sp)
-
-/* Allocation and freeing of basic task resources. */
-extern struct task_struct *alloc_task_struct(void);
-extern void free_task_struct(struct task_struct *p);
-
-#define cpu_relax()    barrier()
-
-/* data cache prefetch */
-#define ARCH_HAS_PREFETCH
-static inline void prefetch(const void *x)
-{
-       asm volatile("dcpl %0,gr0,#0" : : "r"(x));
-}
-
-#endif /* __ASSEMBLY__ */
-#endif /* _ASM_PROCESSOR_H */
diff --git a/include/asm-frv/ptrace.h b/include/asm-frv/ptrace.h
deleted file mode 100644 (file)
index cf69340..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/* ptrace.h: ptrace() relevant definitions
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_PTRACE_H
-#define _ASM_PTRACE_H
-
-#include <asm/registers.h>
-#ifdef __KERNEL__
-#include <asm/irq_regs.h>
-
-#define in_syscall(regs) (((regs)->tbr & TBR_TT) == TBR_TT_TRAP0)
-#endif
-
-
-#define PT_PSR         0
-#define        PT_ISR          1
-#define PT_CCR         2
-#define PT_CCCR                3
-#define PT_LR          4
-#define PT_LCR         5
-#define PT_PC          6
-
-#define PT__STATUS     7       /* exception status */
-#define PT_SYSCALLNO   8       /* syscall number or -1 */
-#define PT_ORIG_GR8    9       /* saved GR8 for signal handling */
-#define PT_GNER0       10
-#define PT_GNER1       11
-#define PT_IACC0H      12
-#define PT_IACC0L      13
-
-#define PT_GR(j)       ( 14 + (j))     /* GRj for 0<=j<=63 */
-#define PT_FR(j)       ( 78 + (j))     /* FRj for 0<=j<=63 */
-#define PT_FNER(j)     (142 + (j))     /* FNERj for 0<=j<=1 */
-#define PT_MSR(j)      (144 + (j))     /* MSRj for 0<=j<=2 */
-#define PT_ACC(j)      (146 + (j))     /* ACCj for 0<=j<=7 */
-#define PT_ACCG(jklm)  (154 + (jklm))  /* ACCGjklm for 0<=jklm<=1 (reads four regs per slot) */
-#define PT_FSR(j)      (156 + (j))     /* FSRj for 0<=j<=0 */
-#define PT__GPEND      78
-#define PT__END                157
-
-#define PT_TBR         PT_GR(0)
-#define PT_SP          PT_GR(1)
-#define PT_FP          PT_GR(2)
-#define PT_PREV_FRAME  PT_GR(28)       /* previous exception frame pointer (old gr28 value) */
-#define PT_CURR_TASK   PT_GR(29)       /* current task */
-
-
-/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
-#define PTRACE_GETREGS         12
-#define PTRACE_SETREGS         13
-#define PTRACE_GETFPREGS       14
-#define PTRACE_SETFPREGS       15
-#define PTRACE_GETFDPIC                31      /* get the ELF fdpic loadmap address */
-
-#define PTRACE_GETFDPIC_EXEC   0       /* [addr] request the executable loadmap */
-#define PTRACE_GETFDPIC_INTERP 1       /* [addr] request the interpreter loadmap */
-
-#ifdef __KERNEL__
-#ifndef __ASSEMBLY__
-
-/*
- * we dedicate GR28 to keeping a pointer to the current exception frame
- * - gr28 is destroyed on entry to the kernel from userspace
- */
-register struct pt_regs *__frame asm("gr28");
-
-#define user_mode(regs)                        (!((regs)->psr & PSR_S))
-#define instruction_pointer(regs)      ((regs)->pc)
-
-extern unsigned long user_stack(const struct pt_regs *);
-extern void show_regs(struct pt_regs *);
-#define profile_pc(regs) ((regs)->pc)
-#endif
-
-#endif /* !__ASSEMBLY__ */
-#endif /* _ASM_PTRACE_H */
diff --git a/include/asm-frv/registers.h b/include/asm-frv/registers.h
deleted file mode 100644 (file)
index 9666119..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/* registers.h: register frame declarations
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-/*
- * notes:
- *
- * (1) that the members of all these structures are carefully aligned to permit
- *     usage of STD/STDF instructions
- *
- * (2) if you change these structures, you must change the code in
- *     arch/frvnommu/kernel/{break.S,entry.S,switch_to.S,gdb-stub.c}
- *
- *
- * the kernel stack space block looks like this:
- *
- *     +0x2000 +----------------------
- *             | union {
- *             |       struct frv_frame0 {
- *             |               struct user_context {
- *             |                       struct user_int_regs
- *             |                       struct user_fpmedia_regs
- *             |               }
- *             |               struct frv_debug_regs
- *             |       }
- *             |       struct pt_regs [user exception]
- *             | }
- *             +---------------------- <-- __kernel_frame0_ptr (maybe GR28)
- *             |
- *             | kernel stack
- *             |
- *             |......................
- *             | struct pt_regs [kernel exception]
- *             |...................... <-- __kernel_frame0_ptr (maybe GR28)
- *             |
- *             | kernel stack
- *             |
- *             |...................... <-- stack pointer (GR1)
- *             |
- *             | unused stack space
- *             |
- *             +----------------------
- *             | struct thread_info
- *     +0x0000 +---------------------- <-- __current_thread_info (GR15);
- *
- * note that GR28 points to the current exception frame
- */
-
-#ifndef _ASM_REGISTERS_H
-#define _ASM_REGISTERS_H
-
-#ifndef __ASSEMBLY__
-#define __OFFSET(X,N)  ((X)+(N)*4)
-#define __OFFSETC(X,N) xxxxxxxxxxxxxxxxxxxxxxxx
-#else
-#define __OFFSET(X,N)  ((X)+(N)*4)
-#define __OFFSETC(X,N) ((X)+(N))
-#endif
-
-/*****************************************************************************/
-/*
- * Exception/Interrupt frame
- * - held on kernel stack
- * - 8-byte aligned on stack (old SP is saved in frame)
- * - GR0 is fixed 0, so we don't save it
- */
-#ifndef __ASSEMBLY__
-
-struct pt_regs {
-       unsigned long           psr;            /* Processor Status Register */
-       unsigned long           isr;            /* Integer Status Register */
-       unsigned long           ccr;            /* Condition Code Register */
-       unsigned long           cccr;           /* Condition Code for Conditional Insns Register */
-       unsigned long           lr;             /* Link Register */
-       unsigned long           lcr;            /* Loop Count Register */
-       unsigned long           pc;             /* Program Counter Register */
-       unsigned long           __status;       /* exception status */
-       unsigned long           syscallno;      /* syscall number or -1 */
-       unsigned long           orig_gr8;       /* original syscall arg #1 */
-       unsigned long           gner0;
-       unsigned long           gner1;
-       unsigned long long      iacc0;
-       unsigned long           tbr;            /* GR0 is fixed zero, so we use this for TBR */
-       unsigned long           sp;             /* GR1: USP/KSP */
-       unsigned long           fp;             /* GR2: FP */
-       unsigned long           gr3;
-       unsigned long           gr4;
-       unsigned long           gr5;
-       unsigned long           gr6;
-       unsigned long           gr7;            /* syscall number */
-       unsigned long           gr8;            /* 1st syscall param; syscall return */
-       unsigned long           gr9;            /* 2nd syscall param */
-       unsigned long           gr10;           /* 3rd syscall param */
-       unsigned long           gr11;           /* 4th syscall param */
-       unsigned long           gr12;           /* 5th syscall param */
-       unsigned long           gr13;           /* 6th syscall param */
-       unsigned long           gr14;
-       unsigned long           gr15;
-       unsigned long           gr16;           /* GP pointer */
-       unsigned long           gr17;           /* small data */
-       unsigned long           gr18;           /* PIC/PID */
-       unsigned long           gr19;
-       unsigned long           gr20;
-       unsigned long           gr21;
-       unsigned long           gr22;
-       unsigned long           gr23;
-       unsigned long           gr24;
-       unsigned long           gr25;
-       unsigned long           gr26;
-       unsigned long           gr27;
-       struct pt_regs          *next_frame;    /* GR28 - next exception frame */
-       unsigned long           gr29;           /* GR29 - OS reserved */
-       unsigned long           gr30;           /* GR30 - OS reserved */
-       unsigned long           gr31;           /* GR31 - OS reserved */
-} __attribute__((aligned(8)));
-
-#endif
-
-#define REG__STATUS_STEP       0x00000001      /* - reenable single stepping on return */
-#define REG__STATUS_STEPPED    0x00000002      /* - single step caused exception */
-#define REG__STATUS_BROKE      0x00000004      /* - BREAK insn caused exception */
-#define REG__STATUS_SYSC_ENTRY 0x40000000      /* - T on syscall entry (ptrace.c only) */
-#define REG__STATUS_SYSC_EXIT  0x80000000      /* - T on syscall exit (ptrace.c only) */
-
-#define REG_GR(R)      __OFFSET(REG_GR0, (R))
-
-#define REG_SP         REG_GR(1)
-#define REG_FP         REG_GR(2)
-#define REG_PREV_FRAME REG_GR(28)      /* previous exception frame pointer (old gr28 value) */
-#define REG_CURR_TASK  REG_GR(29)      /* current task */
-
-/*****************************************************************************/
-/*
- * debugging registers
- */
-#ifndef __ASSEMBLY__
-
-struct frv_debug_regs
-{
-       unsigned long           dcr;
-       unsigned long           ibar[4] __attribute__((aligned(8)));
-       unsigned long           dbar[4] __attribute__((aligned(8)));
-       unsigned long           dbdr[4][4] __attribute__((aligned(8)));
-       unsigned long           dbmr[4][4] __attribute__((aligned(8)));
-} __attribute__((aligned(8)));
-
-#endif
-
-/*****************************************************************************/
-/*
- * userspace registers
- */
-#ifndef __ASSEMBLY__
-
-struct user_int_regs
-{
-       /* integer registers
-        * - up to gr[31] mirror pt_regs
-        * - total size must be multiple of 8 bytes
-        */
-       unsigned long           psr;            /* Processor Status Register */
-       unsigned long           isr;            /* Integer Status Register */
-       unsigned long           ccr;            /* Condition Code Register */
-       unsigned long           cccr;           /* Condition Code for Conditional Insns Register */
-       unsigned long           lr;             /* Link Register */
-       unsigned long           lcr;            /* Loop Count Register */
-       unsigned long           pc;             /* Program Counter Register */
-       unsigned long           __status;       /* exception status */
-       unsigned long           syscallno;      /* syscall number or -1 */
-       unsigned long           orig_gr8;       /* original syscall arg #1 */
-       unsigned long           gner[2];
-       unsigned long long      iacc[1];
-
-       union {
-               unsigned long   tbr;
-               unsigned long   gr[64];
-       };
-};
-
-struct user_fpmedia_regs
-{
-       /* FP/Media registers */
-       unsigned long   fr[64];
-       unsigned long   fner[2];
-       unsigned long   msr[2];
-       unsigned long   acc[8];
-       unsigned char   accg[8];
-       unsigned long   fsr[1];
-};
-
-struct user_context
-{
-       struct user_int_regs            i;
-       struct user_fpmedia_regs        f;
-
-       /* we provide a context extension so that we can save the regs for CPUs that
-        * implement many more of Fujitsu's lavish register spec
-        */
-       void *extension;
-} __attribute__((aligned(8)));
-
-struct frv_frame0 {
-       union {
-               struct pt_regs          regs;
-               struct user_context     uc;
-       };
-
-       struct frv_debug_regs           debug;
-
-} __attribute__((aligned(32)));
-
-#endif
-
-#define __INT_GR(R)            __OFFSET(__INT_GR0,             (R))
-
-#define __FPMEDIA_FR(R)                __OFFSET(__FPMEDIA_FR0,         (R))
-#define __FPMEDIA_FNER(R)      __OFFSET(__FPMEDIA_FNER0,       (R))
-#define __FPMEDIA_MSR(R)       __OFFSET(__FPMEDIA_MSR0,        (R))
-#define __FPMEDIA_ACC(R)       __OFFSET(__FPMEDIA_ACC0,        (R))
-#define __FPMEDIA_ACCG(R)      __OFFSETC(__FPMEDIA_ACCG0,      (R))
-#define __FPMEDIA_FSR(R)       __OFFSET(__FPMEDIA_FSR0,        (R))
-
-#define __THREAD_GR(R)         __OFFSET(__THREAD_GR16,         (R) - 16)
-
-#endif /* _ASM_REGISTERS_H */
diff --git a/include/asm-frv/resource.h b/include/asm-frv/resource.h
deleted file mode 100644 (file)
index 5fc6054..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _ASM_RESOURCE_H
-#define _ASM_RESOURCE_H
-
-#include <asm-generic/resource.h>
-
-#endif /* _ASM_RESOURCE_H */
-
diff --git a/include/asm-frv/scatterlist.h b/include/asm-frv/scatterlist.h
deleted file mode 100644 (file)
index 4bca8a2..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _ASM_SCATTERLIST_H
-#define _ASM_SCATTERLIST_H
-
-#include <asm/types.h>
-
-/*
- * Drivers must set either ->address or (preferred) page and ->offset
- * to indicate where data must be transferred to/from.
- *
- * Using page is recommended since it handles highmem data as well as
- * low mem. ->address is restricted to data which has a virtual mapping, and
- * it will go away in the future. Updating to page can be automated very
- * easily -- something like
- *
- * sg->address = some_ptr;
- *
- * can be rewritten as
- *
- * sg_set_buf(sg, some_ptr, length);
- *
- * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens
- */
-struct scatterlist {
-#ifdef CONFIG_DEBUG_SG
-       unsigned long   sg_magic;
-#endif
-       unsigned long   page_link;
-       unsigned int    offset;         /* for highmem, page offset */
-
-       dma_addr_t      dma_address;
-       unsigned int    length;
-};
-
-/*
- * These macros should be used after a pci_map_sg call has been done
- * to get bus addresses of each of the SG entries and their lengths.
- * You should only work with the number of sg entries pci_map_sg
- * returns, or alternatively stop on the first sg_dma_len(sg) which
- * is 0.
- */
-#define sg_dma_address(sg)     ((sg)->dma_address)
-#define sg_dma_len(sg)         ((sg)->length)
-
-#define ISA_DMA_THRESHOLD (0xffffffffUL)
-
-#endif /* !_ASM_SCATTERLIST_H */
diff --git a/include/asm-frv/sections.h b/include/asm-frv/sections.h
deleted file mode 100644 (file)
index 17d0fb1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* sections.h: linkage layout variables
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SECTIONS_H
-#define _ASM_SECTIONS_H
-
-#ifndef __ASSEMBLY__
-
-#include <linux/types.h>
-#include <asm-generic/sections.h>
-
-#ifdef __KERNEL__
-
-/*
- * we don't want to put variables in the GP-REL section if they're not used very much - that would
- * be waste since GP-REL addressing is limited to GP16+/-2048
- */
-#define __nongpreldata __attribute__((section(".data")))
-#define __nongprelbss  __attribute__((section(".bss")))
-
-/*
- * linker symbols
- */
-extern const void __kernel_image_start, __kernel_image_end, __page_offset;
-
-extern unsigned long __nongprelbss memory_start;
-extern unsigned long __nongprelbss memory_end;
-extern unsigned long __nongprelbss rom_length;
-
-/* determine if we're running from ROM */
-static inline int is_in_rom(unsigned long addr)
-{
-       return 0; /* default case: not in ROM */
-}
-
-#endif
-#endif
-#endif /* _ASM_SECTIONS_H */
diff --git a/include/asm-frv/segment.h b/include/asm-frv/segment.h
deleted file mode 100644 (file)
index e3616a6..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* segment.h: MMU segment settings
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SEGMENT_H
-#define _ASM_SEGMENT_H
-
-
-#ifndef __ASSEMBLY__
-
-typedef struct {
-       unsigned long seg;
-} mm_segment_t;
-
-#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
-
-#define KERNEL_DS              MAKE_MM_SEG(0xdfffffffUL)
-
-#ifdef CONFIG_MMU
-#define USER_DS                        MAKE_MM_SEG(TASK_SIZE - 1)
-#else
-#define USER_DS                        KERNEL_DS
-#endif
-
-#define get_ds()               (KERNEL_DS)
-#define get_fs()               (__current_thread_info->addr_limit)
-#define segment_eq(a,b)                ((a).seg == (b).seg)
-#define __kernel_ds_p()                segment_eq(get_fs(), KERNEL_DS)
-#define get_addr_limit()       (get_fs().seg)
-
-#define set_fs(_x)                                     \
-do {                                                   \
-       __current_thread_info->addr_limit = (_x);       \
-} while(0)
-
-
-#endif /* __ASSEMBLY__ */
-#endif /* _ASM_SEGMENT_H */
diff --git a/include/asm-frv/sembuf.h b/include/asm-frv/sembuf.h
deleted file mode 100644 (file)
index 164b127..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _ASM_SEMBUF_H
-#define _ASM_SEMBUF_H
-
-/*
- * The semid64_ds structure for FR-V architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 64-bit time_t to solve y2038 problem
- * - 2 miscellaneous 32-bit values
- */
-
-struct semid64_ds {
-       struct ipc64_perm       sem_perm;       /* permissions .. see ipc.h */
-       __kernel_time_t         sem_otime;      /* last semop time */
-       unsigned long           __unused1;
-       __kernel_time_t         sem_ctime;      /* last change time */
-       unsigned long           __unused2;
-       unsigned long           sem_nsems;      /* no. of semaphores in array */
-       unsigned long           __unused3;
-       unsigned long           __unused4;
-};
-
-#endif /* _ASM_SEMBUF_H */
-
diff --git a/include/asm-frv/serial-regs.h b/include/asm-frv/serial-regs.h
deleted file mode 100644 (file)
index e1286bd..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* serial-regs.h: serial port registers
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SERIAL_REGS_H
-#define _ASM_SERIAL_REGS_H
-
-#include <linux/serial_reg.h>
-#include <asm/irc-regs.h>
-
-#define SERIAL_ICLK    33333333        /* the target serial input clock */
-#define UART0_BASE     0xfeff9c00
-#define UART1_BASE     0xfeff9c40
-
-#define __get_UART0(R) ({ __reg(UART0_BASE + (R) * 8) >> 24; })
-#define __get_UART1(R) ({ __reg(UART1_BASE + (R) * 8) >> 24; })
-#define __set_UART0(R,V) do { __reg(UART0_BASE + (R) * 8) = (V) << 24; } while(0)
-#define __set_UART1(R,V) do { __reg(UART1_BASE + (R) * 8) = (V) << 24; } while(0)
-
-#define __get_UART0_LSR() ({ __get_UART0(UART_LSR); })
-#define __get_UART1_LSR() ({ __get_UART1(UART_LSR); })
-
-#define __set_UART0_IER(V) __set_UART0(UART_IER,(V))
-#define __set_UART1_IER(V) __set_UART1(UART_IER,(V))
-
-/* serial prescaler select register */
-#define __get_UCPSR()  ({ *(volatile unsigned long *)(0xfeff9c90); })
-#define __set_UCPSR(V) do { *(volatile unsigned long *)(0xfeff9c90) = (V); } while(0)
-#define UCPSR_SELECT0  0x07000000
-#define UCPSR_SELECT1  0x38000000
-
-/* serial prescaler base value register */
-#define __get_UCPVR()  ({ *(volatile unsigned long *)(0xfeff9c98); mb(); })
-#define __set_UCPVR(V) do { *(volatile unsigned long *)(0xfeff9c98) = (V) << 24; mb(); } while(0)
-
-
-#endif /* _ASM_SERIAL_REGS_H */
diff --git a/include/asm-frv/serial.h b/include/asm-frv/serial.h
deleted file mode 100644 (file)
index dbb8259..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * serial.h
- *
- * Copyright (C) 2003 Develer S.r.l. (http://www.develer.com/)
- * Author: Bernardo Innocenti <bernie@codewiz.org>
- *
- * Based on linux/include/asm-i386/serial.h
- */
-#include <asm/serial-regs.h>
-
-/*
- * the base baud is derived from the clock speed and so is variable
- */
-#define BASE_BAUD 0
-
-#define STD_COM_FLAGS          ASYNC_BOOT_AUTOCONF
-
-#define SERIAL_PORT_DFNS
diff --git a/include/asm-frv/setup.h b/include/asm-frv/setup.h
deleted file mode 100644 (file)
index afd787c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* setup.h: setup stuff
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SETUP_H
-#define _ASM_SETUP_H
-
-#define COMMAND_LINE_SIZE       512
-
-#ifdef __KERNEL__
-
-#include <linux/init.h>
-
-#ifndef __ASSEMBLY__
-
-#ifdef CONFIG_MMU
-extern unsigned long __initdata num_mappedpages;
-#endif
-
-#endif /* !__ASSEMBLY__ */
-
-#endif  /*  __KERNEL__  */
-
-#endif /* _ASM_SETUP_H */
diff --git a/include/asm-frv/shmbuf.h b/include/asm-frv/shmbuf.h
deleted file mode 100644 (file)
index 4c6e711..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef _ASM_SHMBUF_H
-#define _ASM_SHMBUF_H
-
-/*
- * The shmid64_ds structure for FR-V architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 64-bit time_t to solve y2038 problem
- * - 2 miscellaneous 32-bit values
- */
-
-struct shmid64_ds {
-       struct ipc64_perm       shm_perm;       /* operation perms */
-       size_t                  shm_segsz;      /* size of segment (bytes) */
-       __kernel_time_t         shm_atime;      /* last attach time */
-       unsigned long           __unused1;
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       unsigned long           __unused2;
-       __kernel_time_t         shm_ctime;      /* last change time */
-       unsigned long           __unused3;
-       __kernel_pid_t          shm_cpid;       /* pid of creator */
-       __kernel_pid_t          shm_lpid;       /* pid of last operator */
-       unsigned long           shm_nattch;     /* no. of current attaches */
-       unsigned long           __unused4;
-       unsigned long           __unused5;
-};
-
-struct shminfo64 {
-       unsigned long   shmmax;
-       unsigned long   shmmin;
-       unsigned long   shmmni;
-       unsigned long   shmseg;
-       unsigned long   shmall;
-       unsigned long   __unused1;
-       unsigned long   __unused2;
-       unsigned long   __unused3;
-       unsigned long   __unused4;
-};
-
-#endif /* _ASM_SHMBUF_H */
-
diff --git a/include/asm-frv/shmparam.h b/include/asm-frv/shmparam.h
deleted file mode 100644 (file)
index ab71100..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _ASM_SHMPARAM_H
-#define _ASM_SHMPARAM_H
-
-#define        SHMLBA PAGE_SIZE                 /* attach addr a multiple of this */
-
-#endif /* _ASM_SHMPARAM_H */
-
diff --git a/include/asm-frv/sigcontext.h b/include/asm-frv/sigcontext.h
deleted file mode 100644 (file)
index 3b263f3..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* sigcontext.h: FRV signal context
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_SIGCONTEXT_H
-#define _ASM_SIGCONTEXT_H
-
-#include <asm/registers.h>
-
-/*
- * Signal context structure - contains all info to do with the state
- * before the signal handler was invoked.  Note: only add new entries
- * to the end of the structure.
- */
-struct sigcontext {
-       struct user_context     sc_context;
-       unsigned long           sc_oldmask;     /* old sigmask */
-} __attribute__((aligned(8)));
-
-#endif
diff --git a/include/asm-frv/siginfo.h b/include/asm-frv/siginfo.h
deleted file mode 100644 (file)
index d3fd1ca..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _ASM_SIGINFO_H
-#define _ASM_SIGINFO_H
-
-#include <linux/types.h>
-#include <asm-generic/siginfo.h>
-
-#define FPE_MDAOVF     (__SI_FAULT|9)  /* media overflow */
-#undef NSIGFPE
-#define NSIGFPE                9
-
-#endif
-
diff --git a/include/asm-frv/signal.h b/include/asm-frv/signal.h
deleted file mode 100644 (file)
index 2079197..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#ifndef _ASM_SIGNAL_H
-#define _ASM_SIGNAL_H
-
-#include <linux/types.h>
-
-/* Avoid too many header ordering problems.  */
-struct siginfo;
-
-#ifdef __KERNEL__
-/* Most things should be clean enough to redefine this at will, if care
-   is taken to make libc match.  */
-
-#define _NSIG          64
-#define _NSIG_BPW      32
-#define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
-
-typedef unsigned long old_sigset_t;            /* at least 32 bits */
-
-typedef struct {
-       unsigned long sig[_NSIG_WORDS];
-} sigset_t;
-
-#else
-/* Here we must cater to libcs that poke about in kernel headers.  */
-
-#define NSIG           32
-typedef unsigned long sigset_t;
-
-#endif /* __KERNEL__ */
-
-#define SIGHUP          1
-#define SIGINT          2
-#define SIGQUIT                 3
-#define SIGILL          4
-#define SIGTRAP                 5
-#define SIGABRT                 6
-#define SIGIOT          6
-#define SIGBUS          7
-#define SIGFPE          8
-#define SIGKILL                 9
-#define SIGUSR1                10
-#define SIGSEGV                11
-#define SIGUSR2                12
-#define SIGPIPE                13
-#define SIGALRM                14
-#define SIGTERM                15
-#define SIGSTKFLT      16
-#define SIGCHLD                17
-#define SIGCONT                18
-#define SIGSTOP                19
-#define SIGTSTP                20
-#define SIGTTIN                21
-#define SIGTTOU                22
-#define SIGURG         23
-#define SIGXCPU                24
-#define SIGXFSZ                25
-#define SIGVTALRM      26
-#define SIGPROF                27
-#define SIGWINCH       28
-#define SIGIO          29
-#define SIGPOLL                SIGIO
-/*
-#define SIGLOST                29
-*/
-#define SIGPWR         30
-#define SIGSYS         31
-#define        SIGUNUSED       31
-
-/* These should not be considered constants from userland.  */
-#define SIGRTMIN       32
-#define SIGRTMAX       (_NSIG-1)
-
-/*
- * SA_FLAGS values:
- *
- * SA_ONSTACK indicates that a registered stack_t will be used.
- * SA_RESTART flag to get restarting signals (which were the default long ago)
- * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
- * SA_RESETHAND clears the handler when the signal is delivered.
- * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
- * SA_NODEFER prevents the current signal from being masked in the handler.
- *
- * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
- * Unix names RESETHAND and NODEFER respectively.
- */
-#define SA_NOCLDSTOP   0x00000001
-#define SA_NOCLDWAIT   0x00000002 /* not supported yet */
-#define SA_SIGINFO     0x00000004
-#define SA_ONSTACK     0x08000000
-#define SA_RESTART     0x10000000
-#define SA_NODEFER     0x40000000
-#define SA_RESETHAND   0x80000000
-
-#define SA_NOMASK      SA_NODEFER
-#define SA_ONESHOT     SA_RESETHAND
-
-#define SA_RESTORER    0x04000000
-
-/*
- * sigaltstack controls
- */
-#define SS_ONSTACK     1
-#define SS_DISABLE     2
-
-#define MINSIGSTKSZ    2048
-#define SIGSTKSZ       8192
-
-#include <asm-generic/signal.h>
-
-#ifdef __KERNEL__
-struct old_sigaction {
-       __sighandler_t sa_handler;
-       old_sigset_t sa_mask;
-       unsigned long sa_flags;
-       __sigrestore_t sa_restorer;
-};
-
-struct sigaction {
-       __sighandler_t sa_handler;
-       unsigned long sa_flags;
-       __sigrestore_t sa_restorer;
-       sigset_t sa_mask;               /* mask last for extensibility */
-};
-
-struct k_sigaction {
-       struct sigaction sa;
-};
-#else
-/* Here we must cater to libcs that poke about in kernel headers.  */
-
-struct sigaction {
-       union {
-         __sighandler_t _sa_handler;
-         void (*_sa_sigaction)(int, struct siginfo *, void *);
-       } _u;
-       sigset_t sa_mask;
-       unsigned long sa_flags;
-       void (*sa_restorer)(void);
-};
-
-#define sa_handler     _u._sa_handler
-#define sa_sigaction   _u._sa_sigaction
-
-#endif /* __KERNEL__ */
-
-typedef struct sigaltstack {
-       void __user *ss_sp;
-       int ss_flags;
-       size_t ss_size;
-} stack_t;
-
-#define ptrace_signal_deliver(regs, cookie) do { } while (0)
-
-#ifdef __KERNEL__
-
-#include <asm/sigcontext.h>
-#undef __HAVE_ARCH_SIG_BITOPS
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_SIGNAL_H */
diff --git a/include/asm-frv/smp.h b/include/asm-frv/smp.h
deleted file mode 100644 (file)
index 38349ec..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
-
-
-#ifdef CONFIG_SMP
-#error SMP not supported
-#endif
-
-#endif
diff --git a/include/asm-frv/socket.h b/include/asm-frv/socket.h
deleted file mode 100644 (file)
index 57c3d40..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef _ASM_SOCKET_H
-#define _ASM_SOCKET_H
-
-#include <asm/sockios.h>
-
-/* For setsockopt(2) */
-#define SOL_SOCKET     1
-
-#define SO_DEBUG       1
-#define SO_REUSEADDR   2
-#define SO_TYPE                3
-#define SO_ERROR       4
-#define SO_DONTROUTE   5
-#define SO_BROADCAST   6
-#define SO_SNDBUF      7
-#define SO_RCVBUF      8
-#define SO_SNDBUFFORCE 32
-#define SO_RCVBUFFORCE 33
-#define SO_KEEPALIVE   9
-#define SO_OOBINLINE   10
-#define SO_NO_CHECK    11
-#define SO_PRIORITY    12
-#define SO_LINGER      13
-#define SO_BSDCOMPAT   14
-/* To add :#define SO_REUSEPORT 15 */
-#define SO_PASSCRED    16
-#define SO_PEERCRED    17
-#define SO_RCVLOWAT    18
-#define SO_SNDLOWAT    19
-#define SO_RCVTIMEO    20
-#define SO_SNDTIMEO    21
-
-/* Security levels - as per NRL IPv6 - don't actually do anything */
-#define SO_SECURITY_AUTHENTICATION             22
-#define SO_SECURITY_ENCRYPTION_TRANSPORT       23
-#define SO_SECURITY_ENCRYPTION_NETWORK         24
-
-#define SO_BINDTODEVICE        25
-
-/* Socket filtering */
-#define SO_ATTACH_FILTER        26
-#define SO_DETACH_FILTER        27
-
-#define SO_PEERNAME             28
-#define SO_TIMESTAMP           29
-#define SCM_TIMESTAMP          SO_TIMESTAMP
-
-#define SO_ACCEPTCONN          30
-
-#define SO_PEERSEC             31
-#define SO_PASSSEC             34
-#define SO_TIMESTAMPNS         35
-#define SCM_TIMESTAMPNS                SO_TIMESTAMPNS
-
-#define SO_MARK                        36
-
-#define SO_TIMESTAMPING                37
-#define SCM_TIMESTAMPING       SO_TIMESTAMPING
-
-#endif /* _ASM_SOCKET_H */
-
diff --git a/include/asm-frv/sockios.h b/include/asm-frv/sockios.h
deleted file mode 100644 (file)
index 5dbdd13..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _ASM_SOCKIOS__
-#define _ASM_SOCKIOS__
-
-/* Socket-level I/O control calls. */
-#define FIOSETOWN      0x8901
-#define SIOCSPGRP      0x8902
-#define FIOGETOWN      0x8903
-#define SIOCGPGRP      0x8904
-#define SIOCATMARK     0x8905
-#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
-#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
-
-#endif /* _ASM_SOCKIOS__ */
-
diff --git a/include/asm-frv/spinlock.h b/include/asm-frv/spinlock.h
deleted file mode 100644 (file)
index fe385f4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* spinlock.h: spinlocks for FR-V
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SPINLOCK_H
-#define _ASM_SPINLOCK_H
-
-#error no spinlocks for FR-V yet
-
-#endif /* _ASM_SPINLOCK_H */
diff --git a/include/asm-frv/spr-regs.h b/include/asm-frv/spr-regs.h
deleted file mode 100644 (file)
index 01e6af5..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-/* spr-regs.h: special-purpose registers on the FRV
- *
- * Copyright (C) 2003, 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SPR_REGS_H
-#define _ASM_SPR_REGS_H
-
-/*
- * PSR - Processor Status Register
- */
-#define PSR_ET                 0x00000001      /* enable interrupts/exceptions flag */
-#define PSR_PS                 0x00000002      /* previous supervisor mode flag */
-#define PSR_S                  0x00000004      /* supervisor mode flag */
-#define PSR_PIL                        0x00000078      /* processor external interrupt level */
-#define PSR_PIL_0              0x00000000      /* - no interrupt in progress */
-#define PSR_PIL_13             0x00000068      /* - debugging only */
-#define PSR_PIL_14             0x00000070      /* - debugging in progress */
-#define PSR_PIL_15             0x00000078      /* - NMI in progress */
-#define PSR_EM                 0x00000080      /* enable media operation */
-#define PSR_EF                 0x00000100      /* enable FPU operation */
-#define PSR_BE                 0x00001000      /* endianness mode */
-#define PSR_BE_LE              0x00000000      /* - little endian mode */
-#define PSR_BE_BE              0x00001000      /* - big endian mode */
-#define PSR_CM                 0x00002000      /* conditional mode */
-#define PSR_NEM                        0x00004000      /* non-excepting mode */
-#define PSR_ICE                        0x00010000      /* in-circuit emulation mode */
-#define PSR_VERSION_SHIFT      24              /* CPU silicon ID */
-#define PSR_IMPLE_SHIFT                28              /* CPU core ID */
-
-#define PSR_VERSION(psr)       (((psr) >> PSR_VERSION_SHIFT) & 0xf)
-#define PSR_IMPLE(psr)         (((psr) >> PSR_IMPLE_SHIFT) & 0xf)
-
-#define PSR_IMPLE_FR401                0x2
-#define PSR_VERSION_FR401_MB93401      0x0
-#define PSR_VERSION_FR401_MB93401A     0x1
-#define PSR_VERSION_FR401_MB93403      0x2
-
-#define PSR_IMPLE_FR405                0x4
-#define PSR_VERSION_FR405_MB93405      0x0
-
-#define PSR_IMPLE_FR451                0x5
-#define PSR_VERSION_FR451_MB93451      0x0
-
-#define PSR_IMPLE_FR501                0x1
-#define PSR_VERSION_FR501_MB93501      0x1
-#define PSR_VERSION_FR501_MB93501A     0x2
-
-#define PSR_IMPLE_FR551                0x3
-#define PSR_VERSION_FR551_MB93555      0x1
-
-#define __get_PSR()    ({ unsigned long x; asm volatile("movsg psr,%0" : "=r"(x)); x; })
-#define __set_PSR(V)   do { asm volatile("movgs %0,psr" : : "r"(V)); } while(0)
-
-/*
- * TBR - Trap Base Register
- */
-#define TBR_TT                 0x00000ff0
-#define TBR_TT_INSTR_MMU_MISS  (0x01 << 4)
-#define TBR_TT_INSTR_ACC_ERROR (0x02 << 4)
-#define TBR_TT_INSTR_ACC_EXCEP (0x03 << 4)
-#define TBR_TT_PRIV_INSTR      (0x06 << 4)
-#define TBR_TT_ILLEGAL_INSTR   (0x07 << 4)
-#define TBR_TT_FP_EXCEPTION    (0x0d << 4)
-#define TBR_TT_MP_EXCEPTION    (0x0e << 4)
-#define TBR_TT_DATA_ACC_ERROR  (0x11 << 4)
-#define TBR_TT_DATA_MMU_MISS   (0x12 << 4)
-#define TBR_TT_DATA_ACC_EXCEP  (0x13 << 4)
-#define TBR_TT_DATA_STR_ERROR  (0x14 << 4)
-#define TBR_TT_DIVISION_EXCEP  (0x17 << 4)
-#define TBR_TT_COMMIT_EXCEP    (0x19 << 4)
-#define TBR_TT_INSTR_TLB_MISS  (0x1a << 4)
-#define TBR_TT_DATA_TLB_MISS   (0x1b << 4)
-#define TBR_TT_DATA_DAT_EXCEP  (0x1d << 4)
-#define TBR_TT_DECREMENT_TIMER (0x1f << 4)
-#define TBR_TT_COMPOUND_EXCEP  (0x20 << 4)
-#define TBR_TT_INTERRUPT_1     (0x21 << 4)
-#define TBR_TT_INTERRUPT_2     (0x22 << 4)
-#define TBR_TT_INTERRUPT_3     (0x23 << 4)
-#define TBR_TT_INTERRUPT_4     (0x24 << 4)
-#define TBR_TT_INTERRUPT_5     (0x25 << 4)
-#define TBR_TT_INTERRUPT_6     (0x26 << 4)
-#define TBR_TT_INTERRUPT_7     (0x27 << 4)
-#define TBR_TT_INTERRUPT_8     (0x28 << 4)
-#define TBR_TT_INTERRUPT_9     (0x29 << 4)
-#define TBR_TT_INTERRUPT_10    (0x2a << 4)
-#define TBR_TT_INTERRUPT_11    (0x2b << 4)
-#define TBR_TT_INTERRUPT_12    (0x2c << 4)
-#define TBR_TT_INTERRUPT_13    (0x2d << 4)
-#define TBR_TT_INTERRUPT_14    (0x2e << 4)
-#define TBR_TT_INTERRUPT_15    (0x2f << 4)
-#define TBR_TT_TRAP0           (0x80 << 4)
-#define TBR_TT_TRAP1           (0x81 << 4)
-#define TBR_TT_TRAP2           (0x82 << 4)
-#define TBR_TT_TRAP3           (0x83 << 4)
-#define TBR_TT_TRAP120         (0xf8 << 4)
-#define TBR_TT_TRAP121         (0xf9 << 4)
-#define TBR_TT_TRAP122         (0xfa << 4)
-#define TBR_TT_TRAP123         (0xfb << 4)
-#define TBR_TT_TRAP124         (0xfc << 4)
-#define TBR_TT_TRAP125         (0xfd << 4)
-#define TBR_TT_TRAP126         (0xfe << 4)
-#define TBR_TT_BREAK           (0xff << 4)
-
-#define TBR_TT_ATOMIC_CMPXCHG32        TBR_TT_TRAP120
-#define TBR_TT_ATOMIC_XCHG32   TBR_TT_TRAP121
-#define TBR_TT_ATOMIC_XOR      TBR_TT_TRAP122
-#define TBR_TT_ATOMIC_OR       TBR_TT_TRAP123
-#define TBR_TT_ATOMIC_AND      TBR_TT_TRAP124
-#define TBR_TT_ATOMIC_SUB      TBR_TT_TRAP125
-#define TBR_TT_ATOMIC_ADD      TBR_TT_TRAP126
-
-#define __get_TBR()    ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; })
-
-/*
- * HSR0 - Hardware Status Register 0
- */
-#define HSR0_PDM               0x00000007      /* power down mode */
-#define HSR0_PDM_NORMAL                0x00000000      /* - normal mode */
-#define HSR0_PDM_CORE_SLEEP    0x00000001      /* - CPU core sleep mode */
-#define HSR0_PDM_BUS_SLEEP     0x00000003      /* - bus sleep mode */
-#define HSR0_PDM_PLL_RUN       0x00000005      /* - PLL run */
-#define HSR0_PDM_PLL_STOP      0x00000007      /* - PLL stop */
-#define HSR0_GRLE              0x00000040      /* GR lower register set enable */
-#define HSR0_GRHE              0x00000080      /* GR higher register set enable */
-#define HSR0_FRLE              0x00000100      /* FR lower register set enable */
-#define HSR0_FRHE              0x00000200      /* FR higher register set enable */
-#define HSR0_GRN               0x00000400      /* GR quantity */
-#define HSR0_GRN_64            0x00000000      /* - 64 GR registers */
-#define HSR0_GRN_32            0x00000400      /* - 32 GR registers */
-#define HSR0_FRN               0x00000800      /* FR quantity */
-#define HSR0_FRN_64            0x00000000      /* - 64 FR registers */
-#define HSR0_FRN_32            0x00000800      /* - 32 FR registers */
-#define HSR0_SA                        0x00001000      /* start address (RAMBOOT#) */
-#define HSR0_ETMI              0x00008000      /* enable TIMERI (64-bit up timer) */
-#define HSR0_ETMD              0x00004000      /* enable TIMERD (32-bit down timer) */
-#define HSR0_PEDAT             0x00010000      /* previous DAT mode */
-#define HSR0_XEDAT             0x00020000      /* exception DAT mode */
-#define HSR0_EDAT              0x00080000      /* enable DAT mode */
-#define HSR0_RME               0x00400000      /* enable RAM mode */
-#define HSR0_EMEM              0x00800000      /* enable MMU_Miss mask */
-#define HSR0_EXMMU             0x01000000      /* enable extended MMU mode */
-#define HSR0_EDMMU             0x02000000      /* enable data MMU */
-#define HSR0_EIMMU             0x04000000      /* enable instruction MMU */
-#define HSR0_CBM               0x08000000      /* copy back mode */
-#define HSR0_CBM_WRITE_THRU    0x00000000      /* - write through */
-#define HSR0_CBM_COPY_BACK     0x08000000      /* - copy back */
-#define HSR0_NWA               0x10000000      /* no write allocate */
-#define HSR0_DCE               0x40000000      /* data cache enable */
-#define HSR0_ICE               0x80000000      /* instruction cache enable */
-
-#define __get_HSR(R)   ({ unsigned long x; asm volatile("movsg hsr"#R",%0" : "=r"(x)); x; })
-#define __set_HSR(R,V) do { asm volatile("movgs %0,hsr"#R : : "r"(V)); } while(0)
-
-/*
- * CCR - Condition Codes Register
- */
-#define CCR_FCC0               0x0000000f      /* FP/Media condition 0 (fcc0 reg) */
-#define CCR_FCC1               0x000000f0      /* FP/Media condition 1 (fcc1 reg) */
-#define CCR_FCC2               0x00000f00      /* FP/Media condition 2 (fcc2 reg) */
-#define CCR_FCC3               0x0000f000      /* FP/Media condition 3 (fcc3 reg) */
-#define CCR_ICC0               0x000f0000      /* Integer condition 0 (icc0 reg) */
-#define CCR_ICC0_C             0x00010000      /* - Carry flag */
-#define CCR_ICC0_V             0x00020000      /* - Overflow flag */
-#define CCR_ICC0_Z             0x00040000      /* - Zero flag */
-#define CCR_ICC0_N             0x00080000      /* - Negative flag */
-#define CCR_ICC1               0x00f00000      /* Integer condition 1 (icc1 reg) */
-#define CCR_ICC2               0x0f000000      /* Integer condition 2 (icc2 reg) */
-#define CCR_ICC3               0xf0000000      /* Integer condition 3 (icc3 reg) */
-
-/*
- * CCCR - Condition Codes for Conditional Instructions Register
- */
-#define CCCR_CC0               0x00000003      /* condition 0 (cc0 reg) */
-#define CCCR_CC0_FALSE         0x00000002      /* - condition is false */
-#define CCCR_CC0_TRUE          0x00000003      /* - condition is true */
-#define CCCR_CC1               0x0000000c      /* condition 1 (cc1 reg) */
-#define CCCR_CC2               0x00000030      /* condition 2 (cc2 reg) */
-#define CCCR_CC3               0x000000c0      /* condition 3 (cc3 reg) */
-#define CCCR_CC4               0x00000300      /* condition 4 (cc4 reg) */
-#define CCCR_CC5               0x00000c00      /* condition 5 (cc5 reg) */
-#define CCCR_CC6               0x00003000      /* condition 6 (cc6 reg) */
-#define CCCR_CC7               0x0000c000      /* condition 7 (cc7 reg) */
-
-/*
- * ISR - Integer Status Register
- */
-#define ISR_EMAM               0x00000001      /* memory misaligned access handling */
-#define ISR_EMAM_EXCEPTION     0x00000000      /* - generate exception */
-#define ISR_EMAM_FUDGE         0x00000001      /* - mask out invalid address bits */
-#define ISR_AEXC               0x00000004      /* accrued [overflow] exception */
-#define ISR_DTT                        0x00000018      /* division type trap */
-#define ISR_DTT_IGNORE         0x00000000      /* - ignore division error */
-#define ISR_DTT_DIVBYZERO      0x00000008      /* - generate exception */
-#define ISR_DTT_OVERFLOW       0x00000010      /* - record overflow */
-#define ISR_EDE                        0x00000020      /* enable division exception */
-#define ISR_PLI                        0x20000000      /* pre-load instruction information */
-#define ISR_QI                 0x80000000      /* quad data implementation information */
-
-/*
- * EPCR0 - Exception PC Register
- */
-#define EPCR0_V                        0x00000001      /* register content validity indicator */
-#define EPCR0_PC               0xfffffffc      /* faulting instruction address */
-
-/*
- * ESR0/14/15 - Exception Status Register
- */
-#define ESRx_VALID             0x00000001      /* register content validity indicator */
-#define ESRx_EC                        0x0000003e      /* exception type */
-#define ESRx_EC_DATA_STORE     0x00000000      /* - data_store_error */
-#define ESRx_EC_INSN_ACCESS    0x00000006      /* - instruction_access_error */
-#define ESRx_EC_PRIV_INSN      0x00000008      /* - privileged_instruction */
-#define ESRx_EC_ILL_INSN       0x0000000a      /* - illegal_instruction */
-#define ESRx_EC_MP_EXCEP       0x0000001c      /* - mp_exception */
-#define ESRx_EC_DATA_ACCESS    0x00000020      /* - data_access_error */
-#define ESRx_EC_DIVISION       0x00000026      /* - division_exception */
-#define ESRx_EC_ITLB_MISS      0x00000034      /* - instruction_access_TLB_miss */
-#define ESRx_EC_DTLB_MISS      0x00000036      /* - data_access_TLB_miss */
-#define ESRx_EC_DATA_ACCESS_DAT        0x0000003a      /* - data_access_DAT_exception */
-
-#define ESR0_IAEC              0x00000100      /* info for instruction-access-exception */
-#define ESR0_IAEC_RESV         0x00000000      /* - reserved */
-#define ESR0_IAEC_PROT_VIOL    0x00000100      /* - protection violation */
-
-#define ESR0_ATXC              0x00f00000      /* address translation exception code */
-#define ESR0_ATXC_MMU_MISS     0x00000000      /* - MMU miss exception and more (?) */
-#define ESR0_ATXC_MULTI_DAT    0x00800000      /* - multiple DAT entry hit */
-#define ESR0_ATXC_MULTI_SAT    0x00900000      /* - multiple SAT entry hit */
-#define ESR0_ATXC_AMRTLB_MISS  0x00a00000      /* - MMU/TLB miss exception */
-#define ESR0_ATXC_PRIV_EXCEP   0x00c00000      /* - privilege protection fault */
-#define ESR0_ATXC_WP_EXCEP     0x00d00000      /* - write protection fault */
-
-#define ESR0_EAV               0x00000800      /* true if EAR0 register valid */
-#define ESR15_EAV              0x00000800      /* true if EAR15 register valid */
-
-/*
- * ESFR1 - Exception Status Valid Flag Register
- */
-#define ESFR1_ESR0             0x00000001      /* true if ESR0 is valid */
-#define ESFR1_ESR14            0x00004000      /* true if ESR14 is valid */
-#define ESFR1_ESR15            0x00008000      /* true if ESR15 is valid */
-
-/*
- * MSR - Media Status Register
- */
-#define MSR0_AOVF              0x00000001      /* overflow exception accrued */
-#define MSRx_OVF               0x00000002      /* overflow exception detected */
-#define MSRx_SIE               0x0000003c      /* last SIMD instruction exception detected */
-#define MSRx_SIE_NONE          0x00000000      /* - none detected */
-#define MSRx_SIE_FRkHI_ACCk    0x00000020      /* - exception at FRkHI or ACCk */
-#define MSRx_SIE_FRkLO_ACCk1   0x00000010      /* - exception at FRkLO or ACCk+1 */
-#define MSRx_SIE_FRk1HI_ACCk2  0x00000008      /* - exception at FRk+1HI or ACCk+2 */
-#define MSRx_SIE_FRk1LO_ACCk3  0x00000004      /* - exception at FRk+1LO or ACCk+3 */
-#define MSR0_MTT               0x00007000      /* type of last media trap detected */
-#define MSR0_MTT_NONE          0x00000000      /* - none detected */
-#define MSR0_MTT_OVERFLOW      0x00001000      /* - overflow detected */
-#define MSR0_HI                        0x00c00000      /* hardware implementation */
-#define MSR0_HI_ROUNDING       0x00000000      /* - rounding mode */
-#define MSR0_HI_NONROUNDING    0x00c00000      /* - non-rounding mode */
-#define MSR0_EMCI              0x01000000      /* enable media custom instructions */
-#define MSR0_SRDAV             0x10000000      /* select rounding mode of MAVEH */
-#define MSR0_SRDAV_RDAV                0x00000000      /* - controlled by MSR.RDAV */
-#define MSR0_SRDAV_RD          0x10000000      /* - controlled by MSR.RD */
-#define MSR0_RDAV              0x20000000      /* rounding mode of MAVEH */
-#define MSR0_RDAV_NEAREST_MI   0x00000000      /* - round to nearest minus */
-#define MSR0_RDAV_NEAREST_PL   0x20000000      /* - round to nearest plus */
-#define MSR0_RD                        0xc0000000      /* rounding mode */
-#define MSR0_RD_NEAREST                0x00000000      /* - nearest */
-#define MSR0_RD_ZERO           0x40000000      /* - zero */
-#define MSR0_RD_POS_INF                0x80000000      /* - postive infinity */
-#define MSR0_RD_NEG_INF                0xc0000000      /* - negative infinity */
-
-/*
- * IAMPR0-7 - Instruction Address Mapping Register
- * DAMPR0-7 - Data Address Mapping Register
- */
-#define xAMPRx_V               0x00000001      /* register content validity indicator */
-#define DAMPRx_WP              0x00000002      /* write protect */
-#define DAMPRx_WP_RW           0x00000000      /* - read/write */
-#define DAMPRx_WP_RO           0x00000002      /* - read-only */
-#define xAMPRx_C               0x00000004      /* cached/uncached */
-#define xAMPRx_C_CACHED                0x00000000      /* - cached */
-#define xAMPRx_C_UNCACHED      0x00000004      /* - uncached */
-#define xAMPRx_S               0x00000008      /* supervisor only */
-#define xAMPRx_S_USER          0x00000000      /* - userspace can access */
-#define xAMPRx_S_KERNEL                0x00000008      /* - kernel only */
-#define xAMPRx_SS              0x000000f0      /* segment size */
-#define xAMPRx_SS_16Kb         0x00000000      /* - 16 kilobytes */
-#define xAMPRx_SS_64Kb         0x00000010      /* - 64 kilobytes */
-#define xAMPRx_SS_256Kb                0x00000020      /* - 256 kilobytes */
-#define xAMPRx_SS_1Mb          0x00000030      /* - 1 megabyte */
-#define xAMPRx_SS_2Mb          0x00000040      /* - 2 megabytes */
-#define xAMPRx_SS_4Mb          0x00000050      /* - 4 megabytes */
-#define xAMPRx_SS_8Mb          0x00000060      /* - 8 megabytes */
-#define xAMPRx_SS_16Mb         0x00000070      /* - 16 megabytes */
-#define xAMPRx_SS_32Mb         0x00000080      /* - 32 megabytes */
-#define xAMPRx_SS_64Mb         0x00000090      /* - 64 megabytes */
-#define xAMPRx_SS_128Mb                0x000000a0      /* - 128 megabytes */
-#define xAMPRx_SS_256Mb                0x000000b0      /* - 256 megabytes */
-#define xAMPRx_SS_512Mb                0x000000c0      /* - 512 megabytes */
-#define xAMPRx_RESERVED8       0x00000100      /* reserved bit */
-#define xAMPRx_NG              0x00000200      /* non-global */
-#define xAMPRx_L               0x00000400      /* locked */
-#define xAMPRx_M               0x00000800      /* modified */
-#define xAMPRx_D               0x00001000      /* DAT entry */
-#define xAMPRx_RESERVED13      0x00002000      /* reserved bit */
-#define xAMPRx_PPFN            0xfff00000      /* physical page frame number */
-
-#define xAMPRx_V_BIT           0
-#define DAMPRx_WP_BIT          1
-#define xAMPRx_C_BIT           2
-#define xAMPRx_S_BIT           3
-#define xAMPRx_RESERVED8_BIT   8
-#define xAMPRx_NG_BIT          9
-#define xAMPRx_L_BIT           10
-#define xAMPRx_M_BIT           11
-#define xAMPRx_D_BIT           12
-#define xAMPRx_RESERVED13_BIT  13
-
-#define __get_IAMPR(R) ({ unsigned long x; asm volatile("movsg iampr"#R",%0" : "=r"(x)); x; })
-#define __get_DAMPR(R) ({ unsigned long x; asm volatile("movsg dampr"#R",%0" : "=r"(x)); x; })
-
-#define __get_IAMLR(R) ({ unsigned long x; asm volatile("movsg iamlr"#R",%0" : "=r"(x)); x; })
-#define __get_DAMLR(R) ({ unsigned long x; asm volatile("movsg damlr"#R",%0" : "=r"(x)); x; })
-
-#define __set_IAMPR(R,V)       do { asm volatile("movgs %0,iampr"#R : : "r"(V)); } while(0)
-#define __set_DAMPR(R,V)       do { asm volatile("movgs %0,dampr"#R : : "r"(V)); } while(0)
-
-#define __set_IAMLR(R,V)       do { asm volatile("movgs %0,iamlr"#R : : "r"(V)); } while(0)
-#define __set_DAMLR(R,V)       do { asm volatile("movgs %0,damlr"#R : : "r"(V)); } while(0)
-
-#define save_dampr(R, _dampr)                                  \
-do {                                                           \
-       asm volatile("movsg dampr"R",%0" : "=r"(_dampr));       \
-} while(0)
-
-#define restore_dampr(R, _dampr)                       \
-do {                                                   \
-       asm volatile("movgs %0,dampr"R :: "r"(_dampr)); \
-} while(0)
-
-/*
- * AMCR - Address Mapping Control Register
- */
-#define AMCR_IAMRN             0x000000ff      /* quantity of IAMPR registers */
-#define AMCR_DAMRN             0x0000ff00      /* quantity of DAMPR registers */
-
-/*
- * TTBR - Address Translation Table Base Register
- */
-#define __get_TTBR()           ({ unsigned long x; asm volatile("movsg ttbr,%0" : "=r"(x)); x; })
-
-/*
- * TPXR - TLB Probe Extend Register
- */
-#define TPXR_E                 0x00000001
-#define TPXR_LMAX_SHIFT                20
-#define TPXR_LMAX_SMASK                0xf
-#define TPXR_WMAX_SHIFT                24
-#define TPXR_WMAX_SMASK                0xf
-#define TPXR_WAY_SHIFT         28
-#define TPXR_WAY_SMASK         0xf
-
-/*
- * DCR - Debug Control Register
- */
-#define DCR_IBCE3              0x00000001      /* break on conditional insn pointed to by IBAR3 */
-#define DCR_IBE3               0x00000002      /* break on insn pointed to by IBAR3 */
-#define DCR_IBCE1              0x00000004      /* break on conditional insn pointed to by IBAR2 */
-#define DCR_IBE1               0x00000008      /* break on insn pointed to by IBAR2 */
-#define DCR_IBCE2              0x00000010      /* break on conditional insn pointed to by IBAR1 */
-#define DCR_IBE2               0x00000020      /* break on insn pointed to by IBAR1 */
-#define DCR_IBCE0              0x00000040      /* break on conditional insn pointed to by IBAR0 */
-#define DCR_IBE0               0x00000080      /* break on insn pointed to by IBAR0 */
-
-#define DCR_DDBE1              0x00004000      /* use DBDR1x when checking DBAR1 */
-#define DCR_DWBE1              0x00008000      /* break on store to address in DBAR1/DBMR1x */
-#define DCR_DRBE1              0x00010000      /* break on load from address in DBAR1/DBMR1x */
-#define DCR_DDBE0              0x00020000      /* use DBDR0x when checking DBAR0 */
-#define DCR_DWBE0              0x00040000      /* break on store to address in DBAR0/DBMR0x */
-#define DCR_DRBE0              0x00080000      /* break on load from address in DBAR0/DBMR0x */
-
-#define DCR_EIM                        0x0c000000      /* external interrupt disable */
-#define DCR_IBM                        0x10000000      /* instruction break disable */
-#define DCR_SE                 0x20000000      /* single step enable */
-#define DCR_EBE                        0x40000000      /* exception break enable */
-
-/*
- * BRR - Break Interrupt Request Register
- */
-#define BRR_ST                 0x00000001      /* single-step detected */
-#define BRR_SB                 0x00000002      /* break instruction detected */
-#define BRR_BB                 0x00000004      /* branch with hint detected */
-#define BRR_CBB                        0x00000008      /* branch to LR detected */
-#define BRR_IBx                        0x000000f0      /* hardware breakpoint detected */
-#define BRR_DBx                        0x00000f00      /* hardware watchpoint detected */
-#define BRR_DBNEx              0x0000f000      /* ? */
-#define BRR_EBTT               0x00ff0000      /* trap type of exception break */
-#define BRR_TB                 0x10000000      /* external break request detected */
-#define BRR_CB                 0x20000000      /* ICE break command detected */
-#define BRR_EB                 0x40000000      /* exception break detected */
-
-/*
- * BPSR - Break PSR Save Register
- */
-#define BPSR_BET               0x00000001      /* former PSR.ET */
-#define BPSR_BS                        0x00001000      /* former PSR.S */
-
-#endif /* _ASM_SPR_REGS_H */
diff --git a/include/asm-frv/stat.h b/include/asm-frv/stat.h
deleted file mode 100644 (file)
index ce56de9..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef _ASM_STAT_H
-#define _ASM_STAT_H
-
-struct __old_kernel_stat {
-       unsigned short st_dev;
-       unsigned short st_ino;
-       unsigned short st_mode;
-       unsigned short st_nlink;
-       unsigned short st_uid;
-       unsigned short st_gid;
-       unsigned short st_rdev;
-       unsigned long  st_size;
-       unsigned long  st_atime;
-       unsigned long  st_mtime;
-       unsigned long  st_ctime;
-};
-
-/* This matches struct stat in uClibc/glibc.  */
-struct stat {
-       unsigned char __pad1[6];
-       unsigned short st_dev;
-
-       unsigned long __pad2;
-       unsigned long st_ino;
-
-       unsigned short __pad3;
-       unsigned short st_mode;
-       unsigned short __pad4;
-       unsigned short st_nlink;
-
-       unsigned short __pad5;
-       unsigned short st_uid;
-       unsigned short __pad6;
-       unsigned short st_gid;
-
-       unsigned char __pad7[6];
-       unsigned short st_rdev;
-
-       unsigned long __pad8;
-       unsigned long st_size;
-
-       unsigned long __pad9;           /* align 64-bit st_blocks to 2-word */
-       unsigned long st_blksize;
-
-       unsigned long __pad10;  /* future possible st_blocks high bits */
-       unsigned long st_blocks;        /* Number 512-byte blocks allocated. */
-
-       unsigned long __unused1;
-       unsigned long st_atime;
-
-       unsigned long __unused2;
-       unsigned long st_mtime;
-
-       unsigned long __unused3;
-       unsigned long st_ctime;
-
-       unsigned long long __unused4;
-};
-
-/* This matches struct stat64 in uClibc/glibc.  The layout is exactly
-   the same as that of struct stat above, with 64-bit types taking up
-   space that was formerly used by padding.  stat syscalls are still
-   different from stat64, though, in that the former tests for
-   overflow.  */
-struct stat64 {
-       unsigned char __pad1[6];
-       unsigned short st_dev;
-
-       unsigned long long st_ino;
-
-       unsigned int st_mode;
-       unsigned int st_nlink;
-
-       unsigned long st_uid;
-       unsigned long st_gid;
-
-       unsigned char __pad2[6];
-       unsigned short st_rdev;
-
-       long long st_size;
-
-       unsigned long __pad3;           /* align 64-bit st_blocks to 2-word */
-       unsigned long st_blksize;
-
-       unsigned long __pad4;           /* future possible st_blocks high bits */
-       unsigned long st_blocks;        /* Number 512-byte blocks allocated. */
-
-       unsigned long st_atime_nsec;
-       unsigned long st_atime;
-
-       unsigned int st_mtime_nsec;
-       unsigned long st_mtime;
-
-       unsigned long st_ctime_nsec;
-       unsigned long st_ctime;
-
-       unsigned long long __unused4;
-};
-
-#endif /* _ASM_STAT_H */
diff --git a/include/asm-frv/statfs.h b/include/asm-frv/statfs.h
deleted file mode 100644 (file)
index 741f586..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _ASM_STATFS_H
-#define _ASM_STATFS_H
-
-#include <asm-generic/statfs.h>
-
-#endif /* _ASM_STATFS_H */
-
diff --git a/include/asm-frv/string.h b/include/asm-frv/string.h
deleted file mode 100644 (file)
index 5ed310f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* string.h: FRV string handling
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_STRING_H_
-#define _ASM_STRING_H_
-
-#ifdef __KERNEL__ /* only set these up for kernel code */
-
-#define __HAVE_ARCH_MEMSET 1
-#define __HAVE_ARCH_MEMCPY 1
-
-extern void *memset(void *, int, __kernel_size_t);
-extern void *memcpy(void *, const void *, __kernel_size_t);
-
-#else /* KERNEL */
-
-/*
- *     let user libraries deal with these,
- *     IMHO the kernel has no place defining these functions for user apps
- */
-
-#define __HAVE_ARCH_STRCPY 1
-#define __HAVE_ARCH_STRNCPY 1
-#define __HAVE_ARCH_STRCAT 1
-#define __HAVE_ARCH_STRNCAT 1
-#define __HAVE_ARCH_STRCMP 1
-#define __HAVE_ARCH_STRNCMP 1
-#define __HAVE_ARCH_STRNICMP 1
-#define __HAVE_ARCH_STRCHR 1
-#define __HAVE_ARCH_STRRCHR 1
-#define __HAVE_ARCH_STRSTR 1
-#define __HAVE_ARCH_STRLEN 1
-#define __HAVE_ARCH_STRNLEN 1
-#define __HAVE_ARCH_MEMSET 1
-#define __HAVE_ARCH_MEMCPY 1
-#define __HAVE_ARCH_MEMMOVE 1
-#define __HAVE_ARCH_MEMSCAN 1
-#define __HAVE_ARCH_MEMCMP 1
-#define __HAVE_ARCH_MEMCHR 1
-#define __HAVE_ARCH_STRTOK 1
-
-#endif /* KERNEL */
-#endif /* _ASM_STRING_H_ */
diff --git a/include/asm-frv/suspend.h b/include/asm-frv/suspend.h
deleted file mode 100644 (file)
index 5fa7b5a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* suspend.h: suspension stuff
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SUSPEND_H
-#define _ASM_SUSPEND_H
-
-static inline int arch_prepare_suspend(void)
-{
-       return 0;
-}
-
-#endif /* _ASM_SUSPEND_H */
diff --git a/include/asm-frv/swab.h b/include/asm-frv/swab.h
deleted file mode 100644 (file)
index f305834..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _ASM_SWAB_H
-#define _ASM_SWAB_H
-
-#include <linux/types.h>
-
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
-#  define __SWAB_64_THRU_32__
-#endif
-
-#endif /* _ASM_SWAB_H */
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h
deleted file mode 100644 (file)
index 7742ec0..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/* system.h: FR-V CPU control definitions
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_SYSTEM_H
-#define _ASM_SYSTEM_H
-
-#include <linux/types.h>
-#include <linux/linkage.h>
-#include <linux/kernel.h>
-
-struct thread_struct;
-
-/*
- * switch_to(prev, next) should switch from task `prev' to `next'
- * `prev' will never be the same as `next'.
- * The `mb' is to tell GCC not to cache `current' across this call.
- */
-extern asmlinkage
-struct task_struct *__switch_to(struct thread_struct *prev_thread,
-                               struct thread_struct *next_thread,
-                               struct task_struct *prev);
-
-#define switch_to(prev, next, last)                                    \
-do {                                                                   \
-       (prev)->thread.sched_lr =                                       \
-               (unsigned long) __builtin_return_address(0);            \
-       (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \
-       mb();                                                           \
-} while(0)
-
-/*
- * interrupt flag manipulation
- * - use virtual interrupt management since touching the PSR is slow
- *   - ICC2.Z: T if interrupts virtually disabled
- *   - ICC2.C: F if interrupts really disabled
- * - if Z==1 upon interrupt:
- *   - C is set to 0
- *   - interrupts are really disabled
- *   - entry.S returns immediately
- * - uses TIHI (TRAP if Z==0 && C==0) #2 to really reenable interrupts
- *   - if taken, the trap:
- *     - sets ICC2.C
- *     - enables interrupts
- */
-#define local_irq_disable()                                    \
-do {                                                           \
-       /* set Z flag, but don't change the C flag */           \
-       asm volatile("  andcc   gr0,gr0,gr0,icc2        \n"     \
-                    :                                          \
-                    :                                          \
-                    : "memory", "icc2"                         \
-                    );                                         \
-} while(0)
-
-#define local_irq_enable()                                     \
-do {                                                           \
-       /* clear Z flag and then test the C flag */             \
-       asm volatile("  oricc   gr0,#1,gr0,icc2         \n"     \
-                    "  tihi    icc2,gr0,#2             \n"     \
-                    :                                          \
-                    :                                          \
-                    : "memory", "icc2"                         \
-                    );                                         \
-} while(0)
-
-#define local_save_flags(flags)                                        \
-do {                                                           \
-       typecheck(unsigned long, flags);                        \
-       asm volatile("movsg ccr,%0"                             \
-                    : "=r"(flags)                              \
-                    :                                          \
-                    : "memory");                               \
-                                                               \
-       /* shift ICC2.Z to bit 0 */                             \
-       flags >>= 26;                                           \
-                                                               \
-       /* make flags 1 if interrupts disabled, 0 otherwise */  \
-       flags &= 1UL;                                           \
-} while(0)
-
-#define irqs_disabled() \
-       ({unsigned long flags; local_save_flags(flags); !!flags; })
-
-#define        local_irq_save(flags)                   \
-do {                                           \
-       typecheck(unsigned long, flags);        \
-       local_save_flags(flags);                \
-       local_irq_disable();                    \
-} while(0)
-
-#define        local_irq_restore(flags)                                        \
-do {                                                                   \
-       typecheck(unsigned long, flags);                                \
-                                                                       \
-       /* load the Z flag by turning 1 if disabled into 0 if disabled  \
-        * and thus setting the Z flag but not the C flag */            \
-       asm volatile("  xoricc  %0,#1,gr0,icc2          \n"             \
-                    /* then test Z=0 and C=0 */                        \
-                    "  tihi    icc2,gr0,#2             \n"             \
-                    :                                                  \
-                    : "r"(flags)                                       \
-                    : "memory", "icc2"                                 \
-                    );                                                 \
-                                                                       \
-} while(0)
-
-/*
- * real interrupt flag manipulation
- */
-#define __local_irq_disable()                          \
-do {                                                   \
-       unsigned long psr;                              \
-       asm volatile("  movsg   psr,%0          \n"     \
-                    "  andi    %0,%2,%0        \n"     \
-                    "  ori     %0,%1,%0        \n"     \
-                    "  movgs   %0,psr          \n"     \
-                    : "=r"(psr)                        \
-                    : "i" (PSR_PIL_14), "i" (~PSR_PIL) \
-                    : "memory");                       \
-} while(0)
-
-#define __local_irq_enable()                           \
-do {                                                   \
-       unsigned long psr;                              \
-       asm volatile("  movsg   psr,%0          \n"     \
-                    "  andi    %0,%1,%0        \n"     \
-                    "  movgs   %0,psr          \n"     \
-                    : "=r"(psr)                        \
-                    : "i" (~PSR_PIL)                   \
-                    : "memory");                       \
-} while(0)
-
-#define __local_save_flags(flags)              \
-do {                                           \
-       typecheck(unsigned long, flags);        \
-       asm("movsg psr,%0"                      \
-           : "=r"(flags)                       \
-           :                                   \
-           : "memory");                        \
-} while(0)
-
-#define        __local_irq_save(flags)                         \
-do {                                                   \
-       unsigned long npsr;                             \
-       typecheck(unsigned long, flags);                \
-       asm volatile("  movsg   psr,%0          \n"     \
-                    "  andi    %0,%3,%1        \n"     \
-                    "  ori     %1,%2,%1        \n"     \
-                    "  movgs   %1,psr          \n"     \
-                    : "=r"(flags), "=r"(npsr)          \
-                    : "i" (PSR_PIL_14), "i" (~PSR_PIL) \
-                    : "memory");                       \
-} while(0)
-
-#define        __local_irq_restore(flags)                      \
-do {                                                   \
-       typecheck(unsigned long, flags);                \
-       asm volatile("  movgs   %0,psr          \n"     \
-                    :                                  \
-                    : "r" (flags)                      \
-                    : "memory");                       \
-} while(0)
-
-#define __irqs_disabled() \
-       ((__get_PSR() & PSR_PIL) >= PSR_PIL_14)
-
-/*
- * Force strict CPU ordering.
- */
-#define nop()                  asm volatile ("nop"::)
-#define mb()                   asm volatile ("membar" : : :"memory")
-#define rmb()                  asm volatile ("membar" : : :"memory")
-#define wmb()                  asm volatile ("membar" : : :"memory")
-#define read_barrier_depends() do { } while (0)
-
-#ifdef CONFIG_SMP
-#define smp_mb()                       mb()
-#define smp_rmb()                      rmb()
-#define smp_wmb()                      wmb()
-#define smp_read_barrier_depends()     read_barrier_depends()
-#define set_mb(var, value) \
-       do { xchg(&var, (value)); } while (0)
-#else
-#define smp_mb()                       barrier()
-#define smp_rmb()                      barrier()
-#define smp_wmb()                      barrier()
-#define smp_read_barrier_depends()     do {} while(0)
-#define set_mb(var, value) \
-       do { var = (value); barrier(); } while (0)
-#endif
-
-extern void die_if_kernel(const char *, ...) __attribute__((format(printf, 1, 2)));
-extern void free_initmem(void);
-
-#define arch_align_stack(x) (x)
-
-/*****************************************************************************/
-/*
- * compare and conditionally exchange value with memory
- * - if (*ptr == test) then orig = *ptr; *ptr = test;
- * - if (*ptr != test) then orig = *ptr;
- */
-#ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
-
-#define cmpxchg(ptr, test, new)                                                        \
-({                                                                             \
-       __typeof__(ptr) __xg_ptr = (ptr);                                       \
-       __typeof__(*(ptr)) __xg_orig, __xg_tmp;                                 \
-       __typeof__(*(ptr)) __xg_test = (test);                                  \
-       __typeof__(*(ptr)) __xg_new = (new);                                    \
-                                                                               \
-       switch (sizeof(__xg_orig)) {                                            \
-       case 4:                                                                 \
-               asm volatile(                                                   \
-                       "0:                                             \n"     \
-                       "       orcc            gr0,gr0,gr0,icc3        \n"     \
-                       "       ckeq            icc3,cc7                \n"     \
-                       "       ld.p            %M0,%1                  \n"     \
-                       "       orcr            cc7,cc7,cc3             \n"     \
-                       "       sub%I4cc        %1,%4,%2,icc0           \n"     \
-                       "       bne             icc0,#0,1f              \n"     \
-                       "       cst.p           %3,%M0          ,cc3,#1 \n"     \
-                       "       corcc           gr29,gr29,gr0   ,cc3,#1 \n"     \
-                       "       beq             icc3,#0,0b              \n"     \
-                       "1:                                             \n"     \
-                       : "+U"(*__xg_ptr), "=&r"(__xg_orig), "=&r"(__xg_tmp)    \
-                       : "r"(__xg_new), "NPr"(__xg_test)                       \
-                       : "memory", "cc7", "cc3", "icc3", "icc0"                \
-                       );                                                      \
-               break;                                                          \
-                                                                               \
-       default:                                                                \
-               __xg_orig = (__typeof__(__xg_orig))0;                           \
-               asm volatile("break");                                          \
-               break;                                                          \
-       }                                                                       \
-                                                                               \
-       __xg_orig;                                                              \
-})
-
-#else
-
-extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new);
-
-#define cmpxchg(ptr, test, new)                                                        \
-({                                                                             \
-       __typeof__(ptr) __xg_ptr = (ptr);                                       \
-       __typeof__(*(ptr)) __xg_orig;                                           \
-       __typeof__(*(ptr)) __xg_test = (test);                                  \
-       __typeof__(*(ptr)) __xg_new = (new);                                    \
-                                                                               \
-       switch (sizeof(__xg_orig)) {                                            \
-       case 4: __xg_orig = (__force __typeof__(*ptr))                          \
-                       __cmpxchg_32((__force uint32_t *)__xg_ptr,              \
-                                        (__force uint32_t)__xg_test,           \
-                                        (__force uint32_t)__xg_new); break;    \
-       default:                                                                \
-               __xg_orig = (__typeof__(__xg_orig))0;                           \
-               asm volatile("break");                                          \
-               break;                                                          \
-       }                                                                       \
-                                                                               \
-       __xg_orig;                                                              \
-})
-
-#endif
-
-#include <asm-generic/cmpxchg-local.h>
-
-static inline unsigned long __cmpxchg_local(volatile void *ptr,
-                                     unsigned long old,
-                                     unsigned long new, int size)
-{
-       switch (size) {
-       case 4:
-               return cmpxchg((unsigned long *)ptr, old, new);
-       default:
-               return __cmpxchg_local_generic(ptr, old, new, size);
-       }
-
-       return old;
-}
-
-/*
- * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make
- * them available.
- */
-#define cmpxchg_local(ptr, o, n)                                       \
-       ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \
-                       (unsigned long)(n), sizeof(*(ptr))))
-#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
-
-#endif /* _ASM_SYSTEM_H */
diff --git a/include/asm-frv/termbits.h b/include/asm-frv/termbits.h
deleted file mode 100644 (file)
index 5568492..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-#ifndef _ASM_TERMBITS_H__
-#define _ASM_TERMBITS_H__
-
-#include <linux/posix_types.h>
-
-typedef unsigned char  cc_t;
-typedef unsigned int   speed_t;
-typedef unsigned int   tcflag_t;
-
-#define NCCS 19
-struct termios {
-       tcflag_t c_iflag;               /* input mode flags */
-       tcflag_t c_oflag;               /* output mode flags */
-       tcflag_t c_cflag;               /* control mode flags */
-       tcflag_t c_lflag;               /* local mode flags */
-       cc_t c_line;                    /* line discipline */
-       cc_t c_cc[NCCS];                /* control characters */
-};
-
-struct termios2 {
-       tcflag_t c_iflag;               /* input mode flags */
-       tcflag_t c_oflag;               /* output mode flags */
-       tcflag_t c_cflag;               /* control mode flags */
-       tcflag_t c_lflag;               /* local mode flags */
-       cc_t c_line;                    /* line discipline */
-       cc_t c_cc[NCCS];                /* control characters */
-       speed_t c_ispeed;               /* input speed */
-       speed_t c_ospeed;               /* output speed */
-};
-
-struct ktermios {
-       tcflag_t c_iflag;               /* input mode flags */
-       tcflag_t c_oflag;               /* output mode flags */
-       tcflag_t c_cflag;               /* control mode flags */
-       tcflag_t c_lflag;               /* local mode flags */
-       cc_t c_line;                    /* line discipline */
-       cc_t c_cc[NCCS];                /* control characters */
-       speed_t c_ispeed;               /* input speed */
-       speed_t c_ospeed;               /* output speed */
-};
-
-/* c_cc characters */
-#define VINTR 0
-#define VQUIT 1
-#define VERASE 2
-#define VKILL 3
-#define VEOF 4
-#define VTIME 5
-#define VMIN 6
-#define VSWTC 7
-#define VSTART 8
-#define VSTOP 9
-#define VSUSP 10
-#define VEOL 11
-#define VREPRINT 12
-#define VDISCARD 13
-#define VWERASE 14
-#define VLNEXT 15
-#define VEOL2 16
-
-
-/* c_iflag bits */
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK  0000020
-#define ISTRIP 0000040
-#define INLCR  0000100
-#define IGNCR  0000200
-#define ICRNL  0000400
-#define IUCLC  0001000
-#define IXON   0002000
-#define IXANY  0004000
-#define IXOFF  0010000
-#define IMAXBEL        0020000
-#define IUTF8  0040000
-
-/* c_oflag bits */
-#define OPOST  0000001
-#define OLCUC  0000002
-#define ONLCR  0000004
-#define OCRNL  0000010
-#define ONOCR  0000020
-#define ONLRET 0000040
-#define OFILL  0000100
-#define OFDEL  0000200
-#define NLDLY  0000400
-#define   NL0  0000000
-#define   NL1  0000400
-#define CRDLY  0003000
-#define   CR0  0000000
-#define   CR1  0001000
-#define   CR2  0002000
-#define   CR3  0003000
-#define TABDLY 0014000
-#define   TAB0 0000000
-#define   TAB1 0004000
-#define   TAB2 0010000
-#define   TAB3 0014000
-#define   XTABS        0014000
-#define BSDLY  0020000
-#define   BS0  0000000
-#define   BS1  0020000
-#define VTDLY  0040000
-#define   VT0  0000000
-#define   VT1  0040000
-#define FFDLY  0100000
-#define   FF0  0000000
-#define   FF1  0100000
-
-/* c_cflag bit meaning */
-#define CBAUD  0010017
-#define  B0    0000000         /* hang up */
-#define  B50   0000001
-#define  B75   0000002
-#define  B110  0000003
-#define  B134  0000004
-#define  B150  0000005
-#define  B200  0000006
-#define  B300  0000007
-#define  B600  0000010
-#define  B1200 0000011
-#define  B1800 0000012
-#define  B2400 0000013
-#define  B4800 0000014
-#define  B9600 0000015
-#define  B19200        0000016
-#define  B38400        0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE  0000060
-#define   CS5  0000000
-#define   CS6  0000020
-#define   CS7  0000040
-#define   CS8  0000060
-#define CSTOPB 0000100
-#define CREAD  0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL  0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define    BOTHER 0010000
-#define    B57600 0010001
-#define   B115200 0010002
-#define   B230400 0010003
-#define   B460800 0010004
-#define   B500000 0010005
-#define   B576000 0010006
-#define   B921600 0010007
-#define  B1000000 0010010
-#define  B1152000 0010011
-#define  B1500000 0010012
-#define  B2000000 0010013
-#define  B2500000 0010014
-#define  B3000000 0010015
-#define  B3500000 0010016
-#define  B4000000 0010017
-#define CIBAUD   002003600000          /* Input baud rate */
-#define CTVB     004000000000          /* VisioBraille Terminal flow control */
-#define CMSPAR   010000000000          /* mark or space (stick) parity */
-#define CRTSCTS          020000000000          /* flow control */
-
-#define IBSHIFT        16                      /* Shift from CBAUD to CIBAUD */
-
-/* c_lflag bits */
-#define ISIG   0000001
-#define ICANON 0000002
-#define XCASE  0000004
-#define ECHO   0000010
-#define ECHOE  0000020
-#define ECHOK  0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL        0001000
-#define ECHOPRT        0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-
-
-/* tcflow() and TCXONC use these */
-#define        TCOOFF          0
-#define        TCOON           1
-#define        TCIOFF          2
-#define        TCION           3
-
-/* tcflush() and TCFLSH use these */
-#define        TCIFLUSH        0
-#define        TCOFLUSH        1
-#define        TCIOFLUSH       2
-
-/* tcsetattr uses these */
-#define        TCSANOW         0
-#define        TCSADRAIN       1
-#define        TCSAFLUSH       2
-
-#endif /* _ASM_TERMBITS_H__ */
-
diff --git a/include/asm-frv/termios.h b/include/asm-frv/termios.h
deleted file mode 100644 (file)
index a62fb58..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef _ASM_TERMIOS_H
-#define _ASM_TERMIOS_H
-
-#include <asm/termbits.h>
-#include <asm/ioctls.h>
-
-struct winsize {
-       unsigned short ws_row;
-       unsigned short ws_col;
-       unsigned short ws_xpixel;
-       unsigned short ws_ypixel;
-};
-
-#define NCC 8
-struct termio {
-       unsigned short c_iflag;         /* input mode flags */
-       unsigned short c_oflag;         /* output mode flags */
-       unsigned short c_cflag;         /* control mode flags */
-       unsigned short c_lflag;         /* local mode flags */
-       unsigned char c_line;           /* line discipline */
-       unsigned char c_cc[NCC];        /* control characters */
-};
-
-#ifdef __KERNEL__
-/*     intr=^C         quit=^|         erase=del       kill=^U
-       eof=^D          vtime=\0        vmin=\1         sxtc=\0
-       start=^Q        stop=^S         susp=^Z         eol=\0
-       reprint=^R      discard=^U      werase=^W       lnext=^V
-       eol2=\0
-*/
-#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
-#endif
-
-/* modem lines */
-#define TIOCM_LE       0x001
-#define TIOCM_DTR      0x002
-#define TIOCM_RTS      0x004
-#define TIOCM_ST       0x008
-#define TIOCM_SR       0x010
-#define TIOCM_CTS      0x020
-#define TIOCM_CAR      0x040
-#define TIOCM_RNG      0x080
-#define TIOCM_DSR      0x100
-#define TIOCM_CD       TIOCM_CAR
-#define TIOCM_RI       TIOCM_RNG
-#define TIOCM_OUT1     0x2000
-#define TIOCM_OUT2     0x4000
-#define TIOCM_LOOP     0x8000
-
-#define TIOCM_MODEM_BITS       TIOCM_OUT2      /* IRDA support */
-
-/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
-
-#ifdef __KERNEL__
-#include <asm-generic/termios.h>
-#endif
-
-#endif /* _ASM_TERMIOS_H */
diff --git a/include/asm-frv/thread_info.h b/include/asm-frv/thread_info.h
deleted file mode 100644 (file)
index b7ac6bf..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/* thread_info.h: description
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * Derived from include/asm-i386/thread_info.h
- *
- * 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.
- */
-
-#ifndef _ASM_THREAD_INFO_H
-#define _ASM_THREAD_INFO_H
-
-#ifdef __KERNEL__
-
-#ifndef __ASSEMBLY__
-#include <asm/processor.h>
-#endif
-
-#define THREAD_SIZE            8192
-
-/*
- * low level task data that entry.S needs immediate access to
- * - this struct should fit entirely inside of one cache line
- * - this struct shares the supervisor stack pages
- * - if the contents of this structure are changed, the assembly constants must also be changed
- */
-#ifndef __ASSEMBLY__
-
-struct thread_info {
-       struct task_struct      *task;          /* main task structure */
-       struct exec_domain      *exec_domain;   /* execution domain */
-       unsigned long           flags;          /* low level flags */
-       unsigned long           status;         /* thread-synchronous flags */
-       __u32                   cpu;            /* current CPU */
-       int                     preempt_count;  /* 0 => preemptable, <0 => BUG */
-
-       mm_segment_t            addr_limit;     /* thread address space:
-                                                  0-0xBFFFFFFF for user-thead
-                                                  0-0xFFFFFFFF for kernel-thread
-                                               */
-       struct restart_block    restart_block;
-
-       __u8                    supervisor_stack[0];
-};
-
-#else /* !__ASSEMBLY__ */
-
-#include <asm/asm-offsets.h>
-
-#endif
-
-#define PREEMPT_ACTIVE         0x10000000
-
-/*
- * macros/functions for gaining access to the thread information structure
- *
- * preempt_count needs to be 1 initially, until the scheduler is functional.
- */
-#ifndef __ASSEMBLY__
-
-#define INIT_THREAD_INFO(tsk)                  \
-{                                              \
-       .task           = &tsk,                 \
-       .exec_domain    = &default_exec_domain, \
-       .flags          = 0,                    \
-       .cpu            = 0,                    \
-       .preempt_count  = 1,                    \
-       .addr_limit     = KERNEL_DS,            \
-       .restart_block = {                      \
-               .fn = do_no_restart_syscall,    \
-       },                                      \
-}
-
-#define init_thread_info       (init_thread_union.thread_info)
-#define init_stack             (init_thread_union.stack)
-
-/* how to get the thread information struct from C */
-register struct thread_info *__current_thread_info asm("gr15");
-
-#define current_thread_info() ({ __current_thread_info; })
-
-#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
-
-/* thread information allocation */
-#ifdef CONFIG_DEBUG_STACK_USAGE
-#define alloc_thread_info(tsk)                                 \
-       ({                                                      \
-               struct thread_info *ret;                        \
-                                                               \
-               ret = kzalloc(THREAD_SIZE, GFP_KERNEL);         \
-                                                               \
-               ret;                                            \
-       })
-#else
-#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL)
-#endif
-
-#define free_thread_info(info) kfree(info)
-
-#endif /* __ASSEMBLY__ */
-
-/*
- * thread information flags
- * - these are process state flags that various assembly files may need to access
- * - pending work-to-be-done flags are in LSW
- * - other flags in MSW
- */
-#define TIF_SYSCALL_TRACE      0       /* syscall trace active */
-#define TIF_SIGPENDING         1       /* signal pending */
-#define TIF_NEED_RESCHED       2       /* rescheduling necessary */
-#define TIF_SINGLESTEP         3       /* restore singlestep on return to user mode */
-#define TIF_IRET               4       /* return with iret */
-#define TIF_RESTORE_SIGMASK    5       /* restore signal mask in do_signal() */
-#define TIF_POLLING_NRFLAG     16      /* true if poll_idle() is polling TIF_NEED_RESCHED */
-#define TIF_MEMDIE             17      /* OOM killer killed process */
-#define TIF_FREEZE             18      /* freezing for suspend */
-
-#define _TIF_SYSCALL_TRACE     (1 << TIF_SYSCALL_TRACE)
-#define _TIF_SIGPENDING                (1 << TIF_SIGPENDING)
-#define _TIF_NEED_RESCHED      (1 << TIF_NEED_RESCHED)
-#define _TIF_SINGLESTEP                (1 << TIF_SINGLESTEP)
-#define _TIF_IRET              (1 << TIF_IRET)
-#define _TIF_RESTORE_SIGMASK   (1 << TIF_RESTORE_SIGMASK)
-#define _TIF_POLLING_NRFLAG    (1 << TIF_POLLING_NRFLAG)
-#define _TIF_FREEZE            (1 << TIF_FREEZE)
-
-#define _TIF_WORK_MASK         0x0000FFFE      /* work to do on interrupt/exception return */
-#define _TIF_ALLWORK_MASK      0x0000FFFF      /* work to do on any return to u-space */
-
-/*
- * Thread-synchronous status.
- *
- * This is different from the flags in that nobody else
- * ever touches our thread-synchronous status, so we don't
- * have to worry about atomic accesses.
- */
-#define TS_USEDFPM             0x0001  /* FPU/Media was used by this task this quantum (SMP) */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_THREAD_INFO_H */
diff --git a/include/asm-frv/timer-regs.h b/include/asm-frv/timer-regs.h
deleted file mode 100644 (file)
index 6c5a871..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* timer-regs.h: hardware timer register definitions
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_TIMER_REGS_H
-#define _ASM_TIMER_REGS_H
-
-#include <asm/sections.h>
-
-extern unsigned long __nongprelbss __clkin_clock_speed_HZ;
-extern unsigned long __nongprelbss __ext_bus_clock_speed_HZ;
-extern unsigned long __nongprelbss __res_bus_clock_speed_HZ;
-extern unsigned long __nongprelbss __sdram_clock_speed_HZ;
-extern unsigned long __nongprelbss __core_bus_clock_speed_HZ;
-extern unsigned long __nongprelbss __core_clock_speed_HZ;
-extern unsigned long __nongprelbss __dsu_clock_speed_HZ;
-extern unsigned long __nongprelbss __serial_clock_speed_HZ;
-
-#define __get_CLKC()   ({ *(volatile unsigned long *)(0xfeff9a00); })
-
-static inline void __set_CLKC(unsigned long v)
-{
-       int tmp;
-
-       asm volatile("  st%I0.p %2,%M0          \n"
-                    "  setlos  %3,%1           \n"
-                    "  membar                  \n"
-                    "0:                        \n"
-                    "  subicc  %1,#1,%1,icc0   \n"
-                    "  bnc     icc0,#1,0b      \n"
-                    : "=m"(*(volatile unsigned long *) 0xfeff9a00), "=r"(tmp)
-                    : "r"(v), "i"(256)
-                    : "icc0");
-}
-
-#define __get_TCTR()   ({ *(volatile unsigned long *)(0xfeff9418); })
-#define __get_TPRV()   ({ *(volatile unsigned long *)(0xfeff9420); })
-#define __get_TPRCKSL()        ({ *(volatile unsigned long *)(0xfeff9428); })
-#define __get_TCSR(T)  ({ *(volatile unsigned long *)(0xfeff9400 + 8 * (T)); })
-#define __get_TxCKSL(T)        ({ *(volatile unsigned long *)(0xfeff9430 + 8 * (T)); })
-
-#define __get_TCSR_DATA(T) ({ __get_TCSR(T) >> 24; })
-
-#define __set_TCTR(V)  do { *(volatile unsigned long *)(0xfeff9418) = (V); mb(); } while(0)
-#define __set_TPRV(V)  do { *(volatile unsigned long *)(0xfeff9420) = (V) << 24; mb(); } while(0)
-#define __set_TPRCKSL(V) do { *(volatile unsigned long *)(0xfeff9428) = (V); mb(); } while(0)
-#define __set_TCSR(T,V)        \
-do { *(volatile unsigned long *)(0xfeff9400 + 8 * (T)) = (V); mb(); } while(0)
-
-#define __set_TxCKSL(T,V) \
-do { *(volatile unsigned long *)(0xfeff9430 + 8 * (T)) = (V); mb(); } while(0)
-
-#define __set_TCSR_DATA(T,V) __set_TCSR(T, (V) << 24)
-#define __set_TxCKSL_DATA(T,V) __set_TxCKSL(T, TxCKSL_EIGHT | __TxCKSL_SELECT((V)))
-
-/* clock control register */
-#define CLKC_CMODE             0x0f000000
-#define CLKC_SLPL              0x000f0000
-#define CLKC_P0                        0x00000100
-#define CLKC_CM                        0x00000003
-
-#define CLKC_CMODE_s           24
-
-/* timer control register - non-readback mode */
-#define TCTR_MODE_0            0x00000000
-#define TCTR_MODE_2            0x04000000
-#define TCTR_MODE_4            0x08000000
-#define TCTR_MODE_5            0x0a000000
-#define TCTR_RL_LATCH          0x00000000
-#define TCTR_RL_RW_LOW8                0x10000000
-#define TCTR_RL_RW_HIGH8       0x20000000
-#define TCTR_RL_RW_LH8         0x30000000
-#define TCTR_SC_CTR0           0x00000000
-#define TCTR_SC_CTR1           0x40000000
-#define TCTR_SC_CTR2           0x80000000
-
-/* timer control register - readback mode */
-#define TCTR_CNT0              0x02000000
-#define TCTR_CNT1              0x04000000
-#define TCTR_CNT2              0x08000000
-#define TCTR_NSTATUS           0x10000000
-#define TCTR_NCOUNT            0x20000000
-#define TCTR_SC_READBACK       0xc0000000
-
-/* timer control status registers - non-readback mode */
-#define TCSRx_DATA             0xff000000
-
-/* timer control status registers - readback mode */
-#define TCSRx_OUTPUT           0x80000000
-#define TCSRx_NULLCOUNT                0x40000000
-#define TCSRx_RL               0x30000000
-#define TCSRx_MODE             0x07000000
-
-/* timer clock select registers */
-#define TxCKSL_SELECT          0x0f000000
-#define __TxCKSL_SELECT(X)     ((X) << 24)
-#define TxCKSL_EIGHT           0xf0000000
-
-#endif /* _ASM_TIMER_REGS_H */
diff --git a/include/asm-frv/timex.h b/include/asm-frv/timex.h
deleted file mode 100644 (file)
index a89bdde..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* timex.h: FR-V architecture timex specifications
- */
-#ifndef _ASM_TIMEX_H
-#define _ASM_TIMEX_H
-
-#define CLOCK_TICK_RATE                1193180 /* Underlying HZ */
-#define CLOCK_TICK_FACTOR      20      /* Factor of both 1000000 and CLOCK_TICK_RATE */
-
-typedef unsigned long cycles_t;
-
-static inline cycles_t get_cycles(void)
-{
-       return 0;
-}
-
-#define vxtime_lock()          do {} while (0)
-#define vxtime_unlock()                do {} while (0)
-
-#endif
-
diff --git a/include/asm-frv/tlb.h b/include/asm-frv/tlb.h
deleted file mode 100644 (file)
index cd458eb..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _ASM_TLB_H
-#define _ASM_TLB_H
-
-#include <asm/tlbflush.h>
-
-#ifdef CONFIG_MMU
-extern void check_pgt_cache(void);
-#else
-#define check_pgt_cache() do {} while(0)
-#endif
-
-/*
- * we don't need any special per-pte or per-vma handling...
- */
-#define tlb_start_vma(tlb, vma)                                do { } while (0)
-#define tlb_end_vma(tlb, vma)                          do { } while (0)
-#define __tlb_remove_tlb_entry(tlb, ptep, address)     do { } while (0)
-
-/*
- * .. because we flush the whole mm when it fills up
- */
-#define tlb_flush(tlb)         flush_tlb_mm((tlb)->mm)
-
-#include <asm-generic/tlb.h>
-
-#endif /* _ASM_TLB_H */
-
diff --git a/include/asm-frv/tlbflush.h b/include/asm-frv/tlbflush.h
deleted file mode 100644 (file)
index 7ac5eaf..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/* tlbflush.h: TLB flushing functions
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_TLBFLUSH_H
-#define _ASM_TLBFLUSH_H
-
-#include <linux/mm.h>
-#include <asm/processor.h>
-
-#ifdef CONFIG_MMU
-
-#ifndef __ASSEMBLY__
-extern void asmlinkage __flush_tlb_all(void);
-extern void asmlinkage __flush_tlb_mm(unsigned long contextid);
-extern void asmlinkage __flush_tlb_page(unsigned long contextid, unsigned long start);
-extern void asmlinkage __flush_tlb_range(unsigned long contextid,
-                                        unsigned long start, unsigned long end);
-#endif /* !__ASSEMBLY__ */
-
-#define flush_tlb_all()                                \
-do {                                           \
-       preempt_disable();                      \
-       __flush_tlb_all();                      \
-       preempt_enable();                       \
-} while(0)
-
-#define flush_tlb_mm(mm)                       \
-do {                                           \
-       preempt_disable();                      \
-       __flush_tlb_mm((mm)->context.id);       \
-       preempt_enable();                       \
-} while(0)
-
-#define flush_tlb_range(vma,start,end)                                 \
-do {                                                                   \
-       preempt_disable();                                              \
-       __flush_tlb_range((vma)->vm_mm->context.id, start, end);        \
-       preempt_enable();                                               \
-} while(0)
-
-#define flush_tlb_page(vma,addr)                               \
-do {                                                           \
-       preempt_disable();                                      \
-       __flush_tlb_page((vma)->vm_mm->context.id, addr);       \
-       preempt_enable();                                       \
-} while(0)
-
-
-#define __flush_tlb_global()                   flush_tlb_all()
-#define flush_tlb()                            flush_tlb_all()
-#define flush_tlb_kernel_range(start, end)     flush_tlb_all()
-
-#else
-
-#define flush_tlb()                            BUG()
-#define flush_tlb_all()                                BUG()
-#define flush_tlb_mm(mm)                       BUG()
-#define flush_tlb_page(vma,addr)               BUG()
-#define flush_tlb_range(mm,start,end)          BUG()
-#define flush_tlb_kernel_range(start, end)     BUG()
-
-#endif
-
-
-#endif /* _ASM_TLBFLUSH_H */
diff --git a/include/asm-frv/topology.h b/include/asm-frv/topology.h
deleted file mode 100644 (file)
index 9427243..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _ASM_TOPOLOGY_H
-#define _ASM_TOPOLOGY_H
-
-#ifdef CONFIG_NUMA
-
-#error NUMA not supported yet
-
-#endif /* CONFIG_NUMA */
-
-#include <asm-generic/topology.h>
-
-#endif /* _ASM_TOPOLOGY_H */
diff --git a/include/asm-frv/types.h b/include/asm-frv/types.h
deleted file mode 100644 (file)
index 613bf1e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* types.h: FRV types
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_TYPES_H
-#define _ASM_TYPES_H
-
-#include <asm-generic/int-ll64.h>
-
-#ifndef __ASSEMBLY__
-
-typedef unsigned short umode_t;
-
-#endif /* __ASSEMBLY__ */
-
-/*
- * These aren't exported outside the kernel to avoid name space clashes
- */
-#ifdef __KERNEL__
-
-#define BITS_PER_LONG 32
-
-#ifndef __ASSEMBLY__
-
-/* Dma addresses are 32-bits wide.  */
-
-typedef u32 dma_addr_t;
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_TYPES_H */
diff --git a/include/asm-frv/uaccess.h b/include/asm-frv/uaccess.h
deleted file mode 100644 (file)
index 53650c9..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-/* uaccess.h: userspace accessor functions
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_UACCESS_H
-#define _ASM_UACCESS_H
-
-/*
- * User space memory access functions
- */
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <asm/segment.h>
-#include <asm/sections.h>
-
-#define HAVE_ARCH_UNMAPPED_AREA        /* we decide where to put mmaps */
-
-#define __ptr(x) ((unsigned long __force *)(x))
-
-#define VERIFY_READ    0
-#define VERIFY_WRITE   1
-
-#define __addr_ok(addr) ((unsigned long)(addr) < get_addr_limit())
-
-/*
- * check that a range of addresses falls within the current address limit
- */
-static inline int ___range_ok(unsigned long addr, unsigned long size)
-{
-#ifdef CONFIG_MMU
-       int flag = -EFAULT, tmp;
-
-       asm volatile (
-               "       addcc   %3,%2,%1,icc0   \n"     /* set C-flag if addr+size>4GB */
-               "       subcc.p %1,%4,gr0,icc1  \n"     /* jump if addr+size>limit */
-               "       bc      icc0,#0,0f      \n"
-               "       bhi     icc1,#0,0f      \n"
-               "       setlos  #0,%0           \n"     /* mark okay */
-               "0:                             \n"
-               : "=r"(flag), "=&r"(tmp)
-               : "r"(addr), "r"(size), "r"(get_addr_limit()), "0"(flag)
-               );
-
-       return flag;
-
-#else
-
-       if (addr < memory_start ||
-           addr > memory_end ||
-           size > memory_end - memory_start ||
-           addr + size > memory_end)
-               return -EFAULT;
-
-       return 0;
-#endif
-}
-
-#define __range_ok(addr,size) ___range_ok((unsigned long) (addr), (unsigned long) (size))
-
-#define access_ok(type,addr,size) (__range_ok((void __user *)(addr), (size)) == 0)
-#define __access_ok(addr,size) (__range_ok((addr), (size)) == 0)
-
-/*
- * The exception table consists of pairs of addresses: the first is the
- * address of an instruction that is allowed to fault, and the second is
- * the address at which the program should continue.  No registers are
- * modified, so it is entirely up to the continuation code to figure out
- * what to do.
- *
- * All the routines below use bits of fixup code that are out of line
- * with the main instruction path.  This means when everything is well,
- * we don't even have to jump over them.  Further, they do not intrude
- * on our cache or tlb entries.
- */
-struct exception_table_entry
-{
-       unsigned long insn, fixup;
-};
-
-/* Returns 0 if exception not found and fixup otherwise.  */
-extern unsigned long search_exception_table(unsigned long);
-
-
-/*
- * These are the main single-value transfer routines.  They automatically
- * use the right size if we just have the right pointer type.
- */
-#define __put_user(x, ptr)                                             \
-({                                                                     \
-       int __pu_err = 0;                                               \
-                                                                       \
-       typeof(*(ptr)) __pu_val = (x);                                  \
-       __chk_user_ptr(ptr);                                            \
-                                                                       \
-       switch (sizeof (*(ptr))) {                                      \
-       case 1:                                                         \
-               __put_user_asm(__pu_err, __pu_val, ptr, "b", "r");      \
-               break;                                                  \
-       case 2:                                                         \
-               __put_user_asm(__pu_err, __pu_val, ptr, "h", "r");      \
-               break;                                                  \
-       case 4:                                                         \
-               __put_user_asm(__pu_err, __pu_val, ptr, "",  "r");      \
-               break;                                                  \
-       case 8:                                                         \
-               __put_user_asm(__pu_err, __pu_val, ptr, "d", "e");      \
-               break;                                                  \
-       default:                                                        \
-               __pu_err = __put_user_bad();                            \
-               break;                                                  \
-       }                                                               \
-       __pu_err;                                                       \
-})
-
-#define put_user(x, ptr)                       \
-({                                             \
-       typeof(*(ptr)) __user *_p = (ptr);      \
-       int _e;                                 \
-                                               \
-       _e = __range_ok(_p, sizeof(*_p));       \
-       if (_e == 0)                            \
-               _e = __put_user((x), _p);       \
-       _e;                                     \
-})
-
-extern int __put_user_bad(void);
-
-/*
- * Tell gcc we read from memory instead of writing: this is because
- * we do not write to any memory gcc knows about, so there are no
- * aliasing issues.
- */
-
-#ifdef CONFIG_MMU
-
-#define __put_user_asm(err,x,ptr,dsize,constraint)                                     \
-do {                                                                                   \
-       asm volatile("1:        st"dsize"%I1    %2,%M1  \n"                             \
-                    "2:                                \n"                             \
-                    ".subsection 2                     \n"                             \
-                    "3:        setlos          %3,%0   \n"                             \
-                    "          bra             2b      \n"                             \
-                    ".previous                         \n"                             \
-                    ".section __ex_table,\"a\"         \n"                             \
-                    "          .balign         8       \n"                             \
-                    "          .long           1b,3b   \n"                             \
-                    ".previous"                                                        \
-                    : "=r" (err)                                                       \
-                    : "m" (*__ptr(ptr)), constraint (x), "i"(-EFAULT), "0"(err)        \
-                    : "memory");                                                       \
-} while (0)
-
-#else
-
-#define __put_user_asm(err,x,ptr,bwl,con)      \
-do {                                           \
-       asm("   st"bwl"%I0      %1,%M0  \n"     \
-           "   membar                  \n"     \
-           :                                   \
-           : "m" (*__ptr(ptr)), con (x)        \
-           : "memory");                        \
-} while (0)
-
-#endif
-
-/*****************************************************************************/
-/*
- *
- */
-#define __get_user(x, ptr)                                             \
-({                                                                     \
-       int __gu_err = 0;                                               \
-       __chk_user_ptr(ptr);                                            \
-                                                                       \
-       switch (sizeof(*(ptr))) {                                       \
-       case 1: {                                                       \
-               unsigned char __gu_val;                                 \
-               __get_user_asm(__gu_err, __gu_val, ptr, "ub", "=r");    \
-               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
-               break;                                                  \
-       }                                                               \
-       case 2: {                                                       \
-               unsigned short __gu_val;                                \
-               __get_user_asm(__gu_err, __gu_val, ptr, "uh", "=r");    \
-               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
-               break;                                                  \
-       }                                                               \
-       case 4: {                                                       \
-               unsigned int __gu_val;                                  \
-               __get_user_asm(__gu_err, __gu_val, ptr, "", "=r");      \
-               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
-               break;                                                  \
-       }                                                               \
-       case 8: {                                                       \
-               unsigned long long __gu_val;                            \
-               __get_user_asm(__gu_err, __gu_val, ptr, "d", "=e");     \
-               (x) = *(__force __typeof__(*(ptr)) *) &__gu_val;        \
-               break;                                                  \
-       }                                                               \
-       default:                                                        \
-               __gu_err = __get_user_bad();                            \
-               break;                                                  \
-       }                                                               \
-       __gu_err;                                                       \
-})
-
-#define get_user(x, ptr)                       \
-({                                             \
-       const typeof(*(ptr)) __user *_p = (ptr);\
-       int _e;                                 \
-                                               \
-       _e = __range_ok(_p, sizeof(*_p));       \
-       if (likely(_e == 0))                    \
-               _e = __get_user((x), _p);       \
-       else                                    \
-               (x) = (typeof(x)) 0;            \
-       _e;                                     \
-})
-
-extern int __get_user_bad(void);
-
-#ifdef CONFIG_MMU
-
-#define __get_user_asm(err,x,ptr,dtype,constraint)     \
-do {                                                   \
-       asm("1:         ld"dtype"%I2    %M2,%1  \n"     \
-           "2:                                 \n"     \
-           ".subsection 2                      \n"     \
-           "3:         setlos          %3,%0   \n"     \
-           "           setlos          #0,%1   \n"     \
-           "           bra             2b      \n"     \
-           ".previous                          \n"     \
-           ".section __ex_table,\"a\"          \n"     \
-           "           .balign         8       \n"     \
-           "           .long           1b,3b   \n"     \
-           ".previous"                                 \
-           : "=r" (err), constraint (x)                \
-           : "m" (*__ptr(ptr)), "i"(-EFAULT), "0"(err) \
-           );                                          \
-} while(0)
-
-#else
-
-#define __get_user_asm(err,x,ptr,bwl,con)      \
-       asm("   ld"bwl"%I1      %M1,%0  \n"     \
-           "   membar                  \n"     \
-           : con(x)                            \
-           : "m" (*__ptr(ptr)))
-
-#endif
-
-/*****************************************************************************/
-/*
- *
- */
-#define ____force(x) (__force void *)(void __user *)(x)
-#ifdef CONFIG_MMU
-extern long __memset_user(void *dst, unsigned long count);
-extern long __memcpy_user(void *dst, const void *src, unsigned long count);
-
-#define clear_user(dst,count)                  __memset_user(____force(dst), (count))
-#define __copy_from_user_inatomic(to, from, n) __memcpy_user((to), ____force(from), (n))
-#define __copy_to_user_inatomic(to, from, n)   __memcpy_user(____force(to), (from), (n))
-
-#else
-
-#define clear_user(dst,count)                  (memset(____force(dst), 0, (count)), 0)
-#define __copy_from_user_inatomic(to, from, n) (memcpy((to), ____force(from), (n)), 0)
-#define __copy_to_user_inatomic(to, from, n)   (memcpy(____force(to), (from), (n)), 0)
-
-#endif
-
-#define __clear_user clear_user
-
-static inline unsigned long __must_check
-__copy_to_user(void __user *to, const void *from, unsigned long n)
-{
-       might_sleep();
-       return __copy_to_user_inatomic(to, from, n);
-}
-
-static inline unsigned long
-__copy_from_user(void *to, const void __user *from, unsigned long n)
-{
-       might_sleep();
-       return __copy_from_user_inatomic(to, from, n);
-}
-
-static inline long copy_from_user(void *to, const void __user *from, unsigned long n)
-{
-       unsigned long ret = n;
-
-       if (likely(__access_ok(from, n)))
-               ret = __copy_from_user(to, from, n);
-
-       if (unlikely(ret != 0))
-               memset(to + (n - ret), 0, ret);
-
-       return ret;
-}
-
-static inline long copy_to_user(void __user *to, const void *from, unsigned long n)
-{
-       return likely(__access_ok(to, n)) ? __copy_to_user(to, from, n) : n;
-}
-
-extern long strncpy_from_user(char *dst, const char __user *src, long count);
-extern long strnlen_user(const char __user *src, long count);
-
-#define strlen_user(str) strnlen_user(str, 32767)
-
-extern unsigned long search_exception_table(unsigned long addr);
-
-#endif /* _ASM_UACCESS_H */
diff --git a/include/asm-frv/ucontext.h b/include/asm-frv/ucontext.h
deleted file mode 100644 (file)
index 8d8c0c9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _ASM_UCONTEXT_H
-#define _ASM_UCONTEXT_H
-
-struct ucontext {
-       unsigned long           uc_flags;
-       struct ucontext         *uc_link;
-       stack_t                 uc_stack;
-       struct sigcontext       uc_mcontext;
-       sigset_t                uc_sigmask;     /* mask last for extensibility */
-};
-
-#endif
diff --git a/include/asm-frv/unaligned.h b/include/asm-frv/unaligned.h
deleted file mode 100644 (file)
index 6c61c05..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* unaligned.h: unaligned access handler
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_UNALIGNED_H
-#define _ASM_UNALIGNED_H
-
-#include <linux/unaligned/le_byteshift.h>
-#include <linux/unaligned/be_struct.h>
-#include <linux/unaligned/generic.h>
-
-#define get_unaligned  __get_unaligned_be
-#define put_unaligned  __put_unaligned_be
-
-#endif /* _ASM_UNALIGNED_H */
diff --git a/include/asm-frv/unistd.h b/include/asm-frv/unistd.h
deleted file mode 100644 (file)
index edcfaf5..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-#ifndef _ASM_UNISTD_H_
-#define _ASM_UNISTD_H_
-
-/*
- * This file contains the system call numbers.
- */
-
-#define __NR_restart_syscall      0
-#define __NR_exit                1
-#define __NR_fork                2
-#define __NR_read                3
-#define __NR_write               4
-#define __NR_open                5
-#define __NR_close               6
-#define __NR_waitpid             7
-#define __NR_creat               8
-#define __NR_link                9
-#define __NR_unlink             10
-#define __NR_execve             11
-#define __NR_chdir              12
-#define __NR_time               13
-#define __NR_mknod              14
-#define __NR_chmod              15
-#define __NR_lchown             16
-#define __NR_break              17
-#define __NR_oldstat            18
-#define __NR_lseek              19
-#define __NR_getpid             20
-#define __NR_mount              21
-#define __NR_umount             22
-#define __NR_setuid             23
-#define __NR_getuid             24
-#define __NR_stime              25
-#define __NR_ptrace             26
-#define __NR_alarm              27
-#define __NR_oldfstat           28
-#define __NR_pause              29
-#define __NR_utime              30
-#define __NR_stty               31
-#define __NR_gtty               32
-#define __NR_access             33
-#define __NR_nice               34
-#define __NR_ftime              35
-#define __NR_sync               36
-#define __NR_kill               37
-#define __NR_rename             38
-#define __NR_mkdir              39
-#define __NR_rmdir              40
-#define __NR_dup                41
-#define __NR_pipe               42
-#define __NR_times              43
-#define __NR_prof               44
-#define __NR_brk                45
-#define __NR_setgid             46
-#define __NR_getgid             47
-#define __NR_signal             48
-#define __NR_geteuid            49
-#define __NR_getegid            50
-#define __NR_acct               51
-#define __NR_umount2            52
-#define __NR_lock               53
-#define __NR_ioctl              54
-#define __NR_fcntl              55
-#define __NR_mpx                56
-#define __NR_setpgid            57
-#define __NR_ulimit             58
-// #define __NR_oldolduname     /* 59 */ obsolete
-#define __NR_umask              60
-#define __NR_chroot             61
-#define __NR_ustat              62
-#define __NR_dup2               63
-#define __NR_getppid            64
-#define __NR_getpgrp            65
-#define __NR_setsid             66
-#define __NR_sigaction          67
-#define __NR_sgetmask           68
-#define __NR_ssetmask           69
-#define __NR_setreuid           70
-#define __NR_setregid           71
-#define __NR_sigsuspend                 72
-#define __NR_sigpending                 73
-#define __NR_sethostname        74
-#define __NR_setrlimit          75
-#define __NR_getrlimit          76     /* Back compatible 2Gig limited rlimit */
-#define __NR_getrusage          77
-#define __NR_gettimeofday       78
-#define __NR_settimeofday       79
-#define __NR_getgroups          80
-#define __NR_setgroups          81
-#define __NR_select             82
-#define __NR_symlink            83
-#define __NR_oldlstat           84
-#define __NR_readlink           85
-#define __NR_uselib             86
-#define __NR_swapon             87
-#define __NR_reboot             88
-#define __NR_readdir            89
-// #define __NR_mmap            90     /* obsolete - not implemented */
-#define __NR_munmap             91
-#define __NR_truncate           92
-#define __NR_ftruncate          93
-#define __NR_fchmod             94
-#define __NR_fchown             95
-#define __NR_getpriority        96
-#define __NR_setpriority        97
-// #define __NR_profil          /* 98 */ obsolete
-#define __NR_statfs             99
-#define __NR_fstatfs           100
-// #define __NR_ioperm         /* 101 */ not supported
-#define __NR_socketcall                102
-#define __NR_syslog            103
-#define __NR_setitimer         104
-#define __NR_getitimer         105
-#define __NR_stat              106
-#define __NR_lstat             107
-#define __NR_fstat             108
-// #define __NR_olduname               /* 109 */ obsolete
-// #define __NR_iopl           /* 110 */ not supported
-#define __NR_vhangup           111
-// #define __NR_idle           /* 112 */ Obsolete
-// #define __NR_vm86old                /* 113 */ not supported
-#define __NR_wait4             114
-#define __NR_swapoff           115
-#define __NR_sysinfo           116
-#define __NR_ipc               117
-#define __NR_fsync             118
-#define __NR_sigreturn         119
-#define __NR_clone             120
-#define __NR_setdomainname     121
-#define __NR_uname             122
-// #define __NR_modify_ldt     /* 123 */ not supported
-#define __NR_cacheflush                123
-#define __NR_adjtimex          124
-#define __NR_mprotect          125
-#define __NR_sigprocmask       126
-#define __NR_create_module     127
-#define __NR_init_module       128
-#define __NR_delete_module     129
-#define __NR_get_kernel_syms   130
-#define __NR_quotactl          131
-#define __NR_getpgid           132
-#define __NR_fchdir            133
-#define __NR_bdflush           134
-#define __NR_sysfs             135
-#define __NR_personality       136
-#define __NR_afs_syscall       137 /* Syscall for Andrew File System */
-#define __NR_setfsuid          138
-#define __NR_setfsgid          139
-#define __NR__llseek           140
-#define __NR_getdents          141
-#define __NR__newselect                142
-#define __NR_flock             143
-#define __NR_msync             144
-#define __NR_readv             145
-#define __NR_writev            146
-#define __NR_getsid            147
-#define __NR_fdatasync         148
-#define __NR__sysctl           149
-#define __NR_mlock             150
-#define __NR_munlock           151
-#define __NR_mlockall          152
-#define __NR_munlockall                153
-#define __NR_sched_setparam            154
-#define __NR_sched_getparam            155
-#define __NR_sched_setscheduler                156
-#define __NR_sched_getscheduler                157
-#define __NR_sched_yield               158
-#define __NR_sched_get_priority_max    159
-#define __NR_sched_get_priority_min    160
-#define __NR_sched_rr_get_interval     161
-#define __NR_nanosleep         162
-#define __NR_mremap            163
-#define __NR_setresuid         164
-#define __NR_getresuid         165
-// #define __NR_vm86           /* 166 */ not supported
-#define __NR_query_module      167
-#define __NR_poll              168
-#define __NR_nfsservctl                169
-#define __NR_setresgid         170
-#define __NR_getresgid         171
-#define __NR_prctl             172
-#define __NR_rt_sigreturn      173
-#define __NR_rt_sigaction      174
-#define __NR_rt_sigprocmask    175
-#define __NR_rt_sigpending     176
-#define __NR_rt_sigtimedwait   177
-#define __NR_rt_sigqueueinfo   178
-#define __NR_rt_sigsuspend     179
-#define __NR_pread64           180
-#define __NR_pwrite64          181
-#define __NR_chown             182
-#define __NR_getcwd            183
-#define __NR_capget            184
-#define __NR_capset            185
-#define __NR_sigaltstack       186
-#define __NR_sendfile          187
-#define __NR_getpmsg           188     /* some people actually want streams */
-#define __NR_putpmsg           189     /* some people actually want streams */
-#define __NR_vfork             190
-#define __NR_ugetrlimit                191     /* SuS compliant getrlimit */
-#define __NR_mmap2             192
-#define __NR_truncate64                193
-#define __NR_ftruncate64       194
-#define __NR_stat64            195
-#define __NR_lstat64           196
-#define __NR_fstat64           197
-#define __NR_lchown32          198
-#define __NR_getuid32          199
-#define __NR_getgid32          200
-#define __NR_geteuid32         201
-#define __NR_getegid32         202
-#define __NR_setreuid32                203
-#define __NR_setregid32                204
-#define __NR_getgroups32       205
-#define __NR_setgroups32       206
-#define __NR_fchown32          207
-#define __NR_setresuid32       208
-#define __NR_getresuid32       209
-#define __NR_setresgid32       210
-#define __NR_getresgid32       211
-#define __NR_chown32           212
-#define __NR_setuid32          213
-#define __NR_setgid32          214
-#define __NR_setfsuid32                215
-#define __NR_setfsgid32                216
-#define __NR_pivot_root                217
-#define __NR_mincore           218
-#define __NR_madvise           219
-
-#define __NR_getdents64                220
-#define __NR_fcntl64           221
-#define __NR_security          223     /* syscall for security modules */
-#define __NR_gettid            224
-#define __NR_readahead         225
-#define __NR_setxattr          226
-#define __NR_lsetxattr         227
-#define __NR_fsetxattr         228
-#define __NR_getxattr          229
-#define __NR_lgetxattr         230
-#define __NR_fgetxattr         231
-#define __NR_listxattr         232
-#define __NR_llistxattr                233
-#define __NR_flistxattr                234
-#define __NR_removexattr       235
-#define __NR_lremovexattr      236
-#define __NR_fremovexattr      237
-#define __NR_tkill             238
-#define __NR_sendfile64                239
-#define __NR_futex             240
-#define __NR_sched_setaffinity 241
-#define __NR_sched_getaffinity 242
-#define __NR_set_thread_area   243
-#define __NR_get_thread_area   244
-#define __NR_io_setup          245
-#define __NR_io_destroy                246
-#define __NR_io_getevents      247
-#define __NR_io_submit         248
-#define __NR_io_cancel         249
-#define __NR_fadvise64         250
-
-#define __NR_exit_group                252
-#define __NR_lookup_dcookie    253
-#define __NR_epoll_create      254
-#define __NR_epoll_ctl         255
-#define __NR_epoll_wait                256
-#define __NR_remap_file_pages  257
-#define __NR_set_tid_address   258
-#define __NR_timer_create      259
-#define __NR_timer_settime     (__NR_timer_create+1)
-#define __NR_timer_gettime     (__NR_timer_create+2)
-#define __NR_timer_getoverrun  (__NR_timer_create+3)
-#define __NR_timer_delete      (__NR_timer_create+4)
-#define __NR_clock_settime     (__NR_timer_create+5)
-#define __NR_clock_gettime     (__NR_timer_create+6)
-#define __NR_clock_getres      (__NR_timer_create+7)
-#define __NR_clock_nanosleep   (__NR_timer_create+8)
-#define __NR_statfs64          268
-#define __NR_fstatfs64         269
-#define __NR_tgkill            270
-#define __NR_utimes            271
-#define __NR_fadvise64_64      272
-#define __NR_vserver           273
-#define __NR_mbind             274
-#define __NR_get_mempolicy     275
-#define __NR_set_mempolicy     276
-#define __NR_mq_open           277
-#define __NR_mq_unlink         (__NR_mq_open+1)
-#define __NR_mq_timedsend      (__NR_mq_open+2)
-#define __NR_mq_timedreceive   (__NR_mq_open+3)
-#define __NR_mq_notify         (__NR_mq_open+4)
-#define __NR_mq_getsetattr     (__NR_mq_open+5)
-#define __NR_kexec_load                283
-#define __NR_waitid            284
-/* #define __NR_sys_setaltroot 285 */
-#define __NR_add_key           286
-#define __NR_request_key       287
-#define __NR_keyctl            288
-#define __NR_ioprio_set                289
-#define __NR_ioprio_get                290
-#define __NR_inotify_init      291
-#define __NR_inotify_add_watch 292
-#define __NR_inotify_rm_watch  293
-#define __NR_migrate_pages     294
-#define __NR_openat            295
-#define __NR_mkdirat           296
-#define __NR_mknodat           297
-#define __NR_fchownat          298
-#define __NR_futimesat         299
-#define __NR_fstatat64         300
-#define __NR_unlinkat          301
-#define __NR_renameat          302
-#define __NR_linkat            303
-#define __NR_symlinkat         304
-#define __NR_readlinkat                305
-#define __NR_fchmodat          306
-#define __NR_faccessat         307
-#define __NR_pselect6          308
-#define __NR_ppoll             309
-#define __NR_unshare           310
-#define __NR_set_robust_list   311
-#define __NR_get_robust_list   312
-#define __NR_splice            313
-#define __NR_sync_file_range   314
-#define __NR_tee               315
-#define __NR_vmsplice          316
-#define __NR_move_pages                317
-#define __NR_getcpu            318
-#define __NR_epoll_pwait       319
-#define __NR_utimensat         320
-#define __NR_signalfd          321
-#define __NR_timerfd_create    322
-#define __NR_eventfd           323
-#define __NR_fallocate         324
-#define __NR_timerfd_settime   325
-#define __NR_timerfd_gettime   326
-#define __NR_signalfd4         327
-#define __NR_eventfd2          328
-#define __NR_epoll_create1     329
-#define __NR_dup3              330
-#define __NR_pipe2             331
-#define __NR_inotify_init1     332
-
-#ifdef __KERNEL__
-
-#define NR_syscalls 333
-
-#define __ARCH_WANT_IPC_PARSE_VERSION
-/* #define __ARCH_WANT_OLD_READDIR */
-#define __ARCH_WANT_OLD_STAT
-#define __ARCH_WANT_STAT64
-#define __ARCH_WANT_SYS_ALARM
-/* #define __ARCH_WANT_SYS_GETHOSTNAME */
-#define __ARCH_WANT_SYS_PAUSE
-/* #define __ARCH_WANT_SYS_SGETMASK */
-/* #define __ARCH_WANT_SYS_SIGNAL */
-#define __ARCH_WANT_SYS_TIME
-#define __ARCH_WANT_SYS_UTIME
-#define __ARCH_WANT_SYS_WAITPID
-#define __ARCH_WANT_SYS_SOCKETCALL
-#define __ARCH_WANT_SYS_FADVISE64
-#define __ARCH_WANT_SYS_GETPGRP
-#define __ARCH_WANT_SYS_LLSEEK
-#define __ARCH_WANT_SYS_NICE
-/* #define __ARCH_WANT_SYS_OLD_GETRLIMIT */
-#define __ARCH_WANT_SYS_OLDUMOUNT
-/* #define __ARCH_WANT_SYS_SIGPENDING */
-#define __ARCH_WANT_SYS_SIGPROCMASK
-#define __ARCH_WANT_SYS_RT_SIGACTION
-#define __ARCH_WANT_SYS_RT_SIGSUSPEND
-
-/*
- * "Conditional" syscalls
- *
- * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
- * but it doesn't work on all toolchains, so we just do it by hand
- */
-#ifndef cond_syscall
-#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
-#endif
-
-#endif /* __KERNEL__ */
-#endif /* _ASM_UNISTD_H_ */
diff --git a/include/asm-frv/user.h b/include/asm-frv/user.h
deleted file mode 100644 (file)
index 82fa8fa..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/* user.h: FR-V core file format stuff
- *
- * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_USER_H
-#define _ASM_USER_H
-
-#include <asm/page.h>
-#include <asm/registers.h>
-
-/* Core file format: The core file is written in such a way that gdb
- * can understand it and provide useful information to the user (under
- * linux we use the 'trad-core' bfd).  There are quite a number of
- * obstacles to being able to view the contents of the floating point
- * registers, and until these are solved you will not be able to view
- * the contents of them.  Actually, you can read in the core file and
- * look at the contents of the user struct to find out what the
- * floating point registers contain.
- *
- * The actual file contents are as follows:
- * UPAGE:
- *   1 page consisting of a user struct that tells gdb what is present
- *   in the file.  Directly after this is a copy of the task_struct,
- *   which is currently not used by gdb, but it may come in useful at
- *   some point.  All of the registers are stored as part of the
- *   upage.  The upage should always be only one page.
- *
- * DATA:
- *   The data area is stored.  We use current->end_text to
- *   current->brk to pick up all of the user variables, plus any
- *   memory that may have been malloced.  No attempt is made to
- *   determine if a page is demand-zero or if a page is totally
- *   unused, we just cover the entire range.  All of the addresses are
- *   rounded in such a way that an integral number of pages is
- *   written.
- *
- * STACK:
- *   We need the stack information in order to get a meaningful
- *   backtrace.  We need to write the data from (esp) to
- *   current->start_stack, so we round each of these off in order to
- *   be able to write an integer number of pages.  The minimum core
- *   file size is 3 pages, or 12288 bytes.
- */
-
-/* When the kernel dumps core, it starts by dumping the user struct -
- * this will be used by gdb to figure out where the data and stack segments
- *  are within the file, and what virtual addresses to use.
- */
-struct user {
-       /* We start with the registers, to mimic the way that "memory" is returned
-        * from the ptrace(3,...) function.  */
-       struct user_context     regs;
-
-       /* The rest of this junk is to help gdb figure out what goes where */
-       unsigned long           u_tsize;        /* Text segment size (pages). */
-       unsigned long           u_dsize;        /* Data segment size (pages). */
-       unsigned long           u_ssize;        /* Stack segment size (pages). */
-       unsigned long           start_code;     /* Starting virtual address of text. */
-       unsigned long           start_stack;    /* Starting virtual address of stack area.
-                                                * This is actually the bottom of the stack,
-                                                * the top of the stack is always found in the
-                                                * esp register.  */
-       long int                signal;         /* Signal that caused the core dump. */
-
-       unsigned long           magic;          /* To uniquely identify a core file */
-       char                    u_comm[32];     /* User command that was responsible */
-};
-
-#define NBPG                   PAGE_SIZE
-#define UPAGES                 1
-#define HOST_TEXT_START_ADDR   (u.start_code)
-#define HOST_STACK_END_ADDR    (u.start_stack + u.u_ssize * NBPG)
-
-#endif
diff --git a/include/asm-frv/vga.h b/include/asm-frv/vga.h
deleted file mode 100644 (file)
index a702c80..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* vga.h: VGA register stuff
- *
- * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#ifndef _ASM_VGA_H
-#define _ASM_VGA_H
-
-
-
-#endif /* _ASM_VGA_H */
diff --git a/include/asm-frv/virtconvert.h b/include/asm-frv/virtconvert.h
deleted file mode 100644 (file)
index 59788fa..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* virtconvert.h: virtual/physical/page address convertion
- *
- * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#ifndef _ASM_VIRTCONVERT_H
-#define _ASM_VIRTCONVERT_H
-
-/*
- * Macros used for converting between virtual and physical mappings.
- */
-
-#ifdef __KERNEL__
-
-#include <asm/setup.h>
-
-#ifdef CONFIG_MMU
-
-#define phys_to_virt(vaddr)    ((void *) ((unsigned long)(vaddr) + PAGE_OFFSET))
-#define virt_to_phys(vaddr)    ((unsigned long) (vaddr) - PAGE_OFFSET)
-
-#else
-
-#define phys_to_virt(vaddr)    ((void *) (vaddr))
-#define virt_to_phys(vaddr)    ((unsigned long) (vaddr))
-
-#endif
-
-#define virt_to_bus virt_to_phys
-#define bus_to_virt phys_to_virt
-
-#define __page_address(page)   (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
-#define page_to_phys(page)     virt_to_phys((void *)__page_address(page))
-
-#endif
-#endif
diff --git a/include/asm-frv/xor.h b/include/asm-frv/xor.h
deleted file mode 100644 (file)
index c82eb12..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/xor.h>
index 00f45ff081a63fc9f4401d2656346e1e5444f469..b0e63c672ebdf5a065ddea3374558a9638bc43c1 100644 (file)
@@ -80,56 +80,4 @@ extern void setup_per_cpu_areas(void);
 #define DECLARE_PER_CPU(type, name) extern PER_CPU_ATTRIBUTES \
                                        __typeof__(type) per_cpu_var(name)
 
-/*
- * Optional methods for optimized non-lvalue per-cpu variable access.
- *
- * @var can be a percpu variable or a field of it and its size should
- * equal char, int or long.  percpu_read() evaluates to a lvalue and
- * all others to void.
- *
- * These operations are guaranteed to be atomic w.r.t. preemption.
- * The generic versions use plain get/put_cpu_var().  Archs are
- * encouraged to implement single-instruction alternatives which don't
- * require preemption protection.
- */
-#ifndef percpu_read
-# define percpu_read(var)                                              \
-  ({                                                                   \
-       typeof(per_cpu_var(var)) __tmp_var__;                           \
-       __tmp_var__ = get_cpu_var(var);                                 \
-       put_cpu_var(var);                                               \
-       __tmp_var__;                                                    \
-  })
-#endif
-
-#define __percpu_generic_to_op(var, val, op)                           \
-do {                                                                   \
-       get_cpu_var(var) op val;                                        \
-       put_cpu_var(var);                                               \
-} while (0)
-
-#ifndef percpu_write
-# define percpu_write(var, val)                __percpu_generic_to_op(var, (val), =)
-#endif
-
-#ifndef percpu_add
-# define percpu_add(var, val)          __percpu_generic_to_op(var, (val), +=)
-#endif
-
-#ifndef percpu_sub
-# define percpu_sub(var, val)          __percpu_generic_to_op(var, (val), -=)
-#endif
-
-#ifndef percpu_and
-# define percpu_and(var, val)          __percpu_generic_to_op(var, (val), &=)
-#endif
-
-#ifndef percpu_or
-# define percpu_or(var, val)           __percpu_generic_to_op(var, (val), |=)
-#endif
-
-#ifndef percpu_xor
-# define percpu_xor(var, val)          __percpu_generic_to_op(var, (val), ^=)
-#endif
-
 #endif /* _ASM_GENERIC_PERCPU_H_ */
diff --git a/include/asm-mn10300/.gitignore b/include/asm-mn10300/.gitignore
deleted file mode 100644 (file)
index 0f87ba7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-proc
-unit
diff --git a/include/asm-mn10300/Kbuild b/include/asm-mn10300/Kbuild
deleted file mode 100644 (file)
index c68e168..0000000
+++ /dev/null
@@ -1 +0,0 @@
-include include/asm-generic/Kbuild.asm
diff --git a/include/asm-mn10300/atomic.h b/include/asm-mn10300/atomic.h
deleted file mode 100644 (file)
index bc06482..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/* MN10300 Atomic counter operations
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_ATOMIC_H
-#define _ASM_ATOMIC_H
-
-#ifdef CONFIG_SMP
-#error not SMP safe
-#endif
-
-/*
- * Atomic operations that C can't guarantee us.  Useful for
- * resource counting etc..
- */
-
-#define ATOMIC_INIT(i) { (i) }
-
-#ifdef __KERNEL__
-
-/**
- * atomic_read - read atomic variable
- * @v: pointer of type atomic_t
- *
- * Atomically reads the value of @v.  Note that the guaranteed
- * useful range of an atomic_t is only 24 bits.
- */
-#define atomic_read(v) ((v)->counter)
-
-/**
- * atomic_set - set atomic variable
- * @v: pointer of type atomic_t
- * @i: required value
- *
- * Atomically sets the value of @v to @i.  Note that the guaranteed
- * useful range of an atomic_t is only 24 bits.
- */
-#define atomic_set(v, i) (((v)->counter) = (i))
-
-#include <asm/system.h>
-
-/**
- * atomic_add_return - add integer to atomic variable
- * @i: integer value to add
- * @v: pointer of type atomic_t
- *
- * Atomically adds @i to @v and returns the result
- * Note that the guaranteed useful range of an atomic_t is only 24 bits.
- */
-static inline int atomic_add_return(int i, atomic_t *v)
-{
-       unsigned long flags;
-       int temp;
-
-       local_irq_save(flags);
-       temp = v->counter;
-       temp += i;
-       v->counter = temp;
-       local_irq_restore(flags);
-
-       return temp;
-}
-
-/**
- * atomic_sub_return - subtract integer from atomic variable
- * @i: integer value to subtract
- * @v: pointer of type atomic_t
- *
- * Atomically subtracts @i from @v and returns the result
- * Note that the guaranteed useful range of an atomic_t is only 24 bits.
- */
-static inline int atomic_sub_return(int i, atomic_t *v)
-{
-       unsigned long flags;
-       int temp;
-
-       local_irq_save(flags);
-       temp = v->counter;
-       temp -= i;
-       v->counter = temp;
-       local_irq_restore(flags);
-
-       return temp;
-}
-
-static inline int atomic_add_negative(int i, atomic_t *v)
-{
-       return atomic_add_return(i, v) < 0;
-}
-
-static inline void atomic_add(int i, atomic_t *v)
-{
-       atomic_add_return(i, v);
-}
-
-static inline void atomic_sub(int i, atomic_t *v)
-{
-       atomic_sub_return(i, v);
-}
-
-static inline void atomic_inc(atomic_t *v)
-{
-       atomic_add_return(1, v);
-}
-
-static inline void atomic_dec(atomic_t *v)
-{
-       atomic_sub_return(1, v);
-}
-
-#define atomic_dec_return(v)           atomic_sub_return(1, (v))
-#define atomic_inc_return(v)           atomic_add_return(1, (v))
-
-#define atomic_sub_and_test(i, v)      (atomic_sub_return((i), (v)) == 0)
-#define atomic_dec_and_test(v)         (atomic_sub_return(1, (v)) == 0)
-#define atomic_inc_and_test(v)         (atomic_add_return(1, (v)) == 0)
-
-#define atomic_add_unless(v, a, u)                             \
-({                                                             \
-       int c, old;                                             \
-       c = atomic_read(v);                                     \
-       while (c != (u) && (old = atomic_cmpxchg((v), c, c + (a))) != c) \
-               c = old;                                        \
-       c != (u);                                               \
-})
-
-#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
-
-static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
-{
-       unsigned long flags;
-
-       mask = ~mask;
-       local_irq_save(flags);
-       *addr &= mask;
-       local_irq_restore(flags);
-}
-
-#define atomic_xchg(ptr, v)            (xchg(&(ptr)->counter, (v)))
-#define atomic_cmpxchg(v, old, new)    (cmpxchg(&((v)->counter), (old), (new)))
-
-/* Atomic operations are already serializing on MN10300??? */
-#define smp_mb__before_atomic_dec()    barrier()
-#define smp_mb__after_atomic_dec()     barrier()
-#define smp_mb__before_atomic_inc()    barrier()
-#define smp_mb__after_atomic_inc()     barrier()
-
-#include <asm-generic/atomic.h>
-
-#endif /* __KERNEL__ */
-#endif /* _ASM_ATOMIC_H */
diff --git a/include/asm-mn10300/auxvec.h b/include/asm-mn10300/auxvec.h
deleted file mode 100644 (file)
index 4fdb60b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef _ASM_AUXVEC_H
-#define _ASM_AUXVEC_H
-
-#endif
diff --git a/include/asm-mn10300/bitops.h b/include/asm-mn10300/bitops.h
deleted file mode 100644 (file)
index 0b610f4..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/* MN10300 bit operations
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- *
- * These have to be done with inline assembly: that way the bit-setting
- * is guaranteed to be atomic. All bit operations return 0 if the bit
- * was cleared before the operation and != 0 if it was not.
- *
- * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1).
- */
-#ifndef __ASM_BITOPS_H
-#define __ASM_BITOPS_H
-
-#include <asm/cpu-regs.h>
-
-#define smp_mb__before_clear_bit()     barrier()
-#define smp_mb__after_clear_bit()      barrier()
-
-/*
- * set bit
- */
-#define __set_bit(nr, addr)                                    \
-({                                                             \
-       volatile unsigned char *_a = (unsigned char *)(addr);   \
-       const unsigned shift = (nr) & 7;                        \
-       _a += (nr) >> 3;                                        \
-                                                               \
-       asm volatile("bset %2,(%1) # set_bit reg"               \
-                    : "=m"(*_a)                                \
-                    : "a"(_a), "d"(1 << shift),  "m"(*_a)      \
-                    : "memory", "cc");                         \
-})
-
-#define set_bit(nr, addr) __set_bit((nr), (addr))
-
-/*
- * clear bit
- */
-#define ___clear_bit(nr, addr)                                 \
-({                                                             \
-       volatile unsigned char *_a = (unsigned char *)(addr);   \
-       const unsigned shift = (nr) & 7;                        \
-       _a += (nr) >> 3;                                        \
-                                                               \
-       asm volatile("bclr %2,(%1) # clear_bit reg"             \
-                    : "=m"(*_a)                                \
-                    : "a"(_a), "d"(1 << shift), "m"(*_a)       \
-                    : "memory", "cc");                         \
-})
-
-#define clear_bit(nr, addr) ___clear_bit((nr), (addr))
-
-
-static inline void __clear_bit(int nr, volatile void *addr)
-{
-       unsigned int *a = (unsigned int *) addr;
-       int mask;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 0x1f);
-       *a &= ~mask;
-}
-
-/*
- * test bit
- */
-static inline int test_bit(int nr, const volatile void *addr)
-{
-       return 1UL & (((const unsigned int *) addr)[nr >> 5] >> (nr & 31));
-}
-
-/*
- * change bit
- */
-static inline void __change_bit(int nr, volatile void *addr)
-{
-       int     mask;
-       unsigned int *a = (unsigned int *) addr;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 0x1f);
-       *a ^= mask;
-}
-
-extern void change_bit(int nr, volatile void *addr);
-
-/*
- * test and set bit
- */
-#define __test_and_set_bit(nr,addr)                            \
-({                                                             \
-       volatile unsigned char *_a = (unsigned char *)(addr);   \
-       const unsigned shift = (nr) & 7;                        \
-       unsigned epsw;                                          \
-       _a += (nr) >> 3;                                        \
-                                                               \
-       asm volatile("bset %3,(%2) # test_set_bit reg\n"        \
-                    "mov epsw,%1"                              \
-                    : "=m"(*_a), "=d"(epsw)                    \
-                    : "a"(_a), "d"(1 << shift), "m"(*_a)       \
-                    : "memory", "cc");                         \
-                                                               \
-       !(epsw & EPSW_FLAG_Z);                                  \
-})
-
-#define test_and_set_bit(nr, addr) __test_and_set_bit((nr), (addr))
-
-/*
- * test and clear bit
- */
-#define __test_and_clear_bit(nr, addr)                         \
-({                                                             \
-        volatile unsigned char *_a = (unsigned char *)(addr);  \
-       const unsigned shift = (nr) & 7;                        \
-       unsigned epsw;                                          \
-       _a += (nr) >> 3;                                        \
-                                                               \
-       asm volatile("bclr %3,(%2) # test_clear_bit reg\n"      \
-                    "mov epsw,%1"                              \
-                    : "=m"(*_a), "=d"(epsw)                    \
-                    : "a"(_a), "d"(1 << shift), "m"(*_a)       \
-                    : "memory", "cc");                         \
-                                                               \
-       !(epsw & EPSW_FLAG_Z);                                  \
-})
-
-#define test_and_clear_bit(nr, addr) __test_and_clear_bit((nr), (addr))
-
-/*
- * test and change bit
- */
-static inline int __test_and_change_bit(int nr, volatile void *addr)
-{
-       int     mask, retval;
-       unsigned int *a = (unsigned int *)addr;
-
-       a += nr >> 5;
-       mask = 1 << (nr & 0x1f);
-       retval = (mask & *a) != 0;
-       *a ^= mask;
-
-       return retval;
-}
-
-extern int test_and_change_bit(int nr, volatile void *addr);
-
-#include <asm-generic/bitops/lock.h>
-
-#ifdef __KERNEL__
-
-/**
- * __ffs - find first bit set
- * @x: the word to search
- *
- * - return 31..0 to indicate bit 31..0 most least significant bit set
- * - if no bits are set in x, the result is undefined
- */
-static inline __attribute__((const))
-unsigned long __ffs(unsigned long x)
-{
-       int bit;
-       asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x));
-       return bit;
-}
-
-/*
- * special slimline version of fls() for calculating ilog2_u32()
- * - note: no protection against n == 0
- */
-static inline __attribute__((const))
-int __ilog2_u32(u32 n)
-{
-       int bit;
-       asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(n));
-       return bit;
-}
-
-/**
- * fls - find last bit set
- * @x: the word to search
- *
- * This is defined the same way as ffs:
- * - return 32..1 to indicate bit 31..0 most significant bit set
- * - return 0 to indicate no bits set
- */
-static inline __attribute__((const))
-int fls(int x)
-{
-       return (x != 0) ? __ilog2_u32(x) + 1 : 0;
-}
-
-/**
- * __fls - find last (most-significant) set bit in a long word
- * @word: the word to search
- *
- * Undefined if no set bit exists, so code should check against 0 first.
- */
-static inline unsigned long __fls(unsigned long word)
-{
-       return __ilog2_u32(word);
-}
-
-/**
- * ffs - find first bit set
- * @x: the word to search
- *
- * - return 32..1 to indicate bit 31..0 most least significant bit set
- * - return 0 to indicate no bits set
- */
-static inline __attribute__((const))
-int ffs(int x)
-{
-       /* Note: (x & -x) gives us a mask that is the least significant
-        * (rightmost) 1-bit of the value in x.
-        */
-       return fls(x & -x);
-}
-
-#include <asm-generic/bitops/ffz.h>
-#include <asm-generic/bitops/fls64.h>
-#include <asm-generic/bitops/find.h>
-#include <asm-generic/bitops/sched.h>
-#include <asm-generic/bitops/hweight.h>
-
-#define ext2_set_bit_atomic(lock, nr, addr) \
-       test_and_set_bit((nr) ^ 0x18, (addr))
-#define ext2_clear_bit_atomic(lock, nr, addr) \
-       test_and_clear_bit((nr) ^ 0x18, (addr))
-
-#include <asm-generic/bitops/ext2-non-atomic.h>
-#include <asm-generic/bitops/minix-le.h>
-
-#endif /* __KERNEL__ */
-#endif /* __ASM_BITOPS_H */
diff --git a/include/asm-mn10300/bug.h b/include/asm-mn10300/bug.h
deleted file mode 100644 (file)
index 4fcf338..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* MN10300 Kernel bug reporting
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_BUG_H
-#define _ASM_BUG_H
-
-/*
- * Tell the user there is some problem.
- */
-#define _debug_bug_trap()                                      \
-do {                                                           \
-       asm volatile(                                           \
-               "       syscall 15                      \n"     \
-               "0:                                     \n"     \
-               "       .section __bug_table,\"a\"      \n"     \
-               "       .long 0b,%0,%1                  \n"     \
-               "       .previous                       \n"     \
-               :                                               \
-               : "i"(__FILE__), "i"(__LINE__)                  \
-               );                                              \
-} while (0)
-
-#define BUG() _debug_bug_trap()
-
-#define HAVE_ARCH_BUG
-#include <asm-generic/bug.h>
-
-#endif /* _ASM_BUG_H */
diff --git a/include/asm-mn10300/bugs.h b/include/asm-mn10300/bugs.h
deleted file mode 100644 (file)
index 31c8bc5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* MN10300 Checks for architecture-dependent bugs
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_BUGS_H
-#define _ASM_BUGS_H
-
-#include <asm/processor.h>
-
-static inline void __init check_bugs(void)
-{
-}
-
-#endif /* _ASM_BUGS_H */
diff --git a/include/asm-mn10300/busctl-regs.h b/include/asm-mn10300/busctl-regs.h
deleted file mode 100644 (file)
index 1632aef..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/* AM33v2 on-board bus controller registers
- *
- * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_BUSCTL_REGS_H
-#define _ASM_BUSCTL_REGS_H
-
-#include <asm/cpu-regs.h>
-
-#ifdef __KERNEL__
-
-/* bus controller registers */
-#define BCCR                   __SYSREG(0xc0002000, u32)       /* bus controller control reg */
-#define BCCR_B0AD              0x00000003      /* block 0 (80000000-83ffffff) bus allocation */
-#define BCCR_B1AD              0x0000000c      /* block 1 (84000000-87ffffff) bus allocation */
-#define BCCR_B2AD              0x00000030      /* block 2 (88000000-8bffffff) bus allocation */
-#define BCCR_B3AD              0x000000c0      /* block 3 (8c000000-8fffffff) bus allocation */
-#define BCCR_B4AD              0x00000300      /* block 4 (90000000-93ffffff) bus allocation */
-#define BCCR_B5AD              0x00000c00      /* block 5 (94000000-97ffffff) bus allocation */
-#define BCCR_B6AD              0x00003000      /* block 6 (98000000-9bffffff) bus allocation */
-#define BCCR_B7AD              0x0000c000      /* block 7 (9c000000-9fffffff) bus allocation */
-#define BCCR_BxAD_EXBUS                0x0             /* - direct to system bus controller */
-#define BCCR_BxAD_OPEXBUS      0x1             /* - direct to memory bus controller */
-#define BCCR_BxAD_OCMBUS       0x2             /* - direct to on chip memory */
-#define BCCR_API               0x00070000      /* bus arbitration priority */
-#define BCCR_API_DMACICD       0x00000000      /* - DMA > CI > CD */
-#define BCCR_API_DMACDCI       0x00010000      /* - DMA > CD > CI */
-#define BCCR_API_CICDDMA       0x00020000      /* - CI > CD > DMA */
-#define BCCR_API_CDCIDMA       0x00030000      /* - CD > CI > DMA */
-#define BCCR_API_ROUNDROBIN    0x00040000      /* - round robin */
-#define BCCR_BEPRI_DMACICD     0x00c00000      /* bus error address priority */
-#define BCCR_BEPRI_DMACDCI     0x00000000      /* - DMA > CI > CD */
-#define BCCR_BEPRI_CICDDMA     0x00400000      /* - DMA > CD > CI */
-#define BCCR_BEPRI_CDCIDMA     0x00800000      /* - CI > CD > DMA */
-#define BCCR_BEPRI             0x00c00000      /* - CD > CI > DMA */
-#define BCCR_TMON              0x03000000      /* timeout value settings */
-#define BCCR_TMON_16IOCLK      0x00000000      /* - 16 IOCLK cycles */
-#define BCCR_TMON_256IOCLK     0x01000000      /* - 256 IOCLK cycles */
-#define BCCR_TMON_4096IOCLK    0x02000000      /* - 4096 IOCLK cycles */
-#define BCCR_TMON_65536IOCLK   0x03000000      /* - 65536 IOCLK cycles */
-#define BCCR_TMOE              0x10000000      /* timeout detection enable */
-
-#define BCBERR                 __SYSREG(0xc0002010, u32)       /* bus error source reg */
-#define BCBERR_BESB            0x0000001f      /* erroneous access destination space */
-#define BCBERR_BESB_MON                0x00000001      /* - monitor space */
-#define BCBERR_BESB_IO         0x00000002      /* - IO bus */
-#define BCBERR_BESB_EX         0x00000004      /* - EX bus */
-#define BCBERR_BESB_OPEX       0x00000008      /* - OpEX bus */
-#define BCBERR_BESB_OCM                0x00000010      /* - on chip memory */
-#define BCBERR_BERW            0x00000100      /* type of access */
-#define BCBERR_BERW_WRITE      0x00000000      /* - write */
-#define BCBERR_BERW_READ       0x00000100      /* - read */
-#define BCBERR_BESD            0x00000200      /* error detector */
-#define BCBERR_BESD_BCU                0x00000000      /* - BCU detected error */
-#define BCBERR_BESD_SLAVE_BUS  0x00000200      /* - slave bus detected error */
-#define BCBERR_BEBST           0x00000400      /* type of access */
-#define BCBERR_BEBST_SINGLE    0x00000000      /* - single */
-#define BCBERR_BEBST_BURST     0x00000400      /* - burst */
-#define BCBERR_BEME            0x00000800      /* multiple bus error flag */
-#define BCBERR_BEMR            0x00007000      /* master bus that caused the error */
-#define BCBERR_BEMR_NOERROR    0x00000000      /* - no error */
-#define BCBERR_BEMR_CI         0x00001000      /* - CPU instruction fetch bus caused error */
-#define BCBERR_BEMR_CD         0x00002000      /* - CPU data bus caused error */
-#define BCBERR_BEMR_DMA                0x00004000      /* - DMA bus caused error */
-
-#define BCBEAR                 __SYSREGC(0xc0002020, u32)      /* bus error address reg */
-
-/* system bus controller registers */
-#define SBBASE(X)              __SYSREG(0xd8c00100 + (X) * 0x10, u32)  /* SBC base addr regs */
-#define SBBASE_BE              0x00000001      /* bank enable */
-#define SBBASE_BAM             0x0000fffe      /* bank address mask [31:17] */
-#define SBBASE_BBA             0xfffe0000      /* bank base address [31:17] */
-
-#define SBCNTRL0(X)            __SYSREG(0xd8c00200 + (X) * 0x10, u32)  /* SBC bank ctrl0 regs */
-#define SBCNTRL0_WEH           0x00000f00      /* write enable hold */
-#define SBCNTRL0_REH           0x0000f000      /* read enable hold */
-#define SBCNTRL0_RWH           0x000f0000      /* SRW signal hold */
-#define SBCNTRL0_CSH           0x00f00000      /* chip select hold */
-#define SBCNTRL0_DAH           0x0f000000      /* data hold */
-#define SBCNTRL0_ADH           0xf0000000      /* address hold */
-
-#define SBCNTRL1(X)            __SYSREG(0xd8c00204 + (X) * 0x10, u32)  /* SBC bank ctrl1 regs */
-#define SBCNTRL1_WED           0x00000f00      /* write enable delay */
-#define SBCNTRL1_RED           0x0000f000      /* read enable delay */
-#define SBCNTRL1_RWD           0x000f0000      /* SRW signal delay */
-#define SBCNTRL1_ASW           0x00f00000      /* address strobe width */
-#define SBCNTRL1_CSD           0x0f000000      /* chip select delay */
-#define SBCNTRL1_ASD           0xf0000000      /* address strobe delay */
-
-#define SBCNTRL2(X)            __SYSREG(0xd8c00208 + (X) * 0x10, u32)  /* SBC bank ctrl2 regs */
-#define SBCNTRL2_WC            0x000000ff      /* wait count */
-#define SBCNTRL2_BWC           0x00000f00      /* burst wait count */
-#define SBCNTRL2_WM            0x01000000      /* wait mode setting */
-#define SBCNTRL2_WM_FIXEDWAIT  0x00000000      /* - fixed wait access */
-#define SBCNTRL2_WM_HANDSHAKE  0x01000000      /* - handshake access */
-#define SBCNTRL2_BM            0x02000000      /* bus synchronisation mode */
-#define SBCNTRL2_BM_SYNC       0x00000000      /* - synchronous mode */
-#define SBCNTRL2_BM_ASYNC      0x02000000      /* - asynchronous mode */
-#define SBCNTRL2_BW            0x04000000      /* bus width */
-#define SBCNTRL2_BW_32         0x00000000      /* - 32 bits */
-#define SBCNTRL2_BW_16         0x04000000      /* - 16 bits */
-#define SBCNTRL2_RWINV         0x08000000      /* R/W signal invert polarity */
-#define SBCNTRL2_RWINV_NORM    0x00000000      /* - normal (read high) */
-#define SBCNTRL2_RWINV_INV     0x08000000      /* - inverted (read low) */
-#define SBCNTRL2_BT            0x70000000      /* bus type setting */
-#define SBCNTRL2_BT_SRAM       0x00000000      /* - SRAM interface */
-#define SBCNTRL2_BT_ADMUX      0x00000000      /* - addr/data multiplexed interface */
-#define SBCNTRL2_BT_BROM       0x00000000      /* - burst ROM interface */
-#define SBCNTRL2_BTSE          0x80000000      /* burst enable */
-
-/* memory bus controller */
-#define SDBASE(X)              __SYSREG(0xda000008 + (X) * 0x4, u32)   /* MBC base addr regs */
-#define SDBASE_CE              0x00000001      /* chip enable */
-#define SDBASE_CBAM            0x0000fff0      /* chip base address mask [31:20] */
-#define SDBASE_CBAM_SHIFT      16
-#define SDBASE_CBA             0xfff00000      /* chip base address [31:20] */
-
-#define SDRAMBUS               __SYSREG(0xda000000, u32)       /* bus mode control reg */
-#define SDRAMBUS_REFEN         0x00000004      /* refresh enable */
-#define SDRAMBUS_TRC           0x00000018      /* refresh command delay time */
-#define SDRAMBUS_BSTPT         0x00000020      /* burst stop command enable */
-#define SDRAMBUS_PONSEQ                0x00000040      /* power on sequence */
-#define SDRAMBUS_SELFREQ       0x00000080      /* self-refresh mode request */
-#define SDRAMBUS_SELFON                0x00000100      /* self-refresh mode on */
-#define SDRAMBUS_SIZE          0x00030000      /* SDRAM size */
-#define SDRAMBUS_SIZE_64Mbit   0x00010000      /* 64Mbit SDRAM (x16) */
-#define SDRAMBUS_SIZE_128Mbit  0x00020000      /* 128Mbit SDRAM (x16) */
-#define SDRAMBUS_SIZE_256Mbit  0x00030000      /* 256Mbit SDRAM (x16) */
-#define SDRAMBUS_TRASWAIT      0x000c0000      /* row address precharge command cycle number */
-#define SDRAMBUS_REFNUM                0x00300000      /* refresh command number */
-#define SDRAMBUS_BSTWAIT       0x00c00000      /* burst stop command cycle */
-#define SDRAMBUS_SETWAIT       0x03000000      /* mode register setting command cycle */
-#define SDRAMBUS_PREWAIT       0x0c000000      /* precharge command cycle */
-#define SDRAMBUS_RASLATE       0x30000000      /* RAS latency */
-#define SDRAMBUS_CASLATE       0xc0000000      /* CAS latency */
-
-#define SDREFCNT               __SYSREG(0xda000004, u32)       /* refresh period reg */
-#define SDREFCNT_PERI          0x00000fff      /* refresh period */
-
-#define SDSHDW                 __SYSREG(0xda000010, u32)       /* test reg */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_BUSCTL_REGS_H */
diff --git a/include/asm-mn10300/byteorder.h b/include/asm-mn10300/byteorder.h
deleted file mode 100644 (file)
index 5dd0bdd..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_BYTEORDER_H
-#define _ASM_BYTEORDER_H
-
-#include <linux/byteorder/little_endian.h>
-
-#endif /* _ASM_BYTEORDER_H */
diff --git a/include/asm-mn10300/cache.h b/include/asm-mn10300/cache.h
deleted file mode 100644 (file)
index 9e01122..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* MN10300 cache management registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_CACHE_H
-#define _ASM_CACHE_H
-
-#include <asm/cpu-regs.h>
-#include <asm/proc/cache.h>
-
-#ifndef __ASSEMBLY__
-#define L1_CACHE_DISPARITY     (L1_CACHE_NENTRIES * L1_CACHE_BYTES)
-#else
-#define L1_CACHE_DISPARITY     L1_CACHE_NENTRIES * L1_CACHE_BYTES
-#endif
-
-/* data cache purge registers
- * - read from the register to unconditionally purge that cache line
- * - write address & 0xffffff00 to conditionally purge that cache line
- *   - clear LSB to request invalidation as well
- */
-#define DCACHE_PURGE(WAY, ENTRY) \
-       __SYSREG(0xc8400000 + (WAY) * L1_CACHE_WAYDISP + \
-                (ENTRY) * L1_CACHE_BYTES, u32)
-
-#define DCACHE_PURGE_WAY0(ENTRY) \
-       __SYSREG(0xc8400000 + 0 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
-#define DCACHE_PURGE_WAY1(ENTRY) \
-       __SYSREG(0xc8400000 + 1 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
-#define DCACHE_PURGE_WAY2(ENTRY) \
-       __SYSREG(0xc8400000 + 2 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
-#define DCACHE_PURGE_WAY3(ENTRY) \
-       __SYSREG(0xc8400000 + 3 * L1_CACHE_WAYDISP + (ENTRY) * L1_CACHE_BYTES, u32)
-
-/* instruction cache access registers */
-#define ICACHE_DATA(WAY, ENTRY, OFF) \
-       __SYSREG(0xc8000000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10 + (OFF) * 4, u32)
-#define ICACHE_TAG(WAY, ENTRY)  \
-       __SYSREG(0xc8100000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10, u32)
-
-/* instruction cache access registers */
-#define DCACHE_DATA(WAY, ENTRY, OFF) \
-       __SYSREG(0xc8200000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10 + (OFF) * 4, u32)
-#define DCACHE_TAG(WAY, ENTRY)  \
-       __SYSREG(0xc8300000 + (WAY) * L1_CACHE_WAYDISP + (ENTRY) * 0x10, u32)
-
-#endif /* _ASM_CACHE_H */
diff --git a/include/asm-mn10300/cacheflush.h b/include/asm-mn10300/cacheflush.h
deleted file mode 100644 (file)
index 2db746a..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* MN10300 Cache flushing
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_CACHEFLUSH_H
-#define _ASM_CACHEFLUSH_H
-
-#ifndef __ASSEMBLY__
-
-/* Keep includes the same across arches.  */
-#include <linux/mm.h>
-
-/*
- * virtually-indexed cache managment (our cache is physically indexed)
- */
-#define flush_cache_all()                      do {} while (0)
-#define flush_cache_mm(mm)                     do {} while (0)
-#define flush_cache_dup_mm(mm)                 do {} while (0)
-#define flush_cache_range(mm, start, end)      do {} while (0)
-#define flush_cache_page(vma, vmaddr, pfn)     do {} while (0)
-#define flush_cache_vmap(start, end)           do {} while (0)
-#define flush_cache_vunmap(start, end)         do {} while (0)
-#define flush_dcache_page(page)                        do {} while (0)
-#define flush_dcache_mmap_lock(mapping)                do {} while (0)
-#define flush_dcache_mmap_unlock(mapping)      do {} while (0)
-
-/*
- * physically-indexed cache managment
- */
-#ifndef CONFIG_MN10300_CACHE_DISABLED
-
-extern void flush_icache_range(unsigned long start, unsigned long end);
-extern void flush_icache_page(struct vm_area_struct *vma, struct page *pg);
-
-#else
-
-#define flush_icache_range(start, end)         do {} while (0)
-#define flush_icache_page(vma, pg)             do {} while (0)
-
-#endif
-
-#define flush_icache_user_range(vma, pg, adr, len) \
-       flush_icache_range(adr, adr + len)
-
-#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
-       do {                                    \
-               memcpy(dst, src, len);          \
-               flush_icache_page(vma, page);   \
-       } while (0)
-
-#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
-       memcpy(dst, src, len)
-
-/*
- * primitive routines
- */
-#ifndef CONFIG_MN10300_CACHE_DISABLED
-extern void mn10300_icache_inv(void);
-extern void mn10300_dcache_inv(void);
-extern void mn10300_dcache_inv_page(unsigned start);
-extern void mn10300_dcache_inv_range(unsigned start, unsigned end);
-extern void mn10300_dcache_inv_range2(unsigned start, unsigned size);
-#ifdef CONFIG_MN10300_CACHE_WBACK
-extern void mn10300_dcache_flush(void);
-extern void mn10300_dcache_flush_page(unsigned start);
-extern void mn10300_dcache_flush_range(unsigned start, unsigned end);
-extern void mn10300_dcache_flush_range2(unsigned start, unsigned size);
-extern void mn10300_dcache_flush_inv(void);
-extern void mn10300_dcache_flush_inv_page(unsigned start);
-extern void mn10300_dcache_flush_inv_range(unsigned start, unsigned end);
-extern void mn10300_dcache_flush_inv_range2(unsigned start, unsigned size);
-#else
-#define mn10300_dcache_flush()                         do {} while (0)
-#define mn10300_dcache_flush_page(start)               do {} while (0)
-#define mn10300_dcache_flush_range(start, end)         do {} while (0)
-#define mn10300_dcache_flush_range2(start, size)       do {} while (0)
-#define mn10300_dcache_flush_inv()                     mn10300_dcache_inv()
-#define mn10300_dcache_flush_inv_page(start) \
-       mn10300_dcache_inv_page((start))
-#define mn10300_dcache_flush_inv_range(start, end) \
-       mn10300_dcache_inv_range((start), (end))
-#define mn10300_dcache_flush_inv_range2(start, size) \
-       mn10300_dcache_inv_range2((start), (size))
-#endif /* CONFIG_MN10300_CACHE_WBACK */
-#else
-#define mn10300_icache_inv()                           do {} while (0)
-#define mn10300_dcache_inv()                           do {} while (0)
-#define mn10300_dcache_inv_page(start)                 do {} while (0)
-#define mn10300_dcache_inv_range(start, end)           do {} while (0)
-#define mn10300_dcache_inv_range2(start, size)         do {} while (0)
-#define mn10300_dcache_flush()                         do {} while (0)
-#define mn10300_dcache_flush_inv_page(start)           do {} while (0)
-#define mn10300_dcache_flush_inv()                     do {} while (0)
-#define mn10300_dcache_flush_inv_range(start, end)     do {} while (0)
-#define mn10300_dcache_flush_inv_range2(start, size)   do {} while (0)
-#define mn10300_dcache_flush_page(start)               do {} while (0)
-#define mn10300_dcache_flush_range(start, end)         do {} while (0)
-#define mn10300_dcache_flush_range2(start, size)       do {} while (0)
-#endif /* CONFIG_MN10300_CACHE_DISABLED */
-
-/*
- * internal debugging function
- */
-#ifdef CONFIG_DEBUG_PAGEALLOC
-extern void kernel_map_pages(struct page *page, int numpages, int enable);
-#endif
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _ASM_CACHEFLUSH_H */
diff --git a/include/asm-mn10300/checksum.h b/include/asm-mn10300/checksum.h
deleted file mode 100644 (file)
index 9fb2a8d..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* MN10300 Optimised checksumming code
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_CHECKSUM_H
-#define _ASM_CHECKSUM_H
-
-extern __wsum csum_partial(const void *buff, int len, __wsum sum);
-extern __wsum csum_partial_copy_nocheck(const void *src, void *dst,
-                                       int len, __wsum sum);
-extern __wsum csum_partial_copy_from_user(const void *src, void *dst,
-                                         int len, __wsum sum,
-                                         int *err_ptr);
-extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
-extern __wsum csum_partial(const void *buff, int len, __wsum sum);
-extern __sum16 ip_compute_csum(const void *buff, int len);
-
-#define csum_partial_copy_fromuser csum_partial_copy
-extern __wsum csum_partial_copy(const void *src, void *dst, int len,
-                               __wsum sum);
-
-static inline __sum16 csum_fold(__wsum sum)
-{
-       asm(
-               "       add     %1,%0           \n"
-               "       addc    0xffff,%0       \n"
-               : "=r" (sum)
-               : "r" (sum << 16), "0" (sum & 0xffff0000)
-               : "cc"
-           );
-       return (~sum) >> 16;
-}
-
-static inline __wsum csum_tcpudp_nofold(unsigned long saddr,
-                                       unsigned long daddr,
-                                       unsigned short len,
-                                       unsigned short proto,
-                                       __wsum sum)
-{
-       __wsum tmp;
-
-       tmp = (__wsum) ntohs(len) << 16;
-       tmp += (__wsum) proto << 8;
-
-       asm(
-               "       add     %1,%0           \n"
-               "       addc    %2,%0           \n"
-               "       addc    %3,%0           \n"
-               "       addc    0,%0            \n"
-               : "=r" (sum)
-               : "r" (daddr), "r"(saddr), "r"(tmp), "0"(sum)
-               : "cc"
-           );
-       return sum;
-}
-
-/*
- * computes the checksum of the TCP/UDP pseudo-header
- * returns a 16-bit checksum, already complemented
- */
-static inline __sum16 csum_tcpudp_magic(unsigned long saddr,
-                                       unsigned long daddr,
-                                       unsigned short len,
-                                       unsigned short proto,
-                                       __wsum sum)
-{
-       return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
-}
-
-#undef _HAVE_ARCH_IPV6_CSUM
-
-/*
- *     Copy and checksum to user
- */
-#define HAVE_CSUM_COPY_USER
-extern __wsum csum_and_copy_to_user(const void *src, void *dst, int len,
-                                   __wsum sum, int *err_ptr);
-
-
-#endif /* _ASM_CHECKSUM_H */
diff --git a/include/asm-mn10300/cpu-regs.h b/include/asm-mn10300/cpu-regs.h
deleted file mode 100644 (file)
index 757e9b5..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/* MN10300 Core system registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_CPU_REGS_H
-#define _ASM_CPU_REGS_H
-
-#ifndef __ASSEMBLY__
-#include <linux/types.h>
-#endif
-
-#ifdef CONFIG_MN10300_CPU_AM33V2
-/* we tell the compiler to pretend to be AM33 so that it doesn't try and use
- * the FP regs, but tell the assembler that we're actually allowed AM33v2
- * instructions */
-#ifndef __ASSEMBLY__
-asm(" .am33_2\n");
-#else
-.am33_2
-#endif
-#endif
-
-#ifdef __KERNEL__
-
-#ifndef __ASSEMBLY__
-#define __SYSREG(ADDR, TYPE) (*(volatile TYPE *)(ADDR))
-#define __SYSREGC(ADDR, TYPE) (*(const volatile TYPE *)(ADDR))
-#else
-#define __SYSREG(ADDR, TYPE) ADDR
-#define __SYSREGC(ADDR, TYPE) ADDR
-#endif
-
-/* CPU registers */
-#define EPSW_FLAG_Z            0x00000001      /* zero flag */
-#define EPSW_FLAG_N            0x00000002      /* negative flag */
-#define EPSW_FLAG_C            0x00000004      /* carry flag */
-#define EPSW_FLAG_V            0x00000008      /* overflow flag */
-#define EPSW_IM                        0x00000700      /* interrupt mode */
-#define EPSW_IM_0              0x00000000      /* interrupt mode 0 */
-#define EPSW_IM_1              0x00000100      /* interrupt mode 1 */
-#define EPSW_IM_2              0x00000200      /* interrupt mode 2 */
-#define EPSW_IM_3              0x00000300      /* interrupt mode 3 */
-#define EPSW_IM_4              0x00000400      /* interrupt mode 4 */
-#define EPSW_IM_5              0x00000500      /* interrupt mode 5 */
-#define EPSW_IM_6              0x00000600      /* interrupt mode 6 */
-#define EPSW_IM_7              0x00000700      /* interrupt mode 7 */
-#define EPSW_IE                        0x00000800      /* interrupt enable */
-#define EPSW_S                 0x00003000      /* software auxilliary bits */
-#define EPSW_T                 0x00008000      /* trace enable */
-#define EPSW_nSL               0x00010000      /* not supervisor level */
-#define EPSW_NMID              0x00020000      /* nonmaskable interrupt disable */
-#define EPSW_nAR               0x00040000      /* register bank control */
-#define EPSW_ML                        0x00080000      /* monitor level */
-#define EPSW_FE                        0x00100000      /* FPU enable */
-
-/* FPU registers */
-#define FPCR_EF_I              0x00000001      /* inexact result FPU exception flag */
-#define FPCR_EF_U              0x00000002      /* underflow FPU exception flag */
-#define FPCR_EF_O              0x00000004      /* overflow FPU exception flag */
-#define FPCR_EF_Z              0x00000008      /* zero divide FPU exception flag */
-#define FPCR_EF_V              0x00000010      /* invalid operand FPU exception flag */
-#define FPCR_EE_I              0x00000020      /* inexact result FPU exception enable */
-#define FPCR_EE_U              0x00000040      /* underflow FPU exception enable */
-#define FPCR_EE_O              0x00000080      /* overflow FPU exception enable */
-#define FPCR_EE_Z              0x00000100      /* zero divide FPU exception enable */
-#define FPCR_EE_V              0x00000200      /* invalid operand FPU exception enable */
-#define FPCR_EC_I              0x00000400      /* inexact result FPU exception cause */
-#define FPCR_EC_U              0x00000800      /* underflow FPU exception cause */
-#define FPCR_EC_O              0x00001000      /* overflow FPU exception cause */
-#define FPCR_EC_Z              0x00002000      /* zero divide FPU exception cause */
-#define FPCR_EC_V              0x00004000      /* invalid operand FPU exception cause */
-#define FPCR_RM                        0x00030000      /* rounding mode */
-#define FPCR_RM_NEAREST                0x00000000      /* - round to nearest value */
-#define FPCR_FCC_U             0x00040000      /* FPU unordered condition code */
-#define FPCR_FCC_E             0x00080000      /* FPU equal condition code */
-#define FPCR_FCC_G             0x00100000      /* FPU greater than condition code */
-#define FPCR_FCC_L             0x00200000      /* FPU less than condition code */
-#define FPCR_INIT              0x00000000      /* no exceptions, rounding to nearest */
-
-/* CPU control registers */
-#define CPUP                   __SYSREG(0xc0000020, u16)       /* CPU pipeline register */
-#define CPUP_DWBD              0x0020          /* write buffer disable flag */
-#define CPUP_IPFD              0x0040          /* instruction prefetch disable flag */
-#define CPUP_EXM               0x0080          /* exception operation mode */
-#define CPUP_EXM_AM33V1                0x0000          /* - AM33 v1 exception mode */
-#define CPUP_EXM_AM33V2                0x0080          /* - AM33 v2 exception mode */
-
-#define CPUM                   __SYSREG(0xc0000040, u16)       /* CPU mode register */
-#define CPUM_SLEEP             0x0004          /* set to enter sleep state */
-#define CPUM_HALT              0x0008          /* set to enter halt state */
-#define CPUM_STOP              0x0010          /* set to enter stop state */
-
-#define CPUREV                 __SYSREGC(0xc0000050, u32)      /* CPU revision register */
-#define CPUREV_TYPE            0x0000000f      /* CPU type */
-#define CPUREV_TYPE_S          0
-#define CPUREV_TYPE_AM33V1     0x00000000      /* - AM33 V1 core, AM33/1.00 arch */
-#define CPUREV_TYPE_AM33V2     0x00000001      /* - AM33 V2 core, AM33/2.00 arch */
-#define CPUREV_TYPE_AM34V1     0x00000002      /* - AM34 V1 core, AM33/2.00 arch */
-#define CPUREV_REVISION                0x000000f0      /* CPU revision */
-#define CPUREV_REVISION_S      4
-#define CPUREV_ICWAY           0x00000f00      /* number of instruction cache ways */
-#define CPUREV_ICWAY_S         8
-#define CPUREV_ICSIZE          0x0000f000      /* instruction cache way size */
-#define CPUREV_ICSIZE_S                12
-#define CPUREV_DCWAY           0x000f0000      /* number of data cache ways */
-#define CPUREV_DCWAY_S         16
-#define CPUREV_DCSIZE          0x00f00000      /* data cache way size */
-#define CPUREV_DCSIZE_S                20
-#define CPUREV_FPUTYPE         0x0f000000      /* FPU core type */
-#define CPUREV_FPUTYPE_NONE    0x00000000      /* - no FPU core implemented */
-#define CPUREV_OCDCTG          0xf0000000      /* on-chip debug function category */
-
-#define DCR                    __SYSREG(0xc0000030, u16)       /* Debug control register */
-
-/* interrupt/exception control registers */
-#define IVAR0                  __SYSREG(0xc0000000, u16)       /* interrupt vector 0 */
-#define IVAR1                  __SYSREG(0xc0000004, u16)       /* interrupt vector 1 */
-#define IVAR2                  __SYSREG(0xc0000008, u16)       /* interrupt vector 2 */
-#define IVAR3                  __SYSREG(0xc000000c, u16)       /* interrupt vector 3 */
-#define IVAR4                  __SYSREG(0xc0000010, u16)       /* interrupt vector 4 */
-#define IVAR5                  __SYSREG(0xc0000014, u16)       /* interrupt vector 5 */
-#define IVAR6                  __SYSREG(0xc0000018, u16)       /* interrupt vector 6 */
-
-#define TBR                    __SYSREG(0xc0000024, u32)       /* Trap table base */
-#define TBR_TB                 0xff000000      /* table base address bits 31-24 */
-#define TBR_INT_CODE           0x00ffffff      /* interrupt code */
-
-#define DEAR                   __SYSREG(0xc0000038, u32)       /* Data access exception address */
-
-#define sISR                   __SYSREG(0xc0000044, u32)       /* Supervisor interrupt status */
-#define        sISR_IRQICE             0x00000001      /* ICE interrupt */
-#define        sISR_ISTEP              0x00000002      /* single step interrupt */
-#define        sISR_MISSA              0x00000004      /* memory access address misalignment fault */
-#define        sISR_UNIMP              0x00000008      /* unimplemented instruction execution fault */
-#define        sISR_PIEXE              0x00000010      /* program interrupt */
-#define        sISR_MEMERR             0x00000020      /* illegal memory access fault */
-#define        sISR_IBREAK             0x00000040      /* instraction break interrupt */
-#define        sISR_DBSRL              0x00000080      /* debug serial interrupt */
-#define        sISR_PERIDB             0x00000100      /* peripheral debug interrupt */
-#define        sISR_EXUNIMP            0x00000200      /* unimplemented ex-instruction execution fault */
-#define        sISR_OBREAK             0x00000400      /* operand break interrupt */
-#define        sISR_PRIV               0x00000800      /* privileged instruction execution fault */
-#define        sISR_BUSERR             0x00001000      /* bus error fault */
-#define        sISR_DBLFT              0x00002000      /* double fault */
-#define        sISR_DBG                0x00008000      /* debug reserved interrupt */
-#define sISR_ITMISS            0x00010000      /* instruction TLB miss */
-#define sISR_DTMISS            0x00020000      /* data TLB miss */
-#define sISR_ITEX              0x00040000      /* instruction TLB access exception */
-#define sISR_DTEX              0x00080000      /* data TLB access exception */
-#define sISR_ILGIA             0x00100000      /* illegal instruction access exception */
-#define sISR_ILGDA             0x00200000      /* illegal data access exception */
-#define sISR_IOIA              0x00400000      /* internal I/O space instruction access excep */
-#define sISR_PRIVA             0x00800000      /* privileged space instruction access excep */
-#define sISR_PRIDA             0x01000000      /* privileged space data access excep */
-#define sISR_DISA              0x02000000      /* data space instruction access excep */
-#define sISR_SYSC              0x04000000      /* system call instruction excep */
-#define sISR_FPUD              0x08000000      /* FPU disabled excep */
-#define sISR_FPUUI             0x10000000      /* FPU unimplemented instruction excep */
-#define sISR_FPUOP             0x20000000      /* FPU operation excep */
-#define sISR_NE                        0x80000000      /* multiple synchronous exceptions excep */
-
-/* cache control registers */
-#define CHCTR                  __SYSREG(0xc0000070, u16)       /* cache control */
-#define CHCTR_ICEN             0x0001          /* instruction cache enable */
-#define CHCTR_DCEN             0x0002          /* data cache enable */
-#define CHCTR_ICBUSY           0x0004          /* instruction cache busy */
-#define CHCTR_DCBUSY           0x0008          /* data cache busy */
-#define CHCTR_ICINV            0x0010          /* instruction cache invalidate */
-#define CHCTR_DCINV            0x0020          /* data cache invalidate */
-#define CHCTR_DCWTMD           0x0040          /* data cache writing mode */
-#define CHCTR_DCWTMD_WRBACK    0x0000          /* - write back mode */
-#define CHCTR_DCWTMD_WRTHROUGH 0x0040          /* - write through mode */
-#define CHCTR_DCALMD           0x0080          /* data cache allocation mode */
-#define CHCTR_ICWMD            0x0f00          /* instruction cache way mode */
-#define CHCTR_DCWMD            0xf000          /* data cache way mode */
-
-/* MMU control registers */
-#define MMUCTR                 __SYSREG(0xc0000090, u32)       /* MMU control register */
-#define MMUCTR_IRP             0x0000003f      /* instruction TLB replace pointer */
-#define MMUCTR_ITE             0x00000040      /* instruction TLB enable */
-#define MMUCTR_IIV             0x00000080      /* instruction TLB invalidate */
-#define MMUCTR_ITL             0x00000700      /* instruction TLB lock pointer */
-#define MMUCTR_ITL_NOLOCK      0x00000000      /* - no lock */
-#define MMUCTR_ITL_LOCK0       0x00000100      /* - entry 0 locked */
-#define MMUCTR_ITL_LOCK0_1     0x00000200      /* - entry 0-1 locked */
-#define MMUCTR_ITL_LOCK0_3     0x00000300      /* - entry 0-3 locked */
-#define MMUCTR_ITL_LOCK0_7     0x00000400      /* - entry 0-7 locked */
-#define MMUCTR_ITL_LOCK0_15    0x00000500      /* - entry 0-15 locked */
-#define MMUCTR_CE              0x00008000      /* cacheable bit enable */
-#define MMUCTR_DRP             0x003f0000      /* data TLB replace pointer */
-#define MMUCTR_DTE             0x00400000      /* data TLB enable */
-#define MMUCTR_DIV             0x00800000      /* data TLB invalidate */
-#define MMUCTR_DTL             0x07000000      /* data TLB lock pointer */
-#define MMUCTR_DTL_NOLOCK      0x00000000      /* - no lock */
-#define MMUCTR_DTL_LOCK0       0x01000000      /* - entry 0 locked */
-#define MMUCTR_DTL_LOCK0_1     0x02000000      /* - entry 0-1 locked */
-#define MMUCTR_DTL_LOCK0_3     0x03000000      /* - entry 0-3 locked */
-#define MMUCTR_DTL_LOCK0_7     0x04000000      /* - entry 0-7 locked */
-#define MMUCTR_DTL_LOCK0_15    0x05000000      /* - entry 0-15 locked */
-
-#define PIDR                   __SYSREG(0xc0000094, u16)       /* PID register */
-#define PIDR_PID               0x00ff          /* process identifier */
-
-#define PTBR                   __SYSREG(0xc0000098, unsigned long) /* Page table base register */
-
-#define IPTEL                  __SYSREG(0xc00000a0, u32)       /* instruction TLB entry */
-#define DPTEL                  __SYSREG(0xc00000b0, u32)       /* data TLB entry */
-#define xPTEL_V                        0x00000001      /* TLB entry valid */
-#define xPTEL_UNUSED1          0x00000002      /* unused bit */
-#define xPTEL_UNUSED2          0x00000004      /* unused bit */
-#define xPTEL_C                        0x00000008      /* cached if set */
-#define xPTEL_PV               0x00000010      /* page valid */
-#define xPTEL_D                        0x00000020      /* dirty */
-#define xPTEL_PR               0x000001c0      /* page protection */
-#define xPTEL_PR_ROK           0x00000000      /* - R/O kernel */
-#define xPTEL_PR_RWK           0x00000100      /* - R/W kernel */
-#define xPTEL_PR_ROK_ROU       0x00000080      /* - R/O kernel and R/O user */
-#define xPTEL_PR_RWK_ROU       0x00000180      /* - R/W kernel and R/O user */
-#define xPTEL_PR_RWK_RWU       0x000001c0      /* - R/W kernel and R/W user */
-#define xPTEL_G                        0x00000200      /* global (use PID if 0) */
-#define xPTEL_PS               0x00000c00      /* page size */
-#define xPTEL_PS_4Kb           0x00000000      /* - 4Kb page */
-#define xPTEL_PS_128Kb         0x00000400      /* - 128Kb page */
-#define xPTEL_PS_1Kb           0x00000800      /* - 1Kb page */
-#define xPTEL_PS_4Mb           0x00000c00      /* - 4Mb page */
-#define xPTEL_PPN              0xfffff006      /* physical page number */
-
-#define xPTEL_V_BIT            0       /* bit numbers corresponding to above masks */
-#define xPTEL_UNUSED1_BIT      1
-#define xPTEL_UNUSED2_BIT      2
-#define xPTEL_C_BIT            3
-#define xPTEL_PV_BIT           4
-#define xPTEL_D_BIT            5
-#define xPTEL_G_BIT            9
-
-#define IPTEU                  __SYSREG(0xc00000a4, u32)       /* instruction TLB virtual addr */
-#define DPTEU                  __SYSREG(0xc00000b4, u32)       /* data TLB virtual addr */
-#define xPTEU_VPN              0xfffffc00      /* virtual page number */
-#define xPTEU_PID              0x000000ff      /* process identifier to which applicable */
-
-#define IPTEL2                 __SYSREG(0xc00000a8, u32)       /* instruction TLB entry */
-#define DPTEL2                 __SYSREG(0xc00000b8, u32)       /* data TLB entry */
-#define xPTEL2_V               0x00000001      /* TLB entry valid */
-#define xPTEL2_C               0x00000002      /* cacheable */
-#define xPTEL2_PV              0x00000004      /* page valid */
-#define xPTEL2_D               0x00000008      /* dirty */
-#define xPTEL2_PR              0x00000070      /* page protection */
-#define xPTEL2_PR_ROK          0x00000000      /* - R/O kernel */
-#define xPTEL2_PR_RWK          0x00000040      /* - R/W kernel */
-#define xPTEL2_PR_ROK_ROU      0x00000020      /* - R/O kernel and R/O user */
-#define xPTEL2_PR_RWK_ROU      0x00000060      /* - R/W kernel and R/O user */
-#define xPTEL2_PR_RWK_RWU      0x00000070      /* - R/W kernel and R/W user */
-#define xPTEL2_G               0x00000080      /* global (use PID if 0) */
-#define xPTEL2_PS              0x00000300      /* page size */
-#define xPTEL2_PS_4Kb          0x00000000      /* - 4Kb page */
-#define xPTEL2_PS_128Kb                0x00000100      /* - 128Kb page */
-#define xPTEL2_PS_1Kb          0x00000200      /* - 1Kb page */
-#define xPTEL2_PS_4Mb          0x00000300      /* - 4Mb page */
-#define xPTEL2_PPN             0xfffffc00      /* physical page number */
-
-#define MMUFCR                 __SYSREGC(0xc000009c, u32)      /* MMU exception cause */
-#define MMUFCR_IFC             __SYSREGC(0xc000009c, u16)      /* MMU instruction excep cause */
-#define MMUFCR_DFC             __SYSREGC(0xc000009e, u16)      /* MMU data exception cause */
-#define MMUFCR_xFC_TLBMISS     0x0001          /* TLB miss flag */
-#define MMUFCR_xFC_INITWR      0x0002          /* initial write excep flag */
-#define MMUFCR_xFC_PGINVAL     0x0004          /* page invalid excep flag */
-#define MMUFCR_xFC_PROTVIOL    0x0008          /* protection violation excep flag */
-#define MMUFCR_xFC_ACCESS      0x0010          /* access level flag */
-#define MMUFCR_xFC_ACCESS_USR  0x0000          /* - user mode */
-#define MMUFCR_xFC_ACCESS_SR   0x0010          /* - supervisor mode */
-#define MMUFCR_xFC_TYPE                0x0020          /* access type flag */
-#define MMUFCR_xFC_TYPE_READ   0x0000          /* - read */
-#define MMUFCR_xFC_TYPE_WRITE  0x0020          /* - write */
-#define MMUFCR_xFC_PR          0x01c0          /* page protection flag */
-#define MMUFCR_xFC_PR_ROK      0x0000          /* - R/O kernel */
-#define MMUFCR_xFC_PR_RWK      0x0100          /* - R/W kernel */
-#define MMUFCR_xFC_PR_ROK_ROU  0x0080          /* - R/O kernel and R/O user */
-#define MMUFCR_xFC_PR_RWK_ROU  0x0180          /* - R/W kernel and R/O user */
-#define MMUFCR_xFC_PR_RWK_RWU  0x01c0          /* - R/W kernel and R/W user */
-#define MMUFCR_xFC_ILLADDR     0x0200          /* illegal address excep flag */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_CPU_REGS_H */
diff --git a/include/asm-mn10300/cputime.h b/include/asm-mn10300/cputime.h
deleted file mode 100644 (file)
index 6d68ad7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/cputime.h>
diff --git a/include/asm-mn10300/current.h b/include/asm-mn10300/current.h
deleted file mode 100644 (file)
index ca6027d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* MN10300 Current task structure accessor
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_CURRENT_H
-#define _ASM_CURRENT_H
-
-#include <linux/thread_info.h>
-
-/*
- * dedicate E2 to keeping the current task pointer
- */
-#ifdef CONFIG_MN10300_CURRENT_IN_E2
-
-register struct task_struct *const current asm("e2") __attribute__((used));
-
-#define get_current() current
-
-extern struct task_struct *__current;
-
-#else
-static inline __attribute__((const))
-struct task_struct *get_current(void)
-{
-       return current_thread_info()->task;
-}
-
-#define current get_current()
-#endif
-
-#endif /* _ASM_CURRENT_H */
diff --git a/include/asm-mn10300/delay.h b/include/asm-mn10300/delay.h
deleted file mode 100644 (file)
index 34517b3..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/* MN10300 Uninterruptible delay routines
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_DELAY_H
-#define _ASM_DELAY_H
-
-extern void __udelay(unsigned long usecs);
-extern void __delay(unsigned long loops);
-
-#define udelay(n) __udelay(n)
-
-#endif /* _ASM_DELAY_H */
diff --git a/include/asm-mn10300/device.h b/include/asm-mn10300/device.h
deleted file mode 100644 (file)
index f0a4c25..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/device.h>
diff --git a/include/asm-mn10300/div64.h b/include/asm-mn10300/div64.h
deleted file mode 100644 (file)
index 3a8329b..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* MN10300 64-bit division
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_DIV64
-#define _ASM_DIV64
-
-#include <linux/types.h>
-
-extern void ____unhandled_size_in_do_div___(void);
-
-/*
- * divide n by base, leaving the result in n and returning the remainder
- * - we can do this quite efficiently on the MN10300 by cascading the divides
- *   through the MDR register
- */
-#define do_div(n, base)                                                        \
-({                                                                     \
-       unsigned __rem = 0;                                             \
-       if (sizeof(n) <= 4) {                                           \
-               asm("mov        %1,mdr  \n"                             \
-                   "divu       %2,%0   \n"                             \
-                   "mov        mdr,%1  \n"                             \
-                   : "+r"(n), "=d"(__rem)                              \
-                   : "r"(base), "1"(__rem)                             \
-                   : "cc"                                              \
-                   );                                                  \
-       } else if (sizeof(n) <= 8) {                                    \
-               union {                                                 \
-                       unsigned long long l;                           \
-                       u32 w[2];                                       \
-               } __quot;                                               \
-               __quot.l = n;                                           \
-               asm("mov        %0,mdr  \n"     /* MDR = 0 */           \
-                   "divu       %3,%1   \n"                             \
-                   /* __quot.MSL = __div.MSL / base, */                \
-                   /* MDR = MDR:__div.MSL % base */                    \
-                   "divu       %3,%2   \n"                             \
-                   /* __quot.LSL = MDR:__div.LSL / base, */            \
-                   /* MDR = MDR:__div.LSL % base */                    \
-                   "mov        mdr,%0  \n"                             \
-                   : "=d"(__rem), "=r"(__quot.w[1]), "=r"(__quot.w[0]) \
-                   : "r"(base), "0"(__rem), "1"(__quot.w[1]),          \
-                     "2"(__quot.w[0])                                  \
-                   : "cc"                                              \
-                   );                                                  \
-               n = __quot.l;                                           \
-       } else {                                                        \
-               ____unhandled_size_in_do_div___();                      \
-       }                                                               \
-       __rem;                                                          \
-})
-
-/*
- * do an unsigned 32-bit multiply and divide with intermediate 64-bit product
- * so as not to lose accuracy
- * - we use the MDR register to hold the MSW of the product
- */
-static inline __attribute__((const))
-unsigned __muldiv64u(unsigned val, unsigned mult, unsigned div)
-{
-       unsigned result;
-
-       asm("mulu       %2,%0   \n"     /* MDR:val = val*mult */
-           "divu       %3,%0   \n"     /* val = MDR:val/div;
-                                        * MDR = MDR:val%div */
-           : "=r"(result)
-           : "0"(val), "ir"(mult), "r"(div)
-           );
-
-       return result;
-}
-
-/*
- * do a signed 32-bit multiply and divide with intermediate 64-bit product so
- * as not to lose accuracy
- * - we use the MDR register to hold the MSW of the product
- */
-static inline __attribute__((const))
-signed __muldiv64s(signed val, signed mult, signed div)
-{
-       signed result;
-
-       asm("mul        %2,%0   \n"     /* MDR:val = val*mult */
-           "div        %3,%0   \n"     /* val = MDR:val/div;
-                                        * MDR = MDR:val%div */
-           : "=r"(result)
-           : "0"(val), "ir"(mult), "r"(div)
-           );
-
-       return result;
-}
-
-#endif /* _ASM_DIV64 */
diff --git a/include/asm-mn10300/dma-mapping.h b/include/asm-mn10300/dma-mapping.h
deleted file mode 100644 (file)
index ccae8f6..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/* DMA mapping routines for the MN10300 arch
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_DMA_MAPPING_H
-#define _ASM_DMA_MAPPING_H
-
-#include <linux/mm.h>
-#include <linux/scatterlist.h>
-
-#include <asm/cache.h>
-#include <asm/io.h>
-
-extern void *dma_alloc_coherent(struct device *dev, size_t size,
-                               dma_addr_t *dma_handle, int flag);
-
-extern void dma_free_coherent(struct device *dev, size_t size,
-                             void *vaddr, dma_addr_t dma_handle);
-
-#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent((d), (s), (h), (f))
-#define dma_free_noncoherent(d, s, v, h)  dma_free_coherent((d), (s), (v), (h))
-
-/*
- * Map a single buffer of the indicated size for DMA in streaming mode.  The
- * 32-bit bus address to use is returned.
- *
- * Once the device is given the dma address, the device owns this memory until
- * either pci_unmap_single or pci_dma_sync_single is performed.
- */
-static inline
-dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
-                         enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-       mn10300_dcache_flush_inv();
-       return virt_to_bus(ptr);
-}
-
-/*
- * Unmap a single streaming mode DMA translation.  The dma_addr and size must
- * match what was provided for in a previous pci_map_single call.  All other
- * usages are undefined.
- *
- * After this call, reads by the cpu to the buffer are guarenteed to see
- * whatever the device wrote there.
- */
-static inline
-void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
-                     enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-}
-
-/*
- * Map a set of buffers described by scatterlist in streaming mode for DMA.
- * This is the scather-gather version of the above pci_map_single interface.
- * Here the scatter gather list elements are each tagged with the appropriate
- * dma address and length.  They are obtained via sg_dma_{address,length}(SG).
- *
- * NOTE: An implementation may be able to use a smaller number of DMA
- *       address/length pairs than there are SG table elements.  (for example
- *       via virtual mapping capabilities) The routine returns the number of
- *       addr/length pairs actually used, at most nents.
- *
- * Device ownership issues as mentioned above for pci_map_single are the same
- * here.
- */
-static inline
-int dma_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
-              enum dma_data_direction direction)
-{
-       struct scatterlist *sg;
-       int i;
-
-       BUG_ON(!valid_dma_direction(direction));
-       WARN_ON(nents == 0 || sglist[0].length == 0);
-
-       for_each_sg(sglist, sg, nents, i) {
-               BUG_ON(!sg_page(sg));
-
-               sg->dma_address = sg_phys(sg);
-       }
-
-       mn10300_dcache_flush_inv();
-       return nents;
-}
-
-/*
- * Unmap a set of streaming mode DMA translations.
- * Again, cpu read rules concerning calls here are the same as for
- * pci_unmap_single() above.
- */
-static inline
-void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
-                 enum dma_data_direction direction)
-{
-       BUG_ON(!valid_dma_direction(direction));
-}
-
-/*
- * pci_{map,unmap}_single_page maps a kernel page to a dma_addr_t. identical
- * to pci_map_single, but takes a struct page instead of a virtual address
- */
-static inline
-dma_addr_t dma_map_page(struct device *dev, struct page *page,
-                       unsigned long offset, size_t size,
-                       enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-       return page_to_bus(page) + offset;
-}
-
-static inline
-void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
-                   enum dma_data_direction direction)
-{
-       BUG_ON(direction == DMA_NONE);
-}
-
-/*
- * Make physical memory consistent for a single streaming mode DMA translation
- * after a transfer.
- *
- * If you perform a pci_map_single() but wish to interrogate the buffer using
- * the cpu, yet do not wish to teardown the PCI dma mapping, you must call this
- * function before doing so.  At the next point you give the PCI dma address
- * back to the card, the device again owns the buffer.
- */
-static inline
-void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
-                            size_t size, enum dma_data_direction direction)
-{
-}
-
-static inline
-void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
-                               size_t size, enum dma_data_direction direction)
-{
-       mn10300_dcache_flush_inv();
-}
-
-static inline
-void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle,
-                                  unsigned long offset, size_t size,
-                                  enum dma_data_direction direction)
-{
-}
-
-static inline void
-dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle,
-                                unsigned long offset, size_t size,
-                                enum dma_data_direction direction)
-{
-       mn10300_dcache_flush_inv();
-}
-
-
-/*
- * Make physical memory consistent for a set of streaming mode DMA translations
- * after a transfer.
- *
- * The same as pci_dma_sync_single but for a scatter-gather list, same rules
- * and usage.
- */
-static inline
-void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
-                        int nelems, enum dma_data_direction direction)
-{
-}
-
-static inline
-void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
-                           int nelems, enum dma_data_direction direction)
-{
-       mn10300_dcache_flush_inv();
-}
-
-static inline
-int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
-{
-       return 0;
-}
-
-/*
- * Return whether the given PCI device DMA address mask can be supported
- * properly.  For example, if your device can only drive the low 24-bits during
- * PCI bus mastering, then you would pass 0x00ffffff as the mask to this
- * function.
- */
-static inline
-int dma_supported(struct device *dev, u64 mask)
-{
-       /*
-        * we fall back to GFP_DMA when the mask isn't all 1s, so we can't
-        * guarantee allocations that must be within a tighter range than
-        * GFP_DMA
-        */
-       if (mask < 0x00ffffff)
-               return 0;
-       return 1;
-}
-
-static inline
-int dma_set_mask(struct device *dev, u64 mask)
-{
-       if (!dev->dma_mask || !dma_supported(dev, mask))
-               return -EIO;
-
-       *dev->dma_mask = mask;
-       return 0;
-}
-
-static inline
-int dma_get_cache_alignment(void)
-{
-       return 1 << L1_CACHE_SHIFT;
-}
-
-#define dma_is_consistent(d)   (1)
-
-static inline
-void dma_cache_sync(void *vaddr, size_t size,
-                   enum dma_data_direction direction)
-{
-       mn10300_dcache_flush_inv();
-}
-
-#endif
diff --git a/include/asm-mn10300/dma.h b/include/asm-mn10300/dma.h
deleted file mode 100644 (file)
index 098df2e..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/* MN10300 ISA DMA handlers and definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_DMA_H
-#define _ASM_DMA_H
-
-#include <asm/system.h>
-#include <linux/spinlock.h>
-#include <asm/io.h>
-#include <linux/delay.h>
-
-#undef MAX_DMA_CHANNELS                /* switch off linux/kernel/dma.c */
-#define MAX_DMA_ADDRESS                0xbfffffff
-
-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)
-{
-}
-
-static inline void disable_dma(unsigned int dmanr)
-{
-}
-
-/* Clear the 'DMA Pointer Flip Flop'.
- * Write 0 for LSB/MSB, 1 for MSB/LSB access.
- * 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 holding the DMA lock ! ---
- */
-static inline void clear_dma_ff(unsigned int dmanr)
-{
-}
-
-/* set mode (above) for a specific DMA channel */
-static inline void set_dma_mode(unsigned int dmanr, char mode)
-{
-}
-
-/* Set only the page register bits of the transfer address.
- * This is used for successive transfers when we know the contents of
- * the lower 16 bits of the DMA current address register, but a 64k boundary
- * may have been crossed.
- */
-static inline void set_dma_page(unsigned int dmanr, char pagenr)
-{
-}
-
-
-/* Set transfer address & page bits for specific DMA channel.
- * Assumes dma flipflop is clear.
- */
-static inline void set_dma_addr(unsigned int dmanr, unsigned int a)
-{
-}
-
-
-/* Set transfer size (max 64k for DMA1..3, 128k for DMA5..7) for
- * a specific DMA channel.
- * You must ensure the parameters are valid.
- * NOTE: from a manual: "the number of transfers is one more
- * than the initial word count"! This is taken into account.
- * Assumes dma flip-flop is clear.
- * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7.
- */
-static inline void set_dma_count(unsigned int dmanr, unsigned int count)
-{
-}
-
-
-/* Get DMA residue count. After a DMA transfer, this
- * should return zero. Reading this while a DMA transfer is
- * still in progress will return unpredictable results.
- * If called before the channel has been used, it may return 1.
- * Otherwise, it returns the number of _bytes_ left to transfer.
- *
- * Assumes DMA flip-flop is clear.
- */
-static inline int get_dma_residue(unsigned int dmanr)
-{
-       return 0;
-}
-
-
-/* These are in kernel/dma.c: */
-extern int request_dma(unsigned int dmanr, const char *device_id);
-extern void free_dma(unsigned int dmanr);
-
-/* From PCI */
-
-#ifdef CONFIG_PCI
-extern int isa_dma_bridge_buggy;
-#else
-#define isa_dma_bridge_buggy   (0)
-#endif
-
-#endif /* _ASM_DMA_H */
diff --git a/include/asm-mn10300/dmactl-regs.h b/include/asm-mn10300/dmactl-regs.h
deleted file mode 100644 (file)
index 58a199d..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/* MN10300 on-board DMA controller registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_DMACTL_REGS_H
-#define _ASM_DMACTL_REGS_H
-
-#include <asm/cpu-regs.h>
-
-#ifdef __KERNEL__
-
-/* DMA registers */
-#define        DMxCTR(N)               __SYSREG(0xd2000000 + ((N) * 0x100), u32)       /* control reg */
-#define        DMxCTR_BG               0x0000001f      /* transfer request source */
-#define        DMxCTR_BG_SOFT          0x00000000      /* - software source */
-#define        DMxCTR_BG_SC0TX         0x00000002      /* - serial port 0 transmission */
-#define        DMxCTR_BG_SC0RX         0x00000003      /* - serial port 0 reception */
-#define        DMxCTR_BG_SC1TX         0x00000004      /* - serial port 1 transmission */
-#define        DMxCTR_BG_SC1RX         0x00000005      /* - serial port 1 reception */
-#define        DMxCTR_BG_SC2TX         0x00000006      /* - serial port 2 transmission */
-#define        DMxCTR_BG_SC2RX         0x00000007      /* - serial port 2 reception */
-#define        DMxCTR_BG_TM0UFLOW      0x00000008      /* - timer 0 underflow */
-#define        DMxCTR_BG_TM1UFLOW      0x00000009      /* - timer 1 underflow */
-#define        DMxCTR_BG_TM2UFLOW      0x0000000a      /* - timer 2 underflow */
-#define        DMxCTR_BG_TM3UFLOW      0x0000000b      /* - timer 3 underflow */
-#define        DMxCTR_BG_TM6ACMPCAP    0x0000000c      /* - timer 6A compare/capture */
-#define        DMxCTR_BG_AFE           0x0000000d      /* - analogue front-end interrupt source */
-#define        DMxCTR_BG_ADC           0x0000000e      /* - A/D conversion end interrupt source */
-#define        DMxCTR_BG_IRDA          0x0000000f      /* - IrDA interrupt source */
-#define        DMxCTR_BG_RTC           0x00000010      /* - RTC interrupt source */
-#define        DMxCTR_BG_XIRQ0         0x00000011      /* - XIRQ0 pin interrupt source */
-#define        DMxCTR_BG_XIRQ1         0x00000012      /* - XIRQ1 pin interrupt source */
-#define        DMxCTR_BG_XDMR0         0x00000013      /* - external request 0 source (XDMR0 pin) */
-#define        DMxCTR_BG_XDMR1         0x00000014      /* - external request 1 source (XDMR1 pin) */
-#define        DMxCTR_SAM              0x000000e0      /* DMA transfer src addr mode */
-#define        DMxCTR_SAM_INCR         0x00000000      /* - increment */
-#define        DMxCTR_SAM_DECR         0x00000020      /* - decrement */
-#define        DMxCTR_SAM_FIXED        0x00000040      /* - fixed */
-#define        DMxCTR_DAM              0x00000000      /* DMA transfer dest addr mode */
-#define        DMxCTR_DAM_INCR         0x00000000      /* - increment */
-#define        DMxCTR_DAM_DECR         0x00000100      /* - decrement */
-#define        DMxCTR_DAM_FIXED        0x00000200      /* - fixed */
-#define        DMxCTR_TM               0x00001800      /* DMA transfer mode */
-#define        DMxCTR_TM_BATCH         0x00000000      /* - batch transfer */
-#define        DMxCTR_TM_INTERM        0x00001000      /* - intermittent transfer */
-#define        DMxCTR_UT               0x00006000      /* DMA transfer unit */
-#define        DMxCTR_UT_1             0x00000000      /* - 1 byte */
-#define        DMxCTR_UT_2             0x00002000      /* - 2 byte */
-#define        DMxCTR_UT_4             0x00004000      /* - 4 byte */
-#define        DMxCTR_UT_16            0x00006000      /* - 16 byte */
-#define        DMxCTR_TEN              0x00010000      /* DMA channel transfer enable */
-#define        DMxCTR_RQM              0x00060000      /* external request input source mode */
-#define        DMxCTR_RQM_FALLEDGE     0x00000000      /* - falling edge */
-#define        DMxCTR_RQM_RISEEDGE     0x00020000      /* - rising edge */
-#define        DMxCTR_RQM_LOLEVEL      0x00040000      /* - low level */
-#define        DMxCTR_RQM_HILEVEL      0x00060000      /* - high level */
-#define        DMxCTR_RQF              0x01000000      /* DMA transfer request flag */
-#define        DMxCTR_XEND             0x80000000      /* DMA transfer end flag */
-
-#define        DMxSRC(N)               __SYSREG(0xd2000004 + ((N) * 0x100), u32)       /* control reg */
-
-#define        DMxDST(N)               __SYSREG(0xd2000008 + ((N) * 0x100), u32)       /* src addr reg */
-
-#define        DMxSIZ(N)               __SYSREG(0xd200000c + ((N) * 0x100), u32)       /* dest addr reg */
-#define DMxSIZ_CT              0x000fffff      /* number of bytes to transfer */
-
-#define        DMxCYC(N)               __SYSREG(0xd2000010 + ((N) * 0x100), u32)       /* intermittent
-                                                                                * size reg */
-#define DMxCYC_CYC             0x000000ff      /* number of interrmittent transfers -1 */
-
-#define DM0IRQ                 16              /* DMA channel 0 complete IRQ */
-#define DM1IRQ                 17              /* DMA channel 1 complete IRQ */
-#define DM2IRQ                 18              /* DMA channel 2 complete IRQ */
-#define DM3IRQ                 19              /* DMA channel 3 complete IRQ */
-
-#define        DM0ICR                  GxICR(DM0IRQ)   /* DMA channel 0 complete intr ctrl reg */
-#define        DM1ICR                  GxICR(DM0IR1)   /* DMA channel 1 complete intr ctrl reg */
-#define        DM2ICR                  GxICR(DM0IR2)   /* DMA channel 2 complete intr ctrl reg */
-#define        DM3ICR                  GxICR(DM0IR3)   /* DMA channel 3 complete intr ctrl reg */
-
-#ifndef __ASSEMBLY__
-
-struct mn10300_dmactl_regs {
-       u32             ctr;
-       const void      *src;
-       void            *dst;
-       u32             siz;
-       u32             cyc;
-} __attribute__((aligned(0x100)));
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_DMACTL_REGS_H */
diff --git a/include/asm-mn10300/elf.h b/include/asm-mn10300/elf.h
deleted file mode 100644 (file)
index bf09f8b..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/* MN10300 ELF constant and register definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_ELF_H
-#define _ASM_ELF_H
-
-#include <linux/utsname.h>
-#include <asm/ptrace.h>
-#include <asm/user.h>
-
-/*
- * AM33 relocations
- */
-#define R_MN10300_NONE         0       /* No reloc.  */
-#define R_MN10300_32           1       /* Direct 32 bit.  */
-#define R_MN10300_16           2       /* Direct 16 bit.  */
-#define R_MN10300_8            3       /* Direct 8 bit.  */
-#define R_MN10300_PCREL32      4       /* PC-relative 32-bit.  */
-#define R_MN10300_PCREL16      5       /* PC-relative 16-bit signed.  */
-#define R_MN10300_PCREL8       6       /* PC-relative 8-bit signed.  */
-#define R_MN10300_24           9       /* Direct 24 bit.  */
-#define R_MN10300_RELATIVE     23      /* Adjust by program base.  */
-
-/*
- * ELF register definitions..
- */
-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];
-
-#define ELF_NFPREG 32
-typedef float elf_fpreg_t;
-
-typedef struct {
-       elf_fpreg_t     fpregs[ELF_NFPREG];
-       u_int32_t       fpcr;
-} elf_fpregset_t;
-
-extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
-
-/*
- * This is used to ensure we don't load something for the wrong architecture
- */
-#define elf_check_arch(x) \
-       (((x)->e_machine == EM_CYGNUS_MN10300) ||       \
-        ((x)->e_machine == EM_MN10300))
-
-/*
- * These are used to set parameters in the core dumps.
- */
-#define ELF_CLASS      ELFCLASS32
-#define ELF_DATA       ELFDATA2LSB
-#define ELF_ARCH       EM_MN10300
-
-/*
- * ELF process initialiser
- */
-#define ELF_PLAT_INIT(_r, load_addr)                                   \
-do {                                                                   \
-       struct pt_regs *_ur = current->thread.uregs;                    \
-       _ur->a3   = 0;  _ur->a2   = 0;  _ur->d3   = 0;  _ur->d2   = 0;  \
-       _ur->mcvf = 0;  _ur->mcrl = 0;  _ur->mcrh = 0;  _ur->mdrq = 0;  \
-       _ur->e1   = 0;  _ur->e0   = 0;  _ur->e7   = 0;  _ur->e6   = 0;  \
-       _ur->e5   = 0;  _ur->e4   = 0;  _ur->e3   = 0;  _ur->e2   = 0;  \
-       _ur->lar  = 0;  _ur->lir  = 0;  _ur->mdr  = 0;                  \
-       _ur->a1   = 0;  _ur->a0   = 0;  _ur->d1   = 0;  _ur->d0   = 0;  \
-} while (0)
-
-#define USE_ELF_CORE_DUMP
-#define ELF_EXEC_PAGESIZE      4096
-
-/*
- * This is the location that an ET_DYN program is loaded if exec'ed.  Typical
- * use of this is to invoke "./ld.so someprog" to test out a new version of
- * 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.
- * - must clear the VMALLOC area
- */
-#define ELF_ET_DYN_BASE         0x04000000
-
-/*
- * regs is struct pt_regs, pr_reg is elf_gregset_t (which is
- * now struct user_regs, they are different)
- * - ELF_CORE_COPY_REGS has been guessed, and may be wrong
- */
-#define ELF_CORE_COPY_REGS(pr_reg, regs)       \
-do {                                           \
-       pr_reg[0]       = regs->a3;             \
-       pr_reg[1]       = regs->a2;             \
-       pr_reg[2]       = regs->d3;             \
-       pr_reg[3]       = regs->d2;             \
-       pr_reg[4]       = regs->mcvf;           \
-       pr_reg[5]       = regs->mcrl;           \
-       pr_reg[6]       = regs->mcrh;           \
-       pr_reg[7]       = regs->mdrq;           \
-       pr_reg[8]       = regs->e1;             \
-       pr_reg[9]       = regs->e0;             \
-       pr_reg[10]      = regs->e7;             \
-       pr_reg[11]      = regs->e6;             \
-       pr_reg[12]      = regs->e5;             \
-       pr_reg[13]      = regs->e4;             \
-       pr_reg[14]      = regs->e3;             \
-       pr_reg[15]      = regs->e2;             \
-       pr_reg[16]      = regs->sp;             \
-       pr_reg[17]      = regs->lar;            \
-       pr_reg[18]      = regs->lir;            \
-       pr_reg[19]      = regs->mdr;            \
-       pr_reg[20]      = regs->a1;             \
-       pr_reg[21]      = regs->a0;             \
-       pr_reg[22]      = regs->d1;             \
-       pr_reg[23]      = regs->d0;             \
-       pr_reg[24]      = regs->orig_d0;        \
-       pr_reg[25]      = regs->epsw;           \
-       pr_reg[26]      = regs->pc;             \
-} while (0);
-
-/*
- * This yields a mask that user programs can use to figure out what
- * instruction set this CPU supports.  This could be done in user space,
- * but it's not easy, and we've already done it here.
- */
-#define ELF_HWCAP      (0)
-
-/*
- * This yields a string that ld.so will use to load implementation
- * specific libraries for optimization.  This is more specific in
- * intent than poking at uname or /proc/cpuinfo.
- *
- * For the moment, we have only optimizations for the Intel generations,
- * but that could change...
- */
-#define ELF_PLATFORM  (NULL)
-
-#ifdef __KERNEL__
-#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
-#endif
-
-#endif /* _ASM_ELF_H */
diff --git a/include/asm-mn10300/emergency-restart.h b/include/asm-mn10300/emergency-restart.h
deleted file mode 100644 (file)
index 3711bd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/emergency-restart.h>
diff --git a/include/asm-mn10300/errno.h b/include/asm-mn10300/errno.h
deleted file mode 100644 (file)
index 4c82b50..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/errno.h>
diff --git a/include/asm-mn10300/exceptions.h b/include/asm-mn10300/exceptions.h
deleted file mode 100644 (file)
index fa16466..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/* MN10300 Microcontroller core exceptions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_EXCEPTIONS_H
-#define _ASM_EXCEPTIONS_H
-
-#include <linux/linkage.h>
-
-/*
- * define the breakpoint instruction opcode to use
- * - note that the JTAG unit steals 0xFF, so we want to avoid that if we can
- *   (can use 0xF7)
- */
-#define GDBSTUB_BKPT           0xFF
-
-#ifndef __ASSEMBLY__
-
-/*
- * enumeration of exception codes (as extracted from TBR MSW)
- */
-enum exception_code {
-       EXCEP_RESET             = 0x000000,     /* reset */
-
-       /* MMU exceptions */
-       EXCEP_ITLBMISS          = 0x000100,     /* instruction TLB miss */
-       EXCEP_DTLBMISS          = 0x000108,     /* data TLB miss */
-       EXCEP_IAERROR           = 0x000110,     /* instruction address */
-       EXCEP_DAERROR           = 0x000118,     /* data address */
-
-       /* system exceptions */
-       EXCEP_TRAP              = 0x000128,     /* program interrupt (PI instruction) */
-       EXCEP_ISTEP             = 0x000130,     /* single step */
-       EXCEP_IBREAK            = 0x000150,     /* instruction breakpoint */
-       EXCEP_OBREAK            = 0x000158,     /* operand breakpoint */
-       EXCEP_PRIVINS           = 0x000160,     /* privileged instruction execution */
-       EXCEP_UNIMPINS          = 0x000168,     /* unimplemented instruction execution */
-       EXCEP_UNIMPEXINS        = 0x000170,     /* unimplemented extended instruction execution */
-       EXCEP_MEMERR            = 0x000178,     /* illegal memory access */
-       EXCEP_MISALIGN          = 0x000180,     /* misalignment */
-       EXCEP_BUSERROR          = 0x000188,     /* bus error */
-       EXCEP_ILLINSACC         = 0x000190,     /* illegal instruction access */
-       EXCEP_ILLDATACC         = 0x000198,     /* illegal data access */
-       EXCEP_IOINSACC          = 0x0001a0,     /* I/O space instruction access */
-       EXCEP_PRIVINSACC        = 0x0001a8,     /* privileged space instruction access */
-       EXCEP_PRIVDATACC        = 0x0001b0,     /* privileged space data access */
-       EXCEP_DATINSACC         = 0x0001b8,     /* data space instruction access */
-       EXCEP_DOUBLE_FAULT      = 0x000200,     /* double fault */
-
-       /* FPU exceptions */
-       EXCEP_FPU_DISABLED      = 0x0001c0,     /* FPU disabled */
-       EXCEP_FPU_UNIMPINS      = 0x0001c8,     /* FPU unimplemented operation */
-       EXCEP_FPU_OPERATION     = 0x0001d0,     /* FPU operation */
-
-       /* interrupts */
-       EXCEP_WDT               = 0x000240,     /* watchdog timer overflow */
-       EXCEP_NMI               = 0x000248,     /* non-maskable interrupt */
-       EXCEP_IRQ_LEVEL0        = 0x000280,     /* level 0 maskable interrupt */
-       EXCEP_IRQ_LEVEL1        = 0x000288,     /* level 1 maskable interrupt */
-       EXCEP_IRQ_LEVEL2        = 0x000290,     /* level 2 maskable interrupt */
-       EXCEP_IRQ_LEVEL3        = 0x000298,     /* level 3 maskable interrupt */
-       EXCEP_IRQ_LEVEL4        = 0x0002a0,     /* level 4 maskable interrupt */
-       EXCEP_IRQ_LEVEL5        = 0x0002a8,     /* level 5 maskable interrupt */
-       EXCEP_IRQ_LEVEL6        = 0x0002b0,     /* level 6 maskable interrupt */
-
-       /* system calls */
-       EXCEP_SYSCALL0          = 0x000300,     /* system call 0 */
-       EXCEP_SYSCALL1          = 0x000308,     /* system call 1 */
-       EXCEP_SYSCALL2          = 0x000310,     /* system call 2 */
-       EXCEP_SYSCALL3          = 0x000318,     /* system call 3 */
-       EXCEP_SYSCALL4          = 0x000320,     /* system call 4 */
-       EXCEP_SYSCALL5          = 0x000328,     /* system call 5 */
-       EXCEP_SYSCALL6          = 0x000330,     /* system call 6 */
-       EXCEP_SYSCALL7          = 0x000338,     /* system call 7 */
-       EXCEP_SYSCALL8          = 0x000340,     /* system call 8 */
-       EXCEP_SYSCALL9          = 0x000348,     /* system call 9 */
-       EXCEP_SYSCALL10         = 0x000350,     /* system call 10 */
-       EXCEP_SYSCALL11         = 0x000358,     /* system call 11 */
-       EXCEP_SYSCALL12         = 0x000360,     /* system call 12 */
-       EXCEP_SYSCALL13         = 0x000368,     /* system call 13 */
-       EXCEP_SYSCALL14         = 0x000370,     /* system call 14 */
-       EXCEP_SYSCALL15         = 0x000378,     /* system call 15 */
-};
-
-extern void __set_intr_stub(enum exception_code code, void *handler);
-extern void set_intr_stub(enum exception_code code, void *handler);
-extern void set_jtag_stub(enum exception_code code, void *handler);
-
-struct pt_regs;
-
-extern asmlinkage void __common_exception(void);
-extern asmlinkage void itlb_miss(void);
-extern asmlinkage void dtlb_miss(void);
-extern asmlinkage void itlb_aerror(void);
-extern asmlinkage void dtlb_aerror(void);
-extern asmlinkage void raw_bus_error(void);
-extern asmlinkage void double_fault(void);
-extern asmlinkage int  system_call(struct pt_regs *);
-extern asmlinkage void fpu_exception(struct pt_regs *, enum exception_code);
-extern asmlinkage void nmi(struct pt_regs *, enum exception_code);
-extern asmlinkage void uninitialised_exception(struct pt_regs *,
-                                              enum exception_code);
-extern asmlinkage void irq_handler(void);
-extern asmlinkage void profile_handler(void);
-extern asmlinkage void nmi_handler(void);
-extern asmlinkage void misalignment(struct pt_regs *, enum exception_code);
-
-extern void die(const char *, struct pt_regs *, enum exception_code)
-       ATTRIB_NORET;
-
-extern int die_if_no_fixup(const char *, struct pt_regs *, enum exception_code);
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _ASM_EXCEPTIONS_H */
diff --git a/include/asm-mn10300/fb.h b/include/asm-mn10300/fb.h
deleted file mode 100644 (file)
index 697b24a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* MN10300 Frame buffer stuff
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_FB_H
-#define _ASM_FB_H
-
-#include <linux/fb.h>
-
-#define fb_pgprotect(...) do {} while (0)
-
-static inline int fb_is_primary_device(struct fb_info *info)
-{
-       return 0;
-}
-
-#endif /* _ASM_FB_H */
diff --git a/include/asm-mn10300/fcntl.h b/include/asm-mn10300/fcntl.h
deleted file mode 100644 (file)
index 46ab12d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/fcntl.h>
diff --git a/include/asm-mn10300/fpu.h b/include/asm-mn10300/fpu.h
deleted file mode 100644 (file)
index 64a2b83..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/* MN10300 FPU definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * Derived from include/asm-i386/i387.h: Copyright (C) 1994 Linus Torvalds
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_FPU_H
-#define _ASM_FPU_H
-
-#include <asm/processor.h>
-#include <asm/sigcontext.h>
-#include <asm/user.h>
-
-#ifdef __KERNEL__
-
-/* the task that owns the FPU state */
-extern struct task_struct *fpu_state_owner;
-
-#define set_using_fpu(tsk)                             \
-do {                                                   \
-       (tsk)->thread.fpu_flags |= THREAD_USING_FPU;    \
-} while (0)
-
-#define clear_using_fpu(tsk)                           \
-do {                                                   \
-       (tsk)->thread.fpu_flags &= ~THREAD_USING_FPU;   \
-} while (0)
-
-#define is_using_fpu(tsk) ((tsk)->thread.fpu_flags & THREAD_USING_FPU)
-
-#define unlazy_fpu(tsk)                                        \
-do {                                                   \
-       preempt_disable();                              \
-       if (fpu_state_owner == (tsk))                   \
-               fpu_save(&tsk->thread.fpu_state);       \
-       preempt_enable();                               \
-} while (0)
-
-#define exit_fpu()                             \
-do {                                           \
-       struct task_struct *__tsk = current;    \
-       preempt_disable();                      \
-       if (fpu_state_owner == __tsk)           \
-               fpu_state_owner = NULL;         \
-       preempt_enable();                       \
-} while (0)
-
-#define flush_fpu()                                    \
-do {                                                   \
-       struct task_struct *__tsk = current;            \
-       preempt_disable();                              \
-       if (fpu_state_owner == __tsk) {                 \
-               fpu_state_owner = NULL;                 \
-               __tsk->thread.uregs->epsw &= ~EPSW_FE;  \
-       }                                               \
-       preempt_enable();                               \
-       clear_using_fpu(__tsk);                         \
-} while (0)
-
-extern asmlinkage void fpu_init_state(void);
-extern asmlinkage void fpu_kill_state(struct task_struct *);
-extern asmlinkage void fpu_disabled(struct pt_regs *, enum exception_code);
-extern asmlinkage void fpu_exception(struct pt_regs *, enum exception_code);
-
-#ifdef CONFIG_FPU
-extern asmlinkage void fpu_save(struct fpu_state_struct *);
-extern asmlinkage void fpu_restore(struct fpu_state_struct *);
-#else
-#define fpu_save(a)
-#define fpu_restore(a)
-#endif /* CONFIG_FPU  */
-
-/*
- * signal frame handlers
- */
-extern int fpu_setup_sigcontext(struct fpucontext *buf);
-extern int fpu_restore_sigcontext(struct fpucontext *buf);
-
-#endif /* __KERNEL__ */
-#endif /* _ASM_FPU_H */
diff --git a/include/asm-mn10300/frame.inc b/include/asm-mn10300/frame.inc
deleted file mode 100644 (file)
index 5b1949b..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/* MN10300 Microcontroller core system register definitions -*- asm -*-
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_FRAME_INC
-#define _ASM_FRAME_INC
-
-#ifndef __ASSEMBLY__
-#error not for use in C files
-#endif
-
-#ifndef __ASM_OFFSETS_H__
-#include <asm/asm-offsets.h>
-#endif
-
-#define pi break
-
-#define fp a3
-
-###############################################################################
-#
-# build a stack frame from the registers
-# - the caller has subtracted 4 from SP before coming here
-#
-###############################################################################
-.macro SAVE_ALL
-       add     -4,sp                           # next exception frame ptr save area
-       movm    [other],(sp)
-       mov     usp,a1
-       mov     a1,(sp)                         # USP in MOVM[other] dummy slot
-       movm    [d2,d3,a2,a3,exreg0,exreg1,exother],(sp)
-       mov     sp,fp                           # FRAME pointer in A3
-       add     -12,sp                          # allow for calls to be made
-       mov     (__frame),a1
-       mov     a1,(REG_NEXT,fp)
-       mov     fp,(__frame)
-
-       and     ~EPSW_FE,epsw                   # disable the FPU inside the kernel
-
-       # we may be holding current in E2
-#ifdef CONFIG_MN10300_CURRENT_IN_E2
-       mov     (__current),e2
-#endif
-.endm
-
-###############################################################################
-#
-# restore the registers from a stack frame
-#
-###############################################################################
-.macro RESTORE_ALL
-       # peel back the stack to the calling frame
-       # - this permits execve() to discard extra frames due to kernel syscalls
-       mov     (__frame),fp
-       mov     fp,sp
-       mov     (REG_NEXT,fp),d0                # userspace has regs->next == 0
-       mov     d0,(__frame)
-
-#ifndef CONFIG_MN10300_USING_JTAG
-       mov     (REG_EPSW,fp),d0
-       btst    EPSW_T,d0
-       beq     99f
-
-       or      EPSW_NMID,epsw
-       movhu   (DCR),d1
-       or      0x0001, d1
-       movhu   d1,(DCR)
-
-99:
-#endif
-       movm    (sp),[d2,d3,a2,a3,exreg0,exreg1,exother]
-
-       # must restore usp even if returning to kernel space,
-       # when CONFIG_PREEMPT is enabled.
-       mov     (sp),a1                         # USP in MOVM[other] dummy slot
-       mov     a1,usp
-
-       movm    (sp),[other]
-       add     8,sp
-       rti
-
-.endm
-
-
-#endif /* _ASM_FRAME_INC */
diff --git a/include/asm-mn10300/ftrace.h b/include/asm-mn10300/ftrace.h
deleted file mode 100644 (file)
index 40a8c17..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* empty */
diff --git a/include/asm-mn10300/futex.h b/include/asm-mn10300/futex.h
deleted file mode 100644 (file)
index 0b74582..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/futex.h>
diff --git a/include/asm-mn10300/gdb-stub.h b/include/asm-mn10300/gdb-stub.h
deleted file mode 100644 (file)
index e5a6368..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/* MN10300 Kernel GDB stub definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from asm-mips/gdb-stub.h (c) 1995 Andreas Busse
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_GDB_STUB_H
-#define _ASM_GDB_STUB_H
-
-#include <asm/exceptions.h>
-
-/*
- * register ID numbers in GDB remote protocol
- */
-
-#define GDB_REGID_PC           9
-#define GDB_REGID_FP           7
-#define GDB_REGID_SP           8
-
-/*
- * virtual stack layout for the GDB exception handler
- */
-#define NUMREGS                        64
-
-#define GDB_FR_D0              (0 * 4)
-#define GDB_FR_D1              (1 * 4)
-#define GDB_FR_D2              (2 * 4)
-#define GDB_FR_D3              (3 * 4)
-#define GDB_FR_A0              (4 * 4)
-#define GDB_FR_A1              (5 * 4)
-#define GDB_FR_A2              (6 * 4)
-#define GDB_FR_A3              (7 * 4)
-
-#define GDB_FR_SP              (8 * 4)
-#define GDB_FR_PC              (9 * 4)
-#define GDB_FR_MDR             (10 * 4)
-#define GDB_FR_EPSW            (11 * 4)
-#define GDB_FR_LIR             (12 * 4)
-#define GDB_FR_LAR             (13 * 4)
-#define GDB_FR_MDRQ            (14 * 4)
-
-#define GDB_FR_E0              (15 * 4)
-#define GDB_FR_E1              (16 * 4)
-#define GDB_FR_E2              (17 * 4)
-#define GDB_FR_E3              (18 * 4)
-#define GDB_FR_E4              (19 * 4)
-#define GDB_FR_E5              (20 * 4)
-#define GDB_FR_E6              (21 * 4)
-#define GDB_FR_E7              (22 * 4)
-
-#define GDB_FR_SSP             (23 * 4)
-#define GDB_FR_MSP             (24 * 4)
-#define GDB_FR_USP             (25 * 4)
-#define GDB_FR_MCRH            (26 * 4)
-#define GDB_FR_MCRL            (27 * 4)
-#define GDB_FR_MCVF            (28 * 4)
-
-#define GDB_FR_FPCR            (29 * 4)
-#define GDB_FR_DUMMY0          (30 * 4)
-#define GDB_FR_DUMMY1          (31 * 4)
-
-#define GDB_FR_FS0             (32 * 4)
-
-#define GDB_FR_SIZE            (NUMREGS * 4)
-
-#ifndef __ASSEMBLY__
-
-/*
- * This is the same as above, but for the high-level
- * part of the GDB stub.
- */
-
-struct gdb_regs {
-       /* saved main processor registers */
-       u32     d0, d1, d2, d3, a0, a1, a2, a3;
-       u32     sp, pc, mdr, epsw, lir, lar, mdrq;
-       u32     e0, e1, e2, e3, e4, e5, e6, e7;
-       u32     ssp, msp, usp, mcrh, mcrl, mcvf;
-
-       /* saved floating point registers */
-       u32     fpcr, _dummy0, _dummy1;
-       u32     fs0,  fs1,  fs2,  fs3,  fs4,  fs5,  fs6,  fs7;
-       u32     fs8,  fs9,  fs10, fs11, fs12, fs13, fs14, fs15;
-       u32     fs16, fs17, fs18, fs19, fs20, fs21, fs22, fs23;
-       u32     fs24, fs25, fs26, fs27, fs28, fs29, fs30, fs31;
-};
-
-/*
- * Prototypes
- */
-extern void show_registers_only(struct pt_regs *regs);
-
-extern asmlinkage void gdbstub_init(void);
-extern asmlinkage void gdbstub_exit(int status);
-extern asmlinkage void gdbstub_io_init(void);
-extern asmlinkage void gdbstub_io_set_baud(unsigned baud);
-extern asmlinkage int  gdbstub_io_rx_char(unsigned char *_ch, int nonblock);
-extern asmlinkage void gdbstub_io_tx_char(unsigned char ch);
-extern asmlinkage void gdbstub_io_tx_flush(void);
-
-extern asmlinkage void gdbstub_io_rx_handler(void);
-extern asmlinkage void gdbstub_rx_irq(struct pt_regs *, enum exception_code);
-extern asmlinkage int  gdbstub_intercept(struct pt_regs *, enum exception_code);
-extern asmlinkage void gdbstub_exception(struct pt_regs *, enum exception_code);
-extern asmlinkage void __gdbstub_bug_trap(void);
-extern asmlinkage void __gdbstub_pause(void);
-extern asmlinkage void start_kernel(void);
-
-#ifndef CONFIG_MN10300_CACHE_DISABLED
-extern asmlinkage void gdbstub_purge_cache(void);
-#else
-#define gdbstub_purge_cache()  do {} while (0)
-#endif
-
-/* Used to prevent crashes in memory access */
-extern asmlinkage int  gdbstub_read_byte(const u8 *, u8 *);
-extern asmlinkage int  gdbstub_read_word(const u8 *, u8 *);
-extern asmlinkage int  gdbstub_read_dword(const u8 *, u8 *);
-extern asmlinkage int  gdbstub_write_byte(u32, u8 *);
-extern asmlinkage int  gdbstub_write_word(u32, u8 *);
-extern asmlinkage int  gdbstub_write_dword(u32, u8 *);
-
-extern asmlinkage void gdbstub_read_byte_guard(void);
-extern asmlinkage void gdbstub_read_byte_cont(void);
-extern asmlinkage void gdbstub_read_word_guard(void);
-extern asmlinkage void gdbstub_read_word_cont(void);
-extern asmlinkage void gdbstub_read_dword_guard(void);
-extern asmlinkage void gdbstub_read_dword_cont(void);
-extern asmlinkage void gdbstub_write_byte_guard(void);
-extern asmlinkage void gdbstub_write_byte_cont(void);
-extern asmlinkage void gdbstub_write_word_guard(void);
-extern asmlinkage void gdbstub_write_word_cont(void);
-extern asmlinkage void gdbstub_write_dword_guard(void);
-extern asmlinkage void gdbstub_write_dword_cont(void);
-
-extern u8      gdbstub_rx_buffer[PAGE_SIZE];
-extern u32     gdbstub_rx_inp;
-extern u32     gdbstub_rx_outp;
-extern u8      gdbstub_rx_overflow;
-extern u8      gdbstub_busy;
-extern u8      gdbstub_rx_unget;
-
-#ifdef CONFIG_GDBSTUB_DEBUGGING
-extern void gdbstub_printk(const char *fmt, ...)
-       __attribute__((format(printf, 1, 2)));
-#else
-static inline __attribute__((format(printf, 1, 2)))
-void gdbstub_printk(const char *fmt, ...)
-{
-}
-#endif
-
-#ifdef CONFIG_GDBSTUB_DEBUG_ENTRY
-#define gdbstub_entry(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
-#else
-#define gdbstub_entry(FMT, ...) ({ 0; })
-#endif
-
-#ifdef CONFIG_GDBSTUB_DEBUG_PROTOCOL
-#define gdbstub_proto(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
-#else
-#define gdbstub_proto(FMT, ...) ({ 0; })
-#endif
-
-#ifdef CONFIG_GDBSTUB_DEBUG_IO
-#define gdbstub_io(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
-#else
-#define gdbstub_io(FMT, ...) ({ 0; })
-#endif
-
-#ifdef CONFIG_GDBSTUB_DEBUG_BREAKPOINT
-#define gdbstub_bkpt(FMT, ...) gdbstub_printk(FMT, ##__VA_ARGS__)
-#else
-#define gdbstub_bkpt(FMT, ...) ({ 0; })
-#endif
-
-#endif /* !__ASSEMBLY__ */
-#endif /* _ASM_GDB_STUB_H */
diff --git a/include/asm-mn10300/hardirq.h b/include/asm-mn10300/hardirq.h
deleted file mode 100644 (file)
index 54d9501..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* MN10300 Hardware IRQ statistics and management
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Modified by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_HARDIRQ_H
-#define _ASM_HARDIRQ_H
-
-#include <linux/threads.h>
-#include <linux/irq.h>
-#include <asm/exceptions.h>
-
-/* assembly code in softirq.h is sensitive to the offsets of these fields */
-typedef struct {
-       unsigned int    __softirq_pending;
-       unsigned long   idle_timestamp;
-       unsigned int    __nmi_count;    /* arch dependent */
-       unsigned int    __irq_count;    /* arch dependent */
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
-
-extern void ack_bad_irq(int irq);
-
-/*
- * manipulate stubs in the MN10300 CPU Trap/Interrupt Vector table
- * - these should jump to __common_exception in entry.S unless there's a good
- *   reason to do otherwise (see trap_preinit() in traps.c)
- */
-typedef void (*intr_stub_fnx)(struct pt_regs *regs,
-                             enum exception_code intcode);
-
-/*
- * manipulate pointers in the Exception table (see entry.S)
- * - these are indexed by decoding the lower 24 bits of the TBR register
- * - note that the MN103E010 doesn't always trap through the correct vector,
- *   but does always set the TBR correctly
- */
-extern asmlinkage void set_excp_vector(enum exception_code code,
-                                      intr_stub_fnx handler);
-
-#endif /* _ASM_HARDIRQ_H */
diff --git a/include/asm-mn10300/highmem.h b/include/asm-mn10300/highmem.h
deleted file mode 100644 (file)
index 90f2abb..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* MN10300 Virtual kernel memory mappings for high memory
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-i386/highmem.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_HIGHMEM_H
-#define _ASM_HIGHMEM_H
-
-#ifdef __KERNEL__
-
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/highmem.h>
-#include <asm/kmap_types.h>
-#include <asm/pgtable.h>
-
-/* undef for production */
-#undef HIGHMEM_DEBUG
-
-/* declarations for highmem.c */
-extern unsigned long highstart_pfn, highend_pfn;
-
-extern pte_t *kmap_pte;
-extern pgprot_t kmap_prot;
-extern pte_t *pkmap_page_table;
-
-extern void __init kmap_init(void);
-
-/*
- * Right now we initialize only a single pte table. It can be extended
- * easily, subsequent pte tables have to be allocated in one physical
- * chunk of RAM.
- */
-#define PKMAP_BASE     0xfe000000UL
-#define LAST_PKMAP     1024
-#define LAST_PKMAP_MASK (LAST_PKMAP - 1)
-#define PKMAP_NR(virt)  ((virt - PKMAP_BASE) >> PAGE_SHIFT)
-#define PKMAP_ADDR(nr)  (PKMAP_BASE + ((nr) << PAGE_SHIFT))
-
-extern unsigned long kmap_high(struct page *page);
-extern void kunmap_high(struct page *page);
-
-static inline unsigned long kmap(struct page *page)
-{
-       if (in_interrupt())
-               BUG();
-       if (page < highmem_start_page)
-               return page_address(page);
-       return kmap_high(page);
-}
-
-static inline void kunmap(struct page *page)
-{
-       if (in_interrupt())
-               BUG();
-       if (page < highmem_start_page)
-               return;
-       kunmap_high(page);
-}
-
-/*
- * The use of kmap_atomic/kunmap_atomic is discouraged - kmap/kunmap
- * gives a more generic (and caching) interface. But kmap_atomic can
- * be used in IRQ contexts, so in some (very limited) cases we need
- * it.
- */
-static inline unsigned long kmap_atomic(struct page *page, enum km_type type)
-{
-       enum fixed_addresses idx;
-       unsigned long vaddr;
-
-       if (page < highmem_start_page)
-               return page_address(page);
-
-       debug_kmap_atomic(type);
-       idx = type + KM_TYPE_NR * smp_processor_id();
-       vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
-#if HIGHMEM_DEBUG
-       if (!pte_none(*(kmap_pte - idx)))
-               BUG();
-#endif
-       set_pte(kmap_pte - idx, mk_pte(page, kmap_prot));
-       __flush_tlb_one(vaddr);
-
-       return vaddr;
-}
-
-static inline void kunmap_atomic(unsigned long vaddr, enum km_type type)
-{
-#if HIGHMEM_DEBUG
-       enum fixed_addresses idx = type + KM_TYPE_NR * smp_processor_id();
-
-       if (vaddr < FIXADDR_START) /* FIXME */
-               return;
-
-       if (vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx))
-               BUG();
-
-       /*
-        * force other mappings to Oops if they'll try to access
-        * this pte without first remap it
-        */
-       pte_clear(kmap_pte - idx);
-       __flush_tlb_one(vaddr);
-#endif
-}
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_HIGHMEM_H */
diff --git a/include/asm-mn10300/hw_irq.h b/include/asm-mn10300/hw_irq.h
deleted file mode 100644 (file)
index 7061990..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* MN10300 Hardware interrupt definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
-
-#endif /* _ASM_HW_IRQ_H */
diff --git a/include/asm-mn10300/intctl-regs.h b/include/asm-mn10300/intctl-regs.h
deleted file mode 100644 (file)
index ba544c7..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/* MN10300 On-board interrupt controller registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_INTCTL_REGS_H
-#define _ASM_INTCTL_REGS_H
-
-#include <asm/cpu-regs.h>
-
-#ifdef __KERNEL__
-
-/* interrupt controller registers */
-#define GxICR(X)               __SYSREG(0xd4000000 + (X) * 4, u16)     /* group irq ctrl regs */
-
-#define IAGR                   __SYSREG(0xd4000100, u16)       /* intr acceptance group reg */
-#define IAGR_GN                        0x00fc          /* group number register
-                                                * (documentation _has_ to be wrong)
-                                                */
-
-#define EXTMD                  __SYSREG(0xd4000200, u16)       /* external pin intr spec reg */
-#define GET_XIRQ_TRIGGER(X) ((EXTMD >> ((X) * 2)) & 3)
-
-#define SET_XIRQ_TRIGGER(X,Y)                  \
-do {                                           \
-       u16 x = EXTMD;                          \
-       x &= ~(3 << ((X) * 2));                 \
-       x |= ((Y) & 3) << ((X) * 2);            \
-       EXTMD = x;                              \
-} while (0)
-
-#define XIRQ_TRIGGER_LOWLEVEL  0
-#define XIRQ_TRIGGER_HILEVEL   1
-#define XIRQ_TRIGGER_NEGEDGE   2
-#define XIRQ_TRIGGER_POSEDGE   3
-
-/* non-maskable interrupt control */
-#define NMIIRQ                 0
-#define NMICR                  GxICR(NMIIRQ)   /* NMI control register */
-#define NMICR_NMIF             0x0001          /* NMI pin interrupt flag */
-#define NMICR_WDIF             0x0002          /* watchdog timer overflow flag */
-#define NMICR_ABUSERR          0x0008          /* async bus error flag */
-
-/* maskable interrupt control */
-#define GxICR_DETECT           0x0001          /* interrupt detect flag */
-#define GxICR_REQUEST          0x0010          /* interrupt request flag */
-#define GxICR_ENABLE           0x0100          /* interrupt enable flag */
-#define GxICR_LEVEL            0x7000          /* interrupt priority level */
-#define GxICR_LEVEL_0          0x0000          /* - level 0 */
-#define GxICR_LEVEL_1          0x1000          /* - level 1 */
-#define GxICR_LEVEL_2          0x2000          /* - level 2 */
-#define GxICR_LEVEL_3          0x3000          /* - level 3 */
-#define GxICR_LEVEL_4          0x4000          /* - level 4 */
-#define GxICR_LEVEL_5          0x5000          /* - level 5 */
-#define GxICR_LEVEL_6          0x6000          /* - level 6 */
-#define GxICR_LEVEL_SHIFT      12
-
-#ifndef __ASSEMBLY__
-extern void set_intr_level(int irq, u16 level);
-extern void set_intr_postackable(int irq);
-#endif
-
-/* external interrupts */
-#define XIRQxICR(X)            GxICR((X))      /* external interrupt control regs */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_INTCTL_REGS_H */
diff --git a/include/asm-mn10300/io.h b/include/asm-mn10300/io.h
deleted file mode 100644 (file)
index c1a4119..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/* MN10300 I/O port emulation and memory-mapped I/O
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
-
-#include <asm/page.h> /* I/O is all done through memory accesses */
-#include <asm/cpu-regs.h>
-#include <asm/cacheflush.h>
-
-#define mmiowb() do {} while (0)
-
-/*****************************************************************************/
-/*
- * readX/writeX() are used to access memory mapped devices. On some
- * architectures the memory mapped IO stuff needs to be accessed
- * differently. On the x86 architecture, we just read/write the
- * memory location directly.
- */
-static inline u8 readb(const volatile void __iomem *addr)
-{
-       return *(const volatile u8 *) addr;
-}
-
-static inline u16 readw(const volatile void __iomem *addr)
-{
-       return *(const volatile u16 *) addr;
-}
-
-static inline u32 readl(const volatile void __iomem *addr)
-{
-       return *(const volatile u32 *) addr;
-}
-
-#define __raw_readb readb
-#define __raw_readw readw
-#define __raw_readl readl
-
-#define readb_relaxed readb
-#define readw_relaxed readw
-#define readl_relaxed readl
-
-static inline void writeb(u8 b, volatile void __iomem *addr)
-{
-       *(volatile u8 *) addr = b;
-}
-
-static inline void writew(u16 b, volatile void __iomem *addr)
-{
-       *(volatile u16 *) addr = b;
-}
-
-static inline void writel(u32 b, volatile void __iomem *addr)
-{
-       *(volatile u32 *) addr = b;
-}
-
-#define __raw_writeb writeb
-#define __raw_writew writew
-#define __raw_writel writel
-
-/*****************************************************************************/
-/*
- * traditional input/output functions
- */
-static inline u8 inb_local(unsigned long addr)
-{
-       return readb((volatile void __iomem *) addr);
-}
-
-static inline void outb_local(u8 b, unsigned long addr)
-{
-       return writeb(b, (volatile void __iomem *) addr);
-}
-
-static inline u8 inb(unsigned long addr)
-{
-       return readb((volatile void __iomem *) addr);
-}
-
-static inline u16 inw(unsigned long addr)
-{
-       return readw((volatile void __iomem *) addr);
-}
-
-static inline u32 inl(unsigned long addr)
-{
-       return readl((volatile void __iomem *) addr);
-}
-
-static inline void outb(u8 b, unsigned long addr)
-{
-       return writeb(b, (volatile void __iomem *) addr);
-}
-
-static inline void outw(u16 b, unsigned long addr)
-{
-       return writew(b, (volatile void __iomem *) addr);
-}
-
-static inline void outl(u32 b, unsigned long addr)
-{
-       return writel(b, (volatile void __iomem *) addr);
-}
-
-#define inb_p(addr)    inb(addr)
-#define inw_p(addr)    inw(addr)
-#define inl_p(addr)    inl(addr)
-#define outb_p(x, addr)        outb((x), (addr))
-#define outw_p(x, addr)        outw((x), (addr))
-#define outl_p(x, addr)        outl((x), (addr))
-
-static inline void insb(unsigned long addr, void *buffer, int count)
-{
-       if (count) {
-               u8 *buf = buffer;
-               do {
-                       u8 x = inb(addr);
-                       *buf++ = x;
-               } while (--count);
-       }
-}
-
-static inline void insw(unsigned long addr, void *buffer, int count)
-{
-       if (count) {
-               u16 *buf = buffer;
-               do {
-                       u16 x = inw(addr);
-                       *buf++ = x;
-               } while (--count);
-       }
-}
-
-static inline void insl(unsigned long addr, void *buffer, int count)
-{
-       if (count) {
-               u32 *buf = buffer;
-               do {
-                       u32 x = inl(addr);
-                       *buf++ = x;
-               } while (--count);
-       }
-}
-
-static inline void outsb(unsigned long addr, const void *buffer, int count)
-{
-       if (count) {
-               const u8 *buf = buffer;
-               do {
-                       outb(*buf++, addr);
-               } while (--count);
-       }
-}
-
-static inline void outsw(unsigned long addr, const void *buffer, int count)
-{
-       if (count) {
-               const u16 *buf = buffer;
-               do {
-                       outw(*buf++, addr);
-               } while (--count);
-       }
-}
-
-extern void __outsl(unsigned long addr, const void *buffer, int count);
-static inline void outsl(unsigned long addr, const void *buffer, int count)
-{
-       if ((unsigned long) buffer & 0x3)
-               return __outsl(addr, buffer, count);
-
-       if (count) {
-               const u32 *buf = buffer;
-               do {
-                       outl(*buf++, addr);
-               } while (--count);
-       }
-}
-
-#define ioread8(addr)          readb(addr)
-#define ioread16(addr)         readw(addr)
-#define ioread32(addr)         readl(addr)
-
-#define iowrite8(v, addr)      writeb((v), (addr))
-#define iowrite16(v, addr)     writew((v), (addr))
-#define iowrite32(v, addr)     writel((v), (addr))
-
-#define ioread8_rep(p, dst, count) \
-       insb((unsigned long) (p), (dst), (count))
-#define ioread16_rep(p, dst, count) \
-       insw((unsigned long) (p), (dst), (count))
-#define ioread32_rep(p, dst, count) \
-       insl((unsigned long) (p), (dst), (count))
-
-#define iowrite8_rep(p, src, count) \
-       outsb((unsigned long) (p), (src), (count))
-#define iowrite16_rep(p, src, count) \
-       outsw((unsigned long) (p), (src), (count))
-#define iowrite32_rep(p, src, count) \
-       outsl((unsigned long) (p), (src), (count))
-
-
-#define IO_SPACE_LIMIT 0xffffffff
-
-#ifdef __KERNEL__
-
-#include <linux/vmalloc.h>
-#define __io_virt(x) ((void *) (x))
-
-/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
-struct pci_dev;
-extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
-static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
-{
-}
-
-/*
- * Change virtual addresses to physical addresses and vv.
- * These are pretty trivial
- */
-static inline unsigned long virt_to_phys(volatile void *address)
-{
-       return __pa(address);
-}
-
-static inline void *phys_to_virt(unsigned long address)
-{
-       return __va(address);
-}
-
-/*
- * Change "struct page" to physical address.
- */
-static inline void *__ioremap(unsigned long offset, unsigned long size,
-                             unsigned long flags)
-{
-       return (void *) offset;
-}
-
-static inline void *ioremap(unsigned long offset, unsigned long size)
-{
-       return (void *) offset;
-}
-
-/*
- * This one maps high address device memory and turns off caching for that
- * area.  it's useful if some control registers are in such an area and write
- * combining or read caching is not desirable:
- */
-static inline void *ioremap_nocache(unsigned long offset, unsigned long size)
-{
-       return (void *) (offset | 0x20000000);
-}
-
-#define ioremap_wc ioremap_nocache
-
-static inline void iounmap(void *addr)
-{
-}
-
-static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
-{
-       return (void __iomem *) port;
-}
-
-static inline void ioport_unmap(void __iomem *p)
-{
-}
-
-#define xlate_dev_kmem_ptr(p)  ((void *) (p))
-#define xlate_dev_mem_ptr(p)   ((void *) (p))
-
-/*
- * PCI bus iomem addresses must be in the region 0x80000000-0x9fffffff
- */
-static inline unsigned long virt_to_bus(volatile void *address)
-{
-       return ((unsigned long) address) & ~0x20000000;
-}
-
-static inline void *bus_to_virt(unsigned long address)
-{
-       return (void *) address;
-}
-
-#define page_to_bus page_to_phys
-
-#define memset_io(a, b, c)     memset(__io_virt(a), (b), (c))
-#define memcpy_fromio(a, b, c) memcpy((a), __io_virt(b), (c))
-#define memcpy_toio(a, b, c)   memcpy(__io_virt(a), (b), (c))
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_IO_H */
diff --git a/include/asm-mn10300/ioctl.h b/include/asm-mn10300/ioctl.h
deleted file mode 100644 (file)
index b279fe0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/ioctl.h>
diff --git a/include/asm-mn10300/ioctls.h b/include/asm-mn10300/ioctls.h
deleted file mode 100644 (file)
index dcbfb45..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef _ASM_IOCTLS_H
-#define _ASM_IOCTLS_H
-
-#include <asm/ioctl.h>
-
-/* 0x54 is just a magic number to make these relatively unique ('T') */
-
-#define TCGETS         0x5401
-#define TCSETS         0x5402
-#define TCSETSW                0x5403
-#define TCSETSF                0x5404
-#define TCGETA         0x5405
-#define TCSETA         0x5406
-#define TCSETAW                0x5407
-#define TCSETAF                0x5408
-#define TCSBRK         0x5409
-#define TCXONC         0x540A
-#define TCFLSH         0x540B
-#define TIOCEXCL       0x540C
-#define TIOCNXCL       0x540D
-#define TIOCSCTTY      0x540E
-#define TIOCGPGRP      0x540F
-#define TIOCSPGRP      0x5410
-#define TIOCOUTQ       0x5411
-#define TIOCSTI                0x5412
-#define TIOCGWINSZ     0x5413
-#define TIOCSWINSZ     0x5414
-#define TIOCMGET       0x5415
-#define TIOCMBIS       0x5416
-#define TIOCMBIC       0x5417
-#define TIOCMSET       0x5418
-#define TIOCGSOFTCAR   0x5419
-#define TIOCSSOFTCAR   0x541A
-#define FIONREAD       0x541B
-#define TIOCINQ                FIONREAD
-#define TIOCLINUX      0x541C
-#define TIOCCONS       0x541D
-#define TIOCGSERIAL    0x541E
-#define TIOCSSERIAL    0x541F
-#define TIOCPKT                0x5420
-#define FIONBIO                0x5421
-#define TIOCNOTTY      0x5422
-#define TIOCSETD       0x5423
-#define TIOCGETD       0x5424
-#define TCSBRKP                0x5425  /* Needed for POSIX tcsendbreak() */
-/* #define TIOCTTYGSTRUCT 0x5426 - Former debugging-only ioctl */
-#define TIOCSBRK       0x5427  /* BSD compatibility */
-#define TIOCCBRK       0x5428  /* BSD compatibility */
-#define TIOCGSID       0x5429  /* Return the session ID of FD */
-#define TCGETS2                _IOR('T', 0x2A, struct termios2)
-#define TCSETS2                _IOW('T', 0x2B, struct termios2)
-#define TCSETSW2       _IOW('T', 0x2C, struct termios2)
-#define TCSETSF2       _IOW('T', 0x2D, struct termios2)
-#define TIOCGPTN       _IOR('T', 0x30, unsigned int) /* Get Pty Number
-                                                      * (of pty-mux device) */
-#define TIOCSPTLCK     _IOW('T', 0x31, int)  /* Lock/unlock Pty */
-
-#define FIONCLEX       0x5450
-#define FIOCLEX                0x5451
-#define FIOASYNC       0x5452
-#define TIOCSERCONFIG  0x5453
-#define TIOCSERGWILD   0x5454
-#define TIOCSERSWILD   0x5455
-#define TIOCGLCKTRMIOS 0x5456
-#define TIOCSLCKTRMIOS 0x5457
-#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
-#define TIOCSERGETLSR   0x5459 /* Get line status register */
-#define TIOCSERGETMULTI 0x545A /* Get multiport config  */
-#define TIOCSERSETMULTI 0x545B /* Set multiport config */
-
-#define TIOCMIWAIT     0x545C  /* wait for a change on serial input line(s) */
-#define TIOCGICOUNT    0x545D  /* read serial port inline interrupt counts */
-#define TIOCGHAYESESP   0x545E  /* Get Hayes ESP configuration */
-#define TIOCSHAYESESP   0x545F  /* Set Hayes ESP configuration */
-#define FIOQSIZE       0x5460
-
-/* Used for packet mode */
-#define TIOCPKT_DATA            0
-#define TIOCPKT_FLUSHREAD       1
-#define TIOCPKT_FLUSHWRITE      2
-#define TIOCPKT_STOP            4
-#define TIOCPKT_START           8
-#define TIOCPKT_NOSTOP         16
-#define TIOCPKT_DOSTOP         32
-
-#define TIOCSER_TEMT    0x01   /* Transmitter physically empty */
-
-#endif /* _ASM_IOCTLS_H */
diff --git a/include/asm-mn10300/ipc.h b/include/asm-mn10300/ipc.h
deleted file mode 100644 (file)
index a46e3d9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/ipc.h>
diff --git a/include/asm-mn10300/ipcbuf.h b/include/asm-mn10300/ipcbuf.h
deleted file mode 100644 (file)
index f6f63d4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _ASM_IPCBUF_H
-#define _ASM_IPCBUF_H
-
-/*
- * The ipc64_perm structure for MN10300 architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 32-bit mode_t and seq
- * - 2 miscellaneous 32-bit values
- */
-
-struct ipc64_perm
-{
-       __kernel_key_t          key;
-       __kernel_uid32_t        uid;
-       __kernel_gid32_t        gid;
-       __kernel_uid32_t        cuid;
-       __kernel_gid32_t        cgid;
-       __kernel_mode_t         mode;
-       unsigned short          __pad1;
-       unsigned short          seq;
-       unsigned short          __pad2;
-       unsigned long           __unused1;
-       unsigned long           __unused2;
-};
-
-#endif /* _ASM_IPCBUF_H */
diff --git a/include/asm-mn10300/irq.h b/include/asm-mn10300/irq.h
deleted file mode 100644 (file)
index 53b3801..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* MN10300 Hardware interrupt definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Modified by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-i386/irq.h:
- *   - (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_IRQ_H
-#define _ASM_IRQ_H
-
-#include <asm/intctl-regs.h>
-#include <asm/reset-regs.h>
-#include <asm/proc/irq.h>
-
-/* this number is used when no interrupt has been assigned */
-#define NO_IRQ         INT_MAX
-
-/* hardware irq numbers */
-#define NR_IRQS                GxICR_NUM_IRQS
-
-/* external hardware irq numbers */
-#define NR_XIRQS       GxICR_NUM_XIRQS
-
-#define irq_canonicalize(IRQ) (IRQ)
-
-#endif /* _ASM_IRQ_H */
diff --git a/include/asm-mn10300/irq_regs.h b/include/asm-mn10300/irq_regs.h
deleted file mode 100644 (file)
index a848cd2..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* MN10300 IRQ registers pointer definition
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_IRQ_REGS_H
-#define _ASM_IRQ_REGS_H
-
-/*
- * Per-cpu current frame pointer - the location of the last exception frame on
- * the stack
- */
-#define ARCH_HAS_OWN_IRQ_REGS
-
-#ifndef __ASSEMBLY__
-#define get_irq_regs() (__frame)
-#endif
-
-#endif /* _ASM_IRQ_REGS_H */
diff --git a/include/asm-mn10300/kdebug.h b/include/asm-mn10300/kdebug.h
deleted file mode 100644 (file)
index 0f47e11..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* MN10300 In-kernel death knells
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_KDEBUG_H
-#define _ASM_KDEBUG_H
-
-/* Grossly misnamed. */
-enum die_val {
-       DIE_OOPS = 1,
-       DIE_BREAKPOINT,
-       DIE_GPF,
-};
-
-#endif /* _ASM_KDEBUG_H */
diff --git a/include/asm-mn10300/kmap_types.h b/include/asm-mn10300/kmap_types.h
deleted file mode 100644 (file)
index 3398f9f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* MN10300 kmap_atomic() slot IDs
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_KMAP_TYPES_H
-#define _ASM_KMAP_TYPES_H
-
-enum km_type {
-       KM_BOUNCE_READ,
-       KM_SKB_SUNRPC_DATA,
-       KM_SKB_DATA_SOFTIRQ,
-       KM_USER0,
-       KM_USER1,
-       KM_BIO_SRC_IRQ,
-       KM_BIO_DST_IRQ,
-       KM_PTE0,
-       KM_PTE1,
-       KM_IRQ0,
-       KM_IRQ1,
-       KM_SOFTIRQ0,
-       KM_SOFTIRQ1,
-       KM_TYPE_NR
-};
-
-#endif /* _ASM_KMAP_TYPES_H */
diff --git a/include/asm-mn10300/kprobes.h b/include/asm-mn10300/kprobes.h
deleted file mode 100644 (file)
index c800b59..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* MN10300 Kernel Probes support
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by Mark Salter (msalter@redhat.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public Licence as published by
- * the Free Software Foundation; either version 2 of the Licence, 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 Licence for more details.
- *
- * You should have received a copy of the GNU General Public Licence
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
-#ifndef _ASM_KPROBES_H
-#define _ASM_KPROBES_H
-
-#include <linux/types.h>
-#include <linux/ptrace.h>
-
-struct kprobe;
-
-typedef unsigned char kprobe_opcode_t;
-#define BREAKPOINT_INSTRUCTION 0xff
-#define MAX_INSN_SIZE 8
-#define MAX_STACK_SIZE 128
-
-/* Architecture specific copy of original instruction */
-struct arch_specific_insn {
-       /*  copy of original instruction
-        */
-       kprobe_opcode_t insn[MAX_INSN_SIZE];
-};
-
-extern const int kretprobe_blacklist_size;
-
-extern int kprobe_exceptions_notify(struct notifier_block *self,
-                                   unsigned long val, void *data);
-
-#define flush_insn_slot(p)  do {} while (0)
-
-extern void arch_remove_kprobe(struct kprobe *p);
-
-#endif /* _ASM_KPROBES_H */
diff --git a/include/asm-mn10300/linkage.h b/include/asm-mn10300/linkage.h
deleted file mode 100644 (file)
index dda3002..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* MN10300 Linkage and calling-convention overrides
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_LINKAGE_H
-#define _ASM_LINKAGE_H
-
-/* don't override anything */
-#define asmlinkage
-
-#define __ALIGN                .align 4,0xcb
-#define __ALIGN_STR    ".align 4,0xcb"
-
-#endif
diff --git a/include/asm-mn10300/local.h b/include/asm-mn10300/local.h
deleted file mode 100644 (file)
index c11c530..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/local.h>
diff --git a/include/asm-mn10300/mc146818rtc.h b/include/asm-mn10300/mc146818rtc.h
deleted file mode 100644 (file)
index df6bc6e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm/rtc-regs.h>
diff --git a/include/asm-mn10300/mman.h b/include/asm-mn10300/mman.h
deleted file mode 100644 (file)
index b7986b6..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* MN10300 Constants for mmap and co.
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * - Derived from asm-x86/mman.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_MMAN_H
-#define _ASM_MMAN_H
-
-#include <asm-generic/mman.h>
-
-#define MAP_GROWSDOWN  0x0100          /* stack-like segment */
-#define MAP_DENYWRITE  0x0800          /* ETXTBSY */
-#define MAP_EXECUTABLE 0x1000          /* mark it as an executable */
-#define MAP_LOCKED     0x2000          /* pages are locked */
-#define MAP_NORESERVE  0x4000          /* don't check for reservations */
-#define MAP_POPULATE   0x8000          /* populate (prefault) pagetables */
-#define MAP_NONBLOCK   0x10000         /* do not block on IO */
-
-#define MCL_CURRENT    1               /* lock all current mappings */
-#define MCL_FUTURE     2               /* lock all future mappings */
-
-#endif /* _ASM_MMAN_H */
diff --git a/include/asm-mn10300/mmu.h b/include/asm-mn10300/mmu.h
deleted file mode 100644 (file)
index 2d2d097..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/* MN10300 Memory management context
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-frv/mmu.h
- */
-
-#ifndef _ASM_MMU_H
-#define _ASM_MMU_H
-
-/*
- * MMU context
- */
-typedef struct {
-       unsigned long   tlbpid[NR_CPUS];        /* TLB PID for this process on
-                                                * each CPU */
-} mm_context_t;
-
-#endif /* _ASM_MMU_H */
diff --git a/include/asm-mn10300/mmu_context.h b/include/asm-mn10300/mmu_context.h
deleted file mode 100644 (file)
index a9e2e34..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/* MN10300 MMU context management
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Modified by David Howells (dhowells@redhat.com)
- * - Derived from include/asm-m32r/mmu_context.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- *
- *
- * This implements an algorithm to provide TLB PID mappings to provide
- * selective access to the TLB for processes, thus reducing the number of TLB
- * flushes required.
- *
- * Note, however, that the M32R algorithm is technically broken as it does not
- * handle version wrap-around, and could, theoretically, have a problem with a
- * very long lived program that sleeps long enough for the version number to
- * wrap all the way around so that its TLB mappings appear valid once again.
- */
-#ifndef _ASM_MMU_CONTEXT_H
-#define _ASM_MMU_CONTEXT_H
-
-#include <asm/atomic.h>
-#include <asm/pgalloc.h>
-#include <asm/tlbflush.h>
-#include <asm-generic/mm_hooks.h>
-
-#define MMU_CONTEXT_TLBPID_MASK                0x000000ffUL
-#define MMU_CONTEXT_VERSION_MASK       0xffffff00UL
-#define MMU_CONTEXT_FIRST_VERSION      0x00000100UL
-#define MMU_NO_CONTEXT                 0x00000000UL
-
-extern unsigned long mmu_context_cache[NR_CPUS];
-#define mm_context(mm) (mm->context.tlbpid[smp_processor_id()])
-
-#define enter_lazy_tlb(mm, tsk)        do {} while (0)
-
-#ifdef CONFIG_SMP
-#define cpu_ran_vm(cpu, task) \
-       cpu_set((cpu), (task)->cpu_vm_mask)
-#define cpu_maybe_ran_vm(cpu, task) \
-       cpu_test_and_set((cpu), (task)->cpu_vm_mask)
-#else
-#define cpu_ran_vm(cpu, task)          do {} while (0)
-#define cpu_maybe_ran_vm(cpu, task)    true
-#endif /* CONFIG_SMP */
-
-/*
- * allocate an MMU context
- */
-static inline unsigned long allocate_mmu_context(struct mm_struct *mm)
-{
-       unsigned long *pmc = &mmu_context_cache[smp_processor_id()];
-       unsigned long mc = ++(*pmc);
-
-       if (!(mc & MMU_CONTEXT_TLBPID_MASK)) {
-               /* we exhausted the TLB PIDs of this version on this CPU, so we
-                * flush this CPU's TLB in its entirety and start new cycle */
-               flush_tlb_all();
-
-               /* fix the TLB version if needed (we avoid version #0 so as to
-                * distingush MMU_NO_CONTEXT) */
-               if (!mc)
-                       *pmc = mc = MMU_CONTEXT_FIRST_VERSION;
-       }
-       mm_context(mm) = mc;
-       return mc;
-}
-
-/*
- * get an MMU context if one is needed
- */
-static inline unsigned long get_mmu_context(struct mm_struct *mm)
-{
-       unsigned long mc = MMU_NO_CONTEXT, cache;
-
-       if (mm) {
-               cache = mmu_context_cache[smp_processor_id()];
-               mc = mm_context(mm);
-
-               /* if we have an old version of the context, replace it */
-               if ((mc ^ cache) & MMU_CONTEXT_VERSION_MASK)
-                       mc = allocate_mmu_context(mm);
-       }
-       return mc;
-}
-
-/*
- * initialise the context related info for a new mm_struct instance
- */
-static inline int init_new_context(struct task_struct *tsk,
-                                  struct mm_struct *mm)
-{
-       int num_cpus = NR_CPUS, i;
-
-       for (i = 0; i < num_cpus; i++)
-               mm->context.tlbpid[i] = MMU_NO_CONTEXT;
-       return 0;
-}
-
-/*
- * destroy context related info for an mm_struct that is about to be put to
- * rest
- */
-#define destroy_context(mm)    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.
- */
-static inline void activate_context(struct mm_struct *mm, int cpu)
-{
-       PIDR = get_mmu_context(mm) & MMU_CONTEXT_TLBPID_MASK;
-}
-
-/*
- * change between virtual memory sets
- */
-static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
-                            struct task_struct *tsk)
-{
-       int cpu = smp_processor_id();
-
-       if (prev != next) {
-               cpu_ran_vm(cpu, next);
-               activate_context(next, cpu);
-               PTBR = (unsigned long) next->pgd;
-       } else if (!cpu_maybe_ran_vm(cpu, next)) {
-               activate_context(next, cpu);
-       }
-}
-
-#define deactivate_mm(tsk, mm) do {} while (0)
-#define activate_mm(prev, next)        switch_mm((prev), (next), NULL)
-
-#endif /* _ASM_MMU_CONTEXT_H */
diff --git a/include/asm-mn10300/module.h b/include/asm-mn10300/module.h
deleted file mode 100644 (file)
index 5d7057d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* MN10300 Arch-specific module definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by Mark Salter (msalter@redhat.com)
- * Derived from include/asm-i386/module.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_MODULE_H
-#define _ASM_MODULE_H
-
-struct mod_arch_specific {
-};
-
-#define Elf_Shdr       Elf32_Shdr
-#define Elf_Sym                Elf32_Sym
-#define Elf_Ehdr       Elf32_Ehdr
-
-/*
- * Include the MN10300 architecture version.
- */
-#define MODULE_ARCH_VERMAGIC __stringify(PROCESSOR_MODEL_NAME) " "
-
-#endif /* _ASM_MODULE_H */
diff --git a/include/asm-mn10300/msgbuf.h b/include/asm-mn10300/msgbuf.h
deleted file mode 100644 (file)
index 8b60245..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _ASM_MSGBUF_H
-#define _ASM_MSGBUF_H
-
-/*
- * The msqid64_ds structure for MN10300 architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 64-bit time_t to solve y2038 problem
- * - 2 miscellaneous 32-bit values
- */
-
-struct msqid64_ds {
-       struct ipc64_perm       msg_perm;
-       __kernel_time_t         msg_stime;      /* last msgsnd time */
-       unsigned long           __unused1;
-       __kernel_time_t         msg_rtime;      /* last msgrcv time */
-       unsigned long           __unused2;
-       __kernel_time_t         msg_ctime;      /* last change time */
-       unsigned long           __unused3;
-       unsigned long           msg_cbytes;     /* current number of bytes on queue */
-       unsigned long           msg_qnum;       /* number of messages in queue */
-       unsigned long           msg_qbytes;     /* max number of bytes on queue */
-       __kernel_pid_t          msg_lspid;      /* pid of last msgsnd */
-       __kernel_pid_t          msg_lrpid;      /* last receive pid */
-       unsigned long           __unused4;
-       unsigned long           __unused5;
-};
-
-#endif /* _ASM_MSGBUF_H */
diff --git a/include/asm-mn10300/mutex.h b/include/asm-mn10300/mutex.h
deleted file mode 100644 (file)
index 84f5490..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* MN10300 Mutex fastpath
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- *
- *
- * TODO: implement optimized primitives instead, or leave the generic
- * implementation in place, or pick the atomic_xchg() based generic
- * implementation. (see asm-generic/mutex-xchg.h for details)
- */
-#include <asm-generic/mutex-null.h>
diff --git a/include/asm-mn10300/nmi.h b/include/asm-mn10300/nmi.h
deleted file mode 100644 (file)
index f3671cb..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* MN10300 NMI handling
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_NMI_H
-#define _ASM_NMI_H
-
-#endif /* _ASM_NMI_H */
diff --git a/include/asm-mn10300/page.h b/include/asm-mn10300/page.h
deleted file mode 100644 (file)
index 8288e12..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* MN10300 Page table definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PAGE_H
-#define _ASM_PAGE_H
-
-/* PAGE_SHIFT determines the page size */
-#define PAGE_SHIFT     12
-
-#ifndef __ASSEMBLY__
-#define PAGE_SIZE      (1UL << PAGE_SHIFT)
-#define PAGE_MASK      (~(PAGE_SIZE - 1))
-#else
-#define PAGE_SIZE      +(1 << PAGE_SHIFT)      /* unary plus marks an
-                                                * immediate val not an addr */
-#define PAGE_MASK      +(~(PAGE_SIZE - 1))
-#endif
-
-#ifdef __KERNEL__
-#ifndef __ASSEMBLY__
-
-#define clear_page(page)       memset((void *)(page), 0, PAGE_SIZE)
-#define copy_page(to, from)    memcpy((void *)(to), (void *)(from), PAGE_SIZE)
-
-#define clear_user_page(addr, vaddr, page)     clear_page(addr)
-#define copy_user_page(vto, vfrom, vaddr, to)  copy_page(vto, vfrom)
-
-/*
- * These are used to make use of C type-checking..
- */
-typedef struct { unsigned long pte; } pte_t;
-typedef struct { unsigned long pgd; } pgd_t;
-typedef struct { unsigned long pgprot; } pgprot_t;
-typedef struct page *pgtable_t;
-
-#define PTE_MASK       PAGE_MASK
-#define HPAGE_SHIFT    22
-
-#ifdef CONFIG_HUGETLB_PAGE
-#define HPAGE_SIZE             ((1UL) << HPAGE_SHIFT)
-#define HPAGE_MASK             (~(HPAGE_SIZE - 1))
-#define HUGETLB_PAGE_ORDER     (HPAGE_SHIFT - PAGE_SHIFT)
-#endif
-
-#define pte_val(x)     ((x).pte)
-#define pgd_val(x)     ((x).pgd)
-#define pgprot_val(x)  ((x).pgprot)
-
-#define __pte(x)       ((pte_t) { (x) })
-#define __pgd(x)       ((pgd_t) { (x) })
-#define __pgprot(x)    ((pgprot_t) { (x) })
-
-#include <asm-generic/pgtable-nopmd.h>
-
-#endif /* !__ASSEMBLY__ */
-
-/*
- * This handles the memory map.. We could make this a config
- * option, but too many people screw it up, and too few need
- * it.
- *
- * A __PAGE_OFFSET of 0xC0000000 means that the kernel has
- * a virtual address space of one gigabyte, which limits the
- * amount of physical memory you can use to about 950MB.
- */
-
-#ifndef __ASSEMBLY__
-
-/* Pure 2^n version of get_order */
-static inline int get_order(unsigned long size) __attribute__((const));
-static inline int get_order(unsigned long size)
-{
-       int order;
-
-       size = (size - 1) >> (PAGE_SHIFT - 1);
-       order = -1;
-       do {
-               size >>= 1;
-               order++;
-       } while (size);
-       return order;
-}
-
-#endif /* __ASSEMBLY__ */
-
-#include <asm/page_offset.h>
-
-#define __PAGE_OFFSET          (PAGE_OFFSET_RAW)
-#define PAGE_OFFSET            ((unsigned long) __PAGE_OFFSET)
-
-/*
- * main RAM and kernel working space are coincident at 0x90000000, but to make
- * life more interesting, there's also an uncached virtual shadow at 0xb0000000
- * - these mappings are fixed in the MMU
- */
-#define __pfn_disp             (CONFIG_KERNEL_RAM_BASE_ADDRESS >> PAGE_SHIFT)
-
-#define __pa(x)                        ((unsigned long)(x))
-#define __va(x)                        ((void *)(unsigned long)(x))
-#define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
-#define pfn_to_page(pfn)       (mem_map + ((pfn) - __pfn_disp))
-#define page_to_pfn(page)      ((unsigned long)((page) - mem_map) + __pfn_disp)
-
-#define pfn_valid(pfn)                                 \
-({                                                     \
-       unsigned long __pfn = (pfn) - __pfn_disp;       \
-       __pfn < max_mapnr;                              \
-})
-
-#define virt_to_page(kaddr)    pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
-#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
-#define page_to_phys(page)     (page_to_pfn(page) << PAGE_SHIFT)
-
-#define VM_DATA_DEFAULT_FLAGS \
-       (VM_READ | VM_WRITE | \
-       ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
-                VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_PAGE_H */
diff --git a/include/asm-mn10300/page_offset.h b/include/asm-mn10300/page_offset.h
deleted file mode 100644 (file)
index 8eb5b16..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/* MN10300 Kernel base address
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- */
-#ifndef _ASM_PAGE_OFFSET_H
-#define _ASM_PAGE_OFFSET_H
-
-#define PAGE_OFFSET_RAW CONFIG_KERNEL_RAM_BASE_ADDRESS
-
-#endif
diff --git a/include/asm-mn10300/param.h b/include/asm-mn10300/param.h
deleted file mode 100644 (file)
index 789b1df..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* MN10300 Kernel parameters
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PARAM_H
-#define _ASM_PARAM_H
-
-#ifdef __KERNEL__
-#define HZ             CONFIG_HZ       /* Internal kernel timer frequency */
-#define USER_HZ                100             /* .. some user interfaces are in
-                                        * "ticks" */
-#define CLOCKS_PER_SEC (USER_HZ)       /* like times() */
-#endif
-
-#ifndef HZ
-#define HZ             100
-#endif
-
-#define EXEC_PAGESIZE  4096
-
-#ifndef NOGROUP
-#define NOGROUP                (-1)
-#endif
-
-#define MAXHOSTNAMELEN 64      /* max length of hostname */
-#define COMMAND_LINE_SIZE 256
-
-#endif /* _ASM_PARAM_H */
diff --git a/include/asm-mn10300/pci.h b/include/asm-mn10300/pci.h
deleted file mode 100644 (file)
index 0517b45..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/* MN10300 PCI definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PCI_H
-#define _ASM_PCI_H
-
-#ifdef __KERNEL__
-#include <linux/mm.h>          /* for struct page */
-
-#if 0
-#define __pcbdebug(FMT, ADDR, ...) \
-       printk(KERN_DEBUG "PCIBRIDGE[%08x]: "FMT"\n", \
-              (u32)(ADDR), ##__VA_ARGS__)
-
-#define __pcidebug(FMT, BUS, DEVFN, WHERE,...)         \
-do {                                                   \
-       printk(KERN_DEBUG "PCI[%02x:%02x.%x + %02x]: "FMT"\n",  \
-              (BUS)->number,                                   \
-              PCI_SLOT(DEVFN),                                 \
-              PCI_FUNC(DEVFN),                                 \
-              (u32)(WHERE), ##__VA_ARGS__);                    \
-} while (0)
-
-#else
-#define __pcbdebug(FMT, ADDR, ...)             do {} while (0)
-#define __pcidebug(FMT, BUS, DEVFN, WHERE, ...)        do {} while (0)
-#endif
-
-/* Can be used to override the logic in pci_scan_bus for skipping
- * already-configured bus numbers - to be used for buggy BIOSes or
- * architectures with incomplete PCI setup by the loader */
-
-#ifdef CONFIG_PCI
-#define pcibios_assign_all_busses()    1
-extern void unit_pci_init(void);
-#else
-#define pcibios_assign_all_busses()    0
-#endif
-
-extern unsigned long pci_mem_start;
-#define PCIBIOS_MIN_IO         0xBE000004
-#define PCIBIOS_MIN_MEM                0xB8000000
-
-void pcibios_set_master(struct pci_dev *dev);
-void pcibios_penalize_isa_irq(int irq);
-
-/* Dynamic DMA mapping stuff.
- * i386 has everything mapped statically.
- */
-
-#include <linux/types.h>
-#include <linux/slab.h>
-#include <asm/scatterlist.h>
-#include <linux/string.h>
-#include <linux/mm.h>
-#include <asm/io.h>
-
-struct pci_dev;
-
-/* The PCI address space does equal the physical memory
- * address space.  The networking and block device layers use
- * this boolean for bounce buffer decisions.
- */
-#define PCI_DMA_BUS_IS_PHYS    (1)
-
-
-/* This is always fine. */
-#define pci_dac_dma_supported(pci_dev, mask)   (0)
-
-/* Return the index of the PCI controller for device. */
-static inline int pci_controller_num(struct pci_dev *dev)
-{
-       return 0;
-}
-
-#define HAVE_PCI_MMAP
-extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
-                              enum pci_mmap_state mmap_state,
-                              int write_combine);
-
-#endif /* __KERNEL__ */
-
-/* implement the pci_ DMA API in terms of the generic device dma_ one */
-#include <asm-generic/pci-dma-compat.h>
-
-/**
- * pcibios_resource_to_bus - convert resource to PCI bus address
- * @dev: device which owns this resource
- * @region: converted bus-centric region (start,end)
- * @res: resource to convert
- *
- * Convert a resource to a PCI device bus address or bus window.
- */
-extern void pcibios_resource_to_bus(struct pci_dev *dev,
-                                   struct pci_bus_region *region,
-                                   struct resource *res);
-
-extern void pcibios_bus_to_resource(struct pci_dev *dev,
-                                   struct resource *res,
-                                   struct pci_bus_region *region);
-
-static inline struct resource *
-pcibios_select_root(struct pci_dev *pdev, struct resource *res)
-{
-       struct resource *root = NULL;
-
-       if (res->flags & IORESOURCE_IO)
-               root = &ioport_resource;
-       if (res->flags & IORESOURCE_MEM)
-               root = &iomem_resource;
-
-       return root;
-}
-
-#define pcibios_scan_all_fns(a, b)     0
-
-static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
-{
-       return channel ? 15 : 14;
-}
-
-#endif /* _ASM_PCI_H */
diff --git a/include/asm-mn10300/percpu.h b/include/asm-mn10300/percpu.h
deleted file mode 100644 (file)
index 06a959d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/percpu.h>
diff --git a/include/asm-mn10300/pgalloc.h b/include/asm-mn10300/pgalloc.h
deleted file mode 100644 (file)
index ec057e1..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* MN10300 Page and page table/directory allocation
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PGALLOC_H
-#define _ASM_PGALLOC_H
-
-#include <asm/processor.h>
-#include <asm/page.h>
-#include <linux/threads.h>
-#include <linux/mm.h>          /* for struct page */
-
-struct mm_struct;
-struct page;
-
-/* attach a page table to a PMD entry */
-#define pmd_populate_kernel(mm, pmd, pte) \
-       set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE))
-
-static inline
-void pmd_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte)
-{
-       set_pmd(pmd, __pmd((page_to_pfn(pte) << PAGE_SHIFT) | _PAGE_TABLE));
-}
-#define pmd_pgtable(pmd) pmd_page(pmd)
-
-/*
- * Allocate and free page tables.
- */
-
-extern pgd_t *pgd_alloc(struct mm_struct *);
-extern void pgd_free(struct mm_struct *, pgd_t *);
-
-extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
-extern struct page *pte_alloc_one(struct mm_struct *, unsigned long);
-
-static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
-{
-       free_page((unsigned long) pte);
-}
-
-static inline void pte_free(struct mm_struct *mm, struct page *pte)
-{
-       __free_page(pte);
-}
-
-
-#define __pte_free_tlb(tlb, pte) tlb_remove_page((tlb), (pte))
-
-#endif /* _ASM_PGALLOC_H */
diff --git a/include/asm-mn10300/pgtable.h b/include/asm-mn10300/pgtable.h
deleted file mode 100644 (file)
index 6dc30fc..0000000
+++ /dev/null
@@ -1,492 +0,0 @@
-/* MN10300 Page table manipulators and constants
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- *
- *
- * The Linux memory management assumes a three-level page table setup. On
- * the i386, we use that, but "fold" the mid level into the top-level page
- * table, so that we physically have the same two-level page table as the
- * i386 mmu expects.
- *
- * This file contains the functions and defines necessary to modify and use
- * the i386 page table tree for the purposes of the MN10300 TLB handler
- * functions.
- */
-#ifndef _ASM_PGTABLE_H
-#define _ASM_PGTABLE_H
-
-#include <asm/cpu-regs.h>
-
-#ifndef __ASSEMBLY__
-#include <asm/processor.h>
-#include <asm/cache.h>
-#include <linux/threads.h>
-
-#include <asm/bitops.h>
-
-#include <linux/slab.h>
-#include <linux/list.h>
-#include <linux/spinlock.h>
-
-/*
- * ZERO_PAGE is a global shared page that is always zero: used
- * for zero-mapped memory areas etc..
- */
-#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
-extern unsigned long empty_zero_page[1024];
-extern spinlock_t pgd_lock;
-extern struct page *pgd_list;
-
-extern void pmd_ctor(void *, struct kmem_cache *, unsigned long);
-extern void pgtable_cache_init(void);
-extern void paging_init(void);
-
-#endif /* !__ASSEMBLY__ */
-
-/*
- * The Linux mn10300 paging architecture only implements both the traditional
- * 2-level page tables
- */
-#define PGDIR_SHIFT    22
-#define PTRS_PER_PGD   1024
-#define PTRS_PER_PUD   1       /* we don't really have any PUD physically */
-#define PTRS_PER_PMD   1       /* we don't really have any PMD physically */
-#define PTRS_PER_PTE   1024
-
-#define PGD_SIZE       PAGE_SIZE
-#define PMD_SIZE       (1UL << PMD_SHIFT)
-#define PGDIR_SIZE     (1UL << PGDIR_SHIFT)
-#define PGDIR_MASK     (~(PGDIR_SIZE - 1))
-
-#define USER_PTRS_PER_PGD      (TASK_SIZE / PGDIR_SIZE)
-#define FIRST_USER_ADDRESS     0
-
-#define USER_PGD_PTRS          (PAGE_OFFSET >> PGDIR_SHIFT)
-#define KERNEL_PGD_PTRS                (PTRS_PER_PGD - USER_PGD_PTRS)
-
-#define TWOLEVEL_PGDIR_SHIFT   22
-#define BOOT_USER_PGD_PTRS     (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT)
-#define BOOT_KERNEL_PGD_PTRS   (1024 - BOOT_USER_PGD_PTRS)
-
-#ifndef __ASSEMBLY__
-extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
-#endif
-
-/*
- * Unfortunately, due to the way the MMU works on the MN10300, the vmalloc VM
- * area has to be in the lower half of the virtual address range (the upper
- * half is not translated through the TLB).
- *
- * So in this case, the vmalloc area goes at the bottom of the address map
- * (leaving a hole at the very bottom to catch addressing errors), and
- * userspace starts immediately above.
- *
- * The vmalloc() routines also leaves a hole of 4kB between each vmalloced
- * area to catch addressing errors.
- */
-#define VMALLOC_OFFSET (8 * 1024 * 1024)
-#define VMALLOC_START  (0x70000000)
-#define VMALLOC_END    (0x7C000000)
-
-#ifndef __ASSEMBLY__
-extern pte_t kernel_vmalloc_ptes[(VMALLOC_END - VMALLOC_START) / PAGE_SIZE];
-#endif
-
-/* IPTEL/DPTEL bit assignments */
-#define _PAGE_BIT_VALID                xPTEL_V_BIT
-#define _PAGE_BIT_ACCESSED     xPTEL_UNUSED1_BIT       /* mustn't be loaded into IPTEL/DPTEL */
-#define _PAGE_BIT_NX           xPTEL_UNUSED2_BIT       /* mustn't be loaded into IPTEL/DPTEL */
-#define _PAGE_BIT_CACHE                xPTEL_C_BIT
-#define _PAGE_BIT_PRESENT      xPTEL_PV_BIT
-#define _PAGE_BIT_DIRTY                xPTEL_D_BIT
-#define _PAGE_BIT_GLOBAL       xPTEL_G_BIT
-
-#define _PAGE_VALID            xPTEL_V
-#define _PAGE_ACCESSED         xPTEL_UNUSED1
-#define _PAGE_NX               xPTEL_UNUSED2           /* no-execute bit */
-#define _PAGE_CACHE            xPTEL_C
-#define _PAGE_PRESENT          xPTEL_PV
-#define _PAGE_DIRTY            xPTEL_D
-#define _PAGE_PROT             xPTEL_PR
-#define _PAGE_PROT_RKNU                xPTEL_PR_ROK
-#define _PAGE_PROT_WKNU                xPTEL_PR_RWK
-#define _PAGE_PROT_RKRU                xPTEL_PR_ROK_ROU
-#define _PAGE_PROT_WKRU                xPTEL_PR_RWK_ROU
-#define _PAGE_PROT_WKWU                xPTEL_PR_RWK_RWU
-#define _PAGE_GLOBAL           xPTEL_G
-#define _PAGE_PSE              xPTEL_PS_4Mb            /* 4MB page */
-
-#define _PAGE_FILE             xPTEL_UNUSED1_BIT       /* set:pagecache unset:swap */
-
-#define __PAGE_PROT_UWAUX      0x040
-#define __PAGE_PROT_USER       0x080
-#define __PAGE_PROT_WRITE      0x100
-
-#define _PAGE_PRESENTV         (_PAGE_PRESENT|_PAGE_VALID)
-#define _PAGE_PROTNONE         0x000   /* If not present */
-
-#ifndef __ASSEMBLY__
-
-#define VMALLOC_VMADDR(x) ((unsigned long)(x))
-
-#define _PAGE_TABLE    (_PAGE_PRESENTV | _PAGE_PROT_WKNU | _PAGE_ACCESSED | _PAGE_DIRTY)
-#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
-
-#define __PAGE_NONE    (_PAGE_PRESENTV | _PAGE_PROT_RKNU | _PAGE_ACCESSED | _PAGE_CACHE)
-#define __PAGE_SHARED  (_PAGE_PRESENTV | _PAGE_PROT_WKWU | _PAGE_ACCESSED | _PAGE_CACHE)
-#define __PAGE_COPY    (_PAGE_PRESENTV | _PAGE_PROT_RKRU | _PAGE_ACCESSED | _PAGE_CACHE)
-#define __PAGE_READONLY        (_PAGE_PRESENTV | _PAGE_PROT_RKRU | _PAGE_ACCESSED | _PAGE_CACHE)
-
-#define PAGE_NONE              __pgprot(__PAGE_NONE     | _PAGE_NX)
-#define PAGE_SHARED_NOEXEC     __pgprot(__PAGE_SHARED   | _PAGE_NX)
-#define PAGE_COPY_NOEXEC       __pgprot(__PAGE_COPY     | _PAGE_NX)
-#define PAGE_READONLY_NOEXEC   __pgprot(__PAGE_READONLY | _PAGE_NX)
-#define PAGE_SHARED_EXEC       __pgprot(__PAGE_SHARED)
-#define PAGE_COPY_EXEC         __pgprot(__PAGE_COPY)
-#define PAGE_READONLY_EXEC     __pgprot(__PAGE_READONLY)
-#define PAGE_COPY              PAGE_COPY_NOEXEC
-#define PAGE_READONLY          PAGE_READONLY_NOEXEC
-#define PAGE_SHARED            PAGE_SHARED_EXEC
-
-#define __PAGE_KERNEL_BASE (_PAGE_PRESENTV | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
-
-#define __PAGE_KERNEL          (__PAGE_KERNEL_BASE | _PAGE_PROT_WKNU | _PAGE_CACHE | _PAGE_NX)
-#define __PAGE_KERNEL_NOCACHE  (__PAGE_KERNEL_BASE | _PAGE_PROT_WKNU | _PAGE_NX)
-#define __PAGE_KERNEL_EXEC     (__PAGE_KERNEL & ~_PAGE_NX)
-#define __PAGE_KERNEL_RO       (__PAGE_KERNEL_BASE | _PAGE_PROT_RKNU | _PAGE_CACHE | _PAGE_NX)
-#define __PAGE_KERNEL_LARGE    (__PAGE_KERNEL | _PAGE_PSE)
-#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-
-#define PAGE_KERNEL            __pgprot(__PAGE_KERNEL)
-#define PAGE_KERNEL_RO         __pgprot(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_EXEC       __pgprot(__PAGE_KERNEL_EXEC)
-#define PAGE_KERNEL_NOCACHE    __pgprot(__PAGE_KERNEL_NOCACHE)
-#define PAGE_KERNEL_LARGE      __pgprot(__PAGE_KERNEL_LARGE)
-#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
-
-/*
- * Whilst the MN10300 can do page protection for execute (given separate data
- * and insn TLBs), we are not supporting it at the moment. Write permission,
- * however, always implies read permission (but not execute permission).
- */
-#define __P000 PAGE_NONE
-#define __P001 PAGE_READONLY_NOEXEC
-#define __P010 PAGE_COPY_NOEXEC
-#define __P011 PAGE_COPY_NOEXEC
-#define __P100 PAGE_READONLY_EXEC
-#define __P101 PAGE_READONLY_EXEC
-#define __P110 PAGE_COPY_EXEC
-#define __P111 PAGE_COPY_EXEC
-
-#define __S000 PAGE_NONE
-#define __S001 PAGE_READONLY_NOEXEC
-#define __S010 PAGE_SHARED_NOEXEC
-#define __S011 PAGE_SHARED_NOEXEC
-#define __S100 PAGE_READONLY_EXEC
-#define __S101 PAGE_READONLY_EXEC
-#define __S110 PAGE_SHARED_EXEC
-#define __S111 PAGE_SHARED_EXEC
-
-/*
- * Define this to warn about kernel memory accesses that are
- * done without a 'verify_area(VERIFY_WRITE,..)'
- */
-#undef TEST_VERIFY_AREA
-
-#define pte_present(x) (pte_val(x) & _PAGE_VALID)
-#define pte_clear(mm, addr, xp)                                \
-do {                                                   \
-       set_pte_at((mm), (addr), (xp), __pte(0));       \
-} while (0)
-
-#define pmd_none(x)    (!pmd_val(x))
-#define pmd_present(x) (!pmd_none(x))
-#define pmd_clear(xp)  do { set_pmd(xp, __pmd(0)); } while (0)
-#define        pmd_bad(x)      0
-
-
-#define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT))
-
-#ifndef __ASSEMBLY__
-
-/*
- * The following only work if pte_present() is true.
- * Undefined behaviour if not..
- */
-static inline int pte_user(pte_t pte)  { return pte_val(pte) & __PAGE_PROT_USER; }
-static inline int pte_read(pte_t pte)  { return pte_val(pte) & __PAGE_PROT_USER; }
-static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
-static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
-static inline int pte_write(pte_t pte) { return pte_val(pte) & __PAGE_PROT_WRITE; }
-static inline int pte_special(pte_t pte){ return 0; }
-
-/*
- * The following only works if pte_present() is not true.
- */
-static inline int pte_file(pte_t pte)  { return pte_val(pte) & _PAGE_FILE; }
-
-static inline pte_t pte_rdprotect(pte_t pte)
-{
-       pte_val(pte) &= ~(__PAGE_PROT_USER|__PAGE_PROT_UWAUX); return pte;
-}
-static inline pte_t pte_exprotect(pte_t pte)
-{
-       pte_val(pte) |= _PAGE_NX; return pte;
-}
-
-static inline pte_t pte_wrprotect(pte_t pte)
-{
-       pte_val(pte) &= ~(__PAGE_PROT_WRITE|__PAGE_PROT_UWAUX); return pte;
-}
-
-static inline pte_t pte_mkclean(pte_t pte)     { pte_val(pte) &= ~_PAGE_DIRTY; return pte; }
-static inline pte_t pte_mkold(pte_t pte)       { pte_val(pte) &= ~_PAGE_ACCESSED; return pte; }
-static inline pte_t pte_mkdirty(pte_t pte)     { pte_val(pte) |= _PAGE_DIRTY; return pte; }
-static inline pte_t pte_mkyoung(pte_t pte)     { pte_val(pte) |= _PAGE_ACCESSED; return pte; }
-static inline pte_t pte_mkexec(pte_t pte)      { pte_val(pte) &= ~_PAGE_NX; return pte; }
-
-static inline pte_t pte_mkread(pte_t pte)
-{
-       pte_val(pte) |= __PAGE_PROT_USER;
-       if (pte_write(pte))
-               pte_val(pte) |= __PAGE_PROT_UWAUX;
-       return pte;
-}
-static inline pte_t pte_mkwrite(pte_t pte)
-{
-       pte_val(pte) |= __PAGE_PROT_WRITE;
-       if (pte_val(pte) & __PAGE_PROT_USER)
-               pte_val(pte) |= __PAGE_PROT_UWAUX;
-       return pte;
-}
-
-static inline pte_t pte_mkspecial(pte_t pte)   { return pte; }
-
-#define pte_ERROR(e) \
-       printk(KERN_ERR "%s:%d: bad pte %08lx.\n", \
-              __FILE__, __LINE__, pte_val(e))
-#define pgd_ERROR(e) \
-       printk(KERN_ERR "%s:%d: bad pgd %08lx.\n", \
-              __FILE__, __LINE__, pgd_val(e))
-
-/*
- * The "pgd_xxx()" functions here are trivial for a folded two-level
- * setup: the pgd is never bad, and a pmd always exists (as it's folded
- * into the pgd entry)
- */
-#define pgd_clear(xp)                          do { } while (0)
-
-/*
- * Certain architectures need to do special things when PTEs
- * within a page table are directly modified.  Thus, the following
- * hook is made available.
- */
-#define set_pte(pteptr, pteval)                        (*(pteptr) = pteval)
-#define set_pte_at(mm, addr, ptep, pteval)     set_pte((ptep), (pteval))
-#define set_pte_atomic(pteptr, pteval)         set_pte((pteptr), (pteval))
-
-/*
- * (pmds are folded into pgds so this doesn't get actually called,
- * but the define is needed for a generic inline function.)
- */
-#define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval)
-
-#define ptep_get_and_clear(mm, addr, ptep) \
-       __pte(xchg(&(ptep)->pte, 0))
-#define pte_same(a, b)         (pte_val(a) == pte_val(b))
-#define pte_page(x)            pfn_to_page(pte_pfn(x))
-#define pte_none(x)            (!pte_val(x))
-#define pte_pfn(x)             ((unsigned long) (pte_val(x) >> PAGE_SHIFT))
-#define __pfn_addr(pfn)                ((pfn) << PAGE_SHIFT)
-#define pfn_pte(pfn, prot)     __pte(__pfn_addr(pfn) | pgprot_val(prot))
-#define pfn_pmd(pfn, prot)     __pmd(__pfn_addr(pfn) | pgprot_val(prot))
-
-/*
- * All present user pages are user-executable:
- */
-static inline int pte_exec(pte_t pte)
-{
-       return pte_user(pte);
-}
-
-/*
- * All present pages are kernel-executable:
- */
-static inline int pte_exec_kernel(pte_t pte)
-{
-       return 1;
-}
-
-/*
- * Bits 0 and 1 are taken, split up the 29 bits of offset
- * into this range:
- */
-#define PTE_FILE_MAX_BITS      29
-
-#define pte_to_pgoff(pte)      (pte_val(pte) >> 2)
-#define pgoff_to_pte(off)      __pte((off) << 2 | _PAGE_FILE)
-
-/* Encode and de-code a swap entry */
-#define __swp_type(x)                  (((x).val >> 2) & 0x3f)
-#define __swp_offset(x)                        ((x).val >> 8)
-#define __swp_entry(type, offset) \
-       ((swp_entry_t) { ((type) << 2) | ((offset) << 8) })
-#define __pte_to_swp_entry(pte)                ((swp_entry_t) { pte_val(pte) })
-#define __swp_entry_to_pte(x)          __pte((x).val)
-
-static inline
-int ptep_test_and_clear_dirty(struct vm_area_struct *vma, unsigned long addr,
-                             pte_t *ptep)
-{
-       if (!pte_dirty(*ptep))
-               return 0;
-       return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte);
-}
-
-static inline
-int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr,
-                             pte_t *ptep)
-{
-       if (!pte_young(*ptep))
-               return 0;
-       return test_and_clear_bit(_PAGE_BIT_ACCESSED, &ptep->pte);
-}
-
-static inline
-void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
-{
-       pte_val(*ptep) &= ~(__PAGE_PROT_WRITE|__PAGE_PROT_UWAUX);
-}
-
-static inline void ptep_mkdirty(pte_t *ptep)
-{
-       set_bit(_PAGE_BIT_DIRTY, &ptep->pte);
-}
-
-/*
- * Macro to mark a page protection value as "uncacheable".  On processors which
- * do not support it, this is a no-op.
- */
-#define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_CACHE)
-
-
-/*
- * Conversion functions: convert a page and protection to a page entry,
- * and a page entry and page directory to the page they refer to.
- */
-
-#define mk_pte(page, pgprot)   pfn_pte(page_to_pfn(page), (pgprot))
-#define mk_pte_huge(entry) \
-       ((entry).pte |= _PAGE_PRESENT | _PAGE_PSE | _PAGE_VALID)
-
-static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
-{
-       pte_val(pte) &= _PAGE_CHG_MASK;
-       pte_val(pte) |= pgprot_val(newprot);
-       return pte;
-}
-
-#define page_pte(page) page_pte_prot((page), __pgprot(0))
-
-#define pmd_page_kernel(pmd) \
-       ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
-
-#define pmd_page(pmd)  pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT)
-
-#define pmd_large(pmd) \
-       ((pmd_val(pmd) & (_PAGE_PSE | _PAGE_PRESENT)) == \
-        (_PAGE_PSE | _PAGE_PRESENT))
-
-/*
- * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
- *
- * this macro returns the index of the entry in the pgd page which would
- * control the given virtual address
- */
-#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
-
-/*
- * pgd_offset() returns a (pgd_t *)
- * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
- */
-#define pgd_offset(mm, address)        ((mm)->pgd + pgd_index(address))
-
-/*
- * a shortcut which implies the use of the kernel's pgd, instead
- * of a process's
- */
-#define pgd_offset_k(address)  pgd_offset(&init_mm, address)
-
-/*
- * the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
- *
- * this macro returns the index of the entry in the pmd page which would
- * control the given virtual address
- */
-#define pmd_index(address) \
-       (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
-
-/*
- * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
- *
- * this macro returns the index of the entry in the pte page which would
- * control the given virtual address
- */
-#define pte_index(address) \
-       (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
-
-#define pte_offset_kernel(dir, address) \
-       ((pte_t *) pmd_page_kernel(*(dir)) +  pte_index(address))
-
-/*
- * Make a given kernel text page executable/non-executable.
- * Returns the previous executability setting of that page (which
- * is used to restore the previous state). Used by the SMP bootup code.
- * NOTE: this is an __init function for security reasons.
- */
-static inline int set_kernel_exec(unsigned long vaddr, int enable)
-{
-       return 0;
-}
-
-#define pte_offset_map(dir, address) \
-       ((pte_t *) page_address(pmd_page(*(dir))) + pte_index(address))
-#define pte_offset_map_nested(dir, address) pte_offset_map(dir, address)
-#define pte_unmap(pte)         do {} while (0)
-#define pte_unmap_nested(pte)  do {} while (0)
-
-/*
- * The MN10300 has external MMU info in the form of a TLB: this is adapted from
- * the kernel page tables containing the necessary information by tlb-mn10300.S
- */
-extern void update_mmu_cache(struct vm_area_struct *vma,
-                            unsigned long address, pte_t pte);
-
-#endif /* !__ASSEMBLY__ */
-
-#define kern_addr_valid(addr)  (1)
-
-#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
-       remap_pfn_range((vma), (vaddr), (pfn), (size), (prot))
-
-#define MK_IOSPACE_PFN(space, pfn)     (pfn)
-#define GET_IOSPACE(pfn)               0
-#define GET_PFN(pfn)                   (pfn)
-
-#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
-#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
-#define __HAVE_ARCH_PTEP_SET_WRPROTECT
-#define __HAVE_ARCH_PTEP_MKDIRTY
-#define __HAVE_ARCH_PTE_SAME
-#include <asm-generic/pgtable.h>
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_PGTABLE_H */
diff --git a/include/asm-mn10300/pio-regs.h b/include/asm-mn10300/pio-regs.h
deleted file mode 100644 (file)
index 96bc818..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-/* MN10300 On-board I/O port module registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PIO_REGS_H
-#define _ASM_PIO_REGS_H
-
-#include <asm/cpu-regs.h>
-#include <asm/intctl-regs.h>
-
-#ifdef __KERNEL__
-
-/* I/O port 0 */
-#define        P0MD                    __SYSREG(0xdb000000, u16)       /* mode reg */
-#define P0MD_0                 0x0003  /* mask */
-#define P0MD_0_IN              0x0000  /* input mode */
-#define P0MD_0_OUT             0x0001  /* output mode */
-#define P0MD_0_TM0IO           0x0002  /* timer 0 I/O mode */
-#define P0MD_0_EYECLK          0x0003  /* test signal output (clock) */
-#define P0MD_1                 0x000c
-#define P0MD_1_IN              0x0000
-#define P0MD_1_OUT             0x0004
-#define P0MD_1_TM1IO           0x0008  /* timer 1 I/O mode */
-#define P0MD_1_EYED            0x000c  /* test signal output (data) */
-#define P0MD_2                 0x0030
-#define P0MD_2_IN              0x0000
-#define P0MD_2_OUT             0x0010
-#define P0MD_2_TM2IO           0x0020  /* timer 2 I/O mode */
-#define P0MD_3                 0x00c0
-#define P0MD_3_IN              0x0000
-#define P0MD_3_OUT             0x0040
-#define P0MD_3_TM3IO           0x0080  /* timer 3 I/O mode */
-#define P0MD_4                 0x0300
-#define P0MD_4_IN              0x0000
-#define P0MD_4_OUT             0x0100
-#define P0MD_4_TM4IO           0x0200  /* timer 4 I/O mode */
-#define P0MD_4_XCTS            0x0300  /* XCTS input for serial port 2 */
-#define P0MD_5                 0x0c00
-#define P0MD_5_IN              0x0000
-#define P0MD_5_OUT             0x0400
-#define P0MD_5_TM5IO           0x0800  /* timer 5 I/O mode */
-#define P0MD_6                 0x3000
-#define P0MD_6_IN              0x0000
-#define P0MD_6_OUT             0x1000
-#define P0MD_6_TM6IOA          0x2000  /* timer 6 I/O mode A */
-#define P0MD_7                 0xc000
-#define P0MD_7_IN              0x0000
-#define P0MD_7_OUT             0x4000
-#define P0MD_7_TM6IOB          0x8000  /* timer 6 I/O mode B */
-
-#define        P0IN                    __SYSREG(0xdb000004, u8)        /* in reg */
-#define        P0OUT                   __SYSREG(0xdb000008, u8)        /* out reg */
-
-#define        P0TMIO                  __SYSREG(0xdb00000c, u8)        /* TM pin I/O control reg */
-#define P0TMIO_TM0_IN          0x00
-#define P0TMIO_TM0_OUT         0x01
-#define P0TMIO_TM1_IN          0x00
-#define P0TMIO_TM1_OUT         0x02
-#define P0TMIO_TM2_IN          0x00
-#define P0TMIO_TM2_OUT         0x04
-#define P0TMIO_TM3_IN          0x00
-#define P0TMIO_TM3_OUT         0x08
-#define P0TMIO_TM4_IN          0x00
-#define P0TMIO_TM4_OUT         0x10
-#define P0TMIO_TM5_IN          0x00
-#define P0TMIO_TM5_OUT         0x20
-#define P0TMIO_TM6A_IN         0x00
-#define P0TMIO_TM6A_OUT                0x40
-#define P0TMIO_TM6B_IN         0x00
-#define P0TMIO_TM6B_OUT                0x80
-
-/* I/O port 1 */
-#define        P1MD                    __SYSREG(0xdb000100, u16)       /* mode reg */
-#define P1MD_0                 0x0003  /* mask */
-#define P1MD_0_IN              0x0000  /* input mode */
-#define P1MD_0_OUT             0x0001  /* output mode */
-#define P1MD_0_TM7IO           0x0002  /* timer 7 I/O mode */
-#define P1MD_0_ADTRG           0x0003  /* A/D converter trigger mode */
-#define P1MD_1                 0x000c
-#define P1MD_1_IN              0x0000
-#define P1MD_1_OUT             0x0004
-#define P1MD_1_TM8IO           0x0008  /* timer 8 I/O mode */
-#define P1MD_1_XDMR0           0x000c  /* DMA request input 0 mode */
-#define P1MD_2                 0x0030
-#define P1MD_2_IN              0x0000
-#define P1MD_2_OUT             0x0010
-#define P1MD_2_TM9IO           0x0020  /* timer 9 I/O mode */
-#define P1MD_2_XDMR1           0x0030  /* DMA request input 1 mode */
-#define P1MD_3                 0x00c0
-#define P1MD_3_IN              0x0000
-#define P1MD_3_OUT             0x0040
-#define P1MD_3_TM10IO          0x0080  /* timer 10 I/O mode */
-#define P1MD_3_FRQS0           0x00c0  /* CPU clock multiplier setting input 0 mode */
-#define P1MD_4                 0x0300
-#define P1MD_4_IN              0x0000
-#define P1MD_4_OUT             0x0100
-#define P1MD_4_TM11IO          0x0200  /* timer 11 I/O mode */
-#define P1MD_4_FRQS1           0x0300  /* CPU clock multiplier setting input 1 mode */
-
-#define        P1IN                    __SYSREG(0xdb000104, u8)        /* in reg */
-#define        P1OUT                   __SYSREG(0xdb000108, u8)        /* out reg */
-#define        P1TMIO                  __SYSREG(0xdb00010c, u8)        /* TM pin I/O control reg */
-#define P1TMIO_TM11_IN         0x00
-#define P1TMIO_TM11_OUT                0x01
-#define P1TMIO_TM10_IN         0x00
-#define P1TMIO_TM10_OUT                0x02
-#define P1TMIO_TM9_IN          0x00
-#define P1TMIO_TM9_OUT         0x04
-#define P1TMIO_TM8_IN          0x00
-#define P1TMIO_TM8_OUT         0x08
-#define P1TMIO_TM7_IN          0x00
-#define P1TMIO_TM7_OUT         0x10
-
-/* I/O port 2 */
-#define        P2MD                    __SYSREG(0xdb000200, u16)       /* mode reg */
-#define P2MD_0                 0x0003  /* mask */
-#define P2MD_0_IN              0x0000  /* input mode */
-#define P2MD_0_OUT             0x0001  /* output mode */
-#define P2MD_0_BOOTBW          0x0003  /* boot bus width selector mode */
-#define P2MD_1                 0x000c
-#define P2MD_1_IN              0x0000
-#define P2MD_1_OUT             0x0004
-#define P2MD_1_BOOTSEL         0x000c  /* boot device selector mode */
-#define P2MD_2                 0x0030
-#define P2MD_2_IN              0x0000
-#define P2MD_2_OUT             0x0010
-#define P2MD_3                 0x00c0
-#define P2MD_3_IN              0x0000
-#define P2MD_3_OUT             0x0040
-#define P2MD_3_CKIO            0x00c0  /* mode */
-#define P2MD_4                 0x0300
-#define P2MD_4_IN              0x0000
-#define P2MD_4_OUT             0x0100
-#define P2MD_4_CMOD            0x0300  /* mode */
-
-#define        P2IN                    __SYSREG(0xdb000204, u8)        /* in reg */
-#define        P2OUT                   __SYSREG(0xdb000208, u8)        /* out reg */
-#define        P2TMIO                  __SYSREG(0xdb00020c, u8)        /* TM pin I/O control reg */
-
-/* I/O port 3 */
-#define        P3MD                    __SYSREG(0xdb000300, u16)       /* mode reg */
-#define P3MD_0                 0x0003  /* mask */
-#define P3MD_0_IN              0x0000  /* input mode */
-#define P3MD_0_OUT             0x0001  /* output mode */
-#define P3MD_0_AFRXD           0x0002  /* AFR interface mode */
-#define P3MD_1                 0x000c
-#define P3MD_1_IN              0x0000
-#define P3MD_1_OUT             0x0004
-#define P3MD_1_AFTXD           0x0008  /* AFR interface mode */
-#define P3MD_2                 0x0030
-#define P3MD_2_IN              0x0000
-#define P3MD_2_OUT             0x0010
-#define P3MD_2_AFSCLK          0x0020  /* AFR interface mode */
-#define P3MD_3                 0x00c0
-#define P3MD_3_IN              0x0000
-#define P3MD_3_OUT             0x0040
-#define P3MD_3_AFFS            0x0080  /* AFR interface mode */
-#define P3MD_4                 0x0300
-#define P3MD_4_IN              0x0000
-#define P3MD_4_OUT             0x0100
-#define P3MD_4_AFEHC           0x0200  /* AFR interface mode */
-
-#define        P3IN                    __SYSREG(0xdb000304, u8)        /* in reg */
-#define        P3OUT                   __SYSREG(0xdb000308, u8)        /* out reg */
-
-/* I/O port 4 */
-#define        P4MD                    __SYSREG(0xdb000400, u16)       /* mode reg */
-#define P4MD_0                 0x0003  /* mask */
-#define P4MD_0_IN              0x0000  /* input mode */
-#define P4MD_0_OUT             0x0001  /* output mode */
-#define P4MD_0_SCL0            0x0002  /* I2C/serial mode */
-#define P4MD_1                 0x000c
-#define P4MD_1_IN              0x0000
-#define P4MD_1_OUT             0x0004
-#define P4MD_1_SDA0            0x0008
-#define P4MD_2                 0x0030
-#define P4MD_2_IN              0x0000
-#define P4MD_2_OUT             0x0010
-#define P4MD_2_SCL1            0x0020
-#define P4MD_3                 0x00c0
-#define P4MD_3_IN              0x0000
-#define P4MD_3_OUT             0x0040
-#define P4MD_3_SDA1            0x0080
-#define P4MD_4                 0x0300
-#define P4MD_4_IN              0x0000
-#define P4MD_4_OUT             0x0100
-#define P4MD_4_SBO0            0x0200
-#define P4MD_5                 0x0c00
-#define P4MD_5_IN              0x0000
-#define P4MD_5_OUT             0x0400
-#define P4MD_5_SBO1            0x0800
-#define P4MD_6                 0x3000
-#define P4MD_6_IN              0x0000
-#define P4MD_6_OUT             0x1000
-#define P4MD_6_SBT0            0x2000
-#define P4MD_7                 0xc000
-#define P4MD_7_IN              0x0000
-#define P4MD_7_OUT             0x4000
-#define P4MD_7_SBT1            0x8000
-
-#define        P4IN                    __SYSREG(0xdb000404, u8)        /* in reg */
-#define        P4OUT                   __SYSREG(0xdb000408, u8)        /* out reg */
-
-/* I/O port 5 */
-#define        P5MD                    __SYSREG(0xdb000500, u16)       /* mode reg */
-#define P5MD_0                 0x0003  /* mask */
-#define P5MD_0_IN              0x0000  /* input mode */
-#define P5MD_0_OUT             0x0001  /* output mode */
-#define P5MD_0_IRTXD           0x0002  /* IrDA mode */
-#define P5MD_0_SOUT            0x0004  /* serial mode */
-#define P5MD_1                 0x000c
-#define P5MD_1_IN              0x0000
-#define P5MD_1_OUT             0x0004
-#define P5MD_1_IRRXDS          0x0008  /* IrDA mode */
-#define P5MD_1_SIN             0x000c  /* serial mode */
-#define P5MD_2                 0x0030
-#define P5MD_2_IN              0x0000
-#define P5MD_2_OUT             0x0010
-#define P5MD_2_IRRXDF          0x0020  /* IrDA mode */
-
-#define        P5IN                    __SYSREG(0xdb000504, u8)        /* in reg */
-#define        P5OUT                   __SYSREG(0xdb000508, u8)        /* out reg */
-
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_PIO_REGS_H */
diff --git a/include/asm-mn10300/poll.h b/include/asm-mn10300/poll.h
deleted file mode 100644 (file)
index c98509d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/poll.h>
diff --git a/include/asm-mn10300/posix_types.h b/include/asm-mn10300/posix_types.h
deleted file mode 100644 (file)
index 077567c..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/* MN10300 POSIX types
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_POSIX_TYPES_H
-#define _ASM_POSIX_TYPES_H
-
-/*
- * This file is generally used by user-level software, so you need to
- * be a little careful about namespace pollution etc.  Also, we cannot
- * assume GCC is being used.
- */
-
-typedef unsigned long  __kernel_ino_t;
-typedef unsigned short __kernel_mode_t;
-typedef unsigned short __kernel_nlink_t;
-typedef long           __kernel_off_t;
-typedef int            __kernel_pid_t;
-typedef unsigned short __kernel_ipc_pid_t;
-typedef unsigned short __kernel_uid_t;
-typedef unsigned short __kernel_gid_t;
-typedef unsigned long  __kernel_size_t;
-typedef long           __kernel_ssize_t;
-typedef int            __kernel_ptrdiff_t;
-typedef long           __kernel_time_t;
-typedef long           __kernel_suseconds_t;
-typedef long           __kernel_clock_t;
-typedef int            __kernel_timer_t;
-typedef int            __kernel_clockid_t;
-typedef int            __kernel_daddr_t;
-typedef char *         __kernel_caddr_t;
-typedef unsigned short __kernel_uid16_t;
-typedef unsigned short __kernel_gid16_t;
-typedef unsigned int   __kernel_uid32_t;
-typedef unsigned int   __kernel_gid32_t;
-
-typedef unsigned short __kernel_old_uid_t;
-typedef unsigned short __kernel_old_gid_t;
-typedef unsigned short __kernel_old_dev_t;
-
-#ifdef __GNUC__
-typedef long long      __kernel_loff_t;
-#endif
-
-typedef struct {
-#if defined(__KERNEL__) || defined(__USE_ALL)
-       int     val[2];
-#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
-       int     __val[2];
-#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
-} __kernel_fsid_t;
-
-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
-
-#undef __FD_SET
-static inline void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
-{
-       unsigned long __tmp = __fd / __NFDBITS;
-       unsigned long __rem = __fd % __NFDBITS;
-       __fdsetp->fds_bits[__tmp] |= (1UL<<__rem);
-}
-
-#undef __FD_CLR
-static inline void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp)
-{
-       unsigned long __tmp = __fd / __NFDBITS;
-       unsigned long __rem = __fd % __NFDBITS;
-       __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem);
-}
-
-
-#undef __FD_ISSET
-static inline int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p)
-{
-       unsigned long __tmp = __fd / __NFDBITS;
-       unsigned long __rem = __fd % __NFDBITS;
-       return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0;
-}
-
-/*
- * This will unroll the loop for the normal constant case (8 ints,
- * for a 256-bit fd_set)
- */
-#undef __FD_ZERO
-static inline void __FD_ZERO(__kernel_fd_set *__p)
-{
-       unsigned long *__tmp = __p->fds_bits;
-       int __i;
-
-       if (__builtin_constant_p(__FDSET_LONGS)) {
-               switch (__FDSET_LONGS) {
-               case 16:
-                       __tmp[ 0] = 0; __tmp[ 1] = 0;
-                       __tmp[ 2] = 0; __tmp[ 3] = 0;
-                       __tmp[ 4] = 0; __tmp[ 5] = 0;
-                       __tmp[ 6] = 0; __tmp[ 7] = 0;
-                       __tmp[ 8] = 0; __tmp[ 9] = 0;
-                       __tmp[10] = 0; __tmp[11] = 0;
-                       __tmp[12] = 0; __tmp[13] = 0;
-                       __tmp[14] = 0; __tmp[15] = 0;
-                       return;
-
-               case 8:
-                       __tmp[ 0] = 0; __tmp[ 1] = 0;
-                       __tmp[ 2] = 0; __tmp[ 3] = 0;
-                       __tmp[ 4] = 0; __tmp[ 5] = 0;
-                       __tmp[ 6] = 0; __tmp[ 7] = 0;
-                       return;
-
-               case 4:
-                       __tmp[ 0] = 0; __tmp[ 1] = 0;
-                       __tmp[ 2] = 0; __tmp[ 3] = 0;
-                       return;
-               }
-       }
-       __i = __FDSET_LONGS;
-       while (__i) {
-               __i--;
-               *__tmp = 0;
-               __tmp++;
-       }
-}
-
-#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
-
-#endif /* _ASM_POSIX_TYPES_H */
diff --git a/include/asm-mn10300/proc-mn103e010/cache.h b/include/asm-mn10300/proc-mn103e010/cache.h
deleted file mode 100644 (file)
index bdc1f9a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* MN103E010 Cache specification
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PROC_CACHE_H
-#define _ASM_PROC_CACHE_H
-
-/* L1 cache */
-
-#define L1_CACHE_NWAYS         4       /* number of ways in caches */
-#define L1_CACHE_NENTRIES      256     /* number of entries in each way */
-#define L1_CACHE_BYTES         16      /* bytes per entry */
-#define L1_CACHE_SHIFT         4       /* shift for bytes per entry */
-#define L1_CACHE_WAYDISP       0x1000  /* displacement of one way from the next */
-
-#define L1_CACHE_TAG_VALID     0x00000001      /* cache tag valid bit */
-#define L1_CACHE_TAG_DIRTY     0x00000008      /* data cache tag dirty bit */
-#define L1_CACHE_TAG_ENTRY     0x00000ff0      /* cache tag entry address mask */
-#define L1_CACHE_TAG_ADDRESS   0xfffff000      /* cache tag line address mask */
-
-/*
- * specification of the interval between interrupt checking intervals whilst
- * managing the cache with the interrupts disabled
- */
-#define MN10300_DCACHE_INV_RANGE_INTR_LOG2_INTERVAL    4
-
-#endif /* _ASM_PROC_CACHE_H */
diff --git a/include/asm-mn10300/proc-mn103e010/clock.h b/include/asm-mn10300/proc-mn103e010/clock.h
deleted file mode 100644 (file)
index caf9983..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* MN103E010-specific clocks
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PROC_CLOCK_H
-#define _ASM_PROC_CLOCK_H
-
-#include <asm/unit/clock.h>
-
-#define MN10300_WDCLK          MN10300_IOCLK
-
-#endif /* _ASM_PROC_CLOCK_H */
diff --git a/include/asm-mn10300/proc-mn103e010/irq.h b/include/asm-mn10300/proc-mn103e010/irq.h
deleted file mode 100644 (file)
index aa6ee8f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* MN103E010 On-board interrupt controller numbers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_PROC_IRQ_H
-#define _ASM_PROC_IRQ_H
-
-#ifdef __KERNEL__
-
-#define GxICR_NUM_IRQS         42
-
-#define GxICR_NUM_XIRQS                8
-
-#define XIRQ0          34
-#define XIRQ1          35
-#define XIRQ2          36
-#define XIRQ3          37
-#define XIRQ4          38
-#define XIRQ5          39
-#define XIRQ6          40
-#define XIRQ7          41
-
-#define XIRQ2IRQ(num)  (XIRQ0 + num)
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_PROC_IRQ_H */
diff --git a/include/asm-mn10300/proc-mn103e010/proc.h b/include/asm-mn10300/proc-mn103e010/proc.h
deleted file mode 100644 (file)
index 22a2b93..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* MN103E010 Processor description
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_PROC_PROC_H
-#define _ASM_PROC_PROC_H
-
-#define PROCESSOR_VENDOR_NAME  "Matsushita"
-#define PROCESSOR_MODEL_NAME   "mn103e010"
-
-#endif /* _ASM_PROC_PROC_H */
diff --git a/include/asm-mn10300/processor.h b/include/asm-mn10300/processor.h
deleted file mode 100644 (file)
index 7323927..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-/* MN10300 Processor specifics
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_PROCESSOR_H
-#define _ASM_PROCESSOR_H
-
-#include <asm/page.h>
-#include <asm/ptrace.h>
-#include <asm/cpu-regs.h>
-#include <linux/threads.h>
-
-/* Forward declaration, a strange C thing */
-struct task_struct;
-struct mm_struct;
-
-/*
- * Default implementation of macro that returns current
- * instruction pointer ("program counter").
- */
-#define current_text_addr()                    \
-({                                             \
-       void *__pc;                             \
-       asm("mov pc,%0" : "=a"(__pc));          \
-       __pc;                                   \
-})
-
-extern void show_registers(struct pt_regs *regs);
-
-/*
- *  CPU type and hardware bug flags. Kept separately for each CPU.
- *  Members of this structure are referenced in head.S, so think twice
- *  before touching them. [mj]
- */
-
-struct mn10300_cpuinfo {
-       int             type;
-       unsigned long   loops_per_sec;
-       char            hard_math;
-       unsigned long   *pgd_quick;
-       unsigned long   *pte_quick;
-       unsigned long   pgtable_cache_sz;
-};
-
-extern struct mn10300_cpuinfo boot_cpu_data;
-
-#define cpu_data &boot_cpu_data
-#define current_cpu_data boot_cpu_data
-
-extern void identify_cpu(struct mn10300_cpuinfo *);
-extern void print_cpu_info(struct mn10300_cpuinfo *);
-extern void dodgy_tsc(void);
-#define cpu_relax() barrier()
-
-/*
- * User space process size: 1.75GB (default).
- */
-#define TASK_SIZE              0x70000000
-
-/*
- * Where to put the userspace stack by default
- */
-#define STACK_TOP              0x70000000
-#define STACK_TOP_MAX          STACK_TOP
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE     0x30000000
-
-typedef struct {
-       unsigned long   seg;
-} mm_segment_t;
-
-struct fpu_state_struct {
-       unsigned long   fs[32];         /* fpu registers */
-       unsigned long   fpcr;           /* fpu control register */
-};
-
-struct thread_struct {
-       struct pt_regs          *uregs;         /* userspace register frame */
-       unsigned long           pc;             /* kernel PC */
-       unsigned long           sp;             /* kernel SP */
-       unsigned long           a3;             /* kernel FP */
-       unsigned long           wchan;
-       unsigned long           usp;
-       struct pt_regs          *__frame;
-       unsigned long           fpu_flags;
-#define THREAD_USING_FPU       0x00000001      /* T if this task is using the FPU */
-       struct fpu_state_struct fpu_state;
-};
-
-#define INIT_THREAD                            \
-{                                              \
-       .uregs          = init_uregs,           \
-       .pc             = 0,                    \
-       .sp             = 0,                    \
-       .a3             = 0,                    \
-       .wchan          = 0,                    \
-       .__frame        = NULL,                 \
-}
-
-#define INIT_MMAP \
-{ &init_mm, 0, 0, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, \
-  NULL, NULL }
-
-/*
- * do necessary setup to start up a newly executed thread
- * - need to discard the frame stacked by the kernel thread invoking the execve
- *   syscall (see RESTORE_ALL macro)
- */
-#define start_thread(regs, new_pc, new_sp) do {                \
-       set_fs(USER_DS);                                \
-       __frame = current->thread.uregs;                \
-       __frame->epsw = EPSW_nSL | EPSW_IE | EPSW_IM;   \
-       __frame->pc = new_pc;                           \
-       __frame->sp = new_sp;                           \
-} while (0)
-
-/* Free all resources held by a thread. */
-extern void release_thread(struct task_struct *);
-
-/* Prepare to copy thread state - unlazy all lazy status */
-extern void prepare_to_copy(struct task_struct *tsk);
-
-/*
- * create a kernel thread without removing it from tasklists
- */
-extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
-
-/*
- * Return saved PC of a blocked thread.
- */
-extern unsigned long thread_saved_pc(struct task_struct *tsk);
-
-unsigned long get_wchan(struct task_struct *p);
-
-#define task_pt_regs(task)                                             \
-({                                                                     \
-       struct pt_regs *__regs__;                                       \
-       __regs__ = (struct pt_regs *) (KSTK_TOP(task_stack_page(task)) - 8); \
-       __regs__ - 1;                                                   \
-})
-
-#define KSTK_EIP(task) (task_pt_regs(task)->pc)
-#define KSTK_ESP(task) (task_pt_regs(task)->sp)
-
-#define KSTK_TOP(info)                         \
-({                                             \
-       (unsigned long)(info) + THREAD_SIZE;    \
-})
-
-#define ARCH_HAS_PREFETCH
-#define ARCH_HAS_PREFETCHW
-
-static inline void prefetch(const void *x)
-{
-#ifndef CONFIG_MN10300_CACHE_DISABLED
-#ifdef CONFIG_MN10300_PROC_MN103E010
-       asm volatile ("nop; nop; dcpf (%0)" : : "r"(x));
-#else
-       asm volatile ("dcpf (%0)" : : "r"(x));
-#endif
-#endif
-}
-
-static inline void prefetchw(const void *x)
-{
-#ifndef CONFIG_MN10300_CACHE_DISABLED
-#ifdef CONFIG_MN10300_PROC_MN103E010
-       asm volatile ("nop; nop; dcpf (%0)" : : "r"(x));
-#else
-       asm volatile ("dcpf (%0)" : : "r"(x));
-#endif
-#endif
-}
-
-#endif /* _ASM_PROCESSOR_H */
diff --git a/include/asm-mn10300/ptrace.h b/include/asm-mn10300/ptrace.h
deleted file mode 100644 (file)
index 7b06cc6..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* MN10300 Exception frame layout and ptrace constants
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_PTRACE_H
-#define _ASM_PTRACE_H
-
-#define PT_A3          0
-#define PT_A2          1
-#define PT_D3          2
-#define        PT_D2           3
-#define PT_MCVF                4
-#define        PT_MCRL         5
-#define PT_MCRH                6
-#define        PT_MDRQ         7
-#define        PT_E1           8
-#define        PT_E0           9
-#define        PT_E7           10
-#define        PT_E6           11
-#define        PT_E5           12
-#define        PT_E4           13
-#define        PT_E3           14
-#define        PT_E2           15
-#define        PT_SP           16
-#define        PT_LAR          17
-#define        PT_LIR          18
-#define        PT_MDR          19
-#define        PT_A1           20
-#define        PT_A0           21
-#define        PT_D1           22
-#define        PT_D0           23
-#define PT_ORIG_D0     24
-#define        PT_EPSW         25
-#define        PT_PC           26
-#define NR_PTREGS      27
-
-#ifndef __ASSEMBLY__
-/*
- * This defines the way registers are stored in the event of an exception
- * - the strange order is due to the MOVM instruction
- */
-struct pt_regs {
-       unsigned long           a3;             /* syscall arg 3 */
-       unsigned long           a2;             /* syscall arg 4 */
-       unsigned long           d3;             /* syscall arg 5 */
-       unsigned long           d2;             /* syscall arg 6 */
-       unsigned long           mcvf;
-       unsigned long           mcrl;
-       unsigned long           mcrh;
-       unsigned long           mdrq;
-       unsigned long           e1;
-       unsigned long           e0;
-       unsigned long           e7;
-       unsigned long           e6;
-       unsigned long           e5;
-       unsigned long           e4;
-       unsigned long           e3;
-       unsigned long           e2;
-       unsigned long           sp;
-       unsigned long           lar;
-       unsigned long           lir;
-       unsigned long           mdr;
-       unsigned long           a1;
-       unsigned long           a0;             /* syscall arg 1 */
-       unsigned long           d1;             /* syscall arg 2 */
-       unsigned long           d0;             /* syscall ret */
-       struct pt_regs          *next;          /* next frame pointer */
-       unsigned long           orig_d0;        /* syscall number */
-       unsigned long           epsw;
-       unsigned long           pc;
-};
-#endif
-
-extern struct pt_regs *__frame; /* current frame pointer */
-
-/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
-#define PTRACE_GETREGS            12
-#define PTRACE_SETREGS            13
-#define PTRACE_GETFPREGS          14
-#define PTRACE_SETFPREGS          15
-
-/* options set using PTRACE_SETOPTIONS */
-#define PTRACE_O_TRACESYSGOOD     0x00000001
-
-#if defined(__KERNEL__)
-
-#if !defined(__ASSEMBLY__)
-#define user_mode(regs)                        (((regs)->epsw & EPSW_nSL) == EPSW_nSL)
-#define instruction_pointer(regs)      ((regs)->pc)
-extern void show_regs(struct pt_regs *);
-#endif  /*  !__ASSEMBLY  */
-
-#define profile_pc(regs) ((regs)->pc)
-
-#endif  /*  __KERNEL__  */
-
-#endif /* _ASM_PTRACE_H */
diff --git a/include/asm-mn10300/reset-regs.h b/include/asm-mn10300/reset-regs.h
deleted file mode 100644 (file)
index 174523d..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* MN10300 Reset controller and watchdog timer definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_RESET_REGS_H
-#define _ASM_RESET_REGS_H
-
-#include <asm/cpu-regs.h>
-#include <asm/exceptions.h>
-
-#ifdef __KERNEL__
-
-#ifdef CONFIG_MN10300_WD_TIMER
-#define ARCH_HAS_NMI_WATCHDOG          /* See include/linux/nmi.h */
-#endif
-
-/*
- * watchdog timer registers
- */
-#define WDBC                   __SYSREGC(0xc0001000, u8) /* watchdog binary counter reg */
-
-#define WDCTR                  __SYSREG(0xc0001002, u8)  /* watchdog timer control reg */
-#define WDCTR_WDCK             0x07    /* clock source selection */
-#define WDCTR_WDCK_256th       0x00    /* - OSCI/256 */
-#define WDCTR_WDCK_1024th      0x01    /* - OSCI/1024 */
-#define WDCTR_WDCK_2048th      0x02    /* - OSCI/2048 */
-#define WDCTR_WDCK_16384th     0x03    /* - OSCI/16384 */
-#define WDCTR_WDCK_65536th     0x04    /* - OSCI/65536 */
-#define WDCTR_WDRST            0x40    /* binary counter reset */
-#define WDCTR_WDCNE            0x80    /* watchdog timer enable */
-
-#define RSTCTR                 __SYSREG(0xc0001004, u8) /* reset control reg */
-#define RSTCTR_CHIPRST         0x01    /* chip reset */
-#define RSTCTR_DBFRST          0x02    /* double fault reset flag */
-#define RSTCTR_WDTRST          0x04    /* watchdog timer reset flag */
-#define RSTCTR_WDREN           0x08    /* watchdog timer reset enable */
-
-#ifndef __ASSEMBLY__
-
-static inline void mn10300_proc_hard_reset(void)
-{
-       RSTCTR &= ~RSTCTR_CHIPRST;
-       RSTCTR |= RSTCTR_CHIPRST;
-}
-
-extern unsigned int watchdog_alert_counter;
-
-extern void watchdog_go(void);
-extern asmlinkage void watchdog_handler(void);
-extern asmlinkage
-void watchdog_interrupt(struct pt_regs *, enum exception_code);
-
-#endif
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_RESET_REGS_H */
diff --git a/include/asm-mn10300/resource.h b/include/asm-mn10300/resource.h
deleted file mode 100644 (file)
index 04bc4db..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/resource.h>
diff --git a/include/asm-mn10300/rtc-regs.h b/include/asm-mn10300/rtc-regs.h
deleted file mode 100644 (file)
index c42deef..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* MN10300 on-chip Real-Time Clock registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_RTC_REGS_H
-#define _ASM_RTC_REGS_H
-
-#include <asm/intctl-regs.h>
-
-#ifdef __KERNEL__
-
-#define RTSCR                  __SYSREG(0xd8600000, u8) /* RTC seconds count reg */
-#define RTSAR                  __SYSREG(0xd8600001, u8) /* RTC seconds alarm reg */
-#define RTMCR                  __SYSREG(0xd8600002, u8) /* RTC minutes count reg */
-#define RTMAR                  __SYSREG(0xd8600003, u8) /* RTC minutes alarm reg */
-#define RTHCR                  __SYSREG(0xd8600004, u8) /* RTC hours count reg */
-#define RTHAR                  __SYSREG(0xd8600005, u8) /* RTC hours alarm reg */
-#define RTDWCR                 __SYSREG(0xd8600006, u8) /* RTC day of the week count reg */
-#define RTDMCR                 __SYSREG(0xd8600007, u8) /* RTC days count reg */
-#define RTMTCR                 __SYSREG(0xd8600008, u8) /* RTC months count reg */
-#define RTYCR                  __SYSREG(0xd8600009, u8) /* RTC years count reg */
-
-#define RTCRA                  __SYSREG(0xd860000a, u8)/* RTC control reg A */
-#define RTCRA_RS               0x0f    /* periodic timer interrupt cycle setting */
-#define RTCRA_RS_NONE          0x00    /* - off */
-#define RTCRA_RS_3_90625ms     0x01    /* - 3.90625ms  (1/256s) */
-#define RTCRA_RS_7_8125ms      0x02    /* - 7.8125ms   (1/128s) */
-#define RTCRA_RS_122_070us     0x03    /* - 122.070us  (1/8192s) */
-#define RTCRA_RS_244_141us     0x04    /* - 244.141us  (1/4096s) */
-#define RTCRA_RS_488_281us     0x05    /* - 488.281us  (1/2048s) */
-#define RTCRA_RS_976_5625us    0x06    /* - 976.5625us (1/1024s) */
-#define RTCRA_RS_1_953125ms    0x07    /* - 1.953125ms (1/512s) */
-#define RTCRA_RS_3_90624ms     0x08    /* - 3.90624ms  (1/256s) */
-#define RTCRA_RS_7_8125ms_b    0x09    /* - 7.8125ms   (1/128s) */
-#define RTCRA_RS_15_625ms      0x0a    /* - 15.625ms   (1/64s) */
-#define RTCRA_RS_31_25ms       0x0b    /* - 31.25ms    (1/32s) */
-#define RTCRA_RS_62_5ms                0x0c    /* - 62.5ms     (1/16s) */
-#define RTCRA_RS_125ms         0x0d    /* - 125ms      (1/8s) */
-#define RTCRA_RS_250ms         0x0e    /* - 250ms      (1/4s) */
-#define RTCRA_RS_500ms         0x0f    /* - 500ms      (1/2s) */
-#define RTCRA_DVR              0x40    /* divider reset */
-#define RTCRA_UIP              0x80    /* clock update flag */
-
-#define RTCRB                  __SYSREG(0xd860000b, u8) /* RTC control reg B */
-#define RTCRB_DSE              0x01    /* daylight savings time enable */
-#define RTCRB_TM               0x02    /* time format */
-#define RTCRB_TM_12HR          0x00    /* - 12 hour format */
-#define RTCRB_TM_24HR          0x02    /* - 24 hour format */
-#define RTCRB_DM               0x04    /* numeric value format */
-#define RTCRB_DM_BCD           0x00    /* - BCD */
-#define RTCRB_DM_BINARY                0x04    /* - binary */
-#define RTCRB_UIE              0x10    /* update interrupt disable */
-#define RTCRB_AIE              0x20    /* alarm interrupt disable */
-#define RTCRB_PIE              0x40    /* periodic interrupt disable */
-#define RTCRB_SET              0x80    /* clock update enable */
-
-#define RTSRC                  __SYSREG(0xd860000c, u8) /* RTC status reg C */
-#define RTSRC_UF               0x10    /* update end interrupt flag */
-#define RTSRC_AF               0x20    /* alarm interrupt flag */
-#define RTSRC_PF               0x40    /* periodic interrupt flag */
-#define RTSRC_IRQF             0x80    /* interrupt flag */
-
-#define RTIRQ                  32
-#define RTICR                  GxICR(RTIRQ)
-
-/*
- * MC146818 RTC compatibility defs for the MN10300 on-chip RTC
- */
-#define RTC_PORT(x)            0xd8600000
-#define RTC_ALWAYS_BCD         1       /* RTC operates in binary mode */
-
-#define CMOS_READ(addr)                __SYSREG(0xd8600000 + (addr), u8)
-#define CMOS_WRITE(val, addr)  \
-       do { __SYSREG(0xd8600000 + (addr), u8) = val; } while (0)
-
-#define RTC_IRQ                        RTIRQ
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_RTC_REGS_H */
diff --git a/include/asm-mn10300/rtc.h b/include/asm-mn10300/rtc.h
deleted file mode 100644 (file)
index c295194..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* MN10300 Real time clock definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_RTC_H
-#define _ASM_RTC_H
-
-#ifdef CONFIG_MN10300_RTC
-
-#include <linux/init.h>
-
-extern void check_rtc_time(void);
-extern void __init calibrate_clock(void);
-extern unsigned long __init get_initial_rtc_time(void);
-
-#else /* !CONFIG_MN10300_RTC */
-
-static inline void check_rtc_time(void)
-{
-}
-
-static inline void calibrate_clock(void)
-{
-}
-
-static inline unsigned long get_initial_rtc_time(void)
-{
-       return 0;
-}
-
-#endif /* !CONFIG_MN10300_RTC */
-
-#include <asm-generic/rtc.h>
-
-#endif /* _ASM_RTC_H */
diff --git a/include/asm-mn10300/scatterlist.h b/include/asm-mn10300/scatterlist.h
deleted file mode 100644 (file)
index 6753590..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/* MN10300 Scatterlist definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SCATTERLIST_H
-#define _ASM_SCATTERLIST_H
-
-#include <asm/types.h>
-
-/*
- * Drivers must set either ->address or (preferred) page and ->offset
- * to indicate where data must be transferred to/from.
- *
- * Using page is recommended since it handles highmem data as well as
- * low mem. ->address is restricted to data which has a virtual mapping, and
- * it will go away in the future. Updating to page can be automated very
- * easily -- something like
- *
- * sg->address = some_ptr;
- *
- * can be rewritten as
- *
- * sg_set_page(virt_to_page(some_ptr));
- * sg->offset = (unsigned long) some_ptr & ~PAGE_MASK;
- *
- * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens
- */
-struct scatterlist {
-#ifdef CONFIG_DEBUG_SG
-       unsigned long   sg_magic;
-#endif
-       unsigned long   page_link;
-       unsigned int    offset;         /* for highmem, page offset */
-       dma_addr_t      dma_address;
-       unsigned int    length;
-};
-
-#define ISA_DMA_THRESHOLD (0x00ffffff)
-
-/*
- * These macros should be used after a pci_map_sg call has been done
- * to get bus addresses of each of the SG entries and their lengths.
- * You should only work with the number of sg entries pci_map_sg
- * returns.
- */
-#define sg_dma_address(sg)     ((sg)->dma_address)
-#define sg_dma_len(sg)         ((sg)->length)
-
-#endif /* _ASM_SCATTERLIST_H */
diff --git a/include/asm-mn10300/sections.h b/include/asm-mn10300/sections.h
deleted file mode 100644 (file)
index 2b8c516..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/sections.h>
diff --git a/include/asm-mn10300/sembuf.h b/include/asm-mn10300/sembuf.h
deleted file mode 100644 (file)
index 301f3f9..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _ASM_SEMBUF_H
-#define _ASM_SEMBUF_H
-
-/*
- * The semid64_ds structure for MN10300 architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 64-bit time_t to solve y2038 problem
- * - 2 miscellaneous 32-bit values
- */
-
-struct semid64_ds {
-       struct ipc64_perm sem_perm;             /* permissions .. see ipc.h */
-       __kernel_time_t sem_otime;              /* last semop time */
-       unsigned long   __unused1;
-       __kernel_time_t sem_ctime;              /* last change time */
-       unsigned long   __unused2;
-       unsigned long   sem_nsems;              /* no. of semaphores in array */
-       unsigned long   __unused3;
-       unsigned long   __unused4;
-};
-
-#endif /* _ASM_SEMBUF_H */
diff --git a/include/asm-mn10300/serial-regs.h b/include/asm-mn10300/serial-regs.h
deleted file mode 100644 (file)
index 6498469..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/* MN10300 on-board serial port module registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_SERIAL_REGS_H
-#define _ASM_SERIAL_REGS_H
-
-#include <asm/cpu-regs.h>
-#include <asm/intctl-regs.h>
-
-#ifdef __KERNEL__
-
-/* serial port 0 */
-#define        SC0CTR                  __SYSREG(0xd4002000, u16)       /* control reg */
-#define        SC01CTR_CK              0x0007  /* clock source select */
-#define        SC0CTR_CK_TM8UFLOW_8    0x0000  /* - 1/8 timer 8 underflow (serial port 0 only) */
-#define        SC1CTR_CK_TM9UFLOW_8    0x0000  /* - 1/8 timer 9 underflow (serial port 1 only) */
-#define        SC01CTR_CK_IOCLK_8      0x0001  /* - 1/8 IOCLK */
-#define        SC01CTR_CK_IOCLK_32     0x0002  /* - 1/32 IOCLK */
-#define        SC0CTR_CK_TM2UFLOW_2    0x0003  /* - 1/2 timer 2 underflow (serial port 0 only) */
-#define        SC1CTR_CK_TM3UFLOW_2    0x0003  /* - 1/2 timer 3 underflow (serial port 1 only) */
-#define        SC0CTR_CK_TM0UFLOW_8    0x0004  /* - 1/8 timer 1 underflow (serial port 0 only) */
-#define        SC1CTR_CK_TM1UFLOW_8    0x0004  /* - 1/8 timer 2 underflow (serial port 1 only) */
-#define        SC0CTR_CK_TM2UFLOW_8    0x0005  /* - 1/8 timer 2 underflow (serial port 0 only) */
-#define        SC1CTR_CK_TM3UFLOW_8    0x0005  /* - 1/8 timer 3 underflow (serial port 1 only) */
-#define        SC01CTR_CK_EXTERN_8     0x0006  /* - 1/8 external closk */
-#define        SC01CTR_CK_EXTERN       0x0007  /* - external closk */
-#define        SC01CTR_STB             0x0008  /* stop bit select */
-#define        SC01CTR_STB_1BIT        0x0000  /* - 1 stop bit */
-#define        SC01CTR_STB_2BIT        0x0008  /* - 2 stop bits */
-#define        SC01CTR_PB              0x0070  /* parity bit select */
-#define        SC01CTR_PB_NONE         0x0000  /* - no parity */
-#define        SC01CTR_PB_FIXED0       0x0040  /* - fixed at 0 */
-#define        SC01CTR_PB_FIXED1       0x0050  /* - fixed at 1 */
-#define        SC01CTR_PB_EVEN         0x0060  /* - even parity */
-#define        SC01CTR_PB_ODD          0x0070  /* - odd parity */
-#define        SC01CTR_CLN             0x0080  /* character length */
-#define        SC01CTR_CLN_7BIT        0x0000  /* - 7 bit chars */
-#define        SC01CTR_CLN_8BIT        0x0080  /* - 8 bit chars */
-#define        SC01CTR_TOE             0x0100  /* T input output enable */
-#define        SC01CTR_OD              0x0200  /* bit order select */
-#define        SC01CTR_OD_LSBFIRST     0x0000  /* - LSB first */
-#define        SC01CTR_OD_MSBFIRST     0x0200  /* - MSB first */
-#define        SC01CTR_MD              0x0c00  /* mode select */
-#define SC01CTR_MD_STST_SYNC   0x0000  /* - start-stop synchronous */
-#define SC01CTR_MD_CLOCK_SYNC1 0x0400  /* - clock synchronous 1 */
-#define SC01CTR_MD_I2C         0x0800  /* - I2C mode */
-#define SC01CTR_MD_CLOCK_SYNC2 0x0c00  /* - clock synchronous 2 */
-#define        SC01CTR_IIC             0x1000  /* I2C mode select */
-#define        SC01CTR_BKE             0x2000  /* break transmit enable */
-#define        SC01CTR_RXE             0x4000  /* receive enable */
-#define        SC01CTR_TXE             0x8000  /* transmit enable */
-
-#define        SC0ICR                  __SYSREG(0xd4002004, u8)        /* interrupt control reg */
-#define SC01ICR_DMD            0x80    /* output data mode */
-#define SC01ICR_TD             0x20    /* transmit DMA trigger cause */
-#define SC01ICR_TI             0x10    /* transmit interrupt cause */
-#define SC01ICR_RES            0x04    /* receive error select */
-#define SC01ICR_RI             0x01    /* receive interrupt cause */
-
-#define        SC0TXB                  __SYSREG(0xd4002008, u8)        /* transmit buffer reg */
-#define        SC0RXB                  __SYSREG(0xd4002009, u8)        /* receive buffer reg */
-
-#define        SC0STR                  __SYSREG(0xd400200c, u16)       /* status reg */
-#define SC01STR_OEF            0x0001  /* overrun error found */
-#define SC01STR_PEF            0x0002  /* parity error found */
-#define SC01STR_FEF            0x0004  /* framing error found */
-#define SC01STR_RBF            0x0010  /* receive buffer status */
-#define SC01STR_TBF            0x0020  /* transmit buffer status */
-#define SC01STR_RXF            0x0040  /* receive status */
-#define SC01STR_TXF            0x0080  /* transmit status */
-#define SC01STR_STF            0x0100  /* I2C start sequence found */
-#define SC01STR_SPF            0x0200  /* I2C stop sequence found */
-
-#define SC0RXIRQ               20      /* timer 0 Receive IRQ */
-#define SC0TXIRQ               21      /* timer 0 Transmit IRQ */
-
-#define        SC0RXICR                GxICR(SC0RXIRQ) /* serial 0 receive intr ctrl reg */
-#define        SC0TXICR                GxICR(SC0TXIRQ) /* serial 0 transmit intr ctrl reg */
-
-/* serial port 1 */
-#define        SC1CTR                  __SYSREG(0xd4002010, u16)       /* serial port 1 control */
-#define        SC1ICR                  __SYSREG(0xd4002014, u8)        /* interrupt control reg */
-#define        SC1TXB                  __SYSREG(0xd4002018, u8)        /* transmit buffer reg */
-#define        SC1RXB                  __SYSREG(0xd4002019, u8)        /* receive buffer reg */
-#define        SC1STR                  __SYSREG(0xd400201c, u16)       /* status reg */
-
-#define SC1RXIRQ               22      /* timer 1 Receive IRQ */
-#define SC1TXIRQ               23      /* timer 1 Transmit IRQ */
-
-#define        SC1RXICR                GxICR(SC1RXIRQ) /* serial 1 receive intr ctrl reg */
-#define        SC1TXICR                GxICR(SC1TXIRQ) /* serial 1 transmit intr ctrl reg */
-
-/* serial port 2 */
-#define        SC2CTR                  __SYSREG(0xd4002020, u16)       /* control reg */
-#define        SC2CTR_CK               0x0003  /* clock source select */
-#define        SC2CTR_CK_TM10UFLOW     0x0000  /* - timer 10 underflow */
-#define        SC2CTR_CK_TM2UFLOW      0x0001  /* - timer 2 underflow */
-#define        SC2CTR_CK_EXTERN        0x0002  /* - external closk */
-#define        SC2CTR_CK_TM3UFLOW      0x0003  /* - timer 3 underflow */
-#define        SC2CTR_STB              0x0008  /* stop bit select */
-#define        SC2CTR_STB_1BIT         0x0000  /* - 1 stop bit */
-#define        SC2CTR_STB_2BIT         0x0008  /* - 2 stop bits */
-#define        SC2CTR_PB               0x0070  /* parity bit select */
-#define        SC2CTR_PB_NONE          0x0000  /* - no parity */
-#define        SC2CTR_PB_FIXED0        0x0040  /* - fixed at 0 */
-#define        SC2CTR_PB_FIXED1        0x0050  /* - fixed at 1 */
-#define        SC2CTR_PB_EVEN          0x0060  /* - even parity */
-#define        SC2CTR_PB_ODD           0x0070  /* - odd parity */
-#define        SC2CTR_CLN              0x0080  /* character length */
-#define        SC2CTR_CLN_7BIT         0x0000  /* - 7 bit chars */
-#define        SC2CTR_CLN_8BIT         0x0080  /* - 8 bit chars */
-#define        SC2CTR_TWE              0x0100  /* transmit wait enable (enable XCTS control) */
-#define        SC2CTR_OD               0x0200  /* bit order select */
-#define        SC2CTR_OD_LSBFIRST      0x0000  /* - LSB first */
-#define        SC2CTR_OD_MSBFIRST      0x0200  /* - MSB first */
-#define        SC2CTR_TWS              0x1000  /* transmit wait select */
-#define        SC2CTR_TWS_XCTS_HIGH    0x0000  /* - interrupt TX when XCTS high */
-#define        SC2CTR_TWS_XCTS_LOW     0x1000  /* - interrupt TX when XCTS low */
-#define        SC2CTR_BKE              0x2000  /* break transmit enable */
-#define        SC2CTR_RXE              0x4000  /* receive enable */
-#define        SC2CTR_TXE              0x8000  /* transmit enable */
-
-#define        SC2ICR                  __SYSREG(0xd4002024, u8)        /* interrupt control reg */
-#define SC2ICR_TD              0x20    /* transmit DMA trigger cause */
-#define SC2ICR_TI              0x10    /* transmit interrupt cause */
-#define SC2ICR_RES             0x04    /* receive error select */
-#define SC2ICR_RI              0x01    /* receive interrupt cause */
-
-#define        SC2TXB                  __SYSREG(0xd4002018, u8)        /* transmit buffer reg */
-#define        SC2RXB                  __SYSREG(0xd4002019, u8)        /* receive buffer reg */
-#define        SC2STR                  __SYSREG(0xd400201c, u8)        /* status reg */
-#define SC2STR_OEF             0x0001  /* overrun error found */
-#define SC2STR_PEF             0x0002  /* parity error found */
-#define SC2STR_FEF             0x0004  /* framing error found */
-#define SC2STR_CTS             0x0008  /* XCTS input pin status (0 means high) */
-#define SC2STR_RBF             0x0010  /* receive buffer status */
-#define SC2STR_TBF             0x0020  /* transmit buffer status */
-#define SC2STR_RXF             0x0040  /* receive status */
-#define SC2STR_TXF             0x0080  /* transmit status */
-
-#define        SC2TIM                  __SYSREG(0xd400202d, u8)        /* status reg */
-
-#define SC2RXIRQ               24      /* serial 2 Receive IRQ */
-#define SC2TXIRQ               25      /* serial 2 Transmit IRQ */
-
-#define        SC2RXICR                GxICR(SC2RXIRQ) /* serial 2 receive intr ctrl reg */
-#define        SC2TXICR                GxICR(SC2TXIRQ) /* serial 2 transmit intr ctrl reg */
-
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_SERIAL_REGS_H */
diff --git a/include/asm-mn10300/serial.h b/include/asm-mn10300/serial.h
deleted file mode 100644 (file)
index 99785a9..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Standard UART definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-/*
- * The ASB2305 has an 18.432 MHz clock the UART
- */
-#define BASE_BAUD      (18432000 / 16)
-
-/* Standard COM flags (except for COM4, because of the 8514 problem) */
-#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS  (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
-#else
-#define STD_COM_FLAGS  (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
-#endif
-
-#ifdef CONFIG_SERIAL_MANY_PORTS
-#define FOURPORT_FLAGS ASYNC_FOURPORT
-#define ACCENT_FLAGS   0
-#define BOCA_FLAGS     0
-#define HUB6_FLAGS     0
-#define RS_TABLE_SIZE  64
-#else
-#define RS_TABLE_SIZE
-#endif
-
-#include <asm/unit/serial.h>
diff --git a/include/asm-mn10300/setup.h b/include/asm-mn10300/setup.h
deleted file mode 100644 (file)
index 08356c8..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* MN10300 Setup declarations
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SETUP_H
-#define _ASM_SETUP_H
-
-extern void __init unit_setup(void);
-extern void __init unit_init_IRQ(void);
-
-#endif /* _ASM_SETUP_H */
diff --git a/include/asm-mn10300/shmbuf.h b/include/asm-mn10300/shmbuf.h
deleted file mode 100644 (file)
index 8f300cc..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef _ASM_SHMBUF_H
-#define _ASM_SHMBUF_H
-
-/*
- * The shmid64_ds structure for MN10300 architecture.
- * Note extra padding because this structure is passed back and forth
- * between kernel and user space.
- *
- * Pad space is left for:
- * - 64-bit time_t to solve y2038 problem
- * - 2 miscellaneous 32-bit values
- */
-
-struct shmid64_ds {
-       struct ipc64_perm       shm_perm;       /* operation perms */
-       size_t                  shm_segsz;      /* size of segment (bytes) */
-       __kernel_time_t         shm_atime;      /* last attach time */
-       unsigned long           __unused1;
-       __kernel_time_t         shm_dtime;      /* last detach time */
-       unsigned long           __unused2;
-       __kernel_time_t         shm_ctime;      /* last change time */
-       unsigned long           __unused3;
-       __kernel_pid_t          shm_cpid;       /* pid of creator */
-       __kernel_pid_t          shm_lpid;       /* pid of last operator */
-       unsigned long           shm_nattch;     /* no. of current attaches */
-       unsigned long           __unused4;
-       unsigned long           __unused5;
-};
-
-struct shminfo64 {
-       unsigned long   shmmax;
-       unsigned long   shmmin;
-       unsigned long   shmmni;
-       unsigned long   shmseg;
-       unsigned long   shmall;
-       unsigned long   __unused1;
-       unsigned long   __unused2;
-       unsigned long   __unused3;
-       unsigned long   __unused4;
-};
-
-#endif /* _ASM_SHMBUF_H */
diff --git a/include/asm-mn10300/shmparam.h b/include/asm-mn10300/shmparam.h
deleted file mode 100644 (file)
index ab666ed..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _ASM_SHMPARAM_H
-#define _ASM_SHMPARAM_H
-
-#define        SHMLBA PAGE_SIZE                 /* attach addr a multiple of this */
-
-#endif /* _ASM_SHMPARAM_H */
diff --git a/include/asm-mn10300/sigcontext.h b/include/asm-mn10300/sigcontext.h
deleted file mode 100644 (file)
index 4de3aff..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* MN10300 Userspace signal context
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SIGCONTEXT_H
-#define _ASM_SIGCONTEXT_H
-
-struct fpucontext {
-       /* Regular FPU environment */
-       unsigned long   fs[32];         /* fpu registers */
-       unsigned long   fpcr;           /* fpu control register */
-};
-
-struct sigcontext {
-       unsigned long   d0;
-       unsigned long   d1;
-       unsigned long   d2;
-       unsigned long   d3;
-       unsigned long   a0;
-       unsigned long   a1;
-       unsigned long   a2;
-       unsigned long   a3;
-       unsigned long   e0;
-       unsigned long   e1;
-       unsigned long   e2;
-       unsigned long   e3;
-       unsigned long   e4;
-       unsigned long   e5;
-       unsigned long   e6;
-       unsigned long   e7;
-       unsigned long   lar;
-       unsigned long   lir;
-       unsigned long   mdr;
-       unsigned long   mcvf;
-       unsigned long   mcrl;
-       unsigned long   mcrh;
-       unsigned long   mdrq;
-       unsigned long   sp;
-       unsigned long   epsw;
-       unsigned long   pc;
-       struct fpucontext *fpucontext;
-       unsigned long   oldmask;
-};
-
-
-#endif /* _ASM_SIGCONTEXT_H */
diff --git a/include/asm-mn10300/siginfo.h b/include/asm-mn10300/siginfo.h
deleted file mode 100644 (file)
index 0815d29..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/siginfo.h>
diff --git a/include/asm-mn10300/signal.h b/include/asm-mn10300/signal.h
deleted file mode 100644 (file)
index e98817c..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/* MN10300 Signal definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SIGNAL_H
-#define _ASM_SIGNAL_H
-
-#include <linux/types.h>
-
-/* Avoid too many header ordering problems.  */
-struct siginfo;
-
-#ifdef __KERNEL__
-/* Most things should be clean enough to redefine this at will, if care
-   is taken to make libc match.  */
-
-#define _NSIG          64
-#define _NSIG_BPW      32
-#define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
-
-typedef unsigned long old_sigset_t;            /* at least 32 bits */
-
-typedef struct {
-       unsigned long   sig[_NSIG_WORDS];
-} sigset_t;
-
-#else
-/* Here we must cater to libcs that poke about in kernel headers.  */
-
-#define NSIG           32
-typedef unsigned long sigset_t;
-
-#endif /* __KERNEL__ */
-
-#define SIGHUP          1
-#define SIGINT          2
-#define SIGQUIT                 3
-#define SIGILL          4
-#define SIGTRAP                 5
-#define SIGABRT                 6
-#define SIGIOT          6
-#define SIGBUS          7
-#define SIGFPE          8
-#define SIGKILL                 9
-#define SIGUSR1                10
-#define SIGSEGV                11
-#define SIGUSR2                12
-#define SIGPIPE                13
-#define SIGALRM                14
-#define SIGTERM                15
-#define SIGSTKFLT      16
-#define SIGCHLD                17
-#define SIGCONT                18
-#define SIGSTOP                19
-#define SIGTSTP                20
-#define SIGTTIN                21
-#define SIGTTOU                22
-#define SIGURG         23
-#define SIGXCPU                24
-#define SIGXFSZ                25
-#define SIGVTALRM      26
-#define SIGPROF                27
-#define SIGWINCH       28
-#define SIGIO          29
-#define SIGPOLL                SIGIO
-/*
-#define SIGLOST                29
-*/
-#define SIGPWR         30
-#define SIGSYS         31
-#define        SIGUNUSED       31
-
-/* These should not be considered constants from userland.  */
-#define SIGRTMIN       32
-#define SIGRTMAX       (_NSIG-1)
-
-/*
- * SA_FLAGS values:
- *
- * SA_ONSTACK indicates that a registered stack_t will be used.
- * SA_RESTART flag to get restarting signals (which were the default long ago)
- * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
- * SA_RESETHAND clears the handler when the signal is delivered.
- * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
- * SA_NODEFER prevents the current signal from being masked in the handler.
- *
- * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
- * Unix names RESETHAND and NODEFER respectively.
- */
-#define SA_NOCLDSTOP   0x00000001U
-#define SA_NOCLDWAIT   0x00000002U
-#define SA_SIGINFO     0x00000004U
-#define SA_ONSTACK     0x08000000U
-#define SA_RESTART     0x10000000U
-#define SA_NODEFER     0x40000000U
-#define SA_RESETHAND   0x80000000U
-
-#define SA_NOMASK      SA_NODEFER
-#define SA_ONESHOT     SA_RESETHAND
-
-#define SA_RESTORER    0x04000000
-
-/*
- * sigaltstack controls
- */
-#define SS_ONSTACK     1
-#define SS_DISABLE     2
-
-#define MINSIGSTKSZ    2048
-#define SIGSTKSZ       8192
-
-#include <asm-generic/signal.h>
-
-#ifdef __KERNEL__
-struct old_sigaction {
-       __sighandler_t sa_handler;
-       old_sigset_t sa_mask;
-       unsigned long sa_flags;
-       __sigrestore_t sa_restorer;
-};
-
-struct sigaction {
-       __sighandler_t sa_handler;
-       unsigned long sa_flags;
-       __sigrestore_t sa_restorer;
-       sigset_t sa_mask;               /* mask last for extensibility */
-};
-
-struct k_sigaction {
-       struct sigaction sa;
-};
-#else
-/* Here we must cater to libcs that poke about in kernel headers.  */
-
-struct sigaction {
-       union {
-         __sighandler_t _sa_handler;
-         void (*_sa_sigaction)(int, struct siginfo *, void *);
-       } _u;
-       sigset_t sa_mask;
-       unsigned long sa_flags;
-       void (*sa_restorer)(void);
-};
-
-#define sa_handler     _u._sa_handler
-#define sa_sigaction   _u._sa_sigaction
-
-#endif /* __KERNEL__ */
-
-typedef struct sigaltstack {
-       void __user     *ss_sp;
-       int             ss_flags;
-       size_t          ss_size;
-} stack_t;
-
-#ifdef __KERNEL__
-#include <asm/sigcontext.h>
-
-
-struct pt_regs;
-#define ptrace_signal_deliver(regs, cookie) do { } while (0)
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_SIGNAL_H */
diff --git a/include/asm-mn10300/smp.h b/include/asm-mn10300/smp.h
deleted file mode 100644 (file)
index 4eb8c61..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* MN10300 SMP support
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SMP_H
-#define _ASM_SMP_H
-
-#ifdef CONFIG_SMP
-#error SMP not yet supported for MN10300
-#endif
-
-#endif
diff --git a/include/asm-mn10300/socket.h b/include/asm-mn10300/socket.h
deleted file mode 100644 (file)
index fb5daf4..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef _ASM_SOCKET_H
-#define _ASM_SOCKET_H
-
-#include <asm/sockios.h>
-
-/* For setsockopt(2) */
-#define SOL_SOCKET     1
-
-#define SO_DEBUG       1
-#define SO_REUSEADDR   2
-#define SO_TYPE                3
-#define SO_ERROR       4
-#define SO_DONTROUTE   5
-#define SO_BROADCAST   6
-#define SO_SNDBUF      7
-#define SO_RCVBUF      8
-#define SO_SNDBUFFORCE 32
-#define SO_RCVBUFFORCE 33
-#define SO_KEEPALIVE   9
-#define SO_OOBINLINE   10
-#define SO_NO_CHECK    11
-#define SO_PRIORITY    12
-#define SO_LINGER      13
-#define SO_BSDCOMPAT   14
-/* To add :#define SO_REUSEPORT 15 */
-#define SO_PASSCRED    16
-#define SO_PEERCRED    17
-#define SO_RCVLOWAT    18
-#define SO_SNDLOWAT    19
-#define SO_RCVTIMEO    20
-#define SO_SNDTIMEO    21
-
-/* Security levels - as per NRL IPv6 - don't actually do anything */
-#define SO_SECURITY_AUTHENTICATION             22
-#define SO_SECURITY_ENCRYPTION_TRANSPORT       23
-#define SO_SECURITY_ENCRYPTION_NETWORK         24
-
-#define SO_BINDTODEVICE        25
-
-/* Socket filtering */
-#define SO_ATTACH_FILTER        26
-#define SO_DETACH_FILTER        27
-
-#define SO_PEERNAME            28
-#define SO_TIMESTAMP           29
-#define SCM_TIMESTAMP          SO_TIMESTAMP
-
-#define SO_ACCEPTCONN          30
-
-#define SO_PEERSEC             31
-#define SO_PASSSEC             34
-#define SO_TIMESTAMPNS         35
-#define SCM_TIMESTAMPNS                SO_TIMESTAMPNS
-
-#define SO_MARK                        36
-
-#define SO_TIMESTAMPING                37
-#define SCM_TIMESTAMPING       SO_TIMESTAMPING
-
-#endif /* _ASM_SOCKET_H */
diff --git a/include/asm-mn10300/sockios.h b/include/asm-mn10300/sockios.h
deleted file mode 100644 (file)
index b03043a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef _ASM_SOCKIOS_H
-#define _ASM_SOCKIOS_H
-
-/* Socket-level I/O control calls. */
-#define FIOSETOWN      0x8901
-#define SIOCSPGRP      0x8902
-#define FIOGETOWN      0x8903
-#define SIOCGPGRP      0x8904
-#define SIOCATMARK     0x8905
-#define SIOCGSTAMP     0x8906          /* Get stamp */
-#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
-
-#endif /* _ASM_SOCKIOS_H */
diff --git a/include/asm-mn10300/spinlock.h b/include/asm-mn10300/spinlock.h
deleted file mode 100644 (file)
index 4bf9c8b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* MN10300 spinlock support
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SPINLOCK_H
-#define _ASM_SPINLOCK_H
-
-#error SMP spinlocks not implemented for MN10300
-
-#endif /* _ASM_SPINLOCK_H */
diff --git a/include/asm-mn10300/stat.h b/include/asm-mn10300/stat.h
deleted file mode 100644 (file)
index 63ff837..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef _ASM_STAT_H
-#define _ASM_STAT_H
-
-struct __old_kernel_stat {
-       unsigned short st_dev;
-       unsigned short st_ino;
-       unsigned short st_mode;
-       unsigned short st_nlink;
-       unsigned short st_uid;
-       unsigned short st_gid;
-       unsigned short st_rdev;
-       unsigned long  st_size;
-       unsigned long  st_atime;
-       unsigned long  st_mtime;
-       unsigned long  st_ctime;
-};
-
-struct stat {
-       unsigned long  st_dev;
-       unsigned long  st_ino;
-       unsigned short st_mode;
-       unsigned short st_nlink;
-       unsigned short st_uid;
-       unsigned short st_gid;
-       unsigned long  st_rdev;
-       unsigned long  st_size;
-       unsigned long  st_blksize;
-       unsigned long  st_blocks;
-       unsigned long  st_atime;
-       unsigned long  st_atime_nsec;
-       unsigned long  st_mtime;
-       unsigned long  st_mtime_nsec;
-       unsigned long  st_ctime;
-       unsigned long  st_ctime_nsec;
-       unsigned long  __unused4;
-       unsigned long  __unused5;
-};
-
-/* This matches struct stat64 in glibc2.1, hence the absolutely
- * insane amounts of padding around dev_t's.
- */
-struct stat64 {
-       unsigned long long      st_dev;
-       unsigned char   __pad0[4];
-
-#define STAT64_HAS_BROKEN_ST_INO       1
-       unsigned long   __st_ino;
-
-       unsigned int    st_mode;
-       unsigned int    st_nlink;
-
-       unsigned long   st_uid;
-       unsigned long   st_gid;
-
-       unsigned long long      st_rdev;
-       unsigned char   __pad3[4];
-
-       long long       st_size;
-       unsigned long   st_blksize;
-
-       unsigned long   st_blocks;      /* Number 512-byte blocks allocated. */
-       unsigned long   __pad4;         /* future possible st_blocks high bits */
-
-       unsigned long   st_atime;
-       unsigned long   st_atime_nsec;
-
-       unsigned long   st_mtime;
-       unsigned int    st_mtime_nsec;
-
-       unsigned long   st_ctime;
-       unsigned long   st_ctime_nsec;
-
-       unsigned long long      st_ino;
-};
-
-#define STAT_HAVE_NSEC 1
-
-#endif /* _ASM_STAT_H */
diff --git a/include/asm-mn10300/statfs.h b/include/asm-mn10300/statfs.h
deleted file mode 100644 (file)
index 0b91fe1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/statfs.h>
diff --git a/include/asm-mn10300/string.h b/include/asm-mn10300/string.h
deleted file mode 100644 (file)
index 47dbd43..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* MN10300 Optimised string functions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Modified by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_STRING_H
-#define _ASM_STRING_H
-
-#define __HAVE_ARCH_MEMSET
-#define __HAVE_ARCH_MEMCPY
-#define __HAVE_ARCH_MEMMOVE
-
-extern void *memset(void *dest, int ch, size_t count);
-extern void *memcpy(void *dest, const void *src, size_t count);
-extern void *memmove(void *dest, const void *src, size_t count);
-
-
-extern void __struct_cpy_bug(void);
-#define struct_cpy(x, y)                       \
-({                                              \
-       if (sizeof(*(x)) != sizeof(*(y)))       \
-               __struct_cpy_bug;               \
-       memcpy(x, y, sizeof(*(x)));             \
-})
-
-#endif /* _ASM_STRING_H */
diff --git a/include/asm-mn10300/swab.h b/include/asm-mn10300/swab.h
deleted file mode 100644 (file)
index bd818a8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* MN10300 Byte-order primitive construction
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SWAB_H
-#define _ASM_SWAB_H
-
-#include <linux/types.h>
-
-#ifdef __GNUC__
-
-static inline __attribute__((const))
-__u32 __arch_swab32(__u32 x)
-{
-       __u32 ret;
-       asm("swap %1,%0" : "=r" (ret) : "r" (x));
-       return ret;
-}
-#define __arch_swab32 __arch_swab32
-
-static inline __attribute__((const))
-__u16 __arch_swab16(__u16 x)
-{
-       __u16 ret;
-       asm("swaph %1,%0" : "=r" (ret) : "r" (x));
-       return ret;
-}
-#define __arch_swab32 __arch_swab32
-
-#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
-#  define __SWAB_64_THRU_32__
-#endif
-
-#endif /* __GNUC__ */
-
-#endif /* _ASM_SWAB_H */
diff --git a/include/asm-mn10300/system.h b/include/asm-mn10300/system.h
deleted file mode 100644 (file)
index 8214fb7..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/* MN10300 System definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_SYSTEM_H
-#define _ASM_SYSTEM_H
-
-#include <asm/cpu-regs.h>
-
-#ifdef __KERNEL__
-#ifndef __ASSEMBLY__
-
-#include <linux/kernel.h>
-
-struct task_struct;
-struct thread_struct;
-
-extern asmlinkage
-struct task_struct *__switch_to(struct thread_struct *prev,
-                               struct thread_struct *next,
-                               struct task_struct *prev_task);
-
-/* context switching is now performed out-of-line in switch_to.S */
-#define switch_to(prev, next, last)                                    \
-do {                                                                   \
-       current->thread.wchan = (u_long) __builtin_return_address(0);   \
-       (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \
-       mb();                                                           \
-       current->thread.wchan = 0;                                      \
-} while (0)
-
-#define arch_align_stack(x) (x)
-
-#define nop() asm volatile ("nop")
-
-#endif /* !__ASSEMBLY__ */
-
-/*
- * Force strict CPU ordering.
- * And yes, this is required on UP too when we're talking
- * to devices.
- *
- * For now, "wmb()" doesn't actually do anything, as all
- * Intel CPU's follow what Intel calls a *Processor Order*,
- * in which all writes are seen in the program order even
- * outside the CPU.
- *
- * I expect future Intel CPU's to have a weaker ordering,
- * but I'd also expect them to finally get their act together
- * and add some real memory barriers if so.
- *
- * Some non intel clones support out of order store. wmb() ceases to be a
- * nop for these.
- */
-
-#define mb()   asm volatile ("": : :"memory")
-#define rmb()  mb()
-#define wmb()  asm volatile ("": : :"memory")
-
-#ifdef CONFIG_SMP
-#define smp_mb()       mb()
-#define smp_rmb()      rmb()
-#define smp_wmb()      wmb()
-#else
-#define smp_mb()       barrier()
-#define smp_rmb()      barrier()
-#define smp_wmb()      barrier()
-#endif
-
-#define set_mb(var, value)  do { var = value;  mb(); } while (0)
-#define set_wmb(var, value) do { var = value; wmb(); } while (0)
-
-#define read_barrier_depends()         do {} while (0)
-#define smp_read_barrier_depends()     do {} while (0)
-
-/*****************************************************************************/
-/*
- * interrupt control
- * - "disabled": run in IM1/2
- *   - level 0 - GDB stub
- *   - level 1 - virtual serial DMA (if present)
- *   - level 5 - normal interrupt priority
- *   - level 6 - timer interrupt
- * - "enabled":  run in IM7
- */
-#ifdef CONFIG_MN10300_TTYSM
-#define MN10300_CLI_LEVEL      EPSW_IM_2
-#else
-#define MN10300_CLI_LEVEL      EPSW_IM_1
-#endif
-
-#define local_save_flags(x)                    \
-do {                                           \
-       typecheck(unsigned long, x);            \
-       asm volatile(                           \
-               "       mov epsw,%0     \n"     \
-               : "=d"(x)                       \
-               );                              \
-} while (0)
-
-#define local_irq_disable()                                            \
-do {                                                                   \
-       asm volatile(                                                   \
-               "       and %0,epsw     \n"                             \
-               "       or %1,epsw      \n"                             \
-               "       nop             \n"                             \
-               "       nop             \n"                             \
-               "       nop             \n"                             \
-               :                                                       \
-               : "i"(~EPSW_IM), "i"(EPSW_IE | MN10300_CLI_LEVEL)       \
-               );                                                      \
-} while (0)
-
-#define local_irq_save(x)                      \
-do {                                           \
-       local_save_flags(x);                    \
-       local_irq_disable();                    \
-} while (0)
-
-/*
- * we make sure local_irq_enable() doesn't cause priority inversion
- */
-#ifndef __ASSEMBLY__
-
-extern unsigned long __mn10300_irq_enabled_epsw;
-
-#endif
-
-#define local_irq_enable()                                             \
-do {                                                                   \
-       unsigned long tmp;                                              \
-                                                                       \
-       asm volatile(                                                   \
-               "       mov     epsw,%0         \n"                     \
-               "       and     %1,%0           \n"                     \
-               "       or      %2,%0           \n"                     \
-               "       mov     %0,epsw         \n"                     \
-               : "=&d"(tmp)                                            \
-               : "i"(~EPSW_IM), "r"(__mn10300_irq_enabled_epsw)        \
-               );                                                      \
-} while (0)
-
-#define local_irq_restore(x)                   \
-do {                                           \
-       typecheck(unsigned long, x);            \
-       asm volatile(                           \
-               "       mov %0,epsw     \n"     \
-               "       nop             \n"     \
-               "       nop             \n"     \
-               "       nop             \n"     \
-               :                               \
-               : "d"(x)                        \
-               : "memory", "cc"                \
-               );                              \
-} while (0)
-
-#define irqs_disabled()                                \
-({                                             \
-       unsigned long flags;                    \
-       local_save_flags(flags);                \
-       (flags & EPSW_IM) <= MN10300_CLI_LEVEL; \
-})
-
-/* hook to save power by halting the CPU
- * - called from the idle loop
- * - must reenable interrupts (which takes three instruction cycles to complete)
- */
-#define safe_halt()                                                    \
-do {                                                                   \
-       asm volatile("  or      %0,epsw \n"                             \
-                    "  nop             \n"                             \
-                    "  nop             \n"                             \
-                    "  bset    %2,(%1) \n"                             \
-                    :                                                  \
-                    : "i"(EPSW_IE|EPSW_IM), "n"(&CPUM), "i"(CPUM_SLEEP)\
-                    : "cc"                                             \
-                    );                                                 \
-} while (0)
-
-#define STI    or EPSW_IE|EPSW_IM,epsw
-#define CLI    and ~EPSW_IM,epsw; or EPSW_IE|MN10300_CLI_LEVEL,epsw; nop; nop; nop
-
-/*****************************************************************************/
-/*
- * MN10300 doesn't actually have an exchange instruction
- */
-#ifndef __ASSEMBLY__
-
-struct __xchg_dummy { unsigned long a[100]; };
-#define __xg(x) ((struct __xchg_dummy *)(x))
-
-static inline
-unsigned long __xchg(volatile unsigned long *m, unsigned long val)
-{
-       unsigned long retval;
-       unsigned long flags;
-
-       local_irq_save(flags);
-       retval = *m;
-       *m = val;
-       local_irq_restore(flags);
-       return retval;
-}
-
-#define xchg(ptr, v)                                           \
-       ((__typeof__(*(ptr))) __xchg((unsigned long *)(ptr),    \
-                                    (unsigned long)(v)))
-
-static inline unsigned long __cmpxchg(volatile unsigned long *m,
-                                     unsigned long old, unsigned long new)
-{
-       unsigned long retval;
-       unsigned long flags;
-
-       local_irq_save(flags);
-       retval = *m;
-       if (retval == old)
-               *m = new;
-       local_irq_restore(flags);
-       return retval;
-}
-
-#define cmpxchg(ptr, o, n)                                     \
-       ((__typeof__(*(ptr))) __cmpxchg((unsigned long *)(ptr), \
-                                       (unsigned long)(o),     \
-                                       (unsigned long)(n)))
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* __KERNEL__ */
-#endif /* _ASM_SYSTEM_H */
diff --git a/include/asm-mn10300/termbits.h b/include/asm-mn10300/termbits.h
deleted file mode 100644 (file)
index eb2b0dc..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-#ifndef _ASM_TERMBITS_H
-#define _ASM_TERMBITS_H
-
-#include <linux/posix_types.h>
-
-typedef unsigned char  cc_t;
-typedef unsigned int   speed_t;
-typedef unsigned int   tcflag_t;
-
-#define NCCS 19
-struct termios {
-       tcflag_t c_iflag;               /* input mode flags */
-       tcflag_t c_oflag;               /* output mode flags */
-       tcflag_t c_cflag;               /* control mode flags */
-       tcflag_t c_lflag;               /* local mode flags */
-       cc_t c_line;                    /* line discipline */
-       cc_t c_cc[NCCS];                /* control characters */
-};
-
-struct termios2 {
-       tcflag_t c_iflag;               /* input mode flags */
-       tcflag_t c_oflag;               /* output mode flags */
-       tcflag_t c_cflag;               /* control mode flags */
-       tcflag_t c_lflag;               /* local mode flags */
-       cc_t c_line;                    /* line discipline */
-       cc_t c_cc[NCCS];                /* control characters */
-       speed_t c_ispeed;               /* input speed */
-       speed_t c_ospeed;               /* output speed */
-};
-
-struct ktermios {
-       tcflag_t c_iflag;               /* input mode flags */
-       tcflag_t c_oflag;               /* output mode flags */
-       tcflag_t c_cflag;               /* control mode flags */
-       tcflag_t c_lflag;               /* local mode flags */
-       cc_t c_line;                    /* line discipline */
-       cc_t c_cc[NCCS];                /* control characters */
-       speed_t c_ispeed;               /* input speed */
-       speed_t c_ospeed;               /* output speed */
-};
-
-/* c_cc characters */
-#define VINTR 0
-#define VQUIT 1
-#define VERASE 2
-#define VKILL 3
-#define VEOF 4
-#define VTIME 5
-#define VMIN 6
-#define VSWTC 7
-#define VSTART 8
-#define VSTOP 9
-#define VSUSP 10
-#define VEOL 11
-#define VREPRINT 12
-#define VDISCARD 13
-#define VWERASE 14
-#define VLNEXT 15
-#define VEOL2 16
-
-
-/* c_iflag bits */
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK  0000020
-#define ISTRIP 0000040
-#define INLCR  0000100
-#define IGNCR  0000200
-#define ICRNL  0000400
-#define IUCLC  0001000
-#define IXON   0002000
-#define IXANY  0004000
-#define IXOFF  0010000
-#define IMAXBEL        0020000
-#define IUTF8  0040000
-
-/* c_oflag bits */
-#define OPOST  0000001
-#define OLCUC  0000002
-#define ONLCR  0000004
-#define OCRNL  0000010
-#define ONOCR  0000020
-#define ONLRET 0000040
-#define OFILL  0000100
-#define OFDEL  0000200
-#define NLDLY  0000400
-#define   NL0  0000000
-#define   NL1  0000400
-#define CRDLY  0003000
-#define   CR0  0000000
-#define   CR1  0001000
-#define   CR2  0002000
-#define   CR3  0003000
-#define TABDLY 0014000
-#define   TAB0 0000000
-#define   TAB1 0004000
-#define   TAB2 0010000
-#define   TAB3 0014000
-#define   XTABS        0014000
-#define BSDLY  0020000
-#define   BS0  0000000
-#define   BS1  0020000
-#define VTDLY  0040000
-#define   VT0  0000000
-#define   VT1  0040000
-#define FFDLY  0100000
-#define   FF0  0000000
-#define   FF1  0100000
-
-/* c_cflag bit meaning */
-#define CBAUD  0010017
-#define  B0    0000000         /* hang up */
-#define  B50   0000001
-#define  B75   0000002
-#define  B110  0000003
-#define  B134  0000004
-#define  B150  0000005
-#define  B200  0000006
-#define  B300  0000007
-#define  B600  0000010
-#define  B1200 0000011
-#define  B1800 0000012
-#define  B2400 0000013
-#define  B4800 0000014
-#define  B9600 0000015
-#define  B19200        0000016
-#define  B38400        0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE  0000060
-#define   CS5  0000000
-#define   CS6  0000020
-#define   CS7  0000040
-#define   CS8  0000060
-#define CSTOPB 0000100
-#define CREAD  0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL  0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define   BOTHER  0010000
-#define    B57600 0010001
-#define   B115200 0010002
-#define   B230400 0010003
-#define   B460800 0010004
-#define   B500000 0010005
-#define   B576000 0010006
-#define   B921600 0010007
-#define  B1000000 0010010
-#define  B1152000 0010011
-#define  B1500000 0010012
-#define  B2000000 0010013
-#define  B2500000 0010014
-#define  B3000000 0010015
-#define  B3500000 0010016
-#define  B4000000 0010017
-#define CIBAUD   002003600000  /* input baud rate (not used) */
-#define CTVB     004000000000          /* VisioBraille Terminal flow control */
-#define CMSPAR   010000000000          /* mark or space (stick) parity */
-#define CRTSCTS          020000000000          /* flow control */
-
-#define IBSHIFT          16            /* Shift from CBAUD to CIBAUD */
-
-/* c_lflag bits */
-#define ISIG   0000001
-#define ICANON 0000002
-#define XCASE  0000004
-#define ECHO   0000010
-#define ECHOE  0000020
-#define ECHOK  0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL        0001000
-#define ECHOPRT        0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-
-/* tcflow() and TCXONC use these */
-#define        TCOOFF          0
-#define        TCOON           1
-#define        TCIOFF          2
-#define        TCION           3
-
-/* tcflush() and TCFLSH use these */
-#define        TCIFLUSH        0
-#define        TCOFLUSH        1
-#define        TCIOFLUSH       2
-
-/* tcsetattr uses these */
-#define        TCSANOW         0
-#define        TCSADRAIN       1
-#define        TCSAFLUSH       2
-
-#endif /* _ASM_TERMBITS_H */
diff --git a/include/asm-mn10300/termios.h b/include/asm-mn10300/termios.h
deleted file mode 100644 (file)
index dd7cf61..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#ifndef _ASM_TERMIOS_H
-#define _ASM_TERMIOS_H
-
-#include <asm/termbits.h>
-#include <asm/ioctls.h>
-
-struct winsize {
-       unsigned short ws_row;
-       unsigned short ws_col;
-       unsigned short ws_xpixel;
-       unsigned short ws_ypixel;
-};
-
-#define NCC 8
-struct termio {
-       unsigned short c_iflag;         /* input mode flags */
-       unsigned short c_oflag;         /* output mode flags */
-       unsigned short c_cflag;         /* control mode flags */
-       unsigned short c_lflag;         /* local mode flags */
-       unsigned char c_line;           /* line discipline */
-       unsigned char c_cc[NCC];        /* control characters */
-};
-
-#ifdef __KERNEL__
-/*     intr=^C         quit=^|         erase=del       kill=^U
-       eof=^D          vtime=\0        vmin=\1         sxtc=\0
-       start=^Q        stop=^S         susp=^Z         eol=\0
-       reprint=^R      discard=^U      werase=^W       lnext=^V
-       eol2=\0
-*/
-#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
-#endif
-
-/* modem lines */
-#define TIOCM_LE       0x001
-#define TIOCM_DTR      0x002
-#define TIOCM_RTS      0x004
-#define TIOCM_ST       0x008
-#define TIOCM_SR       0x010
-#define TIOCM_CTS      0x020
-#define TIOCM_CAR      0x040
-#define TIOCM_RNG      0x080
-#define TIOCM_DSR      0x100
-#define TIOCM_CD       TIOCM_CAR
-#define TIOCM_RI       TIOCM_RNG
-#define TIOCM_OUT1     0x2000
-#define TIOCM_OUT2     0x4000
-#define TIOCM_LOOP     0x8000
-
-#define TIOCM_MODEM_BITS       TIOCM_OUT2      /* IRDA support */
-
-/*
- * Translate a "termio" structure into a "termios". Ugh.
- */
-#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
-       unsigned short __tmp; \
-       get_user(__tmp, &(termio)->x); \
-       *(unsigned short *) &(termios)->x = __tmp; \
-}
-
-#define user_termio_to_kernel_termios(termios, termio) \
-({ \
-       SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
-       SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
-       SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
-       SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
-       copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
-})
-
-/*
- * Translate a "termios" structure into a "termio". Ugh.
- */
-#define kernel_termios_to_user_termio(termio, termios) \
-({ \
-       put_user((termios)->c_iflag, &(termio)->c_iflag); \
-       put_user((termios)->c_oflag, &(termio)->c_oflag); \
-       put_user((termios)->c_cflag, &(termio)->c_cflag); \
-       put_user((termios)->c_lflag, &(termio)->c_lflag); \
-       put_user((termios)->c_line,  &(termio)->c_line); \
-       copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
-})
-
-#define user_termios_to_kernel_termios(k, u) \
-       copy_from_user(k, u, sizeof(struct termios2))
-#define kernel_termios_to_user_termios(u, k) \
-       copy_to_user(u, k, sizeof(struct termios2))
-#define user_termios_to_kernel_termios_1(k, u) \
-       copy_from_user(k, u, sizeof(struct termios))
-#define kernel_termios_to_user_termios_1(u, k) \
-       copy_to_user(u, k, sizeof(struct termios))
-
-#endif /* _ASM_TERMIOS_H */
diff --git a/include/asm-mn10300/thread_info.h b/include/asm-mn10300/thread_info.h
deleted file mode 100644 (file)
index 78a3881..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/* MN10300 Low-level thread information
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_THREAD_INFO_H
-#define _ASM_THREAD_INFO_H
-
-#ifdef __KERNEL__
-
-#include <asm/page.h>
-
-#ifndef __ASSEMBLY__
-#include <asm/processor.h>
-#endif
-
-#define PREEMPT_ACTIVE         0x10000000
-
-#ifdef CONFIG_4KSTACKS
-#define THREAD_SIZE            (4096)
-#else
-#define THREAD_SIZE            (8192)
-#endif
-
-#define STACK_WARN             (THREAD_SIZE / 8)
-
-/*
- * low level task data that entry.S needs immediate access to
- * - this struct should fit entirely inside of one cache line
- * - this struct shares the supervisor stack pages
- * - if the contents of this structure are changed, the assembly constants
- *   must also be changed
- */
-#ifndef __ASSEMBLY__
-
-struct thread_info {
-       struct task_struct      *task;          /* main task structure */
-       struct exec_domain      *exec_domain;   /* execution domain */
-       unsigned long           flags;          /* low level flags */
-       __u32                   cpu;            /* current CPU */
-       __s32                   preempt_count;  /* 0 => preemptable, <0 => BUG */
-
-       mm_segment_t            addr_limit;     /* thread address space:
-                                                  0-0xBFFFFFFF for user-thead
-                                                  0-0xFFFFFFFF for kernel-thread
-                                               */
-       struct restart_block    restart_block;
-
-       __u8                    supervisor_stack[0];
-};
-
-#else /* !__ASSEMBLY__ */
-
-#ifndef __ASM_OFFSETS_H__
-#include <asm/asm-offsets.h>
-#endif
-
-#endif
-
-/*
- * macros/functions for gaining access to the thread information structure
- *
- * preempt_count needs to be 1 initially, until the scheduler is functional.
- */
-#ifndef __ASSEMBLY__
-
-#define INIT_THREAD_INFO(tsk)                  \
-{                                              \
-       .task           = &tsk,                 \
-       .exec_domain    = &default_exec_domain, \
-       .flags          = 0,                    \
-       .cpu            = 0,                    \
-       .preempt_count  = 1,                    \
-       .addr_limit     = KERNEL_DS,            \
-       .restart_block = {                      \
-               .fn = do_no_restart_syscall,    \
-       },                                      \
-}
-
-#define init_thread_info       (init_thread_union.thread_info)
-#define init_stack             (init_thread_union.stack)
-#define init_uregs                                                     \
-       ((struct pt_regs *)                                             \
-        ((unsigned long) init_stack + THREAD_SIZE - sizeof(struct pt_regs)))
-
-extern struct thread_info *__current_ti;
-
-/* how to get the thread information struct from C */
-static inline __attribute__((const))
-struct thread_info *current_thread_info(void)
-{
-       struct thread_info *ti;
-       asm("mov sp,%0\n"
-           "and %1,%0\n"
-           : "=d" (ti)
-           : "i" (~(THREAD_SIZE - 1))
-           : "cc");
-       return ti;
-}
-
-/* how to get the current stack pointer from C */
-static inline unsigned long current_stack_pointer(void)
-{
-       unsigned long sp;
-       asm("mov sp,%0; ":"=r" (sp));
-       return sp;
-}
-
-#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
-
-/* thread information allocation */
-#ifdef CONFIG_DEBUG_STACK_USAGE
-#define alloc_thread_info(tsk) kzalloc(THREAD_SIZE, GFP_KERNEL)
-#else
-#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL)
-#endif
-
-#define free_thread_info(ti)   kfree((ti))
-#define get_thread_info(ti)    get_task_struct((ti)->task)
-#define put_thread_info(ti)    put_task_struct((ti)->task)
-
-#else /* !__ASSEMBLY__ */
-
-#ifndef __VMLINUX_LDS__
-/* how to get the thread information struct from ASM */
-.macro GET_THREAD_INFO reg
-       mov     sp,\reg
-       and     -THREAD_SIZE,\reg
-.endm
-#endif
-#endif
-
-/*
- * thread information flags
- * - these are process state flags that various assembly files may need to
- *   access
- * - pending work-to-be-done flags are in LSW
- * - other flags in MSW
- */
-#define TIF_SYSCALL_TRACE      0       /* syscall trace active */
-#define TIF_NOTIFY_RESUME      1       /* resumption notification requested */
-#define TIF_SIGPENDING         2       /* signal pending */
-#define TIF_NEED_RESCHED       3       /* rescheduling necessary */
-#define TIF_SINGLESTEP         4       /* restore singlestep on return to user mode */
-#define TIF_RESTORE_SIGMASK    5       /* restore signal mask in do_signal() */
-#define TIF_POLLING_NRFLAG     16      /* true if poll_idle() is polling TIF_NEED_RESCHED */
-#define TIF_MEMDIE             17      /* OOM killer killed process */
-#define TIF_FREEZE             18      /* freezing for suspend */
-
-#define _TIF_SYSCALL_TRACE     +(1 << TIF_SYSCALL_TRACE)
-#define _TIF_NOTIFY_RESUME     +(1 << TIF_NOTIFY_RESUME)
-#define _TIF_SIGPENDING                +(1 << TIF_SIGPENDING)
-#define _TIF_NEED_RESCHED      +(1 << TIF_NEED_RESCHED)
-#define _TIF_SINGLESTEP                +(1 << TIF_SINGLESTEP)
-#define _TIF_RESTORE_SIGMASK   +(1 << TIF_RESTORE_SIGMASK)
-#define _TIF_POLLING_NRFLAG    +(1 << TIF_POLLING_NRFLAG)
-#define _TIF_FREEZE            +(1 << TIF_FREEZE)
-
-#define _TIF_WORK_MASK         0x0000FFFE      /* work to do on interrupt/exception return */
-#define _TIF_ALLWORK_MASK      0x0000FFFF      /* work to do on any return to u-space */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_THREAD_INFO_H */
diff --git a/include/asm-mn10300/timer-regs.h b/include/asm-mn10300/timer-regs.h
deleted file mode 100644 (file)
index 1d883b7..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/* AM33v2 on-board timer module registers
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_TIMER_REGS_H
-#define _ASM_TIMER_REGS_H
-
-#include <asm/cpu-regs.h>
-#include <asm/intctl-regs.h>
-
-#ifdef __KERNEL__
-
-/* timer prescalar control */
-#define        TMPSCNT                 __SYSREG(0xd4003071, u8) /* timer prescaler control */
-#define        TMPSCNT_ENABLE          0x80    /* timer prescaler enable */
-#define        TMPSCNT_DISABLE         0x00    /* timer prescaler disable */
-
-/* 8 bit timers */
-#define        TM0MD                   __SYSREG(0xd4003000, u8) /* timer 0 mode register */
-#define        TM0MD_SRC               0x07    /* timer source */
-#define        TM0MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM0MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM0MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM0MD_SRC_TM2IO         0x03    /* - TM2IO pin input */
-#define        TM0MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM0MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM0MD_SRC_TM0IO         0x07    /* - TM0IO pin input */
-#define        TM0MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM0MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM1MD                   __SYSREG(0xd4003001, u8) /* timer 1 mode register */
-#define        TM1MD_SRC               0x07    /* timer source */
-#define        TM1MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM1MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM1MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM1MD_SRC_TM0CASCADE    0x03    /* - cascade with timer 0 */
-#define        TM1MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM1MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM1MD_SRC_TM1IO         0x07    /* - TM1IO pin input */
-#define        TM1MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM1MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM2MD                   __SYSREG(0xd4003002, u8) /* timer 2 mode register */
-#define        TM2MD_SRC               0x07    /* timer source */
-#define        TM2MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM2MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM2MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM2MD_SRC_TM1CASCADE    0x03    /* - cascade with timer 1 */
-#define        TM2MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM2MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM2MD_SRC_TM2IO         0x07    /* - TM2IO pin input */
-#define        TM2MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM2MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM3MD                   __SYSREG(0xd4003003, u8) /* timer 3 mode register */
-#define        TM3MD_SRC               0x07    /* timer source */
-#define        TM3MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM3MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM3MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM3MD_SRC_TM1CASCADE    0x03    /* - cascade with timer 2 */
-#define        TM3MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM3MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM3MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM3MD_SRC_TM3IO         0x07    /* - TM3IO pin input */
-#define        TM3MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM3MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM01MD                  __SYSREG(0xd4003000, u16)  /* timer 0:1 mode register */
-
-#define        TM0BR                   __SYSREG(0xd4003010, u8)   /* timer 0 base register */
-#define        TM1BR                   __SYSREG(0xd4003011, u8)   /* timer 1 base register */
-#define        TM2BR                   __SYSREG(0xd4003012, u8)   /* timer 2 base register */
-#define        TM3BR                   __SYSREG(0xd4003013, u8)   /* timer 3 base register */
-#define        TM01BR                  __SYSREG(0xd4003010, u16)  /* timer 0:1 base register */
-
-#define        TM0BC                   __SYSREGC(0xd4003020, u8)  /* timer 0 binary counter */
-#define        TM1BC                   __SYSREGC(0xd4003021, u8)  /* timer 1 binary counter */
-#define        TM2BC                   __SYSREGC(0xd4003022, u8)  /* timer 2 binary counter */
-#define        TM3BC                   __SYSREGC(0xd4003023, u8)  /* timer 3 binary counter */
-#define        TM01BC                  __SYSREGC(0xd4003020, u16) /* timer 0:1 binary counter */
-
-#define TM0IRQ                 2       /* timer 0 IRQ */
-#define TM1IRQ                 3       /* timer 1 IRQ */
-#define TM2IRQ                 4       /* timer 2 IRQ */
-#define TM3IRQ                 5       /* timer 3 IRQ */
-
-#define        TM0ICR                  GxICR(TM0IRQ)   /* timer 0 uflow intr ctrl reg */
-#define        TM1ICR                  GxICR(TM1IRQ)   /* timer 1 uflow intr ctrl reg */
-#define        TM2ICR                  GxICR(TM2IRQ)   /* timer 2 uflow intr ctrl reg */
-#define        TM3ICR                  GxICR(TM3IRQ)   /* timer 3 uflow intr ctrl reg */
-
-/* 16-bit timers 4,5 & 7-11 */
-#define        TM4MD                   __SYSREG(0xd4003080, u8)   /* timer 4 mode register */
-#define        TM4MD_SRC               0x07    /* timer source */
-#define        TM4MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM4MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM4MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM4MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM4MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM4MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM4MD_SRC_TM4IO         0x07    /* - TM4IO pin input */
-#define        TM4MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM4MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM5MD                   __SYSREG(0xd4003082, u8)   /* timer 5 mode register */
-#define        TM5MD_SRC               0x07    /* timer source */
-#define        TM5MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM5MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM5MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM5MD_SRC_TM4CASCADE    0x03    /* - cascade with timer 4 */
-#define        TM5MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM5MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM5MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM5MD_SRC_TM5IO         0x07    /* - TM5IO pin input */
-#define        TM5MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM5MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM7MD                   __SYSREG(0xd4003086, u8)   /* timer 7 mode register */
-#define        TM7MD_SRC               0x07    /* timer source */
-#define        TM7MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM7MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM7MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM7MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM7MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM7MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM7MD_SRC_TM7IO         0x07    /* - TM7IO pin input */
-#define        TM7MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM7MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM8MD                   __SYSREG(0xd4003088, u8)   /* timer 8 mode register */
-#define        TM8MD_SRC               0x07    /* timer source */
-#define        TM8MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM8MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM8MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM8MD_SRC_TM7CASCADE    0x03    /* - cascade with timer 7 */
-#define        TM8MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM8MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM8MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM8MD_SRC_TM8IO         0x07    /* - TM8IO pin input */
-#define        TM8MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM8MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM9MD                   __SYSREG(0xd400308a, u8)   /* timer 9 mode register */
-#define        TM9MD_SRC               0x07    /* timer source */
-#define        TM9MD_SRC_IOCLK         0x00    /* - IOCLK */
-#define        TM9MD_SRC_IOCLK_8       0x01    /* - 1/8 IOCLK */
-#define        TM9MD_SRC_IOCLK_32      0x02    /* - 1/32 IOCLK */
-#define        TM9MD_SRC_TM8CASCADE    0x03    /* - cascade with timer 8 */
-#define        TM9MD_SRC_TM0UFLOW      0x04    /* - timer 0 underflow */
-#define        TM9MD_SRC_TM1UFLOW      0x05    /* - timer 1 underflow */
-#define        TM9MD_SRC_TM2UFLOW      0x06    /* - timer 2 underflow */
-#define        TM9MD_SRC_TM9IO         0x07    /* - TM9IO pin input */
-#define        TM9MD_INIT_COUNTER      0x40    /* initialize TMnBC = TMnBR */
-#define        TM9MD_COUNT_ENABLE      0x80    /* timer count enable */
-
-#define        TM10MD                  __SYSREG(0xd400308c, u8)   /* timer 10 mode register */
-#define        TM10MD_SRC              0x07    /* timer source */
-#define        TM10MD_SRC_IOCLK        0x00    /* - IOCLK */
-#define        TM10MD_SRC_IOCLK_8      0x01    /* - 1/8 IOCLK */
-#define        TM10MD_SRC_IOCLK_32     0x02    /* - 1/32 IOCLK */
-#define        TM10MD_SRC_TM9CASCADE   0x03    /* - cascade with timer 9 */
-#define        TM10MD_SRC_TM0UFLOW     0x04    /* - timer 0 underflow */
-#define        TM10MD_SRC_TM1UFLOW     0x05    /* - timer 1 underflow */
-#define        TM10MD_SRC_TM2UFLOW     0x06    /* - timer 2 underflow */
-#define        TM10MD_SRC_TM10IO       0x07    /* - TM10IO pin input */
-#define        TM10MD_INIT_COUNTER     0x40    /* initialize TMnBC = TMnBR */
-#define        TM10MD_COUNT_ENABLE     0x80    /* timer count enable */
-
-#define        TM11MD                  __SYSREG(0xd400308e, u8)   /* timer 11 mode register */
-#define        TM11MD_SRC              0x07    /* timer source */
-#define        TM11MD_SRC_IOCLK        0x00    /* - IOCLK */
-#define        TM11MD_SRC_IOCLK_8      0x01    /* - 1/8 IOCLK */
-#define        TM11MD_SRC_IOCLK_32     0x02    /* - 1/32 IOCLK */
-#define        TM11MD_SRC_TM7CASCADE   0x03    /* - cascade with timer 7 */
-#define        TM11MD_SRC_TM0UFLOW     0x04    /* - timer 0 underflow */
-#define        TM11MD_SRC_TM1UFLOW     0x05    /* - timer 1 underflow */
-#define        TM11MD_SRC_TM2UFLOW     0x06    /* - timer 2 underflow */
-#define        TM11MD_SRC_TM11IO       0x07    /* - TM11IO pin input */
-#define        TM11MD_INIT_COUNTER     0x40    /* initialize TMnBC = TMnBR */
-#define        TM11MD_COUNT_ENABLE     0x80    /* timer count enable */
-
-#define        TM4BR                   __SYSREG(0xd4003090, u16)  /* timer 4 base register */
-#define        TM5BR                   __SYSREG(0xd4003092, u16)  /* timer 5 base register */
-#define        TM7BR                   __SYSREG(0xd4003096, u16)  /* timer 7 base register */
-#define        TM8BR                   __SYSREG(0xd4003098, u16)  /* timer 8 base register */
-#define        TM9BR                   __SYSREG(0xd400309a, u16)  /* timer 9 base register */
-#define        TM10BR                  __SYSREG(0xd400309c, u16)  /* timer 10 base register */
-#define        TM11BR                  __SYSREG(0xd400309e, u16)  /* timer 11 base register */
-#define        TM45BR                  __SYSREG(0xd4003090, u32)  /* timer 4:5 base register */
-
-#define        TM4BC                   __SYSREG(0xd40030a0, u16)  /* timer 4 binary counter */
-#define        TM5BC                   __SYSREG(0xd40030a2, u16)  /* timer 5 binary counter */
-#define        TM45BC                  __SYSREG(0xd40030a0, u32)  /* timer 4:5 binary counter */
-
-#define        TM7BC                   __SYSREG(0xd40030a6, u16)  /* timer 7 binary counter */
-#define        TM8BC                   __SYSREG(0xd40030a8, u16)  /* timer 8 binary counter */
-#define        TM9BC                   __SYSREG(0xd40030aa, u16)  /* timer 9 binary counter */
-#define        TM10BC                  __SYSREG(0xd40030ac, u16)  /* timer 10 binary counter */
-#define        TM11BC                  __SYSREG(0xd40030ae, u16)  /* timer 11 binary counter */
-
-#define TM4IRQ                 6       /* timer 4 IRQ */
-#define TM5IRQ                 7       /* timer 5 IRQ */
-#define TM7IRQ                 11      /* timer 7 IRQ */
-#define TM8IRQ                 12      /* timer 8 IRQ */
-#define TM9IRQ                 13      /* timer 9 IRQ */
-#define TM10IRQ                        14      /* timer 10 IRQ */
-#define TM11IRQ                        15      /* timer 11 IRQ */
-
-#define        TM4ICR                  GxICR(TM4IRQ)   /* timer 4 uflow intr ctrl reg */
-#define        TM5ICR                  GxICR(TM5IRQ)   /* timer 5 uflow intr ctrl reg */
-#define        TM7ICR                  GxICR(TM7IRQ)   /* timer 7 uflow intr ctrl reg */
-#define        TM8ICR                  GxICR(TM8IRQ)   /* timer 8 uflow intr ctrl reg */
-#define        TM9ICR                  GxICR(TM9IRQ)   /* timer 9 uflow intr ctrl reg */
-#define        TM10ICR                 GxICR(TM10IRQ)  /* timer 10 uflow intr ctrl reg */
-#define        TM11ICR                 GxICR(TM11IRQ)  /* timer 11 uflow intr ctrl reg */
-
-/* 16-bit timer 6 */
-#define        TM6MD                   __SYSREG(0xd4003084, u16)  /* timer6 mode register */
-#define        TM6MD_SRC               0x0007  /* timer source */
-#define        TM6MD_SRC_IOCLK         0x0000  /* - IOCLK */
-#define        TM6MD_SRC_IOCLK_8       0x0001  /* - 1/8 IOCLK */
-#define        TM6MD_SRC_IOCLK_32      0x0002  /* - 1/32 IOCLK */
-#define        TM6MD_SRC_TM0UFLOW      0x0004  /* - timer 0 underflow */
-#define        TM6MD_SRC_TM1UFLOW      0x0005  /* - timer 1 underflow */
-#define        TM6MD_SRC_TM6IOB_BOTH   0x0006  /* - TM6IOB pin input (both edges) */
-#define        TM6MD_SRC_TM6IOB_SINGLE 0x0007  /* - TM6IOB pin input (single edge) */
-#define        TM6MD_CLR_ENABLE        0x0010  /* clear count enable */
-#define        TM6MD_ONESHOT_ENABLE    0x0040  /* oneshot count */
-#define        TM6MD_TRIG_ENABLE       0x0080  /* TM6IOB pin trigger enable */
-#define TM6MD_PWM              0x3800  /* PWM output mode */
-#define TM6MD_PWM_DIS          0x0000  /* - disabled */
-#define        TM6MD_PWM_10BIT         0x1000  /* - 10 bits mode */
-#define        TM6MD_PWM_11BIT         0x1800  /* - 11 bits mode */
-#define        TM6MD_PWM_12BIT         0x3000  /* - 12 bits mode */
-#define        TM6MD_PWM_14BIT         0x3800  /* - 14 bits mode */
-#define        TM6MD_INIT_COUNTER      0x4000  /* initialize TMnBC to zero */
-#define        TM6MD_COUNT_ENABLE      0x8000  /* timer count enable */
-
-#define        TM6MDA                  __SYSREG(0xd40030b4, u8)   /* timer6 cmp/cap A mode reg */
-#define TM6MDA_OUT             0x07    /* output select */
-#define        TM6MDA_OUT_SETA_RESETB  0x00    /* - set at match A, reset at match B */
-#define        TM6MDA_OUT_SETA_RESETOV 0x01    /* - set at match A, reset at overflow */
-#define        TM6MDA_OUT_SETA         0x02    /* - set at match A */
-#define        TM6MDA_OUT_RESETA       0x03    /* - reset at match A */
-#define        TM6MDA_OUT_TOGGLE       0x04    /* - toggle on match A */
-#define TM6MDA_MODE            0xc0    /* compare A register mode */
-#define        TM6MDA_MODE_CMP_SINGLE  0x00    /* - compare, single buffer mode */
-#define        TM6MDA_MODE_CMP_DOUBLE  0x40    /* - compare, double buffer mode */
-#define        TM6MDA_MODE_CAP_S_EDGE  0x80    /* - capture, single edge mode */
-#define        TM6MDA_MODE_CAP_D_EDGE  0xc0    /* - capture, double edge mode */
-#define TM6MDA_EDGE            0x20    /* compare A edge select */
-#define        TM6MDA_EDGE_FALLING     0x00    /* capture on falling edge */
-#define        TM6MDA_EDGE_RISING      0x20    /* capture on rising edge */
-#define        TM6MDA_CAPTURE_ENABLE   0x10    /* capture enable */
-
-#define        TM6MDB                  __SYSREG(0xd40030b5, u8)   /* timer6 cmp/cap B mode reg */
-#define TM6MDB_OUT             0x07    /* output select */
-#define        TM6MDB_OUT_SETB_RESETA  0x00    /* - set at match B, reset at match A */
-#define        TM6MDB_OUT_SETB_RESETOV 0x01    /* - set at match B */
-#define        TM6MDB_OUT_RESETB       0x03    /* - reset at match B */
-#define        TM6MDB_OUT_TOGGLE       0x04    /* - toggle on match B */
-#define TM6MDB_MODE            0xc0    /* compare B register mode */
-#define        TM6MDB_MODE_CMP_SINGLE  0x00    /* - compare, single buffer mode */
-#define        TM6MDB_MODE_CMP_DOUBLE  0x40    /* - compare, double buffer mode */
-#define        TM6MDB_MODE_CAP_S_EDGE  0x80    /* - capture, single edge mode */
-#define        TM6MDB_MODE_CAP_D_EDGE  0xc0    /* - capture, double edge mode */
-#define TM6MDB_EDGE            0x20    /* compare B edge select */
-#define        TM6MDB_EDGE_FALLING     0x00    /* capture on falling edge */
-#define        TM6MDB_EDGE_RISING      0x20    /* capture on rising edge */
-#define        TM6MDB_CAPTURE_ENABLE   0x10    /* capture enable */
-
-#define        TM6CA                   __SYSREG(0xd40030c4, u16)   /* timer6 cmp/capture reg A */
-#define        TM6CB                   __SYSREG(0xd40030d4, u16)   /* timer6 cmp/capture reg B */
-#define        TM6BC                   __SYSREG(0xd40030a4, u16)   /* timer6 binary counter */
-
-#define TM6IRQ                 6       /* timer 6 IRQ */
-#define TM6AIRQ                        9       /* timer 6A IRQ */
-#define TM6BIRQ                        10      /* timer 6B IRQ */
-
-#define        TM6ICR                  GxICR(TM6IRQ)   /* timer 6 uflow intr ctrl reg */
-#define        TM6AICR                 GxICR(TM6AIRQ)  /* timer 6A intr control reg */
-#define        TM6BICR                 GxICR(TM6BIRQ)  /* timer 6B intr control reg */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_TIMER_REGS_H */
diff --git a/include/asm-mn10300/timex.h b/include/asm-mn10300/timex.h
deleted file mode 100644 (file)
index 3944277..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* MN10300 Architecture time management specifications
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_TIMEX_H
-#define _ASM_TIMEX_H
-
-#include <asm/hardirq.h>
-#include <asm/unit/timex.h>
-
-#define TICK_SIZE (tick_nsec / 1000)
-
-#define CLOCK_TICK_RATE 1193180 /* Underlying HZ - this should probably be set
-                                * to something appropriate, but what? */
-
-extern cycles_t cacheflush_time;
-
-#ifdef __KERNEL__
-
-static inline cycles_t get_cycles(void)
-{
-       return read_timestamp_counter();
-}
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_TIMEX_H */
diff --git a/include/asm-mn10300/tlb.h b/include/asm-mn10300/tlb.h
deleted file mode 100644 (file)
index 65d232b..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* MN10300 TLB definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_TLB_H
-#define _ASM_TLB_H
-
-#include <asm/tlbflush.h>
-
-extern void check_pgt_cache(void);
-
-/*
- * we don't need any special per-pte or per-vma handling...
- */
-#define tlb_start_vma(tlb, vma)                                do { } while (0)
-#define tlb_end_vma(tlb, vma)                          do { } while (0)
-#define __tlb_remove_tlb_entry(tlb, ptep, address)     do { } while (0)
-
-/*
- * .. because we flush the whole mm when it fills up
- */
-#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
-
-/* for now, just use the generic stuff */
-#include <asm-generic/tlb.h>
-
-#endif /* _ASM_TLB_H */
diff --git a/include/asm-mn10300/tlbflush.h b/include/asm-mn10300/tlbflush.h
deleted file mode 100644 (file)
index e023986..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/* MN10300 TLB flushing functions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_TLBFLUSH_H
-#define _ASM_TLBFLUSH_H
-
-#include <asm/processor.h>
-
-#define __flush_tlb()                                          \
-do {                                                           \
-       int w;                                                  \
-       __asm__ __volatile__                                    \
-               ("      mov %1,%0               \n"             \
-                "      or %2,%0                \n"             \
-                "      mov %0,%1               \n"             \
-                : "=d"(w)                                      \
-                : "m"(MMUCTR), "i"(MMUCTR_IIV|MMUCTR_DIV)      \
-                : "memory"                                     \
-                );                                             \
-} while (0)
-
-#define __flush_tlb_all() __flush_tlb()
-#define __flush_tlb_one(addr) __flush_tlb()
-
-
-/*
- * TLB flushing:
- *
- *  - flush_tlb() flushes the current mm struct TLBs
- *  - flush_tlb_all() flushes all processes TLBs
- *  - flush_tlb_mm(mm) flushes the specified mm context TLB's
- *  - flush_tlb_page(vma, vmaddr) flushes one page
- *  - flush_tlb_range(mm, start, end) flushes a range of pages
- *  - flush_tlb_pgtables(mm, start, end) flushes a range of page tables
- */
-#define flush_tlb_all()                                \
-do {                                           \
-       preempt_disable();                      \
-       __flush_tlb_all();                      \
-       preempt_enable();                       \
-} while (0)
-
-#define flush_tlb_mm(mm)                       \
-do {                                           \
-       preempt_disable();                      \
-       __flush_tlb_all();                      \
-       preempt_enable();                       \
-} while (0)
-
-#define flush_tlb_range(vma, start, end)                       \
-do {                                                           \
-       unsigned long __s __attribute__((unused)) = (start);    \
-       unsigned long __e __attribute__((unused)) = (end);      \
-       preempt_disable();                                      \
-       __flush_tlb_all();                                      \
-       preempt_enable();                                       \
-} while (0)
-
-
-#define __flush_tlb_global()                   flush_tlb_all()
-#define flush_tlb()                            flush_tlb_all()
-#define flush_tlb_kernel_range(start, end)                     \
-do {                                                           \
-       unsigned long __s __attribute__((unused)) = (start);    \
-       unsigned long __e __attribute__((unused)) = (end);      \
-       flush_tlb_all();                                        \
-} while (0)
-
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr);
-
-#define flush_tlb_pgtables(mm, start, end)     do {} while (0)
-
-#endif /* _ASM_TLBFLUSH_H */
diff --git a/include/asm-mn10300/topology.h b/include/asm-mn10300/topology.h
deleted file mode 100644 (file)
index 5428f33..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/topology.h>
diff --git a/include/asm-mn10300/types.h b/include/asm-mn10300/types.h
deleted file mode 100644 (file)
index 7b9f010..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* MN10300 Basic type definitions
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_TYPES_H
-#define _ASM_TYPES_H
-
-#include <asm-generic/int-ll64.h>
-
-#ifndef __ASSEMBLY__
-
-typedef unsigned short umode_t;
-
-#endif /* __ASSEMBLY__ */
-
-/*
- * These aren't exported outside the kernel to avoid name space clashes
- */
-#ifdef __KERNEL__
-
-#define BITS_PER_LONG 32
-
-#ifndef __ASSEMBLY__
-
-/* Dma addresses are 32-bits wide.  */
-typedef u32 dma_addr_t;
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_TYPES_H */
diff --git a/include/asm-mn10300/uaccess.h b/include/asm-mn10300/uaccess.h
deleted file mode 100644 (file)
index 8a3a4dd..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-/* MN10300 userspace access functions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UACCESS_H
-#define _ASM_UACCESS_H
-
-/*
- * User space memory access functions
- */
-#include <linux/sched.h>
-#include <asm/page.h>
-#include <asm/pgtable.h>
-#include <asm/errno.h>
-
-#define VERIFY_READ 0
-#define VERIFY_WRITE 1
-
-/*
- * The fs value determines whether argument validity checking should be
- * performed or not.  If get_fs() == USER_DS, checking is performed, with
- * get_fs() == KERNEL_DS, checking is bypassed.
- *
- * For historical reasons, these macros are grossly misnamed.
- */
-
-#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
-
-#define KERNEL_XDS     MAKE_MM_SEG(0xBFFFFFFF)
-#define KERNEL_DS      MAKE_MM_SEG(0x9FFFFFFF)
-#define USER_DS                MAKE_MM_SEG(TASK_SIZE)
-
-#define get_ds()       (KERNEL_DS)
-#define get_fs()       (current_thread_info()->addr_limit)
-#define set_fs(x)      (current_thread_info()->addr_limit = (x))
-#define __kernel_ds_p() (current_thread_info()->addr_limit.seg == 0x9FFFFFFF)
-
-#define segment_eq(a, b) ((a).seg == (b).seg)
-
-#define __addr_ok(addr) \
-       ((unsigned long)(addr) < (current_thread_info()->addr_limit.seg))
-
-/*
- * check that a range of addresses falls within the current address limit
- */
-static inline int ___range_ok(unsigned long addr, unsigned int size)
-{
-       int flag = 1, tmp;
-
-       asm("   add     %3,%1   \n"     /* set C-flag if addr + size > 4Gb */
-           "   bcs     0f      \n"
-           "   cmp     %4,%1   \n"     /* jump if addr+size>limit (error) */
-           "   bhi     0f      \n"
-           "   clr     %0      \n"     /* mark okay */
-           "0:                 \n"
-           : "=r"(flag), "=&r"(tmp)
-           : "1"(addr), "ir"(size),
-             "r"(current_thread_info()->addr_limit.seg), "0"(flag)
-           : "cc"
-           );
-
-       return flag;
-}
-
-#define __range_ok(addr, size) ___range_ok((unsigned long)(addr), (u32)(size))
-
-#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
-#define __access_ok(addr, size)     (__range_ok((addr), (size)) == 0)
-
-static inline int verify_area(int type, const void *addr, unsigned long size)
-{
-       return access_ok(type, addr, size) ? 0 : -EFAULT;
-}
-
-
-/*
- * The exception table consists of pairs of addresses: the first is the
- * address of an instruction that is allowed to fault, and the second is
- * the address at which the program should continue.  No registers are
- * modified, so it is entirely up to the continuation code to figure out
- * what to do.
- *
- * All the routines below use bits of fixup code that are out of line
- * with the main instruction path.  This means when everything is well,
- * we don't even have to jump over them.  Further, they do not intrude
- * on our cache or tlb entries.
- */
-
-struct exception_table_entry
-{
-       unsigned long insn, fixup;
-};
-
-/* Returns 0 if exception not found and fixup otherwise.  */
-extern int fixup_exception(struct pt_regs *regs);
-
-#define put_user(x, ptr) __put_user_check((x), (ptr), sizeof(*(ptr)))
-#define get_user(x, ptr) __get_user_check((x), (ptr), sizeof(*(ptr)))
-
-/*
- * The "__xxx" versions do not do address space checking, useful when
- * doing multiple accesses to the same area (the user has to do the
- * checks by hand with "access_ok()")
- */
-#define __put_user(x, ptr) __put_user_nocheck((x), (ptr), sizeof(*(ptr)))
-#define __get_user(x, ptr) __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
-
-/*
- * The "xxx_ret" versions return constant specified in third argument, if
- * something bad happens. These macros can be optimized for the
- * case of just returning from the function xxx_ret is used.
- */
-
-#define put_user_ret(x, ptr, ret) \
-       ({ if (put_user((x), (ptr)))    return (ret); })
-#define get_user_ret(x, ptr, ret) \
-       ({ if (get_user((x), (ptr)))    return (ret); })
-#define __put_user_ret(x, ptr, ret) \
-       ({ if (__put_user((x), (ptr)))  return (ret); })
-#define __get_user_ret(x, ptr, ret) \
-       ({ if (__get_user((x), (ptr)))  return (ret); })
-
-struct __large_struct { unsigned long buf[100]; };
-#define __m(x) (*(struct __large_struct *)(x))
-
-#define __get_user_nocheck(x, ptr, size)       \
-({                                             \
-       __typeof(*(ptr)) __gu_val;              \
-       unsigned long __gu_addr;                \
-       int __gu_err;                           \
-       __gu_addr = (unsigned long) (ptr);      \
-       switch (size) {                         \
-       case 1:  __get_user_asm("bu"); break;   \
-       case 2:  __get_user_asm("hu"); break;   \
-       case 4:  __get_user_asm(""  ); break;   \
-       default: __get_user_unknown(); break;   \
-       }                                       \
-       x = (__typeof__(*(ptr))) __gu_val;      \
-       __gu_err;                               \
-})
-
-#define __get_user_check(x, ptr, size)                 \
-({                                                     \
-       __typeof__(*(ptr)) __gu_val;                    \
-       unsigned long __gu_addr;                        \
-       int __gu_err;                                   \
-       __gu_addr = (unsigned long) (ptr);              \
-       if (likely(__access_ok(__gu_addr,size))) {      \
-               switch (size) {                         \
-               case 1:  __get_user_asm("bu"); break;   \
-               case 2:  __get_user_asm("hu"); break;   \
-               case 4:  __get_user_asm(""  ); break;   \
-               default: __get_user_unknown(); break;   \
-               }                                       \
-       }                                               \
-       else {                                          \
-               __gu_err = -EFAULT;                     \
-               __gu_val = 0;                           \
-       }                                               \
-       x = (__typeof__(*(ptr))) __gu_val;              \
-       __gu_err;                                       \
-})
-
-#define __get_user_asm(INSN)                                   \
-({                                                             \
-       asm volatile(                                   \
-               "1:\n"                                          \
-               "       mov"INSN"       %2,%1\n"                \
-               "       mov             0,%0\n"                 \
-               "2:\n"                                          \
-               "       .section        .fixup,\"ax\"\n"        \
-               "3:\n\t"                                        \
-               "       mov             %3,%0\n"                \
-               "       jmp             2b\n"                   \
-               "       .previous\n"                            \
-               "       .section        __ex_table,\"a\"\n"     \
-               "       .balign         4\n"                    \
-               "       .long           1b, 3b\n"               \
-               "       .previous"                              \
-               : "=&r" (__gu_err), "=&r" (__gu_val)            \
-               : "m" (__m(__gu_addr)), "i" (-EFAULT));         \
-})
-
-extern int __get_user_unknown(void);
-
-#define __put_user_nocheck(x, ptr, size)                       \
-({                                                             \
-       union {                                                 \
-               __typeof__(*(ptr)) val;                         \
-               u32 bits[2];                                    \
-       } __pu_val;                                             \
-       unsigned long __pu_addr;                                \
-       int __pu_err;                                           \
-       __pu_val.val = (x);                                     \
-       __pu_addr = (unsigned long) (ptr);                      \
-       switch (size) {                                         \
-       case 1:  __put_user_asm("bu"); break;                   \
-       case 2:  __put_user_asm("hu"); break;                   \
-       case 4:  __put_user_asm(""  ); break;                   \
-       case 8:  __put_user_asm8();    break;                   \
-       default: __pu_err = __put_user_unknown(); break;        \
-       }                                                       \
-       __pu_err;                                               \
-})
-
-#define __put_user_check(x, ptr, size)                                 \
-({                                                                     \
-       union {                                                         \
-               __typeof__(*(ptr)) val;                                 \
-               u32 bits[2];                                            \
-       } __pu_val;                                                     \
-       unsigned long __pu_addr;                                        \
-       int __pu_err;                                                   \
-       __pu_val.val = (x);                                             \
-       __pu_addr = (unsigned long) (ptr);                              \
-       if (likely(__access_ok(__pu_addr, size))) {                     \
-               switch (size) {                                         \
-               case 1:  __put_user_asm("bu"); break;                   \
-               case 2:  __put_user_asm("hu"); break;                   \
-               case 4:  __put_user_asm(""  ); break;                   \
-               case 8:  __put_user_asm8();    break;                   \
-               default: __pu_err = __put_user_unknown(); break;        \
-               }                                                       \
-       }                                                               \
-       else {                                                          \
-               __pu_err = -EFAULT;                                     \
-       }                                                               \
-       __pu_err;                                                       \
-})
-
-#define __put_user_asm(INSN)                                   \
-({                                                             \
-       asm volatile(                                           \
-               "1:\n"                                          \
-               "       mov"INSN"       %1,%2\n"                \
-               "       mov             0,%0\n"                 \
-               "2:\n"                                          \
-               "       .section        .fixup,\"ax\"\n"        \
-               "3:\n"                                          \
-               "       mov             %3,%0\n"                \
-               "       jmp             2b\n"                   \
-               "       .previous\n"                            \
-               "       .section        __ex_table,\"a\"\n"     \
-               "       .balign         4\n"                    \
-               "       .long           1b, 3b\n"               \
-               "       .previous"                              \
-               : "=&r" (__pu_err)                              \
-               : "r" (__pu_val.val), "m" (__m(__pu_addr)),     \
-                 "i" (-EFAULT)                                 \
-               );                                              \
-})
-
-#define __put_user_asm8()                                              \
-({                                                                     \
-       asm volatile(                                                   \
-               "1:     mov             %1,%3           \n"             \
-               "2:     mov             %2,%4           \n"             \
-               "       mov             0,%0            \n"             \
-               "3:                                     \n"             \
-               "       .section        .fixup,\"ax\"   \n"             \
-               "4:                                     \n"             \
-               "       mov             %5,%0           \n"             \
-               "       jmp             3b              \n"             \
-               "       .previous                       \n"             \
-               "       .section        __ex_table,\"a\"\n"             \
-               "       .balign         4               \n"             \
-               "       .long           1b, 4b          \n"             \
-               "       .long           2b, 4b          \n"             \
-               "       .previous                       \n"             \
-               : "=&r" (__pu_err)                                      \
-               : "r" (__pu_val.bits[0]), "r" (__pu_val.bits[1]),       \
-                 "m" (__m(__pu_addr)), "m" (__m(__pu_addr+4)),         \
-                 "i" (-EFAULT)                                         \
-               );                                                      \
-})
-
-extern int __put_user_unknown(void);
-
-
-/*
- * Copy To/From Userspace
- */
-/* Generic arbitrary sized copy.  */
-#define __copy_user(to, from, size)                                    \
-do {                                                                   \
-       if (size) {                                                     \
-               void *__to = to;                                        \
-               const void *__from = from;                              \
-               int w;                                                  \
-               asm volatile(                                           \
-                       "0:     movbu   (%0),%3;\n"                     \
-                       "1:     movbu   %3,(%1);\n"                     \
-                       "       inc     %0;\n"                          \
-                       "       inc     %1;\n"                          \
-                       "       add     -1,%2;\n"                       \
-                       "       bne     0b;\n"                          \
-                       "2:\n"                                          \
-                       "       .section .fixup,\"ax\"\n"               \
-                       "3:     jmp     2b\n"                           \
-                       "       .previous\n"                            \
-                       "       .section __ex_table,\"a\"\n"            \
-                       "       .balign 4\n"                            \
-                       "       .long   0b,3b\n"                        \
-                       "       .long   1b,3b\n"                        \
-                       "       .previous\n"                            \
-                       : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
-                       : "0"(__from), "1"(__to), "2"(size)             \
-                       : "memory");                                    \
-       }                                                               \
-} while (0)
-
-#define __copy_user_zeroing(to, from, size)                            \
-do {                                                                   \
-       if (size) {                                                     \
-               void *__to = to;                                        \
-               const void *__from = from;                              \
-               int w;                                                  \
-               asm volatile(                                           \
-                       "0:     movbu   (%0),%3;\n"                     \
-                       "1:     movbu   %3,(%1);\n"                     \
-                       "       inc     %0;\n"                          \
-                       "       inc     %1;\n"                          \
-                       "       add     -1,%2;\n"                       \
-                       "       bne     0b;\n"                          \
-                       "2:\n"                                          \
-                       "       .section .fixup,\"ax\"\n"               \
-                       "3:\n"                                          \
-                       "       mov     %2,%0\n"                        \
-                       "       clr     %3\n"                           \
-                       "4:     movbu   %3,(%1);\n"                     \
-                       "       inc     %1;\n"                          \
-                       "       add     -1,%2;\n"                       \
-                       "       bne     4b;\n"                          \
-                       "       mov     %0,%2\n"                        \
-                       "       jmp     2b\n"                           \
-                       "       .previous\n"                            \
-                       "       .section __ex_table,\"a\"\n"            \
-                       "       .balign 4\n"                            \
-                       "       .long   0b,3b\n"                        \
-                       "       .long   1b,3b\n"                        \
-                       "       .previous\n"                            \
-                       : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
-                       : "0"(__from), "1"(__to), "2"(size)             \
-                       : "memory");                                    \
-       }                                                               \
-} while (0)
-
-/* We let the __ versions of copy_from/to_user inline, because they're often
- * used in fast paths and have only a small space overhead.
- */
-static inline
-unsigned long __generic_copy_from_user_nocheck(void *to, const void *from,
-                                              unsigned long n)
-{
-       __copy_user_zeroing(to, from, n);
-       return n;
-}
-
-static inline
-unsigned long __generic_copy_to_user_nocheck(void *to, const void *from,
-                                            unsigned long n)
-{
-       __copy_user(to, from, n);
-       return n;
-}
-
-
-#if 0
-#error don't use - these macros don't increment to & from pointers
-/* Optimize just a little bit when we know the size of the move. */
-#define __constant_copy_user(to, from, size)   \
-do {                                           \
-       asm volatile(                           \
-               "       mov %0,a0;\n"           \
-               "0:     movbu (%1),d3;\n"       \
-               "1:     movbu d3,(%2);\n"       \
-               "       add -1,a0;\n"           \
-               "       bne 0b;\n"              \
-               "2:;"                           \
-               ".section .fixup,\"ax\"\n"      \
-               "3:     jmp 2b\n"               \
-               ".previous\n"                   \
-               ".section __ex_table,\"a\"\n"   \
-               "       .balign 4\n"            \
-               "       .long 0b,3b\n"          \
-               "       .long 1b,3b\n"          \
-               ".previous"                     \
-               :                               \
-               : "d"(size), "d"(to), "d"(from) \
-               : "d3", "a0");                  \
-} while (0)
-
-/* Optimize just a little bit when we know the size of the move. */
-#define __constant_copy_user_zeroing(to, from, size)   \
-do {                                                   \
-       asm volatile(                                   \
-               "       mov %0,a0;\n"                   \
-               "0:     movbu (%1),d3;\n"               \
-               "1:     movbu d3,(%2);\n"               \
-               "       add -1,a0;\n"                   \
-               "       bne 0b;\n"                      \
-               "2:;"                                   \
-               ".section .fixup,\"ax\"\n"              \
-               "3:     jmp 2b\n"                       \
-               ".previous\n"                           \
-               ".section __ex_table,\"a\"\n"           \
-               "       .balign 4\n"                    \
-               "       .long 0b,3b\n"                  \
-               "       .long 1b,3b\n"                  \
-               ".previous"                             \
-               :                                       \
-               : "d"(size), "d"(to), "d"(from)         \
-               : "d3", "a0");                          \
-} while (0)
-
-static inline
-unsigned long __constant_copy_to_user(void *to, const void *from,
-                                     unsigned long n)
-{
-       if (access_ok(VERIFY_WRITE, to, n))
-               __constant_copy_user(to, from, n);
-       return n;
-}
-
-static inline
-unsigned long __constant_copy_from_user(void *to, const void *from,
-                                       unsigned long n)
-{
-       if (access_ok(VERIFY_READ, from, n))
-               __constant_copy_user_zeroing(to, from, n);
-       return n;
-}
-
-static inline
-unsigned long __constant_copy_to_user_nocheck(void *to, const void *from,
-                                             unsigned long n)
-{
-       __constant_copy_user(to, from, n);
-       return n;
-}
-
-static inline
-unsigned long __constant_copy_from_user_nocheck(void *to, const void *from,
-                                               unsigned long n)
-{
-       __constant_copy_user_zeroing(to, from, n);
-       return n;
-}
-#endif
-
-extern unsigned long __generic_copy_to_user(void __user *, const void *,
-                                           unsigned long);
-extern unsigned long __generic_copy_from_user(void *, const void __user *,
-                                             unsigned long);
-
-#define __copy_to_user_inatomic(to, from, n) \
-       __generic_copy_to_user_nocheck((to), (from), (n))
-#define __copy_from_user_inatomic(to, from, n) \
-       __generic_copy_from_user_nocheck((to), (from), (n))
-
-#define __copy_to_user(to, from, n)                    \
-({                                                     \
-       might_sleep();                                  \
-       __copy_to_user_inatomic((to), (from), (n));     \
-})
-
-#define __copy_from_user(to, from, n)                  \
-({                                                     \
-       might_sleep();                                  \
-       __copy_from_user_inatomic((to), (from), (n));   \
-})
-
-
-#define copy_to_user(to, from, n)   __generic_copy_to_user((to), (from), (n))
-#define copy_from_user(to, from, n) __generic_copy_from_user((to), (from), (n))
-
-extern long strncpy_from_user(char *dst, const char __user *src, long count);
-extern long __strncpy_from_user(char *dst, const char __user *src, long count);
-extern long strnlen_user(const char __user *str, long n);
-#define strlen_user(str) strnlen_user(str, ~0UL >> 1)
-extern unsigned long clear_user(void __user *mem, unsigned long len);
-extern unsigned long __clear_user(void __user *mem, unsigned long len);
-
-#endif /* _ASM_UACCESS_H */
diff --git a/include/asm-mn10300/ucontext.h b/include/asm-mn10300/ucontext.h
deleted file mode 100644 (file)
index fcab5c1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* MN10300 User context
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UCONTEXT_H
-#define _ASM_UCONTEXT_H
-
-struct ucontext {
-       unsigned long     uc_flags;
-       struct ucontext  *uc_link;
-       stack_t           uc_stack;
-       struct sigcontext uc_mcontext;
-       sigset_t          uc_sigmask;   /* mask last for extensibility */
-};
-
-#endif /* _ASM_UCONTEXT_H */
diff --git a/include/asm-mn10300/unaligned.h b/include/asm-mn10300/unaligned.h
deleted file mode 100644 (file)
index 0df6713..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* MN10300 Unaligned memory access handling
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_MN10300_UNALIGNED_H
-#define _ASM_MN10300_UNALIGNED_H
-
-#include <linux/unaligned/access_ok.h>
-#include <linux/unaligned/generic.h>
-
-#define get_unaligned  __get_unaligned_le
-#define put_unaligned  __put_unaligned_le
-
-#endif /* _ASM_MN10300_UNALIGNED_H */
diff --git a/include/asm-mn10300/unistd.h b/include/asm-mn10300/unistd.h
deleted file mode 100644 (file)
index 543a4f9..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-/* MN10300 System call number list
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UNISTD_H
-#define _ASM_UNISTD_H
-
-#define __NR_restart_syscall      0
-#define __NR_exit                1
-#define __NR_fork                2
-#define __NR_read                3
-#define __NR_write               4
-#define __NR_open                5
-#define __NR_close               6
-#define __NR_waitpid             7
-#define __NR_creat               8
-#define __NR_link                9
-#define __NR_unlink             10
-#define __NR_execve             11
-#define __NR_chdir              12
-#define __NR_time               13
-#define __NR_mknod              14
-#define __NR_chmod              15
-#define __NR_lchown             16
-#define __NR_break              17
-#define __NR_oldstat            18
-#define __NR_lseek              19
-#define __NR_getpid             20
-#define __NR_mount              21
-#define __NR_umount             22
-#define __NR_setuid             23
-#define __NR_getuid             24
-#define __NR_stime              25
-#define __NR_ptrace             26
-#define __NR_alarm              27
-#define __NR_oldfstat           28
-#define __NR_pause              29
-#define __NR_utime              30
-#define __NR_stty               31
-#define __NR_gtty               32
-#define __NR_access             33
-#define __NR_nice               34
-#define __NR_ftime              35
-#define __NR_sync               36
-#define __NR_kill               37
-#define __NR_rename             38
-#define __NR_mkdir              39
-#define __NR_rmdir              40
-#define __NR_dup                41
-#define __NR_pipe               42
-#define __NR_times              43
-#define __NR_prof               44
-#define __NR_brk                45
-#define __NR_setgid             46
-#define __NR_getgid             47
-#define __NR_signal             48
-#define __NR_geteuid            49
-#define __NR_getegid            50
-#define __NR_acct               51
-#define __NR_umount2            52
-#define __NR_lock               53
-#define __NR_ioctl              54
-#define __NR_fcntl              55
-#define __NR_mpx                56
-#define __NR_setpgid            57
-#define __NR_ulimit             58
-#define __NR_oldolduname        59
-#define __NR_umask              60
-#define __NR_chroot             61
-#define __NR_ustat              62
-#define __NR_dup2               63
-#define __NR_getppid            64
-#define __NR_getpgrp            65
-#define __NR_setsid             66
-#define __NR_sigaction          67
-#define __NR_sgetmask           68
-#define __NR_ssetmask           69
-#define __NR_setreuid           70
-#define __NR_setregid           71
-#define __NR_sigsuspend                 72
-#define __NR_sigpending                 73
-#define __NR_sethostname        74
-#define __NR_setrlimit          75
-#define __NR_getrlimit          76     /* Back compatible 2Gig limited rlimit */
-#define __NR_getrusage          77
-#define __NR_gettimeofday       78
-#define __NR_settimeofday       79
-#define __NR_getgroups          80
-#define __NR_setgroups          81
-#define __NR_select             82
-#define __NR_symlink            83
-#define __NR_oldlstat           84
-#define __NR_readlink           85
-#define __NR_uselib             86
-#define __NR_swapon             87
-#define __NR_reboot             88
-#define __NR_readdir            89
-#define __NR_mmap               90
-#define __NR_munmap             91
-#define __NR_truncate           92
-#define __NR_ftruncate          93
-#define __NR_fchmod             94
-#define __NR_fchown             95
-#define __NR_getpriority        96
-#define __NR_setpriority        97
-#define __NR_profil             98
-#define __NR_statfs             99
-#define __NR_fstatfs           100
-#define __NR_ioperm            101
-#define __NR_socketcall                102
-#define __NR_syslog            103
-#define __NR_setitimer         104
-#define __NR_getitimer         105
-#define __NR_stat              106
-#define __NR_lstat             107
-#define __NR_fstat             108
-#define __NR_olduname          109
-#define __NR_iopl              110
-#define __NR_vhangup           111
-#define __NR_idle              112
-#define __NR_vm86old           113
-#define __NR_wait4             114
-#define __NR_swapoff           115
-#define __NR_sysinfo           116
-#define __NR_ipc               117
-#define __NR_fsync             118
-#define __NR_sigreturn         119
-#define __NR_clone             120
-#define __NR_setdomainname     121
-#define __NR_uname             122
-#define __NR_modify_ldt                123
-#define __NR_adjtimex          124
-#define __NR_mprotect          125
-#define __NR_sigprocmask       126
-#define __NR_create_module     127
-#define __NR_init_module       128
-#define __NR_delete_module     129
-#define __NR_get_kernel_syms   130
-#define __NR_quotactl          131
-#define __NR_getpgid           132
-#define __NR_fchdir            133
-#define __NR_bdflush           134
-#define __NR_sysfs             135
-#define __NR_personality       136
-#define __NR_afs_syscall       137 /* Syscall for Andrew File System */
-#define __NR_setfsuid          138
-#define __NR_setfsgid          139
-#define __NR__llseek           140
-#define __NR_getdents          141
-#define __NR__newselect                142
-#define __NR_flock             143
-#define __NR_msync             144
-#define __NR_readv             145
-#define __NR_writev            146
-#define __NR_getsid            147
-#define __NR_fdatasync         148
-#define __NR__sysctl           149
-#define __NR_mlock             150
-#define __NR_munlock           151
-#define __NR_mlockall          152
-#define __NR_munlockall                153
-#define __NR_sched_setparam            154
-#define __NR_sched_getparam            155
-#define __NR_sched_setscheduler                156
-#define __NR_sched_getscheduler                157
-#define __NR_sched_yield               158
-#define __NR_sched_get_priority_max    159
-#define __NR_sched_get_priority_min    160
-#define __NR_sched_rr_get_interval     161
-#define __NR_nanosleep         162
-#define __NR_mremap            163
-#define __NR_setresuid         164
-#define __NR_getresuid         165
-#define __NR_vm86              166
-#define __NR_query_module      167
-#define __NR_poll              168
-#define __NR_nfsservctl                169
-#define __NR_setresgid         170
-#define __NR_getresgid         171
-#define __NR_prctl              172
-#define __NR_rt_sigreturn      173
-#define __NR_rt_sigaction      174
-#define __NR_rt_sigprocmask    175
-#define __NR_rt_sigpending     176
-#define __NR_rt_sigtimedwait   177
-#define __NR_rt_sigqueueinfo   178
-#define __NR_rt_sigsuspend     179
-#define __NR_pread64           180
-#define __NR_pwrite64          181
-#define __NR_chown             182
-#define __NR_getcwd            183
-#define __NR_capget            184
-#define __NR_capset            185
-#define __NR_sigaltstack       186
-#define __NR_sendfile          187
-#define __NR_getpmsg           188     /* some people actually want streams */
-#define __NR_putpmsg           189     /* some people actually want streams */
-#define __NR_vfork             190
-#define __NR_ugetrlimit                191     /* SuS compliant getrlimit */
-#define __NR_mmap2             192
-#define __NR_truncate64                193
-#define __NR_ftruncate64       194
-#define __NR_stat64            195
-#define __NR_lstat64           196
-#define __NR_fstat64           197
-#define __NR_lchown32          198
-#define __NR_getuid32          199
-#define __NR_getgid32          200
-#define __NR_geteuid32         201
-#define __NR_getegid32         202
-#define __NR_setreuid32                203
-#define __NR_setregid32                204
-#define __NR_getgroups32       205
-#define __NR_setgroups32       206
-#define __NR_fchown32          207
-#define __NR_setresuid32       208
-#define __NR_getresuid32       209
-#define __NR_setresgid32       210
-#define __NR_getresgid32       211
-#define __NR_chown32           212
-#define __NR_setuid32          213
-#define __NR_setgid32          214
-#define __NR_setfsuid32                215
-#define __NR_setfsgid32                216
-#define __NR_pivot_root                217
-#define __NR_mincore           218
-#define __NR_madvise           219
-#define __NR_madvise1          219     /* delete when C lib stub is removed */
-#define __NR_getdents64                220
-#define __NR_fcntl64           221
-/* 223 is unused */
-#define __NR_gettid            224
-#define __NR_readahead         225
-#define __NR_setxattr          226
-#define __NR_lsetxattr         227
-#define __NR_fsetxattr         228
-#define __NR_getxattr          229
-#define __NR_lgetxattr         230
-#define __NR_fgetxattr         231
-#define __NR_listxattr         232
-#define __NR_llistxattr                233
-#define __NR_flistxattr                234
-#define __NR_removexattr       235
-#define __NR_lremovexattr      236
-#define __NR_fremovexattr      237
-#define __NR_tkill             238
-#define __NR_sendfile64                239
-#define __NR_futex             240
-#define __NR_sched_setaffinity 241
-#define __NR_sched_getaffinity 242
-#define __NR_set_thread_area   243
-#define __NR_get_thread_area   244
-#define __NR_io_setup          245
-#define __NR_io_destroy                246
-#define __NR_io_getevents      247
-#define __NR_io_submit         248
-#define __NR_io_cancel         249
-#define __NR_fadvise64         250
-
-#define __NR_exit_group                252
-#define __NR_lookup_dcookie    253
-#define __NR_epoll_create      254
-#define __NR_epoll_ctl         255
-#define __NR_epoll_wait                256
-#define __NR_remap_file_pages  257
-#define __NR_set_tid_address   258
-#define __NR_timer_create      259
-#define __NR_timer_settime     (__NR_timer_create+1)
-#define __NR_timer_gettime     (__NR_timer_create+2)
-#define __NR_timer_getoverrun  (__NR_timer_create+3)
-#define __NR_timer_delete      (__NR_timer_create+4)
-#define __NR_clock_settime     (__NR_timer_create+5)
-#define __NR_clock_gettime     (__NR_timer_create+6)
-#define __NR_clock_getres      (__NR_timer_create+7)
-#define __NR_clock_nanosleep   (__NR_timer_create+8)
-#define __NR_statfs64          268
-#define __NR_fstatfs64         269
-#define __NR_tgkill            270
-#define __NR_utimes            271
-#define __NR_fadvise64_64      272
-#define __NR_vserver           273
-#define __NR_mbind             274
-#define __NR_get_mempolicy     275
-#define __NR_set_mempolicy     276
-#define __NR_mq_open           277
-#define __NR_mq_unlink         (__NR_mq_open+1)
-#define __NR_mq_timedsend      (__NR_mq_open+2)
-#define __NR_mq_timedreceive   (__NR_mq_open+3)
-#define __NR_mq_notify         (__NR_mq_open+4)
-#define __NR_mq_getsetattr     (__NR_mq_open+5)
-#define __NR_kexec_load                283
-#define __NR_waitid            284
-#define __NR_add_key           286
-#define __NR_request_key       287
-#define __NR_keyctl            288
-#define __NR_cacheflush                289
-#define __NR_ioprio_set                290
-#define __NR_ioprio_get                291
-#define __NR_inotify_init      292
-#define __NR_inotify_add_watch 293
-#define __NR_inotify_rm_watch  294
-#define __NR_migrate_pages     295
-#define __NR_openat            296
-#define __NR_mkdirat           297
-#define __NR_mknodat           298
-#define __NR_fchownat          299
-#define __NR_futimesat         300
-#define __NR_fstatat64         301
-#define __NR_unlinkat          302
-#define __NR_renameat          303
-#define __NR_linkat            304
-#define __NR_symlinkat         305
-#define __NR_readlinkat                306
-#define __NR_fchmodat          307
-#define __NR_faccessat         308
-#define __NR_pselect6          309
-#define __NR_ppoll             310
-#define __NR_unshare           311
-#define __NR_set_robust_list   312
-#define __NR_get_robust_list   313
-#define __NR_splice            314
-#define __NR_sync_file_range   315
-#define __NR_tee               316
-#define __NR_vmsplice          317
-#define __NR_move_pages                318
-#define __NR_getcpu            319
-#define __NR_epoll_pwait       320
-#define __NR_utimensat         321
-#define __NR_signalfd          322
-#define __NR_timerfd_create    323
-#define __NR_eventfd           324
-#define __NR_fallocate         325
-#define __NR_timerfd_settime   326
-#define __NR_timerfd_gettime   327
-#define __NR_signalfd4         328
-#define __NR_eventfd2          329
-#define __NR_epoll_create1     330
-#define __NR_dup3              331
-#define __NR_pipe2             332
-#define __NR_inotify_init1     333
-
-#ifdef __KERNEL__
-
-#define NR_syscalls 326
-
-/*
- * specify the deprecated syscalls we want to support on this arch
- */
-#define __ARCH_WANT_IPC_PARSE_VERSION
-#define __ARCH_WANT_OLD_READDIR
-#define __ARCH_WANT_OLD_STAT
-#define __ARCH_WANT_STAT64
-#define __ARCH_WANT_SYS_ALARM
-#define __ARCH_WANT_SYS_GETHOSTNAME
-#define __ARCH_WANT_SYS_PAUSE
-#define __ARCH_WANT_SYS_SGETMASK
-#define __ARCH_WANT_SYS_SIGNAL
-#define __ARCH_WANT_SYS_TIME
-#define __ARCH_WANT_SYS_UTIME
-#define __ARCH_WANT_SYS_WAITPID
-#define __ARCH_WANT_SYS_SOCKETCALL
-#define __ARCH_WANT_SYS_FADVISE64
-#define __ARCH_WANT_SYS_GETPGRP
-#define __ARCH_WANT_SYS_LLSEEK
-#define __ARCH_WANT_SYS_NICE
-#define __ARCH_WANT_SYS_OLD_GETRLIMIT
-#define __ARCH_WANT_SYS_OLDUMOUNT
-#define __ARCH_WANT_SYS_SIGPENDING
-#define __ARCH_WANT_SYS_SIGPROCMASK
-#define __ARCH_WANT_SYS_RT_SIGACTION
-#define __ARCH_WANT_SYS_RT_SIGSUSPEND
-
-/*
- * "Conditional" syscalls
- *
- * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
- * but it doesn't work on all toolchains, so we just do it by hand
- */
-#ifndef cond_syscall
-#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
-#endif
-
-#endif /* __KERNEL__ */
-#endif /* _ASM_UNISTD_H */
diff --git a/include/asm-mn10300/unit-asb2303/clock.h b/include/asm-mn10300/unit-asb2303/clock.h
deleted file mode 100644 (file)
index 8b450e9..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* ASB2303-specific clocks
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_UNIT_CLOCK_H
-#define _ASM_UNIT_CLOCK_H
-
-#ifndef __ASSEMBLY__
-
-#ifdef CONFIG_MN10300_RTC
-
-extern unsigned long mn10300_ioclk;    /* IOCLK (crystal speed) in HZ */
-extern unsigned long mn10300_iobclk;
-extern unsigned long mn10300_tsc_per_HZ;
-
-#define MN10300_IOCLK          ((unsigned long)mn10300_ioclk)
-/* If this processors has a another clock, uncomment the below. */
-/* #define MN10300_IOBCLK      ((unsigned long)mn10300_iobclk) */
-
-#else /* !CONFIG_MN10300_RTC */
-
-#define MN10300_IOCLK          33333333UL
-/* #define MN10300_IOBCLK      66666666UL */
-
-#endif /* !CONFIG_MN10300_RTC */
-
-#define MN10300_JCCLK          MN10300_IOCLK
-#define MN10300_TSCCLK         MN10300_IOCLK
-
-#ifdef CONFIG_MN10300_RTC
-#define MN10300_TSC_PER_HZ     ((unsigned long)mn10300_tsc_per_HZ)
-#else /* !CONFIG_MN10300_RTC */
-#define MN10300_TSC_PER_HZ     (MN10300_TSCCLK/HZ)
-#endif /* !CONFIG_MN10300_RTC */
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_UNIT_CLOCK_H */
diff --git a/include/asm-mn10300/unit-asb2303/leds.h b/include/asm-mn10300/unit-asb2303/leds.h
deleted file mode 100644 (file)
index 3a7543e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* ASB2303-specific LEDs
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_UNIT_LEDS_H
-#define _ASM_UNIT_LEDS_H
-
-#include <asm/pio-regs.h>
-#include <asm/cpu-regs.h>
-#include <asm/exceptions.h>
-
-#define ASB2303_GPIO0DEF       __SYSREG(0xDB000000, u32)
-#define ASB2303_7SEGLEDS       __SYSREG(0xDB000008, u32)
-
-/*
- * use the 7-segment LEDs to indicate states
- */
-
-/* flip the 7-segment LEDs between "G" and "-" */
-#define mn10300_set_gdbleds(ONOFF)                     \
-do {                                                   \
-       ASB2303_7SEGLEDS = (ONOFF) ? 0x85 : 0x7f;       \
-} while (0)
-
-/* indicate double-fault by displaying "d" on the LEDs */
-#define mn10300_set_dbfleds                    \
-       mov     0x43,d0                 ;       \
-       movbu   d0,(ASB2303_7SEGLEDS)
-
-#ifndef __ASSEMBLY__
-extern void peripheral_leds_display_exception(enum exception_code code);
-extern void peripheral_leds_led_chase(void);
-extern void debug_to_serial(const char *p, int n);
-#endif /* __ASSEMBLY__ */
-
-#endif /* _ASM_UNIT_LEDS_H */
diff --git a/include/asm-mn10300/unit-asb2303/serial.h b/include/asm-mn10300/unit-asb2303/serial.h
deleted file mode 100644 (file)
index 0d55cf5..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/* ASB2303-specific 8250 serial ports
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_UNIT_SERIAL_H
-#define _ASM_UNIT_SERIAL_H
-
-#include <asm/cpu-regs.h>
-#include <asm/proc/irq.h>
-#include <linux/serial_reg.h>
-
-#define SERIAL_PORT0_BASE_ADDRESS      0xA6FB0000
-#define SERIAL_PORT1_BASE_ADDRESS      0xA6FC0000
-
-#define SERIAL_IRQ     XIRQ0   /* Dual serial (PC16552)        (Hi) */
-
-/*
- * dispose of the /dev/ttyS0 and /dev/ttyS1 serial ports
- */
-#ifndef CONFIG_GDBSTUB_ON_TTYSx
-
-#define SERIAL_PORT_DFNS                                               \
-       {                                                               \
-       .baud_base              = BASE_BAUD,                            \
-       .irq                    = SERIAL_IRQ,                           \
-       .flags                  = STD_COM_FLAGS,                        \
-       .iomem_base             = (u8 *) SERIAL_PORT0_BASE_ADDRESS,     \
-       .iomem_reg_shift        = 2,                                    \
-       .io_type                = SERIAL_IO_MEM,                        \
-       },                                                              \
-       {                                                               \
-       .baud_base              = BASE_BAUD,                            \
-       .irq                    = SERIAL_IRQ,                           \
-       .flags                  = STD_COM_FLAGS,                        \
-       .iomem_base             = (u8 *) SERIAL_PORT1_BASE_ADDRESS,     \
-       .iomem_reg_shift        = 2,                                    \
-       .io_type                = SERIAL_IO_MEM,                        \
-       },
-
-#ifndef __ASSEMBLY__
-
-static inline void __debug_to_serial(const char *p, int n)
-{
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#else /* CONFIG_GDBSTUB_ON_TTYSx */
-
-#define SERIAL_PORT_DFNS /* both stolen by gdb-stub because they share an IRQ */
-
-#if defined(CONFIG_GDBSTUB_ON_TTYS0)
-#define GDBPORT_SERIAL_RX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_RX  * 4, u8)
-#define GDBPORT_SERIAL_TX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_TX  * 4, u8)
-#define GDBPORT_SERIAL_DLL     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLL * 4, u8)
-#define GDBPORT_SERIAL_DLM     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLM * 4, u8)
-#define GDBPORT_SERIAL_IER     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IER * 4, u8)
-#define GDBPORT_SERIAL_IIR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IIR * 4, u8)
-#define GDBPORT_SERIAL_FCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_FCR * 4, u8)
-#define GDBPORT_SERIAL_LCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LCR * 4, u8)
-#define GDBPORT_SERIAL_MCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MCR * 4, u8)
-#define GDBPORT_SERIAL_LSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LSR * 4, u8)
-#define GDBPORT_SERIAL_MSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MSR * 4, u8)
-#define GDBPORT_SERIAL_SCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_SCR * 4, u8)
-#define GDBPORT_SERIAL_IRQ     SERIAL_IRQ
-
-#elif defined(CONFIG_GDBSTUB_ON_TTYS1)
-#define GDBPORT_SERIAL_RX      __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_RX  * 4, u8)
-#define GDBPORT_SERIAL_TX      __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_TX  * 4, u8)
-#define GDBPORT_SERIAL_DLL     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_DLL * 4, u8)
-#define GDBPORT_SERIAL_DLM     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_DLM * 4, u8)
-#define GDBPORT_SERIAL_IER     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_IER * 4, u8)
-#define GDBPORT_SERIAL_IIR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_IIR * 4, u8)
-#define GDBPORT_SERIAL_FCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_FCR * 4, u8)
-#define GDBPORT_SERIAL_LCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_LCR * 4, u8)
-#define GDBPORT_SERIAL_MCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_MCR * 4, u8)
-#define GDBPORT_SERIAL_LSR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_LSR * 4, u8)
-#define GDBPORT_SERIAL_MSR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_MSR * 4, u8)
-#define GDBPORT_SERIAL_SCR     __SYSREG(SERIAL_PORT1_BASE_ADDRESS + UART_SCR * 4, u8)
-#define GDBPORT_SERIAL_IRQ     SERIAL_IRQ
-#endif
-
-#ifndef __ASSEMBLY__
-
-#define LSR_WAIT_FOR(STATE)                                    \
-do {                                                           \
-       while (!(GDBPORT_SERIAL_LSR & UART_LSR_##STATE)) {}     \
-} while (0)
-#define FLOWCTL_WAIT_FOR(LINE)                                 \
-do {                                                           \
-       while (!(GDBPORT_SERIAL_MSR & UART_MSR_##LINE)) {}      \
-} while (0)
-#define FLOWCTL_CLEAR(LINE)                    \
-do {                                           \
-       GDBPORT_SERIAL_MCR &= ~UART_MCR_##LINE; \
-} while (0)
-#define FLOWCTL_SET(LINE)                      \
-do {                                           \
-       GDBPORT_SERIAL_MCR |= UART_MCR_##LINE;  \
-} while (0)
-#define FLOWCTL_QUERY(LINE)    ({ GDBPORT_SERIAL_MSR & UART_MSR_##LINE; })
-
-static inline void __debug_to_serial(const char *p, int n)
-{
-       char ch;
-
-       FLOWCTL_SET(DTR);
-
-       for (; n > 0; n--) {
-               LSR_WAIT_FOR(THRE);
-               FLOWCTL_WAIT_FOR(CTS);
-
-               ch = *p++;
-               if (ch == 0x0a) {
-                       GDBPORT_SERIAL_TX = 0x0d;
-                       LSR_WAIT_FOR(THRE);
-                       FLOWCTL_WAIT_FOR(CTS);
-               }
-               GDBPORT_SERIAL_TX = ch;
-       }
-
-       FLOWCTL_CLEAR(DTR);
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* CONFIG_GDBSTUB_ON_TTYSx */
-
-#endif /* _ASM_UNIT_SERIAL_H */
diff --git a/include/asm-mn10300/unit-asb2303/smc91111.h b/include/asm-mn10300/unit-asb2303/smc91111.h
deleted file mode 100644 (file)
index dd456e9..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Support for the SMC91C111 NIC on an ASB2303
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UNIT_SMC91111_H
-#define _ASM_UNIT_SMC91111_H
-
-#include <asm/intctl-regs.h>
-
-#define SMC91111_BASE          0xAA000300UL
-#define SMC91111_BASE_END      0xAA000400UL
-#define SMC91111_IRQ           XIRQ3
-
-#define SMC_CAN_USE_8BIT       0
-#define SMC_CAN_USE_16BIT      1
-#define SMC_CAN_USE_32BIT      0
-#define SMC_NOWAIT             1
-#define SMC_IRQ_FLAGS          (0)
-
-#if SMC_CAN_USE_8BIT
-#define SMC_inb(a, r)          inb((unsigned long) ((a) + (r)))
-#define SMC_outb(v, a, r)      outb(v, (unsigned long) ((a) + (r)))
-#endif
-
-#if SMC_CAN_USE_16BIT
-#define SMC_inw(a, r)          inw((unsigned long) ((a) + (r)))
-#define SMC_outw(v, a, r)      outw(v, (unsigned long) ((a) + (r)))
-#define SMC_insw(a, r, p, l)   insw((unsigned long) ((a) + (r)), (p), (l))
-#define SMC_outsw(a, r, p, l)  outsw((unsigned long) ((a) + (r)), (p), (l))
-#endif
-
-#if SMC_CAN_USE_32BIT
-#define SMC_inl(a, r)          inl((unsigned long) ((a) + (r)))
-#define SMC_outl(v, a, r)      outl(v, (unsigned long) ((a) + (r)))
-#define SMC_insl(a, r, p, l)   insl((unsigned long) ((a) + (r)), (p), (l))
-#define SMC_outsl(a, r, p, l)  outsl((unsigned long) ((a) + (r)), (p), (l))
-#endif
-
-#define RPC_LSA_DEFAULT                RPC_LED_100_10
-#define RPC_LSB_DEFAULT                RPC_LED_TX_RX
-
-#define set_irq_type(irq, type)
-
-#endif /*  _ASM_UNIT_SMC91111_H */
diff --git a/include/asm-mn10300/unit-asb2303/timex.h b/include/asm-mn10300/unit-asb2303/timex.h
deleted file mode 100644 (file)
index 7e54b0c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ASB2303-specific timer specifcations
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UNIT_TIMEX_H
-#define _ASM_UNIT_TIMEX_H
-
-#ifndef __ASSEMBLY__
-#include <linux/irq.h>
-#endif /* __ASSEMBLY__ */
-
-#include <asm/timer-regs.h>
-#include <asm/unit/clock.h>
-
-/*
- * jiffies counter specifications
- */
-
-#define        TMJCBR_MAX              0xffff
-#define        TMJCBC                  TM01BC
-
-#define        TMJCMD                  TM01MD
-#define        TMJCBR                  TM01BR
-#define        TMJCIRQ                 TM1IRQ
-#define        TMJCICR                 TM1ICR
-#define        TMJCICR_LEVEL           GxICR_LEVEL_5
-
-#ifndef __ASSEMBLY__
-
-static inline void startup_jiffies_counter(void)
-{
-       unsigned rate;
-       u16 md, t16;
-
-       /* use as little prescaling as possible to avoid losing accuracy */
-       md = TM0MD_SRC_IOCLK;
-       rate = MN10300_JCCLK / HZ;
-
-       if (rate > TMJCBR_MAX) {
-               md = TM0MD_SRC_IOCLK_8;
-               rate = MN10300_JCCLK / 8 / HZ;
-
-               if (rate > TMJCBR_MAX) {
-                       md = TM0MD_SRC_IOCLK_32;
-                       rate = MN10300_JCCLK / 32 / HZ;
-
-                       if (rate > TMJCBR_MAX)
-                               BUG();
-               }
-       }
-
-       TMJCBR = rate - 1;
-       t16 = TMJCBR;
-
-       TMJCMD =
-               md |
-               TM1MD_SRC_TM0CASCADE << 8 |
-               TM0MD_INIT_COUNTER |
-               TM1MD_INIT_COUNTER << 8;
-
-       TMJCMD =
-               md |
-               TM1MD_SRC_TM0CASCADE << 8 |
-               TM0MD_COUNT_ENABLE |
-               TM1MD_COUNT_ENABLE << 8;
-
-       t16 = TMJCMD;
-
-       TMJCICR |= GxICR_ENABLE | GxICR_DETECT | GxICR_REQUEST;
-       t16 = TMJCICR;
-}
-
-static inline void shutdown_jiffies_counter(void)
-{
-}
-
-#endif /* !__ASSEMBLY__ */
-
-
-/*
- * timestamp counter specifications
- */
-
-#define        TMTSCBR_MAX             0xffffffff
-#define        TMTSCBC                 TM45BC
-
-#ifndef __ASSEMBLY__
-
-static inline void startup_timestamp_counter(void)
-{
-       /* set up timer 4 & 5 cascaded as a 32-bit counter to count real time
-        * - count down from 4Gig-1 to 0 and wrap at IOCLK rate
-        */
-       TM45BR = TMTSCBR_MAX;
-
-       TM4MD = TM4MD_SRC_IOCLK;
-       TM4MD |= TM4MD_INIT_COUNTER;
-       TM4MD &= ~TM4MD_INIT_COUNTER;
-       TM4ICR = 0;
-
-       TM5MD = TM5MD_SRC_TM4CASCADE;
-       TM5MD |= TM5MD_INIT_COUNTER;
-       TM5MD &= ~TM5MD_INIT_COUNTER;
-       TM5ICR = 0;
-
-       TM5MD |= TM5MD_COUNT_ENABLE;
-       TM4MD |= TM4MD_COUNT_ENABLE;
-}
-
-static inline void shutdown_timestamp_counter(void)
-{
-       TM4MD = 0;
-       TM5MD = 0;
-}
-
-/*
- * we use a cascaded pair of 16-bit down-counting timers to count I/O
- * clock cycles for the purposes of time keeping
- */
-typedef unsigned long cycles_t;
-
-static inline cycles_t read_timestamp_counter(void)
-{
-       return (cycles_t)TMTSCBC;
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_UNIT_TIMEX_H */
diff --git a/include/asm-mn10300/unit-asb2305/clock.h b/include/asm-mn10300/unit-asb2305/clock.h
deleted file mode 100644 (file)
index 7d51484..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* ASB2305-specific clocks
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_UNIT_CLOCK_H
-#define _ASM_UNIT_CLOCK_H
-
-#ifndef __ASSEMBLY__
-
-#ifdef CONFIG_MN10300_RTC
-
-extern unsigned long mn10300_ioclk;    /* IOCLK (crystal speed) in HZ */
-extern unsigned long mn10300_iobclk;
-extern unsigned long mn10300_tsc_per_HZ;
-
-#define MN10300_IOCLK          ((unsigned long)mn10300_ioclk)
-/* If this processors has a another clock, uncomment the below. */
-/* #define MN10300_IOBCLK      ((unsigned long)mn10300_iobclk) */
-
-#else /* !CONFIG_MN10300_RTC */
-
-#define MN10300_IOCLK          33333333UL
-/* #define MN10300_IOBCLK      66666666UL */
-
-#endif /* !CONFIG_MN10300_RTC */
-
-#define MN10300_JCCLK          MN10300_IOCLK
-#define MN10300_TSCCLK         MN10300_IOCLK
-
-#ifdef CONFIG_MN10300_RTC
-#define MN10300_TSC_PER_HZ     ((unsigned long)mn10300_tsc_per_HZ)
-#else /* !CONFIG_MN10300_RTC */
-#define MN10300_TSC_PER_HZ     (MN10300_TSCCLK/HZ)
-#endif /* !CONFIG_MN10300_RTC */
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_UNIT_CLOCK_H */
diff --git a/include/asm-mn10300/unit-asb2305/leds.h b/include/asm-mn10300/unit-asb2305/leds.h
deleted file mode 100644 (file)
index bc471f6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* ASB2305-specific LEDs
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_UNIT_LEDS_H
-#define _ASM_UNIT_LEDS_H
-
-#include <asm/pio-regs.h>
-#include <asm/cpu-regs.h>
-#include <asm/exceptions.h>
-
-#define ASB2305_7SEGLEDS       __SYSREG(0xA6F90000, u32)
-
-/* perform a hard reset by driving PIO06 low */
-#define mn10300_unit_hard_reset()              \
-do {                                           \
-       P0OUT &= 0xbf;                          \
-       P0MD = (P0MD & P0MD_6) | P0MD_6_OUT;    \
-} while (0)
-
-/*
- * use the 7-segment LEDs to indicate states
- */
-/* indicate double-fault by displaying "db-f" on the LEDs */
-#define mn10300_set_dbfleds                    \
-       mov     0x43077f1d,d0           ;       \
-       mov     d0,(ASB2305_7SEGLEDS)
-
-/* flip the 7-segment LEDs between "Gdb-" and "----" */
-#define mn10300_set_gdbleds(ONOFF)                             \
-do {                                                           \
-       ASB2305_7SEGLEDS = (ONOFF) ? 0x8543077f : 0x7f7f7f7f;   \
-} while (0)
-
-#ifndef __ASSEMBLY__
-extern void peripheral_leds_display_exception(enum exception_code);
-extern void peripheral_leds_led_chase(void);
-extern void peripheral_leds7x4_display_dec(unsigned int, unsigned int);
-extern void peripheral_leds7x4_display_hex(unsigned int, unsigned int);
-extern void peripheral_leds7x4_display_minssecs(unsigned int, unsigned int);
-extern void peripheral_leds7x4_display_rtc(void);
-#endif /* __ASSEMBLY__ */
-
-#endif /* _ASM_UNIT_LEDS_H */
diff --git a/include/asm-mn10300/unit-asb2305/serial.h b/include/asm-mn10300/unit-asb2305/serial.h
deleted file mode 100644 (file)
index 73d31d6..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/* ASB2305-specific 8250 serial ports
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UNIT_SERIAL_H
-#define _ASM_UNIT_SERIAL_H
-
-#include <asm/cpu/cpu-regs.h>
-#include <asm/proc/irq.h>
-#include <linux/serial_reg.h>
-
-#define SERIAL_PORT0_BASE_ADDRESS      0xA6FB0000
-#define ASB2305_DEBUG_MCR      __SYSREG(0xA6FB0000 + UART_MCR * 2, u8)
-
-#define SERIAL_IRQ     XIRQ0   /* Dual serial (PC16552)        (Hi) */
-
-/*
- * dispose of the /dev/ttyS0 serial port
- */
-#ifndef CONFIG_GDBSTUB_ON_TTYSx
-
-#define SERIAL_PORT_DFNS                                               \
-       {                                                               \
-       .baud_base              = BASE_BAUD,                            \
-       .irq                    = SERIAL_IRQ,                           \
-       .flags                  = STD_COM_FLAGS,                        \
-       .iomem_base             = (u8 *) SERIAL_PORT0_BASE_ADDRESS,     \
-       .iomem_reg_shift        = 2,                                    \
-       .io_type                = SERIAL_IO_MEM,                        \
-       },
-
-#ifndef __ASSEMBLY__
-
-static inline void __debug_to_serial(const char *p, int n)
-{
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#else /* CONFIG_GDBSTUB_ON_TTYSx */
-
-#define SERIAL_PORT_DFNS /* stolen by gdb-stub */
-
-#if defined(CONFIG_GDBSTUB_ON_TTYS0)
-#define GDBPORT_SERIAL_RX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_RX  * 4, u8)
-#define GDBPORT_SERIAL_TX      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_TX  * 4, u8)
-#define GDBPORT_SERIAL_DLL     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLL * 4, u8)
-#define GDBPORT_SERIAL_DLM     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_DLM * 4, u8)
-#define GDBPORT_SERIAL_IER     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IER * 4, u8)
-#define GDBPORT_SERIAL_IIR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_IIR * 4, u8)
-#define GDBPORT_SERIAL_FCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_FCR * 4, u8)
-#define GDBPORT_SERIAL_LCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LCR * 4, u8)
-#define GDBPORT_SERIAL_MCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MCR * 4, u8)
-#define GDBPORT_SERIAL_LSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LSR * 4, u8)
-#define GDBPORT_SERIAL_MSR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MSR * 4, u8)
-#define GDBPORT_SERIAL_SCR     __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_SCR * 4, u8)
-#define GDBPORT_SERIAL_IRQ     SERIAL_IRQ
-
-#elif defined(CONFIG_GDBSTUB_ON_TTYS1)
-#error The ASB2305 doesnt have a /dev/ttyS1
-#endif
-
-#ifndef __ASSEMBLY__
-
-#define TTYS0_TX       __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_TX  * 4, u8)
-#define TTYS0_MCR      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MCR * 4, u8)
-#define TTYS0_LSR      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_LSR * 4, u8)
-#define TTYS0_MSR      __SYSREG(SERIAL_PORT0_BASE_ADDRESS + UART_MSR * 4, u8)
-
-#define LSR_WAIT_FOR(STATE)                            \
-do {                                                   \
-       while (!(TTYS0_LSR & UART_LSR_##STATE)) {}      \
-} while (0)
-#define FLOWCTL_WAIT_FOR(LINE)                         \
-do {                                                   \
-       while (!(TTYS0_MSR & UART_MSR_##LINE)) {}       \
-} while (0)
-#define FLOWCTL_CLEAR(LINE)                    \
-do {                                           \
-       TTYS0_MCR &= ~UART_MCR_##LINE;          \
-} while (0)
-#define FLOWCTL_SET(LINE)                      \
-do {                                           \
-       TTYS0_MCR |= UART_MCR_##LINE;           \
-} while (0)
-#define FLOWCTL_QUERY(LINE)    ({ TTYS0_MSR & UART_MSR_##LINE; })
-
-static inline void __debug_to_serial(const char *p, int n)
-{
-       char ch;
-
-       FLOWCTL_SET(DTR);
-
-       for (; n > 0; n--) {
-               LSR_WAIT_FOR(THRE);
-               FLOWCTL_WAIT_FOR(CTS);
-
-               ch = *p++;
-               if (ch == 0x0a) {
-                       TTYS0_TX = 0x0d;
-                       LSR_WAIT_FOR(THRE);
-                       FLOWCTL_WAIT_FOR(CTS);
-               }
-               TTYS0_TX = ch;
-       }
-
-       FLOWCTL_CLEAR(DTR);
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* CONFIG_GDBSTUB_ON_TTYSx */
-
-#endif /* _ASM_UNIT_SERIAL_H */
diff --git a/include/asm-mn10300/unit-asb2305/timex.h b/include/asm-mn10300/unit-asb2305/timex.h
deleted file mode 100644 (file)
index 10e1bfe..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ASB2305 timer specifcations
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_UNIT_TIMEX_H
-#define _ASM_UNIT_TIMEX_H
-
-#ifndef __ASSEMBLY__
-#include <linux/irq.h>
-#endif /* __ASSEMBLY__ */
-
-#include <asm/cpu/timer-regs.h>
-#include <asm/unit/clock.h>
-
-/*
- * jiffies counter specifications
- */
-
-#define        TMJCBR_MAX              0xffff
-#define        TMJCBC                  TM01BC
-
-#define        TMJCMD                  TM01MD
-#define        TMJCBR                  TM01BR
-#define        TMJCIRQ                 TM1IRQ
-#define        TMJCICR                 TM1ICR
-#define        TMJCICR_LEVEL           GxICR_LEVEL_5
-
-#ifndef __ASSEMBLY__
-
-static inline void startup_jiffies_counter(void)
-{
-       unsigned rate;
-       u16 md, t16;
-
-       /* use as little prescaling as possible to avoid losing accuracy */
-       md = TM0MD_SRC_IOCLK;
-       rate = MN10300_JCCLK / HZ;
-
-       if (rate > TMJCBR_MAX) {
-               md = TM0MD_SRC_IOCLK_8;
-               rate = MN10300_JCCLK / 8 / HZ;
-
-               if (rate > TMJCBR_MAX) {
-                       md = TM0MD_SRC_IOCLK_32;
-                       rate = MN10300_JCCLK / 32 / HZ;
-
-                       if (rate > TMJCBR_MAX)
-                               BUG();
-               }
-       }
-
-       TMJCBR = rate - 1;
-       t16 = TMJCBR;
-
-       TMJCMD =
-               md |
-               TM1MD_SRC_TM0CASCADE << 8 |
-               TM0MD_INIT_COUNTER |
-               TM1MD_INIT_COUNTER << 8;
-
-       TMJCMD =
-               md |
-               TM1MD_SRC_TM0CASCADE << 8 |
-               TM0MD_COUNT_ENABLE |
-               TM1MD_COUNT_ENABLE << 8;
-
-       t16 = TMJCMD;
-
-       TMJCICR |= GxICR_ENABLE | GxICR_DETECT | GxICR_REQUEST;
-       t16 = TMJCICR;
-}
-
-static inline void shutdown_jiffies_counter(void)
-{
-}
-
-#endif /* !__ASSEMBLY__ */
-
-
-/*
- * timestamp counter specifications
- */
-
-#define        TMTSCBR_MAX             0xffffffff
-#define        TMTSCBC                 TM45BC
-
-#ifndef __ASSEMBLY__
-
-static inline void startup_timestamp_counter(void)
-{
-       /* set up timer 4 & 5 cascaded as a 32-bit counter to count real time
-        * - count down from 4Gig-1 to 0 and wrap at IOCLK rate
-        */
-       TM45BR = TMTSCBR_MAX;
-
-       TM4MD = TM4MD_SRC_IOCLK;
-       TM4MD |= TM4MD_INIT_COUNTER;
-       TM4MD &= ~TM4MD_INIT_COUNTER;
-       TM4ICR = 0;
-
-       TM5MD = TM5MD_SRC_TM4CASCADE;
-       TM5MD |= TM5MD_INIT_COUNTER;
-       TM5MD &= ~TM5MD_INIT_COUNTER;
-       TM5ICR = 0;
-
-       TM5MD |= TM5MD_COUNT_ENABLE;
-       TM4MD |= TM4MD_COUNT_ENABLE;
-}
-
-static inline void shutdown_timestamp_counter(void)
-{
-       TM4MD = 0;
-       TM5MD = 0;
-}
-
-/*
- * we use a cascaded pair of 16-bit down-counting timers to count I/O
- * clock cycles for the purposes of time keeping
- */
-typedef unsigned long cycles_t;
-
-static inline cycles_t read_timestamp_counter(void)
-{
-       return (cycles_t) TMTSCBC;
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* _ASM_UNIT_TIMEX_H */
diff --git a/include/asm-mn10300/user.h b/include/asm-mn10300/user.h
deleted file mode 100644 (file)
index e119390..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/* MN10300 User process data
- *
- * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#ifndef _ASM_USER_H
-#define _ASM_USER_H
-
-#include <asm/page.h>
-#include <linux/ptrace.h>
-
-#ifndef __ASSEMBLY__
-/*
- * When the kernel dumps core, it starts by dumping the user struct - this will
- * be used by gdb to figure out where the data and stack segments are within
- * the file, and what virtual addresses to use.
- */
-struct user {
-       /* We start with the registers, to mimic the way that "memory" is
-        * returned from the ptrace(3,...) function.
-        */
-       struct pt_regs regs;            /* Where the registers are actually stored */
-
-       /* The rest of this junk is to help gdb figure out what goes where */
-       unsigned long int u_tsize;      /* Text segment size (pages). */
-       unsigned long int u_dsize;      /* Data segment size (pages). */
-       unsigned long int u_ssize;      /* Stack segment size (pages). */
-       unsigned long start_code;       /* Starting virtual address of text. */
-       unsigned long start_stack;      /* Starting virtual address of stack area.
-                                          This is actually the bottom of the stack,
-                                          the top of the stack is always found in the
-                                          esp register.  */
-       long int signal;                /* Signal that caused the core dump. */
-       int reserved;                   /* No longer used */
-       struct user_pt_regs *u_ar0;     /* Used by gdb to help find the values for */
-
-       /* the registers */
-       unsigned long magic;            /* To uniquely identify a core file */
-       char u_comm[32];                /* User command that was responsible */
-};
-#endif
-
-#define NBPG PAGE_SIZE
-#define UPAGES 1
-#define HOST_TEXT_START_ADDR   +(u.start_code)
-#define HOST_STACK_END_ADDR    +(u.start_stack + u.u_ssize * NBPG)
-
-#endif /* _ASM_USER_H */
diff --git a/include/asm-mn10300/vga.h b/include/asm-mn10300/vga.h
deleted file mode 100644 (file)
index 0163e50..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* MN10300 VGA register definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-
-#ifndef _ASM_VGA_H
-#define _ASM_VGA_H
-
-
-
-#endif /* _ASM_VGA_H */
diff --git a/include/asm-mn10300/xor.h b/include/asm-mn10300/xor.h
deleted file mode 100644 (file)
index c82eb12..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/xor.h>
index 4864a43b2b456e90c327644495f2b66011489479..c3021105edc076ab2114e60bd7335c7e7144e2f8 100644 (file)
@@ -377,7 +377,21 @@ struct cpu_vfs_cap_data {
 #define CAP_FOR_EACH_U32(__capi)  \
        for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi)
 
+/*
+ * CAP_FS_MASK and CAP_NFSD_MASKS:
+ *
+ * The fs mask is all the privileges that fsuid==0 historically meant.
+ * At one time in the past, that included CAP_MKNOD and CAP_LINUX_IMMUTABLE.
+ *
+ * It has never meant setting security.* and trusted.* xattrs.
+ *
+ * We could also define fsmask as follows:
+ *   1. CAP_FS_MASK is the privilege to bypass all fs-related DAC permissions
+ *   2. The security.* and trusted.* xattrs are fs-related MAC permissions
+ */
+
 # define CAP_FS_MASK_B0     (CAP_TO_MASK(CAP_CHOWN)            \
+                           | CAP_TO_MASK(CAP_MKNOD)            \
                            | CAP_TO_MASK(CAP_DAC_OVERRIDE)     \
                            | CAP_TO_MASK(CAP_DAC_READ_SEARCH)  \
                            | CAP_TO_MASK(CAP_FOWNER)           \
@@ -392,11 +406,12 @@ struct cpu_vfs_cap_data {
 # define CAP_EMPTY_SET    ((kernel_cap_t){{ 0, 0 }})
 # define CAP_FULL_SET     ((kernel_cap_t){{ ~0, ~0 }})
 # define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
-# define CAP_FS_SET       ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } })
+# define CAP_FS_SET       ((kernel_cap_t){{ CAP_FS_MASK_B0 \
+                                   | CAP_TO_MASK(CAP_LINUX_IMMUTABLE), \
+                                   CAP_FS_MASK_B1 } })
 # define CAP_NFSD_SET     ((kernel_cap_t){{ CAP_FS_MASK_B0 \
-                                           | CAP_TO_MASK(CAP_SYS_RESOURCE) \
-                                           | CAP_TO_MASK(CAP_MKNOD), \
-                                           CAP_FS_MASK_B1 } })
+                                   | CAP_TO_MASK(CAP_SYS_RESOURCE), \
+                                   CAP_FS_MASK_B1 } })
 
 #endif /* _KERNEL_CAPABILITY_U32S != 2 */
 
index 096476f1fb356a2c17ab5d267be9a2295f55295a..493dedb7a67ba17a67c47540bc1f188fc097c44e 100644 (file)
@@ -2,12 +2,19 @@
 #define __LINUX_DEBUG_LOCKING_H
 
 #include <linux/kernel.h>
+#include <asm/atomic.h>
 
 struct task_struct;
 
 extern int debug_locks;
 extern int debug_locks_silent;
 
+
+static inline int __debug_locks_off(void)
+{
+       return xchg(&debug_locks, 0);
+}
+
 /*
  * Generic 'turn off all lock debugging' function:
  */
index 00ee11eb9092994aa7317dcf7d24ec1357a48c09..ad258059603380fdd2faa1eacaa455eb6795bdd4 100644 (file)
@@ -274,7 +274,7 @@ struct i2c_board_info {
  * are provided using conventional syntax.
  */
 #define I2C_BOARD_INFO(dev_type, dev_addr) \
-       .type = (dev_type), .addr = (dev_addr)
+       .type = dev_type, .addr = (dev_addr)
 
 
 /* Add-on boards should register/unregister their devices; e.g. a board
index a5d26f66ef78b3b784b7ceebe32b459c09af4963..ff65fffb078f6e9475983190da859bfecb942740 100644 (file)
@@ -239,66 +239,39 @@ typedef enum {
        ide_started,    /* a drive operation was started, handler was set */
 } ide_startstop_t;
 
+enum {
+       IDE_VALID_ERROR                 = (1 << 1),
+       IDE_VALID_FEATURE               = IDE_VALID_ERROR,
+       IDE_VALID_NSECT                 = (1 << 2),
+       IDE_VALID_LBAL                  = (1 << 3),
+       IDE_VALID_LBAM                  = (1 << 4),
+       IDE_VALID_LBAH                  = (1 << 5),
+       IDE_VALID_DEVICE                = (1 << 6),
+       IDE_VALID_LBA                   = IDE_VALID_LBAL |
+                                         IDE_VALID_LBAM |
+                                         IDE_VALID_LBAH,
+       IDE_VALID_OUT_TF                = IDE_VALID_FEATURE |
+                                         IDE_VALID_NSECT |
+                                         IDE_VALID_LBA,
+       IDE_VALID_IN_TF                 = IDE_VALID_NSECT |
+                                         IDE_VALID_LBA,
+       IDE_VALID_OUT_HOB               = IDE_VALID_OUT_TF,
+       IDE_VALID_IN_HOB                = IDE_VALID_ERROR |
+                                         IDE_VALID_NSECT |
+                                         IDE_VALID_LBA,
+};
+
 enum {
        IDE_TFLAG_LBA48                 = (1 << 0),
-       IDE_TFLAG_OUT_HOB_FEATURE       = (1 << 1),
-       IDE_TFLAG_OUT_HOB_NSECT         = (1 << 2),
-       IDE_TFLAG_OUT_HOB_LBAL          = (1 << 3),
-       IDE_TFLAG_OUT_HOB_LBAM          = (1 << 4),
-       IDE_TFLAG_OUT_HOB_LBAH          = (1 << 5),
-       IDE_TFLAG_OUT_HOB               = IDE_TFLAG_OUT_HOB_FEATURE |
-                                         IDE_TFLAG_OUT_HOB_NSECT |
-                                         IDE_TFLAG_OUT_HOB_LBAL |
-                                         IDE_TFLAG_OUT_HOB_LBAM |
-                                         IDE_TFLAG_OUT_HOB_LBAH,
-       IDE_TFLAG_OUT_FEATURE           = (1 << 6),
-       IDE_TFLAG_OUT_NSECT             = (1 << 7),
-       IDE_TFLAG_OUT_LBAL              = (1 << 8),
-       IDE_TFLAG_OUT_LBAM              = (1 << 9),
-       IDE_TFLAG_OUT_LBAH              = (1 << 10),
-       IDE_TFLAG_OUT_TF                = IDE_TFLAG_OUT_FEATURE |
-                                         IDE_TFLAG_OUT_NSECT |
-                                         IDE_TFLAG_OUT_LBAL |
-                                         IDE_TFLAG_OUT_LBAM |
-                                         IDE_TFLAG_OUT_LBAH,
-       IDE_TFLAG_OUT_DEVICE            = (1 << 11),
-       IDE_TFLAG_WRITE                 = (1 << 12),
-       IDE_TFLAG_CUSTOM_HANDLER        = (1 << 13),
-       IDE_TFLAG_DMA_PIO_FALLBACK      = (1 << 14),
-       IDE_TFLAG_IN_HOB_ERROR          = (1 << 15),
-       IDE_TFLAG_IN_HOB_NSECT          = (1 << 16),
-       IDE_TFLAG_IN_HOB_LBAL           = (1 << 17),
-       IDE_TFLAG_IN_HOB_LBAM           = (1 << 18),
-       IDE_TFLAG_IN_HOB_LBAH           = (1 << 19),
-       IDE_TFLAG_IN_HOB_LBA            = IDE_TFLAG_IN_HOB_LBAL |
-                                         IDE_TFLAG_IN_HOB_LBAM |
-                                         IDE_TFLAG_IN_HOB_LBAH,
-       IDE_TFLAG_IN_HOB                = IDE_TFLAG_IN_HOB_ERROR |
-                                         IDE_TFLAG_IN_HOB_NSECT |
-                                         IDE_TFLAG_IN_HOB_LBA,
-       IDE_TFLAG_IN_ERROR              = (1 << 20),
-       IDE_TFLAG_IN_NSECT              = (1 << 21),
-       IDE_TFLAG_IN_LBAL               = (1 << 22),
-       IDE_TFLAG_IN_LBAM               = (1 << 23),
-       IDE_TFLAG_IN_LBAH               = (1 << 24),
-       IDE_TFLAG_IN_LBA                = IDE_TFLAG_IN_LBAL |
-                                         IDE_TFLAG_IN_LBAM |
-                                         IDE_TFLAG_IN_LBAH,
-       IDE_TFLAG_IN_TF                 = IDE_TFLAG_IN_NSECT |
-                                         IDE_TFLAG_IN_LBA,
-       IDE_TFLAG_IN_DEVICE             = (1 << 25),
-       IDE_TFLAG_HOB                   = IDE_TFLAG_OUT_HOB |
-                                         IDE_TFLAG_IN_HOB,
-       IDE_TFLAG_TF                    = IDE_TFLAG_OUT_TF |
-                                         IDE_TFLAG_IN_TF,
-       IDE_TFLAG_DEVICE                = IDE_TFLAG_OUT_DEVICE |
-                                         IDE_TFLAG_IN_DEVICE,
+       IDE_TFLAG_WRITE                 = (1 << 1),
+       IDE_TFLAG_CUSTOM_HANDLER        = (1 << 2),
+       IDE_TFLAG_DMA_PIO_FALLBACK      = (1 << 3),
        /* force 16-bit I/O operations */
-       IDE_TFLAG_IO_16BIT              = (1 << 26),
+       IDE_TFLAG_IO_16BIT              = (1 << 4),
        /* struct ide_cmd was allocated using kmalloc() */
-       IDE_TFLAG_DYN                   = (1 << 27),
-       IDE_TFLAG_FS                    = (1 << 28),
-       IDE_TFLAG_MULTI_PIO             = (1 << 29),
+       IDE_TFLAG_DYN                   = (1 << 5),
+       IDE_TFLAG_FS                    = (1 << 6),
+       IDE_TFLAG_MULTI_PIO             = (1 << 7),
 };
 
 enum {
@@ -309,45 +282,34 @@ enum {
 };
 
 struct ide_taskfile {
-       u8      hob_data;       /*  0: high data byte (for TASKFILE IOCTL) */
-                               /*  1-5: additional data to support LBA48 */
-       union {
-               u8 hob_error;   /*   read: error */
-               u8 hob_feature; /*  write: feature */
-       };
-
-       u8      hob_nsect;
-       u8      hob_lbal;
-       u8      hob_lbam;
-       u8      hob_lbah;
-
-       u8      data;           /*  6: low data byte (for TASKFILE IOCTL) */
-
-       union {                 /* Â 7: */
-               u8 error;       /*   read:  error */
-               u8 feature;     /*  write: feature */
+       u8      data;           /* 0: data byte (for TASKFILE ioctl) */
+       union {                 /* 1: */
+               u8 error;       /*  read: error */
+               u8 feature;     /* write: feature */
        };
-
-       u8      nsect;          /*  8: number of sectors */
-       u8      lbal;           /*  9: LBA low */
-       u8      lbam;           /* 10: LBA mid */
-       u8      lbah;           /* 11: LBA high */
-
-       u8      device;         /* 12: device select */
-
-       union {                 /* 13: */
-               u8 status;      /* Â read: status Â */
+       u8      nsect;          /* 2: number of sectors */
+       u8      lbal;           /* 3: LBA low */
+       u8      lbam;           /* 4: LBA mid */
+       u8      lbah;           /* 5: LBA high */
+       u8      device;         /* 6: device select */
+       union {                 /* 7: */
+               u8 status;      /*  read: status */
                u8 command;     /* write: command */
        };
 };
 
 struct ide_cmd {
-       union {
-               struct ide_taskfile     tf;
-               u8                      tf_array[14];
-       };
+       struct ide_taskfile     tf;
+       struct ide_taskfile     hob;
+       struct {
+               struct {
+                       u8              tf;
+                       u8              hob;
+               } out, in;
+       } valid;
+
+       u8                      tf_flags;
        u8                      ftf_flags;      /* for TASKFILE ioctl */
-       u32                     tf_flags;
        int                     protocol;
 
        int                     sg_nents;         /* number of sg entries */
@@ -662,8 +624,8 @@ struct ide_tp_ops {
        void    (*write_devctl)(struct hwif_s *, u8);
 
        void    (*dev_select)(ide_drive_t *);
-       void    (*tf_load)(ide_drive_t *, struct ide_cmd *);
-       void    (*tf_read)(ide_drive_t *, struct ide_cmd *);
+       void    (*tf_load)(ide_drive_t *, struct ide_taskfile *, u8);
+       void    (*tf_read)(ide_drive_t *, struct ide_taskfile *, u8);
 
        void    (*input_data)(ide_drive_t *, struct ide_cmd *,
                              void *, unsigned int);
@@ -1162,7 +1124,8 @@ extern int ide_devset_execute(ide_drive_t *drive,
 void ide_complete_cmd(ide_drive_t *, struct ide_cmd *, u8, u8);
 int ide_complete_rq(ide_drive_t *, int, unsigned int);
 
-void ide_tf_dump(const char *, struct ide_taskfile *);
+void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd);
+void ide_tf_dump(const char *, struct ide_cmd *);
 
 void ide_exec_command(ide_hwif_t *, u8);
 u8 ide_read_status(ide_hwif_t *);
@@ -1170,8 +1133,8 @@ u8 ide_read_altstatus(ide_hwif_t *);
 void ide_write_devctl(ide_hwif_t *, u8);
 
 void ide_dev_select(ide_drive_t *);
-void ide_tf_load(ide_drive_t *, struct ide_cmd *);
-void ide_tf_read(ide_drive_t *, struct ide_cmd *);
+void ide_tf_load(ide_drive_t *, struct ide_taskfile *, u8);
+void ide_tf_read(ide_drive_t *, struct ide_taskfile *, u8);
 
 void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
 void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
@@ -1529,7 +1492,7 @@ static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data)
 
 extern void ide_toggle_bounce(ide_drive_t *drive, int on);
 
-u64 ide_get_lba_addr(struct ide_taskfile *, int);
+u64 ide_get_lba_addr(struct ide_cmd *, int);
 u8 ide_dump_status(ide_drive_t *, const char *, u8);
 
 struct ide_timing {
index ee5615d6521105b1ec527a0e7f12b8793cbd4de8..cfda2d5ad319e75c8bf88b262d1b95bae8f3a2a6 100644 (file)
@@ -168,4 +168,56 @@ static inline void free_percpu(void *p)
 #define alloc_percpu(type)     (type *)__alloc_percpu(sizeof(type), \
                                                       __alignof__(type))
 
+/*
+ * Optional methods for optimized non-lvalue per-cpu variable access.
+ *
+ * @var can be a percpu variable or a field of it and its size should
+ * equal char, int or long.  percpu_read() evaluates to a lvalue and
+ * all others to void.
+ *
+ * These operations are guaranteed to be atomic w.r.t. preemption.
+ * The generic versions use plain get/put_cpu_var().  Archs are
+ * encouraged to implement single-instruction alternatives which don't
+ * require preemption protection.
+ */
+#ifndef percpu_read
+# define percpu_read(var)                                              \
+  ({                                                                   \
+       typeof(per_cpu_var(var)) __tmp_var__;                           \
+       __tmp_var__ = get_cpu_var(var);                                 \
+       put_cpu_var(var);                                               \
+       __tmp_var__;                                                    \
+  })
+#endif
+
+#define __percpu_generic_to_op(var, val, op)                           \
+do {                                                                   \
+       get_cpu_var(var) op val;                                        \
+       put_cpu_var(var);                                               \
+} while (0)
+
+#ifndef percpu_write
+# define percpu_write(var, val)                __percpu_generic_to_op(var, (val), =)
+#endif
+
+#ifndef percpu_add
+# define percpu_add(var, val)          __percpu_generic_to_op(var, (val), +=)
+#endif
+
+#ifndef percpu_sub
+# define percpu_sub(var, val)          __percpu_generic_to_op(var, (val), -=)
+#endif
+
+#ifndef percpu_and
+# define percpu_and(var, val)          __percpu_generic_to_op(var, (val), &=)
+#endif
+
+#ifndef percpu_or
+# define percpu_or(var, val)           __percpu_generic_to_op(var, (val), |=)
+#endif
+
+#ifndef percpu_xor
+# define percpu_xor(var, val)          __percpu_generic_to_op(var, (val), ^=)
+#endif
+
 #endif /* __LINUX_PERCPU_H */
index 05f014efa32c54ca48a17f166ff40fda87f78a3f..e797812a4d95f164bb377447a62de3089c0ba182 100644 (file)
@@ -2388,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
        blocking_notifier_call_chain(&module_notify_list,
                                     MODULE_STATE_LIVE, mod);
 
+       /* We need to finish all async code before the module init sequence is done */
+       async_synchronize_full();
+
        mutex_lock(&module_mutex);
        /* Drop initial reference. */
        module_put(mod);
index 5d79781394a306e75048668262a6c3f49f5321ef..507cf2b5e9f1e6328b2e335a3a05c0ead6a0ff3e 100644 (file)
@@ -148,7 +148,8 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
 
        preempt_disable();
        mutex_acquire(&lock->dep_map, subclass, 0, ip);
-#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES)
+#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) && \
+    !defined(CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES)
        /*
         * Optimistic spinning.
         *
index 3fd8c5bf8b394dd94fee9ce22fa8c20135c76c4f..934fb377f4b328a4821e56a23051ca330647e74e 100644 (file)
@@ -213,8 +213,16 @@ unsigned long get_taint(void)
 
 void add_taint(unsigned flag)
 {
-       /* can't trust the integrity of the kernel anymore: */
-       debug_locks = 0;
+       /*
+        * Can't trust the integrity of the kernel anymore.
+        * We don't call directly debug_locks_off() because the issue
+        * is not necessarily serious enough to set oops_in_progress to 1
+        * Also we want to keep up lockdep for staging development and
+        * post-warning case.
+        */
+       if (flag != TAINT_CRAP && flag != TAINT_WARN && __debug_locks_off())
+               printk(KERN_WARNING "Disabling lockdep due to kernel taint\n");
+
        set_bit(flag, &tainted_mask);
 }
 EXPORT_SYMBOL(add_taint);
index 0218b4693dd8c250f83c741bf6ffbfbbca31f94b..bc3b11731b9ce4160ff770058f9ebc440c441351 100644 (file)
@@ -36,7 +36,7 @@ int debug_locks_silent;
  */
 int debug_locks_off(void)
 {
-       if (xchg(&debug_locks, 0)) {
+       if (__debug_locks_off()) {
                if (!debug_locks_silent) {
                        oops_in_progress = 1;
                        console_verbose();
index 09e2406f3b78eeb78be3fe99c712f3e19d08f0e2..b939fbd0119539f38b6c4f34e211223d9d8b4a45 100644 (file)
@@ -1,7 +1,6 @@
 #
 # Generated files
 #
-ihex2fw
 conmakehash
 kallsyms
 pnmtologo
index 035182e16afb732d40b05c5a55df4ac79e6d2a96..aafdf064feefdf49bc98d66c72199907e30ca921 100644 (file)
@@ -2,12 +2,11 @@
 # scripts contains sources for various helper programs used throughout
 # the kernel for the build process.
 # ---------------------------------------------------------------------------
-# ihex2fw:       Parser/loader for IHEX formatted data
 # kallsyms:      Find all symbols in vmlinux
 # pnmttologo:    Convert pnm files to logo files
+# conmakehash:   Create chartable
 # conmakehash:  Create arrays for initializing the kernel console tables
 
-hostprogs-y                      := ihex2fw
 hostprogs-$(CONFIG_KALLSYMS)     += kallsyms
 hostprogs-$(CONFIG_LOGO)         += pnmtologo
 hostprogs-$(CONFIG_VT)           += conmakehash
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
new file mode 100755 (executable)
index 0000000..60dc0c4
--- /dev/null
@@ -0,0 +1,515 @@
+#!/usr/bin/perl -w
+# (c) 2007, Joe Perches <joe@perches.com>
+#           created from checkpatch.pl
+#
+# Print selected MAINTAINERS information for
+# the files modified in a patch or for a file
+#
+# usage: perl scripts/get_maintainers.pl [OPTIONS] <patch>
+#        perl scripts/get_maintainers.pl [OPTIONS] -f <file>
+#
+# Licensed under the terms of the GNU GPL License version 2
+
+use strict;
+
+my $P = $0;
+my $V = '0.15';
+
+use Getopt::Long qw(:config no_auto_abbrev);
+
+my $lk_path = "./";
+my $email = 1;
+my $email_usename = 1;
+my $email_maintainer = 1;
+my $email_list = 1;
+my $email_subscriber_list = 0;
+my $email_git = 1;
+my $email_git_penguin_chiefs = 0;
+my $email_git_min_signatures = 1;
+my $email_git_max_maintainers = 5;
+my $email_git_since = "1-year-ago";
+my $output_multiline = 1;
+my $output_separator = ", ";
+my $scm = 0;
+my $web = 0;
+my $subsystem = 0;
+my $status = 0;
+my $from_filename = 0;
+my $version = 0;
+my $help = 0;
+
+my $exit = 0;
+
+my @penguin_chief = ();
+push(@penguin_chief,"Linus Torvalds:torvalds\@linux-foundation.org");
+#Andrew wants in on most everything - 2009/01/14
+#push(@penguin_chief,"Andrew Morton:akpm\@linux-foundation.org");
+
+my @penguin_chief_names = ();
+foreach my $chief (@penguin_chief) {
+    if ($chief =~ m/^(.*):(.*)/) {
+       my $chief_name = $1;
+       my $chief_addr = $2;
+       push(@penguin_chief_names, $chief_name);
+    }
+}
+my $penguin_chiefs = "\(" . join("|",@penguin_chief_names) . "\)";
+
+if (!GetOptions(
+               'email!' => \$email,
+               'git!' => \$email_git,
+               'git-chief-penguins!' => \$email_git_penguin_chiefs,
+               'git-min-signatures=i' => \$email_git_min_signatures,
+               'git-max-maintainers=i' => \$email_git_max_maintainers,
+               'git-since=s' => \$email_git_since,
+               'm!' => \$email_maintainer,
+               'n!' => \$email_usename,
+               'l!' => \$email_list,
+               's!' => \$email_subscriber_list,
+               'multiline!' => \$output_multiline,
+               'separator=s' => \$output_separator,
+               'subsystem!' => \$subsystem,
+               'status!' => \$status,
+               'scm!' => \$scm,
+               'web!' => \$web,
+               'f|file' => \$from_filename,
+               'v|version' => \$version,
+               'h|help' => \$help,
+               )) {
+    usage();
+    die "$P: invalid argument\n";
+}
+
+if ($help != 0) {
+    usage();
+    exit 0;
+}
+
+if ($version != 0) {
+    print("${P} ${V}\n");
+    exit 0;
+}
+
+if ($#ARGV < 0) {
+    usage();
+    die "$P: argument missing: patchfile or -f file please\n";
+}
+
+my $selections = $email + $scm + $status + $subsystem + $web;
+if ($selections == 0) {
+    usage();
+    die "$P:  Missing required option: email, scm, status, subsystem or web\n";
+}
+
+if ($email && ($email_maintainer + $email_list + $email_subscriber_list
+              + $email_git + $email_git_penguin_chiefs) == 0) {
+    usage();
+    die "$P: Please select at least 1 email option\n";
+}
+
+if (!top_of_kernel_tree($lk_path)) {
+    die "$P: The current directory does not appear to be "
+       . "a linux kernel source tree.\n";
+}
+
+## Read MAINTAINERS for type/value pairs
+
+my @typevalue = ();
+open(MAINT, "<${lk_path}MAINTAINERS") || die "$P: Can't open MAINTAINERS\n";
+while (<MAINT>) {
+    my $line = $_;
+
+    if ($line =~ m/^(\C):\s*(.*)/) {
+       my $type = $1;
+       my $value = $2;
+
+       ##Filename pattern matching
+       if ($type eq "F" || $type eq "X") {
+           $value =~ s@\.@\\\.@g;       ##Convert . to \.
+           $value =~ s/\*/\.\*/g;       ##Convert * to .*
+           $value =~ s/\?/\./g;         ##Convert ? to .
+       }
+       push(@typevalue, "$type:$value");
+    } elsif (!/^(\s)*$/) {
+       $line =~ s/\n$//g;
+       push(@typevalue, $line);
+    }
+}
+close(MAINT);
+
+## use the filenames on the command line or find the filenames in the patchfiles
+
+my @files = ();
+
+foreach my $file (@ARGV) {
+    next if ((-d $file));
+    if (!(-f $file)) {
+       die "$P: file '${file}' not found\n";
+    }
+    if ($from_filename) {
+       push(@files, $file);
+    } else {
+       my $file_cnt = @files;
+       open(PATCH, "<$file") or die "$P: Can't open ${file}\n";
+       while (<PATCH>) {
+           if (m/^\+\+\+\s+(\S+)/) {
+               my $filename = $1;
+               $filename =~ s@^[^/]*/@@;
+               $filename =~ s@\n@@;
+               push(@files, $filename);
+           }
+       }
+       close(PATCH);
+       if ($file_cnt == @files) {
+           die "$P: file '${file}' doesn't appear to be a patch.  "
+               . "Add -f to options?\n";
+       }
+       @files = sort_and_uniq(@files);
+    }
+}
+
+my @email_to = ();
+my @scm = ();
+my @web = ();
+my @subsystem = ();
+my @status = ();
+
+# Find responsible parties
+
+foreach my $file (@files) {
+
+#Do not match excluded file patterns
+
+    my $exclude = 0;
+    foreach my $line (@typevalue) {
+       if ($line =~ m/^(\C):(.*)/) {
+           my $type = $1;
+           my $value = $2;
+           if ($type eq 'X') {
+               if (file_match_pattern($file, $value)) {
+                   $exclude = 1;
+               }
+           }
+       }
+    }
+
+    if (!$exclude) {
+       my $tvi = 0;
+       foreach my $line (@typevalue) {
+           if ($line =~ m/^(\C):(.*)/) {
+               my $type = $1;
+               my $value = $2;
+               if ($type eq 'F') {
+                   if (file_match_pattern($file, $value)) {
+                       add_categories($tvi);
+                   }
+               }
+           }
+           $tvi++;
+       }
+    }
+
+    if ($email && $email_git) {
+       recent_git_signoffs($file);
+    }
+
+}
+
+if ($email_git_penguin_chiefs) {
+    foreach my $chief (@penguin_chief) {
+       if ($chief =~ m/^(.*):(.*)/) {
+           my $chief_name = $1;
+           my $chief_addr = $2;
+           if ($email_usename) {
+               push(@email_to, format_email($chief_name, $chief_addr));
+           } else {
+               push(@email_to, $chief_addr);
+           }
+       }
+    }
+}
+
+if ($email) {
+    my $address_cnt = @email_to;
+    if ($address_cnt == 0 && $email_list) {
+       push(@email_to, "linux-kernel\@vger.kernel.org");
+    }
+
+#Don't sort email address list, but do remove duplicates
+    @email_to = uniq(@email_to);
+    output(@email_to);
+}
+
+if ($scm) {
+    @scm = sort_and_uniq(@scm);
+    output(@scm);
+}
+
+if ($status) {
+    @status = sort_and_uniq(@status);
+    output(@status);
+}
+
+if ($subsystem) {
+    @subsystem = sort_and_uniq(@subsystem);
+    output(@subsystem);
+}
+
+if ($web) {
+    @web = sort_and_uniq(@web);
+    output(@web);
+}
+
+exit($exit);
+
+sub file_match_pattern {
+    my ($file, $pattern) = @_;
+    if (substr($pattern, -1) eq "/") {
+       if ($file =~ m@^$pattern@) {
+           return 1;
+       }
+    } else {
+       if ($file =~ m@^$pattern@) {
+           my $s1 = ($file =~ tr@/@@);
+           my $s2 = ($pattern =~ tr@/@@);
+           if ($s1 == $s2) {
+               return 1;
+           }
+       }
+    }
+    return 0;
+}
+
+sub usage {
+    print <<EOT;
+usage: $P [options] patchfile
+       $P [options] -f file
+version: $V
+
+MAINTAINER field selection options:
+  --email => print email address(es) if any
+    --git => include recent git \*-by: signers
+    --git-chief-penguins => include ${penguin_chiefs}
+    --git-min-signatures => number of signatures required (default: 1)
+    --git-max-maintainers => maximum maintainers to add (default: 5)
+    --git-since => git history to use (default: 1-year-ago)
+    --m => include maintainer(s) if any
+    --n => include name 'Full Name <addr\@domain.tld>'
+    --l => include list(s) if any
+    --s => include subscriber only list(s) if any
+  --scm => print SCM tree(s) if any
+  --status => print status if any
+  --subsystem => print subsystem name if any
+  --web => print website(s) if any
+
+Output type options:
+  --separator [, ] => separator for multiple entries on 1 line
+  --multiline => print 1 entry per line
+
+Default options:
+  [--email --git --m --l --multiline]
+
+Other options:
+  --version -> show version
+  --help => show this help information
+
+EOT
+}
+
+sub top_of_kernel_tree {
+       my ($lk_path) = @_;
+
+       if ($lk_path ne "" && substr($lk_path,length($lk_path)-1,1) ne "/") {
+           $lk_path .= "/";
+       }
+       if (   (-f "${lk_path}COPYING")
+           && (-f "${lk_path}CREDITS")
+           && (-f "${lk_path}Kbuild")
+           && (-f "${lk_path}MAINTAINERS")
+           && (-f "${lk_path}Makefile")
+           && (-f "${lk_path}README")
+           && (-d "${lk_path}Documentation")
+           && (-d "${lk_path}arch")
+           && (-d "${lk_path}include")
+           && (-d "${lk_path}drivers")
+           && (-d "${lk_path}fs")
+           && (-d "${lk_path}init")
+           && (-d "${lk_path}ipc")
+           && (-d "${lk_path}kernel")
+           && (-d "${lk_path}lib")
+           && (-d "${lk_path}scripts")) {
+               return 1;
+       }
+       return 0;
+}
+
+sub format_email {
+    my ($name, $email) = @_;
+
+    $name =~ s/^\s+|\s+$//g;
+    $email =~ s/^\s+|\s+$//g;
+
+    my $formatted_email = "";
+
+    if ($name =~ /[^a-z0-9 \.\-]/i) {    ##has "must quote" chars
+       $name =~ s/(?<!\\)"/\\"/g;       ##escape quotes
+       $formatted_email = "\"${name}\"\ \<${email}\>";
+    } else {
+       $formatted_email = "${name} \<${email}\>";
+    }
+    return $formatted_email;
+}
+
+sub add_categories {
+    my ($index) = @_;
+
+    $index = $index - 1;
+    while ($index >= 0) {
+       my $tv = $typevalue[$index];
+       if ($tv =~ m/^(\C):(.*)/) {
+           my $ptype = $1;
+           my $pvalue = $2;
+           if ($ptype eq "L") {
+               my $subscr = $pvalue;
+               if ($subscr =~ m/\s*\(subscribers-only\)/) {
+                   if ($email_subscriber_list) {
+                       $subscr =~ s/\s*\(subscribers-only\)//g;
+                       push(@email_to, $subscr);
+                   }
+               } else {
+                   if ($email_list) {
+                       push(@email_to, $pvalue);
+                   }
+               }
+           } elsif ($ptype eq "M") {
+               if ($email_maintainer) {
+                   if ($index >= 0) {
+                       my $tv = $typevalue[$index - 1];
+                       if ($tv =~ m/^(\C):(.*)/) {
+                           if ($1 eq "P" && $email_usename) {
+                               push(@email_to, format_email($2, $pvalue));
+                           } else {
+                               push(@email_to, $pvalue);
+                           }
+                       }
+                   } else {
+                       push(@email_to, $pvalue);
+                   }
+               }
+           } elsif ($ptype eq "T") {
+               push(@scm, $pvalue);
+           } elsif ($ptype eq "W") {
+               push(@web, $pvalue);
+           } elsif ($ptype eq "S") {
+               push(@status, $pvalue);
+           }
+
+           $index--;
+       } else {
+           push(@subsystem,$tv);
+           $index = -1;
+       }
+    }
+}
+
+sub which {
+    my ($bin) = @_;
+
+    foreach my $path (split /:/, $ENV{PATH}) {
+       if (-e "$path/$bin") {
+           return "$path/$bin";
+       }
+    }
+
+    return "";
+}
+
+sub recent_git_signoffs {
+    my ($file) = @_;
+
+    my $sign_offs = "";
+    my $cmd = "";
+    my $output = "";
+    my $count = 0;
+    my @lines = ();
+
+    if (which("git") eq "") {
+       die("$P: git not found.  Add --nogit to options?\n");
+    }
+
+    $cmd = "git log --since=${email_git_since} -- ${file}";
+    $cmd .= " | grep -Pi \"^[-_        a-z]+by:.*\\\@\"";
+    if (!$email_git_penguin_chiefs) {
+       $cmd .= " | grep -Pv \"${penguin_chiefs}\"";
+    }
+    $cmd .= " | cut -f2- -d\":\"";
+    $cmd .= " | sed -e \"s/^\\s+//g\"";
+    $cmd .= " | sort | uniq -c | sort -rn";
+
+    $output = `${cmd}`;
+    $output =~ s/^\s*//gm;
+
+    @lines = split("\n", $output);
+    foreach my $line (@lines) {
+       if ($line =~ m/([0-9]+)\s+(.*)/) {
+           my $sign_offs = $1;
+           $line = $2;
+           $count++;
+           if ($sign_offs < $email_git_min_signatures ||
+               $count > $email_git_max_maintainers) {
+               last;
+           }
+       } else {
+           die("$P: Unexpected git output: ${line}\n");
+       }
+       if ($line =~ m/(.+)<(.+)>/) {
+           my $git_name = $1;
+           my $git_addr = $2;
+           $git_name =~ tr/^\"//;
+           $git_name =~ tr/^\\s*//;
+           $git_name =~ tr/\"$//;
+           $git_name =~ tr/\\s*$//;
+           if ($email_usename) {
+               push(@email_to, format_email($git_name, $git_addr));
+           } else {
+               push(@email_to, $git_addr);
+           }
+       } elsif ($line =~ m/<(.+)>/) {
+           my $git_addr = $1;
+           push(@email_to, $git_addr);
+       } else {
+           push(@email_to, $line);
+       }
+    }
+    return $output;
+}
+
+sub uniq {
+    my @parms = @_;
+
+    my %saw;
+    @parms = grep(!$saw{$_}++, @parms);
+    return @parms;
+}
+
+sub sort_and_uniq {
+    my @parms = @_;
+
+    my %saw;
+    @parms = sort @parms;
+    @parms = grep(!$saw{$_}++, @parms);
+    return @parms;
+}
+
+sub output {
+    my @parms = @_;
+
+    if ($output_multiline) {
+       foreach my $line (@parms) {
+           print("${line}\n");
+       }
+    } else {
+       print(join($output_separator, @parms));
+       print("\n");
+    }
+}
diff --git a/scripts/ihex2fw.c b/scripts/ihex2fw.c
deleted file mode 100644 (file)
index 8f7fdaa..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Parser/loader for IHEX formatted data.
- *
- * Copyright Â© 2008 David Woodhouse <dwmw2@infradead.org>
- * Copyright Â© 2005 Jan Harkes <jaharkes@cs.cmu.edu>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <stdint.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-
-struct ihex_binrec {
-       struct ihex_binrec *next; /* not part of the real data structure */
-        uint32_t addr;
-        uint16_t len;
-        uint8_t data[];
-};
-
-/**
- * nybble/hex are little helpers to parse hexadecimal numbers to a byte value
- **/
-static uint8_t nybble(const uint8_t n)
-{
-       if      (n >= '0' && n <= '9') return n - '0';
-       else if (n >= 'A' && n <= 'F') return n - ('A' - 10);
-       else if (n >= 'a' && n <= 'f') return n - ('a' - 10);
-       return 0;
-}
-
-static uint8_t hex(const uint8_t *data, uint8_t *crc)
-{
-       uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);
-       *crc += val;
-       return val;
-}
-
-static int process_ihex(uint8_t *data, ssize_t size);
-static void file_record(struct ihex_binrec *record);
-static int output_records(int outfd);
-
-static int sort_records = 0;
-static int wide_records = 0;
-
-int usage(void)
-{
-       fprintf(stderr, "ihex2fw: Convert ihex files into binary "
-               "representation for use by Linux kernel\n");
-       fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
-       fprintf(stderr, "       -w: wide records (16-bit length)\n");
-       fprintf(stderr, "       -s: sort records by address\n");
-       return 1;
-}
-
-int main(int argc, char **argv)
-{
-       int infd, outfd;
-       struct stat st;
-       uint8_t *data;
-       int opt;
-
-       while ((opt = getopt(argc, argv, "ws")) != -1) {
-               switch (opt) {
-               case 'w':
-                       wide_records = 1;
-                       break;
-               case 's':
-                       sort_records = 1;
-                       break;
-               default:
-                       return usage();
-               }
-       }
-
-       if (optind + 2 != argc)
-               return usage();
-
-       if (!strcmp(argv[optind], "-"))
-           infd = 0;
-       else
-               infd = open(argv[optind], O_RDONLY);
-       if (infd == -1) {
-               fprintf(stderr, "Failed to open source file: %s",
-                       strerror(errno));
-               return usage();
-       }
-       if (fstat(infd, &st)) {
-               perror("stat");
-               return 1;
-       }
-       data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
-       if (data == MAP_FAILED) {
-               perror("mmap");
-               return 1;
-       }
-
-       if (!strcmp(argv[optind+1], "-"))
-           outfd = 1;
-       else
-               outfd = open(argv[optind+1], O_TRUNC|O_CREAT|O_WRONLY, 0644);
-       if (outfd == -1) {
-               fprintf(stderr, "Failed to open destination file: %s",
-                       strerror(errno));
-               return usage();
-       }
-       if (process_ihex(data, st.st_size))
-               return 1;
-
-       output_records(outfd);
-       return 0;
-}
-
-static int process_ihex(uint8_t *data, ssize_t size)
-{
-       struct ihex_binrec *record;
-       uint32_t offset = 0;
-       uint8_t type, crc = 0, crcbyte = 0;
-       int i, j;
-       int line = 1;
-       int len;
-
-       i = 0;
-next_record:
-       /* search for the start of record character */
-       while (i < size) {
-               if (data[i] == '\n') line++;
-               if (data[i++] == ':') break;
-       }
-
-       /* Minimum record length would be about 10 characters */
-       if (i + 10 > size) {
-               fprintf(stderr, "Can't find valid record at line %d\n", line);
-               return -EINVAL;
-       }
-
-       len = hex(data + i, &crc); i += 2;
-       if (wide_records) {
-               len <<= 8;
-               len += hex(data + i, &crc); i += 2;
-       }
-       record = malloc((sizeof (*record) + len + 3) & ~3);
-       if (!record) {
-               fprintf(stderr, "out of memory for records\n");
-               return -ENOMEM;
-       }
-       memset(record, 0, (sizeof(*record) + len + 3) & ~3);
-       record->len = len;
-
-       /* now check if we have enough data to read everything */
-       if (i + 8 + (record->len * 2) > size) {
-               fprintf(stderr, "Not enough data to read complete record at line %d\n",
-                       line);
-               return -EINVAL;
-       }
-
-       record->addr  = hex(data + i, &crc) << 8; i += 2;
-       record->addr |= hex(data + i, &crc); i += 2;
-       type = hex(data + i, &crc); i += 2;
-
-       for (j = 0; j < record->len; j++, i += 2)
-               record->data[j] = hex(data + i, &crc);
-
-       /* check CRC */
-       crcbyte = hex(data + i, &crc); i += 2;
-       if (crc != 0) {
-               fprintf(stderr, "CRC failure at line %d: got 0x%X, expected 0x%X\n",
-                       line, crcbyte, (unsigned char)(crcbyte-crc));
-               return -EINVAL;
-       }
-
-       /* Done reading the record */
-       switch (type) {
-       case 0:
-               /* old style EOF record? */
-               if (!record->len)
-                       break;
-
-               record->addr += offset;
-               file_record(record);
-               goto next_record;
-
-       case 1: /* End-Of-File Record */
-               if (record->addr || record->len) {
-                       fprintf(stderr, "Bad EOF record (type 01) format at line %d",
-                               line);
-                       return -EINVAL;
-               }
-               break;
-
-       case 2: /* Extended Segment Address Record (HEX86) */
-       case 4: /* Extended Linear Address Record (HEX386) */
-               if (record->addr || record->len != 2) {
-                       fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
-                               type, line);
-                       return -EINVAL;
-               }
-
-               /* We shouldn't really be using the offset for HEX86 because
-                * the wraparound case is specified quite differently. */
-               offset = record->data[0] << 8 | record->data[1];
-               offset <<= (type == 2 ? 4 : 16);
-               goto next_record;
-
-       case 3: /* Start Segment Address Record */
-       case 5: /* Start Linear Address Record */
-               if (record->addr || record->len != 4) {
-                       fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
-                               type, line);
-                       return -EINVAL;
-               }
-
-               /* These records contain the CS/IP or EIP where execution
-                * starts. Don't really know what to do with them. */
-               goto next_record;
-
-       default:
-               fprintf(stderr, "Unknown record (type %02X)\n", type);
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-static struct ihex_binrec *records;
-
-static void file_record(struct ihex_binrec *record)
-{
-       struct ihex_binrec **p = &records;
-
-       while ((*p) && (!sort_records || (*p)->addr < record->addr))
-               p = &((*p)->next);
-
-       record->next = *p;
-       *p = record;
-}
-
-static int output_records(int outfd)
-{
-       unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0};
-       struct ihex_binrec *p = records;
-
-       while (p) {
-               uint16_t writelen = (p->len + 9) & ~3;
-
-               p->addr = htonl(p->addr);
-               p->len = htons(p->len);
-               write(outfd, &p->addr, writelen);
-               p = p->next;
-       }
-       /* EOF record is zero length, since we don't bother to represent
-          the type field in the binary version */
-       write(outfd, zeroes, 6);
-       return 0;
-}
index c5c9a9218ff6ef3c209c7554c2c788eb3b516de2..c6942a4de99b3d5afebe9ec0961c961388a10c96 100644 (file)
@@ -395,16 +395,6 @@ config SND_WAVEFRONT
          To compile this driver as a module, choose M here: the module
          will be called snd-wavefront.
 
-config SND_WAVEFRONT_FIRMWARE_IN_KERNEL
-       bool "In-kernel firmware for Wavefront"
-       depends on SND_WAVEFRONT
-       default y
-       help
-         Say Y here to include the static firmware for FX DSP built in
-         the kernel for the Wavefront driver.  If you choose N here,
-         you need to install the firmware files from the
-         alsa-firmware package.
-
 config SND_MSND_PINNACLE
        tristate "Turtle Beach MultiSound Pinnacle/Fiji driver"
        depends on X86 && EXPERIMENTAL
index dfc449a2194e9795cb07cec10edf84af66b529ac..a4345fc0756198782b245468b3447cd36a6bc0b7 100644 (file)
 
 #define WAIT_IDLE      0xff
 
-#ifdef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
-#include "yss225.c"
-static const struct firmware yss225_registers_firmware = {
-       .data = (u8 *)yss225_registers,
-       .size = sizeof yss225_registers
-};
-#endif
-
 static int
 wavefront_fx_idle (snd_wavefront_t *dev)
 
@@ -260,16 +252,12 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
        if (dev->fx_initialized)
                return 0;
 
-#ifdef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
-       firmware = &yss225_registers_firmware;
-#else
        err = request_firmware(&firmware, "yamaha/yss225_registers.bin",
                               dev->card->dev);
        if (err < 0) {
                err = -1;
                goto out;
        }
-#endif
 
        for (i = 0; i + 1 < firmware->size; i += 2) {
                if (firmware->data[i] >= 8 && firmware->data[i] < 16) {
@@ -292,12 +280,8 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
        err = 0;
 
 out:
-#ifndef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
        release_firmware(firmware);
-#endif
        return err;
 }
 
-#ifndef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
 MODULE_FIRMWARE("yamaha/yss225_registers.bin");
-#endif
diff --git a/sound/isa/wavefront/yss225.c b/sound/isa/wavefront/yss225.c
deleted file mode 100644 (file)
index 9f6be3f..0000000
+++ /dev/null
@@ -1,2739 +0,0 @@
-/*
- *  Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
- *
- *  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
- */
-
-/* weird stuff, derived from port I/O tracing with dosemu */
-
-static const struct {
-       unsigned char addr;
-       unsigned char data;
-} yss225_registers[] __devinitdata = {
-/* Set all bits for all channels on the MOD unit to zero */
-{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
-
-/* XXX But why do this twice? */
-{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
-
-/* mute on */
-{ WAIT_IDLE }, { 0x8, 0x02 },
-
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 },
-
-/* either because of stupidity by TB's programmers, or because it
-   actually does something, rezero the MOD page. */
-{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
-{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
-
-/* load page zero */
-{ 0x9, 0x05 }, { 0xb, 0x00 }, { 0xa, 0x00 },
-
-{ 0xd, 0x01 }, { 0xc, 0x7c }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1e }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xf5 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x11 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x32 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x13 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x14 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x76 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x18 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0x1a }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0x17 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x10 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0xa0 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xd1 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0xf2 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x13 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xf4 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xe0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x15 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x16 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x17 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x50 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x71 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x92 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xb3 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xa0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xd4 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xf5 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x70 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0xa0 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x11 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x16 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x10 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x17 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1d }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xdf }, { WAIT_IDLE },
-
-/* Now load page one */
-{ 0x9, 0x05 }, { 0xb, 0x01 }, { 0xa, 0x00 },
-
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1f }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xd8 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x18 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0xfa }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1a }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xa0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xd7 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xf7 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1c }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x3c }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x3f }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xdf }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x5d }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x7d }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0x9e }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xbe }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xdb }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xdb }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xe0 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x02 }, { 0xa, 0x00 },
-
-{ 0xc, 0xc4 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x25 }, { WAIT_IDLE },
-{ 0xc, 0x01 }, { WAIT_IDLE },
-{ 0xc, 0x06 }, { WAIT_IDLE },
-{ 0xc, 0xc4 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x25 }, { WAIT_IDLE },
-{ 0xc, 0x01 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x04 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x04 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x05 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x44 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x03 }, { 0xa, 0x00 },
-
-{ 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x47 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x06 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x70 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x42 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x42 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x42 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x42 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x40 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x04 }, { 0xa, 0x00 },
-
-{ 0xc, 0x63 }, { WAIT_IDLE },
-{ 0xc, 0x03 }, { WAIT_IDLE },
-{ 0xc, 0x26 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x2c }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x24 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x2e }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x01 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x22 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x22 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x22 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x62 }, { WAIT_IDLE },
-{ 0xc, 0x02 }, { WAIT_IDLE },
-{ 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xc, 0x01 }, { WAIT_IDLE },
-{ 0xc, 0x21 }, { WAIT_IDLE },
-{ 0xc, 0x01 }, { WAIT_IDLE },
-
-/* Load memory area (page six) */
-{ 0x9, 0x01 }, { 0xb, 0x06 },
-
-{ 0xa, 0x00 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x02 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x04 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x06 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x08 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x0a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x0c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x0e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x10 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x12 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x14 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x16 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x18 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x1a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x1c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x1e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x20 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x22 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x24 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x26 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x28 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x2a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x2c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x2e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x30 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x32 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x34 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x36 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x38 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x3a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x3c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x3e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x42 }, { 0xd, 0x03 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x44 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x46 }, { 0xd, 0x0a }, { 0xc, 0x21 }, { WAIT_IDLE },
-{ 0xa, 0x48 }, { 0xd, 0x0d }, { 0xc, 0x23 }, { WAIT_IDLE },
-{ 0xa, 0x4a }, { 0xd, 0x23 }, { 0xc, 0x1b }, { WAIT_IDLE },
-{ 0xa, 0x4c }, { 0xd, 0x37 }, { 0xc, 0x8f }, { WAIT_IDLE },
-{ 0xa, 0x4e }, { 0xd, 0x45 }, { 0xc, 0x77 }, { WAIT_IDLE },
-{ 0xa, 0x50 }, { 0xd, 0x52 }, { 0xc, 0xe2 }, { WAIT_IDLE },
-{ 0xa, 0x52 }, { 0xd, 0x1c }, { 0xc, 0x92 }, { WAIT_IDLE },
-{ 0xa, 0x54 }, { 0xd, 0x1c }, { 0xc, 0x52 }, { WAIT_IDLE },
-{ 0xa, 0x56 }, { 0xd, 0x07 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x58 }, { 0xd, 0x2f }, { 0xc, 0xc6 }, { WAIT_IDLE },
-{ 0xa, 0x5a }, { 0xd, 0x0b }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x5c }, { 0xd, 0x30 }, { 0xc, 0x06 }, { WAIT_IDLE },
-{ 0xa, 0x5e }, { 0xd, 0x17 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x60 }, { 0xd, 0x3d }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xa, 0x62 }, { 0xd, 0x29 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x64 }, { 0xd, 0x3e }, { 0xc, 0x41 }, { WAIT_IDLE },
-{ 0xa, 0x66 }, { 0xd, 0x39 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x68 }, { 0xd, 0x4c }, { 0xc, 0x48 }, { WAIT_IDLE },
-{ 0xa, 0x6a }, { 0xd, 0x49 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x6c }, { 0xd, 0x4c }, { 0xc, 0x6c }, { WAIT_IDLE },
-{ 0xa, 0x6e }, { 0xd, 0x11 }, { 0xc, 0xd2 }, { WAIT_IDLE },
-{ 0xa, 0x70 }, { 0xd, 0x16 }, { 0xc, 0x0c }, { WAIT_IDLE },
-{ 0xa, 0x72 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x74 }, { 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xa, 0x76 }, { 0xd, 0x0f }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x78 }, { 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
-{ 0xa, 0x7a }, { 0xd, 0x13 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x7c }, { 0xd, 0x80 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x7e }, { 0xd, 0x80 }, { 0xc, 0x80 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x07 }, { 0xa, 0x00 },
-
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0xe9 }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x8c }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x8c }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x1a }, { 0xc, 0x75 }, { WAIT_IDLE },
-{ 0xd, 0x0d }, { 0xc, 0x8b }, { WAIT_IDLE },
-{ 0xd, 0x04 }, { 0xc, 0xe9 }, { WAIT_IDLE },
-{ 0xd, 0x0b }, { 0xc, 0x16 }, { WAIT_IDLE },
-{ 0xd, 0x1a }, { 0xc, 0x38 }, { WAIT_IDLE },
-{ 0xd, 0x0d }, { 0xc, 0xc8 }, { WAIT_IDLE },
-{ 0xd, 0x04 }, { 0xc, 0x6f }, { WAIT_IDLE },
-{ 0xd, 0x0b }, { 0xc, 0x91 }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x8f }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x62 }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x62 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x7b }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x97 }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0x97 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x52 }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0xf6 }, { WAIT_IDLE },
-{ 0xd, 0x06 }, { 0xc, 0xf6 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x19 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
-{ 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-
-/* Now setup the MOD area. */
-{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x08 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x09 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0a }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0b }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0c }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0d }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0e }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0f }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-
-{ 0xe, 0xb0 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb1 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb2 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb3 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb4 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb5 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb6 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb7 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb8 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb9 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xba }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xbb }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xbc }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xbd }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xbe }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xbf }, { 0xf, 0x20 }, { WAIT_IDLE },
-
-{ 0xe, 0xf0 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf1 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf2 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf3 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf4 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf5 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf6 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf7 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf8 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf9 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xfa }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xfb }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xfc }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xfd }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xfe }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xff }, { 0xf, 0x20 }, { WAIT_IDLE },
-
-{ 0xe, 0x10 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x11 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x12 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x13 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x14 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x15 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x16 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x17 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x18 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x19 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x1a }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x1b }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x1c }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x1d }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x1e }, { 0xf, 0x40 }, { WAIT_IDLE },
-{ 0xe, 0x1f }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x20 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x21 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x22 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x23 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x24 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x25 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x26 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x27 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x28 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x29 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x2a }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x2b }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x2c }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x2d }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x2e }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x2f }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x30 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x31 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x32 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x33 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x34 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x35 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x36 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x37 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x38 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x39 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x3a }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x3b }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x3c }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x3d }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x3e }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x3f }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0x40 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x41 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x42 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x43 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x44 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x45 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x46 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x47 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x48 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x49 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x4a }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x4b }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x4c }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x4d }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x4e }, { 0xf, 0x0e }, { WAIT_IDLE },
-{ 0xe, 0x4f }, { 0xf, 0x0e }, { WAIT_IDLE },
-{ 0xe, 0x50 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x51 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x52 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x53 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x54 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x55 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x56 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x57 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x58 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x59 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x5a }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x5b }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x5c }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x5d }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x5e }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x5f }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x60 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x61 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x62 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x63 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x64 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x65 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x66 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x67 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x68 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x69 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x6a }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x6b }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x6c }, { 0xf, 0x40 }, { WAIT_IDLE },
-{ 0xe, 0x6d }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x6e }, { 0xf, 0x40 }, { WAIT_IDLE },
-{ 0xe, 0x6f }, { 0xf, 0x40 }, { WAIT_IDLE },
-{ 0xe, 0x70 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x71 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x72 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x73 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x74 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x75 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x76 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x77 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x78 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x79 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x7a }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x7b }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x7c }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x7d }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x7e }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x7f }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x80 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x81 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x82 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x83 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x84 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x85 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x86 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x87 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x88 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x89 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x8a }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x8b }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x8c }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x8d }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x8e }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x8f }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x90 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x91 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x92 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x93 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x94 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x95 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x96 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x97 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x98 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x99 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x9a }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x9b }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x9c }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x9d }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x9e }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x9f }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa8 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa9 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xaa }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xab }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xac }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xad }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xae }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xaf }, { 0xf, 0x00 }, { WAIT_IDLE },
-
-{ 0xe, 0xc0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc8 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc9 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xca }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xcb }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xcc }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xcd }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xce }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xcf }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd8 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd9 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xda }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xdb }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xdc }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xdd }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xde }, { 0xf, 0x10 }, { WAIT_IDLE },
-{ 0xe, 0xdf }, { 0xf, 0x10 }, { WAIT_IDLE },
-{ 0xe, 0xe0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe8 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe9 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xea }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xeb }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xec }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xed }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xee }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xef }, { 0xf, 0x00 }, { WAIT_IDLE },
-
-{ 0xe, 0x01 }, { 0xf, 0x00 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x01 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x02 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x03 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x04 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x05 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x06 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x07 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x08 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x09 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0a }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0b }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0c }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0d }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0e }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x0f }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-
-/* mute on */
-{ 0x8, 0x02 },
-
-/* Now set the coefficients and so forth for the programs above */
-{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x4b }, { 0xd, 0x03 }, { 0xc, 0x11 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x4d }, { 0xd, 0x01 }, { 0xc, 0x32 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x01 }, { 0xa, 0x40 }, { 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xb, 0x01 }, { 0xa, 0x41 }, { 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x47 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x4a }, { 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x00 }, { 0xd, 0x01 }, { 0xc, 0x1c }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x44 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x42 }, { 0xd, 0x01 }, { 0xc, 0x1a }, { WAIT_IDLE },
-{ 0xb, 0x00 }, { 0xa, 0x43 }, { 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x01 }, { 0xa, 0x40 }, { 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xb, 0x01 }, { 0xa, 0x41 }, { 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x51 }, { 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x50 }, { 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x4f }, { 0xd, 0x03 }, { 0xc, 0x81 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x53 }, { 0xd, 0x1a }, { 0xc, 0x76 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x54 }, { 0xd, 0x0d }, { 0xc, 0x8b }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x55 }, { 0xd, 0x04 }, { 0xc, 0xe9 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x56 }, { 0xd, 0x0b }, { 0xc, 0x17 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x57 }, { 0xd, 0x1a }, { 0xc, 0x38 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x58 }, { 0xd, 0x0d }, { 0xc, 0xc9 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x59 }, { 0xd, 0x04 }, { 0xc, 0x6f }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x5a }, { 0xd, 0x0b }, { 0xc, 0x91 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x73 }, { 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x74 }, { 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x75 }, { 0xd, 0x04 }, { 0xc, 0xd9 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x76 }, { 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x77 }, { 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x78 }, { 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x79 }, { 0xd, 0x04 }, { 0xc, 0xd9 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7a }, { 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x5e }, { 0xd, 0x03 }, { 0xc, 0x68 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x5c }, { 0xd, 0x04 }, { 0xc, 0x31 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x5d }, { 0xd, 0x04 }, { 0xc, 0x31 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x62 }, { 0xd, 0x03 }, { 0xc, 0x52 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x60 }, { 0xd, 0x04 }, { 0xc, 0x76 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x61 }, { 0xd, 0x04 }, { 0xc, 0x76 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x66 }, { 0xd, 0x03 }, { 0xc, 0x2e }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x64 }, { 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x65 }, { 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x6a }, { 0xd, 0x02 }, { 0xc, 0xf6 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x68 }, { 0xd, 0x05 }, { 0xc, 0x62 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x69 }, { 0xd, 0x05 }, { 0xc, 0x62 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x46 }, { 0xd, 0x0a }, { 0xc, 0x22 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x48 }, { 0xd, 0x0d }, { 0xc, 0x24 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x6e }, { 0xd, 0x11 }, { 0xc, 0xd3 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x70 }, { 0xd, 0x15 }, { 0xc, 0xcb }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x52 }, { 0xd, 0x20 }, { 0xc, 0x93 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x54 }, { 0xd, 0x20 }, { 0xc, 0x54 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x4a }, { 0xd, 0x27 }, { 0xc, 0x1d }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x58 }, { 0xd, 0x2f }, { 0xc, 0xc8 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x5c }, { 0xd, 0x30 }, { 0xc, 0x07 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x4c }, { 0xd, 0x37 }, { 0xc, 0x90 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x60 }, { 0xd, 0x3d }, { 0xc, 0xdb }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x64 }, { 0xd, 0x3e }, { 0xc, 0x42 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x4e }, { 0xd, 0x45 }, { 0xc, 0x78 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x68 }, { 0xd, 0x4c }, { 0xc, 0x48 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x6c }, { 0xd, 0x4c }, { 0xc, 0x6c }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x50 }, { 0xd, 0x52 }, { 0xc, 0xe2 }, { WAIT_IDLE },
-{ 0xb, 0x06 }, { 0xa, 0x42 }, { 0xd, 0x02 }, { 0xc, 0xba }, { WAIT_IDLE },
-
-/* Some settings (?) */
-{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x14 },
-{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x20 },
-{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x20 },
-
-/* some more coefficients */
-{ WAIT_IDLE }, { 0xb, 0x06 }, { 0xa, 0x78 }, { 0xd, 0x00 }, { 0xc, 0x40 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x03 }, { 0xd, 0x0f }, { 0xc, 0xff },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x0b }, { 0xd, 0x0f }, { 0xc, 0xff },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x02 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x0a }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 },
-
-/* Now, for some strange reason, lets reload every page
-   and all the coefficients over again. I have *NO* idea
-   why this is done. I do know that no sound is produced
-   is this phase is omitted. */
-{ 0x9, 0x05 }, { 0xb, 0x00 }, { 0xa, 0x10 },
-
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x01 }, { 0xa, 0x10 },
-
-{ 0xd, 0x01 }, { 0xc, 0xc0 }, { WAIT_IDLE },
-{ 0xd, 0x01 }, { 0xc, 0xfa }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x1a }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-
-{ WAIT_IDLE }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x02 }, { 0xa, 0x10 },
-
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x46 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x03 }, { 0xa, 0x10 },
-
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x04 }, { 0xa, 0x10 },
-
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xc, 0x00 }, { WAIT_IDLE },
-
-/* Page six v.2 */
-{ 0x9, 0x01 }, { 0xb, 0x06 },
-
-{ 0xa, 0x10 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x12 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x14 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x16 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x18 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x1a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x1c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x1e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x20 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x22 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x24 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x26 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x28 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x2a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x2c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x2e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x30 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x32 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x34 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x36 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x38 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x3a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x3c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xa, 0x3e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-
-{ 0x9, 0x05 }, { 0xb, 0x07 }, { 0xa, 0x10 },
-
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-
-{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xb0 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb1 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb2 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb3 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb4 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb5 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb6 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xb7 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf0 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf1 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf2 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf3 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf4 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf5 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf6 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0xf7 }, { 0xf, 0x20 }, { WAIT_IDLE },
-{ 0xe, 0x10 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x11 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x12 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x13 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x14 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x15 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x16 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x17 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x20 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x21 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x22 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x23 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x24 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x25 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x26 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x27 }, { 0xf, 0xff }, { WAIT_IDLE },
-{ 0xe, 0x30 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x31 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x32 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x33 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x34 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x35 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x36 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x37 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x40 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x41 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x42 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x43 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x44 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x45 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x46 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x47 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x50 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x51 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x52 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x53 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x54 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x55 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x56 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x57 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x60 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x61 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x62 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x63 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x64 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x65 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x66 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x67 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x70 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x71 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x72 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x73 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x74 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x75 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x76 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x77 }, { 0xf, 0xc0 }, { WAIT_IDLE },
-{ 0xe, 0x80 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x81 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x82 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x83 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x84 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x85 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x86 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x87 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x90 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x91 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x92 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x93 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x94 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x95 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x96 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x97 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xa7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xc7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xd7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe0 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe1 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe2 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe3 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe4 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe5 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe6 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0xe7 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
-{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
-
-{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x45 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x48 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7b }, { 0xd, 0x04 }, { 0xc, 0xcc }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7d }, { 0xd, 0x04 }, { 0xc, 0xcc }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
-
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x00 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x28 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x51 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x7a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xa3 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xcc },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xf5 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x1e },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x47 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x70 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x99 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0xc2 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0xeb },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x14 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x3d },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x66 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x8f },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0xb8 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0xe1 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x0a },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x33 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x5c },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x85 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xae },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xd7 },
-{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xff },
-{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xff },
-
-/* mute off */
-{ 0x8, 0x00 }, { WAIT_IDLE }
-};